三层主机发现
- 原理:使用IP/ICMP协议
- 优点:相对于二层可以路由,速度比较快
- 缺点:相比二层速度慢,易被边界防火墙过滤掉
- 方法:ping、traceroute、scapy、fping、Hping
ICMP 的作用是用来实现 Intenet 管理的,进行路径的发现,网路通信情况,或者目标主机的状态;在三层发现中主要使用 ICMP协议,ARP 协议属于二层协议,它是基于广播的,所以不可路由。而ICMP协议是可以路由的,理论上使用ICMP协议可以发现世界上所有存活的目标主机,前提是目标主机得接收我发给它的ICMP协议,同时会对我的ICMP探测做出相应的响应,由此可以判断出目标主机是否存活。不管是二层扫描还是三层扫描,都有可能存在误报或者漏报,当有边界防火墙时,可能活的主机不响应,也可能宕机响应,因此扫描发现结果只能作为一个参考,不能完全相信。
1、ping命令
- ICMP报头的Type字段一共有0 ~ 15个定义,每种定义表示不同的包的类型,用途也不一样。ping 包发出的是Type 8类型的数据包,而接收到ping包的机器,如果没有防火墙过滤的话,正常ping包响应会返回一个Type 0类型的数据包。
- Linux和Windows发出的ping包不同,Windows系统默认发4个ping包就结束,而Linux会一直发ping包,直到Ctrl+C结束,或者 -c 指定发包数量。
- ping -R <ip> #可以路由追踪
root@kali:~# ping 192.168.247.129 -c 4 //-c 指定发包数量
PING 192.168.247.129 (192.168.247.129) 56(84) bytes of data.
64 bytes from 192.168.247.129: icmp_seq=1 ttl=128 time=0.606 ms
64 bytes from 192.168.247.129: icmp_seq=2 ttl=128 time=0.795 ms
64 bytes from 192.168.247.129: icmp_seq=3 ttl=128 time=0.772 ms
64 bytes from 192.168.247.129: icmp_seq=4 ttl=128 time=0.866 ms
--- 192.168.247.129 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3017ms
rtt min/avg/max/mdev = 0.606/0.759/0.866/0.101 ms
#使用管道过滤可以得到存活主机的IP地址
root@kali:~# ping 192.168.247.129 -c 1 | grep 'bytes from' | cut -d" " -f4 | cut -d":" -f1
192.168.247.129
抓包分析:
ping命令不支持IP段扫描,可使用shell脚本扫描指定网段
#!/bin/bash
prefix=192.168.247
for addr in $(seq 1 254)
do
ping -c 1 $prefix.$addr | grep 'bytes from' | cut -d' ' -f4 | cut -d':' -f1
done
root@kali:~# sh ping.sh
192.168.247.1
192.168.247.2
192.168.247.129
192.168.247.157