RUNDLL32.EXE的多种使用方式和检测特征 关于RUNDLL32.EXE 合法的RUNDLL32.EXE SHELL32.DLL - “Control_RunDll","Control_RunDllAsUser" RUNDLL32.EXE - 执行HTML或JavaScript

恶意软件作者通常会模仿合法的Windows进程,因此经常可以看到恶意软件伪装为svchost.exe、rundll32.exe或Isass.exe进程,攻击者利用的就是大多数Windows用户可能都不清楚这些系统进程在正常情况下的行为特征。

用于运行DLL,即运行动态链接库。

在MSDN中,对DLL的定义如下:

动态链接库是一个模块,其中包含可以由另一个模块使用的函数或数据。

合法的RUNDLL32.EXE

rundll32.exe可执行文件可以是子进程也可以是父进程,具体取决于执行的上下文,为了确定一个rundll32.exe实例是否恶意,需要确认几件事。

1.启动它的路径

合法的rundll32.exe进程始终位于:

WindowsSystem32
undll32.exe
WindowsSystemWOW64
undll32.exe(64位系统上的32位版本)

例如,如果是从%temp%调用kernel32.dll,这种情况显然是恶意的,此外还需要在VirusTotal这样的站点上检查哈希值。

2.启动它时的命令行

rundll32.exe实例的命令行,完全取决于要运行的内容,例如CPL文件、DLL安装等。

SHELL32.DLL - “Control_RunDll","Control_RunDllAsUser"

与shell32.dll一起使用的常见函数为Control_RunDll和Control_RunDllAsUser.这两个函数用于运行.cpl文件或控制面板选项。

CPL即Control Panel Items(控制面板选项),是控制面板所提供功能对应的程序,是导出CPIApplet函数的DLL。

例如,System32文件夹中的main.cpl文件包含两个applet,分别是鼠标和键盘属性。如果要在鼠标属性中更改指针,实际操作如下。

C:WINDOWSSystem32
undll32.exe C:WINDOWSSystem32shell32.dll,Control_RunDLL C:WINDOWSSystem32main.cpl,@0,1

可以看到,可以轻松使用恶意版本的main.cpl替换原始的main.cpl文件。

RUNDLL32.EXE - 执行HTML或JavaScript

攻击者可能会在rundll32.exe中使用另一个命令行参数”javascript“标志。

实际上,rundll32.exe实例可以使用mshtml.dll和javascript关键词来运行HTML或JavaScript代码。

rundll32.exe javascript:"..mshtml,RunHTMLApplication < HTML Code >

几乎没见过这种方式的任何一次合法使用,一旦在日志中发现这类使用方法,就应立即进行应急排查。