💡本篇文章是根据我在 22 年 6 月的 MESA 讨论班分享整理而成,文中图片皆由本人制作的 PPT 导出。

一、背景介绍

论文简介

本次分享的论文题目是《通过响应式网络望远镜揭开扫描器的新面纱》。

本篇论文发表在 USENIX Security 2022 中,一作是德国汉堡应用技术大学的博士生。

本文主要讨论大规模网络扫描中的无状态扫描,设计并实现了一个实时运行的响应式网络望远镜,检查互联网范围内的扫描流量,对异步的 TCP SYN 数据包做出回应,并参与两阶段扫描第二阶段发起的 TCP 握手。

本工作在全球范围内部署 Spoki 进行了一系列的测量,结果表明如今的扫描器具有明确的特征:高度的针对性;不同观测地区的扫描活动明显不同;很大一部分来自恶意来源。

作者信息

本文一作是 Raphael Hiesgen,来自德国汉堡应用技术大学 inet 团队。

二作是Marcin Nawrocki,来自柏林自由大学 ilab 团队。

右边的 Matthias Wählisch 是他们两个的导师,柏林自由大学 ilab 组的组长。

背景知识

如今互联网正遭受不断的攻击,主机扫描(host scanning)对于发现脆弱服务、创建僵尸网络和发起网络攻击十分重要。

传统的扫描器使用 OS 的 TCP/IP 协议栈收发包,新发展的无状态扫描技术为了提高扫描速度,不利用 OS 的 TCP/IP 协议栈,如左下图所示,无状态扫描器第一阶段发送手工构造的 TCP SYN 数据包检测目标是否可用,如果可用,再使用 OS 的 TCP/IP 协议栈发送真实的握手包进行进一步操作。

因为可以分为两个阶段,所以这种无状态扫描技术的应用也可以称为两阶段扫描器

无状态扫描技术最早在 2002 年的 scanrand 中得以使用,随后还出现于 unicorn、masscan、zmap 等,去年 USENIX Security 的 LZR 也是使用了这种技术。

因此,可以看出无状态扫描技术是在不断发展的。

另外,在攻击 IoT 设备的 Mirai 僵尸网络的复制模块中,也是用了这种无状态的扫描技术。右下图是 Mirai 僵尸网络复制模块的原理,① 过程扫描整个互联网来寻找可用的目标并发起攻击,实际上就进行了两阶段的扫描。

本研究很重要的一部分工作就是开发了一个网络望远镜,并将其部署测量。那么在介绍系统之前,先来介绍一些网络望远镜的概念。

首先路由分配的 IP 地址中,一部分 IP 地址是不运行任何服务的,这个部分 IP 地址空间称为 darknet

网络望远镜可以收集并记录 darknet 流量。如下图所示,网络望远镜可部署在一些路由或交换中心比如 IXP 上,指定一个 IP 地址前缀,监听该 IP 地址空间的网络流量。

监听的一部分 IP 地址空间没有主机,所以一般是不会有网络来请求这些 IP 的,不过仍能发现一些恶意的请求,恶意请求中,两种类型最为明显。

一种是扫描流量,因为扫描器一般是指定一段 IP 范围,扫描主机或端口是否可用;另一种是backscatter 通信,攻击者试图通过随机选择一个与他们真实身份不同的 IP 来掩盖他们的身份,然后,他们使用伪造的源 IP 向受害者 IP 传输大量的流量。如果伪造的 IP 恰好属于网络望远镜监控的黑暗 IP 空间,那么受害者对该 IP 的响应将到达 darknet。

以上这些恶意的流量大多为 TCP SYN 流量,在两阶段扫描器的扫描过程中,这些 TCP SYN 数据包是手工构造的,所以跟基于 OS TCP/IP 协议栈传输的数据包不太一样。

作者通过对一台亚洲的ISP和一台欧洲的IXP的流量,以及一些现有网络望远镜的流量进行分析,挖掘异常TCP SYN流量的特征。

