Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Nemesis — .NETプロセスモニターで、ネイティブ層でCLRをフックし、リフレクティブアセンブリをメモリからダンプし、AMSI/ETWの整合性をディスク上のバイナリと比較チェックします。 | Kitploit
ツール/GitHubGitHub/zypherion-technologies/nemesis
防御ツール動的分析 (サンドボックス)メモリフォレンジックリバースエンジニアリングマルウェア分析
GitHubzypherion-technologies/nemesis

Nemesis

.NETプロセスモニターで、ネイティブ層でCLRをフックし、リフレクティブアセンブリをメモリからダンプし、AMSI/ETWの整合性をディスク上のバイナリと比較チェックします。

リポジトリを見る
4141ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Nemesis

明日アップデートをプッシュ予定。ライセンス変更と、データスティーラーに対する新たな対策をいくつか追加します。 Website Discord Telegram X

マルウェアサンプル内で jlaive のフォークを延々と見続けるのに疲れて、実行時に実際に引き裂く公開ツールが何もなかったので作った Windows ツール。

要するに、ネイティブ層で CLR をフックし、リフレクティブアセンブリロードを追跡し、メモリから直接 PE を自動ダンプする .NET プロセスモニタです。また、clr.dll の文字列パッチや直接 LoadFromBuffer の使用などの回避手法を検出しながら、元のディスク上のバイナリに対する AMSI および ETW の整合性をチェックします。

サンプルはどこで見つける? https://tria.ge をお勧めします(広告ではありません)。好きなサンプルをダウンロードして、ファミリーでフィルタリングできます。

なぜこの名前なのか?

なぜ Nemesis という名前なのか不思議に思うかもしれません。

それは、このツールの正確な目的を表しているからです。Nemesis とは、相手にとって常に挑戦であり、転落の原因となるものを意味します。それがこのプロジェクトの背後にある考え方です。

ギリシャ神話では、nemesis は神の報復の精神であり、あまりに傲慢になった者や、自分は手が届かないと思った者に報いを与える存在でした。私に言わせれば、「FUD」と自慢するマルウェアには、まさにぴったりです。

なぜこれが存在するのか

私はマルウェアアナリストです。この仕事(私にとっては趣味)を長く続けていると、同じローダーチェーンを何度も見るようになります。特に jlaive(crybat とも呼ばれる)が流行り、すべてのスクリプトキディがフォークしてからはなおさらです。

パターンは馬鹿みたいに単純ですが、対処するのは非常に面倒です:

root@kitploit:~
something.bat  →  難読化された powershell  →  csharp スタブ  →  実際のペイロード

ワードサラダに見える .bat をダブルクリックします。cmd がジャンクの壁のような powershell を起動します。powershell が .NET スタブ(aes、gzip、base64)を復号・展開します。そのスタブは amsi + etw にパッチを当て、実際の exe/dll をメモリにリフレクティブにロードします。これで完了です。有用な形でディスクに届くものは何もありません。

それが私を悩ませました。この特定のチェーンをフックし、.NET ペイロードが実際に現れる場所を捉え、プロセスが自滅する前にダンプし、これらのスタブが常に行う amsi/etw のパッチをキャッチする、優れた公開ツールは実際にはありませんでした。そこで Nemesis を作りました。

銀の弾丸ではありません。サンドボックスの代わりにはなりません。しかし、テストボックス上の疑わしい .bat に対して実際に実行し、アーティファクトを抽出するための現実的なものを提供します。

実際の動作

ランチャー (Launcher.exe)

  • ターゲットをサスペンド状態で作成(exe、bat、cmd など)
  • メインスレッド実行前に Nemesis.dll を注入
  • Nemesis が準備完了と通知するのを待つ
  • 再開する。ターゲットが powershell の子を生成した場合、ランチャーはそれらにも注入可能

nemesis dll (Nemesis.dll)

  • jlaive スタイルのスタブが実際に使用する CLR ロードパスをフック:
    • nLoadImage
    • nLoadFile
    • AssemblyNative::LoadFromBuffer(nLoadImage から解決されたパターン)
  • リフレクティブPEがメモリに現れた場合 → %TEMP%\Nemesis_dumps にダンプをキューイング
  • 稼働中の amsi.dll / ntdll.dll のエクスポートをディスク上のコピーと比較(AmsiScanBuffer / EtwEventWrite の古典的な ret パッチをキャッチ)
  • AMSI チェックは、CLR がロードされたときに CLR の .rdata 文字列も確認(一部のバイパスは代わりにそれらにパッチを当てる;これに関する優れた vxug の論文があります:2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf)
  • ログをコンソール(色付き)+ %TEMP%\Nemesis.log に出力。ENABLE_VIRTUAL_TERMINAL_PROCESSING も設定済みで、コンソールがおかしくなる問題を回避(:D)

