Antimalware Scan Interface(AMSI)译为反恶意软件扫描接口,它是一种防御机制,用于检查 PowerShell、UAC 等是否有恶意数据传入。它主要针对在 PowerShell 或其他 AMSI 集成环境中执行的命令和脚本。如果检测到任何恶意内容,AMSI 将停止执行并将其发送至 Windows Defender 进一步分析。
目前防病毒软件更新迭代速度较快,具有许多发现恶意软件和威胁的检测机制。但是,当防病毒软件无法检查完全依赖于内存且不落在磁盘上的文件内容时,对 AMSI 的需求就会增加。防病毒软件会对磁盘上的文件和试图创建进程的文件执行检测。但是,如果攻击者试图通过命令或恶意无文件脚本执行在内存中加载运行时,AMSI 就会对命令或无文件脚本中的恶意内容进行检测。
与 AMSI 集成的 Windows 组件有:
当用户启动 PowerShell(或 PowerShell_ISE)进程或脚本时,库会自动加载到该进程中。该库提供了与防病毒软件交互所需的 API。在执行之前,使用远程过程调用 (RPC) 将脚本或命令发送到 Microsoft Defender,然后Microsoft Defender 会分析收到的信息并将响应发送回去。如果检测到已知签名,则会停止执行并显示一条消息,表明该脚本已被防病毒程序阻止。
如果运行 Powershell 的 payload 时被AMSI拦截 ,可以将 PowerShell 版本降级到 2.0,因为 AMSI 仅支持 v2.0 之后的版本。
首先,可以看到我们的关键字被amsi屏蔽了。
然后降级到版本2并再次运行被拦截的命令
powershell -version 2 "amsiutils" |
但这里最大的缺点是许多函数或脚本无法在 PowerShell 2.0 上运行。所以,可以尝试其他方法。
AMSI 根据某些关键字检测签名,所以对这些关键字进行混淆处理是可以绕过的。
例如,混淆 invoke-mimikatz 命令
Invoke-Mimikatz "Inv"+"o"+"ke"+"-Mimi"+"katz" |