
SnakeDisk 는 Mustang Panda 가 사용하는 USB 웜으로써 실행 시 전달되는 커맨드 인자에 따라 USB 감염 동작을 수행하거나 Yokai 백도어를 드롭해 실행할 수 있다. USB 감염 시 지리적 조건, 암호화된 설정 파일이 필요하며 감염 조건이 만족되면 시스템에 연결되는 USB 의 본래 파일들을 숨기고 최상위 경로에 SnakeDisk 와 실행 파일만 남겨 사용자의 실행을 유도한
SnakeDisk 는 바코드를 읽는 프로그램 Barcode Reader SDK 의 실행 파일 중 하나인 “SDTBarcode.dll” 파일로 위장하고 있다. Barcode Reader SDK 의 구성 파일 중 하나인 “SDTBarcodeDemo.exe” 는 실행 시 “SDTBarcode.dll” 파일을 로딩하는 의존성을 가지며 공격자는 정상 “SDTBarcode.dll” 파일을 SnakeDisk 로 바꿔치기해 유포함으로써 정상 파일인 “SDTBarcodeDemo.exe” 가 실행될 시 악성 파일을 로딩하는 DLL 사이드로딩 기법을 사용한다.

SnakeDisk 에 커맨드 인자로 “-Embedding”이 전달돼 실행되면 시스템과 연결된 USB를 탐색하고 감염시킨다.
감염 동작을 실행하려면 다음과 같은 조건을 만족해야 한다.
- 실행 파일 경로에 암호화된 SnakeDisk 설정 파일 존재.
- 감염된 시스템이 ipinfo.io 를 통해 얻은 국가 코드가 태국.
- 설정 파일의 “mutx” 값이 지정한 mutex가 존재하지 않음.
감염 동작에 앞서 실행 파일 경로에서 파일 크기가 0x14A 이상 0x14000 이하이며 아래와 같은 구조를 가지는 설정 파일을 탐색한다.
[CRC 4 bytes] [Payload Size 4 bytes] [Padding 2 bytes] [XOR Key 320 bytes] [Payload N bytes]
조건에 부합하는 파일을 발견하면 Payload를 반으로 나누고 앞의 절반은 정방향으로, 뒤의 절반은 역방향으로 XOR 연산하여 복호화한다. 복호화된 설정 데이터는 “key = value”와 같은 형식의 데이터를 연속적으로 가지며 각 설정 Key는 아래와 같은 의미를 가진다.

설정 파일 로딩 후 감염된 시스템은 “http://ipinfo.io/json” 에 접속해 현재 시스템의 네트워크 정보를 JSON 형식으로 수집한다. 이 데이터의 country 는 현재 시스템의 지리적인 정보와 관련된 국가 코드를 가진다. SnakeDisk 는 해당 값이 태국(TH 또는 THA)을 가리키는 경우에만 악성 행위를 실행한다.

국가 코드 검증에 성공하면 “Global\<mutx>” 으로 mutex 생성을 시도한다. mutex 가 이미 존재하면 SnakeDisk 프로세스가 실행 중이라 판단하여 악성 행위 없이 종료된다. 앞서 설명한 조건을 모두 만족하면 USB 감염을 시작한다. USB의 연결/연결 해제를 감지하기 위해 보이지 않는 윈도우를 생성해 장치 변경 시 발생하는 메시지(WM_DEVICECHANGE)를 전달받고 처리한다.

