種別と配置
最初にモジュールの種別と配置先を決めます。選んだ種別によって、入口メソッドや必要なオプションが変わります。
- 新しいセッション(シェル / Meterpreter)を開くか
- すでにセッションがある前提か
- リモート接続するか、既存セッション上で動かすか
すでに session がある作業か? YES → post (ただし「local で別 session を返す PE」は exploit/*/local) NO → payload を実行して session を開くか? YES → exploit NO → auxiliary| 結果 | 意味 | 置き場の例 |
|---|---|---|
| exploit | ペイロードを届けてセッションを開く | ~/.msf4/modules/exploits/<platform>/<proto>/name.rb |
| auxiliary | 列挙・ログイン・管理・DoS など。セッションは開かない | ~/.msf4/modules/auxiliary/<category>/<proto>/name.rb |
| post | 既存セッション上で列挙・管理・収集 | ~/.msf4/modules/post/<platform>/<category>/name.rb |
具体例で選ぶ
Section titled “具体例で選ぶ”| シナリオ | 選ぶ種別 | 理由 |
|---|---|---|
| Web の RCE で Meterpreter を返す | exploit | ペイロードセッションが目的 |
| Web にログインして設定を loot に保存する | auxiliary | セッションを開かない |
| 22/tcp をレンジでバナー取得 | auxiliary(scanner) | 多ホスト走査 |
SSH で id を一度叩いて終わる | auxiliary でも可。シェルを常設したいなら exploit | ペイロードの有無で分ける |
取れたシェルで /etc/passwd を読む | post | 既存セッション |
| 取れた Meterpreter から local PE して 新しい root セッション | exploit(local) | 新しいセッション = exploit |
| シェルを Meterpreter に昇格 | 既存 post を使うか自作 post | 既存セッションの変換 |
| ハンドラで待ち受ける | 既存の exploit/multi/handler を使う | 自作は不要 |
ディレクトリ名の付け方
Section titled “ディレクトリ名の付け方”プロトコルと用途で分けます。
exploits/linux/http/myapp_rce.rbexploits/windows/smb/my_vuln.rbexploits/linux/local/my_priv_esc.rbauxiliary/scanner/http/myapp_version.rbauxiliary/gather/myapp_config.rbauxiliary/admin/myapp_add_user.rbpost/linux/gather/myapp_tokens.rbpost/windows/manage/myapp_migrate.rbファイル名は小文字と _ が一般的です。msfconsole からはパスから use exploit/linux/http/myapp_rce のように見えます。
このステップの成果物
Section titled “このステップの成果物”- 種別が決まったこと
- 置くファイルパスが決まったこと
- 「入口は
exploitかrunかrun_hostか」が言えること
次は 基底と mixin で、その種別に合うクラスと通信手段を選びます。

