有一个名为tcptraceroute的实用程序,此增强功能称为intrace,它的使用方式与标准 traceroute 一样,但它通过 TCP 工作。
TCP中的标志如何
syn
用于实现类似跟踪路由的功能(当 ICMP 关闭时)可以披露哪些信息(或其他风险)?
如何减轻这种情况?(路由器,主机,......两者?)
这被描述为类似于传递 -sS 标志时的 nmap 命令。如果这是准确的,它实际上意味着什么?
有一个名为tcptraceroute的实用程序,此增强功能称为intrace,它的使用方式与标准 traceroute 一样,但它通过 TCP 工作。
TCP中的标志如何syn
用于实现类似跟踪路由的功能(当 ICMP 关闭时)
可以披露哪些信息(或其他风险)?
如何减轻这种情况?(路由器,主机,......两者?)
这被描述为类似于传递 -sS 标志时的 nmap 命令。如果这是准确的,它实际上意味着什么?
所有的跟踪路由工具都依赖于以下原理:它们发送生命周期较短的数据包,并等待 ICMP 数据包报告这些数据包的死亡。IP 数据包有一个名为“TTL”(即“生存时间”)的字段,该字段在每一跳递减;当它达到 0 时,数据包死亡,发生这种情况的路由器应该发回“超时”ICMP 消息。该 ICMP 消息包含所述路由器的 IP 地址,从而显示它。
如果某些防火墙阻止“超时”ICMP 数据包,则链接到的任何工具都无法执行任何操作。但是,阻止此类数据包往往会破坏 Internet(因为主机会自适应地更改它们发送的数据包中的 TTL 以应对较长的网络路径,并且它们需要这些 ICMP 来进行此过程),因此,一般来说,“ Time Exceeded” ICMP 数据包未被阻止。
然而,经常被阻塞的是发送的那种短寿命的数据包traceroute
。这些是具有人为低 TTL 的数据包。如果它们被防火墙阻止,它们永远不会“老死”,因此不会出现 Time Exceeded ICMP。对于 TTL 处理和“超时”ICMP,数据包的类型无关紧要;这发生在 IP 级别。但防火墙也会查看数据包内容。目标是欺骗防火墙,使它们允许短暂的数据包流动(然后死亡)。
Plaintraceroute
使用 UDP 数据包或 ICMP“Echo”数据包,这两种数据包都会被(过度)热心的系统管理员阻止。而是使用 TCP“SYN”数据包,即作为TCP “三次握手”tcptraceroute
的第一步出现的数据包类型。这种数据包通常不会被防火墙阻止,至少只要目标端口是“允许的”。不会完成任何 TCP 握手;它只是依赖于 SYN 数据包不会被防火墙看到的想法。tcptraceroute
intrace
更进一步,它等待现有的 TCP 连接(它通过检查所有数据包来做到这一点,à la tcpdump
)。当它看到一个连接并且用户按下 ENTER 时,intrace
将发送短期数据包,这些数据包看起来是观察到的连接的一部分。intrace
可以这样做,因为它已经看到了数据包,因此知道 IP 地址、端口和序列号。所有相关的防火墙都会让这些数据包通过,因为它们(显然)允许观察到的 TCP 连接继续进行。短期数据包被调整,以便它们不会中断 TCP 连接(即它们是简单的“ACK”数据包,本身没有数据,因此目标操作系统将简单地忽略它们)。
编辑:我注意到我没有回答部分问题。就是这样:没有风险。没有什么可以减轻的。
traceroute
揭示了路由数据包所涉及的路由器的 IP 地址。IP 地址并不意味着秘密,攻击者很容易通过各种方式获得(想到大规模扫描,但也搜索垃圾袋以打印网络地图 - 现代回收方式使得垃圾箱潜水变得更加容易,并且比以前更清洁的活动)。然而,一个相对普遍的神话是,将您的地址保密以某种方式确保安全。相应地,许多系统管理员认为traceroute
是严重的违规行为,需要尽快修复和阻止。然而,在实践中,这都是胡扯。如果泄露一些内部 IP 地址是一个主要问题,那么这意味着您的网络注定要失败。
担心 IP 地址的保密性就像触发一个重大事件响应计划,因为一个局外人在公司的自助餐厅得知了菜单。这是不成比例的。诚然,对网络基础设施有准确而广泛的了解只能帮助攻击者;但数量并不大。将 IP 地址保密不值得通过过度过滤来破坏连接(例如,阻止“需要分段”的 ICMP 对于 ADSL+PPPoE 链接后面的任何客户端都是致命的)。
traceroute 和 tcptraceroute 的工作原理相同:
唯一的区别是发送什么类型的数据包(Linux 上默认是 UDP,Windows 上是 ICMP,而 TCP 正在成为更流行的选项)。当 TTL 到期时,所有设备都会从有用的设备生成 ICMP 错误消息。
SYN
标志是因为像防火墙这样的干预设备通常会允许SYN
但阻止不属于已建立连接的其他 TCP 数据包。nmap -sS
将执行 SYN 扫描,其中仅发送 SYN 数据包。但是,它本身不会执行跟踪路由。您需要将它与 --traceroute 选项结合使用(然后我认为您仍在扫描,而不仅仅是执行跟踪路由,所以如果您想跟踪我建议tcptraceroute
或者traceroute -T
您的操作系统支持它)。
- TCP 中的 syn 标志如何用于实现类似跟踪路由的功能(当 ICMP 关闭时)
当 TTL 值达到零时,任何 IP 数据包都会触发来自中间路由器的 ICMP“超时”响应。这可以是 TCP、UDP、ICMP 或任何其他。只要中间路由器将传递数据包,跟踪就会起作用。传统的 traceroute 使用 ICMP 回显请求,但这只是惯例。
请注意,目标服务器上是否允许 ICMP完全无关紧要,因为返回 Time Exceeded 响应的是中间路由器。您可能会错过的唯一一件事是来自最终目标主机的响应,但 traceroute 是最不重要的响应,因为 traceroute 为您提供的是中间路由器列表。
在 TCP 数据包上使用 SYN 标志可能会从目标服务器获得 SYN/ACK,或者如果端口未打开或策略阻止您的数据包,则可能不会。但同样,目标服务器是最不重要的。如果您只对跃点列表感兴趣,您可以轻松地发送 UDP 或 TCP 延续。
一些路由器被配置为以不同的方式处理 PING 数据包;不同的路由、不同的优先级等。改用 TCP 数据包可能会给您不同的结果,这应该更能说明 TCP 流量将采用的路由。
- 可以披露哪些信息(或其他风险)?
没有什么是不公开的。如果您的安全取决于对此类信息保密,那么您应该坐下来重新考虑让您来到这里的决定。
- 如何减轻这种情况?(路由器,主机,......两者?)
没有什么可以减轻的。当然,你总是可以拔掉你的服务器,这会减轻各种各样的事情。否则,在您采用缓解策略之前,您应该考虑您正在获得什么以及您正在放弃什么。在这种情况下,您似乎没有任何收获。