John the Ripper スイートの一部である rar2john
の使い方を学び、パスワードで保護されたRARアーカイブからハッシュを抽出する方法を探ります。
はじめに:rar2johnとは?
rar2john
は、強力なパスワードクラッキングツールである John the Ripper (JtR) スイートに含まれるユーティリティの一つです。その主な目的は、パスワードで保護されたRARアーカイブファイル(.rar
)から、John the Ripperが解析できる形式の「ハッシュ」情報を抽出することです。
RARファイルは、データを圧縮して保存するため、またオプションでパスワードによる暗号化を行うために広く使われています。しかし、パスワードを忘れてしまった場合や、セキュリティ監査の一環としてパスワードの強度をテストする必要がある場合、そのアーカイブにアクセスできなくなることがあります。ここで rar2john
と John the Ripper が役立ちます。
💡 重要ポイント
rar2john
はRARファイルからJohn the Ripper用のハッシュを抽出します。- John the Ripper (JtR) は、抽出されたハッシュを使用してパスワードのクラッキング(解析)を試みます。
- これらのツールは、パスワードリカバリやセキュリティ評価の目的で使用されます。倫理的な使用を心がけてください。
rar2john
自体はパスワードを解読するわけではありません。あくまで、JtRが解読作業を行うために必要な情報をRARファイルから取り出す「前処理」ツールです。抽出されたハッシュは、元のパスワードそのものではなく、パスワードから計算された暗号学的データと、解析に必要なメタデータ(ソルト、ファイル情報など)を含んでいます。
このブログ記事では、rar2john
のインストール方法、基本的な使い方、出力されるハッシュ形式の理解、そしてJohn the Ripperと連携して実際にパスワード解析を行う手順について詳しく解説していきます。
rar2johnのインストール方法
rar2john
は通常、John the Ripperの「Jumbo」バージョン(コミュニティによって拡張された機能豊富なバージョン)に含まれています。そのため、rar2john
を利用するには、John the Ripper (Jumbo) をインストールする必要があります。インストール方法はOSによって異なります。
一般的なLinuxディストリビューション (Debian/Ubuntu系)
APTパッケージマネージャーを使用してインストールするのが最も簡単です。
sudo apt update
sudo apt install john
これにより、John the Ripper (多くの場合 Jumbo バージョン) と、rar2john
などの関連ツールがインストールされます。
一般的なLinuxディストリビューション (Fedora/CentOS/RHEL系)
YUMまたはDNFパッケージマネージャーを使用します。
sudo dnf install john
# または
sudo yum install john
macOS
Homebrewを使用するのが一般的です。
brew install john
# または john-jumbo が利用可能な場合
brew install john-jumbo
ソースコードからコンパイル
最新版や特定の機能が必要な場合、またはディストリビューションのパッケージが古い場合は、ソースコードからコンパイルすることも可能です。John the Ripperの公式GitHubリポジトリ (Openwall) からソースコードをクローンし、手順に従ってビルドします。
git clone https://github.com/openwall/john -b bleeding-jumbo john
cd john/src/
./configure
make -s clean && make -sj4
コンパイル後、実行ファイルは john/run/
ディレクトリ内に生成されます。rar2john
もこのディレクトリに含まれます。
cd ../run
ls rar2john
インストールの確認
インストール後、ターミナルで rar2john
コマンドを実行して、ヘルプメッセージやバージョン情報が表示されるか確認してください。エラーが出る場合は、パスが通っていないか、インストールに失敗している可能性があります。
rar2john
# またはコンパイルした場合
./rar2john
command not found
のようなエラーが出る場合は、john
コマンドの前に john.
や john-the-ripper.
を付けて試す必要があるかもしれません (snap でインストールした場合など)。あるいは、john/run
ディレクトリに移動して ./rar2john
として実行する必要があります。
⚠️ 注意
rar2john
は John the Ripper のJumboバージョンに含まれることが一般的です。標準の John the Ripper には含まれていない場合があります。ディストリビューションによっては john
パッケージが Jumbo バージョンを指していることが多いですが、もし rar2john
が見つからない場合は、Jumbo バージョンを明示的にインストールするか、ソースからビルドすることを検討してください。
基本的な使い方:RARファイルからハッシュを抽出
rar2john
の基本的な使い方は非常にシンプルです。コマンドラインで rar2john
の後に、対象となるRARファイル名を指定します。
rar2john [対象のRARファイル]
例えば、myarchive.rar
という名前のRARファイルからハッシュを抽出したい場合は、以下のように実行します。
rar2john myarchive.rar
rar2john
は、指定されたRARファイルを解析し、パスワードで保護されたファイルが見つかると、そのハッシュ情報を標準出力(通常はターミナル画面)に出力します。
ハッシュ情報をファイルに保存する
John the Ripper でこのハッシュ情報を使用するためには、通常、ファイルに保存する必要があります。これは、シェルのリダイレクト機能(>
)を使って簡単に行えます。
rar2john myarchive.rar > rar_hashes.txt
このコマンドは、rar2john
の出力を rar_hashes.txt
という名前のファイルに書き込みます。ファイル名は任意ですが、後で分かりやすい名前を付けることをお勧めします(例:target_archive.hashes
など)。
複数のRARファイルを処理する
rar2john
は複数のRARファイルを一度に指定することもできます。
rar2john file1.rar file2.rar another.rar > all_rar_hashes.txt
これにより、指定されたすべてのRARファイルから抽出されたハッシュが、指定した出力ファイルにまとめて保存されます。
分割されたRARアーカイブの場合: .part1.rar
, .part2.rar
のような分割アーカイブの場合、通常は最初のパート (.part1.rar
または単に .rar
) を rar2john
に指定すれば、必要な情報が抽出できることが多いです。ただし、アーカイブの作成方法によっては、すべてのパートが必要になる場合や、うまく動作しない可能性も報告されています。問題が発生した場合は、テスト用の分割アーカイブを作成して動作を確認することをお勧めします。
詳細情報の表示 (Verbosity)
-v
オプションを使用すると、処理中に追加のデバッグ情報や詳細な情報を表示させることができます。問題のトラブルシューティングに役立つ場合があります。
rar2john -v myarchive.rar
✅ 成功時の出力例
成功すると、以下のような形式の文字列が出力されます(これはあくまで例であり、内容は異なります)。
myarchive.rar:$RAR3$*0*xxxxxxxxxxxxxxxx*yyyyyyyyyyyyyyyy:...
または RAR5 の場合:
myarchive.rar:$rar5$16$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$15$yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy$8$zzzzzzzzzzzzzzzz:...
この出力された行が、John the Ripper がパスワード解析に使用するハッシュ情報です。
❌ エラー:”No password protected files found.”
このメッセージが表示された場合、指定したRARアーカイブ内にパスワードで保護されたファイルが見つからなかったことを意味します。ファイルが本当にパスワード保護されているか、またはファイルが破損していないか確認してください。
❌ エラー:”bad rar crypt version byte” やその他のエラー
これは、RARファイルの形式が rar2john
でサポートされていないか、ファイルが破損している可能性を示します。特に、非常に古いバージョンのRARや、特殊な方法で作成されたRARファイルの場合に発生することがあります。また、RARファイルではないファイルを誤って指定した場合にもエラーが出ることがあります。
出力されるハッシュ形式の理解
rar2john
が出力する文字列は、一見するとランダムな文字列に見えますが、John the Ripper がパスワード解析を行うために必要な情報が特定の形式でエンコードされています。主な形式として RAR3 と RAR5 があります。
RAR3 ハッシュ形式
RAR バージョン 3 形式のアーカイブから抽出されたハッシュは、一般的に以下のような構造を持っています。
[アーカイブ名]:$RAR3$*[タイプ]*[16進数のソルト]*[16進数のデータ]:[追加情報]
- [アーカイブ名]: ハッシュが抽出された元のRARファイル名。John the Ripper は通常この部分を無視しますが、どのハッシュがどのファイルに対応するかを人間が識別するのに役立ちます。
- $RAR3$: このハッシュがRAR3形式であることを示す識別子。
- [タイプ]: 暗号化の種類を示します。
*0*
: ヘッダー暗号化 (rar -hp ...
オプションで作成されたもの)。ファイルリスト自体が暗号化されており、パスワードなしでは内容が見えません。*1*
: ファイルデータ暗号化 (rar -p ...
オプションで作成されたもの)。ファイルリストは見えるが、個々のファイルを展開する際にパスワードが必要です。
- [16進数のソルト]: パスワードハッシュ計算に使用されるランダムな値(ソルト)。同じパスワードでもソルトが異なればハッシュ値も異なります。
- [16進数のデータ]: タイプによって内容が異なります。
- タイプ0の場合: 暗号化されたファイルコンテンツの一部(最初の数バイトなど)。
- タイプ1の場合: CRCチェックサム、圧縮サイズ、非圧縮サイズ、ファイルの内容(一部または全部)、暗号化方式などの情報が含まれます。
- [追加情報]: タイプ1の場合、ファイル名などの追加情報が含まれることがあります。
例 (タイプ0 – ヘッダー暗号化):
secret_files.rar:$RAR3$*0*a1b2c3d4e5f6a7b8*f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5::::secret_files.rar
例 (タイプ1 – ファイルデータ暗号化):
document.rar:$RAR3$*1*a1b2c3d4e5f6a7b8*98765432*1024*2048*0*document.rar*12345*30:1::MyDocument.txt
RAR5 ハッシュ形式
RAR バージョン 5 はより新しい形式で、異なる暗号化方式(AES-256)を使用しています。rar2john
が出力するハッシュ形式も異なります。
[アーカイブ名]:$rar5$[...]
RAR5のハッシュ形式はより複雑で、複数のフィールドが $
で区切られています。これには、ソルト、イテレーションカウント、暗号化された検証データなどが含まれます。
例 (RAR5):
archive_v5.rar:$rar5$16$5f8a[...]c3b2$15$d4e5[...]a1b2$8$f0e1[...]9876
([…] は長い16進文字列の省略を示します)
John the Ripper での利用
John the Ripper は、これらのハッシュ形式を自動的に認識し、適切なアルゴリズム(RAR3
や RAR5
)を選択してパスワード解析を試みます。ユーザーは通常、ハッシュ形式を明示的に指定する必要はありませんが、場合によっては --format=rar3
や --format=rar5
オプションで指定することも可能です。
ℹ️ Hashcatでの利用
rar2john
で抽出したハッシュは、別の強力なパスワード解析ツールである Hashcat でも利用できる場合があります。ただし、Hashcat は特定のRARタイプ(主にヘッダー暗号化されたRAR3タイプ -m 12500
やRAR5タイプ -m 13000
)のみをサポートしていることが多く、rar2john
の出力形式をそのまま利用できない場合や、一部を編集(ファイル名部分の削除など)する必要がある場合があります。詳細は Hashcat のドキュメントやフォーラムを確認してください。
John the Ripper でハッシュを使用する
rar2john
でRARファイルからハッシュ情報を抽出し、ファイル(例: rar_hashes.txt
)に保存したら、次はいよいよ John the Ripper を使ってパスワードの解析を試みます。
基本的なクラッキングコマンド
最も基本的なコマンドは、John the Ripper の実行ファイル名(通常は john
)の後に、ハッシュファイル名を指定するだけです。
john rar_hashes.txt
これを実行すると、John the Ripper はまずデフォルトのモード(Single Crack Mode)で解析を試みます。これは、ハッシュファイル内のユーザー名(この場合はアーカイブ名)や GECOS 情報(Unix系システムの場合)からパスワードを推測しようとするモードです。その後、組み込みのルールやデフォルトのワードリスト(存在する場合)を使って解析を進めます。
ワードリスト攻撃 (Dictionary Attack)
より効果的な方法の一つが、ワードリスト(パスワード候補の単語リスト)を使用した攻撃です。--wordlist
オプションでワードリストファイルを指定します。
john --wordlist=/path/to/your/wordlist.txt rar_hashes.txt
/path/to/your/wordlist.txt
の部分を、使用したいワードリストファイルの実際のパスに置き換えてください。Kali Linux などには、/usr/share/wordlists/rockyou.txt
といった有名なワードリストがプリインストールされていることがあります。
john --wordlist=/usr/share/wordlists/rockyou.txt rar_hashes.txt
ワードリスト攻撃では、リスト内の各単語がパスワード候補として試されます。
ルールベース攻撃
ワードリスト攻撃と組み合わせて、ルール(単語の変形規則、例: 大文字小文字変換、数字や記号の追加など)を適用することもできます。これにより、単純な単語だけでなく、より複雑なパスワードも発見できる可能性が高まります。
john --wordlist=/path/to/your/wordlist.txt --rules=KoreLogic rar_hashes.txt
--rules=KoreLogic
のように、定義済みのルールセット名を指定するか、独自のルールファイルを指定します。John the Ripper にはデフォルトでいくつかのルールセットが含まれています。
インクリメンタルモード (Brute-force)
特定の文字セット(例: 数字のみ、英小文字のみなど)を使って、可能性のあるすべての組み合わせを試すブルートフォース攻撃も可能です。これは --incremental
オプションで指定します。
john --incremental=Digits rar_hashes.txt
Digits
は数字のみを試すモードです。他にも Alnum
(英数字)、Alpha
(英字のみ)、LowerNum
(英小文字と数字)など、様々な定義済みモードがあります。独自の文字セットを定義することも可能です。
注意: ブルートフォース攻撃は、パスワード長が長くなると組み合わせが爆発的に増加するため、非常に時間がかかる可能性があります。
解析状況の確認と結果の表示
John the Ripper の実行中に Enter キーを押すと、現在の解析状況(試行速度、経過時間、現在の候補など)が表示されます。
パスワードが見つかると、John the Ripper はそれを画面に表示し、john.pot
というファイル(ポットファイル)に記録します。解析を中断して後で再開することも可能です。john.pot
ファイルが存在する場合、John は自動的に中断したところから再開します。
既に見つかったパスワードを表示するには、--show
オプションを使用します。
john --show rar_hashes.txt
これにより、rar_hashes.txt
に含まれるハッシュのうち、既に対応するパスワードが見つかっているものが [ハッシュ]:[パスワード]
の形式で表示されます。
🚀 パフォーマンス向上のヒント
- 強力なハードウェア: CPUコア数が多いほど、また高性能なGPUを持っている場合(John the Ripper がGPUをサポートする形式の場合、OpenCL版などを使用)、解析速度は大幅に向上します。
- 適切なモード選択: パスワードに関する情報(長さ、使用文字種など)が少しでも分かっている場合は、それに合わせてワードリストやインクリメンタルモードのパラメータを絞り込むことで、効率的に解析できます。
- 良質なワードリスト: よく使われるパスワードや、ターゲットに関連する可能性のある単語を含む質の高いワードリストを使用することが重要です。
トラブルシューティングと注意点
rar2john
や John the Ripper を使用する際には、いくつかの一般的な問題や注意点があります。
rar2john の問題
command not found
エラー:- John the Ripper (Jumbo) が正しくインストールされていない、またはパスが通っていない可能性があります。インストール方法を確認し、必要であれば
john/run
ディレクトリから直接./rar2john
を実行してみてください。 - Snap でインストールした場合などは
john.rar2john
やjohn-the-ripper.rar2john
のようにプレフィックスが必要な場合があります。
- John the Ripper (Jumbo) が正しくインストールされていない、またはパスが通っていない可能性があります。インストール方法を確認し、必要であれば
No password protected files found.
:- 指定したRARファイルにパスワードで保護されたコンテンツが含まれていないか、ファイルが破損している可能性があります。別のツールでRARファイルが開けるか確認してください。
bad rar crypt version byte
/ サポートされていない形式:- 使用している
rar2john
が、対象のRARファイルのバージョンや暗号化方式をサポートしていない可能性があります。John the Ripper (Jumbo) を最新版にアップデートしてみてください。 - RARファイル自体が破損している可能性もあります。
- 2022年頃のアップデートで、非RARファイルを誤ってRAR5として検出し、不正なハッシュを出力する問題が修正されました。古いバージョンを使用している場合は注意が必要です。
- 使用している
- 分割アーカイブでの問題:
- 分割されたRARアーカイブ (
.part01.rar
,.part02.rar
…) の扱いがうまくいかない場合があります。通常は最初のパートを指定すれば動作しますが、確実ではありません。可能であれば、分割されていない単一のRARファイルに対して試すのが最も確実です。
- 分割されたRARアーカイブ (
- 大きなファイルでの Segmentation Fault:
- 非常に大きなRARファイル(数GB以上)を処理しようとすると、メモリ不足などで Segmentation Fault が発生する可能性が報告されています (2018年頃)。
John the Ripper の問題
No password hashes loaded
:rar2john
で生成したハッシュファイルが空か、John the Ripper が認識できない形式になっている可能性があります。rar2john
が正しく実行され、有効なハッシュが出力されているか確認してください。- ハッシュファイルに余計な文字や空行が含まれていないか確認してください。
--format
オプションを誤って使用している可能性があります。John は通常ハッシュタイプを自動検出するため、このオプションは通常不要です。もしJohnがタイプを誤認する場合(例:RAR5なのにRAR3と認識される)にのみ指定します。
- ハッシュタイプの誤認識:
- John the Ripper がハッシュタイプを誤って認識することが稀にあります(例:RAR5をRAR3と誤認)。その場合は
--format=rar5
のように明示的に指定する必要があります。
- John the Ripper がハッシュタイプを誤って認識することが稀にあります(例:RAR5をRAR3と誤認)。その場合は
- 解析に時間がかかりすぎる:
- RARの暗号化は比較的強力なため、特に複雑なパスワードや長いパスワードの場合、解析には膨大な時間がかかることがあります。ハードウェアの性能、ワードリストの質、選択した攻撃モードなどが影響します。
倫理的な考慮事項と法的側面 (重要)
rar2john
や John the Ripper などのパスワード解析ツールは、正当な目的(自分が所有するファイルで忘れたパスワードの回復、許可を得た上でのシステムセキュリティ監査など)にのみ使用してください。
他人のファイルやシステムに対して、許可なくこれらのツールを使用することは、多くの国や地域で違法行為となり、重大な法的結果を招く可能性があります。
これらのツールの知識は、防御策を理解し、より安全なパスワードを設定・管理するために活用されるべきです。
まとめ
rar2john
は、パスワードで保護されたRARアーカイブのセキュリティ評価やパスワード回復プロセスにおいて、John the Ripper と連携するための重要なユーティリティです。この記事では、以下の点について解説しました。
- ✅
rar2john
の概要と目的 - ⚙️ John the Ripper (Jumbo) の一部としてのインストール方法
- ⌨️ RARファイルからハッシュ情報を抽出する基本的なコマンドライン操作
- 📄 出力されるRAR3およびRAR5ハッシュ形式の構造
- 🔥 John the Ripper を使って抽出したハッシュからパスワード解析を行う方法(各種モード)
- ⚠️ 一般的なトラブルシューティングと倫理的な注意点
rar2john
と John the Ripper を組み合わせることで、忘れてしまったRARファイルのパスワードを回復できる可能性がありますが、解析には時間と計算リソースが必要であり、成功が保証されるわけではありません。また、これらのツールは強力であるため、常に法と倫理を遵守して責任ある使用を心がけることが極めて重要です。
パスワードセキュリティの重要性を理解し、自身のアカウントやファイルには推測されにくい強力なパスワードを設定することが、このようなツールによる解析を防ぐための最も効果的な対策となります。🛡️
参考情報
- John the Ripper 公式サイト: https://www.openwall.com/john/
- John the Ripper GitHub リポジトリ (Jumbo): https://github.com/openwall/john (rar2john.c のソースコードも含まれます)
- John the Ripper Wiki (Hashcat Wiki内ですが関連情報あり): https://hashcat.net/wiki/doku.php?id=john_the_ripper
コメント