Threat Tracking: Analysis of puNK-003’s Lilith RAT ported to AutoIt Script
Author: Jiho Kim | S2W TALON
Last Modified : Aug 22, 2024
Executive Summary
2024년 4월 24일, S2W의 위협 연구 및 인텔리전스 센터 TALON은 탈세 제보와 관련된 소명 자료 목록으로 위장한 LNK 악성코드를 발견하여 분석을 진행하였다. 발견된 LNK 파일은 실행 시 파일 내부에 포함된 Decoy 문서를 드랍 및 출력하고, 하드코딩된 공격자 서버로부터 추가 파일을 다운로드 받아 실행한다. 다운로드된 파일은 악성 AutoIt 스크립트 파일과 이를 실행하기 위한 정상 AutoIt3 실행 파일로, 최종적으로는 AutoIt 스크립트로 재구현된 Lilith RAT 악성코드가 실행된다.
이번에 발견된 LNK 악성코드는 실행 인자에 포함된 PowerShell 명령어의 구성과 추가로 다운로드된 파일이 모두 AutoIt 스크립트로 재구현된 악성코드라는 점에서 북한 배후의 공격 그룹인 KONNI 그룹의 특징을 보인다. 그러나 이번에 발견된 악성코드와 KONNI 그룹의 LNK 악성코드는 실행 목적에서 차이점이 존재하며, 전자는 Downloader의 역할을, 후자는 Dropper 기능을 수행한다. 또한, 이번 공격 캠페인에서는 KONNI 그룹이 주로 사용하는 VBS 및 BAT 스크립트 유형의 악성코드가 사용되지 않았다는 점 역시 가장 큰 차이로 나타난다. 이러한 차이점들을 바탕으로 S2W의 위협 연구 및 인텔리전스 센터인 TALON은 두 공격 그룹을 별도로 구분하였다.
TALON은 식별되지 않은 위협 그룹에 대해서 별도 관리하고 있고, 그 중 북한 배후의 공격 그룹은 puNK라는 이름으로 관리 및 추적하고 있다. TALON에서 추적하고 있는 puNK 그룹의 목록은 표 1과 같다.
해당 악성코드를 유포한 배후는 puNK-003로 명명하였으며, 추가로 이들이 사용하는 Downloader 역할의 LNK 악성코드는 CURKON으로 명명하였다. 이어질 내용에서는 최근 발견된 puNK-003 그룹의 공격 흐름 및 악성코드 기능과 KONNI 그룹과의 연관성을 설명한다.
Key Takeaways
- (Threat Hunting) 2024년 4월 24일, S2W의 위협 연구 및 인텔리전스 센터 TALON은 북한 배후 APT 그룹인 puNK-003 그룹의 악성코드로 추정되는 샘플을 VirusTotal에서 헌팅하여 분석을 진행함
- (Malware) 헌팅된 악성코드는 공격자 서버로부터 AutoIt 스크립트 및 AutoIt 실행파일을 다운로드 받아 실행하는 Downloader 역할의 LNK 파일로, Talon은 해당 악성코드를 CURKON으로 명명함.
— LINKON: KONNI 그룹이 사용하는 Dropper 유형의 LNK 악성코드
— CURKON: puNK-003 그룹이 사용하는 Downloader 유형의 LNK 악성코드 - (Key Features) CURKON에 의해 다운로드된 파일은 AutoIt 스크립트로 포팅된 Lilith RAT 악성코드로, 피해 시스템에서 임의의 명령을 실행할 수 있도록 특정 포트에 리버스 쉘을 연결함.
— Lilith RAT은 C++로 구현된 오픈 소스 원격 제어 악성코드로 확인됨.
— 기존 C/C++ 코드를 어떤 방식으로 AutoIt 스크립트로 변환하는지는 밝혀진 바 없으며, 별도의 도구를 사용하였다거나 AI 등을 활용하여 수동으로 포팅했을 것으로 추정됨. - (Attribution) puNK-003 그룹의 CURKON 실행 인자에 사용된 난독화 방식과 AutoIt으로 재구현한 악성코드가 사용되었다는 점이 KONNI 그룹과 유사하다는 점을 근거로 들어 해당 악성코드를 유포한 배후 그룹이 KONNI 그룹과 관련 있을 것으로 평가함.
Detailed Analysis
CURKON 악성코드는 최종적으로 AutoIt 스크립트로 재구성된 Lilith RAT 악성코드를 공격자 서버에서 다운로드 받아 실행하며, Lilith RAT은 C&C 서버로부터 명령을 받아 감염된 시스템의 터미널에서 실행 후 전송하는 리버스 쉘 기능을 수행한다. 그림 1은 CURKON 악성코드의 실행 흐름을 나타낸다.
- LNK(CURKON) 파일 실행 시 인자로 설정된 Powershell 명령어 실행
- CURKON 내부에 포함된 정상 Decoy 문서 드랍 및 실행
- C 드라이브 하위에 숨김 설정이 활성화 된 폴더를 생성하며, 폴더명은 하드코딩된 문자열로 설정
- 정상 curl.exe 파일을 앞서 생성한 폴더에 복사
- 공격자 서버로부터 추가 파일 다운로드 및 실행
- 다운로드 받은 AutoIt3.exe로 AutoIt 스크립트 기반의 Lilith RAT 실행
- 지속성 유지를 위해 schtasks.exe를 통해 Lilith RAT을 스케줄러에 등록
1. Malicious LNK: CURKON
탈세 제보와 관련한 소명 자료 목록으로 위장하고 있는 CURKON에는 표 2와 같이 추가 명령이 실행 인자에 포함되어 있다. 실행 인자에는 분석을 방해하기 위한 더미 문자열이 포함되어 있고, 일부 문자열에 난독화가 적용되어 있는 점을 확인할 수 있다.
cmd.exe를 통해 실행되는 Powershell 명령어는 표 3과 같다. 해당 명령어는 CURKON 파일 내부에 존재하는 Decoy 문서를 추출하여 드랍 및 실행하고, 하드코딩된 공격자 서버로부터 추가 파일을 다운로드하여 실행한다. 이때 Decoy 문서는 스크립트 내 하드코딩 된 1바이트 Key 값(0xD8)을 사용해 XOR 연산된 후 현재 실행 경로에 드랍된다.
이후 현재 실행 경로 또는 %TEMP% 경로에서 크기가 140,094 바이트인 LNK 파일을 찾는 방식으로 자신을 검색하고, 자가 삭제를 수행한다.
마지막으로 C 드라이브 하위에 하드코딩된 문자열 “GSlLzFnTov”를 사용해 숨김 설정이 활성화된 폴더를 생성한다. 그리고 앞서 생성한 폴더에 %System32% 경로 내 존재하는 curl.exe 파일을 GSlLzFnTov.exe 이름으로 복사한다. 이때 curl.exe는 하드코딩된 공격자 서버로부터 추가 파일을 다운로드 할 때 사용되며, 이를 통해 최종적으로 AutoIt3.exe와 QwbpjvdmTA.au3 스크립트가 다운로드 된다.
특히 curl 명령어가 Windows 10 버전 1803 (Updated. Apr 2018) 이후부터 기본으로 설치되도록 변경되었다는 점에서, 공격자가 이전 버전의 Windows 환경을 고려하지 않고 악성코드를 제작했을 가능성이 존재할 것으로 보인다. 다운로드된 AutoIt 스크립트는 schtasks 명령어를 통해 스케줄러에 등록되어 1분마다 실행되도록 설정된다.
2. AutoIt Script: Lilith RAT
유포지에서 다운로드된 두 파일은 각각 정상 AutoIt3.exe 실행 파일과 AutoIt 스크립트로 재구현된 Lilith RAT 악성코드이다. Lilith RAT는 원래 C++ 기반의 오픈 소스 명령 제어 악성코드지만, 이번 캠페인에서는 AutoIt 스크립트로 재구현되어 사용되었다.
2.1. Check Mutex
AutoIt3.exe 실행 파일을 통해 실행된 Lilith RAT는 아래와 같은 Mutex가 존재하는지 확인하는데, 존재하면 중복 실행 방지를 위해 프로세스를 종료하고 존재하지 않으면 동일한 문자열로 Mutex를 새롭게 생성한다.
- Mutex Name: Global\RT3AN7C9QS-7UYE-9K6G-A8F1-HY8IT3CNMEQP
2.2. Check Anti-Virus Product
이후 현재 실행 중인 프로세스 목록에 Avast 백신과 관련된 프로세스인 AvastUI.exe와 AvastSvc.exe의 포함 여부에 따라 지속성 유지를 위한 행위를 다르게 수행한다.
Avast 백신이 실행 중인 경우, AutoIt 스크립트를 10자리 랜덤 문자열로 된 파일명으로 복사하고, 앞뒤에 각각 1,000 바이트의 랜덤 문자열을 추가한다. 이후 %Public%\Documents 경로에 10자리 랜덤 문자열의 파일명으로 BAT 파일을 생성한다. BAT 파일에는 AutoIt 스크립트의 지속성을 유지하기 위한 코드가 포함되며, CURKON 실행 중 Powershell 명령어로 기존 스케줄러를 삭제하고 새로운 스케줄러를 생성하여 AutoIt 스크립트를 5~10분 간격으로 주기적으로 실행하도록 설정한다.
Avast 백신과 관련된 프로세스가 모두 실행 중이지 않은 경우에는 다른 방식으로 지속성 유지를 위한 작업을 수행한다. 먼저, cmd.exe를 통해 CURON 실행 과정 중 등록된 스케줄러를 삭제한다. 그리고 현재 실행 환경의 시작 프로그램 폴더에 Start_Web.lnk 파일을 생성하여 AutoIt 스크립트 파일이 자동 실행 되도록 설정한다.
2.3. Execute Command
이후 Lilith RAT 악성코드 내 하드코딩된 C&C 서버의 IP 주소 및 포트 번호를 통해 Socket 통신을 수행하며, C&C 서버로부터 임의의 명령어를 수신받아 실행한다.
- 공격자 서버 IP: 93.183.93[.]185 (RU)
- 포트 번호: 57860
공격자가 재구현한 Lilith RAT과 공개된 소스코드를 비교했을 때, Client 측 기능 중에서는 리버스 쉘 기능을 수행하는 remoteControl 명령어만이 일부 구현된 점을 확인할 수 있다.
그 뿐만 아니라, 공개된 소스코드에는 remoteControl 기능은 실행 인자에 입력된 실행 파일을 모두 실행하도록 구현되어 있었지만, 공격자가 사용한 AutoIt 스크립트 버전의 Lilith RAT에서는 표 7과 같은 3가지 실행 인자만 처리하도록 구현된 점도 차이로 나타났다.
remoteControl 기능은 피해 시스템에서 cmd 또는 powershell 프로세스를 통해 임의의 명령어를 실행하기 위한 기능으로, 명령어와 함께 전달받은 실행 인자의 종류에 따라 생성할 프로세스를 설정한다. AutoIt3.exe 하위에 생성된 cmd 또는 powershell 프로세스는 Pipe 통신을 통해 공격자가 전달한 임의의 명령어를 실행한다.
Attribution
앞서 소개한 것처럼 S2W는 해당 공격 캠페인의 배후 그룹을 puNK-003 그룹으로 추적하고 있으며, puNK-003 그룹은 KONNI 그룹과 일부 연관성이 확인되었다. 이어질 내용에서는 puNK-003 그룹과 KONNI 그룹 간 유사성을 비교하여 설명하였다.
1) About KONNI’s LNK Malware: LINKON
KONNI 그룹은 주로 LNK 타입의 Dropper 악성코드를 통해 추가 파일을 드랍하며, S2W에서는 이러한 LNK 악성코드를 LINKON으로 명명하여 구분하고 있다. 이때, 드랍된 파일 중에는 다수의 VBS 및 BAT 스크립트가 포함되어 있는데, 각 스크립트는 Loader, Stealer, Downloader 등의 역할을 수행한다. KONNI 그룹의 스크립트 기반 악성코드는 Operation Moneyholic 캠페인부터 지속적으로 사용되어 왔으며, 최근에는 이와 같은 유형의 스크립트 악성코드로부터 AutoIt 스크립트로 재구현된 Amadey 악성코드가 다운로드 된 정황이 발견되기도 하였다.
이후 AhnLab은 2023년 12월 1일에 AutoIt을 사용하는 Kimsuky 그룹에 대한 보고서를 공개하였다. S2W는 보고서에서 언급된 LINKON 악성코드로부터 드랍된 파일이 다수의 VBS 및 BAT 스크립트인 점, 그리고 기존 KONNI 그룹의 스크립트 악성코드와 동일하게 구현된 정보탈취 및 추가 파일 다운로드 기능 등을 근거로 해당 유형의 공격 배후를 KONNI 그룹으로 추정하고 있다.
2) Similarity between LINKON and CURKON
LINKON 악성코드와 달리, CURKON 악성코드는 실행 과정에서 다수의 VBS 및 BAT 스크립트가 사용되지 않고, 추가 파일 다운로드 및 실행 기능만 수행한다. 그러나, 두 악성코드의 LNK 실행 인자에 적용된 난독화 방식과, C&C 서버로부터 추가로 다운로드 된 파일이 AutoIt 스크립트로 재구현된 악성코드라는 점이 동일하게 나타난다. 뿐만 아니라, AutoIt 스크립트 중 일부 코드가 동일하게 사용된 부분이 확인되어 두 그룹 간 연관성이 존재할 것으로 의심된다. 아래 내용에서는 puNK-003 그룹의 CURKON 악성코드와 KONNI 그룹의 LINKON 악성코드를 비교하여 설명한다.
CURKON 악성코드에서 발견된 실행 인자는 그림 3과 같이 의미 없는 더미 문자열이 가장 앞에 위치하고 있으며, ‘||’ 연산자 및 “goto” 명령어를 통해 powershell.exe 프로세스를 실행한다.
이러한 형식의 LNK 실행 인자는 표 8에서 나타난 것과 같이, KONNI 그룹이 이전부터 사용하던 방식으로 확인된다. 다만, 2023년에 발견된 샘플의 경우, Powershell 명령어에 Hex String이 하드코딩 되어 있고 이를 ASCII 문자로 변환하는 과정이 존재하는 반면, 2024년에 발견된 샘플의 경우에는 Powershell 명령어를 통해 curl.exe 프로세스를 호출하고, 하드코딩 된 Download URL로부터 바로 악성 AutoIt 스크립트를 다운로드 받아 실행한다는 점에서 차이를 보였다.
그 외에, 2024년 6월 2일에 발견된 CURKON 악성코드에서는 그림 4와 같은 Powershell 명령어가 사용되기도 하였는데, 분석을 방해하기 위해 추가된 더미 문자열은 “<# … #>”에 포함되어 실행 시 주석으로 처리되도록 구성되어 있었다. 흥미로운 점은 2024년 5월 13일 이후로 발견되고 있는 LINKON 악성코드에서도 동일한 방식의 난독화가 적용되기 시작하였다는 점이다.
이와 유사하게, 두 공격 그룹은 추가 파일을 다운로드 하는 C&C 서버에서도 일부 연관성이 발견되었다. 기존의 KONNI 그룹은 C&C 서버로 VPS 또는 호스팅 서버를 사용하였으나, 2024년 5월 13일에 발견된 악성코드부터는 정상 WordPress 홈페이지를 탈취하여 악용하기 시작하였다.
2024년 4월에 처음으로 발견된 puNK-003 그룹의 CURKON 악성코드 역시 C&C 서버로 정상 WordPress 홈페이지를 탈취하여 악용하며, 두 그룹이 사용하는 URL의 쿼리 스트링 내 필드 문자열이 동일하게 나타나는 점을 확인할 수 있다.
Malicious AutoIt Script File
puNK-003과 KONNI 그룹은 공격자 서버로부터 AutoIt 스크립트와 정상 AutoIt3 실행 파일을 다운로드 받는다. 이때 두 그룹 모두 자체 제작한 악성코드가 아닌, 기존에 존재하는 악성코드를 AutoIt 스크립트로 재구현하여 사용했다는 점에서 공통점을 보인다. 추가로 puNK-003 그룹과 KONNI 그룹이 사용한 정상 AutoIt3.exe 실행 파일이 동일한 버전으로 확인되기도 하였다.
- File name: AutoIt3.exe
- Version: 3.3.14.5
- MD5: c56b5f0201a3b3de53e561fe76912bfd
KONNI 그룹은 AhnLab에서 공개한 바와 같이 DLL 유형이었던 Amadey와 RftRAT 악성코드를 AutoIt 스크립트로 재구현하여 사용하였으며, puNK-003 그룹은 오픈소스 기반의 C# 악성코드인 Lilith RAT 악성코드를 AutoIt 스크립트로 재구현하여 사용하였다. 특히 KONNI 그룹의 Amadey 악성코드와 puNK-003 그룹의 Lilith RAT 악성코드는 중복 실행 여부를 확인하기 위해 구현된 ISMULTIPLE() 함수가 완전히 동일하게 구현되어 있는 점이 발견되기도 하였다.
이처럼 puNK-003 그룹은 알려진 북한 배후의 공격 그룹인 KONNI와 상당한 유사점을 보이고 있다. 특히 AutoIt 스크립트로 포팅된 악성코드에 동일하게 구현되어 있는 함수 및 변수명은 두 그룹이 같은 변환 도구를 사용하였거나, AI 서비스 등을 활용하여 수동으로 포팅하였을 가능성이 존재할 것으로 보인다.
Conclusion
- 2024년 4월 24일, S2W의 위협 연구 및 인텔리전스 센터 TALON은 북한 배후 APT 그룹인 puNK-003 그룹의 악성코드로 추정되는 Downloader 유형의 샘플을 VirusTotal에서 헌팅하여 분석을 진행하였으며, 해당 악성코드를 CURKON으로 명명함.
- CURKON에 의해 다운로드 된 파일은 AutoIt 스크립트로 포팅된 Lilith RAT 악성코드로, 피해 시스템에서 임의의 명령을 실행할 수 있도록 특정 포트에 리버스 쉘을 연결함.
- puNK-003 그룹의 CURKON 실행 인자에 사용된 난독화 방식과 AutoIt으로 재구현한 악성코드가 사용되었다는 점이 KONNI 그룹과 유사하다는 점을 근거로 들어 해당 악성코드를 유포한 배후 그룹이 KONNI 그룹과 관련 있을 것으로 평가함.
- 이러한 스크립트 악성코드를 실행하기 위해 연관된 파일명 및 정상 문서 아이콘으로 위장한 LNK 파일을 사용하기에, 외부에서 다운로드 받은 파일 실행 시 파일의 종류를 함께 확인하는 습관이 필요함.
MITRE ATT&CK
Execution
- (T1204.002) Malicious File
- (T1059.001) PowerShell
- (T1059.003) Windows Command Shell
Defense Evasion
- (T1053.005) Scheduled Task
- (T1547.001) Registry Run Keys / Startup Folder
Defense Evasion
- (T1564.001) Hidden Files and Directories
- (T1564.003) Hidden Window
- (T1027.010) Command Obfuscation
Credential Access
- (T1555.003) Credentials from Web Browsers
- (T1539) Steal Web Session Cookie
Discovery
- (T1518.001) Security Software Discovery
Command and Control
- (T1571) Non-Standard Port
- (T1105) Ingress Tool Transfer
Exfiltration
- (T1041) Exfiltration Over C2 Channel
Appendix A. IoCs
File hash
CURKON
- 9d6c79c0b395cceb83662aa3f7ed0123
- 2189aa5be8a01bc29a314c3c3803c2b8131f49a84527c6b0a710b50df661575e
- 3334d2605c0df26536058f73a43cb074
- ba59f1ece68fa051400fd46467b0dc0a5294b8644c107646e75d225a45fff015
- 4f865db4192afb5bbcdeb2e899ca97a4
- 5ea09247ad85915a8d1066d1825061cc8348e14c4e060e1eba840d5e56ab3e4d
- 3c81dc763a4f003ba6e33cd5b63068cd
- 0329bb5b3a450b0a8f148a57e045bf6ed40eb49a62e026bd71b021a2efc40aed
LINKON
- 19dc387bffdc0a22f640bd38af320db4
- 778e46f8f3641a92d34da68dffc168fdc936841c5ad3d8b44da62a7b2dfe2ee1
- 6d6433c328f6cdce4a80efce3a29ea3e
- e63082cf4db94f06d583a6313e48353366b44ce07b7ffceacc5bc4db88bd8810
- 6f5e4b45ca0d8c1128d27a15421eea38
- 7c08b9178c05ab765a3d7754ac99f4ba1abddb226dbb6cc898bc692bba1898a1
- a0483db3725f8a50078daee7fd10f9bb
- 77d05cc623f860ca2e6d47cdafc517aa0612de88291de7f2a3d95c5d04f1658a
- 7bb236041b91d4cd4fa129267cf109c3
- 5bcfb56c4c884e3657bbfeacca37853113d640b77dff9af519c08c4b64ca029d
Lilith RAT (AutoIt Script)
- 5613ba2032bc1528991b583e17bad59a
- 808425bc599cd60989c90978d179af1d4c72dd7abfe5e0518aca44b48af15725
- d5809e5f848f228634aa45ffe4a5ece0
- c2cc785857c64fa1f8fbb2e359a2638f187cd77cd29ca6701e38d750e822faa4
Amadey (AutoIt Script)
- d357fc478765a22f403c699a812f29bd
- 9e1a3653029b5378736ea1debba44cd81988de73b6d8689f9eba792e719da79a
Network
- hxxps[:]//jethropc[.]com/wp-admin/css/temp/hurry/?rv=papago^&za=honey0
- hxxps[:]//jethropc[.]com/wp-admin/css/temp/hurry/?rv=papago^&za=honey1
- hxxps[:]//www.cammirando[.]com/wp-admin/css/temp/movement/?ra=aaaaaa^&zw=default0
- hxxps[:]//www.cammirando[.]com/wp-admin/css/temp/movement/?ra=aaaaaa^&zw=default1
- hxxps[:]//phasechangesolutions[.]com/wp-admin/css/colors/coffee/hurryup/?rv=super^&za=mongo0
- hxxps[:]//phasechangesolutions[.]com/wp-admin/css/colors/coffee/hurryup/?rv=super^&za=mongo1
- hxxps[:]//file[.]drive002[.]com/read/get.php?cu=ln3&so=xu6502
- hxxps[:]//downwarding[.]com/v2/read/get.php?vw=ln3&nv=xu6502
- hxxps[:]//bgfile[.]com/v2/read/get.php?vw=ln3&nv=xu6502
- hxxps[:]//werxtracts.com/wp-content/themes/stylish-fashion-shop/js/inc/get.php?ra=iew&zw=lk0100
- hxxps[:]//radionaranjalstereo[.]com/wp-content/themes/ai-news/js/inc/get.php?ra=iew&zw=lk0100
- hxxp[:]//serviceset[.]net/upload.php
- hxxp[:]//ttzcloud[.]com/upload.php
- hxxp[:]//storkse[.]com/upload.php
- hxxp[:]//sibbss[.]com/upload.php
- hxxp[:]//oryzanine[.]com/index.php
- hxxp[:]//mq734121[.]info/index.php
- 93.183.93[.]185:57860
- 185.231.154[.]22:52720
- 62.113.118[.]157:57860