tezos2johnの使い方:TezosウォレットのパスワードをJohn the Ripperで解析する

セキュリティツール

Tezos John the Ripper パスワードクラック

John the Ripper (JtR) は、非常に強力で広く使われているパスワードクラックツールです。多くのシステム管理者やセキュリティ専門家が、システムのセキュリティ強度をテストするために利用しています。JtRはそのままでも多くのハッシュ形式に対応していますが、「*2john」という形式の補助スクリプト群を使うことで、さらに多くのアプリケーションやファイルのパスワードハッシュを抽出できるようになります。

この記事では、その中でもTezosブロックチェーンのウォレットファイルからパスワードハッシュを抽出し、JtRで解析可能な形式に変換するツール tezos2john.py の使い方について詳しく解説します。Tezosはスマートコントラクトプラットフォームであり、そのウォレット(特にローカルに保存されるファイル)はパスワードによって保護されています。もしパスワードを忘れてしまったり、セキュリティ監査の一環としてパスワード強度をテストしたい場合に、このツールが役立ちます。😊

注意: パスワードクラックツールの使用は、必ず所有者の許可を得た上で、倫理的な目的(自身のパスワード回復、セキュリティテストなど)にのみ行ってください。不正アクセスや許可のないシステムへの侵入は法律で禁止されています。

John the Ripperと*2johnツール群について

John the Ripperは、Solar Designer氏によって開発されたオープンソースのパスワードクラッキングツールで、現在も活発に開発が続けられています(Jumbo Johnと呼ばれるコミュニティ強化版が主流です)。非常に高速で、多くのハッシュタイプ(Unixのcrypt(3)形式、WindowsのLM/NTLMハッシュ、Kerberosなど)に対応しており、様々なOS(Linux, macOS, Windowsなど)で動作します。

JtRは主に以下の3つのクラッキングモードを持っています:

  • シングルクラックモード (--single): パスワードファイル内のユーザー名やその他の情報から推測されるパスワードを試す、最も高速なモード。
  • ワードリストモード (--wordlist): 指定された単語リスト(辞書)に含まれる単語を試すモード。強力なルール(マングルルール)と組み合わせることで、単純な単語だけでなく、数字や記号を付加したり、大文字小文字を変換したりした複雑なパスワードも試行できます。
  • インクリメンタルモード (--incremental): 指定された文字セットから全ての組み合わせを総当たりで試すモード。最も時間がかかりますが、理論上はあらゆるパスワードを発見できる可能性があります。

JtR自体は、標準的なハッシュ形式のテキストファイルを直接扱いますが、多くのアプリケーション(ZIPファイル、PDF、Officeドキュメント、SSHキー、各種ウォレットなど)は独自のファイル形式でパスワード情報を保存しています。そこで、これらのファイルからJtRが扱えるハッシュ形式を抽出するための補助ツールが必要になります。これが「*2john」ツール群です。

tezos2john.py は、この*2johnツール群の一つであり、Tezosウォレットファイル(典型的には暗号化されたJSONキーファイル)からパスワード検証に必要なデータを抽出し、JtRが解析できる形式のハッシュ文字列を生成するPythonスクリプトです。

これらの*2johnスクリプトは、JtRのソースコードリポジトリに含まれており、通常、JtRをソースからコンパイルした場合は run ディレクトリ内に、Kali Linuxなどのディストリビューションパッケージでインストールした場合は /usr/share/john//usr/lib/john/ といったディレクトリ内に配置されています。

tezos2john.pyの前提条件

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

  1. Pythonのインストール: tezos2john.py はPythonスクリプトなので、Python 3がインストールされている必要があります。多くのLinuxディストリビューションやmacOSには標準でインストールされていますが、ない場合はインストールしてください。
    # Debian/Ubuntu系
    sudo apt update && sudo apt install python3
    
    # Fedora系
    sudo dnf install python3
    
    # macOS (Homebrewを使用)
    brew install python3
  2. John the Ripperのインストール: tezos2john.py はJtRの一部なので、JtR本体がインストールされている必要があります。ソースコードからコンパイルするか、パッケージマネージャーを使ってインストールします。最新の機能やフォーマット対応のためには、Jumbo JohnのGitHubリポジトリからソースを取得してビルドするのが推奨されますが、多くのディストリビューションでもパッケージが提供されています。
    # Debian/Ubuntu系
    sudo apt update && sudo apt install john
    
    # Fedora系
    sudo dnf install john
    
    # macOS (Homebrewを使用)
    brew install john-jumbo
    
    # ソースからコンパイル (例)
    git clone https://github.com/magnumripper/JohnTheRipper.git john-jumbo
    cd john-jumbo/src/
    ./configure && make -s clean && make -sj4
    # コンパイル後、実行ファイルは ../run/ ディレクトリにあります
  3. Tezosウォレットファイル: パスワードを解析したいTezosのウォレットファイルが必要です。これは通常、暗号化されたJSON形式のファイルです。ファイルの内容(特に秘密鍵情報)は非常に機密性が高いので、取り扱いには十分注意してください。

