0x00前言在威胁搜寻过程中,要想发现恶意软件,首先需要对平台和操作系统有一定的了解。如果你想区分合法软件和恶意软件,你必须首先确定哪些是合法的。作为一个有着30多年历史的操作系统,由于Windows的复杂性,我们往往很难做到以上几点。因此,恶意软件作者经常编写模仿合法Windows进程的恶意软件。因此,我们可能会看到恶意软件伪装成svchost.exe、rundll32.exe或lsass.exe进程,利用大多数Windows用户可能不知道这些系统进程在正常情况下的行为这一事实。之前,我们讨论了svchost.exe进程及其命令行选项。在这篇文章中,我们将深入研究rundll32.exe以了解更多信息。0x01AboutRUNDLL32.EXE顾名思义,rundll32.exe可执行文件是用来运行DLL(RUNDLL),即运行动态链接库的。在MSDN中,DLL的定义如下:动态链接库(DLL)是一个模块,其中包含可以被另一个模块(应用程序或DLL)使用的函数和数据。以下是使用rundll32.exe的最基本语法:rundll32rundll32.exe可执行文件可以是子进程或父进程,具体取决于执行的上下文。要确定rundll32.exe实例是否是恶意的,我们需要确认一些事情。首先,您需要确认启动它的路径,其次,命令行。合法的RUNDLL32.EXE进程始终位于:\Windows\System32\rundll32.exe\Windows\SysWOW64\rundll32.exe(64位系统上的32位版本)至于rundll32.exe实例的命令行,这完全取决于CPL文件、DLL安装等内容。接下来,让我们看几个示例。0x02RunDLL在其基本形式中,rundll32.exe只会执行一个DLL,所以如果我们看到rundll32.exe的实例,首先检查被调用的DLL的合法性。我们总是必须检查DLL是从哪里调用的。例如,如果从%temp%调用kernel32.dll,这显然是恶意的。此外,我们需要在VirusTotal等网站上检查其哈希值。0x03SHELL32.DLL–“OpenAs_RunDLL”Rundll32.exe还可以执行DLL中的特定功能。Forexample,whenafileisselectedandright-clicked,acontextmenuisdisplayedwithseveraloptions.这里的一个选项是“OpenWith”。单击后,将出现一个弹出窗口,您可以在其中选择系统上安装的应用程序。实际上,在这个过程的幕后,是使用shell32.dll和OpenAs_RunDL函数启动的rundll32.exe实用程序。C:\Windows\System32\rundll32.exeC:\Windows\System32\shell32.dll,OpenAs_RunDLL这种在DLL中调用特定函数的行为很常见,所以我们可能无法完全理解所有函数.以下两篇文章详细介绍了一系列rundll32.exe调用及其作用。https://www.tenforums.com/tutorials/77458-rundll32-commands-list-windows-10-a.htmlhttp://chagdali.free.fr/dcs/RunDll.htm0x04SHELL32.DLL–"Control_RunDLL","Control_RunDLLAsUser”和控制面板程序我们发现与shell32.dll一起使用的另一个常见函数是Control_RunDLL或Control_RunDLLAsUser。这两个函数用于运行.CPL文件或控制面板选项。例如,如果我们想更改计算机的日期和时间,我们可以从控制面板启动相应的小程序。在幕后,Windows实际上使用以下命令行启动了一个rundll32.exe实例。C:\WINDOWS\System32\rundll32.exeC:\WINDOWS\System32\shell32.dll,Control_RunDLLC:\WINDOWS\System32\timedate.cpl另外还要验证DLL的合法性。使用Control_RunDLL或Control_RunDLLAsUser函数时,应始终检查.CPL文件的有效性。0x05ControlPanelItems(.CPL)CPL全称是控制面板项(ControlPanelItems),是控制面板提供的功能对应的程序,或者说是导出CPIApplet功能的DLL。一个.CPL文件可以包含多个可以被小程序索引引用的小程序,每个小程序可以包含多个可以被选项卡索引引用的选项卡。我们可以通过rundll32.exe实用程序访问和请求此信息,如下所示。例如,System32文件夹中的main.cpl文件包含两个小程序,即鼠标和键盘属性。如果我们想改变鼠标属性中的指针,实际操作如下。C:\WINDOWS\System32\rundll32.exeC:\WINDOWS\System32\shell32.dll,Control_RunDLLC:\WINDOWS\System32\main.cpl,@0,1可以看到,我们可以很容易的将原来的替换成恶意的版本main.cpl文件,不了解这方面知识的用户很容易忽略这一点。事实上,这正是恶意软件作者感染计算机的方式。一般情况下,使用Control_RunDLL函数的rundll32.exe实例的父进程应该是explorer.exe或control.exe。其他进程也可以使用这个函数来启动rundll32.exe。例如,在运行inetcpl.cpl进行代理或网络配置时,rundll32.exe的父进程可能是GoogleChrome、MSGEDGE或IE。如果您想了解CPL以及恶意软件是如何被滥用的,您可以阅读这份关于CPL恶意软件的趋势微研究报告(https://www.trendmicro.de/cloud-content/us/pdfs/security-intelligence/white-papers/wp-cpl-malware.pdf)。0x06DEVCLNT.DLL——“DavSetCookie”(WebDav客户端)Rundll32.exe实例有一个神秘的命令行,可能会在日志中大量弹出,格式如下。C:\WINDOWS\System32\rundll32.exeC:\Windows\system32\davclnt.dll,DavSetCookie在Word文件中或通过共享窗口使用file://协议时,有时(如果禁用SMB)将使用WebDav客户端请求文件。此时,通过rundll32.exe实用程序发出请求。这类请求的父进程是svchost.exe,可以不用加“-sWebClient”参数。C:\Windows\system32\svchost.exe-kLocalService-p-sWebClient像Emotet这样的恶意软件之前已经利用过这种技术。因此,我们总是需要分析这些命令行中包含的主机,确保它们都是合法的。0x07RUNDLL32.EXE-“-sta”或“-localserver”标志有一个鲜为人知的命令行参数,即“-sta”和“-localserver”。两者都可用于加载恶意注册的COM对象。如果我们在日志中看到以下内容,或者发现一个进程使用以下命令行参数运行:rundll32.exe–localserverrundll32.exe–sta我们需要验证相应的注册表项\HKEY_CLASSES_ROOT\CLSID\我强烈建议阅读@bohops的文章以了解有关此技术的更多信息。在hexacorn的博客中,详细介绍了“-localserver”变体。https://bohops.com/2018/06/28/abusing-com-registry-structure-clsid-localserver32-inprocserver32/0x08RUNDLL32.EXE——攻击者可能在rundll32.exe中使用的另一个执行HTML或JavaScript的命令行参数是“javascript”标志。事实上,rundll32.exe实例可以使用mshtml.dll和javascript关键字来运行HTML或JavaScript代码。rundll32.exejavascript:"\..\mshtml,RunHTMLApplication我从来没有见过这种方法的任何合法使用。因此,一旦我们在日志中发现这种用法,我们应该立即进行紧急故障排除。关于这种技术的更多细节可以可在以下资源中找到:https://pentestlab.blog/2017/05/23/applocker-bypass-rundll32/https://oddvar.moe/2017/12/13/applocker-case-study-how-insecure-is-it-really-part-1/https://lolbas-project.github.io/lolbas/Binaries/Rundll32/0x09总结感谢阅读,希望你能通过这篇文章认识Rundll32。随意如果您有任何反馈或建议,请通过Twitter@nas_bench与我联系。0x0A参考文章[1]https://bohops.com/2018/06/28/abusing-com-registry-structure-clsid-localserver32-inprocserver32/[2]https://threathunterplaybook.com/evals/apt29/report.html[3]https://www.hexacorn.com/blog/2020/02/13/run-lola-bin-run/[4]https://www.trendmicro.de/cloud-content/us/pdfs/security-intelligence/white-papers/wp-cpl-malware.pdf[5]https://support.microsoft.com/en-us/help/149648/description-of-control-panel-cpl-files[6]https://isc.sans.edu/forums/diary/Lets+Trade+You+Read+My+Email+Ill+Read+Your+Password/24062/[7]https://blog.didierstevens.com/2017/11/13/webdav-traffic-to-malicious-sites/本文翻译自:https://medium.com/@nasbench/a-deep-dive-into-rundll32-exe-642344b41e90如有转载,请注明原文地址。