基本的に:bat チェインを実行させ、crypter が実際にペイロードをロードする場所でペイロードをキャッチし、途中の回避トリックをログに記録します。

証拠:

image image image

ビルド

Visual Studio 2022+ で C++ デスクトップ + MASM (x64) が必要です。

Nemesis.slnx を開き、Release | x64 を選択し、ソリューションをビルドします。

実際のターゲットで実行

これが実際のユースケースです。疑わしい bat を指定して、何が飛び出すか見てみましょう:

root@kitploit:~
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"

-- の後の追加引数はターゲットに渡されます:

root@kitploit:~
.\Launcher.exe myapp.exe -- --some-flag

カスタム DLL パス:

root@kitploit:~
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe

アーティファクト:

  • ログ → %TEMP%\Nemesis.log
  • ダンプされた PE → %TEMP%\Nemesis_dumps

Nemesis のできること / できないこと

できること:

  • jlaive スタイルの crypter(bat → ps1 → csharp チェイン)のためのランタイム分析ヘルパー
  • ラボ VM でサンプルを扱い、メモリ内ダンプと amsi/etw テレメトリを取得したい場合に有用
  • 他のアナリストが使用、拡張、不満を言うために公開

できないこと:

  • EDR の代替にはならない
  • すべてのフォークバリアントを確実にキャッチするわけではない(難読化の変更、新しいバイパス、例:現時点ではパッチレスの amsi/etw は対象外。今後変更予定で、将来的にはマネージド言語ツールキットになるかもしれません)

注意事項

  • 現時点では CLR ASM デトアは x64 のみ
  • cmd.exe ホストは多くの場合 CLR を持たないため、Nemesis は準備完了シグナルを送信せず、ランチャーはハングしません。実際の処理は powershell/dotnet が現れたときに行われます
  • LNK1104 でリビルドに失敗?何かがまだ nemesis.dll をロードしています。ターゲットを強制終了してリビルドしてください
  • ビルド中の pwsh.exe vcpkg のノイズは無害なので無視してください

参考資料(jlaive エコシステム)

戦っている相手を理解したい場合:

  • Trend Micro on BatCloak / Jlaive — bat → ps1 → csharp の層構造
  • Fortinet on ScrubCrypt — jlaive の厄介な後継。ScrubCrypt が少し違う点は、.bat でパイプ記号を使ってコマンドをパイプ出力していたことで、かなりうまく機能していました...
  • Unprotect.it — ScrubCrypt — 手法の解説
  • https://github.com/backdoorskid/ClrAmsiScanPatcher - 前述の .NET 文字列を見つけます。あの .pdf ファイルを読むことをお勧めします :)

免責事項

Nemesis を使用することにより、これを受け入れたものとみなします。 本ソフトウェアは「現状のまま」提供され、いかなる保証もありません — すべてのリスクは利用者が負うものとします。

利用者は、合法的かつ許可された使用(ラボ VM、所有するシステム、明示的な許可)について単独で責任を負います。法律で認められる最大限の範囲において、作者および zypherion.tech は、使用または誤用から生じるいかなる損害、損失、法的請求についても一切の責任を負いません。詳細は LICENSE をご覧ください。

ライセンス

非営利 / 個人 / 研究 / 趣味での使用 → PolyForm Noncommercial 1.0.0

商用利用(販売、有料製品、SaaS、クライアントワークなど)→ 別途ライセンスが必要です。PolyForm Noncommercial はそれをカバーしません。

商用ライセンスをご希望の場合はご連絡ください:

[[email protected] / @wd6g(discord) / telegram: @ZypherionTechnologies]

やること

簡単なメモ:compilemethod を調べて修正する必要があります。現時点では、crypter は通常 asm.load(...) を使用するため、これはあまり必要ありません... また、rdata 文字列も確認する必要があります。残念ながらまだ適切にテストしていません... 愚かなコードの PR はしないでください。n(Native) バックエンド(例:nLoadImage)をフックすることはできません。通常はレジスタを保存する必要があり、面倒です。だから asm を使っています。

ツールをダウンロード