Dans une rĂ©cente analyse publiĂ©e par Palo Alto / Unit42, un tutoriel met en lumiĂšre un exemple de Donut Shellcode et son mĂ©canisme PC-relative addressing. Autrement dit, un code qui sait se dĂ©placer sans carte routiĂšre, toujours capable de retrouver ses ressources, peu importe oĂč il atterrit en mĂ©moire.
Et pour les analystes, câest un bon exercice : on y passe par la statique (IDA Pro, dnSpy) et la dynamique (x64dbg, Process Hacker), histoire de dĂ©monter le donut couche par couche.
Bienvenue dans lâĂšre oĂč les malwares se cuisinent comme des donuts industriels : rapide, sucrĂ© pour les attaquants, indigeste pour les Ă©quipes SOC. Le framework Donut nâa rien dâune sucrerie, mais dâun gĂ©nĂ©rateur de shellcode qui transforme nâimporte quel exĂ©cutable Windows en payload injectable en mĂ©moire. RĂ©sultat ? Pas de fichier sur disque, pas de signature facile Ă choper, et une migraine carabinĂ©e pour les blue teams.
Lien vers l’article complet : A Mega Malware Analysis Tutorial Featuring Donut-Generated Shellcode
đ Lâanatomie dâun donut malveillant
LâĂ©chantillon observĂ© commence par une fonction mystĂ©rieuse, sub_10A31A, qui Ă premiĂšre vue ressemble Ă un banal bloc dâassembleur. En creusant, on dĂ©couvre une astuce classique du shellcode :
call $+5 â saute Ă lâinstruction suivante,pop eax â rĂ©cupĂšre lâadresse de retour dansÂeax,sub eax, <offset> â ajuste pour obtenir lâadresse rĂ©elle du code.
đ RĂ©sultat : le code obtient sa propre position en mĂ©moire et sâen sert comme base pour retrouver ses ressources. Pas besoin de hardcoder une adresse qui changerait dâun process Ă lâautre. Malin, mais pas nouveau : les rootkits des annĂ©es 2000 faisaient dĂ©jĂ la mĂȘme tambouille.
đŒïž Petit dĂ©tour par le code đ©đ§
Voici la fonction en question, telle quâelle apparaĂźt une fois dĂ©sassemblĂ©e :

