
脆弱なカーネルドライバーにおける物理メモリ読み取りプリミティブを介したLSASSのダンプ
脆弱な署名済みドライバーを悪用し、MmMapIoSpace を介した物理メモリ読み取りプリミティブを使用して、LSASS の資格情報を物理メモリから直接抽出します。従来のユーザーモード検出機能をバイパスします。
このツールは Julian Peña と Eric Esquivel の協力により開発されました。
このリリースの GhostKatz は、既に公開された脆弱性のあるドライバーを使用しています。最良の結果を得るには、GhostKatz は、メモリ読み取りの脆弱性を含み、ロード時にブロックされていない、または公開されていないカーネルドライバーと連携することを意図しています。この公開リリースには、これまで未公開だったドライバーのエクスプロイトは含まれていません。代わりに、プロジェクトはモジュール化および拡張可能になるように設計されており、ユーザーは自身で調査したドライバーを研究し、utils.c のメモリ読み取りプリミティブ関数を拡張することで統合できます。内部では、発見と悪用のプロセスを自動化し、エクスプロイトを記述した複数の署名済みカーネルドライバーを維持しています。
貢献をご希望の場合は、貢献ドキュメント をご覧ください。
カーネルドライバーの悪用方法を学び始めたくて、これはクールなプロジェクトだと思いました。また、Outflank の KernelKatz ツールを見て刺激を受け、使用したいと思いましたが、学生であるため Outflank を持っていませんでした。そこで、自分たちで作りました。
make を実行して BOF をコンパイルします。
ghostkatz.cna Aggressor Script をスクリプトマネージャーにロードします。
GhostKatz を実行するには、ghostkatz [logonpasswords/wdigest] -prv <provider id> コマンドを使用します。
Beacon コンソールでヘルプコマンドを実行するには: help ghostkatz。
beacon> help ghostkatz
Synopsis: ghostkatz [logonpasswords/wdigest] -prv <provider id>
Description:
LSASS から資格情報をダンプする。署名済みカーネルドライバーを使用して物理メモリを読み取ります。
Examples:
ghostkatz logonpasswords -prv 1
ghostkatz wdigest

以下は手動でストレステストを行ったバージョンです。1607 などのメジャーバージョンは、マイナービルドアップデートで破壊的な変更があってはなりません。
[!WARNING] GhostKatz は徹底的にテストされていますが、本番環境で展開する場合は注意して使用してください。GhostKatz は脆弱なカーネルドライバーを利用します。エラーが発生すると BSOD が発生する可能性があります。
GhostKatz で悪用可能なドライバー
| Id | ベンダー | ドライバー名 | SHA256 |
|---|---|---|---|
| 1 | Toshiba | TPwSav | 011df46e94218cbb2f0b8da13ab3cec397246fdc63436e58b1bf597550a647f6 |
| 2 | TechPowerUp | ThrottleStop | 16f83f056177c4ec24c7e99d01ca9d9d6713bd0497eeedb777a3ffefa99c97f0 |
ch3rn0byl と Cedric さん、カーネル、ドライバー、Superfetch に関する愚かな質問に答えてくださりありがとうございます。