情报背景
继Bumblebee通过使用ISO内组合恶意LNK+DLL的方式进行网络钓鱼活动被曝光之后,研究人员对落地的DLL文件进行了深入分析,原文中对恶意软件防御规避的技术部分做了重点分析,并指出BumbleBee可能与被观察到使用该技术的Trickbot有相关性。
关联组织 |
BumbleBee |
战术标签 |
防御规避 |
技术标签 |
HOOK DLL |
情报来源 |
https://elis531989.medium.com/the-chronicles-of-bumblebee-the-hook-the-bee-and-the-trickbot-connection-686379311056 |
01 攻击技术分析
亮点: 挂钩NT函数来劫持LoadLibrary
dopper的导出函数通过一系列的内存分配和解密操作后,最终从内存中解密出一个新的PE载荷。
图:内存中的新载荷文件
dopper接下来通过GetProcAddress分别获取NtOpenFile、NtCreateSection、NtMapViewOfSection的函数地址并挂钩。
图:获取NT函数
完成挂钩后,dropper将尝试使用LoadLibrary加载GdiPlus.dll并从中获取SetPath的导出函数。
图:LoadLibrary加载GdiPlus.dll
GdiPlus.dll 作为系统DLL,并没有SetPath导出函数呢,这一步是Bumblebee偷梁换柱,挂钩的NTCreateSection会将系统DLL的内容替换成恶意DLL,具体操作如下:
1. 使用CreateSection创建可执行的Section
2. 将解密后的恶意内容写入此部分
3. 返回NTSTATUS_SUCCESS给LoadLibrary,因此看起来像是GdiPlus.dll已经被成功映射
图:NtMapViewOfSection的钩子函数
完成后恶意模块将占据合法gdiplus.dll的空间。
图:从processhacker中观察被替换的gdiplus.dll
缺陷: 通过EXPORTS暴露的原始DLL名称
文章中分别使用PEstudio和PE-Bear对Bumblebee的初始DLL进行了分析,PEstudio的图中展示出droper的编译时间是2022年3月(compiler-stamp、debugger-stamp、exports-stamp都有相同的时间戳),entropy项演示该droper的熵值为6.561,熵值较高通常表明该程序包含很多随机数据,可能会在运行时进行加密解密。
PE-bear的分析图则表明该droper包含两个导出函数IternalJob和SetPath, 内部的编译名称似乎为“lodqcbw041xd9.dll”。不管这个奇怪名称的真实性,可以从EXPORTS中获取编译名称还是较少被注意到。
图:PEstudio展示的时间戳和熵值信息
图:PE-Bear展示的导出函数和疑似的编译名称
02 总结
本次攻击中出现的恶意载荷隐藏方法与DLL Hollowing技术具有相似的目的,都是为了让恶意内容隐藏于系统合法DLL的内存空间之中。不同于直接覆写已完成加载DLL时SizeOfImage的大小限制,劫持LoadLibrary过程通过NtCreateSection可以获得更大的内存空间。但这也更改了劫持DLL的映射属性与内存执行权限,增加了暴露的风险。
绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。
研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。
M01N Team
聚焦高级攻防对抗热点技术
绿盟科技蓝军技术研究战队
原文始发于微信公众号(M01N Team):攻击技术研判 | 挂钩NT函数劫持LoadLibrary执行恶意载荷