本文示例环境
很多网络服务是漏洞频发的高危对象,对网络上的特定服务进行扫描,往往能让我们少走弯路,增加渗透成功的几率。确定开放的端口后,通常会对相应端口上所运行服务的信息进行更深入的挖掘,这被称为服务查点。
在 Metasploit 的 Scanner 辅助模块中,有很多用于服务扫描和查点的工具,这些工具通常以 [ service_name ] _version 和 [service_name] login 命名。
- [service_name] _version 可用于遍历网络中包含了某种服务的主机,并进一步确定服务的版本
- [service_name] _login 可对某种服务进行口令探测攻击
例如:http_version 可用于查找网络中的Web服务器,并确定服务器的版本号;http_login 可用于对需要身份认证的 HTTP 协议应用进行口令探测。
(注:并非所有的模块都按照这种命名规范进行开发,如用于查找 Microsoft SQL Server 服务的 mssql_ping 模块。)
常见的网络服务扫描
①Telnet 服务扫描
Telnet 是一个历史悠久但先天缺乏安全性的网络服务。由于 Telnet 没有对传输的数据进行加密,越来越多的管理员渐渐使用更为安全的 SSH 协议代替它。
可以使用命令 use auxiliary/scanner/telnet/telnet_version
来扫描是否有主机或设备开启了 Telnet服务,为下一步进行网络嗅探或口令猜测做好准备。
扫描结果显示,IP 地址为 10.10.10.254 的主机(即网关服务器) 开放了 Telnet 服务,通过返回的服务旗标 “Ubuntu 8.04\x0ametasploitable login : ”,可以进一步确认出这台主机的操作系统版本为 Ubuntu 8.04,而主机名为 metasploitable。
② SSH 服务扫描
SSH 是类 UNIX 系统上最常见的远程管理服务,与 Telnet 不同的是,它采用了安全的加密信息传输方式,通常管理员会使用 SSH 对服务器进行远程管理,服务器会向 SSH 客户端返回一个远程的 Shell 连接。如果没有做其他的安全增强配置,只要获取服务器的登录口令,就可以使用 SSH 客户端登录服务器,那就相当于获得了相应登录用户的所有权限。
可以使用命令 use auxiliary/scanner/ssh/ssh_version
来对网络中开放了 SSH 服务的主机进行扫描。
使用 Metasploit 中的 ssh_version 辅助模块,在该实验环境中定位了两台开放了 SSH 服务的主机,分别是 10.10.10.129 (网站服务器) 和 10.10.10.254 (网关服务器),并且显示了 SSH 服务软件及其具体版本号。
③ Oracle 数据库服务查点
各种网络数据库的网络服务端口是漏洞频发的“重灾区”,比如 Microsoft SQL Server 的 1433 端口,以及 Oracle SQL 监听器 (tnslsnr) 使用的 1521 端口。可以使用 mssql_ping 模块查找网络中的 Microsoft SQL Server,使用 tnslsnr_version 模块查找网络中开放端口的 Oracle 监听服务。
④开放代理探测与利用
在一些特殊情形的渗透测试工作中,为了避免被对方的入侵检测系统跟踪,就很有必要隐藏自己的身份。隐藏网络身份的技术有很多,比如使用代理服务器 (Proxy)、VPN 等。
Metasploit 提供了 open_proxy 模块,能够更加方便的获取免费的 HTTP 代理服务器地址。获取免费开放代理之后,就可以在浏览器或者一些支持配置代理的渗透软件中配置代理,这可以在进行渗透测试时隐藏真实 IP 地址。
口令猜测与嗅探
对于发现的系统与文件管理类网络服务,比如 Telnet、SSH、FTP 等,可以进行弱口令的猜测,以及对明文传输口令的嗅探,从而尝试获取直接通过这些服务进入目标网络的通道。
① SSH 服务口令猜测
之前介绍了如何在网络上查找开放了 SSH 服务的主机,现在,可以使用 Metasploit 中的 ssh_login 模块对 SSH 服务尝试进行口令试探攻击。进行口令攻击之前,需要有一个用户名和口令字典
载入 ssh_login 模块后,首先需要设置 RHOSTS 参数指定口令攻击的对象,可以使一个 IP 地址或一个 IP 地址网段。然后使用 USERNAME 参数指定一个用户名(或者使用 USER_FILE 参数指定一个包含多个用户名的文本文件,每个用户名占一行),并使用 PASSWORD 指定一个特定的口令字符串 (或者使用 PASS_FILE 参数指定一个包含多个口令的字典文件,每个口令占一行),也可以使用 USERPASS_FILE 参数指定一个用户名和口令配对的文件 (用户名和口令之间用空格隔开,每队用户名口令占一行)。
首先创建一个文本文件作为口令字典,在里面输入可能的口令密码,每个口令密码为一行。命名为 words.txt,然后保存在 /root 根目录下。
然后使用 ssh_login 辅助模块,设置目标主机,并猜测用户名为 root (因为大多数操作系统都有一个初始的用户名为 root),并且引用刚刚创建的口令字典进行暴力破解。
由结果可知,用户名为 root ,口令密码为 ubuntu 的组合配对成功,即可用此用户名和密码获取该服务器的访问权。
输入ssh 10.10.10.254 -l root
进行访问。“10.10.10.254” 是要访问的主机的IP地址,“-l root” 表示是以 root 身份访问。
②psnuffle 口令嗅探
psnuffle 是目前 Metasploit 中唯一用于口令嗅探的工具,它的功能算不算强大,但是非常实用,可以使用它截获常见协议的身份认证过程,并将用户名和口令信息记录下来。
可以使用命令 use auxiliary/sniffer/psnuffle
使用该模块,然后输入 run
进行嗅探。