디스코드 봇으로 동작하는 RAT 악성코드 주의
디스코드(Discord)는 음성, 영상, 텍스트 채팅을 지원하는 소셜 플랫폼으로, 최근에는 게이머뿐만 아니라 다양한 관심사를 가진 그룹들이 모여 소통하는 공간으로 그 기능이 확장됐다. 디스코드에서는 ‘봇(Bot)’을 만들거나 추가해 역할 등을 부여할 수 있는데, 이 디스코드 봇(Discord Bot)은 사용자가 생성한 서버에서 자동으로 특정 작업을 수행하는 프로그램으로, 서버 관리, 메시지 자동 응답, 게임 진행, 음악 재생, 알림 전송 등 다양한 기능을 제공한다. 이를 통해 사용자는 손쉽게 서버를 운영할 수 있다.
이처럼 디스코드 봇은 사용자에게 순기능을 제공하지만, 얼마 전 악성 행위에 이용된 사례도 확인됐다. 이번 글에서는 디스코드 봇을 활용해 악성 RAT 기능을 수행하는 ‘파이실론(PySilon)’ 악성코드에 대해 살펴본다.
디스코드 봇은 대부분 파이썬(Python)이나 자바스크립트(JavaScript) 등의 언어로 구현되며, 디스코드 API를 통해 서버와 상호작용한다. 이를 악용한 파이실론의 전체 소스코드는 깃허브(Github)에 공개돼 있으며, 홈페이지를 비롯한 텔레그램(Telegram) 서버 등의 커뮤니티도 존재한다.
[그림 1] RAT 악성코드의 빌더(Builder) 프로그램
[그림 1]의 빌더에서는 디스코드 봇을 개발하는 데 필요한 서버 ID(Server ID)와 봇 토큰(Bot Token) 정보, 시스템에 설치될 레지스트리 경로와 이름 등을 지정해 커스텀할 수 있도록 지원한다. 이후 미리 구현돼 있는 파이썬 코드에 커스텀 정보가 입력되고, 파이인스톨러(PyInstaller)를 통해 실행 파일(.exe)로 만들어진다.
[그림 2] 커스텀한 RAT 악성코드가 빌드되는 과정
이렇게 만들어진 실행 파일이 사용자 PC에서 실행되면 [그림 3]과 같이 공격자가 제작한 서버에 새로운 채널이 생성되며, 최초 IP 주소와 기타 시스템 정보가 채팅을 통해 공격자에게 전달된다.
봇에 감염된 PC 1대당 채널 1개가 새롭게 생성되는 방식으로, 공격자는 감염 대상 PC를 개별적으로 제어할 수 있다.
[그림 3] 최초 설치된 봇이 공격자에게 전송한 시스템 정보
[그림 4] 지속성 유지
빌드가 완료된 RAT 악성코드가 시스템에서 실행될 경우, 악성코드는 [그림 4]와 같이 지속성 유지를 위해 사용자 폴더에 자가 복제로 생성되고, 레지스트리를 이용해 RUN키에 자신을 등록한다. 이를 통해 해당 악성코드는 PC가 시작될 때마다 계속 실행되며 시스템에 상주한다. 자가 복제되는 폴더 이름도 공격자가 커스텀해 생성할 수 있다.
또한, VM에서 기능 구현을 위해 존재하는 파일이나 프로세스의 이름을 이용한 Anti-VM 로직이 존재한다. 이는 악성코드가 제 기능을 수행하기 전에 가상환경을 인식하고, 가상환경에서는 동작하지 않도록 설정돼 있다.
[그림 5] 입력 가능한 명령
이후 공격자는 공격에 성공한 후 생성된 채널에 [그림 6]과 같이 나열된 명령을 채팅으로 입력해 추가 악성 행위를 수행할 수 있다.
해당 악성코드의 주요 행위와 기능을 공격자 시점에서 바라본 내용으로 정리하면 다음과 같다.
1. 정보 수집 기능
[그림 6] 정보 수집
RAT 악성코드가 설치된 시스템에서 Grab 명령을 통해 정보를 수집할 수 있다.
해당 시스템에서 수집된 결제정보를 비롯한 사용자 개인정보와 설치된 브라우저 경로에서의 방문 기록, 쿠키 정보로부터 각종 비밀번호가 추출되며, 이는 공격자에게 전송된다.
수집 가능한 정보: 디스코드 토큰(Discord Token), 니트로(Nitro), MFA, 이메일, 전화번호, 비밀번호, 쿠키 정보, 웹페이지 방문 기록 등
2. 화면 녹화 및 녹음
[그림 7] 공격자에게 전송되는 녹화 및 녹음 파일
pyautogui, numpy, imageio, sounddevice 등의 파이썬 모듈을 활용해 감염된 PC에 대해 녹화 및 사운드 녹음을 지원한다.
3. 키로깅(Keylogging)
[그림 8] 키로깅
사용자가 ‘엔터(Enter)’ 키를 누르는 시점에 입력된 내용을 공격자 서버에 전송한다.
4. 폴더 암호화
[그림 9] 암호화/복호화 명령
[그림 10] 사용자 폴더에 생성되는 키(Key) 파일
감염된 PC 내부의 폴더에 존재하는 파일을 암호화할 수 있다. 이때 퍼넷(Fernet) 알고리즘이 사용되며, 복호화 시 필요한 키 파일이 사용자 폴더에 저장되는 것으로 확인된다.
암호화된 파일은 .pysilon 확장자를 가지며, 랜섬노트 등의 파일은 따로 생성되지 않는다.
이 밖에, 호스트(Host) 파일 조작을 통한 웹 페이지의 블랙(Black)/화이트(White) 리스트 생성 및 관리, 파일 업로드 및 다운로드, cmd 명령 실행, 프로세스 시작/종료, 윈도우의 네이티브(Native) 함수를 이용한 BSOD(블루스크린) 유발 등의 기능도 있다.
결론
파이실론 외에도 디스코드를 이용해 악성 RAT 기능을 구현하는 오픈소스 프로젝트가 계속 생성되고 있다. 기본적으로 소스코드가 공개되기 때문에 공격자가 자신의 봇에 쉽게 탑재하거나 유용한 기능을 가진 봇으로 쉽게 위장할 수 있다. 또한, 정상적인 봇 기능을 위해 구현된 디스코드 공식 서버를 활용해 데이터가 전송되기 때문에 사용자는 해당 악성코드가 설치된 것을 인지하기 어렵다. 따라서 신뢰할 수 없는 출처의 봇이나 프로그램 설치 시 각별한 주의가 필요하다.
출처 : AhnLab