Ivanti Connect Around Vulnerability Checker
概要
Connect Around攻撃チェーンは、CVE-2023-46805およびCVE-2024-21887を含むもので、Ivanti Connect Secure & Policy Secureアプライアンスに重大な脅威をもたらします。この攻撃チェーンにより、脆弱なシステムへの不正アクセスとコマンド実行が可能になります。CVE-2023-46805は攻撃者が認証制御をバイパスすることを可能にし、CVE-2024-21887はコマンドインジェクションの脆弱性であり、前者と組み合わせることで認証なしでも悪用される可能性があります。この脆弱性の組み合わせは、Ivanti製品を使用する組織による緊急の対応を必要とし、Ivantiコミュニティフォーラムに詳述されている利用可能な緩和策を適用するよう求めています。
組織が緩和策の適用状況を検証する必要性に応えて、Ivanti Connect Around Vulnerability Checkerが開発されました。このスクリプトは、Connect Around攻撃チェーンに関連する脆弱性についてIvanti Connect Secure & Policy Secureアプライアンスを評価するように設計されています。これらの脆弱性の有無を確認するチェックを実行し、結果をCSV形式で出力します。包括的かつ信頼性の高い評価を提供するために、複数の緩和策検証方法が採用されています。
注: このスクリプトはCVE-2024-21888またはCVE-2024-21893を検証しません。
機能
- 複数の検証方法: 検証を包括的にするため、各ターゲットに対して複数のテスト方法が実行されます。各アプローチの結果が返されます。
- 同時ホストチェック: 複数のホストを同時に効率的にスキャンし、ネットワーク全体の脆弱性評価に必要な時間を大幅に短縮します。
- カスタマイズ可能なコマンドライン引数: 入力ファイルや出力ファイルのパス、スキャン用の同時スレッド数、選択可能なポートなどの特定のパラメータを定義する柔軟性を提供し、カスタマイズされた正確なスキャンを保証します。
- 適応的な出力管理: 現在の日付と時刻に基づくデフォルトの命名規則で出力ファイルを自動生成しつつ、組織のニーズに合わせてカスタムファイル名を指定することもできます。
- 高度なエラーハンドリング: 詳細なHTTPエラーコード、ネットワーク接続の問題、その他の予期しないエラーを含む包括的なエラー報告を提供し、スキャン中の潜在的な問題の正確な特定とトラブルシューティングを可能にします。
- ポートの柔軟性: スキャンする特定のポートをユーザーが定義でき(デフォルトは80および443)、多様なネットワーク構成に対応し、脆弱性評価の深さを高めます。
- 色分けされたコンソール出力: ユーザーエクスペリエンスを向上させるオプション機能で、コンソールに色分けされた出力を提供し、さまざまなスキャンステータスをすばやく簡単に識別できるようにして、結果の可読性と解釈を向上させます。
チェックの種類
このスクリプトは、Ivanti Connect Secureシステムのセキュリティ状態を評価するためにさまざまなチェックを実行します。各チェックは、情報セキュリティコミュニティの研究から適応された特定の方法論に基づいています。
WEB ACCESS
- 方法論: WatchTowr Labsの研究から適応。
- 説明: 認証なしで
/api/v1/configuration/users/user-roles/user-role/rest-userrole1/web/web-bookmarks/bookmarkエンドポイントにリクエストを送信します。
- 陽性結果: 表示されるステータス - "Vulnerable"。
- 陰性結果: 表示されるステータス - "Mitigated"。
- 研究リンク: WatchTowr Labs Research。
SYSTEM INFO
- 方法論: Rapid7でのStephen Fewerの研究から適応。
- 説明:
/api/v1/system/system-information URIへのアクセスを試みます。
- 陽性結果: 表示されるステータス - "Vulnerable"。
- 陰性結果: 表示されるステータス - "Mitigated"。
- 研究リンク: Metasploit Framework Module。
BYPASS DETECTED
- 方法論: 代替バイパスURIに関するAssetnoteの研究から適応。
- 説明:
/admin/options/ URIへのアクセスを試みます。
- 陽性結果: 表示されるステータス - "Vulnerable (Bypass Detected)"。
- 陰性結果: 表示されるステータス - "Not Vulnerable"。
- 研究リンク: Assetnote。
各チェックは、潜在的な脆弱性に関する洞察を提供します。"Vulnerable"は脆弱性が確認されたことを示し、"Mitigated"または"Not Vulnerable"は、テスト対象の特定の脆弱性に対してシステムが安全であると思われることを示します。
ステータスタイプの説明
このスクリプトは、各チェックを特定のステータスタイプに分類し、スキャン対象ホストのセキュリティ態勢に関する洞察を提供します。各ステータスタイプの説明は次のとおりです:
- Mitigated: チェック対象の脆弱性に対する緩和策がシステムに導入されていることを示します。このステータスは、安全かつパッチが適用されたシステムに典型的な応答が検出された場合に返されます。
- Vulnerable: このステータスは、スクリプトによって実行された特定のチェックに対してシステムが脆弱であることを示します。システムが脆弱性を示す既知のパターンまたは応答を示した場合に返されます。
- HTTP Error: スクリプトがターゲットシステムから標準的なHTTPエラー応答(403 Forbidden以外)を受け取った場合に返されます。通常、Webサーバーまたはリクエストに問題があることを示します。
- Network Issue: ホストに到達できないなど、ネットワーク関連の問題が発生した場合に使用されるステータスです。"Host Unreachable"や"Network Error"といった以前のステータスを統合したものです。
- Timeout Error: ターゲットへのリクエストがタイムアウトしたことを示します。ネットワークまたは構成の問題により、スクリプトがチェックを完了できなかった可能性を示唆しています。
- Connection Error: "Timeout Error"と同様に、ホストへの接続確立に問題がある場合に使用されるステータスです。ネットワークの問題、誤ったホスト名などが原因である可能性があります。
- Ivanti Presence Inconclusive: 以前は"Attestation Needed"として知られていたこのステータスは、スクリプトのチェックが脆弱性または緩和策のいずれについても決定的な証拠を得られなかった場合に返されます。システムのセキュリティ状態を判断するには、さらなる手動調査が必要であることを示唆しています。
- Vulnerable (Bypass Detected): バイパス脆弱性チェックに固有のステータスで、システムがスクリプトの方法論に記載されている認証バイパス手法に対して脆弱であることを示します。
各ステータスは、チェック対象の脆弱性に関するシステムのセキュリティ態勢のスナップショットを提供します。ユーザーはこれらのステータスを初期指標として考慮し、必要に応じて、システムの実際のセキュリティ状態を確認するためにさらなる手動調査を実施してください。
はじめに
必要条件
- Python 3
requestsモジュール
urllib3モジュール
- 任意: 色分け出力用の
coloramaモジュール
使用方法
スクリプトを実行するには、以下のコマンドを使用します:
python ivanti_scan.py -i [input_file]
必要に応じて、追加の引数を使用して実行します:
python ivanti_scan.py -i [input_file] -o [output_file] -t [number_of_threads] -p [port1 port2 ...] --color
引数
ターゲット指定
テスト対象のターゲットを指定するには、以下のいずれかのオプションを使用します。
-iまたは--input: ターゲットのリストを含む入力ファイルへのパス。
-uまたは--url: テストする単一のURL文字列。
カスタム変数
-oまたは--output: 任意。出力CSVファイルの名前。デフォルトは[current_date_time]_results.csv。
-tまたは--threads: 任意。並行実行に使用するスレッド数。デフォルトは20。
-pまたは--ports: 任意。チェックするポートを指定します(例: 80 443)。デフォルトではポート80および443をチェックします。
-aまたは--user-agent: 任意。ユーザーエージェント文字列を指定します。デフォルト: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.3
出力のスタイリング
-cまたは--color: 任意。coloramaがインストールされている場合は、色分け出力を有効にします。
To Do
コントリビューションガイドライン
コントリビューションを歓迎します! 貢献したいと考えている場合、以下の方法で支援できます:
問題の報告
- エラー報告: エラーやバグを見つけた場合は、問題の詳細、再現手順、関連するログやスクリーンショットを含めてissueを作成してください。
- 機能リクエスト: 新機能や拡張のアイデアがありますか? ぜひお聞かせください! 提案する機能の明確な説明を含めてissueを提出してください。
プルリクエストの提出
- 機能の改善: ツールの機能を改善するコントリビューションは大いに歓迎します。修正や拡張を開発した場合は、お気軽にプルリクエストを提出してください。
- ガイドライン:
- リポジトリをフォークし、
mainからブランチを作成してください。
- 明確かつ簡潔なコミットメッセージを書いてください。
- 一貫性を維持するために、コードが既存のスタイルに準拠していることを確認してください。
- 変更内容の詳細な説明を含むプルリクエストを作成してください。
このプロジェクトへのコントリビューションを検討していただきありがとうございます。
意図された用途と免責事項
目的
このツールは、自身の環境内における脆弱性の緩和策の適用を検証することを目的とする個人および組織のために設計されています。セキュリティテストの明示的な許可が付与されているIvanti Connect Secureアプライアンスでの使用を特に意図しています。
免責事項
- 倫理的な使用: このスクリプトは合法的な目的のためだけに使用されるべきです。ユーザーは、ターゲットシステムをテストする許可を持っていることを確認する責任があります。
- 正確性: このツールの正確性と有効性を確保するための努力がなされていますが、本ツールは「現状のまま」提供されており、ユーザーはその限界を理解した上で結果を解釈する必要があります。
- 保証の否認: 作者であるChris Farrellは、このツールをいかなる種類の保証もなく提供します。ユーザーは、その使用に関連するすべてのリスクを負担します。
- 責任: ユーザーは、適用されるすべての法令を遵守する必要があります。作者は、このツールの誤用またはその使用に起因するいかなる損害についても責任を負いません。
このツールを使用することにより、これらの条件を理解し、同意したものとみなされます。
ライセンス
このプロジェクトは、倫理的使用条項付きMITライセンスの下でライセンスされています。詳細については、LICENSEファイルを参照してください。
謝辞
このプロジェクトは、サイバーセキュリティ分野の尊敬すべき複数のグループおよび個人によって開発された研究と方法論を活用しています。以下の方々に感謝の意を表します:
-
WatchTowr Labs: Ivanti Connect Secureの脆弱性に関する洞察に富んだ研究に対して。彼らの研究は、WEB ACCESSチェックの方法論の開発に大きく貢献しました。
-
Rapid7のStephen Fewer: Metasploitモジュールでの彼の研究は貴重な洞察を提供しました。
-
AttackerKBのRapid7: 認証バイパス技術に関する彼らの研究は、このスクリプトに多大な知見をもたらしました。