この記事では、Moneroウォレットのパスワード回復を試みるためのツール「monero2john」の使い方について詳しく解説します。monero2johnは、有名なパスワードクラッキングツールであるJohn the Ripper (JtR) スイートに含まれるユーティリティの一つです。
重要:パスワードクラッキングツールは、自身が所有するウォレット、または明示的な許可を得たウォレットに対してのみ使用してください。不正な目的での使用は法律に違反する可能性があり、倫理的にも問題があります。ツールの使用は自己責任で行ってください。
MoneroとJohn the Ripperについて
Monero (XMR) とは?
Moneroは、プライバシーを重視した暗号通貨です。取引の送信者、受信者、金額を隠す技術(リング署名、ステルスアドレス、RingCTなど)を使用しており、高い匿名性を提供します。
Moneroウォレットは、ユーザーの秘密鍵や取引履歴を安全に保管するためのソフトウェアまたはハードウェアです。ウォレットファイルは通常、パスワードによって暗号化され保護されています。
John the Ripper (JtR) とは?
John the Ripper (通称John) は、非常に強力で広く使われているオープンソースのパスワードクラッキングツールです。元々はUNIX系のシステムの弱いパスワードを検出するために開発されましたが、現在ではWindowsのLMハッシュ、NTLMハッシュ、各種暗号通貨ウォレット、暗号化されたファイル(ZIP、RAR、PDFなど)、SSH秘密鍵など、数百種類以上のパスワードハッシュや暗号形式に対応しています(特にコミュニティによって機能強化された “Jumbo” バージョン)。
JtRは、主に以下のパスワードクラッキング手法をサポートしています:
- 辞書攻撃 (Wordlist mode): パスワードに使われそうな単語リスト(辞書)を使って試行します。ルール(マングリングルール)を適用して、単語を変化させる(例: `password` -> `P@ssw0rd1`)ことも可能です。
- シングルクラックモード (Single crack mode): ユーザー名やGECOS情報(ユーザーに関するコメント)など、パスワードファイルに含まれる情報からパスワードを推測します。
- インクリメンタルモード (Incremental mode): 文字の組み合わせを総当たりで試行します(ブルートフォース攻撃)。
参考情報:
- John the Ripper 公式サイト: https://www.openwall.com/john/
- Monero 公式サイト: https://www.getmonero.org/
monero2johnとは?
monero2john
は、John the Ripperスイートに含まれるユーティリティスクリプト(多くの場合Pythonスクリプト)です。その主な役割は、Moneroウォレットファイル(通常は.keys
拡張子を持つファイル)から、John the Ripperが解析できる形式の「ハッシュ」文字列を抽出することです。
重要な点として、monero2john
が生成する「ハッシュ」は、伝統的なパスワードハッシュ(例: MD5やSHA-256)とは異なります。実際には、ウォレットファイルの内容全体を16進数文字列にエンコードし、それにファイル名と特定の識別子($monero$0*
)を付加したものです。John the Ripperはこの特殊な形式を認識し、ウォレットの復号を試みる際に、提供されたパスワード候補を使って実際に復号処理を行い、成功するかどうかでパスワードが正しいかを判断します。
つまり、monero2john
はパスワードクラッキングそのものを行うのではなく、John the RipperがMoneroウォレットのパスワードクラッキングを行えるようにするための前処理ツールです。
John the Ripper (monero2johnを含む) の入手とインストール
monero2john
は単体で配布されているわけではなく、John the Ripper “Jumbo” パッケージの一部として提供されています。JtRを入手するには、いくつかの方法があります。
1. パッケージマネージャーを利用する (Linux)
多くのLinuxディストリビューションでは、パッケージマネージャーを使ってJtRをインストールできます。特にKali Linuxのようなペネトレーションテスト用ディストリビューションでは、デフォルトでインストールされていることが多いです。
Debian/Ubuntu系:
sudo apt update
sudo apt install john
Fedora系:
sudo dnf install john
Arch Linux系:
sudo pacman -S john
インストール後、monero2john
スクリプトは通常 /usr/bin/
や /usr/sbin/
、あるいはJtRのインストールディレクトリ内の run
ディレクトリ(ソースからビルドした場合など)に配置されます。場所がわからない場合は、find
コマンドなどで検索できます。
find /usr -name monero2john\*
2. 公式サイトからダウンロードする
OpenwallのJohn the Ripper公式サイトから、最新版のソースコードや、主要なOS(Linux, macOS, Windows)向けのビルド済みバイナリ(”Jumbo” version)をダウンロードできます。
バイナリ版をダウンロードした場合、解凍したディレクトリの中にrun
というサブディレクトリがあり、その中にmonero2john
(またはmonero2john.py
)が含まれています。
3. ソースコードからビルドする
最新機能を利用したい場合や、特定の環境向けに最適化したい場合は、GitHubリポジトリ (https://github.com/magnumripper/JohnTheRipper) からソースコードをクローンし、ビルドすることも可能です。ビルド手順はリポジトリ内のドキュメント (README.md
や INSTALL
ファイル) を参照してください。ビルドには通常、開発ツール(gcc, makeなど)や必要なライブラリ(OpenSSLなど)が必要です。
git clone https://github.com/magnumripper/JohnTheRipper.git
cd JohnTheRipper/src/
./configure && make -s clean && make -sj4
ビルドが成功すると、../run/
ディレクトリに実行ファイルやスクリプト(monero2john
を含む)が生成されます。
monero2johnの使い方
monero2john
の使い方は非常にシンプルです。基本的な構文は以下の通りです。
[JtRのrunディレクトリへのパス]/monero2john [Moneroウォレットの.keysファイルへのパス]
例えば、カレントディレクトリにmy_wallet.keys
というウォレットファイルがあり、JtRのrun
ディレクトリ内にいる場合は、以下のように実行します。
./monero2john my_wallet.keys
実行すると、標準出力にJohn the Ripperが解析可能な形式のハッシュ文字列が出力されます。通常、この出力をファイルにリダイレクト(保存)して、後でJohn the Ripperに渡します。
./monero2john my_wallet.keys > monero_hash.txt
上記のコマンドは、my_wallet.keys
から抽出したハッシュをmonero_hash.txt
というファイルに保存します。
出力されるハッシュ形式
monero2john
が出力するハッシュ文字列は、以下のような形式になります。
ウォレットファイル名:$monero$0*ウォレットファイルの16進数エンコードデータ
例:
my_wallet.keys:$monero$0*7b226b6579735f64617461...(非常に長い16進数文字列)...
この文字列全体が、John the Ripperがパスワードクラッキングを行うための入力となります。
対応するウォレット形式
monero2john
は、主にモダンなJSON形式のMoneroウォレットファイル (.keys
拡張子) に対応しています。これは、おおよそ2016年1月以降に作成されたウォレットが該当します。
John the Ripperでハッシュを解析する
monero2john
でハッシュファイルを生成したら、いよいよJohn the Ripper本体を使ってパスワードクラッキングを試みます。
基本的な実行方法
最も基本的なコマンドは、John the Ripperの実行ファイルにハッシュファイルを指定するだけです。
[JtRのrunディレクトリへのパス]/john [ハッシュファイルへのパス]
例:
./john monero_hash.txt
このコマンドを実行すると、John the Ripperはデフォルトの順番(通常は Single crack mode → Wordlist mode → Incremental mode)でクラッキングを試みます。
Wordlist Mode (辞書攻撃)
特定の単語リスト(辞書ファイル)を使いたい場合は、--wordlist
オプションを使用します。JtRにはデフォルトの辞書 (password.lst
) が付属していますが、より強力な辞書(例: RockYou)や、自分で作成したカスタム辞書を指定できます。
./john --wordlist=/path/to/your/wordlist.txt monero_hash.txt
カスタム辞書の例 (2020年の事例より): 友人のウォレットのパスワードを忘れてしまった際、覚えているパスワードの一部や過去に使った可能性のあるパスワードをリスト化したカスタム辞書ファイル (myWordlist.txt
) を作成し、それを使ってJtRを実行したところ、短時間でパスワードを発見できたという報告があります。
./john --wordlist=myWordlist.txt monero_hash.txt
Rules (マングリングルール)
辞書攻撃と組み合わせて、単語を変化させるルール(マングリングルール)を適用することで、より複雑なパスワードを発見できる可能性が高まります。--rules
オプションでルールセットを指定します。デフォルトのルールセットも利用可能です。
./john --wordlist=password.lst --rules monero_hash.txt
特定のルールセット(例: `KoreLogic`)を指定することもできます(ルールは`john.conf`ファイルで定義されています)。
./john --wordlist=password.lst --rules=KoreLogic monero_hash.txt
Incremental Mode (総当たり攻撃)
特定のモードのみを実行したい場合は、モードを指定するオプションを使います。例えば、インクリメンタルモード(総当たり攻撃)のみを実行する場合は以下のようにします。
./john --incremental monero_hash.txt
文字種を指定することも可能です(例: 小文字アルファベットのみ)。
./john --incremental=Lower monero_hash.txt
総当たり攻撃は非常に時間がかかる可能性があります。
進捗の確認と結果の表示
クラッキングの実行中に任意のキー(Enterなど)を押すと、現在の進捗状況が表示されます。
クラッキングが成功した(または以前に成功した)パスワードを表示するには、--show
オプションを使用します。
./john --show monero_hash.txt
成功したパスワードは、$JOHN/john.pot
(Johnのホームディレクトリ内のjohn.pot
ファイル)にも記録されます。
セッションの中断と再開
クラッキング中にCtrl+C
を押すと、現在の状態を保存してセッションを中断できます。再開するには--restore
オプションを使用します。
./john --restore
(中断したセッション名がデフォルトでない場合は `–restore=[セッション名]` のように指定)
倫理的な考慮事項と注意点 ⚖️
オンラインサービスの利用について
Moneroウォレットの.keys
ファイルをアップロードしてハッシュを抽出するオンラインサービスも存在しますが、これらの利用には極めて慎重であるべきです。
- セキュリティリスク: 悪意のあるサイトは、アップロードされた
.keys
ファイルを盗み、あなたのMoneroを不正に取得しようとする可能性があります。.keys
ファイルとパスワードがあれば、ウォレットの資金にアクセスできてしまいます。 - 信頼性: サービス提供者が信頼できるか、データがどのように扱われるか(即時削除されるか、ログが残らないかなど)を確認することは困難です。
- 推奨事項: 可能な限り、自分自身の信頼できるコンピュータ上で、オフラインで
monero2john
を実行することを強く推奨します。やむを得ずオンラインサービスを利用する場合は、そのリスクを十分に理解し、信頼できると判断できるサービスのみを自己責任で利用してください。
パスワードセキュリティのベストプラクティス
パスワードを忘れてしまう事態を防ぎ、セキュリティを強化するためには、以下の実践が重要です。
- 🔑 強力なパスワードの作成: 長く(15文字以上推奨)、大文字、小文字、数字、記号を組み合わせた、推測されにくい複雑なパスワードを使用する。
- ユニークなパスワード: サービスごとに異なるパスワードを使用する。パスワードの使い回しは避ける。
- パスワードマネージャーの活用: 複雑なパスワードを安全に生成・保管・管理するために、信頼できるパスワードマネージャーを利用する。
- 確実なバックアップ: ウォレットのパスワードや、リカバリーフレーズ(ニーモニックシード)は、安全な場所に複数バックアップし、オフラインで保管する(紙に書いて金庫に保管するなど)。
- 定期的な見直し: パスワードの強度やセキュリティ対策を定期的に見直す。
まとめ
monero2john
は、John the Ripperを使用してMoneroウォレット(.keys
ファイル)のパスワード解析を行うための重要な前処理ツールです。ウォレットファイルからJtRが処理できる形式のハッシュ文字列を抽出します。
パスワードを忘れてしまった自身のウォレットへのアクセスを回復する最後の手段となり得ますが、その使用は常に倫理的かつ合法的な範囲内で行われるべきです。他者のウォレットに対する無許可の使用は絶対に避けてください。
パスワードクラッキングには時間がかかり、成功する保証はありません。日頃から強力なパスワードを設定し、リカバリーフレーズと共に安全にバックアップしておくことが、資産を守るための最も確実な方法です。🛡️
この記事が、monero2john
とJohn the Ripperの適切な理解と利用の一助となれば幸いです。
参考情報
- John the Ripper 公式サイト: https://www.openwall.com/john/
- John the Ripper Community Wiki (GitHub): https://github.com/openwall/john-wiki/wiki
- Monero 公式サイト: https://www.getmonero.org/
コメント