通过监控TTL响应 探测远程网络拓扑结构


 

有的时候,网络管理员可以通过配置一个内部网络来实现单一主机与其他主机在不同层次上的通信。一个单一的互联网协议(IP)地址可能会代表很多在内部网络上已经打开了端口的设备。虽然有一些基本的方式去检测它们,令人惊讶的是当今流行的各种工具也会在他们各自输出信息的网络层上发现一些相关的信息。这篇文章将会指导读者通过检测请求信息的普通行为的Time-To-Live(TTL)值来检测端口转发和周边远程主机的入侵响应。

  了解TTL响应

主机每一次将数据发送给其他主机时,数据以数据包的形式发送,数据包从一个主机沿着一系列的路由器、交换机和其他主机,直到到达目的主机。数据包中有TTL的信息头并且指定了数据包到达目的主机时经过的路由器跳数。数据包每经过一个路由器,数据包头部的TTL值将会减1。

  TTL能够揭示传输路线的变化

传输路线的改变经常会发生在互联网服务提供商与一级主干网络提供商的通信时。当这种变化发生时,一个主机上传输路线改变的每一个响应都会立刻改变TTL的值。一次传输路线的改变可能是因为正常的网络扩展,也可能是一个网络设备限制了某个数据源到蜜罐的传输,或者是为了负载均衡而进行目的端口重定向等活动。

  TTL的扫描响应

在端口扫描的过程中,为了产生一个响应,SYN数据包会从不同的端口发送到目的主机,我们便可得知哪一个端口对服务进行了侦听。所有由同一个扫描器(除非扫描器进行了特殊的设定)发送的数据包将会有相同的初始TTL值,有的时候IP地址在被扫描时产生不同的TTL响应值。TTL值的不同表明在公共IP地址扫描的背后还有额外的网络层在工作。如果TTL的值越高,则表示运行服务的主机离执行扫描的主机越近;若TTL的越低,则表示运行服务的主机离执行扫描的主机越远。

换句话说,如果主机的TTL响应值以47为基准,但是一个传输过来的TTL响应值为45,则这个端口传递过来的响应明显是经过了转发的。另一方面,如果从相同的主机接收到的一个数据包中TTL的响应值为48,它很有可能是从扫描主机和目的主机设备中传输过来的原始数据包。

  TTL可能会骗过防火墙和入侵响应

端口扫描并不是惟一一个有利于TTL异常检测的方法。处于攻击者和他们的目标主机之间的防火墙和入侵防御系统(IPS)同样可以以RST数据包的形式产生响应值,并终止那些被认为对系统有害的链接。因为在这些处于攻击者和目标主机之间装置中,攻击者通过这些端口所接收到的RST数据包将会带有一个高于目标主机所接收的RST数据包的TTL值。

为了观察TTL异常检测的信息,我们的团队将ttl_mon.py聚集到了github中。它会在一直运行,直到用户使用control+C组合键退出,并且会将主机在运行期间的详细信息输出到屏幕上。当各个端口的TTL响应值在运行期间改变时,一个关于传输路径修改的红色通知将会在屏幕上输出。它能够检测到所有主机在被分配的接口上或者在一个单一目标主机中发送的数据。

  附属

ttl_mon.py依赖python2的dpkt和pcapy包。它们可以使用python pip模块进行安装,例如:

python2 -mpip install pcapy dpkt

  用法

用法:ttl_mon.py [options]

选项:

-h, --help

显示帮助信息和退出

-i INTERFACE, --interface=INTERFACE

监听的接口

-l LOCAL, --local=LOCAL

需要忽略的本地地址

-t TARGET, --target=TARGET

仅记录指定IP的改变

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

网络安全:互联网安全 如何防范木马及病毒

网络安全:互联网安全 如何防范木马及病毒的攻击

一、计算机中毒有哪些症状? 人生病了,会有各种各样的症状,同样,电脑中毒了也会有...[详细]

加强网站服务器安全维护的技巧

加强网站服务器安全维护的技巧

计算机系统服务器的维护工作十分重要,稍有不慎就会使整个网络陷入瘫痪。目前,网络经...[详细]

电脑离线就安全?这个软件一样能远程窃取数

电脑离线就安全?这个软件一样能远程窃取数据

以色列的一个研究团队已改良了窃取离线电脑数据的方法。人们一直认为这种离线电脑在面...[详细]

如何在Linux上最妥善地管理加密密钥?

如何在Linux上最妥善地管理加密密钥?

存储SSH加密密钥和牢记密码可能是一件让人很头痛的事儿。不过遗憾的是,在如今恶意黑...[详细]

如何在 Linux 上运行命令前临时清空 Bash

如何在 Linux 上运行命令前临时清空 Bash 环境变量

我是个 bash shell 用户。我想临时清空 bash shell 环境变量。但我不想删除或者 unset...[详细]

返回首页 返回顶部