NovaLdr: Threadless Module Stomping In Rust

NovaLdr

NovaLdr is a Threadless Module Stomping written in Rust, designed as a learning project while exploring the world of malware development. It uses advanced techniques like indirect syscalls and string encryption to achieve its functionalities. This project is not intended to be a complete or polished product but rather a journey into the technical aspects of malware, showcasing various techniques and features.

Features Overview

  • Idirect Sycalls
  • String encryption
  • Shellcode encryption: simple XOR and converting the Shellcode bytes into MAC address
  • Threadless Execution
    • Threadless inject: Writes a trampoline into a specified function within a given DLL and redirects it to load another DLL.
    • JMPThreadHijack: Hijack a thread without calling SetThreadContext. Still needs improvement because I’m lazy and haven’t implemented the whole thing well enough to maintain the original functionality of the thread. Just a quick and dirty PoC (Beware of payload execution control. Browsers tend to execute the payload multiple times)
  • Module Unlink
    • Overwrites the DOS header magic bytes.
    • Clears the DLL base addresses from the target process.
    • Eliminates DLL name strings from the target process.
    • Unlinks a module from the module list
  • Spawning Process: spawning suspended process with NtCreateUserProcess and Spoofing the PPID and Setting the process to Block DLL
  • Ntdll Unhooking: Remote and local Ntdll Unhooking using Parun’s Fart technique
  • No GetModuleHandleA & GetProcAddress: Custome Function that using NT functions
  • Sleep Encrypt: custom sleep function that encrypts the stack during its sleep duration using a separate thread.

Download

git clone https://github.com/BlackSnufkin/NovaLdr.git

Use

  • 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
  • Copy the content of the output file and paste it to the main.rs file
  • Compile the program just run the file compile.bat

Copyright (C) 2023 BlackSnufkin 

Source: https://github.com/BlackSnufkin/