由于目前 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 地址的数据帧,利用数据信号强度定位信号的来源方向,通过多个地点的测量,即可以定位出目标的物理位置。
该系统能够对三维空间进行定位,即使攻击者主机位于高楼中,测量地点在楼外,也可以定位出攻击者主机所在的楼层房间。