在野无状态扫描的综合研究

APT 2年前 (2022) admin
1,015 0 0

工作来源

USENIX Security 2022

工作背景

无状态扫描技术在不利用操作系统网络协议栈的情况下,发送手动构造的 TCP SYN 数据包,类如 Mirai。如果想知道比端口开放更多,需要二阶段扫描。

在野无状态扫描的综合研究

数据包包头值与常见操作系统的网络协议栈不同的,如 TTL 值不同,认为是非常规的数据包。常见操作系统对 TCP 的 TTL 会设置较低,但近年来 TTL 大于 200 的数据包越来越多,已经接近八成。

在野无状态扫描的综合研究

在世界上各地都是这样的,不是一个个体现象:

在野无状态扫描的综合研究

通过网络望远镜发现的 40% 以上的常规 SYN 数据包都集中在部分端口(443、3389、1433)上,而非常规 SYN 数据包会分散在各种服务的端口。

在所有非常规数据包中,有 5% 的 IP ID 设置为 54321,即 Zmap 使用的默认值。

在二阶段扫描中,如 SYN Cookie 等编码方案可以将响应数据包与初始探测匹配上,这样的扫描方式降低了对内存的要求,可以进行更大范围的扫描。Mirai 就是使用这种扫描方式的典型代表,而且非常规的 SYN 数据包与二阶段扫描通常与恶意行为有关。

最初 Mirai 发送的 TCP 数据包的序列号为目标 IP 地址,而不是随机的 32 位整数。此类数据包在 2016 年 9 月明显增加。

在野无状态扫描的综合研究

最初 Mirai 使用 64 作为固定的 TTL 值,后续的变种也使用了更高的 TTL 值。下图为常见的 Mirai 流量的 TTL 分布:

在野无状态扫描的综合研究

其他恶意软件则整合了 Mirai 的功能,但又去掉了相同的指纹。

存在以下三个特征之一就是非常规 SYN 数据包:
① TTL 大于 200 ② 没有 TCP 选项 ③ IP ID 为 54321

扫描数据包分类如下所示,使用 SYN-ACK 响应 SYN 数据包,远端主机可以静默不回复/回复 RST/回复 SYN-ACK/完成 TCP 握手。

在野无状态扫描的综合研究

下图显示了二阶段扫描在所有扫描的占比,大概有三分之一。

在野无状态扫描的综合研究

工作设计

整体逻辑如下所示:

在野无状态扫描的综合研究

其系统架构为:

在野无状态扫描的综合研究

Router 使用 libtrace 并行处理数据包,通过一致性哈希将数据包发送到分片池中,确保相同 IP 地址的数据包能够被路由到相同的分片。分片决定将哪些数据包转发给 Broker,Broker 连接到多个 Scamper 进程。Scamper 处理好后交由 Decoder 将确认的扫描写入硬盘,除了日志还包括数据包本身。

Spoki 对 TCP SYN 消息用 TCP SYN ACK 响应、对 ACK 消息用 RST 响应、忽略所有其他的 TCP 数据包。

网络望远镜只能用于被动测量,二阶段扫描不可见。设计 Spoki 响应接收到的 TCP SYN 包,诱发二阶段扫描。在根据源地址与时间范围关联,将无状态扫描与后续探测串联起来。与此同时,Spoki 会限制常规数据包和非常规数据包的速率,不会响应所有的数据。

第一阶段和第二阶段间隔的时间不能超过十分钟,必须保持响应的及时。首先实验观测如果五秒内不做出响应,会丢失 45% 的完整握手。其次避免产生异常被攻击者察觉。

工作准备

利用最大的 IPv4 网络望远镜,监听超过 1200 万的 IP 地址,峰值流量超过 83.4M/分钟。与位于美国、欧洲和大洋洲的网络望远镜、一个亚洲 ISP 和一个欧洲 IXP展开合作。

在 C++ Actor Framework 作为并发库的基础上,利用 C++ 编写了 Spoki,项目开源在 https://spoki.secnow.net/。

工作评估

功能性测试

功能性测试使用 Ubuntu 20.04.1 LTS 作为服务器,带有两个 AMD EPYC 7702 64 核处理器和 512GB 内存。

最大数据包速率为 1Mpps(UCSD 网络望远镜在 2021 年年初大约 800kpps TCP),各部分情况如下所示:

在野无状态扫描的综合研究

每秒能处理大约 25 万个数据包,峰值流量需要四个分片协同处理。实际上,在应对大流量时 I/O 压力极大,为分散 I/O 压力将一条消息发送给 Probing 一条消息发送给 Logging。这样单个分片处理能力达不到 25 万,总共需要再翻一倍达到八个。

Scamper 每秒可以处理 2 万次扫描请求,峰值流量需要部署 50 个 Scamper 实例进行处理。峰值流量下,基本上能达到响应速度为 0.08 毫秒。

大规模部署

  • 在美国使用的机器有 8 个核心和 16GB 的 RAM,程序的 CPU 使用率在 5% 到 15% 之间,需要约 2GB 虚拟内存。

  • 在欧洲使用的机器有 16 个核心和 32GB 的 RAM,程序的 CPU 使用率在 10% 到 20% 之间,需要约 2GB 虚拟内存。

为避免影响网络望远镜的流量变化,只在每个网络望远镜的一小部分上部署 Spoki。

排除了知名的扫描项目的流量,如(BinaryEdge、Censys、Kudelski、Rapid7、 security.ipip、Shadowserver 和 Shodan)以及用于测量研究类的 IP 地址,这样可以清理掉 1.21% 的二阶段扫描、3.44% 的非常规 SYN 数据包、8.43% 的常规 SYN 数据包。

