攻击复现 —— 利用Regasm.exe与Regsvcs.exe绕过AppLocker – 作者:东巽科技2046Lab

AppLocker 

AppLocker也被称作“应用程序控制策略”,是Windows系统下的一项安全功能,来帮助管理员对主机系统进行一定程度的系统保护。通过合理定义规则,管理员可以决定哪些程序、安装程序、脚本可以在计算机上被运行,可以被定义的规则包括但不限于用户名名称、发布者名称、产品名称、文件路径、文件哈希、文件版本。 

复现环境

攻击机:Kali,IP 192.168.195.154

受害机:Windows 7 32位,IP 192.168.195.145,管理员权限用户root,普通权限用户test

工具:Metasploit、Ollydbg

文件:calc_signed.dll、calc_unsigned.dll、msf_signed.dll、msf_unsigned.dll

图片1.png

复现流程

首先在受害机上进入本地服务,将Application Identity服务启动,该服务为AppLocker功能生效的先决条件。

图片2.png

在攻击机上使用msfvenom生成C#格式的payload,该payload运行后将会连接攻击机的指定端口。

图片3.png

网站“https://github.com/3gstudent/Bypass-McAfee-Application-Control–Code-Execution/blob/master/regsvcs.cs”可以下载用以生成恶意dll的cs文件,C:\Windows\Microsoft.NET\Framework\v4.0.30319文件夹中的csc.exe程序可以将cs文件生成为dll文件。在本文中,我们将使用calc.cs文件及msf.cs文件作为生成恶意dll的cs文件。其中,calc.cs文件即为从网站上下载的regsvcs.cs文件,msf.cs文件只需将calc.cs文件中shellcode部分替换为先前生成的payload即可。

图片4.png

csc.exe将使用calc.cs与msf.cs文件生成4个不同的dll文件,分别为calc_signed.dll、calc_unsigned.dll、msf_signed.dll、msf_unsigned.dll。其中calc_signed.dll为被签名的dll文件,calc_unsigned.dll为未被签名的dll文件,功能均为弹出一个计算器。msf_signed.dll为被签名的dll文件,msf_unsigned.dll为未被签名的dll文件,功能均为打开一个回连msf攻击机的会话。生成这4个dll的具体指令见下图。

图片5.png

Regasm.exe与Regsvcs.exe均可用来进行AppLocker绕过,但regsvcs.exe加载或卸载指定dll时该dll必须签名才可执行成功,否则将会出现下图中的报错。

图片6.png

进行签名所需的程序在C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools文件夹中,可使用下图中的命令生成密钥对文件。

图片7.png

进行绕过前,我们将设置AppLocker下文件的通过规则,该规则可在“控制面板-管理工具-本地安全策略-应用程序控制策略-AppLocker”中进行设置。在本例中,我们设置用户名root允许或拒绝执行calc.exe程序。如下图所示,在允许执行时,可以成功弹出计算器。

图片8.png

在拒绝执行时,计算器无法成功弹出。因此可知,任意使用生成的dll来启动新程序的行为将无法绕过AppLocker规则。因此,我们将使用不会启动新程序的dll来进行后续测试。由于无新程序启动,则无法在Applocker中设置阻止规则。

图片9.png

如下图所示,当msf_signed.dll文件被尝试加载时,进行网络通信回连行为的是Regsvcs.exe进程。

图片10.png图片11.png

在运行上图指令时,在攻击端打开msfconsole开启一个对4444端口的监听,随后可以看见成功获取shell。由下图可知,获取的shell可用来控制受害机。

图片12.png

由于Regasm.exe与Regsvcs.exe进行dll注册时需要管理员权限,因此在普通权限用户test下测试时,我们将使用另一个指令。

图片13.png

Regasm.exe与Regsvcs.exe进行dll卸载时普通权限即可,因此,我们使用下图中的指令尝试打开计算器与回连msf攻击机。经过测试。Regasm.exe可成功完成AppLocker绕过。

图片14.png图片15.png

在攻击机上可以看到,当前的用户权限为普通用户test。

图片16.png

因此,即使受害机处于普通权限下,我们依然可以在攻击机上对受害机进行恶意操作,如下载文件、截屏、获取系统信息、执行指定程序等。

图片17.png图片18.png

我们也可以在shell中移动至普通用户有权限的位置(如桌面),进行创建文件夹并上传恶意文件等恶意操作。

图片19.png

最后,我们对被注册的恶意msf_signed.dll进行简要的逆向分析,来了解该dll注册时回连攻击机的过程。将RegAsm.exe使用OD打开并添加msf_signed.dll为启动参数,设置中断于新dll的加载,随后依次加载直至加载msf_signed.dll。

图片20.png

进入新线程后,该dll将尝试使用connect()函数连接ip 192.168.195.154。

图片21.png

连接成功后,该dll将尝试使用recv()函数进行数据接收。

图片22.png图片23.png

准备数据接收时,该dll将使用VirtualAlloc()函数分配内存空间,将即将接收的数据存储,由下图可知接收的数据为一个PE文件。

图片24.png图片25.png

随后该dll将进入该PE文件所在的内存空间,该文件为msf完成连接后进行控制操作的核心代码,攻击机可通过该段代码将攻击指令下发至受害机,并从受害机获取相应的信息。

图片26.png

防护措施

1、开启AppLocker功能,合理设置规则,阻止恶意可执行文件的运行;

2、不轻易注册来历不明的dll;

3、不轻易运行来历不明的软件;

4、及时更新病毒库,查杀主机中的恶意病毒;

5、推荐使用“铁穹高级持续性威胁系统”(简称”铁穹“)发现潜在的攻击行为。“铁穹”是东巽科技技术有限公司结合流量检测与沙箱分析功能,用以检测主机内潜在威胁行为的系统。

参考:

https://pentestlab.blog/2017/05/19/applocker-bypass-regasm-and-regsvcs/


来源:freebuf.com 2019-10-18 09:55:07 by: 东巽科技2046Lab

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论