Ophcrackというツールをご存知でしょうか?特に、そのコマンドラインインターフェース版である ophcrack-cli は、Windowsのパスワード解析(クラッキング)において非常に強力なツールです。この記事では、ophcrack-cliの基本的な使い方から、より実践的な活用方法までを詳しく解説していきます。パスワードを忘れてしまった際の回復や、セキュリティ監査の一環として、その仕組みと使い方を学びましょう。😊
1. Ophcrackとophcrack-cliとは?
Ophcrackは、オープンソース(GPLライセンス)で開発されているWindowsパスワード解析ツールです。その最大の特徴は、レインボーテーブルと呼ばれる事前に計算されたデータを利用して、パスワードハッシュから元のパスワードを高速に特定することにあります。特に、古いWindowsバージョンで使われていたLMハッシュに対して高い効果を発揮しますが、新しいNTLMハッシュにも対応しています。
Ophcrackには、グラフィカルユーザーインターフェース(GUI)を持つバージョンと、コマンドラインインターフェース(CLI)のみを持つバージョンがあります。
- Ophcrack (GUI版): マウス操作で比較的簡単に利用できるため、初心者向けです。Live CD版なども提供されており、CDやUSBメモリから起動して直接パスワード解析を行うことができます。
- ophcrack-cli (CLI版): コマンド入力で操作するバージョンです。サーバー環境や、スクリプトによる自動化、リソースが限られた環境での利用に適しています。Kali Linuxなどのペネトレーションテスト用OSには、デフォルトで含まれていることが多いです。この記事では、このophcrack-cliを中心に解説します。
Ophcrackは主にWindowsのローカルアカウントのパスワード(LMハッシュまたはNTLMハッシュ)を対象としています。
2. レインボーテーブルについて 🌈
Ophcrackの核となる技術がレインボーテーブルです。これは、パスワードとそのハッシュ値のペアを大量に事前計算し、特殊な形式で圧縮・格納したデータベースです。総当たり攻撃(ブルートフォース)や辞書攻撃のように、解析時に一つ一つハッシュ値を計算するのではなく、対象のハッシュ値をテーブル内で検索することで、対応するパスワードを非常に高速に見つけ出すことができます。
レインボーテーブルの種類と入手方法
レインボーテーブルは、対象とするハッシュの種類(LMハッシュ、NTLMハッシュ)、パスワードに含まれる文字種(英数字のみ、記号を含むなど)、パスワードの最大長によって様々な種類があります。
- LMハッシュ用テーブル: Windows XP/2000/2003 Serverなどで主に使われていたLMハッシュに対応。LMハッシュはセキュリティ上の脆弱性が多く、比較的容易に解析できます。パスワードは最大14文字で、大文字小文字を区別しません。
- NTLMハッシュ用テーブル: Windows Vista以降(デフォルト)や、LMハッシュが無効化されているシステム、15文字以上のパスワードに対応。LMハッシュより強力ですが、ophcrackはNTLMハッシュ用のテーブルも利用できます。
公式のOphcrackウェブサイト(sourceforge.net)では、いくつかの無料レインボーテーブルが提供されています。
- XP free small: XP向けのLMハッシュ用。サイズが比較的小さい(約380MB)。
- XP free fast: XP向けのLMハッシュ用。より成功率が高いがサイズが大きい(合計約17GB)。
- Vista free: Vista/7向けのNTLMハッシュ用。サイズが非常に大きい(数GB〜数十GB)。以前は有料でしたが、2019年9月以降、無料化されました。
これらのテーブルは、公式サイトから直接ダウンロードするか、Torrent経由で入手できます。解析したいパスワードの複雑さやシステムの種類に応じて、適切なテーブルを選択し、ダウンロードしておく必要があります。テーブルファイルはサイズが大きいものが多いため、ダウンロードには時間とディスク容量が必要です。
ダウンロードしたテーブルファイル(通常は `.zip` や `.tar.bz2` 形式)は解凍し、`ophcrack-cli` がアクセスできる場所に配置します。テーブルファイル群は、通常 `tables` という名前のディレクトリにまとめて配置することが推奨されます。
3. ophcrack-cliのインストール
ophcrack-cliのインストール方法は、お使いのオペレーティングシステムによって異なります。
Linux (Debian/Ubuntu系, Kali Linuxなど)
多くのLinuxディストリビューション、特にKali Linuxのようなセキュリティテスト用途のものでは、パッケージマネージャを通じて簡単にインストールできます。
sudo apt update
sudo apt install ophcrack-cli
これで、コマンドラインから `ophcrack-cli` が利用可能になります。GUI版もインストールしたい場合は `ophcrack` パッケージを指定します。
macOS
macOSでは、Homebrewパッケージマネージャを使うと簡単にインストールできる場合があります。
brew install ophcrack
Homebrewで提供されている `ophcrack` パッケージには、CLIツールも含まれていることが多いです。
Windows
Windows上で直接ophcrack-cliをビルド・実行するのは一般的ではありません。通常は、Ophcrack Live CD/USBを使用するか、Linux環境(仮想マシンやWSLを含む)からWindowsのハッシュファイルを解析します。
Ophcrack公式サイトから、Windows向けのインストーラー(GUI版)が提供されていることもありますが、アンチウイルスソフトによっては、パスワードダンプ用のツール(例: `pwdump6`、`samdump.dll`)がマルウェアとして検出されることがあります。これらは本質的に危険なツールであるため検出されるものですが、公式サイトからダウンロードしたものであれば、通常は安全です。ただし、利用は自己責任となります。
ソースコードからビルド
上級ユーザーは、公式リポジトリ(GitLabなど)からソースコードを取得し、自分でビルドすることも可能です。
4. パスワードハッシュの取得
Ophcrackでパスワードを解析するには、まず対象となるWindowsアカウントのパスワードハッシュを取得する必要があります。ハッシュは通常、Windows内のSAM (Security Accounts Manager) ファイルに保存されています。
ハッシュ取得方法
- Live CD/USBの使用: Ophcrack Live CD/USBなどのツールでシステムを起動し、非稼働状態のWindowsパーティションからSAMファイルを読み込み、ハッシュを抽出します。多くのLive CDツールには、このプロセスを自動化する機能が含まれています。
- 専用ツールの使用 (Windows上): `pwdump` 系ツール(例: `pwdump7`, `fgdump`)や `Mimikatz` などのツールを(管理者権限で)使用して、メモリやSAMファイルからハッシュをダンプします。これらのツールはアンチウイルスソフトに検出されやすいため注意が必要です。取得したハッシュは、テキストファイル(PWDUMP形式)に保存します。
- 手動でのSAM/SYSTEMファイルコピー: 回復環境や別のOSから起動し、`C:\Windows\System32\config` ディレクトリにある `SAM` ファイルと `SYSTEM` ファイルをコピーします。`SYSTEM` ファイルはSAMファイルの暗号化を解除するために必要です。コピーしたファイルをophcrack-cliが動作する環境に持っていき、`-S` オプションと `-s` オプションで指定して解析します。
PWDUMP形式
多くのツールは、以下のようなPWDUMP形式でハッシュを出力します。ophcrack-cliはこの形式のファイルを直接読み込むことができます。
ユーザー名:ユーザーID:LMハッシュ:NTLMハッシュ:::
例:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
User1:1001:c23413a8a1e766f81f47fa9b4980dfc3:2a911e4a6b1194c871a4e0340f44e2ab:::
`aad3b435b51404eeaad3b435b51404ee` は空のパスワードまたはLMハッシュが無効な場合の典型的な値です。
5. ophcrack-cliの基本的な使い方
`ophcrack-cli` はコマンドラインから様々なオプションを指定して実行します。基本的な構文は以下の通りです。
ophcrack-cli [オプション]
主要なオプション
オプション | 説明 |
---|---|
-h |
ヘルプメッセージを表示します。 |
-g |
GUIを無効にします(ophcrack-cliではデフォルトで無効)。 |
-d <ディレクトリ> |
レインボーテーブルが格納されているディレクトリを指定します。このディレクトリ内に `tables` というサブディレクトリがあり、その中に各テーブルのディレクトリ(例: `vista_free`)があると想定されることが多いです。 |
-t <テーブル1[,テーブル2,...]> |
使用するレインボーテーブルを具体的に指定します。-d で指定したディレクトリからの相対パス、または絶対パスで指定します。カンマ区切りで複数指定可能です。例: -t vista_free/table_0.bin,vista_free/table_1.bin や -t /path/to/tables/xp_free_fast |
-f <ファイル> |
解析対象のハッシュが含まれるファイルを指定します。PWDUMP形式のテキストファイルが一般的です。 |
-l <ファイル> |
解析結果(クラックされたパスワード)を出力するファイルを指定します。 |
-o <ファイル> |
セッションファイルを出力します。解析を中断・再開する場合に使用できます。 |
-r <ファイル> |
以前保存したセッションファイルから解析を再開します。 |
-n <数値> |
使用するCPUスレッド数を指定します。デフォルトは利用可能なコア数です。 |
-S <SYSTEMファイル> |
暗号化されたSAMファイルからハッシュを読み込む際に、SYSTEMファイルを指定します。 |
-s <SAMファイル> |
暗号化されたSAMファイルを指定します。-S オプションと併用します。 |
-u <ユーザー名> |
特定のユーザー名のみを解析対象とします。 |
-w <ファイル> |
ワードリスト(辞書)ファイルを指定し、辞書攻撃を試みます。 |
-b |
レインボーテーブルが見つからなかった場合に、ブルートフォース(総当たり)攻撃を試みます(ただし、Ophcrackの主機能ではありません)。 |
-c <ファイル> |
設定ファイルを指定します。 |
-v |
詳細な(verbose)ログを出力します。 |
-q |
静かな(quiet)モードで実行し、出力を抑制します。 |
実行例
以下にいくつかの典型的な実行例を示します。
例1: PWDUMPファイルと特定のテーブルディレクトリを使用
ophcrack-cli -d /path/to/rainbow_tables -f hashes.txt -l cracked_passwords.txt
このコマンドは、/path/to/rainbow_tables
ディレクトリにあるテーブルを使用し、hashes.txt
ファイル内のハッシュを解析し、結果を cracked_passwords.txt
に出力します。
例2: 複数の特定のテーブルファイルを指定
ophcrack-cli -t /media/usb/tables/vista_free/table_0.bin,/media/usb/tables/vista_free/table_1.bin -f dumped_hashes.pwdump -n 4
このコマンドは、USBメモリ上の特定のテーブルファイル2つを使い、dumped_hashes.pwdump
を4スレッドで解析します。
例3: 暗号化されたSAMファイルとSYSTEMファイルを使用
ophcrack-cli -S /mnt/windows/System32/config/SYSTEM -s /mnt/windows/System32/config/SAM -d /opt/tables -l results.log
マウントされたWindowsパーティションから直接SAMファイルとSYSTEMファイルを読み込み、/opt/tables
のテーブルを使って解析します。
出力の解釈
解析が成功すると、ophcrack-cliは通常、以下のような形式で結果を表示(または -l
オプションで指定したファイルに書き込み)します。
User1 NT Pwd : password123
これは、`User1` というユーザーのNTLMハッシュに対応するパスワードが `password123` であることを示しています。LMハッシュが解析された場合は `LM Pwd` と表示されることもあります。パスワードが見つからなかった場合は、`not found` や空欄が表示されます。
解析にかかる時間は、ハッシュの数、使用するテーブルの効率、CPUの速度、パスワードの複雑さなどによって大きく変動します。単純なパスワードであれば数秒から数分で見つかることもありますが、複雑なパスワードや対応するテーブルがない場合は見つからないこともあります。
6. パフォーマンスと限界
パフォーマンスに影響する要因
- CPUパワー: レインボーテーブルの検索処理にはCPUパワーが必要です。コア数が多いほど、
-n
オプションで並列処理の効果が期待できます。 - レインボーテーブルの質とサイズ: より多くのパスワードをカバーする大きなテーブルは成功率を高めますが、検索に必要な時間とディスクI/Oが増加する可能性があります。テーブルの生成方法(文字種、長さ、最適化)も効率に影響します。
- ハッシュの数: 解析対象のハッシュが多いほど、全体の処理時間は長くなります。不要なアカウント(Guestなど)のハッシュは除外すると効率が上がることがあります。
- ディスクI/O速度: 特に巨大なレインボーテーブルを使用する場合、テーブルデータをディスクから読み込む速度がボトルネックになることがあります。SSDを使用すると改善が期待できます。
Ophcrackの限界
- テーブル依存性: Ophcrackの最大の強みであるレインボーテーブルは、同時に最大の弱点でもあります。テーブルに含まれていないパスワード(非常に長い、珍しい文字種を含む、テーブル生成後に設定された複雑なパスワードなど)は原理的に解析できません。
- ソルト(Salt)への非対応: Ophcrack(および一般的なレインボーテーブル)は、ソルト付きハッシュ(各パスワードに固有のランダムなデータを加えてハッシュ化する方式)には基本的に対応していません。Windowsのローカルアカウントハッシュ(LM/NTLM)は伝統的にソルトを使用していませんでしたが、他のシステム(Linuxの最近のshadowパスワードなど)や一部のアプリケーションではソルトが使われており、それらにはOphcrackは適用できません。
- LMハッシュの廃止: Windows Vista以降、LMハッシュはデフォルトで無効化されており、NTLMハッシュのみが使用されます。NTLMハッシュはLMハッシュよりも強力であり、解析がより困難です。
- 強力なパスワードポリシー: 長さが15文字以上で、大文字、小文字、数字、記号を組み合わせた複雑なパスワードは、既存のレインボーテーブルではカバーされていない可能性が高く、解析が非常に困難または不可能になります。
Ophcrackは特定の条件下では非常に高速かつ有効なツールですが、万能ではありません。現代的な強力なパスワードや、他のハッシュアルゴリズム(例: bcrypt, scrypt, Argon2)に対しては、HashcatやJohn the Ripperのような、GPUを活用したブルートフォース/辞書攻撃ツールの方が適している場合があります。
7. 倫理的な考慮事項と法的側面 ⚖️
ophcrack-cliのようなパスワード解析ツールは、正当な目的で使用される限り強力なツールですが、悪用されると深刻なプライバシー侵害やセキュリティインシデントを引き起こす可能性があります。
- 許可の重要性: 自身の所有・管理下にないコンピュータシステムやアカウントに対して、パスワード解析ツールを使用することは、ほとんどの国や地域で違法です。業務でペネトレーションテストなどを行う場合でも、必ず事前に書面による明確な許可を得る必要があります。
- 目的の正当性: パスワードを忘れてしまった自分のアカウントへのアクセス回復、または組織内でのセキュリティ監査や脆弱性評価など、正当な理由と目的を持って使用することが求められます。
- 情報の取り扱い: 解析によって得られたパスワード情報は機密情報として厳重に管理し、不必要に共有したり、漏洩させたりしてはなりません。
不正アクセス禁止法などの法律に違反した場合、刑事罰や民事上の損害賠償請求の対象となる可能性があります。技術的な好奇心からであっても、決して許可なく他者のシステムを対象にしてはいけません。
8. まとめ
ophcrack-cliは、レインボーテーブルを利用してWindowsのパスワードハッシュを高速に解析するためのコマンドラインツールです。
- LMハッシュおよびNTLMハッシュに対応しています。
- 動作には適切なレインボーテーブルが必要です。テーブルは公式サイトなどから入手できます。
- 解析対象のハッシュは、PWDUMP形式のファイルや、SAM/SYSTEMファイルから読み込めます。
-d
,-t
,-f
,-l
などのオプションで動作を制御します。- パスワード回復やセキュリティ監査に役立ちますが、テーブルに依存するため限界もあります。
- 最も重要な点として、必ず許可されたシステムに対してのみ、倫理的に責任ある方法で使用してください。
この記事が、ophcrack-cliの理解と適切な活用の一助となれば幸いです。セキュリティ技術は、常に倫理観を持って正しく使うことが重要です。👍
コメント