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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
r0ak — Windowsコマンドラインのユーティリティで、フォント検証実行リダイレクション技術を使用してAdministratorコンテキストからカーネルモードコードの読み取り、書き込み、実行を行い、高度なカーネルデバッグとシステムトラブルシューティングを可能にします。 | Kitploit
ツール/GitHubGitHub/harryanon/r0ak
特権昇格メモリフォレンジック脆弱性分析エクスプロイトデバッガポストエクスプロイトペネトレーションテストバイナリエクスプロイト
GitHubharryanon/r0ak

r0ak

Windowsコマンドラインのユーティリティで、フォント検証実行リダイレクション技術を使用してAdministratorコンテキストからカーネルモードコードの読み取り、書き込み、実行を行い、高度なカーネルデバッグとシステムトラブルシューティングを可能にします。

リポジトリを見る
1087338年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

r0akDownloads

r0ak は、Windows コマンドライン ユーティリティで、管理者特権以外は何も必要とせずに、コマンド プロンプトからカーネルモード コードの読み取り、書き込み、実行(一部制限あり)を簡単に行うことができます。

クイック プレビュー

root@kitploit:~
r0ak v1.0.0 -- Ring 0 Army Knife
http://www.github.com/ionescu007/r0ak
Copyright (c) 2018 Alex Ionescu [@aionescu]
http://www.windows-internals.com

USAGE: r0ak.exe
       [--execute <Address | module.ext!function> <Argument>]
       [--write   <Address | module.ext!function> <Value>]
       [--read    <Address | module.ext!function> <Size>]

スクリーンショット

はじめに

動機

Windows カーネルは、一般的なシステムで何百ものドライバーが実行され、グローバル状態を含む何千もの変数が存在する豊かな環境です。高度なトラブルシューティングのために、IT エキスパートは通常、Windows デバッガー (WinDbg)、SysInternals ツールなどのツールを使用するか、独自のツールを作成します。残念ながら、これらのツールの使用はますます困難になっており、それら自体も Windows API と公開された機能へのアクセスに制限されています。

今日の課題には次のようなものがあります:

  • Windows 8 以降はセキュア ブートをサポートしており、カーネル デバッグ(ローカル デバッグを含む)とテスト署名されたドライバー コードの読み込みを防止します。これにより、トラブルシューティング ツールは署名済みカーネルモード ドライバーを持つものに制限されます。
  • セキュア ブートが有効になっていないシステムでも、ローカル デバッグを有効にしたり、デバッグ機能を容易にするブート オプションを変更したりすると、多くの場合 BitLocker の回復モードがトリガーされます。
  • Windows 10 Anniversary Update 以降では、ドライバー署名要件がはるかに厳しくなり、Microsoft EV アテステーション署名が強制されるようになりました。これにより、ソフトウェア開発者の自由が制限され、汎用的な「すべて読み取り/書き込み可能」なドライバーは好まれなくなります。
  • Windows 10 Spring Update には、HyperVisor Code Integrity (HVCI) を有効にするための顧客向けオプションが含まれるようになりました。これにより、許可されるドライバーがさらに制限され、不適切に記述されたインターフェイスとセキュリティ リスクにより「すべて読み取り/書き込み可能」な機能を持っていた複数のサードパーティ ドライバーがブラックリストに登録されます。
  • Supervisor Mode Execution Prevention (SMEP)、Kernel Control Flow Guard (KCFG)、Second Level Address Translation (SLAT) を使用した HVCI などのテクノロジにより、従来の Ring 0 実行の「トリック」は時代遅れになりつつあり、新しいアプローチが必要です。

このような環境において、カーネル状態を分析することで明らかになる可能性のあるカーネル/システムレベルの問題を緊急の応急処置/ホットフィックスとして迅速にトラブルシューティングできるシンプルなツールが、コミュニティにとって貴重であることは明らかでした。

動作の仕組み

基本アーキテクチャ

図

