Skip to content

怎么在模块开发中报告和存储数据

L edited this page May 6, 2022 · 1 revision
  • store_loot() - 用于存储被盗文件 (文本和二进制文件) 和命令的"屏幕截图", 例如 ps -efifconfig. 文件本身不需要具有取证级别的完整性——它们可以由 post 模块解析, 以仅提取渗透测试人员的相关信息.

  • report_auth_info() - 用于存储可立即被另一个模块重用的工作凭据. 例如, 转储本地 SMB 哈希的模块将使用此方法, 读取特定主机和服务的用户名: 密码组合的模块也将使用此方法. 具体来说, 仅"可能"的用户名和密码应该使用 store_loot() 代替.

  • report_vuln() - 执行特定漏洞的辅助和后渗透模块应在成功时调用 report_vuln(). 请注意, exploit 模块会在打开会话时自动调用 report_vuln() (无需主动调用它) .

  • report_note() - 当上述方法之一更适合时, 模块应努力避免 report_note(), 但通常情况下, "loot"、"cred" 或 "vuln" 分类并没合适的. report_note() 调用应始终设置一个 OID 样式的点 :type, 例如 domain.hosts, 以便其他模块可以轻松地在数据库中找到它们.

  • report_host() - 报告主机的活跃度和属性, 例如操作系统和服务包. 这不太常见, 因为其他报告方法已经这样做了, 例如report_service, report_exploit_success, report_client, report_note, report_host_tag, report_vuln, report_event, report_loot 等等. 尽量不要重复.

  • report_service() - 报告你的模块检测到的新服务 (端口) .

  • report_client() - 报告运行主机的客户端, 例如 Web 浏览器.

  • report_web_site() - 报告网站, 并且必须绑定到现有的 :service. 如果没有 :service, 则必须提供 :host:port:ssl.

  • report_web_page() - 如果你的模块发现一个看起来很有趣的网页, 你可以使用它.

  • report_web_form() - 如果你的模块发现看起来很有趣的 Web 表单, 你可以使用它.

  • report_web_vuln() - 报告 Web 应用程序漏洞. 漏洞利用并不真正需要使用它. 它更适合利用确定其易受攻击的错误的辅助模块.

  • report_loot() - 在极少数情况下, 模块可能实际上想要在不使用 store_loot() 的情况下导出战利品. 通常, 他们使用 Ruby 的文件 IO 执行此操作, 但这不会记录在数据库中, 因此 Metasploit 框架无法跟踪. 在这种情况下, 需要一个 report_loot(). 然而, 99.9% 的时间你应该使用 store_loot().

参考

https://github.com/rapid7/metasploit-framework/wiki/Guidelines-for-Accepting-Modules-and-Enhancements

https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/auxiliary/report.rb

https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/db.rb

Clone this wiki locally