(In)direct Syscalls: un viaje de lo alto a lo bajo
RedOps | Red Team Village | DEF CON 31
Cómo empezar
Toda la teoría y los playbooks de los ejercicios se pueden encontrar en la wiki, que junto con los POCs preparados es el corazón de este proyecto. Los POCs de los ejercicios están disponibles aquí en la página principal.
¡Feliz aprendizaje!
Daniel Feichter
Aviso legal
En primer lugar, muchas gracias a mi novia, que me ha apoyado en todo lo que hago desde hace más de 10 años. Sin su apoyo y respaldo, ninguno de mis proyectos de los últimos 10 años habría sido posible.
También gracias a mi buen amigo Andreas Clementi de AV-Comparatives, que me ha apoyado desde que nos conocimos. También gracias a mi amigo Jonas Kemmner (que es un excelente Red Teamer) por apoyarme y leer todos mis posts del blog con antelación. Estoy muy agradecido de haberme cruzado con todas estas personas increíbles.
El contenido y todos los ejemplos de código de este repositorio son solo para fines educativos y de investigación, ¡y solo deben utilizarse en un contexto ético! Los ejemplos de código no son nuevos y no pretendo que lo sean. La mayor parte del código o la base proviene, como tantas veces, de ired.team, gracias @spotheplanet por tu brillante trabajo y por compartirlo con todos nosotros. También muchas gracias a @mrexodia por tu increíble herramienta x64dbg.
Además, y muy importante, este taller no es una bala de plata en el contexto de la evasión de EDR, pero debería ayudar a entender los conceptos básicos de Win32 APIs, Native APIs, direct syscalls e indirect syscalls y un poco sobre call stacks en el contexto de la ejecución de shellcode y la evasión de EDR, ni más ni menos. El objetivo de este taller no es mostrar las opciones más sigilosas ni los POCs más complejos para syscalls directas e indirectas, sino centrarme en enseñar los conceptos básicos. Esto significa usar la menor cantidad de herramientas posible y hacer tanto trabajo manual como sea posible.
Quiero agradecer a todos aquellos miembros de la comunidad de la infosec que han investigado, dado forma y continúan investigando el tema de las syscalls, las llamadas directas al sistema y las syscalls indirectas, etc.
Créditos y referencias
| Usuario de Twitter | Contribución e investigación |
|---|
| @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 | Todo su increíble blog e investigación https://www.ired.team/ |
| @NinjaParanoid | Por sus blogs, investigaciones, cursos y por responder siempre a mis preguntas. https://0xdarkvortex.dev/hiding-in-plainsight/ https://0xdarkvortex.dev/proxying-dll-loads-for-hiding-etwti-stack-tracing/ |
| @ShitSecure | Por su investigación, su blog https://s3cur3th1ssh1t.github.io/ y por la gran discusión sobre EDR, syscalls, etc. |
| @AliceCliment | Por su blog, investigación y las discusiones sobre EDR, 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 | Por su investigación general, sus contribuciones a la infosec, su ayuda a los nuevos miembros de la comunidad y el avance continuo de la infosec https://0xboku.com/ https://github.com/boku7/AsmHalosGate https://github.com/boku7/HellsGatePPID https://github.com/boku7/halosgate-ps |
| @Jackson_T | Por su investigación y las herramientas SysWhispers y SysWhispers2 https://github.com/jthuraisamy/SysWhispers) https://github.com/jthuraisamy/SysWhispers2 |
| @KlezVirus | Por su blog, investigación, grandes discusiones sobre EDR, syscalls, etc. y 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 y 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 y MarioBartolome | https://github.com/crummie5/FreshyCalls |
Recursos adicionales
- 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/