msfvenom

Kalilinux
この記事は約6分で読めます。

msfvenom は Metasploit Framework(MSF) に含まれるペイロード生成専用ツールで、

主に ペネトレーションテストや検証環境での攻撃シミュレーションに使われます。

このツールの生成物の、第三者環境での無許可・無断使用は違法行為です

というわけで、スミマセン。
今回は実践はしていません。(適切なターゲットが構築できれば実践してみます)

ペイロード

ペイロード(payload)とは、トラックや船・飛行機・ロケットなどの積荷(或いは積載容量)を表す言葉です。

MSF本体(msfconsole)はコンテナを運ぶ運搬手段で、運ばれる側のコンテナの中身がペイロードです。

昭和のおじさん向けの例えとしては、サ⚫️ダーバード2号が ” MSF” に相当するとすれば、

TB2

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

つまりMSFは運搬手段に過ぎず、敵基地(ターゲットサーバー)の内部に送り込まれる中身がペイロードです。

敵基地に送り込まれたペイロードは、味方(自分)と通信しながら行動します。

ここまでのまとめ

名称metasploit fremework
(msfconsole)
(MSF)
payload
(具体的な名称は “meterpreter” など、MSFには1600種類以上備え付けられています)
役割運搬手段積載物
例えるとサ⚫️ダーバード2号⚫️ンダーバード4号
活動内容積載物送り込みと通信管理を担当ターゲット内に送り込まれて活動

ペイロードの単独行動

ところでこの⚫️ンダーバード4号、たまには2号とペアで行動せずに、単独で行動してみたいとします。

で、その時に4号だけでも単独行動出来るようにとセットアップしてくれるツールが、今回取り上げる “msfvenom” です。

stagelessとstaged

ペイロードの種類には、stagelessとstaged の2種類があります。

stagedstageless
侵入ステップ2ステップ1ステップ
侵入方法小さなローダーがまず侵入・接続後に、「本体」を受信最初から「全部入り本体」を送る
見分け方/ で区切られている
例)meterpreter/reverse_tcp
_で区切られている
例)meterpreter_reverse_tcp
初期サイズ小さい大きい
通信遮断耐性弱い強い
AV/EDR検知stage2で検知されやすい静的検知されやすい

*AV: Antivirus

*EDR: Endpoint Detection and Response

msfvenomによるペイロード作成

msfvenom は、以下の手順を 1コマンドで生成します。

基本構文

オプション設定事項
-p <payload>ペイロードの選択
LHOST=<IP>自分(受信側)のIP
LPORT=<port>自分(受信側)のポート番号
-f <format>出力フォーマットの選択
-o <output>出力ファイル名の設定

ペイロード一覧の確認

ペイロードの一覧です。

list-payloads

MSFに登録されている “payloads” は1687個あります。

これを元に “msfvenom” ツールを用いてセットアップを行います。

代表的なペイロード例

ターゲットOSペイロード
Linux用reverseshell (ELF)
Windows用Metepreter
Windows用PowerShell:ファイルレス

出力フォーマットの種類

下記コマンドで参照できます。

list-formats
list-format2

その他オプション

オプション
-e <エンコーダ>エンコーダの種類
-i 回数エンコーダの繰り返し回数

エンコーダの一覧

下記で表示できます。

下記はその一部です。

list-encoders

実際の生成

下記の例では、

に設定して生成しています。

msfwenom
  • プラットフォームの指定が無かったので自動補完され(Msf::Platform::windows)、
  • arch (architecture) の選択がなかったので、自動選択で “x86”
  • エンコーダが特定されていなかったので、 “raw” で出力された。

といった注意事項が並んでいます。

ホームディレクトリに出力結果(ペイロード)が生成されています。

payload

繰り返しますがこれをサーバー管理者の許可なく使用してはいけません

ヘルプ

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の例です。

ペイロード名が不一致の場合は通信に失敗します。(完全一致が必要)

また待受側の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の紹介でした。

実際には行っていないので、イマイチ伝わる分も少ないかと思います。(こちらの理解もイマイチ)

とりあえず勉強しただけの分の記録ということで。

謹賀新年。本年もよろしくお願いします。

コメント

タイトルとURLをコピーしました