跳板攻击中如何追踪定位攻击者主机(上)
前段时间西北工业大学遭受NAS攻击事件中,TAO在针对西北工业大学的网络攻击行动中先后使用了54台跳板机和代理服务器,主要分布在日本、韩国、瑞典、波兰、乌克兰等17个国家,其中70%位于中国周边国家,如日本、韩国等。
同时,为了进一步掩盖跳板机和代理服务器与NSA之间的关联关系,NSA使用了美国Register公司的匿名保护服务,对相关域名、证书以及注册人等可溯源信息进行匿名化处理,无法通过公开渠道进行查询。
一、跳板攻击
那么究竟什么是跳板攻击,跳板攻击究竟是如何做到信息进行匿名化的?
跳板攻击是指攻击者利用多个“跳板主机”, 即通过控制多个主机转发攻击数据包。
攻击者事先控制多个跳板主机, 利用跳板转发攻击数据包。但是在受害主机端, 只能看到攻击数据包来自于最后一跳的主机, 而不能识别出真正的攻击者,所以跳板攻击的真正目的就是隐藏攻击者。而且跳板路径越长, 越难追踪攻击者。
二、跳板检测Step-stone Detection
对于跳板攻击,取证人员在检测到攻击数据包后, 其源IP地址是最后一跳“跳板主机”的IP地址, 那么在这种情况下如何追踪定位攻击者的主机?
在这一问题中, 由于在受害主机端可以观察到最后一跳的IP地址, 因此追踪问题就转化为如何沿着攻击路径上的跳板, 逐跳验证是否确实存在“跳板主机”。
我们首先要解决:跳板检测(Step-stone Detection), 即如何确定本地网络中存在攻击者的跳板?
假设网络安全人员完全控制本地网络, 能够对进出本地网络的网络流量进行监控。
若攻击者的跳板位于本地网络内, 由于跳板只是起一个攻击数据包转发的功能, 一般不会对攻击数据包进行修改, 因此进出网络的攻击数据包会具有相似性, 通过对进出网络的网络流量进行监控, 检测这种攻击数据包的相似性, 即可判断本地网络内是否存在跳板。
若攻击者的主机就位于本地网络内, 则在一定时间内, 攻击者会发出攻击数据包, 而不会有进入本地网络的攻击数据包, 因此也可以通过对进出网络的网络流量进行监控。
如发现只有出的攻击数据包而没有进入的网络数据包, 则可以判断攻击者主机位于本地网络内。
在跳板攻击检测中, 存在一个前提条件, 即进入的攻击流量和转发的流量间隔时间不能很长, 否则很难将入的流量和出的流量关联在一起。
这一间隔时间用攻击者的最大容忍时间来表示。如果间隔时间大于最大容忍时间, 例如攻击者向跳板发送命令后, 跳板不是立即转发攻击者的命令, 而是采用计划任务等方式, 让跳板在设定的时间再转发数据, 则在这种情况下现有的方法都将失效。
由于攻击者为了逃避检测, 可以将数据流量进行加密, 因此将情况分为流量未加密情况和加密的情况。
1) 数据包未加密
S.Staniford-Chen与L.Heberlein首次提出跳板检测问题。即使用数据包的明文内容的指纹来判断不同的数据包是否具有相同的内容, 从而建立流量间的关联。
2) 数据包加密
由于数据包进行了加密, 无法对数据包的内容进行检查, 因此主要思想是对数据流的特征进行检测, 如数据包的时序特征。
(1) 假设攻击者不会有意识改变数据包的特征
《 Detecing stepping stones》中首次提出基于数据包时序特征的检测方法。他们观察到在一个数据流中存在没有数据传输的时间间隔, 将这一时间间隔定义为“关”周期, 而在相似的数据流中, “关”周期的特征是相同的, 因此通过这一特征来关联入的流量和出的流量,但该方法要求连接是同步的。
《Finding a connection chain for tracing intruders》则定义了数据传输的平均延迟和最小延迟两个指标来识别数据流的模式, 通过这两个延迟时间计算两个数据流的偏离程度, 如偏离程度小于一定阀值, 则认为两个数据流具有较高的关联度。
文献《Inter-packet delay-based correlation for tracing encrypted connections through stepping stone》定义了一个滑动窗口, 计算滑动窗口内数据包之间的间隔时间, 根据数据包间隔时间的特征来进行关联。
《Mining and detecting connectionchains in network traffic》中测试了基于关联规则挖掘算法, 若“入”数据包和“出”数据包的时间差值小于预设的数值, 则将这两个数据包进行关联, 根据流中数据包关联的置信度和支持度。来判断“入”的数据流与“出”的数据流是否具有关联关系。
(2) 假设攻击者有意识改变数据包特征
① 攻击者改变数据包的时序特征
在《Multiscale stepping-stone detection: detecting pairs of jittered interactive streams by exploiting maximum tolerable delay》首次考虑攻击者可能会有意识改变数据包的时序特征, 但假设有一个攻击者的最大延迟容忍时间。它基于小波变换来检测流量的关联性。假设攻击者数据包的到达服从泊松分布或者帕累托分布, 进行了一些理论分析, 但没有给出需要捕获多少数据包才能以一定概率得到正确检测结果的分析。
《Robust correlation of encrypted attack traffic through stepping stones by manipulation of inter-packet delays》给出了一个基于水印的方法检测流量关联性, 在入流量中填加水印信息, 在出流量中检测是否存在水印信息, 但它假设攻击者数据包之间的时间间隔是独立同分布的。《a robust and invisible non-blind watermark for network flows》同样采用嵌入水印的思想, 通过记录入流量数据包的到达时间, 在一个初始延迟时间的基础上, 再增加或减小一个微小的时间来作为水印信号, 能够获得更好的鲁棒性。
《A signal processing perspective to stepping-stone detection》中假设攻击者随机延迟数据包, 跳板中继的数据包不能丢包、不能乱序、不能增加数据包, 不依赖于数据包大小, 给出了检测方法和理论分析。
该方法根据两个约束条件: 出的数据包时间大于入的数据包时间; 出的数据包时间减去入的数据包时间小于最大延迟容忍时间, 将入的数据包关联到出的数据包, 然后假设数据包的顺序不会发生变化, 降低算法的复杂度。
②攻击者增加额外的数据包
攻击者可以有意识的在中继后的数据流中插入额外的无用数据包,来破坏输入和输出数据流之间的关联关系。针对这种情况假设攻击者在一段时间内能够插入的多余数据包数目是有限的, 通过匹配输入与输出的数据包, 给出了可以抵抗增加多余数据包的跳板检测算法。
③攻击者同时改变时序特征和增加额外数据包
在《A signal processing perspective to stepping-stone detection》中Ting He, Lang Tong假设攻击者在跳板中同时增加数据包的随机延时和多余的数据包, 并假设这两种改变是统计独立的, 基于数据包匹配的方法给出了检测算法。
前述方法都是针对攻击者主机到受害者主机的流量通过跳板时的入流量与出流量的关联分析, 而《Stepping stone detection via request-response traffic analysis》文章中是将攻击者主机到受害者主机的流量通过跳板时的出流量与受害者主机回传给攻击者的流量通过跳板时的出流量进行关联, 定义前者的数据包数为 Send, 后者的数据包数为 Echo, 指出如果两个流量具有相关性, 则(Echo-Send)和(Echo+Send)具有线性关系, 而如果两个流量没有关系, 则不具有这种线性关系。
实验表明, 即使攻击者有意增加数据延时和增加多余数据包, 该方法也能检测出两个流量的相关性。
因此,如何确定本地网络中存在攻击者的跳板可以采取以下解决方案:
在跳板攻击中确定完本地网络中存在攻击者的跳板,那么接下来如何追踪定位攻击者主机?