This review is in french because the book only exists in french đ

Jâavais vu lâannonce de ce livre Ă en septembre 2023 via LinkedIn et je lâavais commandĂ© sur Amazon en me disant que je le lirai plus tard. Etant coincĂ© chez moi toute la semaine Ă cause dâun mal de dos Ă©pouvantable, jâen ai profitĂ© pour dĂ©vorer cet ouvrage en quelques heures.
Cet ouvrage est lâoeuvre de Hugo BITARD, docteur en Physique qui est ensuite tombĂ© dans la cyber sĂ©curitĂ© en 2018, et qui reste trĂšs discret sur les rĂ©seaux sociaux (X, LinkedIn âŠ). Il a pour but de donner au lecteur des bases et exemples concrets sur diffĂ©rentes mĂ©thodes dâobscurcissement (obfuscation) et dâinjection de code, et sur le fonctionnement des shellcodes, tout ça en assembleur 64 bits.
Voici un aperçu de la table des matiÚres :
- Introduction
- 1.1 â Pourquoi coder en assembleur
- 1.2 â Notions de base
- 1.3 â Mise en place dâun environnement de test
- Premiers pas en assembleur
- 2.1 â Mon premier programme â Linux
- 2.2 â Mon premier programme â Windows
- 2.3 â Hello World â Linux
- 2.4 â Hello World â Windows
- 2.5 â Hello World, un dĂ©but dâobscurcissement
- 2.6 â Reverse Shell TCP â Linux
- 2.7 â Reverse Shell TCP â Windows
- 2.8 â Communication inter-processus â Windows
- 2.9 â Conclusion
- 2.10 â Annexe
- Format de fichier éxecutable
- 3.1 â Structure dâun PE
- 3.2 â DĂ©veloppement dâun PE avec NASM â Linux
- 3.3 â DĂ©veloppement dâune DLL avec MASM â Windows
- 3.4 â DĂ©veloppement dâun service avec MASM â Windows
- 3.5 â Conclusion
- Obscurcissement
- 4.1 â Chevauchement de code
- 4.2 â Une autre façon dâutiliser le mnĂ©monique RET
- 4.3 â Utilisation du Thread Local Storage (TLS)
- 4.4 â Utilisation de la gestion des exceptions
- 4.5 â Appel indirect de fonction
- 4.6 â Recherche dâadresses de fonctions via leurs nombres ordinaux
- 4.7 â Trouver les adresses de LoadLibrary() et GetProcAddress()
- 4.8 â Recherche dâadresses de fonctions via leurs condensats
- 4.9 â VĂ©rification des indicateurs de NtGlobalFlag
- 4.10 â Utilisation de la fonction IsDebuggerPresent()
- 4.11 â Process Masquerading
- 4.12 â Parent PID Spoofing
- 4.13 â Lâutilisation dâencideur
- 4.14 â Conclusion
- Injection de Code
- 5.1 â Injection de DLL via la fonction CreateRemoteThread()
- 5.2 â Injection de DLL via la fonction NtCreateThreadEx()
- 5.3 â Injection de DLL via la fonction RtlCreateUserThread()
- 5.4 â Injection de DLL par la mĂ©thode des âdirect SYSCALLâ
- 5.5 â Injection de DLL via la fonction QueueUserAPC()
- 5.6 â Injection de code via la fonction SetThreadContext()
- 5.7 â Injection de code via la mĂ©thode Process Hollowing
- 5.8 â Injection de code via la mĂ©thode Early Bird
- 5.9 â Mise en place de hook via la fonction SetWindowsHookExA()
- 5.10 â Injection de code Ă lâaide de hook dans lâIAT
- 5.11 â Conclusion
- Développement et analyse de code auto-suffisant : shellcode
- 6.1 â Execution de shellcode
- 6.2 â Reverse Engineering de shellcode
- 6.3 â MĂ©thode de dĂ©veloppement
- 6.4 â Conclusion
Dans le premier chapitre, lâauteur nous rappelle les bases de lâassembleur et ses instructions et explique comment mettre en place lâenvironnement de dĂ©veloppement qui sera utilisĂ© pour mettre en pratique tous les exemples du livre (en gros une VM Windows avec VS Code et MASM). Bien quâassez dĂ©taillĂ©, le rappel des bases de lâassembleur implique que vous ayez dĂ©jĂ une idĂ©e de comment ça fonctionne.
Dans le deuxiĂšme chapitre, lâauteur nous lance de le grand bain, on commence les premiers programmes en 100% assembleur, dâabord un simple affichage Ă©cran, jusquâĂ un reverse shell TCP. Tout est trĂšs clair.
Dans le troisiĂšme chapitre, on y apprends comment un PE est structurĂ©, encore une fois câest un rappel et il est quand mĂȘme conseillĂ© dâavoir une vague idĂ©e de la chose avant dâattaquer le livre.
QuatriĂšme chapitre, câest parti. Outre quelques mĂ©thode dâobscurcissement, on y voit comment appeler des fonctions sans quâelles apparaissent dans les imports, ainsi que plein dâautres mĂ©thodes pour rendre lâanalyse du code plus compliquĂ©e, sachant que ces mĂ©thodes sont retrouvĂ©es dans la grande majoritĂ© des malwares actuels, il est extrĂȘmement important de comprendre comment elles fonctionnes.
CinquiĂšme chapitre, ou comment executer notre code sans se faire dĂ©tecter par les anti-virus (et certains EDR). Pleins de mĂ©thodes sont expliquĂ©es en dĂ©tails, et le code source est fourni. La courbe dâapprentissage est excellente, on commence par des exemples basiques et on progresse vers des mĂ©thodes plus compliquĂ©es et exotiques, nĂ©anmoins efficaces et quâon retrouvera dans plein de malwares actuels.
SixiĂšme chapitre, pas envie de crĂ©e un PE complet ? Voyons comment crĂ©er un shellcode et lâinjecter discrĂštement dans un autre processus pour rester en dessous du radar. Encore une fois la courbe dâapprentissage est excellente, les premiers exemples sont simples, les derniers plus complets, ouvrants la porte Ă plein de possibilitĂ©s !
Jâai trouvĂ© quelques fautes de frappes au long du livre, mais rien de terrible (et jâai oubliĂ© de noter oĂč âŠ).
Pour celles et ceux qui ont la flemme de tout taper, on retrouve les sources du livres sur le GitHub de JarVices.
En conclusion : un excellent ouvrage technique dans la langue de MoliĂšre, BRAVO !