Glossaire
AMSI (Antimalware Scan Interface)
Interface Windows qui permet à l'antivirus d'analyser les scripts, dont PowerShell, à l'exécution ; les attaquants tentent de la désactiver en mémoire.
L'Antimalware Scan Interface (AMSI) est une interface Windows qui permet à Windows Defender et aux autres antivirus d'analyser le contenu des scripts au moment de leur exécution, et pas seulement les fichiers présents sur le disque. PowerShell 5 sous Windows 10 soumet les blocs de script à AMSI avant leur exécution : un code encodé en Base64, compressé ou assemblé à partir de fragments est donc analysé sous sa forme finale et lisible. Cela suffit à déjouer la plupart des obfuscations simples.
Pourquoi c'est important en investigation
Comme AMSI est chargé dans le même processus que le script (via amsi.dll), le script peut tenter de le désactiver pour lui-même. Des techniques bien connues positionnent le champ privé amsiInitFailed pour que la session croie qu'AMSI n'a pas pu démarrer et ignore l'analyse, ou corrigent AmsiScanBuffer en mémoire pour que chaque analyse renvoie un résultat sain. Un contournement d'AMSI est rarement une fin en soi : c'est l'étape qui précède immédiatement une charge utile que l'attaquant s'attend à voir détectée par l'antivirus.
Un texte faisant référence à AmsiUtils, amsiInitFailed, AmsiScanBuffer, AmsiOpenSession ou amsi.dll est un fort indicateur, et la ligne de contournement elle-même est souvent enregistrée, car elle doit être compilée comme n'importe quel autre bloc de script avant de pouvoir prendre effet.
Exemple
Un contournement classique en une ligne, tel qu'il peut apparaître dans un événement 4104 ou dans un fichier d'historique :
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
Les attaquants dissimulent généralement ces noms derrière de la concaténation, des codes [char] ou du Base64 ; le parseur examine donc chaque couche de désobfuscation qu'il parvient à décoder, et pas seulement le texte brut, et lève une détection de contournement d'AMSI de gravité élevée partout où l'un de ces noms apparaît.
Termes associés
- Attaque par rétrogradation PowerShell, autre moyen de s'exécuter sans AMSI
- Journalisation des blocs de script, qui enregistre souvent le contournement lui-même
- Commande encodée et cradle de téléchargement, qui suivent fréquemment un contournement
Recherchez toute altération d'AMSI dans vos propres éléments de preuve avec PowerShell Parser, et consultez décoder les commandes encodées et l'obfuscation pour voir comment les couches sont déroulées.