andotp2john: andOTP バックアップからパスワードハッシュを抽出し、John the Ripper で解析する方法 🔐

セキュリティツール

二要素認証アプリ andOTP のバックアップファイルを保護するパスワードを忘れてしまった場合に役立つツール

現代のオンラインセキュリティにおいて、二要素認証 (2FA) はアカウント保護の重要な要素となっています。ID とパスワードだけに頼るのではなく、もう一つの認証要素を追加することで、不正アクセスに対する防御力を大幅に高めることができます。その中でも、スマートフォンアプリを利用した TOTP (Time-based One-time Password) 方式は広く普及しています。

andOTP は、Android 向けのオープンソース二要素認証アプリとして人気があります。Google Authenticator や Authy などと同様に、QR コードをスキャンするか、シークレットキーを手動で入力することで、各種オンラインサービスのアカウントを登録し、一定時間ごとに変化する 6 桁のワンタイムパスワードを生成します。シンプルなインターフェースと、オープンソースであることによる透明性が評価されています。しかし、andOTP の開発は 2022 年 6 月頃から更新が停止しており、現在は「Unmaintained」(メンテナンスされていない)状態となっています。利用は可能ですが、今後のセキュリティアップデートなどが提供されない可能性がある点に注意が必要です。

andOTP の重要な機能の一つに、登録したアカウント情報のエクスポート(バックアップ)機能があります。機種変更時や、万が一スマートフォンが故障した場合に備えて、アカウント情報を復元するために不可欠です。このバックアップは、通常 .json.aes という形式のファイルで保存され、パスワードまたは PGP キーによる暗号化が強く推奨されています。暗号化により、万が一バックアップファイルが第三者の手に渡っても、中身のアカウント情報(2FA のシークレットキー)を不正に読み取られるのを防ぐことができます。

しかし、人間は時にパスワードを忘れてしまうものです。もし andOTP のバックアップファイルを暗号化した際のパスワードを忘れてしまったら、どうなるでしょうか? 🤔 そのバックアップファイルからアカウント情報を復元できなくなり、最悪の場合、紐付けられたオンラインサービスにログインできなくなる可能性があります。

ここで登場するのが、andotp2john というツールです。これは、有名なパスワードクラッキングツールである John the Ripper (JtR) スイートに含まれる Python スクリプトの一つです。andotp2john は、暗号化された andOTP バックアップファイル (.json.aes) から、パスワードの検証に使われるハッシュデータを抽出する機能を持っています。抽出されたハッシュデータを John the Ripper に入力することで、元のバックアップパスワードの解析(クラッキング)を試みることができます。

このブログ記事では、andotp2john の使い方、そして抽出したハッシュを John the Ripper で解析する手順について、詳しく解説していきます。パスワードを忘れて困っている方の助けとなることを目指しますが、同時に、この技術が悪用されることのないよう、倫理的な利用とセキュリティ意識の向上についても触れていきます。💻

⚠️ 注意: パスワードクラッキングツールは、自身が所有するファイルや、明確な許可を得たファイルに対してのみ使用してください。他人のファイルを許可なく解析することは、プライバシーの侵害や不正アクセス行為にあたり、法的に罰せられる可能性があります。

準備するもの

