NISL-lab 实习——文献阅读
机缘巧合,获得 NISL 实验室威胁情报分析方向的实习机会,起步阶段当然是一些论文的阅读和复现,现在此做笔记备份。
[RAID’14] Paint It Black: Evaluating the Effectiveness of Malware Blacklists
- 研究目的:对黑名单中的恶意域名和 IP 进行分类以发掘它们的特征
- 工作内容:
- 提出一种机制识别应当被列入黑名单的域名
- 识别黑名单中的黑洞(安全组织控制的服务器,其中管理了大量恶意域名)
- 评估黑名单对恶意域名的覆盖率,从而评估黑名单的有效性
总数据集
$S_{C&C}$: 与 C&C 服务器(命令和控制服务器)相关的域名(扩展为解析到的 IP)
$S_{Mal}$: 在任意黑名单中出现过的所有 IP 地址
$S_{IPs}$: 当前所有黑名单中列出的所有 IP 地址
托管域名(广告)的识别
- 初始数据集的构建
- 模式识别和人工检查标记 parking NS 和相关厂商,分析域名重定向链确定重定向到的页面的 14 种模式。
- 依据这些数据,抽离出托管域名 http 响应中可能包含的 47 个描述性字符串;收集 5000 个触发字符串匹配的域名作为托管域名数据集。
- 特征选取和分类
- HTTP-based feature
- 存在重定向时,良性域名通常重定向到通用 www 子域
- 托管域倾向在本身或其子域上提供相似的内容
- HTML-based feature
- 托管域显示的文本内容比例极小
- 托管域 JavaScript 代码比例较高
- 托管域
<frame>
标签的数量相对较多 - 托管域
<anchor>
标签较长 - 托管域在
<meta>
标签中robots
属性取值为index + nofollow
或index + follow
或index + follow + all
- 识别方法:support vector machines (SVMs) using the Anova kernel
- HTTP-based feature
- 评估和验证
- 标记数据集交叉验证
- 真实数据集验证,后手动验证可能存在的错误分类
- 确定了识别模型假阳性率和假阴性率
黑洞的识别
- 过滤与黑洞行为相似(多个域名解析到一个 IP)的 IP
- IP 对应的多个域提供内容相似度不高,可过滤
- 错误被列入黑名单的良性域名,可过滤
- Fast Flux 域名,可过滤
- 观测时间内,域名被前后解析为多个 IP(> 5)
- 这些 IP 中至少一半集中在两周内出现
- 识别——图算法
- 对于 $S_{C&C}$ 和 $S_{Mal}$ 分别建图
- 域名 和 IP 为顶点,解析和重定向关系(both current and history)为边
- 黑洞 IP 的入度会比平均入度高很多,而出度则相反,故可以取二者之比作为衡量参数(比例越高,是黑洞 IP 的概率也越高)
- 其他附加条件:
- 必须响应 ICMP Echo 或 HTTP 请求
- 能解析到该 IP 的域高于给定阈值
- 关联的域使用同一名称系统
- 相邻节点为黑洞 IP 的数量大于 1 的顶点为潜在黑洞
- 评估和验证
- 在 $S_{C&C}$ 和 $S_{Mal}$ 集合上分别验证
黑名单效用评估
- 分类:大部分的域名要么不存在,要么为托管域名,要么与黑洞有关,少部分无法被分类
- 完备性的上限:利用动态恶意软件分析平台获取多个恶意软件家族的域名集合,大部分恶意域名家族被公共黑名单覆盖的比例较低,而反病毒软件供应商提供的黑名单表现较好
黑名单反应时间下限
基于随机生成算法的域名识别
- 难点:域名有效期短,活跃度低
- 反应时间成为黑名单能否收录此类域名的重要因素
- 大部分黑名单都还没有激发收录 DGA 域名的潜力
[USENIX Securiryt’22] Building an Open, Robust, and Stable Voting-Based Domain Top List (secrank)
- 研究目的:当前域名排名列表构建方法存在缺乏透明度,易受操纵,波动性强的缺陷
- 工作内容:从零开始的域名排名系统开发
- 研究不同的排名列表构建所考虑的因素
- 产生基于投票的域名排名方法
- 评估该方法的稳定性和抗操纵性
现有域名排名列表
- 现有域名排名缺乏透明度(数据源 & 排名方法)
- 现有域名排名易被操纵
- Tranco 抵御操纵的方法是依赖现有的多个排名,没有从根源上解决
- 通过 Alexa 的认证服务,伪造虚假访问,获得高排名
- Alexa 统计极其偏向已认证的域名
- Umbrella 对于某一域名,关注发起 DNS 请求的地址的数量,而不仅仅是关注总的 DNS 请求量
域名排名的衡量属性
- 透明度(数据 & 算法)
- 一致性(时间维度上建设方法保持一致,更改需通知)
- 操纵抗性(减少有限资源攻击的影响)
- 排名稳定性
构建域名排名
- 考虑因素:
- 某域名相关的总查找量
- 发起与某域名相关的查找的 IP 多样性
- PDNS 数据集,监控 5M 个 IP 每日的 DNS 请求
- 可能存在地域导致的数据偏见
- 客户端 DNS 缓存无法被监测到
- 基于投票的域名排名
- 针对 IP 的域名参数
- 请求量
- 请求活跃时段
- IP 的域偏好综合指标:上面二者规范化后的几何平均
- IP 贡献赋权
- 根据 IP 请求的 SLD 数量衡量 IP 的域多样性
- 对于某一 IP,选取其请求的所有域名的总请求量作为权重依据
- IP 的权重:上面二者归一化后的几何平均 ($^{m+n}\sqrt{a^nb^m}$)
- 跨 IP 投票
- 投票的三个规定
- 投票允许多选
- 避免采取打分制的投票形式
- 避免多轮投票
- 投票的四个方案
- Approval: 每个域名的得票数为选择该域名的 IP(选民)权重之和(无法表达域偏好)
- Borda: 选民对域名(数量不超过阈值)进行排序,在该选民下,域名得分为排在其后的域名数量
- DowDall: Borda 的变体,该选民下,排名第 $i$ 得 $1/i$ 分
- Bucklin: 依据位次依次选取在该位置上的多数(与 Approval 类似,省略)
- 投票的三个规定
- 针对 IP 的域名参数
方案评估
- 时间成本:计算 IP 的域偏好指标 > 计算 IP 权值 > 投票
- 投票方法:阈值越高的 Borda 投票效果越趋向于 Approval,阈值越小则限制 IP 对域偏好的表达,抗操纵性差;统计分析的阈值取 1k
- 抗操纵性:
- 攻击手段
- 域偏好增强:向目标域发送大量请求
- 地址权重提升:向许多其他域发送请求
- IP 加权既提高了对低资源攻击的操纵抗性,又提高了高资源攻击的成功上限
- 投票方法的选择:Borda 的抗操纵性优于 DowDall,Borda_1k 的 抗操纵性优于Borda_100 和 Borda_10,稳定性优于 Borda_full
- IP 的域偏好使攻击者不得不长时间投入高资源的访问使目标域名获得较高的偏好排名
- 与 A, U, T List 相比均具有优良的抗操纵性
- 攻击手段
- 稳定性:
- 量化:第一天在列表上的域名占第二天列表域名的比例
- Borda_1k 稳定性较优
- 与 A, U, T List 相比均具有优良的稳定性
- 列表特征:顶级域名的覆盖率科学,低级域名统计效果显著
名词标注:
- CDF:累积分布函数(Cumulative Distribution Function)
- SLD:二级域名(Second-Level Domain)”example.com”中的”example”就是二级域名
- FQDN:全限定域名(Fully Qualified Domain Name)全限定域名是一个完整的域名,包括主机名和域名后缀
[RAID’22] Encrypted Malware Traffic Detection via Graph-based Network Analysis
时空特征
- 恶意软件感染的常见特征
- 空间特征: 指的是主机和目标服务器之间的集中属性,特别是在家族内部。如前所述,由于框架的重复使用,同一家族内的一些恶意软件表现出高度相似性,反映在它们试图连接的目标服务器上。
- 连接的时间特征: 主机在一段时间内的连接顺序可以帮助我们重建恶意软件的感染过程,这可以清楚地显示随阶段的变化。此外,由于固定参数的设置,感染主机与控制服务器之间的通信是规律的,特别是数据包长度和数据包间隔时间。
ST-Graph
首先构建了一个异构图,将主机和服务器之间的所有网络连接相关联。基于图结构,应用随机游走生成每个流的相应连接列表,并使用概率模型优化边表示。
图的建立
- 主机-服务器二分图 𝐺 = (𝐻, 𝐷, 𝐸, 𝑆, 𝐼)
- 𝐻 表示内部主机的顶点集,每个主机由其IP表示为唯一标识符
- 𝐷 外部服务器顶点集,由其域名(域名不可用时,使用IP地址)初始化
- 𝐸 = {𝑒 | 𝑒 = (ℎ𝑒, 𝑑𝑒), ℎ𝑒 ∈ 𝐻, 𝑑𝑒 ∈ 𝐷} 边集来表示主机和服务器之间的所有连接(即流)
- 𝐼 = {𝑖𝑒 | 𝑒 ∈ 𝐸} 表示每个边的时态特征,𝑖𝑒 表示由其主机 ℎ𝑒 连接的边 𝑒 的顺序
- 𝑆 = {𝑠𝑒 | 𝑒 ∈ 𝐸} 表示从流中提取的属性
- 内部主机提取的 TLS 握手特征(TLS版本、提供的密码套件和扩展的列表)
- 从外部节点提取的域名特征(域名的字符串特征)
- 流的侧信道统计特征(流内发送和接收的数据包的数量、长度或时间间隔)
边的嵌入
从起始边 𝑜 开始,我们进行最多 𝑃𝐿 步的随机游走,重复 𝑃𝑁 次,以收集一组边 N𝑜。然后,通过最大化 N𝑜 中边的相似性来优化 𝑜 的时空嵌入
- 区间倾斜随机游走
- 从边 𝑜 开始,我们定义选择 𝑜 的邻居中的某条边 𝑥 作为下一步游走的概率公式:
[ Pr(𝑤1 = 𝑥 |𝑤0 = 𝑜) = \frac{1}{\text{𝑑 (𝑜,𝑥)}} \Bigg/ \sum_{𝑦 \in 𝐶𝑜} \frac{1}{\text{𝑑 (𝑦,𝑜)}} ]
倾向于选择与当前游走具有最小连接顺序距离的边作为下一步(倾向连续游走短时间间隔内的流)。 - 下面的游走中,每次选择都基于前两步
[ Pr(𝑤𝑖+1 = 𝑥 |𝑤𝑖 = 𝑣, 𝑤𝑖−1 = 𝑢) = \frac{\alpha_{𝑢,𝑥}}{\text{𝑑 (𝑣,𝑥)}} \Bigg/ \sum_{𝑡∈𝐶𝑣} \frac{\alpha_{𝑢,𝑡}}{\text{𝑑 (𝑣,𝑡)}} ]
当 𝑥 = 𝑢 时,𝛼𝑢,𝑥 取值为 ( \frac{1}{p} ) ;当 𝑥 是 𝑢 的邻居之一时,𝛼𝑢,𝑥 设为 1;否则,( \alpha_{𝑢,𝑥} = \frac{1}{q} )
如果 ( q < 1 ),行走者倾向于访问全局节点(DFS);如果 ( q > 1 ),行走者倾向于访问局部节点(BFS),从而增强周围邻居的覆盖范围。 - 对于每个边 𝑒,我们通过 𝑃𝑁 次随机漫步生成一个网络邻域 ( N𝑒 )。
- 为每个边建立一个向量 ( 𝑟𝑒 ),并通过其网络邻域 ( N𝑒 ) 中的相似性对向量进行优化。
- 对边之间的相关性进行建模,定义每条边的邻域概率,优化全局邻域概率
- 将流特征 𝑠𝑒 和向量 𝑟𝑒 进行归一化作为边的值
- 从边 𝑜 开始,我们定义选择 𝑜 的邻居中的某条边 𝑥 作为下一步游走的概率公式:
[NDSS’20] BLAG: Improving the Accuracy of Blacklists
- 研究目的:改进现有黑名单可能存在的过度专业化、分类错误、信息陈旧导致的不理想的准确性问题
- 工作内容:构建黑名单聚合器 BLAG,对多个黑名单数据进行智能聚合,为客户网络生成定制黑名单
- 对 157 个不同攻击类型的黑名单进行聚合(包括历史),并进行评分
- 构建推荐系统,针对客户,将可能导致合法源误报的项剔除
- 通过打分的方式,选择性地扩展黑名单到 IP 的 24 位前缀
黑名单的分类
- 垃圾邮件黑名单
- 恶意软件黑名单
- 攻击行为黑名单
- 信誉黑名单
当前黑名单的局限性
- 专注于对某一恶意行为集合的检测(一个域名可能在不同时段存在多种恶意行为)
- 单个黑名单的数据覆盖范围有限
- 是给定时间内恶意来源的快照(可通过休眠来规避检测)
- 黑名单历史域名再犯现象频繁
- 盲目对某些 IP 前缀进行恶意标记(极大增加了合法域名的错误分类几率)
- 过时的信息可能导致分类错误
BLAG 的设计
概述:从多个黑名单获取历史记录,当黑名单更新时,BLAG 数据库同步更新;向用户网络发送流量来将合法来源剔除黑名单,从而为用户定制黑名单
数据集合
- B: BLAG 数据库,从多个黑名单获取的历史记录
- A: 向用户发送流量的所有源
- D: 被丢弃或隔离的流量源
- $L_{tr} = A - D$
- F: 不在 $L_{tr}$ 中但也可能是合法的源
BLAG 的运行
- 评估 B 中每个黑名单上每个地址的相关性
- 使用 $L_{tr}$ 中的地址构建推荐系统,构建 F 集合
- 基于 F, $L_{tr}$ 使用基于阈值的方式为用户剔除黑名单中的一些地址
- 基于 F, $L_{tr}$ 选择性地扩展地址到 24 位前缀
相关性评分
- 依据再犯特性和记录不同恶意行为的黑名单重叠进行评分
$r_{a,b} = 2^{l/(t-t_{out})}$- l: 常量
- a: 具体地址
- b: 所属的黑名单
- t: 计算分数所在的时间点
- $t_{out}$: 地址最近一次被移出黑名单的时间点
- 若地址在黑名单中,则 $r_{a,b} = 1$
- 依据再犯特性和记录不同恶意行为的黑名单重叠进行评分
推荐系统构建
- 在 $r_{a,b}$ 矩阵右侧增加一列 MB,其中域名在 $L_{tr}$ 的值置为 1,其余值设为未知
- 使用协同过滤:对矩阵进行分解,得到 IP 和潜在特征的关联强度矩阵、黑名单和潜在特征的关联强度矩阵
- 将这两个矩阵相乘得到的新矩阵,则未知的值会被填充
- 在 MB 列获得较高分数的域名可能是需要被从黑名单中剔除的
选择性扩展
- 构建黑名单候选项的 IP 的前 24 位集合,从中剔除包含 MB 列中得分较高的部分前缀
数据集
- 黑名单数据集:157 个公开的黑名单在 2016.01~2016.11 之间的历史数据
- 场景数据集(每个场景包括训练、验证、测试)
- 恶意邮件或垃圾邮件
- 从用户不想接受的邮件集合中,索引到发送的 IP
- 网络上的 DDoS 攻击
- Mirai 感染主机的 IP 地址
- DNS 根节点上的 DDoS 攻击
- 获取针对 DNS 根节点的 TCP SYN flood 攻击的来源
- 恶意邮件或垃圾邮件
- 限制性
- 只使用了免费提供的公开黑名单
- 场景数据集受到一些限制
- 只捕获在给定时间点在Internet上活跃的合法/恶意IP地址的一小部分样本
- 较为过时(2016)
- 缺少关于 $DDoS_{DNS}$ 的可靠数据集(攻击被观测到的时间过短)
评估
- 指标
- Recall: 被收录进入黑名单的恶意域名占总恶意域名集合的百分比
- Specificity:未被收录进入黑名单的良性域名占总良性域名集合的百分比
- BLAG 设法大大提高了公共黑名单的性能,并降低了对合法域名的影响,对恶意域名的反应时间也更快
敏感性分析
- 选择性扩展
- BLAG 的扩展方法能否提高其他黑名单的性能
- 不同的前缀扩展方法
[NDSS’23] DOITRUST: Dissecting On-chain Compromised Internet Domains via Graph Learning
- compromised:缺乏抵抗力的,本文中指一个良性域名的页面上有链接到恶意域名的外链接
- 研究目的:探索良性网页如何被入侵,最终链接到恶意源;从允许节点到妥协目标,沿着整个链识别和过滤隐形的可疑节点
- 工作内容:
- 构建网络域名图数据集;提出链上妥协;揭示了链上妥协的内容隐蔽性和拓扑隐蔽性
- 提出集成方案,利用单个节点特征和网络特征,解决隐蔽性导致的信息匮乏的问题
- 提出一种新的节点排序的方法
- 针对大型图提出图学习方案,将全局传播和局部预测模型的训练分离
- 评估了 DOITRUST 将客观恶意节点分类为可疑节点的性能
预处理
- 选取 56805 个可信域名,依据其页面上显示的 url 进行图的扩展,将关联图扩展到 170 万个结点,其中 178 个为恶意节点
- 将 web 建模为 G(V, E),目的是对每个节点依据节点特征或网络拓扑结构进行置信度分析,衡量其是恶意域名的可能性
设计概览
- 可疑预测
- 个体特征提取(html, url 的特征)
- 局部预测(针对每个节点)
- 个性化可疑度排序(Personal PageRank –> Personal IncredulityRank,将其能链接到的子节点的可疑程度也纳入考虑)
- 全局传播(基于 PIR 的训练时合并,推理时合并,端到端合并,无合并)
- 入侵修剪和预警
个体特征提取和预测
- 直接从URL和HTML中提取:
- 统计特征
- HTML标签数量
- iframes数量
- script标签数量
- href标签数量
- URL中的特殊字符
- URL中是否存在IP地址或重定向
- 词法特征
- 构建了一个 token 字典,由从 10K 个恶意的网页中总结恶意性的单词或符号,选择 2400 个最频繁的 token
- 频率分布矩阵:每个HTML文档是一行,每个恶意性的token是一个列,对应的值是该单词在 html 中的频率
- 统计特征
- 局部预测
- 有了嵌入节点特征向量,局部节点预测可以简化为二值分类任务。采用全连接网络(FCN)对节点域进行分类
可疑性排名
- 直观的:如果一个页面有到恶意的域的外链接,那么它很可能是 compromised 的节点。距离被拒绝的页面的距离越短,一个页面是 compromised 节点的置信度就越高
- 形式上:,如果页面节点 v 的怀疑分数为 cv,并且它有 in(v) 个传入页面,则每个传入页面将从节点 v 获得分数分数 cv/in(v)
- 折扣因子:远离恶意节点的步长来分割和抑制怀疑分数
- 页面的不可置信等级分数则是通过其外链接收的分数分数的总和,并乘以折扣因子,归一化
Personal IncredulityRank 的近似
- 扩充初始非零 PIR 节点的数量:找到图中从种子到恶意节点的所有可疑路径(最短路径),然后根据公式2初始化可疑路径上的PIR值
- PIR 矩阵,(u,q) 位置的值表示 u 收到的 q 的贡献分数
- 有效的近似:通过选择 PIR 矩阵的 top-k 元素并将其余元素截断为零
全局传播和实时推理
Compromised 剪枝
- 删除良性域名到恶意域名最短路径上的节点(隔离可疑域的集群);最后将图中不可达的结点删除
- 基于流的剪枝:计算域的流,它被定义为从良性节点到每个恶意域通过给定域的最短路径数。较高的流量意味着更多通往被拒绝域的路径在图中通过该节点,我们在每次迭代中找到流量最高的最深的节点,并将其从图中删除;最后将图中不可达的结点删除
A Survey on Malicious Domains Detection through DNS data
数据获取
- 数据来源:
- Host-Resolver: 可以获取域名解析器的内部接口,而其提供了可能直接与特定恶意行为相关的用户请求和响应的细节信息。
- DNS-DNS: 流量数据获取——授权域名服务器,解析器的外部接口。
- 获取方法:
- Active DNS: 采集者有意发送DNS请求并记录相应的应答
- Passive DNS: 在DNS服务器部署相应的数据获取检测器
数据扩充
- 地理位置信息
- 自治系统号
- 注册记录
- 黑/白名单
- 关联资源记录
- 网络、通信数据
域名标记
- 一种域名可能在一个场景下成为恶意域名,但是在分析另一种场景时,它很可能就不属于恶意的了,所以要对具体的恶意行为进行区分
- 黑名单可能来源于不同的数据获取方式,因此并不是完全可信的
- 恶意域名的子域名也是恶意域名吗?
- 子域名中的大多数都是恶意域名的域名也是恶意域名吗?
算法设计
- 特征
- 内部特征和上下文特征
- 数据依赖性特征和数据独立性特征
- 单一域名特征和多域名特征
- 检测方法
- 基于知识总结的方法
- 基于机器学习的方法
- 半监督学习算法(基于图的推断方法和聚类方法)
[SP’22] SHADEWATCHER: Recommendation-guided Cyber Threat Analysis using System Audit Records
- 研究目的:在审计记录上应用数据起源分析,以搜索异常(异常行为)或已知攻击的规范来应对高级攻击的方法具有局限性(假警报,粗粒度,依赖专家知识);该项目将系统实体交互的安全概念映射到用户-项目交互的推荐概念,通过预测系统实体对其交互实体的偏好来识别网络威胁
- 工作内容:
- 利用上下文信息作为潜在的边信息来分析系统实体,具有相似上下文的系统实体将在语义上相关(系统实体交互和实体上下文信息的网络安全概念映射到用户-项目交互和项目边信息的推荐概念,但威胁检测的目标是系统实体不太可能偏好的交互)
- 提出 SHADEWATCHER,不是将历史频率作为估计怀疑程度的度量,而是推断系统实体的内在语义以发现异常交互
- 部署 SHADEWATCHER,并对现实生活和模拟攻击场景进行系统评估
基本定义
- 审计记录:三元组(src, rel, dst),其中src, dst ∈ E = {进程,文件,套接字},rel ∈ R = {克隆,写入,…}
- 溯源图:(src, rel, dst) 形成的有向无环图
- 知识图(KG):实体和实体间有效交互形成的图
问题重述
- 目标:是训练一个推荐模型,其目标是预测系统实体 h 不会与另一个实体 t 交互的概率$y_{ht}$
- 针对威胁:操纵或窃取系统中存在的信息的攻击者
SHADEWATCHER 概述
- 系统的四个阶段:构建知识图谱(KG)、生成推荐模型、检测网络威胁、调整模型
- 关键思想:在KG中使用不同顺序的连接来模拟系统实体交互的可能性,将系统执行中的异常识别为网络威胁
- 工作流程:为了显式利用一阶和高阶信息,通过上下文感知嵌入模块将系统实体参数化为嵌入(即向量),然后通过图神经网络邻居迭代传播嵌入。通过聚合来自所有传播迭代的嵌入,确定实体-实体交互为对抗性的概率。
- 训练和检测:使用无攻击的审计记录进行训练。对于新到达的审计流,SHADEWATCHER 首先提取系统实体交互,并将其输入到训练阶段得到的推荐模型中。然后,如果相互作用的对抗性概率大于预定义的阈值(两个(多个)实体间不太可能存在这样的交互),就将其检测为潜在威胁。
KG 的构建
- 溯源图(PG):节点用一组属性表示系统实体,边描述系统实体之间的因果依赖关系和记录发生的时间戳
- 降噪策略
- 减少计算量:首先识别PG中的所有数据对象,然后对单个数据对象执行前向深度优先搜索以提取子图;若两子图有包含关系(子集)则合并
推荐模型
- 一阶信息建模
- 将系统实体参数化为向量,两向量间的距离衡量相似性
- 使用 TransR 在不同的关系语境下为同一实体分配不同的语义,并得到一些元组衡量两实体间(h, t)可能不具备某种关系(r)的得分 f(h, r, t)
- 高阶信息建模
- 使用 GNN 将多跳路径集成到系统实体的表示中
- 给定一个实体,一个 GNN 模块通过传播和聚合来自邻居的消息递归地更新其表示
- 注意力机制来区分实体的邻居的权重
- 信息聚合:Graph-Sage 聚合器
- 威胁检测学习
- 经过信息传播和聚合的多次迭代,我们得到了实体的一系列表示,将这些标识拼接成一个向量表示该实体
- 给定交互关系,两实体向量的内积为不具备该关系得分,高于阈值则确定为潜在威胁关系
- 模型适应
- 可以在假阳性相互作用上给出新的标签,允许使用假警报作为额外的监督
- 原本报警 –> 发现是误报 –> 作为负面实例来重新训练它的模型