본문 바로가기
분석 정보/악성코드 분석 정보

Yokai 백도어를 유포하는 SnakeDisk 웜

by TACHYON & ISARC 2025. 12. 24.

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 사이드로딩 기법을 사용한다.

 

[ 그림  1] SDTBarcodeDemo.exe  에 의해 로딩되는  SDTBarcode.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는 아래와 같은 의미를 가진다.

 

[표 1] SnakeDisk 설정 파일

 

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

 

[ 그림  2] ipinfo.io  로부터 전달받은 네트워크 정보

 

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

 

[ 그림  3]  장치 변경 메시지를 탐지하기 위한 윈도우 생성 코드

 

전달받은 윈도우 메시지의 타입이 장치 연결(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 파일을 로딩한다.

 

[ 그림  4]  드롭된  EXE  에 의해 로딩되는  libcef.dll

 

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

 

[ 그림  5] vm.ini 파일

 

 

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

 

상기 악성코드는 잉카인터넷 안티바이러스 제품 TACHYON Internet Security 6.0에서 진단 및 치료가 가능하다.

 

[ 그림  6] TACHYON Internet Security 6.0  진단 및 치료 화면