monero2johnの使い方:Moneroウォレットのパスワードを解析する 🕵️‍♂️

セキュリティツール

この記事では、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): 文字の組み合わせを総当たりで試行します(ブルートフォース攻撃)。

参考情報:

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.mdINSTALL ファイル) を参照してください。ビルドには通常、開発ツール(gcc, makeなど)や必要なライブラリ(OpenSSLなど)が必要です。

git clone https://github.com/magnumripper/JohnTheRipper.git
cd JohnTheRipper/src/
./configure && make -s clean && make -sj4

ビルドが成功すると、../run/ ディレクトリに実行ファイルやスクリプト(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月以降に作成されたウォレットが該当します。

注意: 古い形式のウォレット

2016年以前の古い、JSON形式ではないレガシーなMoneroウォレットファイルの場合、標準のmonero2johnでは対応していない可能性があります。一部の研究やパッチによって古い形式への対応が試みられていますが、標準のJumboリリースに含まれているかはバージョンによります。もし古いウォレットのパスワード回復を試みる場合は、JtRのバージョンや対応状況を確認する必要があります。

また、monero2johnはMonero公式のウォレットソフトウェアで生成された.keysファイルを対象としています。他のサードパーティ製ウォレットや異なる形式のファイルには対応していない可能性があります。

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ウォレットのパスワードクラッキングは計算負荷の高い処理です。特にパスワードが複雑な場合や、総当たり攻撃を行う場合は、高性能なCPUやGPUが必要となり、それでも完了までに非常に長い時間がかかる可能性があります。

John the RipperはOpenMPによるマルチスレッド処理や、特定のフォーマットではOpenCLによるGPUアクセラレーションに対応しています。環境に合わせてこれらの機能を活用することで、クラッキング速度を向上させることができます。

また、Moneroウォレットの復号処理では、ChaCha20または古いバージョンのChaCha8という暗号アルゴリズムが使われています。JtRは両方を試すため、これもパフォーマンスに影響します。

倫理的な考慮事項と注意点 ⚖️

法的・倫理的リスク

  • 許可のないアクセスは厳禁: 自分自身が所有権を持つウォレット、または所有者から明確な書面による許可を得たウォレットに対してのみ、パスワード回復・テストツールを使用してください。他人のウォレットに対して無許可でこれらのツールを使用することは、多くの国や地域で違法行為(不正アクセス禁止法など)に該当し、重大な法的結果を招く可能性があります。
  • ツールの悪用禁止: John the Ripperのような強力なツールは、セキュリティ評価や正当なパスワード回復以外の目的(窃盗、プライバシー侵害など)に悪用してはなりません。
  • 地域の法律とポリシーの遵守: お住まいの国や地域、所属する組織のセキュリティポリシーや利用規約を必ず確認し、遵守してください。

オンラインサービスの利用について

Moneroウォレットの.keysファイルをアップロードしてハッシュを抽出するオンラインサービスも存在しますが、これらの利用には極めて慎重であるべきです

  • セキュリティリスク: 悪意のあるサイトは、アップロードされた.keysファイルを盗み、あなたのMoneroを不正に取得しようとする可能性があります。.keysファイルとパスワードがあれば、ウォレットの資金にアクセスできてしまいます。
  • 信頼性: サービス提供者が信頼できるか、データがどのように扱われるか(即時削除されるか、ログが残らないかなど)を確認することは困難です。
  • 推奨事項: 可能な限り、自分自身の信頼できるコンピュータ上で、オフラインでmonero2johnを実行することを強く推奨します。やむを得ずオンラインサービスを利用する場合は、そのリスクを十分に理解し、信頼できると判断できるサービスのみを自己責任で利用してください。

パスワードセキュリティのベストプラクティス

パスワードを忘れてしまう事態を防ぎ、セキュリティを強化するためには、以下の実践が重要です。

  • 🔑 強力なパスワードの作成: 長く(15文字以上推奨)、大文字、小文字、数字、記号を組み合わせた、推測されにくい複雑なパスワードを使用する。
  • ユニークなパスワード: サービスごとに異なるパスワードを使用する。パスワードの使い回しは避ける。
  • パスワードマネージャーの活用: 複雑なパスワードを安全に生成・保管・管理するために、信頼できるパスワードマネージャーを利用する。
  • 確実なバックアップ: ウォレットのパスワードや、リカバリーフレーズ(ニーモニックシード)は、安全な場所に複数バックアップし、オフラインで保管する(紙に書いて金庫に保管するなど)。
  • 定期的な見直し: パスワードの強度やセキュリティ対策を定期的に見直す。

まとめ

monero2johnは、John the Ripperを使用してMoneroウォレット(.keysファイル)のパスワード解析を行うための重要な前処理ツールです。ウォレットファイルからJtRが処理できる形式のハッシュ文字列を抽出します。

パスワードを忘れてしまった自身のウォレットへのアクセスを回復する最後の手段となり得ますが、その使用は常に倫理的かつ合法的な範囲内で行われるべきです。他者のウォレットに対する無許可の使用は絶対に避けてください。

パスワードクラッキングには時間がかかり、成功する保証はありません。日頃から強力なパスワードを設定し、リカバリーフレーズと共に安全にバックアップしておくことが、資産を守るための最も確実な方法です。🛡️

この記事が、monero2johnとJohn the Ripperの適切な理解と利用の一助となれば幸いです。


参考情報

コメント

タイトルとURLをコピーしました