Обход AMSI
Что такое Обход AMSI?
Обход AMSIТехники, отключающие, патчащие или обходящие Windows Antimalware Scan Interface, чтобы скрипты и in-memory полезные нагрузки не попадали под проверку антивирусов.
Antimalware Scan Interface (AMSI), представленный вместе с Windows 10 в 2015 году, позволяет PowerShell, JScript, VBScript, .NET и VBA в Office передавать буферы зарегистрированному антивирусу (через AmsiScanBuffer/AmsiScanString) для сканирования после деобфускации, но до выполнения. Поскольку AMSI работает внутри процесса и разделяет адресное пространство атакующего, злоумышленник, уже получивший выполнение кода, может попросту вмешаться в его работу.
Распространённые техники делятся на три семейства. Патчинг памяти перезаписывает первые байты amsi.dll!AmsiScanBuffer (или AmsiOpenSession), чтобы тот возвращал AMSI_RESULT_CLEAN или ошибку вроде E_INVALIDARG без сканирования. Рефлексия переключает приватное поле AmsiUtils.amsiInitFailed в PowerShell на true — классический однострочник Matt Graeber 2016 года — так что сессия больше никогда не инициализирует AMSI. Обфускация/откат версии разбивает помеченные строки, кодирует их в Base64 или принудительно запускает powershell -version 2, где AMSI не существует. Цель — запустить инструменты вроде Mimikatz, Invoke-Mimikatz или биконов Cobalt Strike внутри доверенного процесса-хоста незаметно.
MITRE ATT&CK отслеживает это как T1562.001 (Impair Defenses: Disable or Modify Tools). Microsoft Defender имеет сигнатуру буквальной строки amsiInitFailed с 2017 года, поэтому атакующие обфусцируют её во время выполнения. Защита: AMSI-провайдеры, подключённые к современному EDR, правила Attack Surface Reduction, PowerShell Constrained Language Mode, AppLocker/WDAC, журналирование ScriptBlock и оповещения о патчах с правами на запись+выполнение в amsi.dll во вновь созданных процессах.
flowchart TD
S[Malicious script / macro] --> H[Host process: PowerShell, WScript, Office]
H --> Q{AMSI tampered?}
Q -->|"Patch AmsiScanBuffer"| C[Force AMSI_RESULT_CLEAN]
Q -->|"Set amsiInitFailed = true"| C
Q -->|"No"| AV[AV/EDR scans deobfuscated buffer]
AV -->|Malicious| B[Blocked + alert]
AV -->|Clean| X[Execute]
C --> X[Payload executes unscanned]● Примеры
- 01
Патч первых байтов AmsiScanBuffer в памяти процесса так, чтобы он всегда возвращал AMSI_RESULT_CLEAN.
- 02
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true).
● Частые вопросы
Что такое Обход AMSI?
Техники, отключающие, патчащие или обходящие Windows Antimalware Scan Interface, чтобы скрипты и in-memory полезные нагрузки не попадали под проверку антивирусов. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает Обход AMSI?
Техники, отключающие, патчащие или обходящие Windows Antimalware Scan Interface, чтобы скрипты и in-memory полезные нагрузки не попадали под проверку антивирусов.
Как защититься от Обход AMSI?
Защита от Обход AMSI обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Обход AMSI?
Распространённые альтернативные названия: AMSI evasion.