Discord Bot으로 동작하는 RAT 악성코드

Discord Bot으로 동작하는 RAT 악성코드

Discord는 사용자들의 서버를 만들어 커뮤니티를 형성하고 실시간 소통할 수 있으며 음성, 영상, 텍스트 채팅을 지원하는 소셜 플랫폼이다. 주로 게이머들 사이에서 인기를 얻었지만, 현재는 다양한 관심사를 가진 그룹들이 모여 소통하는 공간으로 확장되었다.

Discord Bot은 사용자들이 생성한 서버에서 자동으로 특정 작업을 수행하는 프로그램으로, 서버 관리, 메시지 자동 응답, 게임 진행, 음악 재생, 알림 전송 등 다양한 기능을 제공하여 서버 운영을 쉽게 만들어 준다. 이러한 Bot은 주로 Python, JavaScript 등의 언어로 구현되며, Discord API를 통해 서버와 상호작용한다.

이번 포스팅에서는 Discord Bot으로 RAT 악성코드를 구현한 케이스(PySilon)에 대해 분석한다. 해당 RAT 악성코드의 전체 소스코드는 Github에 공개되어 있으며 홈페이지를 비롯한 Telegram 서버 등의 커뮤니티가 존재한다.

 

[그림 1] RAT 악성코드의 Builder 프로그램

위 Builder에서는 Discord Bot을 개발하기 위해 필요한 Server ID와 Bot Token 정보, 시스템에 설치될 레지스트리 경로와 이름 등을 지정하여 커스텀할 수 있도록 지원하고 있다. 이후 미리 구현되어 있는 Python 코드에 커스텀 정보가 입력되고, PyInstaller를 통해 실행파일(.exe)로 만들어진다.

 

[그림 2] 커스텀한 RAT 악성코드가 빌드되는 과정

이렇게 만들어진 실행파일이 사용자의 PC에서 실행될 경우, 아래 이미지와 같이 공격자가 제작한 서버에 새 채널이 생성되며 최초에 IP 주소와 기타 시스템 정보가 채팅을 통해 공격자에게 전달된다.

Bot에 감염된 PC 1대당 채널 1개가 새롭게 생성되는 방식으로, 공격자가 감염된 PC를 개별적으로 컨트롤 할 수 있다.

 

[그림 3] 최초 설치된 Bot이 공격자에게 전송한 시스템 정보

[그림 4] 지속성 유지

빌드가 완료된 RAT 악성코드가 시스템에서 실행될 경우, 악성코드는 [그림 4]와 같이 지속성 유지를 위해 사용자 폴더에 자가복제하여 생성되고 레지스트리를 이용하여 RUN키에 자신을 등록한다. 이렇게 되면 PC가 시작될 때마다 해당 악성코드가 계속해서 실행되어 시스템에 상주한다. 자가복제되는 폴더의 이름 또한 공격자가 커스텀하여 생성할 수 있다.

또한, VM에서 기능 구현을 위해 존재하는 파일이나 프로세스의 이름을 이용한 Anti-VM 로직이 존재한다. 악성코드가 제 기능을 수행하기 전에 가상환경을 인식하여 가상환경에서는 동작하지 않도록 설정되어있다.

 

[그림 5] 입력 가능한 명령

이후 공격자는 공격에 성공하여 생성된 채널에 아래 나열된 명령을 채팅으로 입력하여 추가 악성행위를 수행할 수 있다. 

아래는 해당 악성코드의 주요 행위를 공격자 시점에서 바라본 내용이다. 

 

  • 정보 수집 기능

[그림 6] 정보 수집

Grab 명령을 이용하여 RAT 악성코드가 설치되 시스템에서 정보를 수집할 수 있다.

결제정보를 포함한사용자의 개인정보와 설치되어있는 브라우저의 경로에서 방문기록, 쿠키 정보 등을 수집하며 각종 비밀번호를 추출하여 공격자에게 전송한다.

수집 가능한 정보 : Discord 토큰, Nitro, MFA, 이메일, 전화번호, 비밀번호, 쿠키 정보, 웹페이지 방문 기록 등

 

  • 화면 녹화 및 녹음

[그림 7] 공격자에게 전송되는 녹화 및 녹음 파일

pyautogui, numpy, imageio, sounddevice 등의 파이썬 모듈을 활용하여 감염된 PC로부터 녹화 및 사운드 녹음을 지원한다. 

 

  • 키로깅

[그림 8] 키로깅

사용자가 “Enter”를 입력하는 시점에 입력된 내용을 공격자 서버에 전송한다.

 

  • 폴더 암호화

[그림 9] 암호화/복호화 명령

[그림 10] 사용자 폴더에 생성되는 Key 파일

감염된 PC 내 폴더에 존재하는 파일을 암호화할 수 있다. Fernet 알고리즘이 활용되는 것으로 확인되며, 복호화 시 필요한 Key 파일이 사용자 폴더에 저장된다.

암호화된 파일은 .pysilon 확장자를 가지며, 랜섬노트 등의 파일은 따로 생성되지 않는다.

위에서 언급한 내용 외에도 Host 파일을 조작하여 웹페이지의 Black/White 리스트를 만들어 관리할 수 있으며 파일 업/다운로드, cmd 명령 실행, 프로세스 시작/종료, 심지어는 Windows의 Native 함수를 이용하여 BSOD(블루스크린)를 유발하는 기능도 존재한다.

 

PySilon과 같이 Discord를 이용하여 악성 RAT 기능을 구현한 오픈소스 프로젝트가 계속 생성되고 있다. 소스코드가 공개되므로 공격자가 자신의 Bot에 쉽게 탑재할 수 있으며 유용한 기능을 가진 Bot으로의 위장이 용이하다. 또한, 정상적인 Bot 기능을 위해 구현된 Discord 공식 서버를 활용하여 데이터가 전송되기 때문에 사용자는 해당 악성코드가 설치되었음을 인지하기 매우 어렵다. 따라서, 신뢰할 수 없는 출처의 Bot이나 프로그램을 설치할 때에 각별한 주의가 필요하다.

AhnLab TIP를 구독하시면 연관 IOC 및 상세 분석 정보를 추가적으로 확인하실 수 있습니다. 자세한 내용은 아래 배너를 클릭하여 확인해보세요.