目录本文参考于李华峰等人的图书《Kali Linux2 网络渗透测试实践指南》2018年第1版
主动扫描一般都是针对目标发送特定的数据包,然后根据目标的反应来获得一些信息。
Nmap是非常优秀的主动扫描工具,通过Nmap对一台计算机进行扫描,我们可以得到的目标信息如下:
对单个主机进行扫描nmap <目标ip地址>
对多个不连续的主机进行扫描nmap [目标1 目标2 目标3 目标4...]
对连续范围内的主机进行扫描nmap [ip范围]
,如nmap 192.168.164.1-255
使用CIDR扫描整个子网nmap [ip地址/掩码位数]
,如nmap 192.168.164.1/24
跳过Ping扫描阶段
通常在Nmap进行其他扫描前,先对目标主机进行Ping扫描,若该扫描无反应,则结束整个扫描过程。然而有时目标主机其实在线,但采用某种手段屏蔽了Ping扫描,因此也会躲过其他扫描操作。所以我么可以指定无论目标是否响应Ping,都要完成整个扫描过程,该参数为-PN
,例如
nmap -PN 192.168.169.131
使用ARP协议进行主机发现
当目标主机与我们处于同一网段时,使用ARP协议扫描是最佳选择,不仅速度最快,而且扫描结果也是最精准的,因为没有任何安全措施会阻止正常的ARP请求。参数-PR
,例如
nmap -PR 192.168.169.131
仅使用Ping协议进行主机发现
有时我们要对大量主机进行扫描,若采用所有方式进行扫描的话就会花费大量的时间,这时我们可以只对目标主机进行Ping扫描,参数为-sP
,例如
nmap -sP 192.168.169.131
使用TCP协议进行主机发现
TCP协议主要由三次握手构成,其中最后一步意义不大,所以扫描的时候也可以不完成最后一步。若完成最后一步,则称为全开(Connect)扫描,参数为-sT
,否则称为半开(SYN)扫描,参数为-sS
,例如
nmap -sS 192.168.169.131 nmap -sT 192.168.169.131
使用UDP协议进行主机发现
UDP协议比TCP协议简单,但在扫描时所花时间却比TCP长,因此这种扫描方式并不常用。参数-sU
,例如
nmap -sU 192.168.164.131
端口状态
Nmap对目标端口进行扫描时,对端口的状态判断有5种:
扫描全部端口
每个网络设备有65536个端口,如果对这些端口全部进行扫描,那么就会花费很长的时间,所以Nmap默认扫描的端口只有最常用的1000个。
若要对所有的65536个端口进行扫描,可使用参数-p "*"
,例如
nmap -p "*" 192.168.164.131
扫描前n个端口
如果只想扫描使用频率最高的n个端口,可以使用参数--top-ports n
,例如
nmap --top-ports 10 192.168.164.131
扫描指定端口
如果只对指定端口进行测试的话,可以使用参数-p 端口号
,例如
nmap -p 80 192.168.164.131
如果我们知道目标所使用的操作系统,之后就可以大大减少工作量。但没有一种工具可以提供绝对准确的信息,所有的工具都是使用“猜”的方法:通过向目标发送探针,不同系统对这些探针会做出不同的响应,Nmap将这些响应特征提取出来并记录在一个数据库中,然后根据目标的回应来猜测系统。探针和响应特征的对应关系存放在安装目录的Nmap-os-db
文件中。
Nmap会尝试验证如下参数:
除此之外,操作系统检测还提供关于系统运行时间和TCP序列可预测性信息的分类。
对系统的扫描使用参数-O
,例如
nmap -O 192.168.164.131
对操作系统而言,那些安装在操作系统之上的软件更是网络安全的重灾区,因此在进行渗透时,要尽量的检测出目标系统运行的各种软件。
有时我们并没有使用Nmap进行服务识别操作,也得到了服务类型的信息。其实Nmap并没有进行服务的识别,只是将端口号在自己的端口服务表数据(nmap-services)中进行查找,然后返回。即这种返回的服务只是数据库中的,并非事实中端口所运行的服务。
Nmap提供了更精准的服务及版本检测选项,参数为-sV
,例如
nmap -sV 192.168.164.131
Nmap支持多种保存格式,若保存为XML格式,可使用参数-oX 文件名
,例如
nmap -oX Report.xml 192.168.164.131