現代のネットワーク環境、特にWindowsドメイン環境では、Active Directory Certificate Services (AD CS) が重要な役割を果たしています。AD CSは、デジタル証明書の発行と管理を通じて、通信のセキュリティを確保するための公開鍵基盤 (PKI) を提供します。これにより、ユーザー認証、デバイス認証、データの暗号化、デジタル署名などが可能になります。しかし、AD CSの設定不備や、証明書ファイル(特に秘密鍵を含むもの)の管理が不適切だと、セキュリティ上のリスクとなり得ます。
そのような状況で役立つツールの一つが、adxcsouf2john
です。このツールは、著名なパスワードクラッキングツールである John the Ripper (JtR) スイートの一部として提供されており、AD CS関連の証明書ファイル(特に秘密鍵がパスワードで保護されているPFX/P12ファイル)から、John the Ripperが解析可能なハッシュ形式を抽出することを目的としています。🔑
この記事では、adxcsouf2john
の基本的な使い方から、John the Ripperとの連携方法、そしてその活用シナリオについて詳しく解説します。セキュリティ評価やペネトレーションテスト、あるいは万が一パスワードを忘れてしまった証明書ファイルの回復などに役立ててください。
adxcsouf2johnとは?
adxcsouf2john
は、John the Ripper (JtR) に含まれるPythonスクリプトの一つです。JtRには、様々なファイル形式やアプリケーションのデータからパスワードハッシュを抽出するための補助ツール群(*2john
ツール)が含まれており、adxcsouf2john
もその一つです。
具体的には、adxcsouf2john
はActive Directory Certificate Services (AD CS) に関連する証明書情報、特にパスワードで保護された秘密鍵を含む可能性のあるファイル(PFX形式やP12形式など)を処理対象とします。これらのファイルからパスワードを保護するために使用されている暗号化メカニズムに関する情報を抽出し、John the Ripperが総当たり攻撃や辞書攻撃を行える形式の「ハッシュ」として出力します。
このツール名にある「souf」の部分が具体的に何を指すかはドキュメントからは明確ではありませんが、AD CS環境における特定の証明書や鍵ストアの形式を対象としていると考えられます。類似のツールとして pfx2john
も存在し、こちらもPFX/P12ファイルからハッシュを抽出しますが、adxcsouf2john
はAD CS特有のコンテキストやメタデータに関連するケースを扱える可能性があります。
抽出されたハッシュは、元のパスワードそのものではありません。これは、元のパスワードを知らなくても、パスワードが正しいかどうかを検証できるデータです。John the Ripperは、このハッシュに対して様々なパスワード候補を試行し、ハッシュ値が一致するパスワードを見つけ出すことで、元のパスワードを特定します。🎯
前提条件
adxcsouf2john
を使用するには、以下のものが必要です。
-
Python環境:
adxcsouf2john
はPythonスクリプトであるため、実行にはPythonインタープリタが必要です。通常、LinuxディストリビューションやmacOSにはデフォルトでインストールされています。Windowsの場合は別途インストールが必要になることがあります。 -
John the Ripper (Jumbo版推奨):
adxcsouf2john
はJohn the Ripperの一部として配布されています。特に多くのフォーマットに対応した「Jumbo」バージョンに含まれていることが多いです。Kali Linuxなどのペネトレーションテスト用ディストリビューションには通常、Jumbo版が含まれています。 - 対象となる証明書ファイル: パスワードクラックを試みたい、AD CS関連の証明書ファイル(.pfx, .p12など)が必要です。このファイルには、パスワードで保護された秘密鍵が含まれている必要があります。
インストールと場所
adxcsouf2john
は通常、John the Ripper (Jumbo版) をインストールすると自動的に含まれます。個別にインストールする必要はありません。
スクリプトの場所は、JtRのインストール方法や環境によって異なりますが、一般的には以下のいずれかのディレクトリ内にあります。
/usr/share/john/
/opt/john/
(ソースからコンパイルした場合など)- John the Ripperを展開したディレクトリ内の
run
ディレクトリ - John the Ripperを展開したディレクトリ内の
tools
ディレクトリ (古いバージョン) - John the Ripperを展開したディレクトリ内の
extra
ディレクトリ (一部の配布形態)
ターミナルで以下のコマンドを実行して場所を探すことができます(環境によってパスは調整してください)。
find /usr -name adxcsouf2john.py
find /opt -name adxcsouf2john.py
find /path/to/john/ -name adxcsouf2john.py
見つかったパスを以降のコマンドで使用します。例えば、/usr/share/john/adxcsouf2john.py
にあった場合は、そのパスを指定して実行します。便宜上、以降の説明ではスクリプトがカレントディレクトリにあるか、パスが通っている前提で adxcsouf2john.py
と記述します。
基本的な使い方
adxcsouf2john
の基本的な使い方は非常にシンプルです。Pythonインタープリタでスクリプトを実行し、引数として対象の証明書ファイルを指定します。抽出されたハッシュは標準出力に出力されるため、通常はリダイレクト(>
)を使ってファイルに保存します。
python /path/to/adxcsouf2john.py certificate.pfx > hash_file.txt
または、実行権限が付与されていれば直接実行できる場合もあります。
/path/to/adxcsouf2john.py certificate.pfx > hash_file.txt
コマンド解説:
要素 | 説明 |
---|---|
python |
Pythonインタープリタを起動します。 |
/path/to/adxcsouf2john.py |
adxcsouf2john.py スクリプトへのフルパスまたは相対パス。 |
certificate.pfx |
ハッシュを抽出したい対象の証明書ファイル(PFX/P12形式)。 |
> |
リダイレクト演算子。標準出力をファイルに書き込みます。 |
hash_file.txt |
抽出されたハッシュを保存するファイル名。任意に設定できます。 |
成功すると、hash_file.txt
にJohn the Ripperが認識できる形式のハッシュ文字列が書き込まれます。ファイルの中身は、以下のような形式になっているはずです(具体的な形式は証明書の種類や保護方式により異なります)。
certificate.pfx:$pkcs12$..........
ファイル名の後に :
が続き、その後に $pkcs12$
などの識別子と、実際のハッシュデータが続く形式が一般的です。
pfx2john
ツールも同様の目的で使用できます。もし adxcsouf2john
でうまくいかない場合や、より一般的なPFX/P12ファイルを扱う場合は、pfx2john
を試してみる価値があります。使い方はほぼ同じです。
John the Ripperとの連携
adxcsouf2john
でハッシュファイルを生成したら、いよいよJohn the Ripperを使ってパスワードクラックを試みます。
基本的なコマンドは以下のようになります。
john hash_file.txt
これにより、John the Ripperは hash_file.txt
内のハッシュを読み込み、デフォルトのクラックモード(シングルクラックモード、辞書モード、インクリメンタルモードの順)でパスワード解析を開始します。
特定の辞書ファイルを使って攻撃を行いたい場合は、--wordlist
オプションを使用します。
john --wordlist=/path/to/wordlist.txt hash_file.txt
例えば、有名な辞書リストである rockyou.txt
を使う場合は以下のようになります(パスは環境に合わせてください)。
john --wordlist=/usr/share/wordlists/rockyou.txt hash_file.txt
John the Ripperは、パスワードが見つかると画面に表示し、$JOHN/john.pot
ファイル(通常は ~/.john/john.pot
または JtR実行ディレクトリの run
ディレクトリ内)に記録します。
クラックが完了した後や、中断した後に結果を確認するには、--show
オプションを使います。
john --show hash_file.txt
これにより、hash_file.txt
に含まれるハッシュのうち、既に見つかっているパスワードが表示されます。
John the Ripperのオプション例:
--format=<format-name>
: ハッシュ形式を明示的に指定します。adxcsouf2john
やpfx2john
で生成されたハッシュの場合、通常は自動認識されますが、問題がある場合は--format=pkcs12
などを試すことがあります。--rules
: 辞書モードと組み合わせて、単語の変形ルール(例: 大文字小文字変換、数字の付加)を適用します。--incremental
: インクリメンタルモード(ブルートフォース)のみを実行します。--fork=<N>
: N個のプロセスをフォークして並列処理を行います(CPUコア数に合わせると効果的)。--restore
: 中断されたセッションを再開します。
パスワードクラックには時間がかかる場合があります。特にパスワードが複雑である場合や、使用しているマシンのスペックによっては、数時間から数日、あるいはそれ以上かかることもあります。🕰️
活用シナリオ
adxcsouf2john
と John the Ripper の組み合わせは、以下のようなシナリオで役立ちます。
- ペネトレーションテスト・セキュリティ監査: ネットワーク内で発見された証明書ファイル(PFX/P12)に対してパスワードクラックを試み、弱いパスワードが設定されていないかを確認します。もし簡単にクラックできるパスワードが見つかれば、それは重大なセキュリティリスクを示唆します。攻撃者は、クラックしたパスワードを使って証明書と秘密鍵を入手し、正規ユーザーやシステムになりすますことが可能になるかもしれません。特にAD CS環境では、証明書ベースの認証が悪用されると、ドメイン管理者権限の奪取などに繋がる可能性があります (例: Certifried (CVE-2022-26923) などの脆弱性)。
- パスワード忘れの回復: 自身で作成・管理している証明書ファイル(PFX/P12)のパスワードを忘れてしまった場合に、パスワードを回復する手段として利用できます。ただし、これはあくまで最終手段であり、成功する保証はありません。パスワードが十分に複雑であれば、クラックは非常に困難になります。
- フォレンジック調査: インシデントレスポンスやフォレンジック調査の過程で、不正に入手された可能性のある証明書ファイルが見つかった場合に、そのパスワードを特定するために使用されることがあります。
AD CSは便利な機能ですが、設定ミスや証明書ファイルの不適切な管理は、攻撃者にとって格好の標的となり得ます。証明書テンプレートの設定不備(例えば、低権限ユーザーが管理者権限を持つ証明書を要求できる、サブジェクト代替名(SAN)を任意に指定できるなど)や、CA(認証局)の秘密鍵が漏洩した場合などは、組織全体に深刻な影響を及ぼす可能性があります。定期的な監査と適切な設定・管理が不可欠です。🛡️
まとめ
adxcsouf2john
は、John the Ripper スイートに含まれる強力な補助ツールであり、AD CS環境などで利用されるパスワード保護された証明書ファイル(PFX/P12)からパスワードハッシュを抽出することができます。抽出されたハッシュは、John the Ripperを用いて解析することで、元のパスワードを特定できる可能性があります。
このツールは、セキュリティ専門家がシステムの脆弱性を評価したり、管理者が忘れたパスワードを回復したりする際に役立ちます。しかし、その強力さゆえに、倫理的かつ法的に正当な目的でのみ使用することが極めて重要です。
AD CSと証明書のセキュリティは複雑ですが、adxcsouf2john
のようなツールを理解し、適切に利用することで、より安全なIT環境の構築と維持に貢献できます。👍
参考情報
より詳細な情報やJohn the Ripperの全体像については、以下の公式リソースを参照してください。
- John the Ripper official website: https://www.openwall.com/john/ – 公式サイト。ダウンロード、ドキュメント、メーリングリストなどへのリンクがあります。
- John the Ripper Community Wiki (GitHub): https://github.com/openwall/john/wiki – コミュニティによるWiki。使い方や各フォーマットに関する情報が含まれています。
- John the Ripper documentation: https://www.openwall.com/john/doc/ – 公式ドキュメント。README、FAQ、オプション解説などがあります。
コメント