r0ak は、新しいフォントの読み込みを試みる際に、ウィンドウ マネージャーの信頼されたフォント検証チェックの実行フローをリダイレクトすることで動作します。具体的には、信頼されたフォント テーブルの比較ルーチンを、入力ノードに格納されたエグゼクティブ ワーク アイテム(WORK_QUEUE_ITEM)をスケジュールする代替関数で置き換えます。次に、信頼されたフォント テーブルの右子ノード(ルート ノードとして機能)を、カスタム ワーク アイテムが格納された名前付きパイプの書き込みバッファ(NP_DATA_ENTRY)で上書きします。このアイテムの基となるワーカー関数とそのパラメーターは、フォントの読み込みが試行され、比較ルーチンが実行されると、最終的に専用の ExpWorkerThread によって PASSIVE_LEVEL で実行されます。その際、名前パイプでバックアップされた親ノードを入力として受け取ります。リアルタイムの Event Tracing for Windows (ETW) トレース イベントを使用して、ワーク アイテムの実行完了の非同期通知を受信します。これにより、構造を安全に破棄し、カーネルモード バッファを解放し、通常の動作を復元できます。

サポートされているコマンド

--execute オプションを使用する場合、この関数とパラメーターはユーザーが提供します。

--write を使用する場合、カスタム ガジェットを使用して、カーネル メモリ内の任意の場所にある 32 ビット値を変更します。

--read を使用する場合、書き込みガジェットを使用してシステムの HSTI バッファ ポインターとサイズを変更します(注: これは、HSTI データを要求する他のアプリケーションに関しては破壊的な動作です。これはオプションの Windows 動作であり、このツールは緊急デバッグ/実験用であるため、このデータ損失は許容できると見なされました)。次に、HSTI Query API を使用してツールのユーザーモード アドレス空間にコピー バックし、16 進ダンプが表示されます。

組み込みの Microsoft 署名済み Windows 機能のみが使用され、呼び出されるすべての関数は KCFG ビットマップの一部であるため、セキュリティ チェックの違反はなく、デバッグ フラグや不適切に記述されたサードパーティ ドライバーの使用は必要ありません。

FAQ

これは Windows のバグ/脆弱性ですか?

いいえ。このツール(およびその基盤となる手法)は、管理者アカウントで実行しているユーザーのみが取得できる SYSTEM レベルの特権トークンを必要とするため、効果を達成するためにセキュリティ境界がバイパスされることはありません。このツールの動作と有用性は、Windows 上の管理者アカウントの昇格/特権セキュリティ コンテキストによってのみ可能であり、設計上の動作として理解されています。

この動作について Microsoft に通知されましたか?

もちろんです!特権境界の違反が発生していないように見えても、セキュリティ問題を常に Microsoft に報告することが重要です。Microsoft の研究者や開発者のチームは、外部の研究者が思いつかなかった新しいベクトルや特定のコードパスに到達する方法を見つける可能性があります。

そのため、2014 年 11 月に Microsoft セキュリティ レスポンス センター (MSRC) にセキュリティ ケースが提出され、次のような回答がありました: 「[…] は、従来のセキュリティ情報発行の手段で対処するセキュリティ問題の範囲には該当しません。これは管理者権限を前提としています。アーキテクチャ上、現在防御可能なセキュリティ境界を定義していない場所です。したがって、修正は追求しません。」

さらに、2015 年 4 月の Infiltrate カンファレンスで、Insection : AWEsomely Exploiting Shared Memory Objects というタイトルの講演でこの問題が詳述され、出席していた Microsoft の開発者も、これは現在 Windows のアーキテクチャ上のセキュリティ境界の範囲外であることに同意しました。これは、管理者が Ring 0 メモリを読み取り/書き込み/実行できる方法が文字通り数十(それ以上)あるためです。このツールは、システム問題のデバッグおよびトラブルシューティングの目的で、そのようなベクトルの 1 つを簡単に利用できるようにするだけです。

エンドツーエンドの攻撃/エクスプロイト キットの一部としてパッケージ化できないのですか?

このコードをライブラリとしてパッケージ化するには、すべてのインタラクティブなコマンドライン解析と標準出力を注意深く削除する必要があります。その場合、大幅な書き換えなしでは、その「キット」は以下の条件を満たす必要があります:

  • ターゲット マシンが Windows 10 Anniversary Update x64 以降を実行していること
  • すでに SYSTEM に権限昇格していること
  • Microsoft のシンボル サーバーへのアクセスを許可するプロキシ/ファイアウォールを備えたアクティブなインターネット接続が必要
  • ターゲット マシンに Windows SDK/WDK がインストールされていること
  • ターゲット マシンに適切な _NT_SYMBOL_PATH 環境変数が設定され、約 15MB のシンボル データがディスク上のどこかに PDB ファイルとしてダウンロードおよびキャッシュされていること

