🔍 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 AmsiScanBuffer est transformée en « trap » via VirtualProtect avec le flag PAGE_GUARD.
  • Tout appel à AmsiScanBuffer déclenche une violation de page gardée (exception 0x80000001) avant l’exécution de la première instruction.
  • Un Vectored Exception Handler (VEH) intercepte cette exception et :
    • Écrit AMSI_RESULT_CLEAN dans la variable résultat du caller (via déréférencement du pointeur en [Rsp+0x30]).
    • Simule un ret pour retourner au caller.
    • Réarme le piège via une exception de single-step (0x80000004) pour le prochain appel.

🧩 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é

  • AmsiScanBuffer retourne HR=0x0, Result=0x0 (CLEAN)
  • Aucune modification de amsi.dll n’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