一、解密AMSI的秘密

黑客示意图

在渗透测试和红队行动中,绕过安全防护机制是攻击者的常见目标之一。Windows的反恶意软件扫描接口(AMSI)是一个能够检测恶意活动的重要机制。它会对脚本文件进行实时扫描,并将可疑代码提交给操作系统的防病毒软件进行检查。作为一名攻击者,绕过AMSI是提升攻击成功率的重要环节。本文将深入探讨如何从架构层面理解AMSI,并展示一些有效的绕过技术。

AMSI的架构剖析

AMSI作为Windows的一个核心组件,旨在提供实时的恶意软件检测能力。它主要通过以下方式工作:

  • 接口调用:应用程序会调用AMSI的接口来扫描脚本代码。
  • 实时监控:AMSI能够动态检测和分析内存中执行的脚本。
  • 与安全软件交互:扫描结果会被传递给安装的防病毒软件进行进一步处理。

了解这一架构,我们可以发现攻击者的目标是绕过接口调用和实时监控这两个步骤,使恶意代码能够无障碍地执行。

黑客示意图

二、搭建属于你的实验室

在任何成功的攻击过程中,拥有一个稳定的实验环境是至关重要的。本文将介绍如何搭建一个用于测试AMSI绕过技巧的实验室。

环境需求

  • 操作系统:Windows 10
  • 开发工具:Go语言环境、PowerShell
  • 其他工具:使用VMware或VirtualBox创建虚拟环境

实验室搭建步骤

  1. 安装虚拟机:选择VMware或VirtualBox,安装Windows 10作为虚拟机。
  2. 配置开发环境:在虚拟机中安装Go语言开发环境,并配置PowerShell。
  3. 准备工具:下载并安装需要的渗透测试工具,例如Metasploit和Cobalt Strike。

通过这样的环境,我们可以安全地测试各种AMSI绕过方法,同时确保不会对真实系统造成影响。

三、神秘的Payload构造术

在实际攻击中,构造有效Payload是绕过AMSI的关键。我们将以Go语言为主,展示如何实现有效的AMSI绕过Payload。

使用Go实现AMSI绕过

<pre><code class="language-go">package main

import ( &quot;syscall&quot; &quot;unsafe&quot; )

func disableAMSI() { kernel32 := syscall.NewLazyDLL(&quot;kernel32.dll&quot;) amsiDll := kernel32.NewProc(&quot;LoadLibraryA&quot;).Call(uintptr(unsafe.Pointer(syscall.StringBytePtr(&quot;amsi.dll&quot;)))) amsiAddr, _, _ := kernel32.NewProc(&quot;GetProcAddress&quot;).Call(amsiDll, uintptr(unsafe.Pointer(syscall.StringBytePtr(&quot;AmsiScanBuffer&quot;)))) patchAddr := (*[4]byte)(unsafe.Pointer(amsiAddr)) patchAddr[0] = 0x31 // XOR EAX,EAX patchAddr[1] = 0xC0 patchAddr[2] = 0xC3 // RET }

func main() { disableAMSI() // 加载并执行你的Payload }</code></pre>

代码细节

  • 加载amsi.dll:我们首先要确保amsi.dll被加载,这样我们才能找到它的函数地址。
  • 函数地址定位:通过GetProcAddress找到AmsiScanBuffer的地址。
  • 汇编指令覆盖:我们使用汇编指令直接覆盖AmsiScanBuffer函数的前几个字节,使其不再执行恶意代码检测。

这种方法的关键在于直接修改内存中的函数实现,使其即使被调用也会返回正常结果,不再进行真正的扫描。

四、实战中的免杀技巧

为了进一步提高成功率,攻击者通常会结合免杀技术以避免被发现。以下是一些常用的免杀技巧:

加壳与混淆

  • 代码加壳:使用工具将可执行文件加壳,使其特征码被隐藏。
  • 代码混淆:通过混淆代码结构,增加逆向难度。

内存加载技术

黑客示意图

  • 动态加载:从内存中加载并执行代码,减少文件落地。
  • 自定义加载器:开发自定义加载器以执行Payload,避免使用已知工具。

结合这些免杀技术,攻击者能够进一步规避AMSI的检测,增加入侵成功率。

黑客示意图

五、如何才能侦测与防御

在了解攻击者的策略后,防御者也需要掌握相关技术以提高检测能力。

提升检测能力

  • 启用高级审计:确保系统启用了详细的PowerShell脚本审计功能。
  • 使用EDR解决方案:扩展防御范围,结合EDR产品进行实时监控。

定期更新防病毒软件

  • 规则更新:确保防病毒软件的特征库和规则集是最新的。
  • 行为分析:增加行为分析模块以检测异常活动。

结合这些手段,防御方可以有效地提高系统对AMSI绕过攻击的抵御能力。

六、经验心得与分享

作为一名资深的红队专家,我发现AMSI绕过技术的不断发展是对抗双方竞争的结果。以下是一些个人经验:

  • 关注新漏洞:不断跟踪最新发布的漏洞和绕过方法。
  • 持续学习:不断提升技能,掌握最新的工具和技术。
  • 合法应用:确保所有测试在授权环境下进行,不对真实系统造成影响。

通过这些努力,红队成员能够在技术上保持领先,并为客户提供更好的安全评估服务。本文所述技术仅供合法授权的安全测试使用,切勿用于非法目的。