网络安全是一个综合的、复杂的工程,任何网络安全措施都不能保证万无一失。因此,对于一些重要的部门,一旦网络遭到攻击,如何追踪网络攻击,追查到攻击者并将其绳之以法,是十分必要的。
追踪网络攻击就是找到事件发生的源头。它有两个方面意义:一是指发现IP地址、MAC地址或是认证的主机名;二是指确定攻击者的身份。网络攻击者在实施攻击之时或之后,必然会留下一些蛛丝马迹,如登录的纪录,文件权限的改变等虚拟证据,如何正确处理虚拟证据是追踪网络攻击的最大挑战。
在追踪网络攻击中另一需要考虑的问题是:IP地址是一个虚拟地址而不是一个物理地址,IP地址很容易被伪造,大部分网络攻击者采用IP地址欺骗技术。这样追踪到的攻击源是不正确的。使得以IP地址为基础去发现攻击者变得更加困难。因此,必须采用一些方法,识破攻击者的欺骗,找到攻击源的真正IP地址。
★ netstat命令----实时察看攻击者
使用netstat命令可以获得所有联接被测主机的网络用户的IP地址。Windows系列、Unix系列、Linux等常用网络操作系统都可以使用“netstat”命令。
使用“netstat”命令的缺点是只能显示当前的连接,如果使用“netstat”命令时攻击者没有联接,则无法发现攻击者的踪迹。为此,可以使用Scheduler建立一个日程安排,安排系统每隔一定的时间使用一次“netstat”命令,并使用netstat>>textfile格式把每次检查时得到的数据写入一个文本文件中,以便需要追踪网络攻击时使用。
★ 日志数据--最详细的攻击记录
系统的日志数据提供了详细的用户登录信息。在追踪网络攻击时,这些数据是最直接的、有效的证据。但是有些系统的日志数据不完善,网络攻击者也常会把自己的活动从系统日志中删除。因此,需要采取补救措施,以保证日志数据的完整性。
Unix和Linux的日志
Unix和Linux的日志文件较详细的记录了用户的各种活动,如登录的ID的用户名、用户IP地址、端口号、登录和退出时间、每个ID最近一次登录时间、登录的终端、执行的命令,用户ID的账号信息等。通过这些信息可以提供ttyname(终端号)和源地址,是追踪网络攻击的最重要的数据。
大部分网络攻击者会把自己的活动记录从日记中删去,而且UOP和基于X Windows的活动往往不被记录,给追踪者带来困难。为了解决这个问题,可以在系统中运行wrapper工具,这个工具记录用户的服务请求和所有的活动,且不易被网络攻击者发觉,可以有效的防止网络攻击者消除其活动纪录。
Windows NT和Windows 2000的日志
Windows NT和Windows 2000有系统日志、安全日志和应用程序日志等三个日志,而与安全相关的数据包含在安全日志中。安全日志记录了登录用户的相关信息。安全日志中的数据是由配置所决定的。因此,应该根据安全需要合理进行配置,以便获得保证系统安全所必需的数据。
但是,Windows NT和Windows 2000的安全日志存在重大缺陷,它不记录事件的源,不可能根据安全日志中的数据追踪攻击者的源地址。为了解决这个问题,可以安装一个第三方的能够完整记录审计数据的工具。
防火墙日志
作为网络系统中的“堡垒主机”,防火墙被网络攻击者攻陷的可能性要小得多。因此,相对而言防火墙日志数据不太容易被修改,它的日志数据提供最理想的攻击源的源地址信息。
但是,防火墙也不是不可能被攻破的,它的日志也可能被删除和修改。攻击者也可向防火墙发动拒绝服务攻击,使防火墙瘫痪或至少降低其速度使其难以对事件做出及时响应,从而破坏防火墙日志的完整性。因此,在使用防火墙日志之前,应该运行专用工具检查防火墙日志的完整性,以防得到不完整的数据,贻误追踪时机。★ 原始数据包----比较可靠的分析方法
由于系统主机都有被攻陷的可能,因此利用系统日志获取攻击者的信息有时就不可靠了。所以,捕获原始数据包并对其数据进行分析,是确定攻击源的另一个重要的、比较可靠的方法。
包头数据分析
表1是一个原始数据包的IP包头数据。表中的第一行是最有用的数字。第一行的最后8位代表源地址。本例中的地址是0xd2、0x1d、0x84、0x96,对应的IP地址是210.45.132.150。通过分析原始数据包的包头数据,可以获得较为可靠的网络攻击者的IP地址,因为这些数据不会被删除或修改。但是,这种方法也不是完美无缺的,如果攻击者对其数据包进行加密,对收集到的数据包的分析就没有什么用处了。
表1 一个IP包头数据
0x0000 45c0 c823 0000 d306 6002 2c06 d21d 8496
0x0010 22ab b365 c234 0000 0000 4066 dd1d 8818
0x0020 7034 ecf8 0000 5b88 7708 b901 4a88 de34
0x0030 9812 a5c6 0011 8386 9618 0000 a123 6907
0x0040 55c5 0023 3401 0000 5505 b1c5 0000 0000
0x0050 0000 0000 0000 0000 0000
捕获数据包
在一个交换网络环境下捕获数据包比较困难,这主要是因为集线器和交换机在数据交换中本质的不同。集线器采用的是广播式传输,它不支持连接,而是把包发送到除源端口外的所有端口,与集线器相连的所有机器都可以捕获到通过它的数据包。而交换机支持端到端的连接,当一个数据包到达时交换机为它建立一个暂时的连接,数据包通过这个连接传到目的端口。所以,在交换环境下抓包不是一件容易的事。为了获得交换环境下的数据包,可以用下面方法解决:
(1)把交换机的一个“spanning port”(生成端口)配置成象一个集线器一样,通过这个端口的数据包不再与目的主机建立连接,而是广播式地发送给与此端口相连的所有机器。设置一个包捕获主机,便可以捕获到通过“spaning port”的数据包。但是,在同一时刻,交换机只能由一个端口被设置成“spanning port”,因此,不能同时捕获多台主机的数据包。
(2)在交换机之间,或路由器和交换机之间安装一个集线器。通过集线器的数据包便可以被捕获主机捕获。
在用捕获数据包获取攻击者的源地址的方法中,有两个问题需要注意:一是保证包捕获主机由足够的存储空间,因为如果在捕获数据包时网络吞吐量很大的话,硬盘很快会被填满;二是在分析数据包时,可编制一段小程序自动分析,手工分析这么多的数据是不可能的。
★ 搜索引擎----也许会有外的惊喜
利用搜索引擎获得网络攻击者的源地址,从理论上讲没有什么根据,但是它往往会收到意想不到的效果,给追踪工作带来意外惊喜。黑客们在Internet上往往有他们自己的虚拟社区,他们在那儿讨论网络攻击技术方法,同时炫耀自己的战果。因此,在那里经常会暴露他们攻击源的信息甚至他们的身份。
利用搜索引擎追踪网络攻击者的IP地址就是使用一些好的搜索引擎(如搜狐的搜索引擎)搜索网页,搜索关键词是攻击主机所在域名、IP地址或主机名,看是否有贴子是关于对上述关键词所代表的机器进行攻击的。虽然网络攻击者一般在发贴子时会使用伪造的源地址,但也有很多人在这时比较麻痹而使用了真实的源地址。因此,往往可以用这种方法意外地发现网络攻击者的踪迹。
由于不能保证网络中贴子源地址的真实性,所以,不加分析的使用可能会牵连到无辜的用户。然而,当与其方法结合起来使用时,使用搜索引擎还是非常有用的。