基于nmap诸神之眼
主机发现
1.基于ARP
-nmap -PR + ip地址
-原理:nmap向所在网段发送大量ARP请求广播,如果目标主机存活,则会收到ARP响应,若一段时间后没有收到相应,则认为主机死亡。
2.基于ICMP
a.通过ICMP"应答"请求和响应请求(类型值 8 和 0)
-nmap -PE + ip地址
-原理:发送ICMP相应请求,如果得到目标主机回应的ICMP响应,则说明该主机处于活跃状态
b.通过ICMP"时间戳"请求和应答(类型值 13 和 14)
-nmap -PP + ip地址
-原理:发现原理同上只是基于方式不同
c.通过ICMP"地址掩码"请求和响应(类型值 17 和 18 )
-namp -PM + ip地址
-原理:同上
d.总结:基于ICMP协议的主机发现都是基于请求和响应的机制
3.基于TCP(面向端口检测)
a.通过TCP SYN
-namp -PS + ip地址
-原理:基于建立连接,建立连接时会发送SYN请求如果目标端口开放则会返回SYN ACK应答,若端口关闭则会返回RST数据包。释放连接也是发送RST数据包,由于只是探测主机是否存活 Nmap不会真正的建立连接
b.通过TCP ACK
-nmap -PA + ip地址
-原理:同上基于TCP三次握手建立连接
4.基于UDP(面向端口检测)
-nmap -PU + ip地址
-原理:当一个端口收到UDP数据包的时候,如果它是关闭的,就会给源端发送一个ICMP端口不可达数据包,如果它是开放的,就会忽略这个数据包,也就是丢弃不回复任何信息
5.基于SCTP(由于有些主机不支持此协议所以回可能错误报告)
-namp -PY + ip地址
-原理:与TCP原理相似都是基于建立连接,但两个协议存在较大区别,如有兴趣课自行搜索
6.基于IP(配合 "-PO选择协议 --data-length 指定长度" 选项使用)
-namp -sP + ip地址
-原理:所有TCP、UDP、ICMP及IGMP数据都是以IP数据包格式传输
"拓展" :--packet-trace 可以帮助查看发送的数据包
端口扫描(-F -p --top-ports)
1.SYN扫描(root权限)
-namp -sS + ip地址
-原理:首先Nmap会向目标主机的一个端口发送请求连接的SYN数据包,而目标主机在接收到这个SYN数据包后会以SYN ACK进行应答,Nmap在收到SYN ACK后会发送RST包请求断开连接而不是ACK应答。这样三次握手就没法完成,无法建立正常的TCP连接,而系统日志中也不会有记录。
2.Connect扫描
-nmap -sT + ip地址
-原理:这种方式和SYN扫描方式很像,只是建立了TCP连接,完成了三次握手。
3.UDP扫描
-nmap -sU + ip地址
-原理:
4.TCP FIN扫描
-namp -sF + ip地址
-原理:Nmap向目标端口发送一个FIN数据包,按照RFC793规定,对于所有关闭的端口,目标系统应返回RST标志
5.NULL扫描
-nmap -sN +ip地址
-原理:Nmap向目标端口发送一个不包含任何标志的数据包。按照RFC793规定,对于所有关闭的端口,目标系统应该返回RST标志
6.Xmas Tree扫描
-nmap -sX + ip地址
-原理:TCP Xmas Tree向目标端口发送一个含有FIN URG PUSH标志的数据包。按照RFC793规定,对于所有关闭的端口,目标系统应返回RST标志
7.idel 扫描
-nmap
-原理:详见nmap诸神之眼p45
操作系统检测
-nmap -O + ip地址
-原理:利用探针数据包来查看目标主机的响应数据,分析操作系统的"指纹"确定操作系统,这些探针利用了TCP、UDP、ICMP等各种协议,经过巧妙地设计,发现操作系统的细微差别。
服务及版本扫描
-nmap -sV + ip地址
-原理:进行端口扫描,默认为SYN扫描,进行服务识别,发送探针报文得到返回值确认服务,进行版本识别,发送探针报文,得到返回的报文信息,分析出服务的版本