关于 shell32.dll,比较常见的函数还有 Control_RunDLL 和 Control_RunDLLAsUser,它们可以用于运行 .CPL 文件,一般主要是控制面板中的小程序
例如打开防火墙: C:\WINDOWS\System32\rundll32.exe C:\WINDOWS\System32\shell32.dll,Control_RunDLL C:\WINDOWS\System32\firewall.cpl
很显然,这里的 CPL 文件也可以被替换成恶意文件,所以一旦出现可疑的路径及文件名,我们就需要结合其它工具来检查它的合法性
关于这一攻击手法的使用细节,这篇 Paper 值得一读,本文就不展开阐述了
另外附上一张表格链接,其中包含了 Windows 10 上 rundll32.exe 可快速调用的命令清单及其功能含义
毕竟人生苦短,大家都没时间去记住那么多命令,但是不妨先 mark 一下,等到有需要时可以迅速查出其含义
攻击方式借助 rundll32.exe 实现的攻击方式非常多,这里我只简单介绍几种比较有特色的利用姿势
合法的DLL调用攻击者如果使用合法的 DLL 文件来完成攻击活动,按照传统的检测手段,确实会大大增加防守难度
例如利用 comsvcs.dll 中的 MiniDump 函数对目标进程进行内存转储,从而实现凭证窃取,参考这里:
— C:\Windows\System32\rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump <PID> C:\temp\lsass.dmp full
类似的还有 advpack.dll,原本是用于帮助硬件和软件读取和验证.INF文件,也会被攻击者用做代码执行
印象比较深刻的是之前分析一些木马病毒时见过类似的使用技巧,特意搜了下,这里好像也有相关文章:
该病毒在图片中存放恶意代码,通过白利用完成代码执行,不熟悉的小伙伴遇见了真的很容易被瞒过去:
— c:\windows\system32\rundll32.exe advpack.dll,LaunchINFSection c:\microsoft\360666.png,DefaultInstall
当然,这些攻击手法在实际使用过程中肯定会有许多变种,用于绕过一些常规的检测方式,比如 MiniDump 函数的调用也可以通过编号 #24 完成
感兴趣的朋友可以看看这里: