三、主机扫描
扫描和收集信息是渗透测试中的第一步,其主要目标是尽可能多地发现有关目标机器的信息。信息越多,渗透成功的概率就越大。该步骤的主要关注点是目标机器IP地址、可用服务、开放端口等。
3.1 使用辅助模块进行端口扫面
辅助模块是Metasploit内置模块,首先利用search命令搜索有哪些可盈的端口模块,如图2所示。
从tu2中可以看到可用的端口扫描器列表,其中包含了各种扫描类型,下面以TCP扫描模块举例。
输入use命令即可使用该漏洞利用模块,使用show options命令查看需要设置的参数,如图3所示。
在Required列中,被标记为yes的参数必须包含实际的值,其中RHOSTS设置待扫描的IP地址、RORTS设置扫描端口范围、THREADS设置扫描线程,线程数量越高,扫描的速度越快。我们使用set命令设置相应的参数,也可以使用unset命令取消某个参数值的设置,如图4所示。
可以看到,目标机器开了80、443两个端口。
其实还有两条可选命令——setg命令和unsetg命令。二者用于在msfsonsole中设置或者取消设置全局性参数值,从而避免重复输入相同的值。
3.2 使用辅助模块进行服务扫描
在扫描目标机器上运行的服务时,有多种基于服务的扫描技术可供选择,例如VNC、FTP、SMB等,只需执行特定类型的扫描就可以发现服务。
通过search命令搜索scanner可以发现大量的扫描模块,建议多尝试不同的辅助扫描模块,了解其用法。使用的步骤与只用端口稻苗模块时的基本相同,这里就不演示了,附上一些常用的扫描模块,如表1所示。
表1 常用的扫描模块及其功能
模块 | 功能 |
---|---|
auxiliary/scanner/portscan | 端口扫描 |
auxiliary/scanner/smb/smb_version | SMB 系统版本扫描 |
auxiliary/scanner/smb/smb_enumusers | SMB 枚举 |
auxiliary/scanner/smb/smb_login | SMB 弱口令扫描 |
auxiliary/admin/smb/psexec_command | SMB 登录且执行命令 |
auxiliary/scanner/ssh/ssh_login | SSH 登陆测试 |
scanner/masql/mssql_ping | MSSQL 主机信息扫描 |
admin/mssql/mssql_enum | MSSQL 枚举 |
admin/mssql/mssql_exec | MSSQL 执行命令 |
admin/mssql/mssql_sql | MSSQL 查询 |
scanner/masql/mssql_login | MSSQL 弱口令扫描 |
auxiliary/admin/mysql/mysql_enum | MYSQL 枚举 |
auxiliary/admin/mysql/mysql_sql | MYSQL 语句执行 |
auxiliary/scanner/mysql/mysql_login | MYSQL 弱口令扫描 |
auxiliary/scanner/smtp/smtp_version | SMTP 版本扫描 |
auxiliary/scanner/smtp/smtp_enum | SMTP 枚举 |
auxiliary/scanner/snmp/community | SNMP 扫描设备 |
auxiliary/scanner/telnet/telnet_login | TELNET 登录 |
scanner/vnc/vnc_none_auth | VNC 空口令扫描 |
3.3 使用Nmap扫描
在Metasploit中同样可以使用Nmap扫描,它不仅可以用来确定目标网络上计算机的存活状态,而且可以扫描计算机的操作系统,开放端口、服务等。熟练掌握Nmap的用法可以极大提高个人的渗透测试技术。
实际使用时,在msf命令提示符下输入namp,就可以显示Nmap提供的扫描选项列表,如图5所示。
现在我们要获取目标主机的操作系统,输入namp -O -Pn/-p0 URI命令,其中Pn和p0(数字0)参数的意思是不使用ping的方式,而且假定所有主机系统都是活动的,可以穿透防火墙,也可以避免被防火墙发现,如图6所示。
可以看到目标主机的操作系统可能是Windows 2012|7|XP或者Linux 3.x。