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
テーブルの内容をエクスポートする必要があります。
mcafee_epo2john の準備 ⚙️
mcafee_epo2john
は、単体のツールとして配布されているわけではなく、John the Ripper (JtR) の “Jumbo” バージョンに含まれるユーティリティスクリプトの一つです。JtR Jumboは、オリジナルのJtRに多くの追加機能やハッシュ形式のサポートを加えた拡張版です。
したがって、mcafee_epo2john
を使うためには、まずJohn the Ripper (Jumbo) を入手してインストールする必要があります。
-
John the Ripper (Jumbo) の入手:
- 公式リポジトリ (GitHub): 最新版は Openwall の John the Ripper GitHub リポジトリ から入手できます。ソースコードをクローンまたはダウンロードして、システム上でコンパイルします。
(コンパイルには、開発ツール (gcc, makeなど) や OpenSSL の開発ライブラリ (git clone https://github.com/openwall/john.git cd john/src ./configure && make -s clean && make -sj4
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向けのプリコンパイル済みバイナリが提供されている場合もあります。
- 公式リポジトリ (GitHub): 最新版は Openwall の John the Ripper GitHub リポジトリ から入手できます。ソースコードをクローンまたはダウンロードして、システム上でコンパイルします。
-
mcafee_epo2john.py の場所の確認:
JtRをインストールした後、
mcafee_epo2john.py
スクリプトは通常、JtRの実行ファイルがあるディレクトリ (多くの場合run
ディレクトリ) 内に配置されます。cd john/run # ソースからコンパイルした場合 ls mcafee_epo2john.py
(Kali Linux などパッケージでインストールした場合は
/usr/share/john/
や/usr/lib/john/
などのパスにある可能性もあります。) -
依存関係:
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 に入力します。
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はデフォルトの順序で複数のクラックモードを試します。
- シングルクラックモード (Single Crack Mode): ハッシュファイルに含まれるユーザー名や、それに関連する情報(例えば、ユーザー名を基にした変形)をパスワード候補として試します。単純なパスワード (ユーザー名と同じ、など) はこれで素早く見つかることがあります。
- ワードリストモード (Wordlist Mode): デフォルトのパスワードリスト (
password.lst
など) を使って辞書攻撃を行います。設定ファイル (john.conf
またはjohn.ini
) で定義されたルールに基づいて、単語を変形させながら試行します。 - インクリメンタルモード (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
All
はjohn.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の公式ドキュメント、セキュリティガイドラインなど。 (具体的なパスワードハッシュ形式の詳細が公開されているかは不明)
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
テーブルの内容をエクスポートする必要があります。
mcafee_epo2john の準備 ⚙️
mcafee_epo2john
は、単体のツールとして配布されているわけではなく、John the Ripper (JtR) の “Jumbo” バージョンに含まれるユーティリティスクリプトの一つです。JtR Jumboは、オリジナルのJtRに多くの追加機能やハッシュ形式のサポートを加えた拡張版です。
したがって、mcafee_epo2john
を使うためには、まずJohn the Ripper (Jumbo) を入手してインストールする必要があります。
-
John the Ripper (Jumbo) の入手:
- 公式リポジトリ (GitHub): 最新版は Openwall の John the Ripper GitHub リポジトリ から入手できます。ソースコードをクローンまたはダウンロードして、システム上でコンパイルします。
(コンパイルには、開発ツール (gcc, makeなど) や OpenSSL の開発ライブラリ (git clone https://github.com/openwall/john.git cd john/src ./configure && make -s clean && make -sj4
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向けのプリコンパイル済みバイナリが提供されている場合もあります。
- 公式リポジトリ (GitHub): 最新版は Openwall の John the Ripper GitHub リポジトリ から入手できます。ソースコードをクローンまたはダウンロードして、システム上でコンパイルします。
-
mcafee_epo2john.py の場所の確認:
JtRをインストールした後、
mcafee_epo2john.py
スクリプトは通常、JtRの実行ファイルがあるディレクトリ (多くの場合run
ディレクトリ) 内に配置されます。cd john/run # ソースからコンパイルした場合 ls mcafee_epo2john.py
(Kali Linux などパッケージでインストールした場合は
/usr/share/john/
や/usr/lib/john/
などのパスにある可能性もあります。) -
依存関係:
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 に入力します。
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はデフォルトの順序で複数のクラックモードを試します。
- シングルクラックモード (Single Crack Mode): ハッシュファイルに含まれるユーザー名や、それに関連する情報(例えば、ユーザー名を基にした変形)をパスワード候補として試します。単純なパスワード (ユーザー名と同じ、など) はこれで素早く見つかることがあります。
- ワードリストモード (Wordlist Mode): デフォルトのパスワードリスト (
password.lst
など) を使って辞書攻撃を行います。設定ファイル (john.conf
またはjohn.ini
) で定義されたルールに基づいて、単語を変形させながら試行します。 - インクリメンタルモード (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
All
はjohn.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の公式ドキュメント、セキュリティガイドラインなど。 (具体的なパスワードハッシュ形式の詳細が公開されているかは不明)
コメント