第一阶段和第二阶段之间的时间延迟如下所示,75% 都会在不到一秒(美国)三秒(欧洲)返回。

在野无状态扫描的综合研究

扫描

从来源看,二阶段扫描在时间和特定端口上特别集中:

在野无状态扫描的综合研究

从目的看,也是具有清晰模式的:

在野无状态扫描的综合研究

一阶段扫描和二阶段扫描都会进行垂直扫描,但二阶段扫描更看重水平扫描。

访问次数最多的服务端口如下所示,大约有 30% 的二阶段扫描目标是 Telnet 服务。

在野无状态扫描的综合研究

在欧洲,15% 在扫描 1433 端口,攻击者在尝试攻击 SIMATIC 的漏洞。10% 在扫描 7547 端口,攻击者在尝试攻击 TR-069 漏洞。在美国,4567 端口比较受攻击者关注,这是 Verizon Actiontec 路由器 Web 服务的端口。

十六年来,二阶段扫描越来越多。

在野无状态扫描的综合研究

事件

以下是发现相关事件的情况:

在野无状态扫描的综合研究

  • 没有 ACK 的时候就投递的 Payload 竟然有相当的比例,可能是丢包了否则无法解释。

  • 大约 70% 的扫描在无 Payload 的情况下访问 23 端口,可能是通过 Telnet 协议抓取 Banner。

  • Payload 中 ASCII 占据主导地位,欧洲的 HEX 占比更多。

根据 NetAcuity Edge 的数据将源 IP 定位国家/地区。在欧洲,来自乌克兰和俄罗斯的扫描很多。而在美国,来自美国自己和中国台湾的扫描居多。

在野无状态扫描的综合研究

AS 的分类依靠 CAIDA 的 AS 分类数据,占比最高的是传输和访问服务提供商。

Payload

Spoki 在美国收集了 190905 个 Payload,在欧洲收集了 166035 个 Payload。其中,41% 和 38% 都是 ASCII 的。

下图描述了每个 Payload 长度的不同前缀的数量,在 12 个字节(GET / HTTP/)、31 个字节后(GET / HTTP/1.1rnHost:IP.AD.DR:PORT)明显产生了区别。

在野无状态扫描的综合研究

根据 Payload 中的共同点得到如下观察,最多的就是 HTTP GET 请求。

在野无状态扫描的综合研究

和 GreyNoise 等情报来源进行了交叉比较。URLhanus 重合 3% 的源地址、7.6% 的事件;MalwareWorld 重合 4.6% 的源地址、16.06% 的事件;BlockIP 重合 6.9% 的源地址、30.6% 的事件;DataPlane sshclient 重合 3.9% 的源地址、13.4% 的事件;DataPlane sipquery 重合 2.8% 的源地址、15.6% 的事件。GreyNoise 判定欧洲收集的 Payload 有 56% 是恶意的,美国收集的 Payload 有 70% 是恶意的。

Downloader

Downloader 下载的很多都是 arm7,在欧洲占到 44% 在美国占到 58%。之后是 mpsl、le.bot.arm7 和 viktor.mips。

按照 URL 下载文件,一小时内成功率略低于 50%,可能是配置陈旧。且 1% 的 URL 是错误的。在 2021 年的四个月内,下载了 12319 个可执行文件,哈希去重后存在 250 个文件。

文件中 70% 是 32 位 ELF 文件,67% MSB MIPS,26% LSB ARM,5% LSB MIPS,1% LSB Intel 80386。上传到 VirusTotal 中,18% 的样本是良性样本、65% 的样本是旧样本、17% 的样本是新样本。三分之二的样本被认为是木马,8% 被认为是 Downloader,且 58.8% 的被引擎标记为 Mirai。

全球视野

来自欧洲的网络望远镜数据中,前十个前缀中有六个与网络望远镜位于同一个 /16 块地址中。

在野无状态扫描的综合研究

在欧洲的 IXP 上观测,也仍然有很大比例是来自本地的扫描。但在亚洲的 ISP 上就没有发现类似的经验,这可能是仅存在于欧洲的现象。

在野无状态扫描的综合研究

工作思考

易受攻击的设备在互联网上暴露的话,几个小时之内就会被攻击者发现。对公网的暴露还是要慎重,收窄攻击面是很重要的,攻击者实际上很快就能够发现并且发起攻击。

在野无状态扫描的综合研究

近期斩获美国国防部 3000 万美元(约合 1.9 亿人民币)大单的 GreyNoise 就是深耕全球范围扫描与漏洞利用行为的监测,GreyNoise 认为通过对各种噪音的过滤可以将告警减少四分之一甚至更多,这样可以提高分析人员的效率并且能够更快地发现新兴威胁。

可以配置 IDS 规则来发现非常规 SYN 数据包的扫描:

pass tcp $HOME_NET any <- $EXTERNAL_NET any (msg:"IRREGULAR SYN"; flags:S,12; ttl:>199; tcp.hdr; bsize:20; xbits:set,ir_syn,track ip_pair,exipre 10;sid:1;)alert tcp $HOME_NET any <- $EXTERNAL_NET any (msg:"TWO PHASE SCANNER"; flags:S,12; ttl:<200; tcp.hdr; bsize:>20; xbits:isset,ir_syn,track ip_pair,sid:2;)

原文始发于微信公众号(威胁棱镜):在野无状态扫描的综合研究

版权声明:admin 发表于 2022年3月17日 上午9:00。
转载请注明:在野无状态扫描的综合研究 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...