- RootkitRevealer は、Windows API と生データ間の矛盾を検出し、隠れた問題を明らかにします。
- 結果を解釈します: NTFS メタデータ、レジストリ、およびファイル システムの不一致の種類。
- PsExec では -a -c -m -r およびリモート実行オプションを使用します。システムがアイドル状態のときに誤検知を最小限に抑える必要があります。
- 予防と対応: セキュア ブート/TPM、オフライン スキャン、ルートキット対策ツール、制御された復元。

RootkitRevealerは、Windowsのプロフェッショナルなら誰もが知っておくべき伝説的なユーティリティの一つです。SysinternalsチームがMark Russinovich氏をリーダーとして開発したもので、登場から何年も経ちますが、ルートキットによって引き起こされる、システムが表示する内容とディスク上の実際の内容との不一致を検出する方法を理解するための参考ツールとして今もなお使われています。
他のスキャナーとは異なり、シグネチャやパターンを探すのではなく、Windows APIの高レベルなビューと、ディスクおよびレジストリの生の低レベルな読み取り結果を比較します。この一見シンプルなアイデアにより、マルウェアがシステムコールを操作してファイル、キー、または値を隠蔽しようとした際に、それを検出できます。
RootkitRevealer とは何ですか? また、どのシステムで動作しますか?
これは、ユーザーモードとカーネルモードの両方でルートキットの兆候を検出するための高度なツールです。元々はWindows XPおよびWindows Server 2003(32ビット版)向けに開発され、一般的には無料、英語、サイズ約231 KiBとされています。また、当時はWindows NT/2000/XP/Vistaとの互換性も多くのリストに記載されていました。
時が経つにつれ、一部のマルウェア作成者が実行ファイル名を監視し始めたため、純粋なコマンドライン版は廃止されました。これを回避するため、プログラムはランダムな名前の自身のコピーからサービスとして起動され、名前による検出がより困難になり、100%コンソールインターフェースの提供が複雑化されます。
ルートキットとは何か?重要な概念
ルートキットとは、マルウェア(ウイルス、トロイの木馬、スパイウェアなど)がユーザーやセキュリティツールから身を隠すことを可能にする技術や仕組みを指します。ルートキットには、永続型(再起動後も存続)、メモリ常駐型(再起動時に消滅)、ユーザーモード型、カーネルモード型など、いくつかの種類があります。
ユーザーモードのルートキットは、FindFirstFile/FindNextFileなどの関数や、システムのネイティブ列挙子を傍受し、変更されたファイル、プロセス、レジストリキーを明らかにするエントリをフィルタリングすることができます。これにより、エクスプローラー、コマンドプロンプト、レジストリエディターが実際の存在を確認できなくなります。
カーネルモードのルートキットはさらに高度な機能を持っています。ネイティブAPIを傍受するだけでなく、カーネル構造を直接操作することも可能です。例えば、実行中のプロセスであっても、タスクマネージャーやプロセスエクスプローラーに表示されないように、自身のプロセスをアクティブなプロセスリストから削除することができます。
ブートローダーには、ハイブリッド型(ユーザーベースとカーネルベースの両方)、ファームウェア型(BIOS/UEFIおよびその他のコンポーネント)、ブートまたはブートキット型(MBR/UEFI)、仮想型(実際のOSを仮想マシン内に配置)、およびメモリベース型(非永続型)があります。後者は特に捉えにくい場合があり、ファームウェア型とブートローダー型はOSをクリーンインストールした後でも残ります。
RootkitRevealerの仕組み
RKRは、Windows APIの高レベルビューと、ボリュームおよびレジストリサブツリーファイル(ハイブ)の生の低レベル読み取りという2つのスナップショットを比較します。ルートキットが高レベルの呼び出しを改ざんして何かを隠蔽した場合、ディスク上およびレジストリ内の内容がAPIが示す内容と一致しないため、この変更が明らかになり、診断可能な不一致が発生します。
理論的には、ルートキットはRootkitRevealerの生データを傍受し、その場でデータを書き換えることで、RootkitRevealerから身を隠そうとする可能性もあります。そのためには、NTFS、FAT、レジストリ形式に関する深い知識が必要であり、矛盾や明らかな副作用を引き起こすことなく構造を変更できる能力が求められます。これは非常に複雑な技術的偉業であり、これまでほとんど確認されていません。とはいえ、万能な「普遍的検出器」は存在しません。外部環境(例えば、最良のLinuxディストリビューション)から起動した場合でも、特に高度で永続的なアーティファクトによって妨害される可能性があります。実際には、最も堅牢なアプローチは、オンライン分析と信頼できる環境でのオフライン検証を組み合わせることです。
要件、優れた実践、実行
このスキャンを実行するには、アカウントに「ファイルとディレクトリのバックアップ」、「ドライバの読み込み」、「ボリュームのメンテナンス」の権限が必要です(これらの権限は、Windows XP 以降では管理者にデフォルトで付与されています)。誤検出を最小限に抑えるため、システムが停止状態で、アプリケーションが何も起動していない状態でスキャンを実行することをお勧めします。
手動で実行する場合は、スキャンボタンを押すだけです。処理中は、プログラムが進行状況を更新し、不一致があれば一覧表示します。関連するオプションは 2 つあります。「NTFS メタデータ ファイルを非表示にする」(デフォルトで有効になっており、NTFS によって隠されている標準メタデータが表示されないようにします)と「スキャン ログ」(デフォルトで有効になっており、選択を解除するとWindows レジストリのスキャンがスキップされます)。
自動化のために、介入なしで起動、ログイン、終了できるパラメータをサポートしています。 rootkitrevealer outputfile]。 オプション -a 自動的に開始および終了します。 -c 結果をCSVで出力します。 -m NTFSメタデータを表示します。 -r レジストリスキャンを無効にします。出力ファイルは アクセス可能なローカルボリューム.
PsExecを使えばリモート実行が可能です。例えば: psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log。 とともに -c進捗状況は表示されず、矛盾はCSVに印刷されるため、インポートが容易になります。 データベースまたはスクリプト内.
結果の解釈と典型的な矛盾
ルートキットがエントリを隠蔽している場合、「Windows API から隠蔽」という不一致が最もよく発生します。NTFS メタデータの表示を有効にしていない場合、NTFS が$MFT や $Secureなどの内部ファイルを API から隠蔽するため、このような差異が生じます。一部のウイルス対策プログラムもデータを代替ストリームに保存して隠蔽するため、同様のエラーが発生することがあります。
これらは、NTFS (Windows Server 2003) で定義されている標準メタデータの一部です: $AttrDef、$BadClus、$BadClus:$Bad、$BitMap、$Boot、$LogFile、$Mft、$MftMirr、$Secure、$UpCase、$Volume、$Extend、$Extend\$Reparse、$Extend\$ObjId、$Extend\$UsnJrnl、$Extend\$UsnJrnl:$Max、$Extend\$Quota。
RKRは、ファイルシステム内の3つのソース(Windows API、マスターファイルテーブル(MFT)、ディスク上のディレクトリインデックス)を関連付けます。「APIには表示されるがインデックスやMFTには表示されない」、「MFTには表示されるがAPIには表示されない」などの組み合わせが表示されることがあります。これは特に、分析中にファイルが作成または削除され、一時的な不整合が発生する場合に発生します。
スキャン中の作成例: C:\newfile.txt8バイトのサイズで、「APIでは表示されますが、インデックスやMFTでは表示されません」というメッセージが表示されます。これらのケースは必ずしもルートキットを指しているわけではなく、 同時変更 検査を受けている間。
「アクセス拒否」が表示される場合は、何らかの問題が発生しています。RootkitRevealer はあらゆるファイル、ディレクトリ、キーにアクセスするためのメカニズムを使用しているため、通常の実行条件下ではこのメッセージは表示されません。
レジストリには、注目すべき不一致がいくつかあります。「Windows API の長さが生データと一致しない」(実際の内容を隠蔽しようとする試みの可能性)、「型の不一致」(例えば、REG_SZ と表示されているが、実際には REG_BINARY であるべき)、「キー名に NULL 値が埋め込まれている」(NULL 終端文字列とカウント付き文字列の違いを利用する既知の手法)。最後のケースでは、Sysinternals の RegDelNullユーティリティが、埋め込まれた NULL を含むキーのクリーンアップに役立ちます。
スキャン中に値が変更された場合、「データの不一致」が発生する可能性があります(例:SQL Serverの稼働時間など)。 HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc)。値が以下のものであることを検証する必要があります。 正当なコンポーネント データをリアルタイムで更新します。
一例としてHackerDefenderルートキットが挙げられます。そのサービスとドライバーはWindows APIからは見えませんが、レジストリハイブの生データ読み取りでは存在していました。ファイルについても同様で、ファイルシステムの直接分析によってディスク上で検出されました。
フォレンジック環境における rootkitrevealer.exe の一般的なエラーと問題
WinTaylorなどの一部のフォレンジックキットでは、rootkitrevealer.exeに関連する典型的なエラーとして、「有効なWin32アプリケーションではありません」、「見つかりません」、「アプリケーションエラー」、「起動の問題」などが挙げられます。これらのメッセージは通常、システムのインストール、起動、シャットダウン時、または他の常駐アプリケーションとの競合によって発生します。
最も一般的な原因としては、ファイルの破損または欠落、無効なレジストリエントリ、マルウェア感染、不完全なアンインストール、または他のソフトウェアとの競合などが挙げられます。原因としては、レジストリエントリの破損、他のツールによる誤削除、ダウンロードの失敗、またはバイナリを改変した過去の感染などが考えられます。
興味深いことに、いくつかのリストには実行ファイルのサイズが約334.720バイトと記載されており、 SHA-1やMD5などのハッシュ (例:SHA-1 d39e8a3fe92adc7d7fbc5293edf8a7b965484a59、MD5 ee738fe9bcdd605821002cec8c7206db)およびCRC32 98b1af0b;また、 コンテナアプリのバージョン2.1 「フォレンジック ツールキット/オペレーティング システム」カテゴリ。
ルートキットの検出と対応方法
ルートキットの検出は必ずしも容易ではありません。特定のツールに加え、既知の脅威のシグネチャ分析、構造のコールド比較、フックや改変箇所のメモリ検索、クラッシュ後のメモリダンプのレビューといった手法を組み合わせて、疑わしいモジュールを特定します。また、ネットワークを保護し、感染経路を減らすために、侵入防御システム(IPS)を利用することも一般的です。
専用のユーティリティとしては、GMER(隠しプロセスやカーネルの変更を検出するため)、Kaspersky TDSSKiller(特にブートキットやカーネルルートキットを検出するため)、Malwarebytes Anti-Rootkit、Microsoft Defender Offline(Windows起動前にスキャンするため)、RogueKillerなどがあります。これらのツールを信頼できる起動可能なUSBドライブから実行するか、セーフモードで実行することで、攻撃対象領域を縮小できます。
ブートまたはファームウェアの脅威に対しては、Kaspersky Rescue Diskなどのレスキューメディアを使用してMBRを復元することをお勧めします。 bootrec /fixmbr 適切な場合、そして深刻な場合には、BIOS/UEFIをメーカーのクリーンバージョンにアップデート/フラッシュして、 低レベルの永続性.
Sysinternalsによる監視は非常に有効です。プロセスとファイルの活動状況を監視するProcess Monitor(ProcMon)、起動時に何がロードされるかを確認するAutoruns、高レベル/低レベルの不整合を検出するRootkitRevealerなどが挙げられます。WazuhのようなSIEMプラットフォームや、企業環境におけるテレメトリは、予期せぬネットワーク動作や整合性の変化を明らかにするのに役立ちます。
感染が確認された場合の適切な手順は次のとおりです。マシンをネットワークから切断し、外部環境からスキャンし、ブート/ファームウェアの整合性を評価し、保証がない場合はデータをバックアップし、ディスクを完全にクリーンアップし(DBANなどのツールを使用)、検証済みのメディアから再インストールし、セキュアブートやTPMなどの対策を有効にします。
予防: ルートキットに対する適切な保護
予防が鍵です。システムを常に最新の状態に保ち、サードパーティ製ソフトウェアにパッチを適用し、怪しいソースからの実行ファイルは避け、クラックやキー生成ツールは使用しないでください。これらはルートキットのドロッパーやローダーを配布するための好都合な手段です。
USBの自動実行を無効にし、外付けドライブを開く前にスキャンを行い、企業環境では、必要に応じてポートを制限またはブロックし、ファイアウォールを適用してください。権限のないユーザーアカウントで作業し、最小権限の原則を適用し、重要な変更には管理者の認証情報を要求することで、密かに権限が昇格される可能性を低減してください。
互換性のあるハードウェアでは、 UEFIからセキュアブートとTPMを有効にして、ブートチェーンとキーの保護を行ってください。定期的にオフラインまたは不変のバックアップを作成し、スナップショット/復元ポイントを使用して、問題が発生した場合の復旧時間を短縮してください。
ルートキットのインストール方法:ドロッパー、ローダー、ベクター
攻撃者は通常、ルートキットを複合的な脅威として配布します。パッケージを配信する「ドロッパー」と、バッファオーバーフローなどの脆弱性を悪用してマルウェアを本来侵入させてはいけない場所に仕込む「ローダー」です。これはフィッシングメール、偽のインストーラー、不正なアップデートなどに偽装されています。
典型的な攻撃手法としては、メッセージングクライアントを乗っ取って悪意のあるリンクを拡散すること、ダウンロードポータル上のソフトウェアにトロイの木馬を仕込むこと、他のマルウェアをキャリアとして使用すること、リッチコンテンツドキュメント(特定のPDFなど)に埋め込み、開くと自動的にドロッパーを起動させることなどが挙げられます。
攻撃の兆候と検出の手がかり
ルートキットの目的は、検出されないことです。それでも、ユーザーの操作なしに設定が変更されたり、隠れたトラフィックによる異常なネットワーク障害が発生したり、正体不明のプロセスが起動したり、サービスが停止できなくなったり、セキュリティツールが説明もなく無効化されたりといった現象が発生する可能性があります。
もう一つの手がかりは、異なるパス(APIと生の読み取り)を使用してファイル、プロセス、またはレジストリキーを一覧表示するユーティリティ間で情報が矛盾することです。RootkitRevealerのようなアプローチが真価を発揮するのはまさにこの点です。ディスク上に「存在する」オブジェクトが、APIによると「存在しない」場合、それは操作の証拠となります。
ルートキットの主な種類
ユーザーモード:これらはプロセスレベルおよびライブラリレベルで動作します。ファイル、プロセス、キーを隠蔽できるものの、安定性が高く、比較的検出されやすいという特徴があります。歴史的な例としては、HackerDefenderが挙げられます。
カーネルモード:これらのウイルスはカーネル内に潜伏し、完全な制御権と優れた隠蔽性を持ちます。駆除が困難で、設計が不十分な場合は不安定性を引き起こす傾向があります。このファミリーの例としては、進化段階にあるTDL/Alureonが挙げられます。
ハイブリッド:ユーザーコンポーネントとカーネルコンポーネントを組み合わせて隠蔽性と安定性のバランスを取り、実用的な汎用性から攻撃者の間で人気があります。
ファームウェア/ブートキット:これらはBIOS/UEFIまたはブートセクタ(MBR/UEFI)に感染し、オペレーティングシステムより先にロードされます。セキュアブートなどの技術により、多くの従来のブートキットは時代遅れになりましたが、最新のUEFIインプラントが登場しています。
仮想とメモリベース: VMBR は OS の下にハイパーバイザをロードして仮想化します。メモリベースのものは RAM にのみ存在し、再起動すると消滅するため、一時的な操作に非常に便利です。
例と強調された年表
SunOS向けの最初のルートキットは90年代に開発されました。1999年にはGreg HoglundがNTRootkit(Windows、カーネルモード)について説明し、2003年にはHackerDefender(Windows 2000/XP、ユーザーモード)が登場し、RootkitRevealerなどのツールとの「綱引き」を引き起こしました。
2004年には、いわゆる「ギリシャ版ウォーターゲート事件」で、ルートキットを用いてGSMネットワーク上の100台以上の携帯電話がハッキングされた。2005年には、ソニーBMGが一部のCDに海賊版対策用のルートキットを仕込んでいたことが発覚し、大きなセキュリティ論争を巻き起こした。
2008年以降、TDL(TDL-1からTDL-4)のようなブートキットが進化を遂げ、2009年には「マキャベリ」によってmacOS(当時はMac OS X)も例外ではないことが証明され、2010年にはStuxnetがルートキットのコンポーネントを利用してイランの産業システムを妨害した。
2012年には、大規模なモジュール型マルウェアであるFlameが登場しました。2018年には、 LoJaxが実環境で検出された最初のUEFIルートキットとなりました。そして2019年には、Scranosが認証情報の窃盗と隠れた収益生成を、大量に侵害されたブラウザを介したクリックファームと組み合わせました。
リソースと推奨文献
マーク・ルシノビッチによるソニー事件の調査と、Windows IT Pro誌に掲載された彼の記事「ルートキットの解明」は、RKRの現象と背後にある技術を理解するのに役立ちます。グレッグ・ホグランドとジェイミー・バトラーによる書籍「ルートキット:Windowsカーネルの転覆」は、このテーマに関する最も詳細な解説書です。
Phrack Archive、Peter Szor著「The Art of Computer Virus Research and Defense」、Ed SkoudisとLenny Zeltser共著「Malware: Fighting Malicious Code」、そして「Windows Internals」シリーズ(第4版以降)は、アーキテクチャと本格的な対策についてより深く学びたい人にとって不可欠な資料です。
SysinternalsエコシステムにおけるRootkitRevealer
RKR は、調査に役立つ他の Sysinternals ユーティリティと共存しています。AccessChk および AccessEnum (実効アクセス許可)、Autoruns (システム起動時に開始されるすべてのもの)、Process Explorer (誰がどの DLL を開いたか)、PsExec/PsTools (リモート実行と管理)、PsLogList および PsLoggedOn (イベントとセッション)、Sigcheck (デジタル署名)、SDelete (安全な削除)、ShareEnum (共有リソース)、Sysmon (イベントログの高度なテレメトリ)。
過去のリポジトリでは「Download 1.71」への参照や、Sysinternals Live を介した「Run now」への参照がよく見られます。このプロジェクトは歴史が長いものの、高レベルアプローチと低レベルアプローチを比較するという考え方は、ルートキットの検出において依然として重要です。
RootkitRevealerは、何よりもまず防御エンジニアリングの教訓です。APIが返す内容を操作しているものがあれば、その裏側を調べて、ディスク上やレジストリに実際に存在する内容と比較する必要があります。適切な手法、適切なツール、そして必要に応じてオフライン検証を行うことで、誰も気づかないだろうと思われる場所に隠されているものを暴くことが可能です。
インデックス
- 1 RootkitRevealer とは何ですか? また、どのシステムで動作しますか?
- 2 ルートキットとは何か?重要な概念
- 3 RootkitRevealerの仕組み
- 4 要件、優れた実践、実行
- 5 結果の解釈と典型的な矛盾
- 6 フォレンジック環境における rootkitrevealer.exe の一般的なエラーと問題
- 7 ルートキットの検出と対応方法
- 8 予防: ルートキットに対する適切な保護
- 9 ルートキットのインストール方法:ドロッパー、ローダー、ベクター
- 10 攻撃の兆候と検出の手がかり
- 11 ルートキットの主な種類
- 12 例と強調された年表
- 13 リソースと推奨文献
- 14 SysinternalsエコシステムにおけるRootkitRevealer