lazarusholic

Everyday is lazarus.dayβ

Matryoshka : Variant of ROKRAT, APT37 (Scarcruft)

2021-07-14, S2W
https://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48
#APT37 #RokRAT #Matryoshka

Contents

Executive Summary
- 2020년 12월, 특정 웹사이트가 워터링홀 공격에 악용된 사례가 발견되었으며, 업무 특성상 해당 사이트에 주기적으로 방문하는 사용자들을 포함하여 취약한 버전의 IE 브라우저로 해당 웹사이트에 방문한 사용자는 공격 대상이 되었음
- 워터링홀 공격으로 다운로드 및 실행되는 악성코드 유형으로 Ruby 실행 파일 및 Ruby 스크립트, PE 파일이 포함된 Multi-Staging Shellcode (KEY : 0x78AEEA97)가 확인되었음
- 최종 실행되는 악성코드는 과거 ROKRAT으로 알려진 악성코드의 발전된 버전
- 공격 대상의 정보 탈취 및 탈취한 정보를 클라우드 서비스로 전송
- 공격 방식 및 대상, 악성코드 등을 포함한 TTP 분석 결과, Scarcruft 위협 그룹과 관련된 공격으로 판단
- Scarcruft(a.k.a APT37, Group123)는 북한 배후로 알려진 위협그룹으로 2012년부터 현재까지 지속적인 공격 활동이 포착되고 있음
Overview
Initial Vector
- 특정 웹사이트가 워터링홀 페이지로 악용되었음.
해당 페이지 내에 삽입되어 있는 악성 스크립트 유포지
(mobile-analytics-d0558.web[.]app, 151.101[.]1.195) 접근 시
Internet Explorer 취약점(추정)으로 인한 Powershell 스크립트 동작
- 악성 스크립트 유포지에서 추가 파일 다운로드
(파일명: mobile.analytics6.min)
- 추가 다운로드 된 파일에 대한 XOR 디코딩 수행 후 스레드 생성
- OneDrive 에서 추가 파일 다운로드: 루비 실행 파일, 악성 …

IoC

151.101.1.195
323112233445566778899AAB0CBDCEDF
4DF1C60BAD360E3C0C5EBF8D2DE998E0
5AFB61FD9C0BDF9468045291CC9C4E4F
6117403d7668593be80a0ef1ad72ba5b
6634C216FDB0067920F911A6FD1D60DE
72657175697265202762617365363427
888ed5eb170d48cf12f8716db899ec85
http://151.101.1.195
http://mobile-analytics-d0558.web.app
rule Scarcruft_RUBY_Shellcode_XOR_Routine
{
meta:
author = "S2WLAB_TALON_JACK2"
type = "APT"
version = "0.1"
date = "2021-05-20"
strings:
/*
8B 4C 18 08 mov ecx, [eax+ebx+8]
C1 C7 0D rol edi, 0Dh
40 inc eax
F6 C7 01 test bh, 1
74 06 jz short loc_D0
81 F7 97 EA AE 78 xor edi, 78AEEA97h
*/
$hex1 = {C1 C7 0D 40 F6 C7 01 74 ?? 81 F7}
/*
41 C1 C2 0D rol r10d, 0Dh
41 8B C2 mov eax, r10d
44 8B CA mov r9d, edx
41 8B CA mov ecx, r10d
41 81 F2 97 EA AE 78 xor r10d, 78AEEA97h
*/
$hex2 = {41 C1 C2 0D 41 8B C2 44 8B CA 41 8B CA 41 81 F2}
condition:
1 of them
}rule Scarcruft_evolved_ROKRAT
{
meta:
author = "S2WLAB_TALON_JACK2"
type = "APT"
version = "0.1"
date = "2021-07-09"
strings:
/*
0x140130f25 C744242032311223 mov dword ptr [rsp + 0x20], 0x23123132
0x140130f2d C744242434455667 mov dword ptr [rsp + 0x24], 0x67564534
0x140130f35 C744242878899AAB mov dword ptr [rsp + 0x28], 0xab9a8978
0x140130f3d C744242C0CBDCEDF mov dword ptr [rsp + 0x2c], 0xdfcebd0c
0x140130f45 C745F02B7EA516 mov dword ptr [rbp - 0x10], 0x16a57e2b
0x140130f4c C745F428AED2A6 mov dword ptr [rbp - 0xc], 0xa6d2ae28
0x140130f53 C745F8ABF71588 mov dword ptr [rbp - 8], 0x8815f7ab
0x140130f5a C745FC09CF4F3C mov dword ptr [rbp - 4], 0x3c4fcf09
*/
$AES_IV_KEY = {
C7 44 24 ?? 32 31 12 23
C7 44 24 ?? 34 45 56 67
C7 44 24 ?? 78 89 9A AB
C7 44 24 ?? 0C BD CE DF
C7 45 ?? 2B 7E A5 16
C7 45 ?? 28 AE D2 A6
C7 45 ?? AB F7 15 88
C7 45 ?? 09 CF 4F 3C
}/*
0x14012b637 80E90F sub cl, 0xf
0x14012b63a 80F1C8 xor cl, 0xc8
0x14012b63d 8848FF mov byte ptr [rax - 1], cl
0x14012b640 4883EA01 sub rdx, 1
*/
$url_deocde = {
80 E9 0F
80 F1 C8
88 48 ??
48 83 EA 01 }
rule Scarcruft_Reverse_BS64_Loader
{
meta:
author = "S2WLAB_TALON_JACK2"
type = "APT"
version = "0.1"
date = "2021-03-09"
strings:
$require_base64 = {72657175697265202762617365363427}
$require_fiddle_import = {726571756972652027666964646c652f696d706f727427}
$bs64_decode64 = {4261736536342e6465636f64653634}
$reverse = {2e72657665727365}
condition:
all of them
}
[email protected]