mcafee_epo2john を使って McAfee ePO のパスワードハッシュを解析する方法 🕵️‍♂️

セキュリティツール
“`html

McAfee ePolicy Orchestrator (ePO) は、多くの組織でエンドポイントセキュリティを集中管理するために使用されている重要なプラットフォームです。しかし、その管理コンソールへのアクセス権を保護するパスワードが漏洩したり、忘れてしまったりすると、大きな問題を引き起こす可能性があります。

mcafee_epo2john は、広く使われているパスワードクラッキングツール John the Ripper (JtR) スイートに含まれるPythonスクリプトです。このツールの主な目的は、McAfee ePOのデータベースに保存されているパスワードハッシュを抽出し、John the Ripperで解析できる形式に変換することです。

この記事では、mcafee_epo2john の使い方、ePOのパスワードハッシュの仕組み、そして抽出したハッシュをJohn the Ripperでクラックする手順について、詳しく解説していきます。セキュリティ監査やペネトレーションテスト、あるいはパスワード復旧のシナリオで役立つ情報となるでしょう。😊

⚠️ 注意: このツールは、正当な権限を持つユーザーが、許可された目的(セキュリティ評価、インシデント対応、パスワード復旧など)のために使用することを想定しています。不正な目的での使用は法律で禁じられており、倫理的にも問題があります。常に適切な権限と許可を得てから使用してください。

McAfee ePO のパスワードハッシュについて 🔑

mcafee_epo2john を理解するためには、まずMcAfee ePOがどのようにユーザー認証情報を保存しているかを知る必要があります。ePOは、ユーザーアカウント情報(ローカル認証用)を通常、バックエンドのSQLデータベース(多くの場合、Microsoft SQL Server)内に保存します。

重要なのは、パスワードそのものではなく、パスワードの「ハッシュ値」が保存されている点です。ハッシュ化とは、元のパスワードを一方向性の関数(ハッシュ関数)に通して、固定長の文字列(ハッシュ値)に変換するプロセスです。元のパスワードからハッシュ値を計算するのは簡単ですが、ハッシュ値から元のパスワードを逆算するのは非常に困難です(理論上は不可能)。

mcafee_epo2john のソースコードや関連情報によると、ePOはローカルユーザーアカウントのパスワードハッシュとして、SHA-1 を使用しているようです。さらに、セキュリティを高めるために「ソルト」と呼ばれるランダムな値が各パスワードに追加された上でハッシュ化されています。ソルトを使うことで、同じパスワードを持つユーザーが異なるハッシュ値を持つようになり、レインボーテーブル攻撃などの事前計算による攻撃を防ぐ効果があります。

具体的には、ユーザー情報はePOデータベース内の dbo.OrionUsers というテーブルに格納されていることが多いようです。このテーブルには、ユーザー名 (Name カラム) や認証情報 (AuthURI カラム) などが含まれます。

AuthURI カラムのデータ形式は、認証タイプによって異なります。

  • ローカル認証 (SHA-1ベース): auth:pwd?pwd=<Base64エンコードされたハッシュとソルト> のような形式です。mcafee_epo2john はこの形式のデータを処理対象とします。Base64でエンコードされた部分をデコードすると、通常24バイトのデータになり、最初の20バイトがSHA-1ハッシュ、続く4バイトがソルトとなります。
  • Windows認証 (NTLMベース): auth:ntlm?domain=<ドメイン名>&user=<ユーザー名> のような形式です。この場合、認証はActive Directoryなどの外部システムに委任されるため、パスワードハッシュはePOデータベース内には保存されません。mcafee_epo2john はこの形式のデータは無視します。

これらの情報にアクセスするには、ePOが使用しているデータベースに対する読み取り権限が必要です。通常、データベースのダンプファイルを取得するか、SQL Management Studioのようなツールで直接データベースに接続して dbo.OrionUsers テーブルの内容をエクスポートする必要があります。

💡 補足: ハッシュアルゴリズム

過去の資料 (2012年のFIPS 140-2 Security Policy文書など) では、ePOがユーザーパスワードハッシュにSHA-1やSHA-256を使用していると記載されています。また、Trellix (旧McAfee) のドキュメントでは、パスワード暗号化にSHA2 (SHA-512含む) を使用しているとの記述も見られます。mcafee_epo2john は主にSHA-1ベースのハッシュに対応しているようですが、ePOのバージョンや設定によっては異なるハッシュアルゴリズムが使われている可能性も考慮に入れるべきです。

mcafee_epo2john の準備 ⚙️

mcafee_epo2john は、単体のツールとして配布されているわけではなく、John the Ripper (JtR) の “Jumbo” バージョンに含まれるユーティリティスクリプトの一つです。JtR Jumboは、オリジナルのJtRに多くの追加機能やハッシュ形式のサポートを加えた拡張版です。

したがって、mcafee_epo2john を使うためには、まずJohn the Ripper (Jumbo) を入手してインストールする必要があります。

  1. John the Ripper (Jumbo) の入手:
    • 公式リポジトリ (GitHub): 最新版は Openwall の John the Ripper GitHub リポジトリ から入手できます。ソースコードをクローンまたはダウンロードして、システム上でコンパイルします。
      git clone https://github.com/openwall/john.git
      cd john/src
      ./configure && make -s clean && make -sj4
      (コンパイルには、開発ツール (gcc, makeなど) や OpenSSL の開発ライブラリ (libssl-dev など) が必要になる場合があります。)
    • パッケージマネージャー: 多くのLinuxディストリビューション (Kali Linux, Debian, Ubuntu, Alpine Linuxなど) やmacOS (Homebrewなど) では、パッケージマネージャーを使ってJtRを簡単にインストールできます。ただし、提供されるバージョンが最新のJumbo版であるか確認が必要です。例えば、Kali Linuxでは john パッケージに含まれています。
      sudo apt update
      sudo apt install john
    • プリコンパイル版: John the Ripper 公式サイト から、特定のOS向けのプリコンパイル済みバイナリが提供されている場合もあります。
  2. mcafee_epo2john.py の場所の確認:

    JtRをインストールした後、mcafee_epo2john.py スクリプトは通常、JtRの実行ファイルがあるディレクトリ (多くの場合 run ディレクトリ) 内に配置されます。

    cd john/run  # ソースからコンパイルした場合
    ls mcafee_epo2john.py

    (Kali Linux などパッケージでインストールした場合は /usr/share/john//usr/lib/john/ などのパスにある可能性もあります。)

  3. 依存関係:

    mcafee_epo2john.py はPythonスクリプトなので、Pythonインタプリタ (通常はPython 2系または3系) が必要です。特別な外部ライブラリは通常不要ですが、システムにPythonがインストールされていることを確認してください。

これで、mcafee_epo2john を使用する準備が整いました。次は、実際にこのスクリプトを使ってePOデータベースからハッシュを抽出する方法を見ていきましょう。

mcafee_epo2john の使い方 🚀

mcafee_epo2john の主な役割は、McAfee ePOデータベースの dbo.OrionUsers テーブルからエクスポートされたデータを読み込み、John the Ripperが解析できる形式のハッシュ文字列を出力することです。

入力データ形式

このスクリプトは、特定の形式のCSV (Comma Separated Values) ファイルを入力として期待します。

  • ファイルは dbo.OrionUsers テーブルの内容をエクスポートしたものである必要があります。
  • 少なくとも、1列目にユーザー名 (Name)2列目に認証情報 (AuthURI) が含まれている必要があります。
  • 列の区切り文字はカンマ (,) である必要があります。
  • ヘッダー行(例: “Name,AuthURI”)はあってもなくても構いませんが、スクリプトはヘッダー行を適切にスキップしない可能性があるため、データ行のみを含むファイルを用意するのが確実です。

以下は、入力CSVファイルの例です。

system,auth:pwd?pwd=kDv1oBRuGOU3MnpIDbyBJEmJZ%2FauS1zf
admin,auth:pwd?pwd=mcj8Y%2F9as331TJiQtxKIy%2FC9W1LIHk0I
auditor,auth:pwd?pwd=aBcDeFgHiJkLmNoPqRsTuVwXyZa%2FbCdE
adminepo,auth:ntlm?domain=XYZ&user=adminepo

この例では、system, admin, auditor ユーザーがローカル認証 (SHA-1) で、adminepo ユーザーがWindows認証 (NTLM) です。mcafee_epo2john は、最初の3行を処理し、最後の行は無視します。

データベースからこの形式のCSVファイルを取得するには、SQL Management Studio などのデータベース管理ツールを使用するか、SQLクエリを実行して結果をCSVとして保存します。

-- 例: SQL Server で CSV を出力するクエリ (ツールによって方法は異なります)
SELECT Name + ',' + AuthURI
FROM dbo.OrionUsers;
-- クエリ結果をCSVファイルとしてエクスポートします。

コマンドライン実行

mcafee_epo2john.py スクリプトは、コマンドラインから実行します。基本的な構文は以下の通りです。

python /path/to/mcafee_epo2john.py [入力CSVファイル1] [入力CSVファイル2] ...

または、JtRの run ディレクトリにいる場合は、

./mcafee_epo2john.py [入力CSVファイル1] [入力CSVファイル2] ...

引数として、処理したいCSVファイルのパスを一つ以上指定します。ファイル名を - とすると、標準入力からデータを読み込むこともできます。

スクリプトは、処理結果(John the Ripper 形式のハッシュ)を標準出力に書き出します。通常は、リダイレクト (>) を使ってファイルに保存します。

実行例:

orion_users.csv という名前のCSVファイルがあるとします。

# JtRのrunディレクトリから実行し、結果を orion_hashes.txt に保存
./mcafee_epo2john.py orion_users.csv > orion_hashes.txt

複数のファイルを一度に処理することも可能です。

./mcafee_epo2john.py server1_users.csv server2_users.csv > all_epo_hashes.txt

出力形式

mcafee_epo2john が出力するハッシュの形式は、John the Ripper の dynamic_24 フォーマットに準拠しています。これは、”sha1($pass.$salt)” 形式のハッシュを扱うためのフォーマットです。

出力の各行は以下のようになります。

ユーザー名:$dynamic_24$ハッシュ(HEX)$HEX$ソルト(HEX)

例えば、上記のCSV入力例の system ユーザーに対応する出力は、以下のようになります(実際のハッシュとソルトの値は異なります)。

system:$dynamic_24$903bf5a0146e18c9d08d7a480dbc1244a64599f5$HEX$ae4b5cdf
  • system: ユーザー名
  • $dynamic_24$: John the Ripper に対するフォーマット指定子
  • 903bf5a0146e18c9d08d7a480dbc1244a64599f5: SHA-1 ハッシュ値 (20バイト = 40桁の16進数)
  • $HEX$: ソルトの形式指定子
  • ae4b5cdf: ソルト (4バイト = 8桁の16進数)

この形式のハッシュ文字列を含むファイル (例: orion_hashes.txt) を、次のステップで John the Ripper に入力します。

❗ エラー処理: もし入力CSVの形式が正しくない場合や、AuthURI のデータが期待した形式 (auth:pwd?pwd=...) でない場合、その行はスキップされます。また、Base64デコード後のデータ長が24バイトでない場合、エラーメッセージが標準エラー出力に出力されることがあります。

John the Ripper でのパスワードクラック 🔓

mcafee_epo2john で抽出・変換したハッシュファイル (例: orion_hashes.txt) ができたら、いよいよ John the Ripper を使って実際のパスワードクラックを試みます。JtRは非常に強力で多機能なツールであり、様々な攻撃モードを持っています。

基本的な使い方

最も基本的な使い方は、JtRの実行ファイル (john) にハッシュファイルを引数として渡すだけです。

# JtRのrunディレクトリから実行
./john orion_hashes.txt

これを実行すると、JtRはデフォルトの順序で複数のクラックモードを試します。

  1. シングルクラックモード (Single Crack Mode): ハッシュファイルに含まれるユーザー名や、それに関連する情報(例えば、ユーザー名を基にした変形)をパスワード候補として試します。単純なパスワード (ユーザー名と同じ、など) はこれで素早く見つかることがあります。
  2. ワードリストモード (Wordlist Mode): デフォルトのパスワードリスト (password.lst など) を使って辞書攻撃を行います。設定ファイル (john.conf または john.ini) で定義されたルールに基づいて、単語を変形させながら試行します。
  3. インクリメンタルモード (Incremental Mode): 設定された文字セット(例: すべての英数字記号)を使って、短いものから順に総当たり (ブルートフォース) 攻撃を行います。非常に時間がかかりますが、理論上はあらゆるパスワードを発見できる可能性があります。

JtRはクラックの進行状況をターミナルに表示し、クラックに成功したパスワードが見つかると、それを記録します (通常 john.pot というファイルに保存されます)。Ctrl+C を押すといつでも中断でき、再開時には中断した箇所から続行できます。

クラックされたパスワードの表示

クラックが完了した後、または途中で見つかったパスワードを確認するには、--show オプションを使います。

./john --show orion_hashes.txt

以下のような形式で、クラックされたユーザー名とパスワードのペアが表示されます。

system:password123:uid:::ユーザー名:/home/user:/bin/bash
admin:adminpass:::ユーザー名:/home/user:/bin/bash

2 password hashes cracked, 1 left

(上記の表示形式は一例です。: 区切りでパスワードが表示されます。)

john.pot ファイルを直接確認することでも、クラックされたハッシュとパスワードのペアを見ることができます。

cat john.pot
$dynamic_24$903bf5a0146e18c9d08d7a480dbc1244a64599f5$HEX$ae4b5cdf:password123
$dynamic_24$...:adminpass

特定のモードやオプションの指定

より効率的にクラックを行うために、特定のモードやオプションを指定できます。

  • ワードリストモードの明示的な指定: 特定の辞書ファイルを使いたい場合。
    ./john --wordlist=/path/to/custom_dictionary.txt orion_hashes.txt
  • ルールベース攻撃の併用: ワードリストの単語にルール (大文字小文字変換、数字追加など) を適用して試行。
    ./john --wordlist=passwords.lst --rules=All orion_hashes.txt
    (Alljohn.conf で定義されたルールセット名)
  • インクリメンタルモードの明示的な指定: 特定の文字セットで総当たり攻撃。
    ./john --incremental=Digits orion_hashes.txt
    (Digits は数字のみの文字セット)
  • フォーマットの明示的な指定: JtRが自動でフォーマットを認識できない場合に指定。mcafee_epo2john の場合は通常不要ですが、念のため。
    ./john --format=dynamic_24 orion_hashes.txt

John the Ripper には非常に多くのオプションと機能があります。./john --help コマンドや、Openwall Wiki の JtR チュートリアル などを参照して、目的に合った最適な使い方を見つけてください。

✅ クラック成功の鍵

パスワードクラックの成功率は、パスワードの強度と使用するワードリストやルール、そして利用可能な計算リソースに大きく依存します。強力なパスワード (長く、複雑で、辞書に載っていないもの) は、クラックが非常に困難か、現実的な時間内では不可能です。

注意点と対策 🛡️

mcafee_epo2john と John the Ripper は強力なツールですが、その利用には重要な注意点と、悪用された場合の対策を理解しておく必要があります。

利用上の注意点

  • 正当な権限と目的: 何度も強調しますが、これらのツールは自身が管理するシステム、または明示的な許可を得たシステムに対してのみ使用してください。不正アクセスや権限のないシステムへの攻撃は違法行為です。
  • 倫理的な利用: セキュリティ評価やパスワード強度監査、インシデント後の調査、自身のアカウントのパスワード復旧など、倫理的に正当化される範囲で使用しましょう。
  • 情報漏洩リスク: データベースダンプファイルや抽出したハッシュファイルは機密情報です。安全な場所に保管し、不要になったら確実に削除してください。これらのファイルが漏洩すると、攻撃者にパスワードクラックの機会を与えてしまいます。

ePOパスワード漏洩のリスク

McAfee ePO の管理者アカウントや権限のあるユーザーアカウントのパスワードがクラックされると、以下のような深刻なセキュリティリスクが生じます。

  • 管理コンソールへの不正アクセス: 攻撃者がePOにログインし、組織全体のセキュリティポリシーを不正に変更する可能性があります。
  • マルウェアの配布: ePOを通じて管理下の多数のエンドポイントにマルウェアを配布したり、悪意のあるタスクを実行したりすることが可能になります。
  • セキュリティ機能の無効化: ウイルス対策やファイアウォールなどのセキュリティ機能を無効化され、エンドポイントが保護されない状態になる可能性があります。
  • 機密情報の窃取: ePOが管理する情報(インベントリ、脆弱性情報など)が窃取される可能性があります。
  • 他のシステムへの侵害拡大: ePOの認証情報が他のシステムでも使い回されている場合、侵害が横展開する可能性があります。

推奨される対策

ePOのセキュリティを強化し、パスワードクラックのリスクを低減するために、以下の対策を講じることが強く推奨されます。

  • 強力なパスワードポリシーの適用:
    • ePOのローカルユーザーアカウントには、長く (例: 15文字以上)、複雑 (大文字、小文字、数字、記号を含む) なパスワードを設定する。
    • 容易に推測できる単語や個人情報に基づいたパスワードを避ける。
    • 定期的なパスワード変更を義務付ける (例: 90日ごと)。
    • パスワード履歴を管理し、過去に使用したパスワードの再利用を禁止する。
  • 多要素認証 (MFA) の利用: 可能であれば、ePOへのログインに多要素認証を導入します。パスワードだけでなく、別の認証要素(例: ワンタイムパスワードアプリ、物理キー)を要求することで、パスワードが漏洩した場合でも不正アクセスを防ぐことができます。
  • Windows認証 / シングルサインオン (SSO) の活用: ローカルのパスワード認証ではなく、Active Directoryなど信頼できる認証基盤と連携したWindows認証やSSOを利用することを検討します。これにより、ePO独自のパスワード管理が不要になり、組織全体の認証ポリシーを一元管理できます。
  • データベースへのアクセス制御強化: ePOデータベースへのアクセス権限を最小限に絞り、データベース管理者やePOサービスアカウントなど、本当に必要なアカウントのみがアクセスできるように厳格に管理します。データベースの認証情報 (db.properties ファイルなど) も適切に保護します。
  • 定期的なセキュリティ監査と脆弱性診断: 定期的にePOサーバーおよび関連コンポーネントのセキュリティ設定をレビューし、脆弱性診断を実施して、設定ミスや既知の脆弱性がないかを確認します。
  • 不要なアカウントの無効化・削除: 使用されていないePOアカウントは速やかに無効化または削除します。
  • ログの監視: ePOの監査ログやデータベースのアクセスログを定期的に監視し、不審なログイン試行やアクティビティがないかを確認します。

これらの対策を組み合わせることで、McAfee ePO 環境のセキュリティを大幅に向上させることができます。💪

まとめ ✨

mcafee_epo2john は、McAfee ePolicy Orchestrator (ePO) のデータベースに保存されているローカルユーザーのパスワードハッシュ (主にSHA-1ベース) を抽出し、John the Ripper で解析可能な形式に変換するための便利なツールです。セキュリティ専門家がパスワード強度監査やペネトレーションテストを行う際に役立ちます。

この記事では、以下の点について解説しました。

  • ePOがパスワードハッシュをどのように保存しているか (dbo.OrionUsers テーブル、AuthURI カラム、SHA-1+ソルト)
  • mcafee_epo2john を使うための準備 (John the Ripper (Jumbo) のインストール)
  • mcafee_epo2john の使い方 (CSV入力、コマンド実行、出力形式)
  • John the Ripper を使って抽出したハッシュをクラックする基本的な手順とオプション
  • ツール利用上の注意点と、ePOのパスワード漏洩リスク、そして推奨されるセキュリティ対策

ePOは組織のセキュリティ基盤において中心的な役割を担うため、その認証情報を保護することは極めて重要です。mcafee_epo2john のようなツールは、潜在的な弱点を特定し、セキュリティ体制を強化するために活用できますが、常に倫理的かつ合法的な範囲で使用する必要があります。

強力なパスワードポリシー、多要素認証、適切なアクセス制御など、多層的な防御策を講じることで、McAfee ePO 環境を安全に保ちましょう。🛡️

参考情報 📚

さらに詳しい情報については、以下のリソースを参照してください。

  • John the Ripper 公式サイト: https://www.openwall.com/john/ – JtR本体のダウンロード、ドキュメントなど。
  • John the Ripper Community Wiki: https://openwall.info/wiki/john – チュートリアル、ハッシュ形式、使い方に関する豊富な情報。
  • John the Ripper GitHub リポジトリ: https://github.com/openwall/john – 最新のソースコード、mcafee_epo2john.py スクリプト自体もここで確認できます (run ディレクトリ内)。
  • Trellix (旧 McAfee) ePO ドキュメントポータル: https://docs.trellix.com/ – ePOの公式ドキュメント、セキュリティガイドラインなど。 (具体的なパスワードハッシュ形式の詳細が公開されているかは不明)
“““html

mcafee_epo2john を使って McAfee ePO のパスワードハッシュを解析する方法 🕵️‍♂️

McAfee ePolicy Orchestrator (ePO) は、多くの組織でエンドポイントセキュリティを集中管理するために使用されている重要なプラットフォームです。しかし、その管理コンソールへのアクセス権を保護するパスワードが漏洩したり、忘れてしまったりすると、大きな問題を引き起こす可能性があります。

mcafee_epo2john は、広く使われているパスワードクラッキングツール John the Ripper (JtR) スイートに含まれるPythonスクリプトです。このツールの主な目的は、McAfee ePOのデータベースに保存されているパスワードハッシュを抽出し、John the Ripperで解析できる形式に変換することです。

この記事では、mcafee_epo2john の使い方、ePOのパスワードハッシュの仕組み、そして抽出したハッシュをJohn the Ripperでクラックする手順について、詳しく解説していきます。セキュリティ監査やペネトレーションテスト、あるいはパスワード復旧のシナリオで役立つ情報となるでしょう。😊

⚠️ 注意: このツールは、正当な権限を持つユーザーが、許可された目的(セキュリティ評価、インシデント対応、パスワード復旧など)のために使用することを想定しています。不正な目的での使用は法律で禁じられており、倫理的にも問題があります。常に適切な権限と許可を得てから使用してください。

McAfee ePO のパスワードハッシュについて 🔑

mcafee_epo2john を理解するためには、まずMcAfee ePOがどのようにユーザー認証情報を保存しているかを知る必要があります。ePOは、ユーザーアカウント情報(ローカル認証用)を通常、バックエンドのSQLデータベース(多くの場合、Microsoft SQL Server)内に保存します。

重要なのは、パスワードそのものではなく、パスワードの「ハッシュ値」が保存されている点です。ハッシュ化とは、元のパスワードを一方向性の関数(ハッシュ関数)に通して、固定長の文字列(ハッシュ値)に変換するプロセスです。元のパスワードからハッシュ値を計算するのは簡単ですが、ハッシュ値から元のパスワードを逆算するのは非常に困難です(理論上は不可能)。

mcafee_epo2john のソースコードや関連情報によると、ePOはローカルユーザーアカウントのパスワードハッシュとして、SHA-1 を使用しているようです。さらに、セキュリティを高めるために「ソルト」と呼ばれるランダムな値が各パスワードに追加された上でハッシュ化されています。ソルトを使うことで、同じパスワードを持つユーザーが異なるハッシュ値を持つようになり、レインボーテーブル攻撃などの事前計算による攻撃を防ぐ効果があります。

具体的には、ユーザー情報はePOデータベース内の dbo.OrionUsers というテーブルに格納されていることが多いようです。このテーブルには、ユーザー名 (Name カラム) や認証情報 (AuthURI カラム) などが含まれます。

AuthURI カラムのデータ形式は、認証タイプによって異なります。

  • ローカル認証 (SHA-1ベース): auth:pwd?pwd=<Base64エンコードされたハッシュとソルト> のような形式です。mcafee_epo2john はこの形式のデータを処理対象とします。Base64でエンコードされた部分をデコードすると、通常24バイトのデータになり、最初の20バイトがSHA-1ハッシュ、続く4バイトがソルトとなります。
  • Windows認証 (NTLMベース): auth:ntlm?domain=<ドメイン名>&user=<ユーザー名> のような形式です。この場合、認証はActive Directoryなどの外部システムに委任されるため、パスワードハッシュはePOデータベース内には保存されません。mcafee_epo2john はこの形式のデータは無視します。

これらの情報にアクセスするには、ePOが使用しているデータベースに対する読み取り権限が必要です。通常、データベースのダンプファイルを取得するか、SQL Management Studioのようなツールで直接データベースに接続して dbo.OrionUsers テーブルの内容をエクスポートする必要があります。

💡 補足: ハッシュアルゴリズム

過去の資料 (2012年のFIPS 140-2 Security Policy文書など) では、ePOがユーザーパスワードハッシュにSHA-1やSHA-256を使用していると記載されています。また、Trellix (旧McAfee) のドキュメントでは、パスワード暗号化にSHA2 (SHA-512含む) を使用しているとの記述も見られます。mcafee_epo2john は主にSHA-1ベースのハッシュに対応しているようですが、ePOのバージョンや設定によっては異なるハッシュアルゴリズムが使われている可能性も考慮に入れるべきです。

mcafee_epo2john の準備 ⚙️

mcafee_epo2john は、単体のツールとして配布されているわけではなく、John the Ripper (JtR) の “Jumbo” バージョンに含まれるユーティリティスクリプトの一つです。JtR Jumboは、オリジナルのJtRに多くの追加機能やハッシュ形式のサポートを加えた拡張版です。

したがって、mcafee_epo2john を使うためには、まずJohn the Ripper (Jumbo) を入手してインストールする必要があります。

  1. John the Ripper (Jumbo) の入手:
    • 公式リポジトリ (GitHub): 最新版は Openwall の John the Ripper GitHub リポジトリ から入手できます。ソースコードをクローンまたはダウンロードして、システム上でコンパイルします。
      git clone https://github.com/openwall/john.git
      cd john/src
      ./configure && make -s clean && make -sj4
      (コンパイルには、開発ツール (gcc, makeなど) や OpenSSL の開発ライブラリ (libssl-dev など) が必要になる場合があります。)
    • パッケージマネージャー: 多くのLinuxディストリビューション (Kali Linux, Debian, Ubuntu, Alpine Linuxなど) やmacOS (Homebrewなど) では、パッケージマネージャーを使ってJtRを簡単にインストールできます。ただし、提供されるバージョンが最新のJumbo版であるか確認が必要です。例えば、Kali Linuxでは john パッケージに含まれています。
      sudo apt update
      sudo apt install john
    • プリコンパイル版: John the Ripper 公式サイト から、特定のOS向けのプリコンパイル済みバイナリが提供されている場合もあります。
  2. mcafee_epo2john.py の場所の確認:

    JtRをインストールした後、mcafee_epo2john.py スクリプトは通常、JtRの実行ファイルがあるディレクトリ (多くの場合 run ディレクトリ) 内に配置されます。

    cd john/run  # ソースからコンパイルした場合
    ls mcafee_epo2john.py

    (Kali Linux などパッケージでインストールした場合は /usr/share/john//usr/lib/john/ などのパスにある可能性もあります。)

  3. 依存関係:

    mcafee_epo2john.py はPythonスクリプトなので、Pythonインタプリタ (通常はPython 2系または3系) が必要です。特別な外部ライブラリは通常不要ですが、システムにPythonがインストールされていることを確認してください。

これで、mcafee_epo2john を使用する準備が整いました。次は、実際にこのスクリプトを使ってePOデータベースからハッシュを抽出する方法を見ていきましょう。

mcafee_epo2john の使い方 🚀

mcafee_epo2john の主な役割は、McAfee ePOデータベースの dbo.OrionUsers テーブルからエクスポートされたデータを読み込み、John the Ripperが解析できる形式のハッシュ文字列を出力することです。

入力データ形式

このスクリプトは、特定の形式のCSV (Comma Separated Values) ファイルを入力として期待します。

  • ファイルは dbo.OrionUsers テーブルの内容をエクスポートしたものである必要があります。
  • 少なくとも、1列目にユーザー名 (Name)2列目に認証情報 (AuthURI) が含まれている必要があります。
  • 列の区切り文字はカンマ (,) である必要があります。
  • ヘッダー行(例: “Name,AuthURI”)はあってもなくても構いませんが、スクリプトはヘッダー行を適切にスキップしない可能性があるため、データ行のみを含むファイルを用意するのが確実です。

以下は、入力CSVファイルの例です。

system,auth:pwd?pwd=kDv1oBRuGOU3MnpIDbyBJEmJZ%2FauS1zf
admin,auth:pwd?pwd=mcj8Y%2F9as331TJiQtxKIy%2FC9W1LIHk0I
auditor,auth:pwd?pwd=aBcDeFgHiJkLmNoPqRsTuVwXyZa%2FbCdE
adminepo,auth:ntlm?domain=XYZ&user=adminepo

この例では、system, admin, auditor ユーザーがローカル認証 (SHA-1) で、adminepo ユーザーがWindows認証 (NTLM) です。mcafee_epo2john は、最初の3行を処理し、最後の行は無視します。

データベースからこの形式のCSVファイルを取得するには、SQL Management Studio などのデータベース管理ツールを使用するか、SQLクエリを実行して結果をCSVとして保存します。

-- 例: SQL Server で CSV を出力するクエリ (ツールによって方法は異なります)
SELECT Name + ',' + AuthURI
FROM dbo.OrionUsers;
-- クエリ結果をCSVファイルとしてエクスポートします。

コマンドライン実行

mcafee_epo2john.py スクリプトは、コマンドラインから実行します。基本的な構文は以下の通りです。

python /path/to/mcafee_epo2john.py [入力CSVファイル1] [入力CSVファイル2] ...

または、JtRの run ディレクトリにいる場合は、

./mcafee_epo2john.py [入力CSVファイル1] [入力CSVファイル2] ...

引数として、処理したいCSVファイルのパスを一つ以上指定します。ファイル名を - とすると、標準入力からデータを読み込むこともできます。

スクリプトは、処理結果(John the Ripper 形式のハッシュ)を標準出力に書き出します。通常は、リダイレクト (>) を使ってファイルに保存します。

実行例:

orion_users.csv という名前のCSVファイルがあるとします。

# JtRのrunディレクトリから実行し、結果を orion_hashes.txt に保存
./mcafee_epo2john.py orion_users.csv > orion_hashes.txt

複数のファイルを一度に処理することも可能です。

./mcafee_epo2john.py server1_users.csv server2_users.csv > all_epo_hashes.txt

出力形式

mcafee_epo2john が出力するハッシュの形式は、John the Ripper の dynamic_24 フォーマットに準拠しています。これは、”sha1($pass.$salt)” 形式のハッシュを扱うためのフォーマットです。

出力の各行は以下のようになります。

ユーザー名:$dynamic_24$ハッシュ(HEX)$HEX$ソルト(HEX)

例えば、上記のCSV入力例の system ユーザーに対応する出力は、以下のようになります(実際のハッシュとソルトの値は異なります)。

system:$dynamic_24$903bf5a0146e18c9d08d7a480dbc1244a64599f5$HEX$ae4b5cdf
  • system: ユーザー名
  • $dynamic_24$: John the Ripper に対するフォーマット指定子
  • 903bf5a0146e18c9d08d7a480dbc1244a64599f5: SHA-1 ハッシュ値 (20バイト = 40桁の16進数)
  • $HEX$: ソルトの形式指定子
  • ae4b5cdf: ソルト (4バイト = 8桁の16進数)

この形式のハッシュ文字列を含むファイル (例: orion_hashes.txt) を、次のステップで John the Ripper に入力します。

❗ エラー処理: もし入力CSVの形式が正しくない場合や、AuthURI のデータが期待した形式 (auth:pwd?pwd=...) でない場合、その行はスキップされます。また、Base64デコード後のデータ長が24バイトでない場合、エラーメッセージが標準エラー出力に出力されることがあります。

John the Ripper でのパスワードクラック 🔓

mcafee_epo2john で抽出・変換したハッシュファイル (例: orion_hashes.txt) ができたら、いよいよ John the Ripper を使って実際のパスワードクラックを試みます。JtRは非常に強力で多機能なツールであり、様々な攻撃モードを持っています。

基本的な使い方

最も基本的な使い方は、JtRの実行ファイル (john) にハッシュファイルを引数として渡すだけです。

# JtRのrunディレクトリから実行
./john orion_hashes.txt

これを実行すると、JtRはデフォルトの順序で複数のクラックモードを試します。

  1. シングルクラックモード (Single Crack Mode): ハッシュファイルに含まれるユーザー名や、それに関連する情報(例えば、ユーザー名を基にした変形)をパスワード候補として試します。単純なパスワード (ユーザー名と同じ、など) はこれで素早く見つかることがあります。
  2. ワードリストモード (Wordlist Mode): デフォルトのパスワードリスト (password.lst など) を使って辞書攻撃を行います。設定ファイル (john.conf または john.ini) で定義されたルールに基づいて、単語を変形させながら試行します。
  3. インクリメンタルモード (Incremental Mode): 設定された文字セット(例: すべての英数字記号)を使って、短いものから順に総当たり (ブルートフォース) 攻撃を行います。非常に時間がかかりますが、理論上はあらゆるパスワードを発見できる可能性があります。

JtRはクラックの進行状況をターミナルに表示し、クラックに成功したパスワードが見つかると、それを記録します (通常 john.pot というファイルに保存されます)。Ctrl+C を押すといつでも中断でき、再開時には中断した箇所から続行できます。

クラックされたパスワードの表示

クラックが完了した後、または途中で見つかったパスワードを確認するには、--show オプションを使います。

./john --show orion_hashes.txt

以下のような形式で、クラックされたユーザー名とパスワードのペアが表示されます。

system:password123:uid:::ユーザー名:/home/user:/bin/bash
admin:adminpass:::ユーザー名:/home/user:/bin/bash

2 password hashes cracked, 1 left

(上記の表示形式は一例です。: 区切りでパスワードが表示されます。)

john.pot ファイルを直接確認することでも、クラックされたハッシュとパスワードのペアを見ることができます。

cat john.pot
$dynamic_24$903bf5a0146e18c9d08d7a480dbc1244a64599f5$HEX$ae4b5cdf:password123
$dynamic_24$...:adminpass

特定のモードやオプションの指定

より効率的にクラックを行うために、特定のモードやオプションを指定できます。

  • ワードリストモードの明示的な指定: 特定の辞書ファイルを使いたい場合。
    ./john --wordlist=/path/to/custom_dictionary.txt orion_hashes.txt
  • ルールベース攻撃の併用: ワードリストの単語にルール (大文字小文字変換、数字追加など) を適用して試行。
    ./john --wordlist=passwords.lst --rules=All orion_hashes.txt
    (Alljohn.conf で定義されたルールセット名)
  • インクリメンタルモードの明示的な指定: 特定の文字セットで総当たり攻撃。
    ./john --incremental=Digits orion_hashes.txt
    (Digits は数字のみの文字セット)
  • フォーマットの明示的な指定: JtRが自動でフォーマットを認識できない場合に指定。mcafee_epo2john の場合は通常不要ですが、念のため。
    ./john --format=dynamic_24 orion_hashes.txt

John the Ripper には非常に多くのオプションと機能があります。./john --help コマンドや、Openwall Wiki の JtR チュートリアル などを参照して、目的に合った最適な使い方を見つけてください。

✅ クラック成功の鍵

パスワードクラックの成功率は、パスワードの強度と使用するワードリストやルール、そして利用可能な計算リソースに大きく依存します。強力なパスワード (長く、複雑で、辞書に載っていないもの) は、クラックが非常に困難か、現実的な時間内では不可能です。

注意点と対策 🛡️

mcafee_epo2john と John the Ripper は強力なツールですが、その利用には重要な注意点と、悪用された場合の対策を理解しておく必要があります。

利用上の注意点

  • 正当な権限と目的: 何度も強調しますが、これらのツールは自身が管理するシステム、または明示的な許可を得たシステムに対してのみ使用してください。不正アクセスや権限のないシステムへの攻撃は違法行為です。
  • 倫理的な利用: セキュリティ評価やパスワード強度監査、インシデント後の調査、自身のアカウントのパスワード復旧など、倫理的に正当化される範囲で使用しましょう。
  • 情報漏洩リスク: データベースダンプファイルや抽出したハッシュファイルは機密情報です。安全な場所に保管し、不要になったら確実に削除してください。これらのファイルが漏洩すると、攻撃者にパスワードクラックの機会を与えてしまいます。

ePOパスワード漏洩のリスク

McAfee ePO の管理者アカウントや権限のあるユーザーアカウントのパスワードがクラックされると、以下のような深刻なセキュリティリスクが生じます。

  • 管理コンソールへの不正アクセス: 攻撃者がePOにログインし、組織全体のセキュリティポリシーを不正に変更する可能性があります。
  • マルウェアの配布: ePOを通じて管理下の多数のエンドポイントにマルウェアを配布したり、悪意のあるタスクを実行したりすることが可能になります。
  • セキュリティ機能の無効化: ウイルス対策やファイアウォールなどのセキュリティ機能を無効化され、エンドポイントが保護されない状態になる可能性があります。
  • 機密情報の窃取: ePOが管理する情報(インベントリ、脆弱性情報など)が窃取される可能性があります。
  • 他のシステムへの侵害拡大: ePOの認証情報が他のシステムでも使い回されている場合、侵害が横展開する可能性があります。

推奨される対策

ePOのセキュリティを強化し、パスワードクラックのリスクを低減するために、以下の対策を講じることが強く推奨されます。

  • 強力なパスワードポリシーの適用:
    • ePOのローカルユーザーアカウントには、長く (例: 15文字以上)、複雑 (大文字、小文字、数字、記号を含む) なパスワードを設定する。
    • 容易に推測できる単語や個人情報に基づいたパスワードを避ける。
    • 定期的なパスワード変更を義務付ける (例: 90日ごと)。
    • パスワード履歴を管理し、過去に使用したパスワードの再利用を禁止する。
  • 多要素認証 (MFA) の利用: 可能であれば、ePOへのログインに多要素認証を導入します。パスワードだけでなく、別の認証要素(例: ワンタイムパスワードアプリ、物理キー)を要求することで、パスワードが漏洩した場合でも不正アクセスを防ぐことができます。
  • Windows認証 / シングルサインオン (SSO) の活用: ローカルのパスワード認証ではなく、Active Directoryなど信頼できる認証基盤と連携したWindows認証やSSOを利用することを検討します。これにより、ePO独自のパスワード管理が不要になり、組織全体の認証ポリシーを一元管理できます。
  • データベースへのアクセス制御強化: ePOデータベースへのアクセス権限を最小限に絞り、データベース管理者やePOサービスアカウントなど、本当に必要なアカウントのみがアクセスできるように厳格に管理します。データベースの認証情報 (db.properties ファイルなど) も適切に保護します。
  • 定期的なセキュリティ監査と脆弱性診断: 定期的にePOサーバーおよび関連コンポーネントのセキュリティ設定をレビューし、脆弱性診断を実施して、設定ミスや既知の脆弱性がないかを確認します。
  • 不要なアカウントの無効化・削除: 使用されていないePOアカウントは速やかに無効化または削除します。
  • ログの監視: ePOの監査ログやデータベースのアクセスログを定期的に監視し、不審なログイン試行やアクティビティがないかを確認します。

これらの対策を組み合わせることで、McAfee ePO 環境のセキュリティを大幅に向上させることができます。💪

まとめ ✨

mcafee_epo2john は、McAfee ePolicy Orchestrator (ePO) のデータベースに保存されているローカルユーザーのパスワードハッシュ (主にSHA-1ベース) を抽出し、John the Ripper で解析可能な形式に変換するための便利なツールです。セキュリティ専門家がパスワード強度監査やペネトレーションテストを行う際に役立ちます。

この記事では、以下の点について解説しました。

  • ePOがパスワードハッシュをどのように保存しているか (dbo.OrionUsers テーブル、AuthURI カラム、SHA-1+ソルト)
  • mcafee_epo2john を使うための準備 (John the Ripper (Jumbo) のインストール)
  • mcafee_epo2john の使い方 (CSV入力、コマンド実行、出力形式)
  • John the Ripper を使って抽出したハッシュをクラックする基本的な手順とオプション
  • ツール利用上の注意点と、ePOのパスワード漏洩リスク、そして推奨されるセキュリティ対策

ePOは組織のセキュリティ基盤において中心的な役割を担うため、その認証情報を保護することは極めて重要です。mcafee_epo2john のようなツールは、潜在的な弱点を特定し、セキュリティ体制を強化するために活用できますが、常に倫理的かつ合法的な範囲で使用する必要があります。

強力なパスワードポリシー、多要素認証、適切なアクセス制御など、多層的な防御策を講じることで、McAfee ePO 環境を安全に保ちましょう。🛡️

参考情報 📚

さらに詳しい情報については、以下のリソースを参照してください。

  • John the Ripper 公式サイト: https://www.openwall.com/john/ – JtR本体のダウンロード、ドキュメントなど。
  • John the Ripper Community Wiki: https://openwall.info/wiki/john – チュートリアル、ハッシュ形式、使い方に関する豊富な情報。
  • John the Ripper GitHub リポジトリ: https://github.com/openwall/john – 最新のソースコード、mcafee_epo2john.py スクリプト自体もここで確認できます (run ディレクトリ内)。
  • Trellix (旧 McAfee) ePO ドキュメントポータル: https://docs.trellix.com/ – ePOの公式ドキュメント、セキュリティガイドラインなど。 (具体的なパスワードハッシュ形式の詳細が公開されているかは不明)
“`

コメント

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