3.1 信息踩点
踩点(Footprinting)指的是黑客在面对特定的网络资源准备行动之前,收集汇总各种与目标系统相关的信息,以形成对目标网络必要的轮廓性认识,并为实施攻击做好准备。黑客的攻击活动从踩点开始,获取的信息通常如下。
1)网页信息(包括联系方式、合作伙伴、公司业务情况等较直观的信息)。
2)域名信息(包括域名服务器、网管联系人、邮件服务器以及其他应用服务器的注册信息)。
3)网络块(公司注册的IP地址范围)。
4)网络结构(初步探测目标网络的拓扑结构,包括防火墙位置等)。
5)路径信息(通达目标系统的网络路由信息)。
3.1.1 Whois
(1)Whois踩点原理
Whois是实现域名信息查询的重要方式之一,也是当前域名系统中不可或缺的一项信息服务。Whois踩点主要是收集域名注册信息,如IP地址、注册时间、过期日期、域名状态、服务商、注册人的信息等,用于查询某一域名是否已经被注册,以及该注册域名的所有人、注册商等详细信息。Whois踩点基于Whois服务,它是一种在线的“请求/响应”式服务。Whois服务器(Server)运行在后台,监听43端口,由每个域名IP所对应的管理机构来保存其Whois信息。当Internet用户搜索一个域名(或主机、联系人等其他信息)时,Whois服务器首先建立一个与客户端(Client)的TCP连接,然后接收用户请求的信息并据此查询后台域名数据库。如果数据库中存在相应的记录,它会将相关信息(如所有者、管理信息以及技术联络信息等)反馈给客户端。待服务器输出结束,客户端关闭连接,至此,一个查询过程结束。根据因特网工程任务组(Internet Engineering Task Force,IETF)要求,Whois服务一般由Whois系统来提供。Whois系统是一个客户端/服务器(Client/Server)系统,其中Client主要负责提供访问Whois系统的用户接口。近年来,随着Web应用的普及与进步,通过使用Web系统进行域名信息的查询已经成为主流趋势。基于Web的Whois查询系统在各级域名注册管理机构得到了部署,而客户端的Whois查询大多以网页应用为主。
(2)Whois查询示例
Whois的查询方式有多种,其中早期的Whois查询方式大多数以命令行接口的形式,近年来出现了一些线上查询工具,如https://www.whois.com/whois/,通过网页接口形式可实现一次向不同的数据库查询Whois信息。通过Whois查询域名www.baidu.com所获取的信息如下。
由以上信息可知,域名www.baidu.com是由位于中国北京的Beijing Baidu Netcom Sci-ence Technology Co.,Ltd.在1999年10月11日注册的,其域名注册商为MarkMonitor,Inc。
3.1.2 DNS查询
DNS(Domain Name System,域名系统)是Internet服务的基本支撑,包括Web访问、E-mail服务等在内的众多网络服务都依赖于DNS查询。因此,针对DNS的攻击将对网络的稳定运行与应用安全造成巨大的威胁。目前,针对DNS的攻击主要有:通过对域名系统的恶意DDoS攻击造成域名解析系统瘫痪;通过域名劫持的方式修改注册信息并劫持域名解析结果;域名系统管理权的变更;通过对DNS系统漏洞的攻击篡改DNS信息;DNS敏感信息的泄露。作为当前全球最复杂的分布式数据库系统之一,DNS面临的安全威胁亟待解决。
(1)DNS踩点原理
DNS踩点主要是为了搜集DNS服务器的信息,包括权威服务器(主+辅,权威解答)、递归缓存服务器(ISP提供),获取特定域名映射的IP地址。DNS踩点基于DNS协议、分布式数据库及查询方式。DNS数据库主要用来存储域名和IP地址的互相映射,服务于用户的互联网访问。每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。通过域名与IP地址的相互映射,用户访问某一IP时不需要使用繁杂的数字串,只需要通过具有相对直观含义的域名即可。DNS协议运行在用户数据报协议(User Datagram Protocol,UDP)之上,端口号为53。通过访问域名得到该域名所对应的IP地址的过程叫作域名解析,有时也称主机名解析。
DNS查询的主要方式有四种:本地解析、直接解析、递归解析与迭代解析,具体如下。
1)本地解析:客户端的日常DNS解析记录将被保存在本地的DNS缓存中,客户端可以使用本地缓存信息及时应答。当其他程序提出DNS查询请求后,该请求将被传达给DNS客户端程序。DNS客户端优先使用本地缓存信息进行解析。如果可以解析到待查询的域名,则将解析结果传回应用程序,此过程不需要向DNS服务器查询。
2)直接解析:该方法向主机所设定的DNS服务器进行查询解析。当DNS客户端程序不能从本地缓存中得到所需解析结果时,就会向主机所设定的DNS服务器发送查询请求,要求局部DNS服务器进行域名解析。局部DNS服务器收到查询请求后,首先查看该查询请求是否能被应答,若能被应答,则返回查询结果;若不能应答,则查看自身的DNS缓存后返回查询结果。
3)递归解析:若局部DNS解析服务器不能应答该DNS解析请求,则该请求需要通过其他DNS服务器解析查询。其中一种方式是递归解析。局部DNS服务器自己向其他DNS服务器进行查询。由该域名的根域名服务器逐级向下查询,查询结果返回给局部DNS服务器,再向客户端应答。
4)迭代解析:局部DNS服务器不能应答DNS查询时的另一种查询方式是迭代解析。在迭代解析中,局部DNS服务器并不自己查询该解析结果,而是把能解析该域名的IP地址返回给主机,供主机查询。主机的DNS查询程序得到该IP地址后向该IP地址查询DNS解析结果,直到查询到解析结果为止。
(2)DNS踩点举例
本地DNS查询可以使用nslookup工具,具体方法为打开命令提示符窗口输入“nslookup-qt”,然后按〈Enter〉键,如图3-1所示为应用nslookup工具对www.baidu.com进行DNS踩点后所获取的信息,www.baidu.com对应的IP地址为119.75.217.109和119.75.217.126。
图3-1 www.baidu.com的DNS踩点信息
3.1.3 Ping
(1)Ping踩点原理
Ping踩点就是对远程主机发送测试数据包,看远程主机是否有响应并统计响应时间,以判断远程主机的在线状态。这是检查网络是否通畅或者网络连接速度的方法,同时该方法可以很好地帮助分析和判定网络故障。Ping(Packet Internet Groper,互联网分组探测器)是Windows、UNIX和Linux系统下的一个命令,也属于一种通信协议,是TCP/IP的一部分。Ping命令是一个简单实用的DOS命令,其发送一个ICMP(Internet Control Messages Protocol,互联网控制报文协议)数据包给目的地址,再要求对方返回一个同样大小的应答数据包(ICMP echo),由此来确定两台网络机器是否连通以及时延大小。如果Ping执行不成功,则故障可能出现在网线是否连通、网络适配器配置是否正确、IP地址是否可用等几个方面。当出现远程主机不在线等情况时,Ping应答包会返回异常信息,常见的异常信息如下。
1)Request timedout:请求超时,这种信息通常对应三种情况:①对方已关机,或者网络上根本没有这个地址;②对方与自己不在同一网段内且不确定对方是否存在,通过路由也无法找到对方;③对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)。
2)Destination host unreachable:目的主机不可达,这表示对方主机不存在或者没有跟对方建立连接。这里要注意Destination host unreachable和Request timed out的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其他原因不可到达,这时候会出现Request timed out,如果路由表中连到达目标的路由都没有,那就会出现Destination host unreachable。
3)Bad IP address:表示有可能没有连接到DNS服务器,无法解析这个IP地址,也可能是IP地址不存在。
4)Unknown host:未知主机,表示远程主机的名字不能被域名服务器(DNS)转换成IP地址,故障原因可能是域名服务器有故障、名字不正确或者网络管理员的系统与远程主机之间的通信线路有故障。
5)No answer:无响应,这种故障说明本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的任何信息。故障原因可能是下列之一:①中心主机没有工作;②本地或中心主机的网络配置不正确;③本地或中心的路由器没有工作;④通信线路有故障;⑤中心主机存在路由选择问题。
(2)Ping踩点示例
图3-2给出对IP地址为119.75.217.109的远程主机进行Ping踩点所返回的信息,由此可知远程主机为在线状态。
图3-2 远程主机119.75.217.109的Ping踩点信息
3.1.4 Traceroute
(1)Traceroute踩点原理
Traceroute踩点基于Traceroute(或Tracert)命令,它利用ICMP能够遍历到数据包传输路径上的所有路由器,定位一台计算机和目标计算机之间的所有路由器。它利用IP报文头部可以反映数据包经过的路由器或网关数量的TTL(Time To Live)值,通过操纵独立ICMP呼叫报文的TTL值和观察该报文被抛弃的返回信息,来确定从源端到互联网另一端主机的路径。首先,Traceroute送出一个TTL=1的IP数据包到目的地,当路径上的第一个路由器收到这个IP数据包时,TTL值将减1变为0,所以该路由器会将此数据包丢掉,并送回一个包括IP包源地址、IP包的所有内容及路由器的IP地址等信息的ICMP超时消息。Traceroute收到这个消息后,便知道这个路由器存在于这个路径上,接着Traceroute再送出另一个TTL=2的数据包,发现第二个路由器,以此类推。Traceroute通过将每次送出IP数据包的TTL加1来发现另一个新的路由器,这个重复的动作一直持续到某个数据包抵达目的地。当数据包到达目的地后,该主机并不会送回ICMP time exceeded消息,而是送回一个ICMP port un-reachable的消息。当发送ICMP数据包的主机收到这个消息时,便知道目的地已经到达了。Traceroute(或Tracert)的工作原理如图3-3所示。
图3-3 Traceroute(或Tracert)工作原理
(2)Traceroute踩点示例
在Windows操作系统中,在命令行中使用Traceroute(或Tracert)命令对到达119.75.217.26的路由信息进行踩点,结果如图3-4所示。
图3-4 Traceroute踩点示例