この記事では、パスワードクラッキングツール John the Ripper (JtR) スイートに含まれるユーティリティの一つである lion2john
について、その目的、使い方、注意点などを詳しく解説します。特に、macOS のセキュリティ評価やパスワード監査に関わる方にとって、有用な情報となるでしょう。
John the Ripper と *2john ツール群の概要
John the Ripper (JtR) は、非常に有名で強力なオープンソースのパスワードクラッキングツールです。主にシステムのパスワード強度をテストしたり、忘れてしまったパスワードを回復したり(適切な権限がある場合)する目的で使用されます。JtR は多様なパスワードハッシュ形式に対応していますが、直接暗号化されたファイルや特定のアプリケーションのデータ形式を扱えるわけではありません。
そこで重要になるのが、*2john
という名前のユーティリティ群です。これらは、様々なファイル形式(ZIP、RAR、PDF、Office ドキュメント、ディスクイメージ、OS のパスワードデータベースなど)から、JtR が解析できる形式のハッシュ値を抽出するために特別に設計されたスクリプトやプログラムです。
例えば、以下のようなツールがあります(これは一部です):
zip2john
: ZIP アーカイブからハッシュを抽出rar2john
: RAR アーカイブからハッシュを抽出pdf2john
: PDF ファイルからハッシュを抽出office2john
: Microsoft Office ドキュメントからハッシュを抽出dmg2john
: macOS の DMG ディスクイメージからハッシュを抽出keepass2john
: KeePass パスワードデータベースからハッシュを抽出keychain2john
: macOS のキーチェーンファイルからハッシュを抽出- そして、この記事の主役である
lion2john
これらのツールは、John the Ripper の run
ディレクトリ (古いバージョン) や /usr/share/john/
(Debian/Kali 系) などに含まれていることが一般的です。
lion2john とは何か? 🤔
lion2john
(多くの場合 lion2john.pl
という Perl スクリプト) は、Mac OS X 10.7 Lion のログインパスワードハッシュを抽出するために特別に作られた *2john ツールです。
なぜ特定の OS バージョン向けのツールが必要なのでしょうか? それは、macOS (旧 Mac OS X) がバージョンアップするにつれて、パスワードの保存方法やハッシュ化のアルゴリズムを変更してきたためです。Lion (10.7) では、それ以前のバージョン (例: 10.4-10.6 の Salted SHA-1) とは異なる形式 (Salted SHA-512) でパスワードハッシュが保存されるようになりました。
具体的には、ユーザーのパスワード情報は /var/db/dslocal/nodes/Default/users/
ディレクトリ内にあるユーザー名に対応した .plist
(Property List) ファイルに格納されています。この .plist
ファイル内の ShadowHashData
キーに含まれるデータは、単純なハッシュ文字列ではなく、さらにエンコードされたバイナリ形式の plist データです。この複雑な形式から JtR が直接扱える Salted SHA-512 形式のハッシュ文字列(ソルト情報を含む)を抽出するのが lion2john
の役割です。
注意点として、lion2john
は主に Mac OS X 10.7 Lion 向けに設計されました。その後の macOS バージョン (10.8 Mountain Lion 以降) では、パスワードハッシュの保存形式 (SALTED-SHA512-PBKDF2
など) がさらに変更されたり、FileVault 2 によるフルディスク暗号化が一般的になったりしたため、lion2john
がそのまま有効とは限りません。より新しいバージョンの macOS に対しては、mac2john.py
や他の手法が必要になる場合があります。John the Ripper の “-jumbo” バージョンは、10.7 の Salted SHA-512 ハッシュ形式 (dynamic_1722
または sha512crypt
として認識される場合がある) をサポートしています。
⚠️ 重要: lion2john.pl
を実行するには、Perl の Data::Plist
モジュールがシステムにインストールされている必要があります。もしインストールされていない場合は、CPAN などを使用してインストールしてください。
# CPAN を使ったインストール例 (システムによっては sudo が必要)
cpan install Data::Plist
lion2john の使い方 🛠️
lion2john
の基本的な使い方は非常にシンプルです。コマンドラインで lion2john.pl
スクリプトを実行し、引数としてターゲットとなるユーザーの .plist
ファイルへのパスを指定します。
ステップ 1: 対象ファイルの特定とコピー
まず、ハッシュを抽出したいユーザーの .plist
ファイルを見つける必要があります。これらのファイルは通常、管理者権限がないとアクセスできないディレクトリにあります。
- 対象の macOS システム上でターミナルを開きます。
-
以下のコマンドを実行して、ユーザーアカウントの plist ファイルが格納されているディレクトリに移動します(管理者権限が必要です)。
または単にcd /private/var/db/dslocal/nodes/Default/users/
cd /var/db/dslocal/nodes/Default/users/
-
ls
コマンドでファイルリストを表示し、ターゲットユーザー名の.plist
ファイル(例:username.plist
)を確認します。 -
lion2john
を実行するシステム(通常は JtR がインストールされている Linux システムなど)に、この.plist
ファイルをコピーします。直接アクセスできない場合は、USB メモリやネットワーク経由で転送します。安全のため、作業用ディレクトリ(例:/tmp/
)にコピーしてから転送すると良いでしょう。sudo cp username.plist /tmp/username.plist # その後、/tmp/username.plist を解析用マシンに転送
🚨 注意: このディレクトリへのアクセスやファイルのコピーは、システムのセキュリティ監視(EDR など)によって検知される可能性があります。許可なく行うことは絶対に避けてください。
ステップ 2: lion2john の実行
John the Ripper がインストールされているシステム(例: Kali Linux)で、lion2john.pl
スクリプトを実行します。スクリプトの場所は環境によって異なりますが、多くの場合 /usr/share/john/
や JtR ソースディレクトリ内の run
にあります。
# スクリプトのパスが通っていない場合
/path/to/john/run/lion2john.pl /path/to/copied/username.plist
または、パスが通っている場合や /usr/share/john
にある場合:
lion2john.pl /path/to/copied/username.plist
成功すると、標準出力に John the Ripper が認識できる形式のハッシュ文字列が出力されます。
出力例(架空のものです):
username:$ml$40000$7e1ab2c3d4e5f6a7b8c9d0e1f2a3b4c5$c1b2a3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2
この出力形式は ユーザー名:ハッシュ文字列
となっており、$ml$
プレフィックスやそれに続く数字(イテレーション回数など)、ソルト(16進数)、ハッシュ本体(16進数)で構成されていることが多いです。JtR はこの形式を自動的に認識します (macOS 10.7 の場合は sha512crypt
や dynamic_1722
として)。
ステップ 3: ハッシュをファイルに保存
出力されたハッシュ文字列を、後のクラッキング作業のためにファイルに保存します。リダイレクトを使用するのが簡単です。
lion2john.pl /path/to/copied/username.plist > mac_hashes.txt
複数の .plist
ファイルがある場合は、まとめて処理できます。
lion2john.pl user1.plist user2.plist > mac_hashes.txt
ステップ 4: John the Ripper でクラック実行
保存したハッシュファイル (mac_hashes.txt
) を使って、John the Ripper でパスワードクラッキングを実行します。
最も基本的な実行方法(デフォルトのモードを使用):
john mac_hashes.txt
特定のワードリスト (wordlist.txt
) を使用する場合:
john --wordlist=wordlist.txt mac_hashes.txt
ルールベースのアタックを併用する場合:
john --wordlist=wordlist.txt --rules mac_hashes.txt
John the Ripper はクラッキング試行を開始し、成功したパスワードが見つかると画面に表示し、$JOHN/john.pot
ファイルに記録します。
クラック済みのパスワードを確認するには:
john --show mac_hashes.txt
これにより、ユーザー名:クラックされたパスワード:その他の情報...
の形式で結果が表示されます。
互換性と代替ツール 🔄
前述の通り、lion2john
は主に Mac OS X 10.7 Lion をターゲットとしています。
- Mac OS X 10.4 ~ 10.6 (Tiger, Leopard, Snow Leopard): これらのバージョンでは Salted SHA-1 形式が使われていました。JtR の “-jumbo” バージョンはこれをサポートしていますが、抽出には
lion2john
ではなく、別の方法や古いツールが必要になるかもしれません (JtR が直接シャドウファイルを扱える場合もあります)。 - macOS 10.8 (Mountain Lion) 以降: パスワードハッシュ形式は
SALTED-SHA512-PBKDF2
に変更されました。この形式のハッシュを.plist
ファイルから抽出するには、lion2john
ではなくmac2john.py
(Python スクリプト) を使用するのが一般的です。mac2john.py
は、より新しい macOS バージョンや FileVault 2 のパスワードハッシュ抽出にも対応している場合があります。
mac2john.py
の基本的な使い方も lion2john
と似ています。
python /path/to/mac2john.py /path/to/copied/username.plist > mac_pbkdf2_hashes.txt
john mac_pbkdf2_hashes.txt
最新の macOS では、セキュリティ強化のため、.plist
ファイルからのハッシュ抽出がさらに困難になっている可能性があります。また、dscl . -read /Users/username dsAttrTypeNative:ShadowHashData
コマンドも EDR などで監視されていることが多いです。
常に最新の John the Ripper “-jumbo” バージョンを使用し、同梱されているドキュメントやコミュニティの情報を確認することが重要です。
macOS バージョン (目安) | 主なハッシュ形式 | 推奨される *2john ツール | JtR フォーマット (例) |
---|---|---|---|
10.4 – 10.6 | Salted SHA-1 | (古いツール or JtR 直接) / mac2john? | dynamic_1711 , xsha |
10.7 (Lion) | Salted SHA-512 | lion2john.pl |
dynamic_1722 , sha512crypt |
10.8 以降 | SALTED-SHA512-PBKDF2 | mac2john.py |
pbkdf2-hmac-sha512 , dynamic_1731 |
FileVault 2 | (様々、PBKDF2 ベースが多い) | mac2john.py / fvde2john.py |
(バージョンによる) |
キーチェーン | (様々) | keychain2john.py |
(バージョンによる) |
※ 上記は一般的な目安であり、具体的な JtR フォーマット名はバージョンや環境によって異なる場合があります。
倫理的な考慮事項と注意点 ⚖️
lion2john
や John the Ripper のようなツールは、システムのセキュリティを評価し強化するために非常に役立ちますが、その強力さゆえに悪用される危険性も伴います。
- 許可なきアクセスは違法です: 自分自身のアカウントや、明確な許可を得たシステムに対してのみ、これらのツールを使用してください。他人のアカウントや組織のシステムに対して許可なくパスワードクラッキングを試みることは、重大な法的問題を引き起こす可能性があります。
- セキュリティ監査目的での利用: 組織内でセキュリティ監査の一環としてパスワード強度をテストする場合でも、必ず事前に書面による承認を得て、関係部署と連携して実施してください。
- データの取り扱い: 抽出したハッシュデータや、クラックによって明らかになったパスワードは機密情報です。安全な場所に保管し、不要になったら確実に削除するなど、慎重に取り扱う必要があります。特に、ハッシュデータをオンラインで共有したり、安全でない場所に保存したりしないでください。
- パスワードポリシーの強化: パスワードクラッキングテストの結果、弱いパスワードが発見された場合は、パスワードポリシーの見直し(複雑さの要件、最低文字数、定期的な変更の強制など)や、多要素認証 (MFA) の導入を検討することが重要です。
これらのツールは、防御側の視点(自分のシステムのパスワードがどれだけ強いかを確認する)で使用することが、本来の目的であり推奨される使い方です。
まとめ ✨
lion2john
は、John the Ripper スイートの一部として、特定の macOS バージョン (主に 10.7 Lion) のパスワードハッシュを .plist
ファイルから抽出し、JtR で解析可能な形式に変換するための重要なユーティリティです。
- macOS のバージョンによってパスワードハッシュの保存形式が異なるため、
lion2john
やmac2john
のような専用ツールが必要になります。 - 使用するには、対象の
.plist
ファイルへのアクセス権限と、Perl (Data::Plist
モジュール含む) または Python 環境が必要です。 - 抽出したハッシュはファイルに保存し、John the Ripper を使ってパスワードクラッキング(強度テスト)を実行できます。
- これらのツールを使用する際は、法的な側面と倫理的な側面を十分に考慮し、必ず適切な許可を得て責任ある方法で使用してください。
この記事が、lion2john
と macOS のパスワード監査について理解を深める一助となれば幸いです。セキュリティ評価やペネトレーションテストにおいて、適切なツールを正しく理解し使用することは非常に重要です。 💪
参考情報
- John the Ripper 公式サイト: https://www.openwall.com/john/ – JtR のダウンロード、ドキュメント、メーリングリストなど。
- John the Ripper Community Wiki (GitHub): https://github.com/openwall/john-wiki/wiki – コミュニティによるドキュメントや情報。
- *2john ツールのリスト (Medium): https://medium.com/@andrey.pautov/2john-full-list-of-tools-cba76f34493a – 様々な *2john ツールについての概要 (記事発行時点の情報)。
コメント