전달받은 윈도우 메시지의 타입이 장치 연결(DBT_DEVICEARRIVAL)이면 해당 장치에 감염을 시도하며 장치가 연결 해제(DBT_DEVICEREMOVECOMPLETE)되면 “-hope” 인자가 전달돼 SnakeDisk가 실행되는 것과 동일하게 시스템에 Payload를 드롭 및 실행한다. 감염 대상 경로가 결정되면 해당 경로에서 .dat와 .cd 확장자 파일을 찾는다. 발견된 파일이 앞서 설명한 SnakeDisk의 설정 파일과 동일한 구조를 가지며 version 값이 감염된 시스템의 설정 version 보다 더 높을 경우 이미 감염된 것으로 간주해 다시 감염하지 않는다. 또한 감염 조건을 만족하면 설정 파일의 정보에 따라 숨겨진 시스템 속성 폴더를 생성하고 시스템 내 악성 파일들을 “/<urd>/<usd>” 폴더로 복사한다. 감염되기 전 USB에 있던 파일들은 “/<urd>/<uud>” 폴더로 복사하고 이 중의 “USB-WIN11.exe” 을 제외한 모든 파일은 시스템 속성을 가지며 보이지 않게 된다. 사용자가 유일하게 보이는 “USB-WIN11.exe” 파일을 실행하면 숨겨진 DLL 파일이 로딩되며 악성 행위가 실행될 수 있다.
SnakeDisk 실행 시 “-hope” 문자열이 커맨드 인자로 전달되면 파일 내의 Payload를 드롭 및 실행한다. Payload 드롭에 앞서 실행 경로에서 “vm.ini” 파일을 찾으며 해당 파일이 존재한다면 이미 Payload가 실행 중인 것으로 간주하여 악성 행위 없이 종료된다. 현재 실행 경로에 “vm.ini” 파일이 존재하지 않으면 ‘c:\users\public\’ 경로에 바이너리 데이터 srv0, srv1 및 srv2를 드롭한 후 아래 cmd 명령어를 실행하여 Yokai 백도어라는 이름으로 알려진”libcef.dll” 파일을 생성한다.
- libcef.dll 드롭 명령어 : cmd.exe /c cd "c:\users\public\" & copy /b "srv0" +"srv1" +"srv2" c:\users\public\libcef.dll
동일한 방식으로 바이너리 파일 loga, logb 및 logc 를 드롭한 후 cmd 명령어로 영문자와 숫자가 무작위로 조합된 EXE 파일을 생성한다.
- exe 파일 드롭 명령어 : cmd.exe /c cd "c:\users\public\" & copy /b "loga" +"logb" +"logc" c:\users\public\<random>.exe
드롭된 EXE 파일은 Autodesk에서 개발한 정상 파일 “acwebbrowser.exe” 와 Hash 값이 동일하며, 실행 시 “libcef.dll” 파일을 로딩하는 의존성을 가진다. SnakeDisk 는 두 Payload 를 드롭한 후 “-project-mod” 인자와 함께 EXE 파일을 실행해 Yokai DLL 파일을 로딩한다.

Payload 실행 후에는 중복 실행을 방지하기 위해 마커 파일인 “vm.ini” 를 생성한다. “vm.ini” 파일에는 실행 파일의 경로가 저장된다.

SnakeDisk는 정상 파일로 위장하고 실행 시 전달되는 인자에 따라서 USB 감염 동작을 수행하거나 Yokai 백도어를 드롭해 실행함으로써 사용자가 감염 여부를 식별하기 어려워 주의가 필요하다. 따라서 운영체제와 보안 프로그램을 최신 버전으로 유지하며 의심스러운 파일을 실행하기 전에 보안 프로그램 검사를 진행할 것을 권고한다.
상기 악성코드는 잉카인터넷 안티바이러스 제품 TACHYON Internet Security 6.0에서 진단 및 치료가 가능하다.


'분석 정보 > 악성코드 분석 정보' 카테고리의 다른 글
| USB를 감지해 전파하는 HIUPAN 웜 (0) | 2025.12.24 |
|---|---|
| 태국을 대상으로 유포되는 Yokai 백도어 (0) | 2025.12.24 |
| DLL 사이드 로딩으로 실행하는 ToneShell 백도어 (0) | 2025.12.24 |
| 중국 해커그룹 Mustang Panda, Pubload 백도어 유포 (0) | 2025.12.24 |
| 오픈 소스 코드를 이용하는 Phantom Stealer (0) | 2025.12.24 |