tezos2john.py の基本的な使い方

tezos2john.py の基本的な使い方は非常にシンプルです。ターミナルを開き、tezos2john.py スクリプトを実行し、引数としてTezosウォレットファイルのパスを指定します。

スクリプトの場所は、JtRのインストール方法によって異なります。ソースからコンパイルした場合は run ディレクトリ、パッケージでインストールした場合は /usr/share/john//usr/lib/john/ などにあることが多いです。もし見つからない場合は、find コマンドや locate コマンドで探してみてください。

# find /usr -name tezos2john.py 2>/dev/null
# locate tezos2john.py

ここでは、JtRをソースからコンパイルし、../run/ ディレクトリにある場合を例として示します。カレントディレクトリが john-jumbo/src の場合、以下のようになります。

# python3 ../run/tezos2john.py /path/to/your/tezos_wallet.json

例えば、my_tezos_wallet.json というウォレットファイルからハッシュを抽出する場合:

python3 ../run/tezos2john.py my_tezos_wallet.json

成功すると、以下のような形式のハッシュ文字列が標準出力に表示されます。

my_tezos_wallet.json:$tezos$*edpk...*0*2c26...*0771...

この出力形式は ファイル名:ハッシュデータ となっています。

  • ファイル名 (my_tezos_wallet.json): どのファイルから抽出したハッシュかを示す情報です。JtRはこの部分をユーザー名として扱うことがあります。
  • ハッシュデータ ($tezos$*...): 実際のハッシュ情報です。$tezos$ は、これがTezosウォレットのハッシュであることを示す識別子(フォーマットラベル)です。続くアスタリスク(*)で区切られたフィールドには、暗号化方式、公開鍵ハッシュ、暗号化されたデータ、ソルトなどがエンコードされています。

この出力されたハッシュ文字列をファイルに保存します。複数のウォレットファイルからハッシュを抽出する場合は、それぞれのハッシュを1行ずつファイルに記述します。

# 1つのファイルからハッシュを抽出して保存
python3 ../run/tezos2john.py wallet1.json > tezos_hashes.txt

# 別のファイルからハッシュを抽出し、既存のファイルに追加
python3 ../run/tezos2john.py wallet2.json >> tezos_hashes.txt

これで、JtRで解析するためのハッシュファイル (tezos_hashes.txt) が準備できました。🎉

古いバージョンの情報

過去(2018年頃)のメーリングリストの情報では、tezos2john.py がニーモニックフレーズ、メールアドレス、公開鍵を引数に取る形式だった時期もあるようですが、現在のJumbo Johnに含まれるバージョンでは、主に暗号化されたJSONファイルを入力として受け取るようになっていると考えられます。もし古い形式のツールを使用している場合は、使用方法が異なる可能性があるため、ツールのヘルプメッセージ (python3 tezos2john.py -h など) を確認してください。

John the Ripperでのパスワードクラック実行

tezos2john.py で生成したハッシュファイルを使って、いよいよJohn the Ripperでパスワードクラックを実行します。JtRの実行ファイル (john) は、通常、tezos2john.py と同じディレクトリ(例: ../run/)にあります。

最も基本的な実行方法は、john コマンドの引数にハッシュファイルを指定するだけです。

# JtRの実行ファイルが ../run/ にあり、ハッシュファイルが tezos_hashes.txt の場合
../run/john tezos_hashes.txt

これを実行すると、JtRは自動的にハッシュタイプ(この場合は $tezos$)を検出し、デフォルトのシーケンス(シングルクラックモード → デフォルトのワードリストモード → インクリメンタルモード)でクラックを開始します。

クラックモードの指定

特定のクラックモードやワードリストを指定することも可能です。

  • ワードリストモード: 自分で用意した、または有名なワードリスト(例: rockyou.txt)を指定してクラックを行います。ルールと組み合わせることで効果が高まります。
    # rockyou.txt をワードリストとして使用
    ../run/john --wordlist=/path/to/rockyou.txt tezos_hashes.txt
    
    # ワードリストとデフォルトルールを適用
    ../run/john --wordlist=/path/to/rockyou.txt --rules tezos_hashes.txt

    rockyou.txt は非常に巨大な(そして有名な)実際の漏洩パスワードリストで、多くのLinuxディストリビューション(特にKali Linuxなど)に含まれています。通常は圧縮されているため、使用前に展開する必要があります。

    # rockyou.txt.gz を展開する例 (Kali Linux)
    sudo gzip -d /usr/share/wordlists/rockyou.txt.gz
  • インクリメンタルモード: 特定の文字セット(例: 数字のみ、英小文字のみ)を指定して総当たり攻撃を行います。
    # 数字のみで構成されるパスワードを試行
    ../run/john --incremental=Digits tezos_hashes.txt
    
    # すべてのASCII文字を試行
    ../run/john --incremental=ASCII tezos_hashes.txt
  • 特定のフォーマットを指定: JtRが自動でフォーマットを判別できない場合や、明示的に指定したい場合は --format オプションを使います。
    ../run/john --format=tezos tezos_hashes.txt