andotp2john を利用してパスワード解析を行うためには、いくつかの準備が必要です。

  • John the Ripper (JtR) スイート:

    andotp2john は John the Ripper の一部として提供されています。したがって、まず John the Ripper をインストールする必要があります。JtR は多くの Linux ディストリビューション (Kali Linux, Ubuntu, Debian など) のパッケージマネージャからインストールできます。あるいは、公式サイト (https://www.openwall.com/john/) からソースコードをダウンロードしてコンパイルすることも可能です。

    Kali Linux や Ubuntu/Debian 系の場合:

    sudo apt update
    sudo apt install john

    多くの場合、john パッケージをインストールすると、/usr/share/john//opt/john/run/ (ソースからビルドした場合) といったディレクトリ内に andotp2john.py が含まれています。

  • Python 環境:

    andotp2john は Python スクリプトです。通常、Python 3 が必要となります。現代の多くの Linux ディストリビューションには Python 3 がプリインストールされていますが、もしインストールされていない場合は、パッケージマネージャでインストールしてください。

    sudo apt install python3

    依存ライブラリが必要になる場合もありますが、通常は JtR のインストールプロセスで解決されるか、Python の標準ライブラリで動作します。

  • 暗号化された andOTP バックアップファイル:

    パスワードを忘れてしまった、暗号化済みの andOTP バックアップファイルが必要です。ファイル名は通常 andotp_backup_<日付>_<時刻>.json.aes のような形式になっています。このファイルへのパスを把握しておいてください。

  • (オプション) パスワードリスト (Wordlist):

    John the Ripper でパスワード解析を行う際、辞書攻撃(Wordlist Attack)を行うためにパスワード候補が列挙されたファイル(ワードリスト)があると効率的です。SecLists (https://github.com/danielmiessler/SecLists) など、有名なワードリストがインターネット上で公開されています。また、自分で思い当たるパスワードの候補をテキストファイルにまとめたものを使用することも有効です。

💡 ヒント: John the Ripper のインストール場所や andotp2john.py の場所が不明な場合は、find コマンドや locate コマンドで探すことができます。
sudo find / -name andotp2john.py
# または
sudo updatedb # locateコマンドのデータベースを更新
locate andotp2john.py

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

準備が整ったら、いよいよ andotp2john を使って、暗号化されたバックアップファイルから John the Ripper が解析できる形式のハッシュデータを抽出します。

基本的なコマンド構文は非常にシンプルです。

python3 /path/to/andotp2john.py <暗号化されたandOTPバックアップファイル>

または、andotp2john.py が実行可能権限を持ち、かつ PATH が通っているかカレントディレクトリにある場合は、以下のように実行できます。

/path/to/andotp2john.py <暗号化されたandOTPバックアップファイル>

実行例

例として、ホームディレクトリに andotp_backup_2025-03-31_06-00-00.json.aes というバックアップファイルがあり、andotp2john.py/usr/share/john/ にあると仮定します。

python3 /usr/share/john/andotp2john.py ~/andotp_backup_2025-03-31_06-00-00.json.aes

出力結果

上記コマンドを実行すると、以下のような形式の文字列が標準出力に表示されます。これが John the Ripper 用のハッシュデータです。

andotp_backup_2025-03-31_06-00-00.json.aes:$andotp$*0*16*c8a31e...f2c*65536*aes-256-cbc*d9b8...a1e

この出力文字列は、ファイル名、ハッシュタイプ識別子 ($andotp$)、そして暗号化パラメータや実際の暗号化データの一部などを含む構造になっています。John the Ripper はこの情報をもとに、パスワードの検証方法を判断します。

ハッシュデータの保存

抽出したハッシュデータは、後の John the Ripper での解析のためにファイルに保存しておくのが一般的です。リダイレクション (>) を使ってファイルに保存しましょう。

python3 /usr/share/john/andotp2john.py ~/andotp_backup_2025-03-31_06-00-00.json.aes > andotp_hash.txt

これで、カレントディレクトリに andotp_hash.txt というファイルが作成され、その中に抽出されたハッシュデータが保存されます。

エラーが発生する場合:

  • ファイルが見つからない: 指定したバックアップファイルのパスが正しいか確認してください。
  • ファイル形式が違う: .json.aes 形式で、かつパスワードで暗号化されたバックアップファイルであることを確認してください。PGP 暗号化されたファイルには対応していません。
  • Python エラー: Python のバージョンや必要なライブラリが不足している可能性があります。エラーメッセージを確認し、必要に応じて対処してください。

John the Ripper でパスワードを解析する

andotp2john.py でハッシュデータを抽出し、ファイル (例: andotp_hash.txt) に保存したら、次はいよいよ John the Ripper を使ってパスワードの解析(クラッキング)を試みます。

John the Ripper は、主に以下のようないくつかのモードでパスワード解析を行います。

  1. シングルクラックモード (Single Crack Mode): ハッシュファイルに含まれる情報(ユーザー名など、この場合はファイル名の一部)を利用して、よく使われる変形パターン(大文字小文字変換、数字付加など)を試すモード。最初に試されることが多いです。
  2. ワードリストモード (Wordlist Mode): 指定されたパスワードリスト(辞書)に含まれる単語をパスワード候補として試すモード。強力なワードリストがあれば、比較的よく使われるパスワードを効率的に見つけられます。
  3. インクリメンタルモード (Incremental Mode): 特定の文字セット(例: すべての小文字アルファベット、数字を含むすべての文字など)を使って、可能なすべての組み合わせを総当たりで試すモード。非常に時間がかかりますが、理論上はどんなパスワードでも見つけられる可能性があります。
  4. マスクモード (Mask Mode): パスワードの構造(例: 最初の文字は大文字、次に小文字が5文字、最後に数字が2文字など)を指定して、そのパターンに合致する候補のみを試すモード。パスワードの形式にある程度の見当がついている場合に有効です。

基本的な解析コマンド

最も基本的な実行方法は、John the Ripper にハッシュファイル名を渡すだけです。

john andotp_hash.txt

このコマンドを実行すると、John the Ripper はまずシングルクラックモードを試し、次にデフォルトのワードリスト (password.lst など、設定による) を使ったワードリストモード、最後にインクリメンタルモードへと移行していきます。

ワードリストを指定する

特定のワードリストを使いたい場合は、--wordlist オプションを使用します。

john --wordlist=/path/to/my_wordlist.txt andotp_hash.txt

/path/to/my_wordlist.txt の部分を、使用したいワードリストファイルの実際のパスに置き換えてください。強力なワードリストや、自分で作成した候補リストを使うことで、解析成功の可能性が高まります。

マスクモードを使用する

例えば、「大文字で始まり、小文字が続き、最後に数字が2つ付く、合計8文字のパスワード」という見当がついている場合、マスクモードが有効です。

john --mask='?u?l?l?l?l?l?d?d' andotp_hash.txt
  • ?u: 大文字アルファベット (Uppercase)
  • ?l: 小文字アルファベット (Lowercase)
  • ?d: 数字 (Digit)
  • ?s: 記号 (Symbol)
  • ?a: すべての表示可能文字 (All)

マスクモードはパスワードの構造を絞り込むことで、総当たり攻撃よりも効率的に解析を進められる場合があります。

解析結果の確認

John the Ripper がパスワードの解析に成功すると、通常、その結果はターミナルに表示され、john.pot というファイル(ポットファイル)に記録されます。解析が完了した後や、途中で中断した場合でも、以下のコマンドで解析済みのパスワードを確認できます。

john --show andotp_hash.txt

成功していれば、以下のように表示されます(実際のハッシュとパスワードは異なります)。

andotp_backup_2025-03-31_06-00-00.json.aes:MySecretPa$$w0rd

1 password hash cracked, 0 left

この例では、MySecretPa$$w0rd が解析されたパスワードです。

解析には、パスワードの複雑さやマシンの計算能力によって、数秒で終わることもあれば、数日、数週間、あるいはそれ以上かかることもあります。特に複雑で長いパスワードの場合、解析が現実的な時間内に終わらない可能性もあります。🕰️

🎉 パスワードが見つかったら、そのパスワードを使って andOTP アプリでバックアップファイルをインポートし、2FA アカウントを復元してください。そして、今後は忘れないように、かつ安全な方法でパスワードを管理しましょう。

利用目的と倫理的な注意点

andotp2john と John the Ripper は、本来、正当な目的のために開発されたツールです。

正当な利用目的

  • パスワードリカバリ: この記事で解説したように、自分自身の andOTP バックアップファイルのパスワードを忘れてしまい、アカウント情報にアクセスできなくなった場合に、パスワードを回復させる手助けとなります。
  • セキュリティ監査 (ペネトレーションテスト): 組織内のシステム管理者が、ユーザーが設定しているバックアップパスワードの強度をテストし、脆弱なパスワードが使用されていないかを確認するために利用されることがあります。これにより、セキュリティポリシーの改善やユーザーへの啓蒙に繋げることができます。

倫理的な考慮事項と禁止事項 🚫

これらのツールは強力であるため、悪用される危険性も伴います。以下の点を強く認識し、遵守する必要があります。

  • 許可のないファイルへの使用禁止: 自分自身が所有権を持たない andOTP バックアップファイルや、所有者から明確な書面による許可を得ていないファイルに対して、andotp2john や John the Ripper を使用することは絶対にやめてください。これはプライバシーの侵害であり、多くの国や地域で不正アクセス禁止法などの法律によって禁止されている犯罪行為です。
  • 解析結果の不正利用禁止: たとえ正当な理由でパスワード解析を行ったとしても、その結果得られたパスワードやアカウント情報を、本来の目的(リカバリや監査報告)以外に利用することは許されません。特に、他人のアカウントへの不正アクセスや、情報の窃取・改ざんなどは重大な犯罪です。
  • ツールの配布に関する注意: これらのツールやその使用方法に関する情報を共有する際は、悪用を助長しないよう、倫理的な側面や法的なリスクについて十分に注意喚起を行う責任があります。

法的リスク: 不正アクセスやプライバシー侵害は、民事上の損害賠償請求だけでなく、刑事罰(罰金や懲役刑)の対象となる可能性があります。技術的な興味本位であっても、決して法を犯すことのないよう、細心の注意を払ってください。

技術は使い方次第で、良くも悪くもなります。andotp2john や John the Ripper のようなツールを使用する際は、常に倫理観を持ち、法を遵守する意識を持ってください。

andOTP バックアップのセキュリティを高めるために

andotp2john の存在は、andOTP バックアップのパスワードがいかに重要であるかを再認識させてくれます。パスワードが解析されてしまうと、バックアップファイル内のすべての 2FA シークレットキーが漏洩するリスクがあります。以下の点に注意して、バックアップのセキュリティを高めましょう。

  • 強力なパスワードを設定する:
    • 長く、複雑で、推測されにくいパスワードを使用します。
    • 大文字、小文字、数字、記号を組み合わせましょう。
    • 他のサービスで使用しているパスワードの使い回しは避けてください。
    • 可能であれば、パスワードマネージャーで生成したランダムなパスワードを使用し、それを安全に保管します。
  • パスワードを安全に保管する:
    • 設定したバックアップパスワードは、パスワードマネージャーなどの安全な場所に記録しておきましょう。
    • 物理的なメモに書き残す場合は、他人の目に触れない安全な場所に保管してください。
  • PGP 暗号化の利用を検討する:

    andOTP はパスワードによる暗号化だけでなく、PGP (Pretty Good Privacy) キーによる暗号化もサポートしています。PGP はより強力な暗号化方式ですが、鍵の管理など、パスワード方式よりも知識が必要になります。セキュリティを最大限に高めたい場合は、PGP 暗号化の利用を検討する価値があります。

  • バックアップファイルの保管場所に注意する:

    暗号化されているとはいえ、バックアップファイル自体が漏洩しないように注意することも重要です。信頼できないクラウドストレージや、セキュリティ対策が不十分な場所に保管するのは避けましょう。

  • andOTP の代替アプリを検討する:

    前述の通り、andOTP は現在メンテナンスされていません。将来的なセキュリティリスクを考慮し、現在も活発に開発・メンテナンスされている他の 2FA アプリ(Aegis Authenticator, Authy, Microsoft Authenticator, Google Authenticator など)への移行を検討することも一つの選択肢です。移行する際には、各アプリのバックアップ・同期機能やセキュリティについてよく調査してください。

バックアップは重要ですが、そのバックアップ自体のセキュリティも同様に重要です。適切な対策を講じることで、万が一の事態に備えつつ、アカウント情報を安全に保つことができます。🛡️

まとめ

andotp2john は、パスワードで暗号化された andOTP バックアップファイル (.json.aes) から、パスワード解析用のハッシュデータを抽出するための Python スクリプトです。John the Ripper スイートの一部として提供されており、主に忘れてしまったバックアップパスワードを回復する目的で使用されます。

使い方は、andotp2john.py スクリプトにバックアップファイルを引数として渡すことで、標準出力にハッシュデータが出力されます。このハッシュデータをファイルに保存し、John the Ripper に入力することで、ワードリスト攻撃やインクリメンタル攻撃などを用いてパスワードの解析を試みることができます。

このツールはパスワードリカバリという正当な目的で非常に役立ちますが、その能力ゆえに悪用される危険性もはらんでいます。自身が所有または明確な許可を得たファイルに対してのみ使用し、法と倫理を遵守することが極めて重要です。

また、このツールの存在は、andOTP バックアップパスワードの重要性を浮き彫りにします。強力でユニークなパスワードを設定し、安全に保管することが、2FA アカウント情報を保護する上で不可欠です。現在 andOTP がメンテナンスされていない状況も考慮し、代替アプリへの移行も検討すると良いでしょう。

適切な知識と倫理観を持ってツールを利用し、オンラインアカウントのセキュリティを維持・向上させていきましょう。💡

参考情報

  • John the Ripper official website: https://www.openwall.com/john/ – John the Ripper の公式サイト。ダウンロードやドキュメントが含まれます。
  • andOTP GitHub Repository (Archived): https://github.com/andOTP/andOTP – andOTP のソースコードリポジトリ(現在はアーカイブ状態)。

コメント

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