このブログ記事では、John the Ripper (JtR) スイートに含まれるツールの一つである keyring2john
の使い方について詳しく解説します。keyring2john
は、Linux デスクトップ環境で広く使われている GNOME Keyring ファイルからパスワードハッシュを抽出し、John the Ripper で解析可能な形式に変換するための Python スクリプトです。
パスワードクラッキングやセキュリティ監査に関わる技術者にとって、このツールの理解は非常に重要です。さっそく、その使い方を見ていきましょう! 💪
GNOME Keyring とは? 🤔
keyring2john
の使い方を学ぶ前に、まず GNOME Keyring について簡単に理解しておきましょう。GNOME Keyring は、GNOME デスクトップ環境(Ubuntu など多くの Linux ディストリビューションで採用されています)で使用されるパスワードやその他の秘密情報(SSH キー、Wi-Fi パスワード、オンラインアカウントの認証情報など)を安全に保管するための仕組みです。
通常、ユーザーがログインする際に使用するパスワード(マスターパスワード)でキーリング全体のロックが解除され、保存されている情報へのアクセスが可能になります。これにより、ユーザーは個々のパスワードを記憶する必要がなくなり、利便性が向上します。
キーリングに保存されるデータは、マスターパスワードから派生したキーを用いて暗号化されています。多くの場合、PBKDF2 (Password-Based Key Derivation Function 2) のような鍵導出関数が用いられ、総当たり攻撃(ブルートフォースアタック)を困難にするための反復ハッシュ計算が行われます。しかし、マスターパスワード自体が弱い場合、John the Ripper のようなツールによって解読される可能性があります。
keyring2john の目的と役割 🎯
keyring2john
の主な目的は、GNOME Keyring ファイル(通常 .keyring
または .db
拡張子を持つ)を解析し、そのマスターパスワードをクラックするために必要なハッシュ情報を抽出することです。抽出されたハッシュは、John the Ripper が理解できる特定のフォーマットになっています。
このツールは、John the Ripper の “jumbo” バージョン(コミュニティによって拡張されたバージョン)に含まれる多数の *2john
ユーティリティの一つです。これらのユーティリティは、様々なファイル形式やアプリケーションデータからパスワードハッシュを抽出し、John the Ripper での解析を可能にします。例えば、zip2john
(ZIP ファイル)、rar2john
(RAR ファイル)、keepass2john
(KeePass データベース)、ssh2john
(SSH 秘密鍵) などがあります。
keyring2john
を使用するシナリオとしては、以下のようなものが考えられます。
- セキュリティ監査: システム管理者が、ユーザーが設定しているキーリングのマスターパスワードの強度を評価する。
- ペネトレーションテスト: 攻撃者が侵害したシステムからキーリングファイルを取得し、保存されている認証情報を窃取しようとする。
- フォレンジック調査: デジタルフォレンジック調査官が、証拠として押収されたデバイスのキーリングから情報を回復しようとする。
⚠️ 注意: パスワードクラッキングツールの使用は、許可されたシステムに対して、正当な目的(セキュリティ評価やパスワードリカバリなど)のためにのみ行うべきです。不正アクセスや許可のないシステムへの侵入は法律で禁止されています。
keyring2john の入手方法と前提条件 🛠️
keyring2john
は Python スクリプトであり、John the Ripper (Jumbo バージョン) の一部として提供されています。
前提条件:
- John the Ripper (Jumbo): コミュニティ版の John the Ripper がインストールされている必要があります。多くの Linux ディストリビューションでは、パッケージマネージャーを通じてインストールできます(例:
sudo apt install john
on Debian/Ubuntu,sudo dnf install john
on Fedora)。Kali Linux のようなペネトレーションテスト用ディストリビューションには、通常、標準で含まれています。 - Python:
keyring2john
は Python で書かれているため、Python インタプリタが必要です(通常は Python 2 または Python 3)。
スクリプトの場所:
John the Ripper をソースからコンパイルした場合や、パッケージでインストールした場合、keyring2john.py
スクリプトは通常、John the Ripper の実行ファイルが含まれるディレクトリ、あるいはその中の run
サブディレクトリなどに配置されています。
一般的な場所の例:
/usr/bin/
/usr/sbin/
/usr/share/john/
/opt/john/run/
(ソースから特定の場所にインストールした場合)- John the Ripper のソースコードを展開したディレクトリ内の
run
フォルダ
システム内で見つからない場合は、find
コマンドで探すことができます。
sudo find / -name keyring2john.py 2>/dev/null
もしくは、John the Ripper の GitHub リポジトリから直接ダウンロードすることも可能です。 https://github.com/openwall/john/blob/bleeding-jumbo/run/keyring2john.py
keyring2john の使い方ステップ・バイ・ステップ 🚶♀️🚶♂️
keyring2john
の使用は非常にシンプルです。主なステップは以下の通りです。
- GNOME Keyring ファイルを見つける: 対象となるキーリングファイルを探します。
keyring2john
を実行してハッシュを抽出する: 見つけたキーリングファイルをkeyring2john
スクリプトに渡します。- John the Ripper でハッシュをクラックする: 抽出したハッシュを John the Ripper で解析します。
ステップ 1: GNOME Keyring ファイルの場所
GNOME Keyring ファイルは、ユーザーのホームディレクトリ内の隠しディレクトリに保存されています。一般的な場所は以下の通りです。
- 古いシステム (GNOME 2 時代):
~/.gnome2/keyrings/
- 新しいシステム (GNOME 3 以降):
~/.local/share/keyrings/
これらのディレクトリ内に、login.keyring
や default.keyring
といった名前のファイル、または user.keystore
のようなファイルが存在する場合があります。最近の Ubuntu などでは login.keyring
がデフォルトのログインキーリングとして使用されることが多いです。
例:
ls -la ~/.local/share/keyrings/
このコマンドで、キーリングファイルの一覧が表示されます。
ステップ 2: keyring2john の実行
keyring2john
スクリプトを実行するには、Python インタプリタを使用し、引数としてキーリングファイルのパスを指定します。
基本的な構文は以下の通りです。
python /path/to/keyring2john.py /path/to/keyring/file > output_hash.txt
または、スクリプトに実行権限があれば直接実行できる場合もあります。
/path/to/keyring2john.py /path/to/keyring/file > output_hash.txt
実行例:
John the Ripper が /usr/share/john/
にインストールされており、対象のキーリングファイルが ~/.local/share/keyrings/login.keyring
である場合:
python /usr/share/john/keyring2john.py ~/.local/share/keyrings/login.keyring > keyring_hash.txt
または、keyring2john.py
が実行パスに含まれている場合(例: Kali Linux):
keyring2john ~/.local/share/keyrings/login.keyring > keyring_hash.txt
このコマンドは、login.keyring
ファイルを解析し、John the Ripper が解読できる形式のハッシュを抽出し、その結果を keyring_hash.txt
というファイルに保存します。
出力されるハッシュ形式の例
keyring_hash.txt
に出力される内容は、以下のような形式になります(実際の値は異なります)。
login.keyring:$gkrh*1*16*f8e1d4b0a1b3c8d7e0f2a5b6d9c7e4f1*1000*ee...[長い16進数文字列]...ff
この形式は、ファイル名 (login.keyring
)、ハッシュタイプを示すマーカー ($gkrh
)、暗号化やハッシュ化に関するパラメータ(バージョン、ソルト、イテレーション回数など)、そして実際のハッシュ値が含まれています。John the Ripper はこの情報を基に、適切なクラッキング処理を行います。
ステップ 3: John the Ripper でハッシュをクラックする
keyring2john
でハッシュを抽出したら、いよいよ John the Ripper を使ってマスターパスワードのクラッキングを試みます。
基本的なコマンド構文は以下の通りです。
john /path/to/output_hash.txt
実行例:
john keyring_hash.txt
John the Ripper は、まずデフォルトのクラッキングモード(シングルクラックモード、辞書モード、インクリメンタルモードの組み合わせ)でパスワード解析を開始します。
特定の辞書ファイル(ワードリスト)を使用したい場合は、--wordlist
オプションを指定します。
john --wordlist=/path/to/wordlist.txt keyring_hash.txt
例えば、有名なワードリストである rockyou.txt
を使う場合:
john --wordlist=/usr/share/wordlists/rockyou.txt keyring_hash.txt
(rockyou.txt
のパスはシステムによって異なる場合があります)
クラッキングには時間がかかることがあります。特に、マスターパスワードが長く複雑な場合は、数時間から数日、あるいはそれ以上かかる可能性もあります。GPU を利用できる環境であれば、Hashcat などの GPU アクセラレーションに対応したツールを使用すると、クラッキング速度を大幅に向上させることができます(ただし、keyring2john
で抽出したハッシュを Hashcat で直接使えるかは、フォーマットや Hashcat の対応状況によります)。
クラッキングが成功すると、John the Ripper は解読されたパスワードを表示します。後で結果を確認するには、--show
オプションを使用します。
john --show keyring_hash.txt
成功した場合、以下のように表示されます(例)。
login.keyring:P@sswOrd123: ... (その他の情報)
1 password hash cracked, 0 left
この例では、login.keyring
のマスターパスワードが P@sswOrd123
であることが判明しました。
補足情報と注意点 📝
- キーリングファイルのパーミッション: キーリングファイルは通常、その所有者(ユーザー)しか読み取れないようにパーミッションが設定されています。したがって、
keyring2john
を実行するには、対象ユーザーの権限で実行するか、root 権限でファイルにアクセスする必要があります。 - 暗号化方式のバリエーション: GNOME Keyring のバージョンや設定によっては、内部的な暗号化の詳細が異なる場合があります。
keyring2john
や John the Ripper が常に最新の方式に対応しているとは限りませんが、一般的に広く使われている形式はサポートされています。 - Linux Keyrings との違い: Linux カーネル自体にもキー管理機構(Linux Keyrings)が存在しますが、これは GNOME Keyring とは別のものです。カーネルキーリングを操作するツール(例:
keyctl
)や、そこから情報を抽出する他のツール(例:keydump
)も存在しますが、keyring2john
は GNOME Keyring 専用です。 - Seahorse: GNOME Keyring を GUI で管理するツールとして Seahorse (「パスワードと鍵」) があります。これはキーリングの内容を閲覧・管理するためのもので、
keyring2john
のようなハッシュ抽出機能はありません。
倫理的な考慮事項:
keyring2john
や John the Ripper は強力なツールですが、その使用には責任が伴います。他人のキーリングファイルやシステムに許可なくアクセスし、パスワードをクラックすることは重大なプライバシー侵害であり、法的な問題を引き起こす可能性があります。これらのツールは、あくまで自身のシステムのセキュリティをテストしたり、正当な権限の下での監査や調査、あるいは忘れてしまったパスワードの回復といった、倫理的かつ合法的な目的のためにのみ使用してください。
まとめ ✨
keyring2john
は、GNOME Keyring ファイルからマスターパスワードのハッシュを抽出し、John the Ripper で解析可能な形式に変換するための便利なツールです。このツールを使うことで、セキュリティ監査担当者やペネトレーションテスターは、キーリングのマスターパスワードの強度を評価することができます。
使い方は、対象のキーリングファイルを見つけ、keyring2john
を実行してハッシュをファイルに保存し、そのファイルを John the Ripper で解析するという、比較的簡単な手順です。
ただし、このツールを使用する際は、常に法的な制約と倫理的な問題を念頭に置き、許可された範囲内で責任を持って利用することが極めて重要です。🔐
参考情報 (最低限)
- John the Ripper 公式サイト: https://www.openwall.com/john/
- John the Ripper Community Wiki (Hash Formats): https://openwall.info/wiki/john/hash-formats (様々なハッシュ形式の情報)
- GNOME Keyring Security FAQ (Archive): https://wiki.gnome.org/Projects/GnomeKeyring/SecurityFAQ?action=show&redirect=GnomeKeyring%2FSecurityFAQ (GNOME Keyring のセキュリティに関する古い情報ですが、基本的な概念理解の助けになります)
コメント