2024强网杯Master of DFIR-Phishing
Master of DFIR - Phishing:
1 | 题目内容: |
task1:
(1).攻击者的邮箱是什么? (注意:MD5(攻击者邮箱),以cyberchef的为准) 示例:9b04d152845ec0a378394003c96da594
a8cd5b4ba47e185d4a69a583fde84da5
(2). 受害者的邮箱是什么? (注意:MD5(受害者邮箱),以cyberchef的为准) 示例:9b04d152845ec0a378394003c96da594
b9cae449f959162f0297fa43b458bd66
打开eml文件,发现两者的邮箱

alice@flycode.cn --> a8cd5b4ba47e185d4a69a583fde84da5
bob@flycode.cn --> b9cae449f959162f0297fa43b458bd66
task2:
(1).攻击者所投放的文件md5是什么? (注意:以md5sum的结果为准) 示例:33ec9f546665aec46947dca16646d48e
f436b02020fa59f3f71e0b6dcac6c7d3
(2).攻击者所投放文件的密码是什么? 示例:000nb
2024qwbs8
下载下来文件直接md5即可f436b02020fa59f3f71e0b6dcac6c7d3
task3:
(1).攻击者所使用的攻击载荷后缀是什么? 示例:lnk
msc
(2).攻击者所使用的攻击载荷文件windows默认的打开方式的全称是什么? 示例:Microsoft Windows Based Scripting Host
Microsoft Management Console
使用已知密码将压缩包进行解压,得到:关于组织参加第八届 “强网杯” 全国网络安全挑战赛的通知(11 月 2 日至 3 日举行线上赛).msc
msc 文件的文件缩略图经过篡改,改为了 pdf 文件的缩略图,可以断定为经过伪造的恶意文件
msc 文件的默认打开方式,是 Microsoft 管理控制台(Microsoft Management Console (MMC))
task4:
攻击者所投放样本的初始执行语句在该攻击载荷文件的第几行? 示例:20
97
在92发现了恶意的js载荷,97行执行了js载荷

task5:
经过初始执行后,攻击者所加载的第二部分载荷所使用的语言是什么? 示例:javascript
VBScript

