(In)direct Syscalls : un voyage du haut vers le bas
RedOps | Red Team Village | DEF CON 31
Pour commencer
Toute la théorie et les playbooks des exercices se trouvent dans le wiki, qui, avec les POCs préparés, constitue le cœur de ce projet. Les POCs des exercices sont disponibles ici sur la page principale.
Bon apprentissage !
Daniel Feichter
Avertissement
Tout d'abord, un grand merci à ma compagne, qui me soutient dans tout ce que je fais depuis plus de 10 ans maintenant ! Sans son soutien et son appui, aucun de mes projets de ces 10 dernières années n'aurait été possible.
Merci également à mon bon ami Andreas Clementi d'AV-Comparatives, qui me soutient depuis notre première rencontre. Merci aussi à mon ami Jonas Kemmner (qui est un excellent Red Teamer) pour son soutien et pour avoir lu tous mes articles de blog à l'avance. Je suis très reconnaissant d'avoir croisé la route de toutes ces personnes formidables.
Le contenu et tous les exemples de code de ce dépôt sont uniquement destinés à des fins éducatives et de recherche et ne doivent être utilisés que dans un contexte éthique ! Les exemples de code ne sont pas nouveaux et je ne prétends pas qu'ils le soient. La plupart du code, ou sa base, provient, comme souvent, d'ired.team, merci @spotheplanet pour votre travail brillant et pour l'avoir partagé avec nous tous. Merci également à @mrexodia pour votre formidable outil x64dbg.
De plus, et c'est très important, cet atelier n'est pas une solution miracle dans le contexte de l'évasion EDR, mais il devrait aider à comprendre les bases de Win32 APIs, Native APIs, direct syscalls et indirect syscalls, et un peu sur les call stacks dans le contexte de l'exécution de shellcode et de l'évasion EDR, ni plus ni moins. Le but de cet atelier n'est pas de montrer les options les plus furtives ni les POCs les plus complexes pour les syscalls directs et indirects ; je me concentrerai plutôt sur l'enseignement des bases. Cela signifie utiliser le moins d'outils possible et faire autant de travail manuel que possible.
Je tiens à remercier tous les membres de la communauté infosec qui ont recherché, façonné et continuent de rechercher le sujet des syscalls, des appels système directs, des syscalls indirects, etc.
Crédits et références
| Pseudo Twitter | Contribution et recherche |
|---|
| @Cneelis | https://outflank.nl/blog/2019/06/19/red-team-tactics-combining-direct-system-calls-and-srdi-to-bypass-av-edr/ https://github.com/outflanknl/Dumpert |
| @spotheplanet | Son excellent blog et l'ensemble de ses recherches https://www.ired.team/ |
| @NinjaParanoid | Pour ses blogs, ses recherches, ses cours et pour avoir toujours répondu à mes questions. https://0xdarkvortex.dev/hiding-in-plainsight/ https://0xdarkvortex.dev/proxying-dll-loads-for-hiding-etwti-stack-tracing/ |
| @ShitSecure | Pour ses recherches, son blog https://s3cur3th1ssh1t.github.io/ et pour la grande discussion sur les EDR, les syscalls, etc. |
| @AliceCliment | Pour son blog, ses recherches et les discussions sur les EDR, les syscalls, etc. https://alice.climent-pommeret.red/posts/how-and-why-to-unhook-the-import-address-table/ https://alice.climent-pommeret.red/posts/a-syscall-journey-in-the-windows-kernel/ https://alice.climent-pommeret.red/posts/direct-syscalls-hells-halos-syswhispers2/ |
| @0xBoku | Pour ses recherches globales, ses contributions à l'infosec, son aide aux nouveaux membres de la communauté et l'avancement continu de l'infosec https://0xboku.com/ https://github.com/boku7/AsmHalosGate https://github.com/boku7/HellsGatePPID https://github.com/boku7/halosgate-ps |
| @Jackson_T | Pour ses recherches et les outils SysWhispers et SysWhispers2 https://github.com/jthuraisamy/SysWhispers) https://github.com/jthuraisamy/SysWhispers2 |
| @KlezVirus | Pour son blog, ses recherches, d'excellentes discussions sur les EDR, les syscalls, etc., et SysWhispers3 https://github.com/klezVirus/SysWhispers3 https://klezvirus.github.io/RedTeaming/AV_Evasion/NoSysWhisper/ https://github.com/klezVirus/SilentMoonwalk |
| @j00ru | https://j00ru.vexillium.org/syscalls/nt/64/ |
| @modexpblog | https://www.mdsec.co.uk/2020/12/bypassing-user-mode-hooks-and-direct-invocation-of-system-calls-for-red-teams/ |
| @netero_1010 | https://www.netero1010-securitylab.com/evasion/indirect-syscall-in-csharp) |
| @CaptMeelo | https://captmeelo.com/redteam/maldev/2021/11/18/av-evasion-syswhisper.html |
| Paul Laîné @am0nsec et smelly__vx @RtlMateusz | https://github.com/am0nsec/HellsGate/tree/master |
| @mrd0x | https://github.com/Maldev-Academy/HellHall |
| @SEKTOR7net | https://blog.sektor7.net/#!res/2021/halosgate.md |
| @D1rkMtr | https://github.com/TheD1rkMtr/D1rkLdr |
| @trickster012 | https://github.com/trickster0/TartarusGate |
| @thefLinkk | https://github.com/thefLink/RecycledGate |
| @ElephantSe4l et MarioBartolome | https://github.com/crummie5/FreshyCalls |
Autres ressources
- Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7th Edition) by Pavel Yosifovich, David A. Solomon, and Alex Ionescu
- Windows Internals, Part 2 (7th Edition) by Pavel Yosifovich, David A. Solomon, and Alex Ionescu
- https://offensivecraft.wordpress.com/2022/12/08/the-stack-series-return-address-spoofing-on-x64/
- https://offensivecraft.wordpress.com/2023/02/11/the-stack-series-the-x64-stack/
- https://winternl.com/detecting-manual-syscalls-from-user-mode/