NovaLdr ⚜️
NovaLdr es un Module Stomping sin hilos escrito en Rust, diseñado como un proyecto de aprendizaje mientras se explora el mundo del desarrollo de malware. Utiliza técnicas avanzadas como syscalls indirectas y cifrado de cadenas para lograr sus funcionalidades. Este proyecto no pretende ser un producto completo o pulido, sino más bien un viaje hacia los aspectos técnicos del malware, mostrando varias técnicas y características.
Resumen de Características 💡
- Indirect Sycalls
- Cifrado de cadenas
- Cifrado de Shellcode: XOR simple y conversión de los bytes del Shellcode en direcciones MAC
- Ejecución sin Hilos
- Threadless inject: Escribe un trampolín en una función especificada dentro de un DLL dado y lo redirige para cargar otro DLL.
- JMPThreadHijack: Secuestra un hilo sin llamar a SetThreadContext. Todavía necesita mejoras porque soy perezoso y no he implementado todo lo suficientemente bien como para mantener la funcionalidad original del hilo. Solo un PoC rápido y sucio (Cuidado con el control de ejecución del payload. Los navegadores tienden a ejecutar el payload varias veces).
- Desvinculación de Módulo
- Sobrescribe los bytes mágicos del encabezado DOS.
- Limpia las direcciones base de los DLL del proceso objetivo.
- Elimina las cadenas de nombre de DLL del proceso objetivo.
- Desvincula un módulo de la lista de módulos.
- Generación de Procesos: genera un proceso suspendido con NtCreateUserProcess y suplanta el PPID y establece el proceso para Bloquear DLL.
- Desenganche de Ntdll: Desenganche remoto y local de Ntdll usando la técnica Fart de Parun.
- Sin GetModuleHandleA ni GetProcAddress: Función Custome que utiliza funciones NT.
- Sleep Encrypt: función de sleep personalizada que cifra la pila durante su duración de sueño usando un hilo separado.
- HWBP: Bypass de AMSI y ETW sin parches en proceso con HWBP en todos los hilos.
Uso: 🛠️
- Generar archivo Shellcode:
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
- Cifrar el archivo shellcode y convertirlo a formato de dirección MAC
python bin2mac.py Nova_MSG.bin > nova_msg.txt
- Copiar el contenido del archivo de salida y pegarlo en el archivo main.rs
- Compilar el programa simplemente ejecutando el archivo
compile.bat
Descargo de responsabilidad 📢
NovaLdr está destinado únicamente para fines educativos y de investigación. El autor no es responsable de ningún mal uso o daño causado por este programa. Siempre busque permiso antes de probarlo contra cualquier objetivo.
Contribuciones 📈
Dado que este proyecto es un viaje de aprendizaje, las contribuciones, sugerencias y mejoras son bienvenidas para hacer de NovaLdr un recurso valioso para aprender desarrollo de malware en Rust.
Recursos y Créditos 📍
POC

PE-SIEVE
