John the Ripper で PeopleSoft PS_TOKEN を解析するための準備
このガイドでは、強力なパスワードクラッキングツール John the Ripper スイートに含まれるユーティリティの一つ、ps_token2john
の使い方を詳しく解説します。このツールは、Oracle PeopleSoft 環境で使用される PS_TOKEN
Cookie からパスワードハッシュを抽出するために特別に設計されています。
抽出されたハッシュは、John the Ripper 本体を使って解析(クラッキング)することができます。これは、セキュリティ監査やペネトレーションテストの文脈で、システムのパスワード強度を評価する際に非常に役立ちます。🔑
⚠️ 注意: このツールの使用は、正当な権限を持つシステムに対してのみ、セキュリティ評価の目的で行ってください。許可なく他者のシステムやデータにアクセスすることは、法律で禁止されており、深刻な結果を招く可能性があります。
ps_token2john とは?
ps_token2john
は、John the Ripper スイートの一部として提供されるPythonスクリプトです。主な目的は、Oracle PeopleSoft アプリケーションが認証に使用する PS_TOKEN
Cookie を解析し、John the Ripper が理解できる形式のハッシュ文字列に変換することです。
PeopleSoft は、企業資源計画 (ERP) や顧客関係管理 (CRM) などの機能を提供する広範なビジネスアプリケーションスイートです。これらのシステムへのアクセスは、多くの場合 PS_TOKEN
というセッショントークンによって管理されます。このトークンには、ユーザー認証に関連する情報が含まれており、ps_token2john
はこの情報からパスワードの検証に使われるハッシュを抽出します。
検索結果によると、このツールは Alexey Tyurin 氏 (ERPScan Research Group) によって開発された TokenChpoken というツールの parse.py
ファイルに基づいています。
前提条件
ps_token2john
を使用するには、以下のものが必要です。
-
John the Ripper (Jumbo バージョン):
ps_token2john
は、多くの場合、John the Ripper の “Jumbo” バージョンに含まれています。これは、コミュニティによって拡張されたバージョンで、より多くのハッシュタイプやユーティリティをサポートしています。Kali Linux などのペネトレーションテスト用ディストリビューションには通常、Jumbo バージョンがプリインストールされています。 -
Python 環境:
ps_token2john.py
は Python スクリプトであるため、実行には Python インタープリタが必要です。依存関係がある場合は、それらも満たす必要があります。 -
PS_TOKEN Cookie: 解析対象となる有効な
PS_TOKEN
Cookie の値が必要です。これは通常、PeopleSoft アプリケーションにログインした際の Web ブラウザの Cookie ストアや、ネットワークトラフィックのキャプチャなどから取得します。
John the Ripper のインストール場所は環境によって異なりますが、Kali Linux では /usr/sbin/john
や /usr/share/john/
配下にユーティリティが見つかることが多いです。
# Kali Linux で ps_token2john の場所を探す例
locate ps_token2john.py
多くの場合、/usr/share/john/ps_token2john.py
や /opt/john/run/ps_token2john.py
のようなパスにあります。
ps_token2john の使い方
ps_token2john
の使い方は非常にシンプルです。基本的な構文は以下の通りです。
python /path/to/ps_token2john.py -c <PS_TOKEN_COOKIE_VALUE>
または、実行パスが通っていれば直接実行できる場合もあります。
ps_token2john -c <PS_TOKEN_COOKIE_VALUE>
オプション
ps_token2john
の主なオプションは以下の通りです (ヘルプメッセージ -h
で確認できます)。
オプション | 説明 |
---|---|
-h, --help |
ヘルプメッセージを表示して終了します。 |
-c COOKIE |
解析対象の PS_TOKEN Cookie の値を指定します。必須のオプションです。 |
実行例
仮に、以下のような PS_TOKEN
Cookie を取得したとします(これはダミーの値です)。
AQEAAAAAAABUMAAAAAAAADQAFkhKUjQ1Ni4xMjMwNDU2Nzg5AAAAAAAAAAAAAABqYXZhLmxhbmcuU3RyaW5nABQAFBhZG1pbjIwMjUtMDMtMzEgMDA6MDA6MDA=
この Cookie を ps_token2john
で処理するには、次のようにコマンドを実行します。
# Python インタープリタを明示的に指定する場合
python /usr/share/john/ps_token2john.py -c 'AQEAAAAAAABUMAAAAAAAADQAFkhKUjQ1Ni4xMjMwNDU2Nzg5AAAAAAAAAAAAAABqYXZhLmxhbmcuU3RyaW5nABQAFBhZG1pbjIwMjUtMDMtMzEgMDA6MDA6MDA='
# 直接実行できる場合
ps_token2john -c 'AQEAAAAAAABUMAAAAAAAADQAFkhKUjQ1Ni4xMjMwNDU2Nzg5AAAAAAAAAAAAAABqYXZhLmxhbmcuU3RyaW5nABQAFBhZG1pbjIwMjUtMDMtMzEgMDA6MDA6MDA='
注意: Cookie の値はシェルのメタ文字を含む可能性があるため、シングルクォート('
)で囲むのが安全です。
出力形式
成功すると、ps_token2john
は John the Ripper が解析可能な形式でハッシュ文字列を標準出力に表示します。形式は PeopleSoft のバージョンや設定によって異なる可能性がありますが、一般的には以下のような形式になります(これはあくまで例です)。
user:$pstoken$*<hash_data>
ここで user
は関連付けられたユーザー名(トークンから抽出できた場合)、$pstoken$
はハッシュタイプを示すプレフィックス、<hash_data>
は実際のハッシュ情報です。
この出力された文字列をテキストファイル(例: ps_hashes.txt
)に保存します。
ps_token2john -c 'YOUR_PS_TOKEN_COOKIE' > ps_hashes.txt
John the Ripper でハッシュを解析する
ps_token2john
でハッシュを抽出したら、次はいよいよ John the Ripper 本体を使ってパスワードの解析を試みます。John the Ripper は様々な攻撃モードを持っています。
基本的な攻撃モード
-
シングルクラックモード (
--single
): ユーザー名や GECOS 情報に基づいてパスワードを推測する高速なモード。 -
辞書モード (
--wordlist
): パスワードの候補リスト(辞書ファイル)を使って攻撃するモード。ルール (--rules
) と組み合わせることで、辞書の単語を変化させ(例: 大文字小文字変換、数字追加)、より多くの候補を試すことができます。 -
インクリメンタルモード (
--incremental
): 指定された文字セットで全ての可能な組み合わせを試す総当たり攻撃モード。時間がかかりますが、最も網羅的です。
実行例
先ほど作成したハッシュファイル ps_hashes.txt
を使って、John the Ripper を実行します。
1. デフォルトモードでの実行 (シングル → 辞書 → インクリメンタルの順)
john ps_hashes.txt
John は自動的にハッシュタイプ ($pstoken$
) を検出し、デフォルトの順番で攻撃モードを実行します。
2. 辞書モードでの実行 (有名な rockyou.txt を使用)
多くの Linux ディストリビューションには rockyou.txt
という有名な辞書ファイルが含まれています(/usr/share/wordlists/rockyou.txt.gz
など)。
# rockyou.txt.gz がある場合、展開する
gzip -d /usr/share/wordlists/rockyou.txt.gz
# 辞書モードで実行 (ルールも有効にする)
john --wordlist=/usr/share/wordlists/rockyou.txt --rules ps_hashes.txt
3. インクリメンタルモードでの実行
john --incremental ps_hashes.txt
このモードは非常に時間がかかる可能性があります ⏳。
解析結果の表示
John the Ripper がパスワードの解析に成功すると、その結果は $JOHN/john.pot
(通常は ~/.john/john.pot
または John の実行ディレクトリ配下) というファイルに保存されます。解析済みのパスワードを確認するには、--show
オプションを使用します。
john --show ps_hashes.txt
成功していれば、以下のように表示されます(例)。
user:P@ssw0rd1!
1 password hash cracked, 0 left
ユースケースとシナリオ
ps_token2john
と John the Ripper の組み合わせは、主に以下のシナリオで活用されます。
-
ペネトレーションテスト: 攻撃者の視点からシステムの脆弱性を評価する際に、取得した
PS_TOKEN
からパスワードをクラックし、アクセス権の昇格や横展開(ラテラルムーブメント)が可能かどうかを検証します。 - セキュリティ監査: PeopleSoft 環境におけるパスワードポリシーの有効性を評価します。弱いパスワードが使用されていないか、容易に推測可能なパスワードが設定されていないかを確認します。
-
インシデント対応: セキュリティ侵害が発生した場合、漏洩した可能性のある
PS_TOKEN
からパスワードを特定し、影響範囲の調査や対策に役立てることがあります。
これらの活動は、組織のセキュリティ体制を強化するために不可欠ですが、常に倫理的な配慮と適切な承認のもとで行われるべきです。
セキュリティ上の考慮事項と対策
ps_token2john
のようなツールが存在することは、PS_TOKEN
の保護がいかに重要であるかを示しています。以下の対策を講じることで、関連するリスクを低減できます。
- 強力なパスワードポリシーの強制: 十分な長さ、複雑さ(大文字、小文字、数字、記号の組み合わせ)、定期的な変更をユーザーに義務付けます。John the Ripper のようなツールで容易にクラックされないようにすることが重要です。
- HTTPS の強制: PeopleSoft へのアクセスは常に HTTPS を使用し、通信経路での Cookie の盗聴(セッションハイジャック)を防ぎます。
-
Cookie の Secure 属性と HttpOnly 属性: Web サーバーの設定で、
PS_TOKEN
Cookie に Secure 属性(HTTPS 接続でのみ送信)と HttpOnly 属性(JavaScript からのアクセスを禁止)を設定し、クロスサイトスクリプティング (XSS) 攻撃などによる Cookie 漏洩のリスクを低減します。 - 多要素認証 (MFA) の導入: パスワードだけでなく、別の認証要素(SMSコード、認証アプリ、物理トークンなど)を要求することで、たとえパスワードが漏洩しても不正アクセスを防ぐことができます。
- アクセス制御と監視: PeopleSoft システムへのアクセスログを監視し、不審なアクティビティや不正なログイン試行を早期に検知します。不要なアカウントや権限は定期的に見直します。
- Web アプリケーションファイアウォール (WAF) の利用: XSS や SQL インジェクションなど、Cookie 漏洩につながる可能性のある Web アプリケーション攻撃を防御します。
🛡️ セキュリティは多層防御が基本です。単一の対策に頼るのではなく、複数の防御策を組み合わせることが効果的です。
まとめ
ps_token2john
は、Oracle PeopleSoft 環境のセキュリティ評価において、PS_TOKEN
Cookie からパスワードハッシュを抽出し、John the Ripper で解析するための重要なツールです。
このガイドで説明した手順に従うことで、ps_token2john
を効果的に使用し、抽出したハッシュを John the Ripper で解析することができます。ただし、その使用は常に倫理規範と法的枠組みの中で、許可された目的のために行う必要があります。
ツールの使い方を理解するとともに、PS_TOKEN
やパスワードの保護がいかに重要であるかを認識し、適切なセキュリティ対策を講じることが、システム全体の安全性を確保する鍵となります。💪
John the Ripper に関する詳細や最新情報については、Openwall プロジェクトの John the Ripper 公式サイトを参照することをお勧めします。
コメント