John the Ripper を活用してウォレットのセキュリティを理解する
はじめに: blockchain2john とは? 🤔
blockchain2john
は、有名なパスワードクラッキングツール John the Ripper (JtR) スイートに含まれるユーティリティスクリプトの一つです。その主な目的は、特定のブロックチェーンウォレットファイルから、John the Ripper が解析できる形式のハッシュ値を抽出することです。
John the Ripper 自体は、システム管理者が弱いパスワードを発見したり、セキュリティ監査を行ったりするために設計されたオープンソースのツールです。パスワードがハッシュ化されて保存されている場合、そのハッシュ値から元のパスワードを推測(クラッキング)しようと試みます。blockchain2john
は、このプロセスを暗号通貨ウォレットに応用するための橋渡し役となります。
サポートされているウォレット形式
blockchain2john
は、主に以下の形式のウォレットファイルからハッシュを抽出することを目的としています。
- Blockchain.com (旧 Blockchain.info) ウォレット:
wallet.aes.json
という形式のバックアップファイル。バージョン1, 2, 3 に対応しています。 - Bitcoin Core ウォレット:
wallet.dat
という形式のファイル。 - その他: John the Ripper スイートには、
bitcoin2john.py
(Bitcoin Core 専用),electrum2john.py
(Electrum ウォレット),multibit2john.py
(MultiBit Classic/HD),monero2john.py
(Monero),neo2john.py
(NEO),cardano2john.py
(Cardano),coinomi2john.py
(Coinomi) など、様々な暗号通貨ウォレットに対応するスクリプトが含まれています。目的のウォレットに合わせて適切なスクリプトを選択する必要があります。
特定のウォレット形式やバージョンへの対応は、John the Ripper のバージョンによって更新される可能性があるため、最新のドキュメントやツールのヘルプを確認することをお勧めします。
インストールと準備 🛠️
blockchain2john
は通常、John the Ripper の “jumbo” バージョンに含まれています。Kali Linux のようなペネトレーションテスト用ディストリビューションでは、John the Ripper がプリインストールされていることが多いです。
もし John the Ripper がインストールされていない場合は、お使いのシステムのパッケージマネージャを使用するか、Openwall の公式サイトからソースコードをダウンロードしてコンパイルします。
Kali Linux でのインストール例 (apt を使用):
sudo apt update
sudo apt install john
インストール後、blockchain2john.py
スクリプト (または単に blockchain2john
) がシステムのパスに含まれているか確認します。通常、/usr/bin/
や /usr/sbin/
、あるいは John the Ripper のインストールディレクトリ内の run
サブディレクトリなどに配置されています。
blockchain2john
は Python スクリプトであるため、Python 3 の実行環境が必要です。
依存関係:
多くの場合、追加のライブラリは不要ですが、特定のウォレット形式を扱う際に必要となる Python ライブラリがあるかもしれません。エラーが発生した場合は、エラーメッセージに従って必要なライブラリをインストールしてください (例: pip install base58
など)。
基本的な使い方: ハッシュの抽出 🔑
blockchain2john
の基本的な使い方は非常にシンプルです。コマンドラインでスクリプトを実行し、引数として解析したいウォレットファイルを指定します。
構文:
blockchain2john [ウォレットファイル]
または、Python を明示的に指定する場合:
python /path/to/blockchain2john.py [ウォレットファイル]
例 (wallet.aes.json ファイル):
blockchain2john my_wallet.aes.json
実行結果 (標準出力):
成功すると、John the Ripper が認識できる形式のハッシュ文字列が標準出力に表示されます。この文字列は通常、ファイル名やウォレットのバージョン情報を含み、$blockchain$
やそれに類する識別子で始まります。
my_wallet.aes.json:$blockchain$v2*...(非常に長いハッシュ文字列)...
この出力されたハッシュ文字列をテキストファイルに保存します。後で John the Ripper にこのファイルを読み込ませてパスワードクラッキングを行います。
blockchain2john my_wallet.aes.json > wallet_hash.txt
これで、wallet_hash.txt
というファイルに抽出されたハッシュが保存されました。
オプション
blockchain2john
には、特定の状況で使用できるオプションがあります。
blockchain2john -h
上記コマンドでヘルプメッセージが表示されます。よく使われる可能性のあるオプションは以下の通りです。
--json
: ウォレットが V2 フォーマット (JSON ベース) であることを明示的に指定する場合に使用します。最近の Blockchain.com ウォレットでは必要になることがあります。--base64
: ウォレットファイルの内容が Base64 エンコードされた文字列のみである場合に使用します。古い形式の Blockchain.info ウォレットのバックアップ (メールで送られてきたものなど) で見られることがあります。
例 (–json オプションを使用):
blockchain2john --json my_modern_wallet.aes.json > modern_wallet_hash.txt
John the Ripper によるパスワードクラッキング 🔓
blockchain2john
でハッシュを抽出したら、次はそのハッシュを John the Ripper に渡して、実際のパスワードクラッキングプロセスを開始します。
基本的なコマンド:
john [ハッシュファイル]
先ほど作成したハッシュファイル (wallet_hash.txt
) を指定します。
john wallet_hash.txt
John the Ripper は、まず自動的にハッシュの種類を検出し (この場合は blockchain
フォーマット)、デフォルトのクラッキングモード (Single, Wordlist, Incremental) を順番に試します。
クラッキングモード
John the Ripper にはいくつかの主要なクラッキングモードがあります。
-
Single Crack Mode (
--single
): ハッシュファイルに含まれる情報 (ユーザー名など、ウォレットファイルの場合はファイル名の一部など) を元に、簡単な変形 (大文字小文字変換、数字の追加など) を試します。非常に高速ですが、単純なパスワードしか見つけられません。 -
Wordlist Mode (
--wordlist=FILE
): 指定された単語リスト (辞書) ファイルに含まれる単語をパスワード候補として試します。John the Ripper にはデフォルトのワードリスト (password.lst
) が付属していますが、より大規模なリスト (例: RockYou) を使用すると成功率が上がります。ルール (--rules
) を適用して、単語を様々に変形させることも可能です (例: “password” → “Password123”, “p@sswOrd!”)。これが最も一般的に使用されるモードです。john --wordlist=/path/to/rockyou.txt --rules wallet_hash.txt
-
Incremental Mode (
--incremental
): 指定された文字セット (例: すべての英数字記号) を使って、可能なすべての組み合わせを順番に試す、いわゆるブルートフォース (総当たり) 攻撃です。非常に時間がかかりますが、理論上はどんなパスワードでも見つけられます (ただし現実的な時間内に終わるとは限りません)。
(英数字のみ)john --incremental=Alnum wallet_hash.txt
-
Mask Mode (
--mask=MASK
): パスワードのパターン(マスク)を指定してブルートフォース攻撃を行います。例えば、大文字で始まり、小文字が5文字続き、数字が2文字で終わるパスワード(例: Passwd12)を試したい場合などに有効です。
(john --mask='?u?l?l?l?l?l?d?d' wallet_hash.txt
?u
=大文字,?l
=小文字,?d
=数字)
進捗の確認と結果の表示
クラッキングの実行中に任意のキー (通常は Enter キー) を押すと、現在の進捗状況 (試行速度、経過時間、現在の候補など) が表示されます。
パスワードが見つかると、John the Ripper はそのパスワードと対応するハッシュをターミナルに表示し、john.pot
というファイル (pot ファイル) に記録します。
クラッキングが完了した後や、一度中断した後に、見つかったパスワードを再度表示するには --show
オプションを使用します。
john --show wallet_hash.txt
これにより、wallet_hash.txt
内のハッシュに対応する、既に見つかったパスワードが表示されます。
高度なトピックと考慮事項 🤔
ウォレットのバージョンとフォーマット
Blockchain.com のウォレットは、過去に何度かフォーマットが変更されています (V1, V2, V3, V4 など)。古い V1 フォーマットと新しい V2 以降のフォーマットでは、ハッシュの構造やクラッキングの方法が異なる場合があります。
- V1 (古い Blockchain.info):
blockchain2john.py
が対応していますが、場合によっては--base64
オプションが必要になることがあります。Hashcat ではモード 12700 が該当しますが、反復回数の違いにより問題が発生することが報告されています。 - V2 以降 (JSON ベース):
blockchain2john.py
で--json
オプションが必要になることがあります。Hashcat ではモード 15200 が一般的に使用されます。 - セカンドパスワード: Blockchain.com ウォレットには、メインのパスワードに加えてセカンドパスワードを設定できる機能がありました。セカンドパスワードが設定されている場合、別の抽出スクリプト (例:
extract-blockchain-second-hash.py
) と Hashcat モード (例: 18800) が必要になる場合があります。
パフォーマンス
パスワードクラッキングは計算量が多く、CPU に大きな負荷がかかります。
- CPU コアの活用: John the Ripper はマルチコア CPU を活用できます。
--fork=N
オプションで並列プロセス数を指定できます。john --fork=4 --wordlist=rockyou.txt wallet_hash.txt
- GPU の活用: 特定のハッシュタイプ (残念ながら現在の Blockchain フォーマットは GPU 高速化にあまり適していません) では、GPU を使うことで劇的に速度が向上します。John the Ripper も一部 GPU 対応していますが、GPU クラッキングでは Hashcat がより広く使われています。
大規模なワードリストとルール
成功率を高めるには、大規模で質の高いワードリストの使用が不可欠です。インターネット上には、”RockYou” をはじめとする様々なワードリストが公開されています。また、John the Ripper の強力なルールエンジンを活用して、基本的な単語から複雑なパスワード候補を生成することも重要です。
倫理的な側面と法的リスク
繰り返しになりますが、これらのツールは強力であり、悪用される可能性があります。許可なく他者のアカウントやデータのパスワードをクラッキングすることは、重大な法的・倫理的問題を引き起こします。 日本国内においても、不正アクセス禁止法などに抵触する可能性があります。自分の管理下にあるデータや、明確な許可を得たシステムに対してのみ、セキュリティ評価やパスワードリカバリの目的で使用してください。
まとめ ✨
blockchain2john
は、John the Ripper と組み合わせて、Blockchain.com や Bitcoin Core などの暗号通貨ウォレットファイルのパスワード強度をテストしたり、忘れてしまったパスワードを回復したりするための強力なツールです。
基本的な使い方は、blockchain2john
でウォレットファイルからハッシュを抽出し、そのハッシュを John the Ripper に渡してクラッキングを実行するという流れになります。ワードリスト攻撃やブルートフォース攻撃など、様々な手法を試すことができます。
ただし、このツールの使用は常に倫理的かつ合法的な範囲に留める必要があります。自身のウォレットのセキュリティを見直すきっかけとして、あるいは万が一パスワードを忘れてしまった際の最終手段として、責任を持って利用しましょう。 💪
暗号通貨ウォレットのパスワードは非常に重要です。複雑でユニークなパスワードを設定し、安全な場所にバックアップを保管することを強くお勧めします。
参考情報
- John the Ripper 公式サイト: https://www.openwall.com/john/
- John the Ripper Community Wiki (使い方やオプションの詳細): https://openwall.info/wiki/john/
- Hashcat (GPUベースの高速パスワードクラッカー): https://hashcat.net/hashcat/
コメント