nim-loader
uma aventura muito preliminar e em andamento para aprender Nim, juntando recursos para criar um loader de shellcode que implementa técnicas comuns de evasão de EDR/AV.
Isso é uma bagunça e é apenas para fins de pesquisa! Por favor, não espere que compile e execute sem suas próprias modificações.
Instruções
- Substitua o array de bytes em
loader.nim pelo seu próprio shellcode x64
- Compile o EXE e execute-o:
nim c -d:danger -d:strip --opt:size "loader.nim"
- Provavelmente ajuste em qual processo você deseja injetar, olhando nos arquivos .nim da pasta do método de injeção que você está usando...
Funcionalidades Concluídas
- Syscalls diretos resolvidos dinamicamente da NTDLL (Agradecimentos @ShitSecure)
- Patching de AMSI e ETW (Agradecimentos @byt3bl33d3r)
- Desenganchamento da NTDLL (Agradecimentos @MrUn1k0d3r)
- Injeção CreateRemoteThread (Agradecimentos @byt3bl33d3r, @ShitSecure)
Funcionalidades em Andamento
- Técnica de Process Hollowing (Agradecimentos @snovvcrash)
- Criptografia/descriptografia de shellcode usando [AES em modo CTR](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_(CTR) (Agradecimentos @snovvcrash)
- Substituir todas as chamadas de API compatíveis por syscalls
- Adicionar gerador e compilador de template, argumentos de linha de comando para shellcode, métodos de injeção, caminhos de processo, etc.
Ofuscação
- Considere usar denim por @LittleJoeTables para suporte de compilação Nim com obfuscator-llvm!
Referências e Inspiração
- OffensiveNim por Marcello Salvati (@byt3bl33d3r)
- NimlineWhispers2 por Alfie Champion (@ajpc500)
- SysWhispers3 por klezVirus (@KlezVirus)
- NimPackt-v1 por Cas van Cooten (@chvancooten)
- unhook_bof.c por Mr. Un1k0d3r (@MrUn1k0d3r)
- NimGetSyscallStub por S3cur3Th1sSh1t (@ShitSecure)
- NimHollow por snovvcrash (@snovvcrash)
Exemplos