NovaLdr ⚜️
NovaLdr è un Module Stomping senza thread scritto in Rust, progettato come progetto di apprendimento durante l'esplorazione del mondo dello sviluppo di malware. Utilizza tecniche avanzate come syscall indiretti e crittografia delle stringhe per raggiungere le sue funzionalità. Questo progetto non intende essere un prodotto completo o rifinito, ma piuttosto un viaggio negli aspetti tecnici del malware, mostrando varie tecniche e caratteristiche.
Panoramica delle Funzionalità 💡
- Syscall Indiretti
- Cifratura delle stringhe
- Cifratura dello shellcode: semplice XOR e conversione dei byte dello shellcode in indirizzi MAC
- Esecuzione senza thread
- Inject senza thread: Scrive un trampolino in una funzione specificata all'interno di una data DLL e la reindirizza per caricare un'altra DLL.
- JMPThreadHijack: Dirotta un thread senza chiamare SetThreadContext. Necessita ancora di miglioramenti perché sono pigro e non ho implementato bene il tutto per mantenere la funzionalità originale del thread. Solo un PoC veloce e sporco (Attenzione al controllo dell'esecuzione del payload. I browser tendono ad eseguire il payload più volte)
- Unlink del modulo
- Sovrascrive i byte magici dell'header DOS.
- Cancella gli indirizzi base delle DLL dal processo target.
- Elimina le stringhe dei nomi delle DLL dal processo target.
- Scollega un modulo dalla lista dei moduli
- Avvio di un processo: avvio di un processo sospeso con NtCreateUserProcess e spoofing del PPID e impostazione del processo per bloccare le DLL
- Unhooking di Ntdll: Unhooking remoto e locale di Ntdll utilizzando la tecnica Fart di Parun
- Nessun GetModuleHandleA e GetProcAddress: Funzione personalizzata che utilizza funzioni NT
- Sleep Encrypt: funzione di sleep personalizzata che crittografa lo stack durante la durata del sonno utilizzando un thread separato.
- HWBP: Bypass Patchless di AMSI + ETW nel processo con HWBP su tutti i thread.
Utilizzo 🛠️
- Genera file 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
- Crittografa il file shellcode e convertilo in formato indirizzo MAC
python bin2mac.py Nova_MSG.bin > nova_msg.txt
- Copia il contenuto del file di output e incollalo nel file main.rs
- Compila il programma eseguendo il file
compile.bat
Dichiarazione di non responsabilità 📢
NovaLdr è destinato solo a scopi educativi e di ricerca. L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo programma. Richiedi sempre il permesso prima di testarlo contro qualsiasi target.
Contribuire 📈
Poiché questo progetto è un percorso di apprendimento, contributi, suggerimenti e miglioramenti sono benvenuti per rendere NovaLdr una risorsa preziosa per l'apprendimento dello sviluppo di malware in Rust.
Risorse e Crediti 📍
POC

PE-SIEVE