Ce quâon voit ici (source : Unit42)
- đÂ
sub_10A31A() â la fameuse fonction qui renvoie sa propre adresse pour servir de base aux offsets. - đÂ
memcpy(amsi_scan_buffer, v5 - 8767, 12) â une copie malveillante qui Ă©crase la fonction AmsiScanBuffer. - đ Le tout enveloppĂ© dans un joliÂ
VirtualProtect(..., RWX) â on change les droits mĂ©moire pour Ă©crire du code exĂ©cutable dans un buffer qui ne devrait jamais lâĂȘtre.
đ En clair : le malware patch AMSI en live, ce qui lui permet de passer sous les radars Windows Defender comme un voleur qui coupe le fil de lâalarme avant de cambrioler.
âïž Techniques MITRE en action
Le shellcode Donut coche plusieurs cases bien connues du MITRE ATT&CK :
- đŻÂ [T1055] Process Injection : le code se cale dans la mĂ©moire dâun process lĂ©gitime et sâexĂ©cute incognito.
- đ§Â [T1106] Native API : rĂ©solution dynamique des API Windows, classique mais toujours efficace.
- đĄïžÂ [T1562.001] Impair Defenses : on patch lâAMSI en mĂ©moire pour que Windows ferme les yeux sur lâinfection.
- đ [T1059] Command & Scripting Interpreter : pas de fichier, tout passe en mĂ©moire â le rĂȘve humide des attaquants.
Bref, du dĂ©jĂ -vu, mais combinĂ© dans un petit package bien rĂŽdĂ©, prĂȘt Ă ĂȘtre servi.
đ§âđ» Les outils du bon analyste
Lâarticle insiste sur un point que tout analyste junior doit retenir : statique et dynamique sont complĂ©mentaires.
- IDA Pro đ ïž pour cartographier les instructions,
- dnSpy pour dĂ©cortiquer lâĂ©ventuel code .NET,
- x64dbg pour voir le shellcode sâanimer en direct,
- Process Hacker pour observer les manipulations mémoire.
MoralitĂ© : mĂȘme un donut bien glacĂ© finit par fondre sous une loupe et une bonne dose de patience. đ©đŹ
đ Quand la recherche rencontre le terrain
Sur le papier, ces analyses semblent acadĂ©miques. Mais dans la vraie vie ? Les campagnes rĂ©centes de ransomware Clopou LockBit utilisent exactement ce type de techniques pour injecter leurs payloads sans bruit. On a mĂȘme vu du Donut ou des Ă©quivalents maison dans :
- des exploits 0-day Exchange,
- des kits dâattaque distribuĂ©s sur Telegram,
- des charges finales de botnets comme Qakbot ou IcedID.
â ïž Autrement dit : ce nâest pas un tuto pour nerds, câest une rĂ©alitĂ© quotidienne pour les SOC.
đ€Ą Quand les skids jouent aux pentesters
Autre problĂšme : Donut est open source. Initialement pensĂ© pour les Red Teams et les tests de sĂ©cu, il est aujourdâhui repris par tout script-kiddie qui sait lancer un donut.exe payload.dll.
Résultat :
- đ„ Les pentesters sĂ©rieux sâen servent pour des dĂ©mos contrĂŽlĂ©es.
- đ Les cybercriminels sâen servent pour dĂ©ployer du voleur de mots de passe en 2 clics.
- đ Les Ă©quipes de dĂ©fense, elles, mangent des nuits blanches.
Un peu comme Metasploit, devenu Ă la fois lâoutil de formation des RSSI et le couteau suisse des gangs cyber.
đ Les IoCs du donut du jour
Unit42 fournit quelques indicateurs de compromission Ă surveiller :
- đ§©Â Hash SHA256Â :
d2bea59a4fc304fa0249321ccc0667f595f0cfac64fd0d7ac09b297465cda0c4 - đ Fichier : shellcode Donut dĂ©chiffrĂ© (1,09 MB, type Data).
â ïž Comme toujours, un hash seul ne sauvera pas votre SI, mais il peut sauver un analyste dâun cafĂ© de plus Ă 3h du matin.
đĄïž DĂ©fenses et contre-mesures
Les produits Palo Alto (WildFire, Cortex XDR, DNS Security, etc.) sont Ă©videmment citĂ©s comme boucliers â pub oblige. Mais en vrai, que faire cĂŽtĂ© blue team ?
- â DĂ©tecter les sĂ©quences call/pop typiques du shellcode.
- â Monitorer les appels aux API natives Windows.
- â Surveiller la dĂ©sactivation dâAMSI (si AMSI est dĂ©sactivĂ©, ce nâest jamais un bon signe).
- â DĂ©ployer de la tĂ©lĂ©metrie mĂ©moire (EDR, XDR) pour voir ce qui sâexĂ©cute en RAM.
En clair : il faut arrĂȘter de croire que les signatures AV suffisent. Le shellcode est un camĂ©lĂ©on. đŠ
đ„Ż Conclusion : Donut, la junk-food des malwares
Le message est simple : Donut nâest pas une nouveautĂ©, mais il simplifie et industrialise lâinjection mĂ©moire. Câest la fast-food du malware : rapide, accessible, et dangereuse Ă long terme pour la santé⊠des SI.
đ Et la cerise sur le donut ?
Les attaquants nâont mĂȘme plus besoin dâĂȘtre des ingĂ©nieurs systĂšme pour exĂ©cuter du code en mĂ©moire. Ils ont juste besoin dâun gĂ©nĂ©rateur et dâun tuto trouvĂ© sur GitHub.
Résultat : le SOC devient la brigade anti-obésité numérique, forcée de courir aprÚs chaque nouvelle friture logicielle.
Alors, la prochaine fois que vous entendez parler de Donut shellcode, souvenez-vous : ce nâest pas une friandise, mais une bombe calorique servie dans un binaire. đ©đŁ
