🔍 Contexte
Publié sur GitHub (Whitecat18/Rust-for-Malware-Development), cet article présente un proof-of-concept (PoC) en Rust implémentant un contournement de l’Antimalware Scan Interface (AMSI) de Microsoft sans modifier un seul octet de amsi.dll.
⚙️ Mécanisme technique
La technique repose sur l’exploitation des exceptions de page mémoire gardée (Page Guard) :
- La page mémoire contenant
AmsiScanBufferest transformée en « trap » viaVirtualProtectavec le flagPAGE_GUARD. - Tout appel à
AmsiScanBufferdéclenche une violation de page gardée (exception0x80000001) avant l’exécution de la première instruction. - Un Vectored Exception Handler (VEH) intercepte cette exception et :
- Écrit
AMSI_RESULT_CLEANdans la variable résultat du caller (via déréférencement du pointeur en[Rsp+0x30]). - Simule un
retpour retourner au caller. - Réarme le piège via une exception de single-step (
0x80000004) pour le prochain appel.
- Écrit
🧩 Point critique d’implémentation
L’article souligne un gotcha critique : l’argument 6 sur la pile ([Rsp+0x30]) est un pointeur vers AMSI_RESULT, pas la valeur directe. Il faut charger le pointeur puis le déréférencer — écrire directement dans le slot de pile corrompt la pile sans affecter la variable résultat du caller.
📊 Résultat observé
AmsiScanBufferretourneHR=0x0, Result=0x0(CLEAN)- Aucune modification de
amsi.dlln’est effectuée - La technique est qualifiée de « patchless »
📌 Type d’article
Il s’agit d’une analyse technique / publication de recherche offensive visant à démontrer une technique d’évasion de défense contre AMSI, à destination de chercheurs en sécurité et développeurs de malwares.
🧠 TTPs et IOCs détectés
TTP
- T1562.001 — Impair Defenses: Disable or Modify Tools (Defense Evasion)
- T1055 — Process Injection (Defense Evasion)
Malware / Outils
- Rust AMSI Page Guard Bypass PoC (tool)
🔴 Indice de vérification factuelle : 18/100 (basse)
- ⬜ github.com — source non référencée (0pts)
- ✅ 1733 chars — texte partiel (10pts)
- ⬜ aucun IOC extrait (0pts)
- ⬜ pas d’IOC à vérifier (0pts)
- ✅ 2 TTP(s) MITRE (8pts)
- ⬜ date RSS ou approximée (0pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://github.com/Whitecat18/Rust-for-Malware-Development/tree/main/AMSI%20BYPASS/Amsi_Page_Guard_Exceptions