nim-loader
une aventure très rudimentaire d'apprentissage de Nim en rassemblant des ressources pour créer un chargeur de shellcode qui implémente des techniques courantes d'évasion EDR/AV.
Ceci est un bazar et est uniquement à des fins de recherche ! Ne vous attendez pas à ce qu'il compile et s'exécute sans vos propres modifications.
Instructions
- Remplacez le tableau d'octets dans
loader.nim par votre propre shellcode x64
- Compilez l'EXE et exécutez-le :
nim c -d:danger -d:strip --opt:size "loader.nim"
- Ajustez probablement le processus dans lequel vous souhaitez injecter en consultant les fichiers .nim du dossier d'injection selon la méthode que vous utilisez...
Fonctionnalités terminées
- Appels système directs résolus dynamiquement depuis NTDLL (Merci @ShitSecure)
- Patches d'AMSI et ETW (Merci @byt3bl33d3r)
- Décrochage de NTDLL (Merci @MrUn1k0d3r)
- Injection CreateRemoteThread (Merci @byt3bl33d3r, @ShitSecure)
Fonctionnalités en cours
- Technique de Process Hollowing (Merci @snovvcrash)
- Chiffrement/déchiffrement du shellcode avec [AES en mode CTR](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_(CTR) (Merci @snovvcrash)
- Remplacer tous les appels API compatibles par des syscalls
- Ajouter un générateur de modèles et un compilateur, des arguments en ligne de commande pour le shellcode, les méthodes d'injection, les chemins de processus, etc.
Obfuscation
- Pensez à utiliser denim par @LittleJoeTables pour la compilation Nim avec obfuscator-llvm !
Références et inspiration
- OffensiveNim par Marcello Salvati (@byt3bl33d3r)
- NimlineWhispers2 par Alfie Champion (@ajpc500)
- SysWhispers3 par klezVirus (@KlezVirus)
- NimPackt-v1 par Cas van Cooten (@chvancooten)
- unhook_bof.c par Mr. Un1k0d3r (@MrUn1k0d3r)
- NimGetSyscallStub par S3cur3Th1sSh1t (@ShitSecure)
- NimHollow par snovvcrash (@snovvcrash)
Exemples