<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Évasion De Défense on CyberVeille</title>
    <link>https://cyberveille.ch/tags/%C3%A9vasion-de-d%C3%A9fense/</link>
    <description>Recent content in Évasion De Défense on CyberVeille</description>
    <generator>Hugo -- 0.146.0</generator>
    <language>fr-fr</language>
    <copyright>Cyberveille CC BY-NC-SA 4.0</copyright>
    <lastBuildDate>Sun, 05 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://cyberveille.ch/tags/%C3%A9vasion-de-d%C3%A9fense/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PoC Rust : contournement AMSI sans patch via Page Guard sur AmsiScanBuffer</title>
      <link>https://cyberveille.ch/posts/2026-04-05-poc-rust-contournement-amsi-sans-patch-via-page-guard-sur-amsiscanbuffer/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://cyberveille.ch/posts/2026-04-05-poc-rust-contournement-amsi-sans-patch-via-page-guard-sur-amsiscanbuffer/</guid>
      <description>&lt;h2 id=&#34;-contexte&#34;&gt;🔍 Contexte&lt;/h2&gt;
&lt;p&gt;Publié sur GitHub (Whitecat18/Rust-for-Malware-Development), cet article présente un &lt;strong&gt;proof-of-concept (PoC) en Rust&lt;/strong&gt; implémentant un contournement de l&amp;rsquo;&lt;strong&gt;Antimalware Scan Interface (AMSI)&lt;/strong&gt; de Microsoft sans modifier un seul octet de &lt;code&gt;amsi.dll&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;-mécanisme-technique&#34;&gt;⚙️ Mécanisme technique&lt;/h2&gt;
&lt;p&gt;La technique repose sur l&amp;rsquo;exploitation des &lt;strong&gt;exceptions de page mémoire gardée (Page Guard)&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La page mémoire contenant &lt;strong&gt;&lt;code&gt;AmsiScanBuffer&lt;/code&gt;&lt;/strong&gt; est transformée en « trap » via &lt;code&gt;VirtualProtect&lt;/code&gt; avec le flag &lt;code&gt;PAGE_GUARD&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Tout appel à &lt;code&gt;AmsiScanBuffer&lt;/code&gt; déclenche une &lt;strong&gt;violation de page gardée&lt;/strong&gt; (exception &lt;code&gt;0x80000001&lt;/code&gt;) avant l&amp;rsquo;exécution de la première instruction.&lt;/li&gt;
&lt;li&gt;Un &lt;strong&gt;Vectored Exception Handler (VEH)&lt;/strong&gt; intercepte cette exception et :
&lt;ul&gt;
&lt;li&gt;Écrit &lt;strong&gt;&lt;code&gt;AMSI_RESULT_CLEAN&lt;/code&gt;&lt;/strong&gt; dans la variable résultat du caller (via déréférencement du pointeur en &lt;code&gt;[Rsp+0x30]&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Simule un &lt;code&gt;ret&lt;/code&gt; pour retourner au caller.&lt;/li&gt;
&lt;li&gt;Réarme le piège via une exception de &lt;strong&gt;single-step&lt;/strong&gt; (&lt;code&gt;0x80000004&lt;/code&gt;) pour le prochain appel.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-point-critique-dimplémentation&#34;&gt;🧩 Point critique d&amp;rsquo;implémentation&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;article souligne un &lt;strong&gt;gotcha critique&lt;/strong&gt; : l&amp;rsquo;argument 6 sur la pile (&lt;code&gt;[Rsp+0x30]&lt;/code&gt;) est un &lt;strong&gt;pointeur vers &lt;code&gt;AMSI_RESULT&lt;/code&gt;&lt;/strong&gt;, 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.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
