コンテンツにスキップ

種別と配置

最初にモジュールの種別と配置先を決めます。選んだ種別によって、入口メソッドや必要なオプションが変わります。

  1. 新しいセッション(シェル / Meterpreter)を開くか
  2. すでにセッションがある前提か
  3. リモート接続するか、既存セッション上で動かすか
すでに 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
シナリオ選ぶ種別理由
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 を使う自作は不要

プロトコルと用途で分けます。

exploits/linux/http/myapp_rce.rb
exploits/windows/smb/my_vuln.rb
exploits/linux/local/my_priv_esc.rb
auxiliary/scanner/http/myapp_version.rb
auxiliary/gather/myapp_config.rb
auxiliary/admin/myapp_add_user.rb
post/linux/gather/myapp_tokens.rb
post/windows/manage/myapp_migrate.rb

ファイル名は小文字と _ が一般的です。msfconsole からはパスから use exploit/linux/http/myapp_rce のように見えます。

  • 種別が決まったこと
  • 置くファイルパスが決まったこと
  • 「入口は exploit か run か run_host か」が言えること

次は 基底と mixin で、その種別に合うクラスと通信手段を選びます。