0x01 探索AMSI架构

AMSI(Antimalware Scan Interface)是微软在Windows系统中引入的一项技术,旨在为应用程序与反恶意软件解决方案之间提供统一的接口。通过AMSI,应用程序可以将内容发送给本地的反恶意软件引擎进行扫描,确保恶意代码难以在系统中运行。

在我的攻击生涯中,AMSI一直是个不小的挑战。多年来,微软通过对AMSI的持续更新,使得绕过这一接口的难度随之增加。AMSI最初设计的目的很明确,就是要通过对脚本执行进行实时监控,尽可能地阻止恶意代码的运行。然而,攻击者总能找到绕过AMSI的方法。这里我将分享一些我在实战中使用的技巧。

0x02 实战环境搭建

在开始动手之前,我们需要一个合适的实验环境来测试AMSI的绕过方法。通常我会使用以下配置:

实验环境配置

  • Windows 10/11 虚拟机:尽量安装最新的更新,这样可以保证AMSI的规则也是最新的。
  • Ruby 和 Shell 执行环境:确保系统已经安装这些环境,并且能够执行脚本。
  • 反恶意软件软件:安装Windows Defender或者其他支持AMSI的防病毒软件,这样可以看到绕过效果。

准备工作

首先,我会准备几个简单的恶意载荷,确保它们在常规情况下会被AMSI捕获。这样我们能够更清晰地看到绕过技术的效果。

黑客示意图

<pre><code class="language-shell">echo &quot;Write-Host &#039;Malicious Code Detected&#039;&quot; &gt; test.ps1 powershell.exe -File test.ps1</code></pre>

通过这个简单的PowerShell命令,我们可以观察到AMSI的触发过程。

0x03 Payload构造的艺术

要想绕过AMSI,我们需要对Payload进行一些特别的处理。这里我分享一个我常用的技巧:对输入内容进行分块处理或者字符串混淆,使其不容易被AMSI识别。

Ruby的妙用

Ruby语言有着强大的字符串处理能力,我们可以通过Ruby构造一个精巧的Payload。

<pre><code class="language-ruby">code = &quot;Write-Host &#039;Malicious Code Detected&#039;&quot; encoded_code = code.bytes.map { |b| b.chr }.join File.write(&quot;encoded.ps1&quot;, encoded_code)</code></pre>

在这个例子中,我们将字符串按字节进行重新组合。接着,我们可以使用PowerShell来执行这个生成的脚本文件。

<pre><code class="language-shell">powershell.exe -File encoded.ps1</code></pre>

此时,我们可能会发现AMSI并没有检测到这个脚本的执行,因为我们已经改变了其字节序列。

0x04 绕过的多样性

在我的实践中,绕过AMSI的方法多种多样。我曾经尝试过以下几种方法:

1. 字符串拆分重组

这个方法类似于前面Ruby的示例,但对于不同的语言有不同的实现方式。通过在运行时动态拼接字符串,我们可以有效地隐藏恶意内容。

2. 动态代码生成

通过在运行时动态生成代码,可以避免AMSI在脚本加载时进行扫描。这种方法需要更加细致的代码控制,确保生成的代码能够正确执行。

3. 内存层级的操作

高级攻击者可以通过直接操作内存,修改AMSI的钩子函数或反病毒引擎的接口。这通常需要较高的权限和对系统内存的深入理解。

0x05 检测与防御

面对多样的AMSI绕过技术,防御者也有一些应对策略。这里结合我的经验,给出几条建议:

黑客示意图

加强脚本审计

通过配置更严格的脚本执行策略(如PowerShell的执行策略),可以减少脚本的随意运行。

黑客示意图

增强行为监控

除了依赖于AMSI,防御者还可以使用行为监控技术,检测异常的进程行为或内存操作。

定期更新防病毒引擎

确保反病毒软件的引擎和规则库是最新的,这样可以更有效地识别新型威胁。

0x06 个人经验分享

在实战中,保持灵活性和创新精神是关键。攻击者的思维总是变化无常,但通过不断地学习和实验,可以找到有效的方法来应对新的挑战。

有一次,我在一个项目中发现目标环境中的AMSI进行了定制化配置,导致常规绕过方法失效。为了应对这一情况,我决定使用更为隐蔽的内存注入方法,将恶意代码加载到一个可信进程中。虽然这个方法比较复杂,但最终成功地绕过了目标的防御。

这种经历提醒我,我们不仅要关注现有的攻击技术,还要不断地探索新的方法。只有这样才能应对不断变化的安全环境。

声明:本文内容仅供授权的安全测试以及安全研究人员学习使用,任何非法使用均与作者无关。