NovaLdr ⚜️
NovaLdr é um Threadless Module Stomping escrito em Rust, projetado como um projeto de aprendizado enquanto explora o mundo do desenvolvimento de malware. Utiliza técnicas avançadas como syscalls indiretos e criptografia de strings para alcançar suas funcionalidades. Este projeto não pretende ser um produto completo ou polido, mas sim uma jornada pelos aspectos técnicos do malware, exibindo várias técnicas e recursos.
Visão Geral das Funcionalidades 💡
- Syscalls Indiretos
- Criptografia de strings
- Criptografia de shellcode: XOR simples e conversão dos bytes do shellcode em endereço MAC
- Execução Threadless
- Threadless inject: Escreve um trampolim em uma função específica dentro de uma DLL e a redireciona para carregar outra DLL.
- JMPThreadHijack: Sequestra uma thread sem chamar SetThreadContext. Ainda precisa de melhorias porque sou preguiçoso e não implementei tudo bem o suficiente para manter a funcionalidade original da thread. Apenas um PoC rápido e sujo (Cuidado com o controle de execução do payload. Navegadores tendem a executar o payload várias vezes)
- Desvinculação de Módulo
- Sobrescreve os bytes mágicos do cabeçalho DOS.
- Limpa os endereços base das DLLs do processo alvo.
- Elimina as strings de nome das DLLs do processo alvo.
- Desvincula um módulo da lista de módulos
- Criação de Processo: criar processo suspenso com NtCreateUserProcess, falsificar o PPID e definir o processo para Bloquear DLL
- Ntdll Unhooking: Unhooking remoto e local do Ntdll usando a técnica Fart de Parun
- Sem GetModuleHandleA e GetProcAddress: Função personalizada que usa funções NT
- Sleep Encrypt: função de sono personalizada que criptografa a pilha durante a duração do sono usando uma thread separada.
- HWBP: Bypass de AMSI + ETW sem patch no processo com HWBP em todas as threads.
Uso: 🛠️
- Generate Shellcode file:
msfvenom -p windows/x64/messagebox TITLE=NovaLdr TEXT='In memory of all those murdered in the Nova party massacre 7.10.2023' ICON=WARNING EXITFUNC=thread -b '\xff\x00\x0b' -f raw -e none -o Nova_MSG.bin
- Encrypt the shellcode file and convert it to MAC address format
python bin2mac.py Nova_MSG.bin > nova_msg.txt
- Copie o conteúdo do arquivo de saída e cole no arquivo main.rs
- Compile o programa apenas executando o arquivo
compile.bat
Aviso Legal 📢
NovaLdr é destinado apenas para fins educacionais e de pesquisa. O autor não se responsabiliza por qualquer uso indevido ou dano causado por este programa. Sempre busque permissão antes de testá-lo contra qualquer alvo.
Contribuindo 📈
Como este projeto é uma jornada de aprendizado, contribuições, sugestões e melhorias são bem-vindas para tornar o NovaLdr um recurso valioso para aprender desenvolvimento de malware em Rust.
Recursos e Créditos 📍
POC

PE-SIEVE