第一个特征是异常TCP SYN数据包的TTL值过高,右上角的这张图是网络望远镜中13到20年TTL大于200的数据包的占比,可以看出七年来急剧上升的趋势,目前达到了80%。

第二个特征是这些TTL大于200的数据包大多缺少 TCP options,而且其中5%的TCP的IP ID为固定值54321,这个是Zmap的特征,之前的《网络扫描探测工具的分析与识别》这篇文章中也发现并讨论过这个特征。

作者把它们仨做为判定异常TCP SYN流量的特征,下图是TTL大于200和无TCP options在网络望远镜以及IXP、ISP中的比例,可以看出占比还是很高的。

二、Spoki

设计与实现

根据上面我们对两阶段扫描器及异常TCP SYN流量的分析,可以设计如下图所示的决策树。

接收到的SYN数据包可以分为常规和非常规SYN。在这两种情况下,我们都用SYN-ACK回复,远程主机要么忽略我们的回复,要么用RST回复,要么用ACK完成TCP握手。

对于两阶段扫描器来说,不久后在第二阶段用一个规则SYN到达相同的IP地址和端口,我们同样回复ACK。一旦第二阶段的握手完成,我们就收集payloads,并在短暂的延迟后重置连接。

下面是spoki的系统架构,主要分为五个组件。

  • Router基于libtrace并行捕获数据包,并提取流信息和payload,然后将数据包转发到shard组件上,这里的路由策略是ip hash,使同一个ip发送的数据包总是转发到同一个shard上。
  • Shard实现了上述提到的决策树,决定如何回复并将数据转发broker。
  • Broker基于scamper构建并发送消息。
  • Collector和Decoder分别记录接收到的数据包和发送的消息。

性能评估

因为spoki需要监听很多IP地址空间,并且需要快速回复TCP的请求,所以需要考虑可扩展性(Scalable)。

这里对spoki进行了性能评估,在最高发包速率为1Mpps的情况下,每个组件的数量是多少。

本实验证明了spoki可以部署在最大的IPv4网络望远镜上,监听超过1200万个IP地址,流量峰值达83.4M/min。

三、测量工作

接下来作者部署了4个spoki,3个位于欧洲,1个位于美国,进行了三大类的测量工作。

两阶段扫描器的特点

首先是分析两阶段扫描器的特点。分析前1万个端口的流量,每天大概有1万个不同的信号源扫描,单阶段扫描器端口覆盖广,两阶段扫描器端口非常集中。

第二个图将源地址换为目的地址进行测量,显示网络中每个端口和每天被扫描的主机数量,两阶段扫描器的扫描模式清晰可见,单阶段扫描器仍然分散。

由此可见,两阶段扫描器和一阶段扫描器都进行垂直扫描,但两阶段扫描器更专注于水平扫描,更具有针对性

然后分析两阶段扫描器的交互类型,大体可以分为以下三种目的。

  • 查看服务公告
  • 发送 Payload 探测端口背后的服务类型
  • 发送 Payload 对系统进行攻击

下表列出了收到的两阶段事件的数量,以及在第二阶段收到ACK或 Payload 的两阶段事件的份额。Payload按类型进一步区分。可解码的ASCII数据,我们以HEX形式存储的二进制数据,以及包含下载器的ASCII Payload。

可以看到图中两阶段扫描中没有ACK的占比较大,可以推测是无状态扫描检测端口关闭,且这部分中端口分布是很广泛的,也符合我们的推测;另一个可能是存在一定的丢包,不过这个占比不会很高。

Downloader 在美国更常见,偏爱80、8089、8080、60001端口,这些端口常用作物联网设备的web服务器。

HEX在欧盟主要分布在1433(MS SQL)和445(active directory/SMB)端口,在美国主要分布在5555(ADB)和443(HTTPS)端口。

下表左侧列出了观察到的两阶段扫描器来源在各国家的占比,值得注意的是,乌克兰和波兰在欧盟占很大份额,台湾是美国两阶段扫描器的主要来源。

