第七章(三)—主动信息收集(ping、traceroute、scapy、nmap、hping三层发现)
三层发现
二层发现使用的技术是arp协议。
三层使用的是IP、ICMP协议。
ICMP协议:internet控制管理协议,用来做网络的控制管理使用的。主要的作用是进行一些路径的发现、主机网络通断的侦测。
三层协议优点:
- 可路由
- 速度比较快。
缺点: - 速度比二层慢
- 经常被边界防火墙过滤。发数据包,但是目标机器没有给我相应,我的扫描软件就会判断目标机器是不在线的状态,就会出现错误的判断结果,这是无法回避的问题。
1.ping
ping命令使用的是ICMP的其中两种类型的数据包。
ICMP协议会根据ICMP包头的type字段,一共有0-15个定义,每种定义都表示一种不同的包的类型,他的用途也不一样。
我们在发送ping包的时候,我们发送ping包的机器发出的就是ICMP的type8,即第8号类型的数据包,而接收到ping包的机器,如果他没有防火墙过滤,可以正常的ping包的返回相应,他返回的其实是ICMP的type0,0号类型的ICMP数据包。
windows发送ping包默认发送4个,Linux会不停止的发送ping包。
ping命令
ping 1.1.1.1 -c 5 #ping 1.1.1.1,发送5个ping包
#-c:ping包的个数
ping -R ip #和traceroute命令作用类似
ping 1.1.1.1 -c 1 |grep "fytes from" |cut -d " " -f 4 |cut -d ":" -f 1 #只获取到最后返回的ip结果
本机发送的ping包,数据包头中type=8:
收到的响应的ping包,数据包头中type=0
2.traceroute
traceroute #追踪路由
补充:
ip包头里的ttl值,不同操作系统的ttl不同,可以通过抓包看到。
linux或unix系统默认ttl值是64,每经过一跳路由器会减1,经过多少跳,最终会减掉多少把这个包到达目标服务器。
traceroute和ping不同的是,traceroute会先设定自己的ttl值是1,当把这个包发送到第一跳路由器,路由器会减1变成0,这一跳路由器看到包的ttl值已经变成0,就会直接回一个包,并且会提示ttl值已经到头了“time to exceeded in transit”,通过ttl值方式来实现每一跳路由器的追踪。
2.scapy
先定义IP包头,再定义ICMP包头,然后再发出去
IP的上层协议类型是ICMP
sr1(IP(dst="192.168.1.1")/ICMP(), timeout=1)
3.nmap
之前讲过namp做二层扫描的时候,是发送arp包,使用“-sn”参数。namp做三层扫描,也是使用“-sn”参数
区别在于:
nmap做二层扫描,发送的是arp包。
nmap做三层扫描,发送的是icmp包。抓包分析,nmap还发送了tcp的包,tcp是四层的协议,其实nmap没有严格意义上的一个参数是只发送icmp包的。他通常会使用综合大量的多种技术对一个目标进行探测。
4.fping
fping 1.1.1.1 -c 1 #对1.1.1.1只发送10个ping包
fping -g 192.168.1.100 192.168.1.200 -c 1 #对192.168.1.100-200之间的ip进行扫描,每个ip只发送一个包
fping -g 192.168.1.0/24 #对192.168.1.0一个地址段进行扫描
fping -f iplist.txt
5.hping
几乎可以完成所有的TCP/IP协议包,类似scapy,功能强大,同时还可以对基于TCP的服务器进行压力测试,发大量的ping包,发各种各样特殊定制出来的包头内容。
hping3 192.168.1.1 --icmp -c 2
for addr in $(seq 1 254); do hping3 192.168.1.$addr --icmp -c 1 >> iplist.txt & done