この特定のアプローチの使用に関心のある攻撃者は、よりクロス互換性が高く、SYSTEM 権限を必要としない他の多くの手法と比較して、おそらく 3 年以上前の 2015 年 4 月の Proof-of-Concept に基づいて独自のコードをすでに適応させているでしょう。

使用法

必要条件

Windows シンボル エンジンを使用するため、Windows ソフトウェア開発キット (SDK) または Windows ドライバー キット (WDK) のいずれかが Debugging Tools for Windows と共にインストールされている必要があります。ツールはインストール パスを自動的に検索し、そのディレクトリにある DbgHelp.dll と SymSrv.dll を利用します。これらのファイルは再配布できないため、ツールのリリースに含めることはできません。

または、これらのライブラリを自分で入手した場合、ソース コードを変更して使用できます。

シンボルの使用には、ローカルに事前キャッシュしていない限り、インターネット接続が必要です。さらに、適切なシンボル サーバーとキャッシュ場所を指すように _NT_SYMBOL_PATH 変数を設定する必要があります。

カーネル メモリの読み取り/書き込み/実行が必要であり(適切なカーネル変数にアクセスする知識がある)IT エキスパートまたはトラブルシューターは、上記のセットアップ要件をすでに熟知しているものと想定されています。SDK とは何か、環境変数の設定方法について質問する issue を提出しないでください。

ユースケース

  • 一部のドライバーがカーネル プールをリークしている?ならば ntoskrnl.exe!ExFreePool を呼び出して、リークしているカーネル アドレスを渡してみてはどうでしょう?オブジェクト参照は?ntoskrnl.exe!ObfDereferenceObject を呼び出してクリーンアップしましょう。
  • カーネル DbgPrint ログをダンプしたい?ならば ntoskrnl.exe!KdPrintCircularBuffer の内部循環バッファをダンプしてみてはどうでしょう?
  • 自分のマシンのカーネル スタックのサイズが気になる?ntoskrnl.exe!KeKernelStackSize を見てみましょう。
  • システム コール テーブルをダンプしてフックを探したい?ntoskrnl.exe!KiServiceTable を出力してみましょう。

これらはほんの一例です。すべての Ring 0 アドレスは、module!symbol 構文、または既知の場合はカーネル ポインターを直接渡すことで受け入れられます。Windows シンボル エンジンを使用してこれらを検索します。

制限事項

このツールは、最新バージョンの Windows 10 にのみ存在することが知られている特定のカーネル変数と関数を必要とし、64 ビット システムでのみ動作することを意図しています。これらの制限は、古いシステム(または x86 システム)ではこれらの厳格なセキュリティ要件が存在せず、代わりにより従来のアプローチを使用できるという事実によるものです。これは私が利用できるようにしている個人用ツールであり、代わりに単純なドライバーを使用できた古いシステムは必要ありませんでした。とはいえ、移植に関心のある方がいれば、このリポジトリはプル リクエストを受け付けています。

次に、ユースケースと私のニーズにより、次の制限が適用されます:

  • 読み取り – 1 回のデータ量は 4 GB まで
  • 書き込み – 1 回のデータ量は 32 ビットまで
  • 実行 – 1 つのスカラー パラメーターのみを取る関数に制限されます

明らかに、これらの制限はプログラム的に別のアプローチを選択することで修正できますが、コマンド ライン ツールと私のユースケースのニーズに適合しています。繰り返しますが、他の方が独自の追加機能を提供したい場合は、プル リクエストを受け付けています。

すべての実行(--read および --write コマンドの実行を含む)は、PASSIVE_LEVEL のシステム ワーカー スレッドのコンテキストで発生することに注意してください。したがって、ユーザーモード アドレスをパラメーター/引数として渡さないでください。

コントリビューション

プル リクエストは歓迎します。大きな変更については、まず issue を開いて変更内容を議論してください。

ライセンス

root@kitploit:~
Copyright 2018 Alex Ionescu. All rights reserved. 

Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met: 
1. Redistributions of source code must retain the above copyright notice, this list of conditions and
   the following disclaimer. 
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
   and the following disclaimer in the documentation and/or other materials provided with the 
   distribution. 

THIS SOFTWARE IS PROVIDED BY ALEX IONESCU ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALEX IONESCU
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those of the authors and
should not be interpreted as representing official policies, either expressed or implied, of Alex Ionescu.
ツールをダウンロード