electrum2johnの使い方:Electrumウォレットのパスワードを解析する 🔐

セキュリティツール

はじめに

Electrumは、軽量で使いやすい人気のBitcoinウォレットです。2011年11月にリリースされて以来、多くのユーザーに利用されています。しかし、パスワードを忘れてしまった場合、ウォレットにアクセスできなくなる可能性があります。
そんな時に役立つのが、John the Ripper (JtR) というパスワードクラッキングツールと、その関連ツールである electrum2john です。

electrum2john は、ElectrumウォレットファイルからJohn the Ripperが解析できる形式の「ハッシュ」と呼ばれるデータを抽出するためのスクリプトです。このハッシュデータを使用することで、John the Ripperは様々な手法(辞書攻撃、ブルートフォース攻撃など)を用いて元のパスワードを見つけ出す試みを行います。

注意: このツールは、自身が所有するウォレットのパスワードを忘れてしまった場合の回復や、セキュリティテストの目的でのみ使用してください。他人のウォレットに対して無断で使用することは、法的に問題となる可能性があります。倫理的な利用を心がけてください。

前提条件

electrum2john を使用するには、以下の準備が必要です。

  • John the Ripper: electrum2john スクリプトは通常、John the Ripperのパッケージに含まれています。JtRをインストールする必要があります。Kali Linuxなどのペネトレーションテスト用OSにはプリインストールされていることが多いですが、そうでない場合は公式サイトからダウンロードしてインストールしてください。electrum2john スクリプトは、JtRのソースコードを展開したディレクトリ内の run フォルダや、インストール後の共有ディレクトリ(例: /usr/share/john//opt/john/run/)に含まれていることが多いです。
  • Python: electrum2john はPythonスクリプトとして提供されていることが多いです。Python 3.8以上が推奨されます。
  • Electrumウォレットファイル: パスワードを解析したいElectrumウォレットのファイルが必要です。デフォルトでは default_wallet という名前で、通常は以下の場所に保存されています(バージョンやOSによって異なる場合があります)。
    オペレーティングシステム 一般的なウォレットファイルの場所
    Windows %APPDATA%\Electrum\wallets\ (例: C:\Users\<ユーザー名>\AppData\Roaming\Electrum\wallets\)
    macOS ~/.electrum/wallets/ (Finderで Shift + Cmd + G を押し、~/.electrum と入力)
    Linux ~/.electrum/wallets/

    注意: ウォレットファイルには通常、拡張子が付いていません。また、Electrumのバージョンによってはファイル形式が異なる場合があります (例: Electrum 2.0以降はJSON形式が使用されています)。electrum2john が対応している形式か確認が必要な場合があります。Electrum 2.8以降ではウォレットファイルのディスク暗号化がデフォルトで有効になっています。

electrum2johnの使い方:ハッシュの抽出

準備ができたら、electrum2john を実行してウォレットファイルからハッシュを抽出します。

  1. electrum2john スクリプトの場所を確認する: John the Ripperのインストールディレクトリ内の run フォルダなどを探します。見つからない場合は、find / -name electrum2john.py 2>/dev/null のようなコマンドで検索できます。
  2. コマンドを実行する: ターミナルまたはコマンドプロンプトを開き、electrum2john.py があるディレクトリに移動するか、フルパスを指定して以下のコマンドを実行します。
    python /path/to/john/run/electrum2john.py /path/to/your/electrum_wallet_file > electrum_hash.txt
    • /path/to/john/run/electrum2john.py: electrum2john.py スクリプトへの実際のパスに置き換えてください。
    • /path/to/your/electrum_wallet_file: 解析したいElectrumウォレットファイルへの実際のパスに置き換えてください。
    • > electrum_hash.txt: 抽出されたハッシュを electrum_hash.txt というファイルに保存します。ファイル名は任意に変更可能です。

    成功すると、ターミナルには何も表示されず、カレントディレクトリに electrum_hash.txt ファイルが作成されます。

  3. 抽出されたハッシュを確認する: 作成された electrum_hash.txt ファイルをテキストエディタで開くと、以下のような形式の文字列が記録されています。これがJohn the Ripperが解析するハッシュデータです。
    $electrum$<salt-type>*<hex_data>*<hex_data>...

    <salt-type> はウォレットの暗号化方式を示しており、Electrumのバージョンによって異なります。このタイプによって、John the RipperやHashcatでの解析モードが変わります。

    Salt Type 対応するHashcatモード 備考
    1, 2, 3 16600 古いバージョンのElectrum
    4 21700 比較的新しいバージョン
    5 21800 比較的新しいバージョン (よりセキュア)

    Salt Type 4や5は、以前のバージョンよりもセキュリティが強化されており、解析にはより多くの時間と計算能力が必要になります。

エラーが発生する場合:
  • Pythonの依存関係が不足している可能性があります。
  • electrum2john.py スクリプトやウォレットファイルに対する読み取り権限がない可能性があります。
  • ウォレットファイルの形式が、使用している electrum2john.py スクリプトでサポートされていない可能性があります。特に古いバージョンのJtRを使っている場合や、非常に新しいバージョンのElectrumウォレットを対象としている場合に起こりえます。2021年頃には、新しいseed version (例: 18) に対応していない問題が報告されたこともありました。
エラーメッセージを確認し、適宜対応してください。

John the Ripperによるパスワード解析

ハッシュファイル (electrum_hash.txt) が準備できたら、John the Ripperを使ってパスワードの解析を開始します。

最も簡単な方法は、JtRにハッシュファイルを指定して実行することです。JtRはデフォルトのモード(シングルクラックモード、辞書モードなど)を順に試します。

/path/to/john/run/john electrum_hash.txt

パスワードが見つかると、ターミナルに表示されます。

より効率的に解析するために、パスワードの候補リスト(辞書ファイル)を使用することができます。多くの辞書ファイルがオンラインで入手可能です(例: SecLists)。

/path/to/john/run/john --wordlist=/path/to/your/wordlist.txt electrum_hash.txt
  • --wordlist=/path/to/your/wordlist.txt: 使用する辞書ファイルへのパスを指定します。

JtRは、辞書ファイル内の単語をそのまま試したり、ルール(数字を追加する、大文字小文字を変えるなど)を適用したりしてパスワードを探索します。

  • 進行状況: 解析中に任意のキーを押すと、現在の進行状況(試行したパスワード数、速度など)が表示されます。
  • 結果の表示: 解析が完了した後や、中断した場合でも、以下のコマンドで既に見つかったパスワードを表示できます。
    /path/to/john/run/john --show electrum_hash.txt

パスワードの解析には、パスワードの複雑さ(長さ、文字種)や使用するマシンの計算能力によって、数分から数日、あるいはそれ以上かかることがあります。特に、長く複雑なパスワードや、Salt Type 4, 5 のような新しい形式のウォレットの場合は時間がかかります。GPU を活用できるHashcatなどのツールを使用すると、解析速度を向上させることができます。

Hashcatを使用する場合は、electrum2john で抽出したハッシュと、対応するモード (-m 16600, -m 21700, -m 21800) を指定して実行します。

hashcat -m <mode> electrum_hash.txt -a 3 '?a?a?a?a?a?a'
  • <mode>: 上記の表に基づいたモード番号 (例: 21700)
  • -a 3: ブルートフォース攻撃モードを指定
  • '?a?a?a?a?a?a': 試行するパスワードのパターン(この例では6文字の全文字種)

重要な考慮事項 🤔

  • Electrumのバージョン互換性: Electrumはバージョンアップに伴い、ウォレットファイルの形式や暗号化方式を変更してきました。例えば、バージョン2.0ではBIP32に対応しファイル形式が変更され、バージョン2.7でもフォーマット変更がありました。古いバージョンの electrum2john では、新しいバージョンのウォレットファイルを正しく処理できない可能性があります。常に最新版のJohn the Ripper (Jumbo) を使用することをお勧めします。
  • シードフレーズの重要性: Electrumウォレットは通常、12語などのシードフレーズ(リカバリーフレーズ)からも復元できます。パスワードを忘れた場合でも、シードフレーズを安全な場所に保管していれば、それを使ってウォレットを復元し、新しいパスワードを設定するのが最も安全で確実な方法です。パスワード解析は、シードフレーズも紛失した場合などの最終手段と考えるべきです。
  • 法的・倫理的側面: 繰り返しになりますが、これらのツールは強力であり、悪用される可能性もあります。必ず、自身が正当なアクセス権を持つウォレットに対してのみ使用してください。

まとめ ✨

electrum2john は、John the Ripperを使用してElectrumウォレットのパスワード解析を行うための重要なステップとなるツールです。ウォレットファイルから解析可能なハッシュデータを抽出し、その後John the RipperやHashcatなどのツールで実際の解析作業を行います。

パスワードを忘れてしまった際の回復手段となり得ますが、成功は保証されず、時間と計算リソースが必要です。最も重要なのは、ウォレット作成時に設定したパスワードと、特にシードフレーズを安全かつ確実に保管しておくことです。これらのツールは、あくまで補助的な手段、またはセキュリティ監査の目的で、責任を持って利用するようにしましょう。

参考情報

コメント

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