AMSI-Bypass
Was ist AMSI-Bypass?
AMSI-BypassTechniken, die das Windows Antimalware Scan Interface deaktivieren, patchen oder umgehen, sodass Skripte und In-Memory-Payloads nicht von Antivirenprodukten gescannt werden.
Das Antimalware Scan Interface (AMSI), das 2015 mit Windows 10 eingefuehrt wurde, erlaubt PowerShell, JScript, VBScript, .NET und Office-VBA, Buffer an die registrierte Antivirensoftware (ueber AmsiScanBuffer/AmsiScanString) zu uebergeben, damit diese nach der Deobfuskation, aber vor der Ausfuehrung gescannt werden. Da AMSI im selben Prozess laeuft und den Adressraum des Angreifers teilt, kann ein Angreifer, der bereits Codeausfuehrung besitzt, es einfach manipulieren.
Gaengige Techniken lassen sich in drei Familien einteilen. Memory Patching ueberschreibt die ersten Bytes von amsi.dll!AmsiScanBuffer (oder AmsiOpenSession), sodass es ohne Scan AMSI_RESULT_CLEAN oder einen Fehler wie E_INVALIDARG zurueckgibt. Reflection setzt das private Feld AmsiUtils.amsiInitFailed von PowerShell auf true — Matt Graebers klassischer One-Liner von 2016 —, sodass die Session AMSI nie wieder initialisiert. Obfuskation/Downgrade zerlegt markierte Strings, kodiert sie Base64 oder erzwingt powershell -version 2, wo AMSI nicht existiert. Ziel ist es, Werkzeuge wie Mimikatz, Invoke-Mimikatz oder Cobalt-Strike-Beacons unentdeckt in einem vertrauenswuerdigen Hostprozess auszufuehren.
MITRE ATT&CK fuehrt dies als T1562.001 (Impair Defenses: Disable or Modify Tools). Microsoft Defender hat den literalen String amsiInitFailed seit 2017 signaturbasiert erfasst, weshalb Angreifer ihn zur Laufzeit obfuskieren. Schutzmassnahmen: an ein modernes EDR angebundene AMSI-Provider, Attack-Surface-Reduction-Regeln, PowerShell Constrained Language Mode, AppLocker/WDAC, ScriptBlock-Logging sowie Alarmierung bei schreib- und ausfuehrbaren Patches an amsi.dll in neu gestarteten Prozessen.
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]● Beispiele
- 01
Patch der ersten Bytes von AmsiScanBuffer im Speicher, sodass AMSI_RESULT_CLEAN zurueckkommt.
- 02
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true).
● Häufige Fragen
Was ist AMSI-Bypass?
Techniken, die das Windows Antimalware Scan Interface deaktivieren, patchen oder umgehen, sodass Skripte und In-Memory-Payloads nicht von Antivirenprodukten gescannt werden. Es gehört zur Kategorie Angriffe und Bedrohungen der Cybersicherheit.
Was bedeutet AMSI-Bypass?
Techniken, die das Windows Antimalware Scan Interface deaktivieren, patchen oder umgehen, sodass Skripte und In-Memory-Payloads nicht von Antivirenprodukten gescannt werden.
Wie schützt man sich gegen AMSI-Bypass?
Schutzmaßnahmen gegen AMSI-Bypass kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für AMSI-Bypass?
Übliche alternative Bezeichnungen: AMSI-Evasion.