進捗確認と結果表示

クラックの実行中に任意のキー(Enterなど)を押すと、現在の進捗状況(試行したパスワード数、速度など)が表示されます。Ctrl+C を押すとセッションが中断され、現在の状態が john.rec ファイルに保存されます。次回同じコマンドを実行すると、中断したところから再開できます。

パスワードが見つかると、ターミナルに表示され、$JOHN/john.pot ファイル(通常はJtRの実行ディレクトリまたはホームディレクトリ内の .john ディレクトリにある john.pot)に記録されます。john.pot ファイルは、過去にクラックに成功したパスワードとハッシュのペアを保存しておくためのファイルで、JtRは次回起動時にこのファイルを読み込み、既にクラック済みのハッシュはスキップします。

クラックが完了した後、または中断後に、見つかったパスワードを確認するには --show オプションを使用します。

../run/john --show tezos_hashes.txt

これにより、tezos_hashes.txt 内のハッシュに対応する、クラックされたパスワードが ユーザー名:パスワード の形式で表示されます。

my_tezos_wallet.json:CrackedPassword123

1 password hash cracked, 0 left

もし何も表示されなければ、その時点ではまだパスワードが見つかっていないことを意味します。

重要な考慮事項とセキュリティ

倫理的な使用と法的遵守

繰り返しになりますが、tezos2john.py や John the Ripperのようなパスワードクラックツールは、非常に強力ですが、その使用には大きな責任が伴います。絶対に、あなたがアクセス権限を持っていないウォレットやシステムに対してこれらのツールを使用してはいけません。 不正アクセスは重大な犯罪であり、法的な罰則を受ける可能性があります。

これらのツールは、以下のような正当な目的でのみ使用されるべきです。

  • 自身が所有するウォレットの忘れてしまったパスワードを回復する。
  • 組織のセキュリティ担当者が、許可を得て自組織のシステムのパスワード強度を監査する。
  • セキュリティ研究者が、脆弱性の検証や研究のために、管理された環境で使用する。

パスワード強度とウォレットの保護

tezos2john.py と JtR を使ってみることで、弱いパスワードがいかに簡単に破られてしまうかを実感できるでしょう。Tezosウォレットやその他の重要なアカウントを保護するためには、強力なパスワードを設定することが不可欠です。

  • 長く複雑なパスワードを使用する: 短い単語や単純な組み合わせ(例: `password123`)は非常に脆弱です。理想的には、大文字、小文字、数字、記号を組み合わせた12文字以上のランダムな文字列を使用します。パスワードマネージャーを利用して、強力でユニークなパスワードを生成・管理するのが良いでしょう。
  • パスワードの使い回しを避ける: 異なるサービスで同じパスワードを使用すると、一つのサービスからパスワードが漏洩した場合に、他のアカウントも危険に晒されます。
  • ウォレットファイルの安全な保管: 暗号化されたJSONファイル自体も安全な場所に保管し、不正なアクセスから保護してください。可能であれば、ハードウェアウォレットの使用を検討することもセキュリティを高める上で有効です。
  • 多要素認証(MFA/2FA): Tezos自体や関連サービスで利用可能であれば、多要素認証を設定することで、パスワードが漏洩した場合でも不正アクセスを防ぐ層を追加できます。

自分のパスワードが JtR のようなツールで簡単にクラックされてしまうかどうかをテストすることは、セキュリティ意識を高める良い機会となります。💪

まとめ

tezos2john.py は、John the Ripper スイートの一部として提供される便利なツールであり、Tezosウォレットの暗号化されたJSONファイルからパスワードハッシュを抽出し、JtRで解析可能な形式に変換することができます。

基本的な使い方は、Python 3とJohn the Ripperがインストールされた環境で、tezos2john.py スクリプトにウォレットファイルを引数として渡すだけです。生成されたハッシュをファイルに保存し、john コマンドでそのファイルを指定することで、パスワードクラックを実行できます。

ワードリストモードやインクリメンタルモードなど、JtRの強力な機能を活用することで、忘れてしまったパスワードの回復や、セキュリティ監査の一環としてのパスワード強度テストが可能になります。

ただし、これらのツールを使用する際は、常に倫理的なガイドラインと法律を遵守し、許可された範囲内でのみ利用するようにしてください。また、この経験を通じて、自身のパスワードセキュリティを見直し、より強固な対策を講じることが重要です。🛡️

コメント

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