使用 Nmap 进行端口扫描
Nmap 是很流行的扫描工具,在 Nmap 中扫描获得的结果可以保存在 MSF 的数据库中以备后续使用。
Nmap 有着众多的选项,不过一般我们只会弄到其中的一部分,可以用nmap --help
命令查看基本用法。Nmap 的官方中文文档在此
Kali 自带 Nmap,直接使用即可,不需要先进入msfconsole
先来介绍几个常用的选项。
首先是-sS
选项,这个选项指定使用隐秘的TCP协议来扫描端口是否开放。
然后是-Pn
选项,这个选项让nmap不要预先用ping
来判断主机是否存活,而是默认主机为存活。这个选项适用于Internet上的测试环境,因为在Internet上有很多网络不允许ping
命令使用的ICMP协议通行。如果预先用ping
判断,则可能会漏掉许多实际存活的主机。如果你在内网环境下扫描,则可以不使用这个选项。
我们用这两个选项对XP虚拟机进行扫描来看看效果:
(图中的 172.16.83.128 请更改为你自己虚拟机的 IP 地址)
可以看到,nmap 显示出了目标主机开放的端口列表,和这个端口一般对应的服务。
为了获取目标的更多信息,可以开启-A
选项,此选项的介绍如下。
-A: Enable OS detection, version detection, script scanning, and traceroute
从帮助文档中可以看到,开启-A
选项等同于开启了系统探测,版本探测,脚本扫描和路由追踪。
加上-A
选项再对虚拟机扫描一遍,结果如下:
从结果来看,和没有-A
选项相比,1234分别显示出了使用这个端口的程序,有的还给出了版本号。5处FTP服务还探测出了允许匿名登录。这些消息能给我们的渗透准备工作带来很大的帮助。
1显示出了被扫描系统的猜测信息,可能的OS CPE(Operating System Common Platform Enumeration,详情点这里)
2显示了系统上运行的 SQL 数据库类型,版本,实例名称等信息。
1处为SQL服务的端口
2为用SMB协议的缺陷探测出的OS信息,一般来说这个比上面那个给出的准确一点。
3为路由跟踪信息
通过这两个简单的样例应该能体会到 Nmap 的强大之处,其他的用法以后会逐渐介绍。
在 MSF 中使用数据库
将 MSF 连接到数据库
要在 MSF 中使用数据库,首先请启动postgresql服务。
然后使用msfconsole
打开msf交互终端
随后输入以下命令连接postgresql数据库:
db_connect postgresql:<password>@<ipaddr>/<book>
postgresql 的默认密码是toor,ip 当然是本机 ip 啦,book随便填~一般用msf3,虽然 msf 已近是 V4 版本了。
执行之后使用db_status
查看数据库连接情况
将扫描结果导入数据库
在 msf 控制台内可以直接使用 Nmap 命令,这次我们用-oX
指令指定将扫描结果输出为XML格式。
在 msf 终端中直接输入下列指令:
nmap -sS -Pn -A -oX report.xml 172.16.83.128
执行完成后输入ls
命令并回车,可以看见当前目录下生成了report.xml
文件
XML 文件生成后,可以使用db_import
命令将文件导入数据库。操作完毕后,可以使用hosts
和services
命令核实导入结果,hosts
命令显示当前数据库中保存的所有主机信息,services
命令显示各个服务器提供的服务信息,如下图:
下图中三个红框部分为输入的指令,其余为输出。
主动信息收集部分较长,分段,下一节继续。