由于目前NAT技术的大量使用,若攻击者主机位于NAT后面,使用私网IP地址,对于攻击源的追踪只能到攻击者的NAT网关,而无法穿透NAT网关。因此, 假设已知攻击者来自于某个 NAT网关保护的私有网络, 如何定位攻击者主机在私网中的位置?
这一问题在有线网络比较容易解决,因为NAT网关只进行IP地址和端口的转换,对数据包的内容和大部分头部信息并不进行修改,即使数据包的内容经过了加密。因此只要对公网的数据流和私网的数据流进行监控,根据IP头部中的信息,如序列号,就可以把公网数据流和私网数据流关联起来,从而知道攻击者的私网IP地址和mac地址。
《Source attribution for.NETwork address translated forensic captures》研究了经NAT地址转换的数据包来源识别问题,指出NAT服务器一般不会更改原IP数据包头中的序列号。对于windows系统, 数据流中的包头的序列号通过每次加1的方式进行增长,这可以用于判断来自同一台主机的数据包。而对于linux系统,由于采用序列号随机化的方式,前述特征无法用于Linux主机,但可以通过Http协议报头中的时戳、cookie等来判断。
《A layer-2 extension to hash-based IP traceback, IEICE Transactions Information and Systems》基于其它研究员的数据包记录的方法,提出了一种2层网络的攻击源追踪方法,即在已知离攻击者主机最近的路由器的情况下,在内网中确定攻击者的主机。
该方法通过在路由器上记录数据包的MAC地址、来自交换机的哪个端口、来自路由器的哪个端口,通过建立这些信息的摘要表,从而能快速识别出攻击者主机所在的子网。
而《IP traceback in a switched ethernet network》中的研究员认为上一个的方法在实际2层交换网络中部署困难。基于《Single packet IP traceback in AS-level partial deployment scenario》中的方法结合交换机中的审计记录,提出一种新的攻击溯源方法, 实现即使只有一个攻击数据包,也可以进行追踪。
在无线局域网中,这一问题就比较困难了,因为无线路由器不仅要进行IP地址的转换, 而且会对IP数据包,包括IP头部进行加密,如WPA算法,这样就无法通过内、外网数据流的观察来进行关联。
《Identifying mobiles hiding behind wireless routers》对这一问题进行了研究,利用数据包的大小在数据流中填加水印,从而对内、外网数据流进行关联。
具体来说,该方法是针对数据流从外网流入内网的攻击者主机的情况,在外网中能够控制相关的数据流, 选择一个作为水印的特征码,然后随机选择数据流中的多个数据包,用大小为700字节的数据包代表码元 0,1000字节的数据包代表码元1若选择的数据包超过所代表码元的数据包大小,则把该数据包按码元大小进行分组。
若小于,则重新选择下一个数据包。之所以选择这两个数据包字节大小,是因为经过对802.11数据帧进行统计,具有500—1000字节大小的数据帧很少, 可以避免误报。
这样在内网中检测数据流中所嵌入的特征码, 则可以将内、外网数据关联起来。
但这一方法不能用于从内网流出到外网的情况,例如在内网中的攻击者向外发动攻击的时候在外网发现攻击数据流,需要定位内网的主机位置,目前还未发现有相关文献对这个问题进行研究。
《Identifying mobiles hiding behind wireless routers,》中能够获得内网中攻击者主机的IP地址和MAC地址,但在大型公共场合的无线网络中,如机场、车站、宾馆, 如何定位攻击者主机的物理位置仍然是一个问题。
《3DLoc: three dimensional wireless localization toolkit》对此问题进行了研究, 假设已知攻击者主机的MAC地址, 设计了一套系统来定位目标的物理位置。该系统利用定向天线捕获无线数据帧, 识别出源MAC地址为目标MAC地址的数据帧,利用数据信号强度定位信号的来源方向,通过多个地点的测量,即可以定位出目标的物理位置。
该系统能够对三维空间进行定位,即使攻击者主机位于高楼中,测量地点在楼外,也可以定位出攻击者主机所在的楼层房间。