Face à la menace constante des groupes cybercriminels, entreprises comme administrations accordent de plus en plus d’importance à la protection des endpoints (ordinateurs, téléphones, tablettes) et s’équipent de logiciels nommés EDR (Endpoint Detection and Response). Ces programmes permettent de superviser un système en temps réel et d’analyser son activité via diverses sources d’informations fournies par le système d’exploitation. Toute exécution de code considérée comme malveillante est interrompue et les équipes de défense sont alertées. Malgré la complexité apparente de ce type de logiciel et les récentes avancées des technologies de détection, des techniques existent pour passer outre. Dans cet article, nous nous intéresserons aux méthodes permettant de contourner l’un des mécanismes de supervision les plus répandus, le userland hooking, via les appels système direct et indirect, mais également à la détection de ces tentatives d’évasion.
1. Rappel des bases
Avant de s’intéresser aux aspects purement techniques des méthodes d’évasion d’EDR via les appels système, commençons par quelques rappels élémentaires.
Avant-propos
Cet article est proposé à but exclusivement éducatif et les techniques présentées ne doivent pas être exploitées en dehors d’un contexte purement éthique. Cette synthèse porte uniquement sur les méthodes de contournement du userland hooking, une des nombreuses sources d’information dont les EDR disposent, basées sur les appels système. Je ne suis pas à l’origine des concepts et techniques présentés et je n’en revendique pas la découverte. Toutes les références qui ont pu contribuer de près ou de loin à la rédaction de cet article sont données dans la section dédiée. Je tiens à remercier leurs auteurs respectifs de permettre la diffusion de ce type de connaissances et espère, au travers de cette compilation, apporter ma pierre à...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première
[1] https://alice.climent-pommeret.red/posts/a-syscall-journey-in-the-windows-kernel
[2] https://sensepost.com/blog/2024/sensecon-23-from-windows-drivers-to-an-almost-fully-working-edr
[3] https://github.com/am0nsec/HellsGate
[4] https://blog.sektor7.net/#!res/2021/halosgate.md
[5] https://github.com/trickster0/TartarusGate
[6] https://redops.at/en/blog/exploring-hells-gate
[7] https://alice.climent-pommeret.red/posts/direct-syscalls-hells-halos-syswhispers2
[8] https://winternl.com/detecting-manual-syscalls-from-user-mode
[9] https://github.com/Maldev-Academy/HellHall
[10] https://xacone.github.io/mitigate-indirect-syscalls.html
[11] https://0xdarkvortex.dev/hiding-in-plainsight
[12] https://github.com/rad9800/TamperingSyscalls
[13] https://ethicalchaos.dev/2022/04/17/in-process-patchless-amsi-bypass
[14] https://cymulate.com/blog/blindside-a-new-technique-for-edr-evasion-with-hardware-breakpoints
[15] https://www.safebreach.com/blog/process-injection-using-windows-thread-pools/
et https://redops.at/en/blog/direct-syscalls-vs-indirect-syscalls (inspiration schémas)