task6:
(1).攻击者所进行的第二部分载荷其将白EXE存在了什么地方? (注意:需要提供完成的解混淆后的第二部分载荷s…….s函数的参数) 提交需要MD5(参数内容) 以Cyberchef结果为准示例:9b04d152845ec0a378394003c96da594
69b23cfd967d07c39d1517e2a3c37e34
(2).攻击者所进行的第二部分载荷其将黑DLL存在了什么地方? (注意:需要提供完成的解混淆后的第二部分载荷s…….s函数的参数) 提交需要MD5(参数内容) 以Cyberchef结果为准示例:9b04d152845ec0a378394003c96da594
d2fabdcc28074462ac2379101836c938
提取出VBS代码,发现其用了chr函数拼接进行了混淆
想办法去混淆,去混淆方法来自[2024 强网杯 Master of DFIR | Target Machines WriteUp](https://tryhackmyoffsecbox.github.io/Target-Machines-WriteUp/blog/2024qwbs8 Master of DFIR#task7)
在 Visual Basic (VB.NET) - OneCompiler 中,使用以下 VB 代码进行解混淆
1 | Public Module Program |
在 Visual Basic 中,原语句为 Chr(Int("&H6f")) 需要改为 Chr(Convert.ToInt32("6f", 16))
或者改为 Chr(&H6f)
可以使用以下脚本辅助处理
1 | with open("./data.txt", "r") as f: |
然后手动将混淆部分用vb代码去混淆,得到
1 | Dim mscLL |
分析代码可知,这个vbs代码作用是
- 释放真正的PDF
- 释放
/MMC_ConsoleFile/BinaryStorage/Binary[@Name='CONSOLE_MENU']文件名为GUP.exe - 释放
/MMC_ConsoleFile/BinaryStorage/Binary[@Name='CONSOLE_PANE'](6/13)文件名为libcurl.dll - 运行
GUP.exe的参数为t 8.8.8.8
/MMC_ConsoleFile/BinaryStorage/Binary[@Name='CONSOLE_MENU'] --> 69b23cfd967d07c39d1517e2a3c37e34
/MMC_ConsoleFile/BinaryStorage/Binary[@Name='CONSOLE_PANE'] --> d2fabdcc28074462ac2379101836c938
task7:
攻击者使用的这个白EXE加载黑DLL的手法所对应的MITRE ATT&CK ID是什么? (注意:请注意示例的提示提交大类即可不需要细化到分项) 示例: T1000
T1574
这是dll侧加载技术,已经确定使用的手法为 白加黑 方案,即使用白名单程序(例如证书验证)加载恶意 DLL 库文件,借此规避安全软件的检测,根据攻击手法,可以确定到 MITRE ATT&CK ID T1574
1 | T1574 Hijack Execution Flow - 劫持执行流 |

task8:
攻击者所使用的黑DLL劫持了原始DLL的哪个函数? 示例: main
curl_easy_init
ida打开黑dll后

检查库函数,发现其他函数都是直接返回dword,而 curl_easy_init() 函数,这个调用了函数sub_100012401函数

这个函数的参数是一个数组

可以怀疑是 curl_easy_init() 函数被篡改,从数组中读取恶意载荷解密后执行
task9:
(1).攻击者所使用的黑DLL解密下一阶段载荷所使用的算法是什么? 示例:chacha20
RC4
(2).攻击者所使用的黑DLL解密下一阶段载荷所使用的Key是什么? (注意:请提交一段小写的十六进制字符串) 示例:1122334455
f21a9d8b1e5d
跟进分析 sub_10001240() 函数,分析可得知这个是一个非标准的RC4加解密

由下图,将 v41,v42 作为 Char 变量进行查看,得到 \x5D\x1E\x8B\x9D\x1A\xF2,由于 key 是使用小端序进行储存,转为大端序即可f21a9d8b1e5d

task10:
攻击者所使用的下一阶段载荷的回连C2是什么? (注意:需要提供ip地址:端口的形式) 示例:127.0.0.1:5100
192.168.57.119:6000
需要先将 libcurl.dll 中的载荷进行提取,通过对于函数逻辑的基本分析,可以确定数据储存在 &unk_100080B0 中,那么可以直接在 sub_10001240() 函数的 memcpy(lpProc, this, v23); 语句下断点,将解密后的载荷直接dump出来

1 | import idaapi |
导出后在ida中打开

发现一个名为IpAddress的东西,在这个地方下断点,调试,在寄存器中看到回连ip和下载的文件

再另一个地方看到回连的端口6000

同时流量包中第一个tcp流也可印证

task11:
攻击者所使用最终阶段载荷所使用的加密算法是什么? 示例:DES
AES
从流量包中把1730391917.bin 文件 dump 出来,用volexity/donut-decryptor: Retrieve inner payloads from Donut samples去混淆,得到恶意载荷

得到密钥pJB`-v)t^ZAsP$|r

根据流量包请求头的信息,得知这个C2的名称Ptkatz/OrcaC2: OrcaC2是一款基于Websocket加密通信的多功能C&C框架,使用Golang实现。,进一步确定其加密算法为AES
task12:
攻击者所使用最终阶段载荷所使用的密钥的MD5是什么? (注意:MD5(密钥内容),以cyberchef的为准) 示例:9b04d152845ec0a378394003c96da594
a524c43df3063c33cfd72e2bf1fd32f6
1 | pJB`-v)t^ZAsP$|r --> a524c43df3063c33cfd72e2bf1fd32f6 |
task13:
攻击者使用了什么家族的C2? 示例:PoshC2
OrcaC2