John the Ripper でパスワード解析を行うための準備
はじめに
Windows の標準機能である BitLocker は、ドライブ全体を暗号化することでデータを保護する強力なツールです 💪。しかし、パスワードや回復キーを忘れてしまった場合、あるいは正当な理由(例えば、デジタルフォレンジック調査など)で暗号化されたデータにアクセスする必要がある場合、その解除は困難を極めます。
このような状況で役立つツールの一つが、有名なパスワードクラッキングツール John the Ripper (JtR) と、その関連ツールである bitlocker2john
です。
bitlocker2john
は、BitLocker で暗号化されたボリュームから、John the Ripper が解析できる形式の「ハッシュ」またはメタデータを抽出するために特別に設計されたユーティリティです。この記事では、bitlocker2john
の基本的な使い方と、抽出した情報を John the Ripper でどのように利用できるかについて、ステップバイステップで解説します。
⚠️ 重要:倫理的・法的注意
この記事で紹介するツールや技術は、自身が所有するデバイスやデータ、またはアクセスする正当な権限を持つデバイスやデータに対してのみ使用してください。他人のデータやシステムに不正にアクセスしようとする行為は、法律で厳しく禁じられており、重大な結果を招く可能性があります。ツールの使用は、常に適用される法律、規制、倫理規定に従って行ってください。
BitLocker と John the Ripper の概要
BitLocker とは?
BitLocker ドライブ暗号化は、Windows Vista 以降の特定のバージョンに搭載されているフルディスク暗号化機能です。ドライブ全体(システムドライブ、データドライブ、リムーバブルドライブ)を暗号化し、不正アクセスやデータの盗難から保護します。
BitLocker は主に以下の方法でボリュームへのアクセスを制御します:
- ユーザーパスワード: ユーザーが設定するパスワード。
- 回復キー (Recovery Key): 48桁の数字で構成されるキー。パスワードを忘れた場合などに使用。
- スタートアップキー (Startup Key): USBメモリなどに保存されるキーファイル。TPM非搭載マシンでのシステムドライブ暗号化時などに使用。
- TPM (Trusted Platform Module): マザーボードに搭載されたセキュリティチップ。起動時のシステム整合性を検証し、自動的にロックを解除できます(PINとの組み合わせも可能)。
bitlocker2john
は、これらのうち主にユーザーパスワードまたは回復キーの解析に必要な情報を抽出することを目的としています。
John the Ripper (JtR) とは?
John the Ripper は、オープンソースのパスワードクラッキングツールとして広く知られています。元々は UNIX 系のパスワードハッシュを解析するために開発されましたが、現在では非常に多くの種類のハッシュ形式や暗号化フォーマットに対応しています。
JtR は様々な攻撃手法をサポートしています:
- 辞書攻撃 (Wordlist Mode): パスワードの候補リスト(辞書ファイル)を使って試行します。
- インクリメンタルモード (Incremental Mode): 指定された文字セットとルールに基づいてパスワードを生成し、総当たり的に試行します。
- シングルクラックモード (Single Crack Mode): ユーザー名などの情報から推測されるパスワードを試します。
- 外部モード (External Mode): カスタムルールを定義してパスワード候補を生成します。
JtR は、bitlocker2john
によって抽出された BitLocker のハッシュ情報を入力として受け取り、上記の攻撃手法を用いて元のパスワードや回復キーを発見しようと試みます。
bitlocker2john の準備と入手
必要なもの
- John the Ripper (Jumbo バージョン):
bitlocker2john
は、John the Ripper のコミュニティ強化版である “Jumbo” パッケージに含まれていることが一般的です。公式ウェブサイトや GitHub リポジトリから入手できます。ソースコードからコンパイルするか、ビルド済みのバイナリを使用します。 - BitLocker で暗号化されたボリュームまたはイメージファイル: 解析対象となる物理ドライブ、パーティション、または dd コマンドなどで作成したディスクイメージファイルが必要です。
- 適切な権限: 対象となるドライブやイメージファイルにアクセスするための読み取り権限が必要です。Linux 環境などでは、root 権限が必要になる場合があります。
- Python 環境 (場合による):
bitlocker2john
は Python スクリプトとして提供されている場合もあります。その場合は、対応する Python の実行環境が必要です。
bitlocker2john の入手方法
最も一般的な方法は、John the Ripper (Jumbo) を入手することです。
- John the Ripper 公式サイト または GitHub リポジトリ にアクセスします。
- “Jumbo” バージョンをダウンロードまたはクローンします。
- ソースコードからビルドする場合、リポジトリ内の指示に従ってコンパイルします (通常は
./configure && make
のような手順)。 - コンパイルが成功すると、
run
ディレクトリ内にbitlocker2john
実行ファイル(またはスクリプト)が生成されます。
bitlocker2john
が見つからない場合は、JtR のビルドプロセス中に依存関係が満たされなかったか、オプションが無効になっていた可能性があります。ビルド時のログを確認してください。
💡 ヒント
多くの Linux ディストリビューションでは、パッケージマネージャを通じて john
または john-jumbo
パッケージをインストールできます。これには bitlocker2john
が含まれていることが多いです。
例 (Debian/Ubuntu): sudo apt install john
bitlocker2john の使い方
基本的な構文
bitlocker2john
の基本的な使い方は非常にシンプルです。主に -i
オプションで入力となる BitLocker ボリューム(またはイメージファイル)を指定します。出力は標準出力に表示されるため、通常はファイルにリダイレクトします。
# John the Ripper の run ディレクトリにいる場合
./bitlocker2john -i /path/to/bitlocker_volume > bitlocker_hash.txt
# パスが通っている場合
bitlocker2john -i /dev/sdXN > bitlocker_hash.txt
-i /path/to/bitlocker_volume
: 解析対象の BitLocker ボリュームを指定します。これは物理デバイス(例:/dev/sdb1
)や、ディスクイメージファイル(例:drive_image.dd
)へのパスです。> bitlocker_hash.txt
: 抽出されたハッシュ情報をbitlocker_hash.txt
という名前のファイルに保存します。ファイル名は任意です。
ハッシュ情報の形式
bitlocker2john
が出力するハッシュ情報は、John the Ripper が理解できる特定の形式になっています。通常、以下のような形式になります(これはあくまで例であり、実際の出力は異なります)。
volume_label:$bitlocker$0$16$....長い16進数文字列....$60$....さらに長い16進数文字列....
この文字列には、暗号化の種類、ソルト、暗号化されたキープロテクターなど、パスワードや回復キーを検証するために必要な情報が含まれています。
$bitlocker$
: このハッシュが BitLocker のものであることを示す識別子です。- 続く数字や文字列: 暗号化のバージョン、必要なメタデータ、暗号化されたキー情報などがエンコードされています。
一つの BitLocker ボリュームには、複数のキープロテクター(例:パスワード用、回復キー用)が存在する場合があります。bitlocker2john
は、検出したすべてのキープロテクターに対応するハッシュ情報を出力することがあります。そのため、出力ファイルには複数の行が含まれる可能性があります。
実行例
以下に、具体的なシナリオでの実行例を示します。
例1: 物理デバイス /dev/sdb1 を対象とする場合 (Linux)
# root 権限が必要な場合がある
sudo ./bitlocker2john -i /dev/sdb1 > sdb1_hash.txt
例2: ディスクイメージファイル ‘encrypted_drive.img’ を対象とする場合
./bitlocker2john -i encrypted_drive.img > encrypted_drive_hash.txt
🚨 注意点
- アクセス権限: デバイスファイル (
/dev/sdXN
など) にアクセスするには、通常 root 権限が必要です。sudo
を使用するか、root として実行してください。 - ボリュームの特定: 正しい BitLocker ボリュームを指定していることを確認してください。間違ったパーティションやドライブを指定すると、エラーが発生するか、意味のないデータが出力されます。
- 破損したボリューム: ボリュームのメタデータが著しく破損している場合、
bitlocker2john
がハッシュを正常に抽出できないことがあります。
John the Ripper でハッシュを解析する
bitlocker2john
でハッシュ情報をファイル (bitlocker_hash.txt
など) に保存したら、次はこのファイルを John the Ripper に渡して、実際のパスワードや回復キーの解析(クラッキング)を試みます。
基本的なコマンド
最も基本的な John the Ripper の実行コマンドは以下のようになります。
# John the Ripper の run ディレクトリにいる場合
./john bitlocker_hash.txt
# パスが通っている場合
john bitlocker_hash.txt
このコマンドを実行すると、John the Ripper はデフォルトのモード(通常はシングルクラックモード、辞書モード、インクリメンタルモードの順)で解析を開始します。ハッシュ形式 (bitlocker
) は通常、ファイルの内容から自動的に検出されます。
攻撃モードの指定
より効率的に解析を行うために、攻撃モードやオプションを指定することが推奨されます。
辞書攻撃 (Wordlist Mode)
特定の単語リスト(辞書ファイル)を使用してパスワードを試すモードです。強力な辞書ファイルを用意できれば、比較的短い時間で一般的なパスワードを発見できる可能性があります。
./john --wordlist=/path/to/password.lst bitlocker_hash.txt
--wordlist=/path/to/password.lst
: 使用する辞書ファイルのパスを指定します。
ルールベースの変形(例: 大文字小文字変換、数字の追加など)と組み合わせることも可能です (--rules
オプション)。
インクリメンタルモード (Incremental Mode)
指定された文字セットを使って、可能なすべての組み合わせを生成し試行する、いわゆる総当たり攻撃(ブルートフォースアタック)です。単純なパスワードに対しては有効ですが、パスワードが長くなると計算量が爆発的に増加し、現実的な時間内での解析が困難になります。
./john --incremental bitlocker_hash.txt
特定の文字セットを指定することもできます(例: --incremental=Digits
は数字のみ)。
フォーマットの明示的な指定
John the Ripper がハッシュ形式を自動検出できない場合や、複数の形式が考えられる場合に、フォーマットを明示的に指定すると役立ちます。BitLocker の場合は bitlocker
を指定します。
./john --format=bitlocker bitlocker_hash.txt
解析結果の表示
John the Ripper がパスワードや回復キーの解析に成功すると、その結果は通常 $JOHN/john.pot
(デフォルトのポットファイル) に保存されます。解析が完了した後や、中断した後に、発見されたパスワードを確認するには --show
オプションを使用します。
./john --show bitlocker_hash.txt
成功した場合、以下のような形式で表示されます。
volume_label:FoundPassword123
回復キーが見つかった場合は、48桁の数字が表示されます。
💡 パフォーマンスについて
BitLocker のパスワード/回復キーの解析は、計算負荷が非常に高い処理です。特にユーザーパスワードの解析は、使用されているハッシュアルゴリズム (PBKDF2) の反復回数によっては、非常に時間がかかります ⏳。強力な CPU や、対応している場合は GPU を使用することで、解析速度を向上させることができます (--fork=N
や OpenCL/CUDA 対応ビルドなど)。しかし、それでも複雑で長いパスワードの解析には数日から数年、あるいはそれ以上かかる可能性があります。
回復キー (48桁の数字) の解析は、形式が固定されているため、ユーザーパスワードよりもターゲットを絞りやすい場合がありますが、それでも探索空間は広大です。
実践的なステップと考慮事項
ステップのまとめ
BitLocker ボリュームのパスワード/回復キー解析の一般的な流れをまとめます。
- 準備:
- John the Ripper (Jumbo) と
bitlocker2john
を準備・インストールします。 - 解析対象の BitLocker ボリューム(物理ドライブ or イメージファイル)を用意します。
- 必要に応じて、強力な辞書ファイルを用意します。
- John the Ripper (Jumbo) と
- ハッシュ抽出:
bitlocker2john
を使用して、対象ボリュームからハッシュ情報を抽出します。- 例:
./bitlocker2john -i /path/to/volume > hash.txt
- 解析実行:
- John the Ripper を使用して、抽出したハッシュファイルを解析します。
- 例 (辞書攻撃):
./john --wordlist=pass.lst hash.txt
- 例 (デフォルト):
./john hash.txt
- 待機と確認:
- 解析には時間がかかる場合があります。中断・再開も可能です (セッション機能)。
- 定期的に
--show
オプションで結果を確認します。 - 例:
./john --show hash.txt
重要な考慮事項
- 法的・倫理的な側面: 前述の通り、絶対に許可なく他人のデータにアクセスしようとしないでください。常に合法かつ倫理的な範囲内でツールを使用してください。
- 時間とリソース: BitLocker の解析は非常に時間がかかる可能性があります。特に、長く複雑なユーザーパスワードの場合、現実的な時間内での解読はほぼ不可能です。回復キーについても、総当たりは現実的ではありません。辞書攻撃や、ターゲットに関する情報に基づいたカスタム辞書が有効な場合があります。
- 成功の保証はない: パスワードの強度、使用する辞書、利用可能な計算リソースによっては、解析が成功しないことも十分にありえます。
- BitLocker のバージョンと設定: BitLocker の設定(例: TPM のみの保護、AES 256bit 暗号化など)によっては、
bitlocker2john
が対象とするキープロテクターが存在しない、あるいは解析がより困難になる場合があります。 - 代替手段: パスワードや回復キーを本当に忘れてしまった場合、組織の IT 部門がキーを管理している場合(Active Directory バックアップなど)や、Microsoft アカウントに回復キーがバックアップされている場合があります。これらの正規の回復手段をまず確認することが重要です。
まとめ
bitlocker2john
は、BitLocker で暗号化されたボリュームから John the Ripper で解析可能なハッシュ情報を抽出するための重要なツールです。このツールと John the Ripper を組み合わせることで、忘れてしまったパスワードや回復キーを特定できる可能性があります。
しかし、そのプロセスは技術的な知識を要し、特にパスワード解析の部分は膨大な時間と計算リソースを必要とする場合があります。また、ツールの使用にあたっては、法的な側面と倫理的な側面を十分に考慮し、正当な権限を持つデータに対してのみ使用することが不可欠です。
この記事が、bitlocker2john
の使い方を理解し、適切な状況で活用するための一助となれば幸いです ✨。
参考情報
- John the Ripper official website: https://www.openwall.com/john/
- John the Ripper Community Wiki (GitHub): https://github.com/openwall/john-packages/wiki (使い方やフォーマットに関する情報が含まれることがあります)
コメント