nim-loader
eine sehr grobe Work-in-Progress-Reise, um Nim zu lernen, indem Ressourcen zusammengestellt werden, um einen Shellcode-Loader zu erstellen, der gängige EDR/AV-Umgehungstechniken implementiert.
Dies ist ein Chaos und dient nur zu Forschungszwecken! Bitte erwarte nicht, dass es ohne eigene Modifikationen kompiliert und läuft.
Anleitung
- Ersetze das Byte-Array in
loader.nim durch deinen eigenen x64-Shellcode
- Kompiliere die EXE und führe sie aus:
nim c -d:danger -d:strip --opt:size "loader.nim"
- Passe vermutlich an, in welchen Prozess du injizieren möchtest, indem du in die .nim-Dateien der von dir verwendeten Injektionsordner-Methode schaust...
Abgeschlossene Funktionen
- Direkte Syscalls, dynamisch von NTDLL aufgelöst (Dank an @ShitSecure)
- AMSI- und ETW-Patching (Dank an @byt3bl33d3r)
- NTDLL-Unhooking (Dank an @MrUn1k0d3r)
- CreateRemoteThread-Injection (Dank an @byt3bl33d3r, @ShitSecure)
In Arbeit befindliche Funktionen
- Process-Hollowing-Technik (Dank an @snovvcrash)
- Shellcode-Verschlüsselung/-Entschlüsselung mittels [AES im CTR-Modus](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_(CTR) (Dank an @snovvcrash)
- Ersetzen aller kompatiblen API-Aufrufe durch Syscalls
- Hinzufügen eines Vorlagengenerators und Compilers, Kommandozeilenargumente für Shellcode, Injektionsmethoden, Prozesspfade usw.
Verschleierung
- Erwäge die Verwendung von denim von @LittleJoeTables für die Obfuscator-llvm-Nim-Kompilierung!
Referenzen und Inspiration
- OffensiveNim von Marcello Salvati (@byt3bl33d3r)
- NimlineWhispers2 von Alfie Champion (@ajpc500)
- SysWhispers3 von klezVirus (@KlezVirus)
- NimPackt-v1 von Cas van Cooten (@chvancooten)
- unhook_bof.c von Mr. Un1k0d3r (@MrUn1k0d3r)
- NimGetSyscallStub von S3cur3Th1sSh1t (@ShitSecure)
- NimHollow von snovvcrash (@snovvcrash)
Beispiele