作者研究了4~6月流量占比的变化过程。美国的网络望远镜,4月的数据与下表类似,5月台湾的占比达到14.5%,超过美国;欧洲的网络望远镜,4月最大份额是乌克兰,其次是中国和美国,来自俄罗斯和波兰的流量在这几个月明显增加,来自台湾的流量占比在5月也达到高峰。

下表右侧列出了每个观测点前五个AS的类型和国家,基本是跨境和接入供应商(70%),欧洲有两个位于波兰和俄罗斯的企业,美国只有一个托管供应商Digital Ocean位于前五。

详细检查跨境/接入AS,是属于住宅中断主机还是服务器的基础设施。可以得出结论,云端的两阶段扫描器并不流行,攻击者倾向于渗透到终端主机并创建一个P2P僵尸网络

传输 Payload

下面对传输的Payload进行分析,首先根据payload评估扫描的恶意程度

如下表所示,欧洲有15万个POST事件,美国有600个,这些流量与Realtek的UPnP漏洞有关,可能导致代码注入;另外两个频繁的是Debugging port和Hardcoded auth,与嵌入式中的设备漏洞有关。

欧洲两阶段扫描器主要攻击1433端口(Microsoft SQL/SIMATIC),在美国分布在443和5555之间(TLS和ADB)。

将源IP与GN封锁名单和数据进行比对,GN将56%(欧洲)和70%(美国)的两阶段扫描器Payload归为恶意的。

总之,对Payload和数据源的分析,在两阶段扫描器中,恶意行为者占据相当显著的份额

在 Payload 中,将含有curl或wget的称为Downloader,对其URL的最后一个路径提取出一个name。

经过分析,最常见的是arm,其余有mpsl和le.bot.arm7(暗示僵尸网络)等。

对Downloader中的可执行文件进行分析,其中70%是32位的ELF二进制文件,14.8%为shell脚本,以及大多标题中带有疑似网络钓鱼警告的HTML文件。

使用VirusTotal对这些二进制文件进行分类,只有18%被标记为良性

此外,数据是从2021年2月至3月和8月至9月收集的。第一个时期塞尔维亚占65%,其次是印度(21%)和中国(4.8%),第二个时期塞尔维亚消失了,中国占69%,印度下降到11.3%。

这种高度不稳定性可能标志着感染从一个地区转移到了另一个地区

本地性

最后分析一下两阶段扫描的本地性。作者统计了最活跃的10个前缀中,本地的两阶段扫描的占比,可以看出本地的扫描占有相当大的份额

四、论文总结

主要贡献

最后来总结一下,为了提高效率,现在大多的扫描探测行为都是两阶段的了,先测活,再深入探测,本文也是定义并系统探讨了这种新式扫描模式。

作者开发的工具 Spoki,本质是一个网络望远镜,这东西国内几乎找不到什么资料,国外用得似乎多一些。但是网络望远镜是被动的收集流量的,这里的创新点,所谓“响应式”,就是欺骗两阶段扫描器,获取第二阶段的指纹信息。但跟蜜罐又不相同,没有模拟完整的服务或协议栈,作者也将其视为网络望远镜与蜜罐之间的一个工具,代码开源在 GitHub

测量部分做了很多工作和分析,但大致可以对两阶段扫描分析出三个特点。

  • 较强的针对性
  • 很大一部分来自恶意来源
  • 不同观测地区的扫描活动明显不同

我介绍的不是很详细,感兴趣可以去翻原文。

展望

我之前是做扫描器分类的,调研后发现近5年相关文章真的很少,而且发表的期刊/会议也不太好,突然在今年的USENIX Security发现这篇,是特别惊喜的。

但 Spoki 并不是租台云服务器部署一下就可以了,作者也貌似是跟运营商有合作,所以复现起来难度较高。

作者提到的三点展望,我对前两点还是蛮有兴趣的,没准会成为我的硕士题目。我也会尝试跑一下开源代码,关注一下相关工作,希望能做出些好的成果。