信息收集和枚举是渗透测试生命周期的初始阶段。这些阶段经常被忽略,人们直接使用自动化工具试图快速达成目标。然而,这样的尝试不太可能成功。
“给我六个小时砍树,我会用前四个小时磨斧头。” -亚伯拉罕·林肯
这是亚伯拉罕·林肯(Abraham Lincoln)的一句非常著名的话,也适用于渗透测试!你越是努力收集有关目标的信息并列举它们,你就越有可能成功地达成妥协。通过进行全面的信息收集和枚举,你将得到关于目标的丰富信息,然后你可以精确地确定攻击向量,以达到同样的目的。
Metasploit 框架提供了各种辅助模块,用于执行被动和主动信息收集以及详细的枚举。本章介绍 Metasploit 框架中可用的一些重要信息收集和枚举模块:
将涵盖的主题如下:
- 关于各种协议的信息收集和列举
- 使用 Metasploit 进行密码嗅探
- 使用 Shodan 进行高级搜索
在本节中,我们将探讨 Metasploit 框架中的各种辅助模块,这些模块可以有效地用于各种协议(如 TCP、UDP、FTP、SMB、SMTP、HTTP、SSH、DNS 和 RDP)的信息收集和枚举。对于每个协议,您将了解多个辅助模块以及必要的变量配置。
传输控制协议(TCP)是一种面向连接的协议,保证了数据包的可靠传输。许多服务(如 Telnet、SSH、FTP 和 SMTP)都使用 TCP 协议。此模块对目标系统执行简单的端口扫描,并告诉我们哪些 TCP 端口处于打开状态。
其辅助模块名称为auxiliary/scanner/portscan/tcp
,需要配置以下参数:
- RHOSTS:被扫描目标的 IP 地址或 IP 范围
- 端口:需要扫描的端口范围
我们可以在以下屏幕截图中看到此辅助模块:
用户数据报协议(UDP)与 TCP 相比是轻量级的,但不如 TCP 可靠。UDP 由 SNMP 和 DNS 等服务使用。此模块对目标系统执行简单的端口扫描,并告诉我们哪些 UDP 端口处于打开状态。
其辅助模块名称为auxiliary/scanner/discovery/udp_sweep
,需要配置以下参数:
- RHOSTS:被扫描目标的 IP 地址或 IP 范围
我们可以在以下屏幕截图中看到此辅助模块:
文件传输协议(FTP)最常用于客户端和服务器之间的文件共享。FTP 使用 TCP 端口 21 进行通信。
让我们看一下以下 FTP 辅助设备:
ftp_login
:该模块帮助我们对目标 FTP 服务器进行暴力攻击。
其辅助模块名称为auxiliary/scanner/ftp/ftp_login
,需要配置以下参数:
您可以创建自己的自定义列表,用于暴力攻击,也可以在位于|usr|share|wordlists
的 Kali Linux 中立即使用许多单词列表。
我们可以在以下屏幕截图中看到此辅助模块:
ftp_version
:本模块使用横幅抓取技术检测目标 FTP 服务器的版本。
其辅助模块名称为auxiliary/scanner/ftp/ftp_version
,需要配置以下参数:
- RHOSTS:被扫描目标的 IP 地址或 IP 范围
一旦知道目标服务的版本,就可以开始搜索特定于版本的漏洞和相应的漏洞攻击。
我们可以在以下屏幕截图中看到此辅助模块:
- 匿名:一些 FTP 服务器配置错误,允许远程用户匿名访问。此辅助模块探测目标 FTP 服务器,以检查其是否允许匿名访问。
其辅助模块名称为auxiliary/scanner/ftp/anonymous
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
服务器消息块(SMB是一种应用层协议,主要用于共享文件、打印机等。SMB 使用 TCP 端口 445 进行通信。
让我们看一下以下 SMB 辅助设备:
- :此辅助模块探测目标以检查其运行的 SMB 版本。
其辅助模块名称为auxiliary/scanner/smb/smb_version
,需要配置以下参数:
smb_enumusers
:此辅助模块通过 SMB RPC 服务连接到目标系统,并枚举系统上的用户。
其辅助模块名称为auxiliary/scanner/smb/smb_enumusers
,需要配置以下参数:
一旦在目标系统上有了用户列表,就可以开始准备针对这些用户的密码破解攻击。
我们可以在以下屏幕截图中看到此辅助模块:
smb_enumshares
:此辅助模块枚举目标系统上可用的 SMB 共享。
其辅助模块名称为auxiliary/scanner/smb/smb_enumshares
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
HTTP 是一种无状态应用层协议,用于在万维网上交换信息。HTTP 使用 TCP 端口80
进行通信。
让我们看一下以下一些 HTTP 辅助程序:
http_version
:此辅助模块探测并检索目标系统上运行的 web 服务器版本。它还可以提供有关目标运行的操作系统和 web 框架的信息。
其辅助模块名称为auxiliary/scanner/http/http_version
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
backup_file
:有时,开发人员和应用管理员忘记从 web 服务器删除备份文件。此辅助模块探测目标 web 服务器是否存在可能存在的任何此类文件,因为管理员可能忘记删除它们。这些文件可能会提供有关目标系统的更多详细信息,并有助于进一步妥协。
其辅助模块名称为auxiliary/scanner/http/backup_file
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
dir_listing
:web 服务器经常被错误配置为显示根目录中包含的文件列表。该目录可能包含通常不会通过网站链接公开的文件,并泄漏敏感信息。此辅助模块检查目标 web 服务器是否易受目录列表攻击。
其辅助模块名称为auxiliary/scanner/http/dir_listing
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
ssl
:虽然 SSL 证书通常用于加密传输中的数据,但它们经常被发现配置错误或使用弱加密算法。此辅助模块检查目标系统上安装的 SSL 证书中可能存在的漏洞。
其辅助模块名称为auxiliary/scanner/http/ssl
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
http_header
:大多数 web 服务器都没有经过安全加固。这会导致 HTTP 头泄漏服务器和操作系统版本详细信息。此辅助模块检查目标 web 服务器是否通过 HTTP 头发出任何版本信息。
其辅助模块名称为auxiliary/scanner/http/http_header
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
robots_txt
:大多数搜索引擎都借助于爬行、抓取网站和索引页面的机器人。但是,特定网站的管理员可能不希望任何搜索机器人对其网站的某个部分进行爬网。在这种情况下,他使用robots.txt
文件告诉搜索机器人在爬行时排除网站的某些部分。该辅助模块探测目标以检查robots.txt
文件的存在。此文件通常会显示目标系统上存在的敏感文件和文件夹的列表。
其辅助模块名称为auxiliary/scanner/http/robots_txt
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
SMTP 用于发送和接收电子邮件。SMTP 使用 TCP 端口 25 进行通信。此辅助模块探测目标系统上的 SMTP 服务器的版本,并列出配置为使用 SMTP 服务的用户。
其辅助模块名称为auxiliary/scanner/smtp/smtp_enum
,需要配置以下参数:
- RHOSTS:被扫描目标的 IP 地址或 IP 范围
- USER_FILE:包含用户名列表的文件路径
我们可以在以下屏幕截图中看到此辅助模块:
SSH 通常用于通过加密通道进行远程管理。SSH 使用 TCP 端口 22 进行通信。
让我们看一下 SSH 的一些辅助工具:
ssh_enumusers
:此辅助模块探测目标系统上的 SSH 服务器,获取远程系统上的用户列表(配置为使用 SSH 服务)。
其辅助模块名称为auxiliary/scanner/ssh/ssh_enumusers
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
ssh_login
:该辅助模块对目标 SSH 服务器进行暴力攻击。
其辅助模块名称为auxiliary/scanner/ssh/ssh_login
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
ssh_version
:此辅助模块探测目标 SSH 服务器,以检测其版本以及底层操作系统的版本。
其辅助模块名称为auxiliary/scanner/ssh/ssh_version
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
detect_kippo
:Kippo 是一个基于 SSH 的蜜罐,专门设计用于引诱和诱捕潜在攻击者。这个辅助模块探测目标 SSH 服务器,以检测它是一个真正的 SSH 服务器还是一个 Kippo 蜜罐。如果检测到目标正在运行 Kippo 蜜罐,那么在进一步的妥协中浪费时间和精力是没有意义的。
其辅助模块名称为auxiliary/scanner/ssh/detect_kippo
,需要配置以下参数:
我们可以在以下屏幕截图中看到此辅助模块:
域名系统(DNS将主机名翻译成相应的 IP 地址。DNS 通常在 UDP 端口 53 上工作,但也可以在 TCP 上运行。此辅助模块可用于从目标 DNS 服务器提取名称服务器和邮件记录信息。
其辅助模块名称为auxiliary/gather/dns_info
,需要配置以下参数:
- 域:被扫描目标的域名
我们可以在以下屏幕截图中看到此辅助模块:
远程桌面协议(RDP用于远程连接 Windows 系统。RDP 使用 TCP 端口 3389 进行通信。此辅助模块检查目标系统是否易受 MS12-020 攻击。MS12-020 是 Windows 远程桌面上的一个漏洞,允许攻击者远程执行任意代码。有关 MS12-020 漏洞的更多信息,请访问https://technet.microsoft.com/en-us/library/security/ms12-020.aspx.
其辅助模块名称为auxiliary/scanner/rdp/ms12_020
,您需要配置以下参数:
- RHOSTS:被扫描目标的 IP 地址或 IP 范围
我们可以在以下屏幕截图中看到此辅助模块:
密码嗅探是一种特殊类型的辅助模块,它侦听网络接口并查找通过各种协议(如 FTP、IMAP、POP3 和 SMB)发送的密码。它还提供了一个选项,可以导入以前转储的.pcap
格式的网络流量,并在其中查找凭据。
其辅助模块名称为auxiliary/sniffer/psnuffle
,如下图所示:
Shodan 是一个高级搜索引擎,用于搜索网络摄像头和 SCADA 系统等互联网连接设备。它还可以有效地用于搜索易受攻击的系统。有趣的是,Metasploit 框架能够与 Shodan 集成,直接从 msfconsole 启动搜索查询。
为了将 Shodan 与 Metasploit 框架集成,您首先需要在上注册 https://www.shodan.io 。注册后,您可以从 Account Overview 部分获取 API 密钥,如下所示:
其辅助模块名称为auxiliary/gather/shodan_search
,该辅助模块连接 Shodan 搜索引擎,从msfconsole
发起搜索查询,获取搜索结果。
您必须配置以下参数:
- SHODAN_API 密钥:注册 SHODAN 用户可用的 SHODAN API 密钥
- 查询:需要搜索的关键字
您可以运行shodan_search
命令,得到如下结果:
在本章中,我们了解了如何在 Metasploit 框架中使用各种辅助模块来收集和枚举信息。在下一章中,我们将学习对目标系统执行详细的漏洞评估。
您可以尝试以下练习:
- 除本章讨论的辅助模块外,尝试探索并执行以下辅助模块:
auxiliary/scanner/http/ssl_version
auxiliary/scanner/ssl/openssl_heartbleed
auxiliary/scanner/snmp/snmp_enum
auxiliary/scanner/snmp/snmp_enumshares
auxiliary/scanner/snmp/snmp_enumusers
- 使用 Shodan 辅助模块查找各种互联网连接设备