NovaLdr ⚜️
NovaLdr は Rust で書かれたスレッドレスモジュールストンピングであり、マルウェア開発の世界を探求する学習プロジェクトとして設計されています。間接システムコールや文字列暗号化などの高度な技術を使用して機能を実現しています。このプロジェクトは完成品や洗練された製品を意図しておらず、むしろマルウェアの技術的側面への旅であり、さまざまな技術と機能を示すものです。
機能概要 💡
- 間接システムコール
- 文字列暗号化
- シェルコード暗号化: シンプルな XOR と、シェルコードバイトを MAC アドレスに変換
- スレッドレス実行
- Threadless inject: 指定された DLL 内の特定の関数にトランポリンを書き込み、別の DLL をロードするようにリダイレクトします。
- JMPThreadHijack: SetThreadContext を呼び出さずにスレッドをハイジャックします。スレッドの本来の機能を維持するための実装が十分でないため、改善の余地があります。手早く汚い PoC です(ペイロード実行制御に注意。ブラウザはペイロードを複数回実行する傾向があります)。
- モジュールアンリンク
- DOS ヘッダーのマジックバイトを上書きします。
- ターゲットプロセスから DLL ベースアドレスをクリアします。
- ターゲットプロセスから DLL 名の文字列を削除します。
- モジュールリストからモジュールをアンリンクします。
- プロセス生成: NtCreateUserProcess で中断状態のプロセスを生成し、PPID を偽装し、プロセスを DLL ブロックに設定します。
- Ntdll アンフック: Parun の Fart 技術を使用したリモートおよびローカルの Ntdll アンフック
- GetModuleHandleA と GetProcAddress を使用しない: NT 関数を使用するカスタム関数
- Sleep 暗号化: 別スレッドを使用してスリープ中にスタックを暗号化するカスタムスリープ関数
- HWBP: 全スレッドに HWBP を使用したインプロセス Patchless AMSI + ETW バイパス
使い方 🛠️
- シェルコードファイルを生成:
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
- シェルコードファイルを暗号化し、MAC アドレス形式に変換します
python bin2mac.py Nova_MSG.bin > nova_msg.txt
- 出力ファイルの内容をコピーして main.rs ファイルに貼り付けます
- プログラムをコンパイルするには
compile.bat を実行するだけです
免責事項 📢
NovaLdr は教育および研究目的のみを意図しています。作者はこのプログラムの誤用や損害について一切の責任を負いません。ターゲットに対してテストする前に、必ず許可を得てください。
貢献 📈
このプロジェクトは学習の旅であるため、NovaLdr を Rust でのマルウェア開発学習の貴重なリソースとするための貢献、提案、改善を歓迎します。
リソースとクレジット 📍
POC

PE-SIEVE
