网络通信 频道

查找网络地址范围

  当攻击者有一些机器的IP地址后,他下一步就需要找出网络的地址范围或者子网掩码。需要知道地址范围的主要原因是:保证攻击者能集中精力对付一个网络而没有闯入其他网络。

  攻击者能用两种方法找到这一信息,较容易的方法是使用Address Resources for Internet Networking(ARIN)Whois网站(http://www.arin.com/)工具搜索找到信息;较困难的方法是使用Traceroute解析结果。

  ARIN允许任何人搜索Whois数据库找到网络上的定位信息、自治系统号码(ASN)、有关的网络句柄和其他有关的接触点。基本上,常规的Whois会提供关于域名的信息。ARIN Whois允许询问IP地址,帮助找到关于子网地址和网络如何被分割的策略信息。搜索的方法是首先在如图3-4所示的ARIN主界面中"Auto-completion of domain lookups"文本框中输入要查询的域名(注意不要输入www.部分)。

 

 图3-4  ARIN网站主界面

  输入好要查找的网站域名后单击回车键即可显示所查询的域名信息界面,如图3-5是网易163.com的域名信息界面,在其中可以说非常全面地显示了该域网所对应网站的信息,包括域名注册时间、公司规模、域名出口数、域名对应网站的Alexa排名、IP地址、IP地址所在地、服务器所用系统等。比用Ping域名的方法得到的信息全面许多。

  在因特网上,信息的传送是通过网中许多段的传输介质和设备(路由器、交换机、服务器、网关等)从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器、接入服务器等一般情况下都会有一个独立的IP地址。通过Traceroute可以知道信息从你的计算机到因特网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。UNIX系统中,称之为Traceroute,而Windows中却称为Tracert。Traceroute/Tracert通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

  连接到Internet上的公司有一个外部服务器把网络连到ISP或者Internet上,所有去公司的流量必须通过外部路由器,否则没有办法进入网络。并且大多数公司有防火墙,所以Traceroute输出的最后一跳会是目的机器,倒数第二跳会是防火墙,倒数第三跳会是外部路由器。通过相同外部路由器的所有机器属于同一网络,通常也属于同一公司。因此攻击者查看通过Traceroute到达的各种IP地址,看这些机器是否通过相同的外部路由器,就知道它们是否属于同一网络。

  在大多数情况下,可直接在UNIX主机系统下执行命令行:Traceroute 主机名(或域名)。而在Windows系统下是执行Tracert的命令:Tracerert主机名(或域名)。

  如图3-6所示的是在Windows系统下输入Tracert www.yahoo.com命令后的结果显示。从中可以看出,从笔者所用主机到达雅虎网站要经过12个跳点,也就是12个路由点。各路由点的IP地址也有显示。

  Traceroute可以知道一个数据包通过网络的路径。因此利用这一信息,能决定主机是否在相同的网络上。Traceroute程序的设计是利用ICMP及IP Header的TTL(Time To Live)栏位(field)。首先,Traceroute送出一个TTL是1的IP datagram(IP报文,每次送出的为3个40字节的包,包括源地址、目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个"ICMP time exceeded"消息(包括发IP包的源地址、IP包的所有内容及路由器的IP地址);Traceroute 收到这个消息后,便知道这个路由器存在于这个路径上。接着Traceroute 再送出另一个TTL是2 的datagram,发现第二个路由器……Traceroute 每次将送出的datagram的TTL加1来发现另一个路由器。这个重复的动作一直持续到某个datagram抵达目的地。当datagram到达目的地后,该主机并不会送回"ICMP time exceeded"(ICMP报文发送超时)消息,因为它已是目的地了。那么Traceroute如何得知目的地到达了呢?原来,Traceroute在送出"UDP datagram"报文到目的地时,它所选择送达的port number(端口号)是一个一般应用程序都不会用的号码(30000 以上),所以当此"UDP datagram"报文到达目的地后该主机会送回一个"ICMP port unreachable"(ICMP端口不可到达)的消息,而当Traceroute 收到这个消息时,便知道目的地已经到达了。

1
相关文章