首页 » 学习笔记 » 正文

【信息收集】Kali Linux之Traceroute

traceroute (Windows系统下是tracert) 命令利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器。TTL值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICMP呼叫报文的TTL值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。traceroute是一条缓慢的命令,因为每经过一台路由器都要花去大约10到15秒。

在使用Traceroute的之前,需要了解几个技术名词:
IP协议
IP协议是TCP/IP协议族中最核心的部分,它的作用是在两台主机之间传输数据,所有上层协议的数据(HTTP、TCP、UDP等)都会被封装在一个个的IP数据包中被发送到网络上。
ICMP
ICMP全称为互联网控制报文协议,它常用于传递错误信息,ICMP协议是IP层的一部分,它的报文也是通过IP数据包来传输的。
TTL
TTL(time-to-live)是IP数据包中的一个字段,它指定了数据包最多能经过几次路由器。从我们源主机发出去的数据包在到达目的主机的路上要经过许多个路由器的转发,在发送数据包的时候源主机会设置一个TTL的值,每经过一个路由器TTL就会被减去一,当TTL为0的时候该数据包会被直接丢弃(不再继续转发),并发送一个超时ICMP报文给源主机。

Traceroute具体使用:

1.Traceroute<基于ICMP协议>,通过TTL值返回值来判断经历了多少个路由

file

2.返回为*号的表示可能路由设备禁止了这种探测包或者是拒绝响应这种探测包

3.每次发送探测包的时候可以打开wireshark来抓包,来查看具体发送了啥样的数据包!

file

4.Traceroute -T www.zzhsec.com 通过TCP协议来探测,可以用来对比下第一个基于UDP-ICMP协议的探测,有何不同

file

基于不完整TCP会话的探测工具-Tcptraceroute

1.TCPTraceroute其实就是一个shell脚本,就是调用traceroute的命令来实现本身的功能

file

2.原理是通过发送TTL值递增的SYN包,弊端在于它不是完整的TCP握手,可能会被网络设备丢弃包

基于完整的TCP会话的探测工具–0trace

1.0trace iface IP Port<选择要探测的网卡以及IP和端口>

命令:0trace.sh eth0 www.zzhsec.com

file

命令:0trace.sh eth0 103.60.222.227 443

file

2.原理是基于TCP的ACK包,IP头TTL值递增,优势在于有可能探测到内网的IP地址段,以及绕过部分防火墙的限制

总结:

1.结合多种协议来探测路由,从而更好的判断

2.无法探测到路径的原因:

1.目标防火墙丢弃了所有出站的ICMP数据包
2.目标防火墙对TTL值重写或者全数据包重写
3.路径中存在应用层代理或负载均衡设备
4.防火墙后没有明确的三层设备
5.IDS、IPS容易检测到TCP特征

推荐阅读:

Traceroute(路由追踪)的原理及实现