本文转载自:证券信息技术研究发展中心(上海)《交易技术前沿——网络安全专刊》
作者:
丁安安 夏英杰 杜峥,民生证券股份有限公司
葛锐 张绍峰,互联网域名系统北京市工程研究中心有限公司(ZDNS)
一、 引言
证券公司作为金融市场的重要组成部分,其业务连续性和客户的数据安全对公司的生存和发展具有重要意义。近年来,针对证券公司的网络攻击事件频发,尤其针对DNS的攻击手段层出不穷,如DNS劫持、DNS隧道、DNS放大攻击等,给公司和客户带来了严重的安全威胁。因此,构建一个高效、智能的DNS安全防护系统显得尤为重要。
二、 DNS安全问题
错综复杂,形势严峻
DNS安全问题主要有2类:针对DNS服务本身的服务安全问题和针对远控目标的DNS数据安全问题。
(一)DNS服务安全问题
DNS服务安全问题是指DNS服务可用性、服务质量、服务准确性收到影响,无法正常提供DNS解析服务。例如:利用DNS漏洞直接使DNS服务停止导致服务不可用;利用僵尸网络发起泛洪攻击实现DNS网络拥塞,造成解析延伸大的服务质量下降;通过缓存投毒的方式篡改域名解析结果,造成解析结果不准确等。
(二)DNS数据安全问题
DNS数据安全问题是指攻击者利用DNS系统实现恶意攻击者的远程控制和建连,即引导被攻击者访问存在安全问题的域名。例如:挖矿木马、钓鱼网站、垃圾邮件、勒索软件、隧道攻击等有威胁域名和解析数据。
基于IDC《2023全球DNS安全威胁报告》,全球90%的用户曾经遭受过DNS攻击,其中遭受到网络钓鱼和恶意软件的比例最高,有54%的用户遭受过网络钓鱼攻击,49%的用户遭受过恶意软件攻击。基于DNS攻击分布见下[图一]:
图一:DNS威胁类型
本文对DNS的服务安全和数据安全的攻击手法进行了总结梳理,共梳理出五类十三种攻击方式,具体见下[表一]:
表一:DNS威胁类型
三、DNS智能安全防护体系
在网络安全形势日益严峻的背景下,为了保障证券业务连续性和客户的数据安全,需要构建一套智能化的DNS安全防护体系,立足于DNS协议特点,打造深度DNS协议防护体系,通过多层次的安全防护底座、高性能和强化的安全机制、以及基于数据分析的DNS安全运营流程,有效防护各种DNS攻击行为。
图二:DNS智能安全防护体系架构
(一)基于DNS协议的安全防护底座
由于DNS协议本身的脆弱性,导致攻击者大多基于DNS协议进行攻击。当前,数据窃取、远控连接、重定向流量、使DNS拒绝服务是几种主要的DNS攻击方式,基于上述方式衍生出来的攻击手段种类繁多不一而足,但万变不离其宗,所有DNS攻击都需要基于DNS协议来完成,因此,构建DNS安全防护系统需要立足于协议本身来进行安全防护,以加强网络安全纵深防御能力,保证服务稳定可靠,数据不被篡改,隐私不被泄露,风险不被触发。
图三:DNS协议级安全防护
本DNS安全防护系体系以深度DNS协议防护为安全底座(见图三),具备以下几点能力,能够做到真正的协议级的安全防护:
DNS畸形包过滤:攻击者通过向目标DNS服务器发送有缺陷的请求报文,使得DNS在处理此类数据包时出现崩溃或死机。DNS智能安全防护体系首先会对接收到的请求、应答报文智能检测并判定其合规性,自行阻断和丢弃畸形报文;
隧道攻击检测防护:攻击者利用DNS作为隐蔽通信通道,将敏感数据传输到网络外部,或通过DNS隧道远程控制失陷终端实施其它攻击。DNS智能安全防护体系通过对DNS请求类型、请求数据大小及其规则特点进行深度检测,对异常通信数据及时发现并阻断,保护企业信息安全;
反射放大攻击防护:攻击者利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP为受害者IP,将应答包的流量引入受害的服务器,致使服务器性能降级。DNS智能安全防护体系通过对DNS请求类型,响应数据、应答追踪进行判断来识别并阻断非法请求和非法应答流量,既可避免被攻击者利用也可防护反射放大攻击;
泛域名主动检测:攻击者通过对递归服务器发起大量无响应的域名,致使递归服务器持续消耗系统资源,从而影响正常域名解析。DNS智能安全防护体系可通过实时的流量模型分析和行为特征匹配,识别泛域名攻击的恶意子域和恶意IP,并智能启动拦截防护策略,避免影响解析服务质量;
源地址DDoS防护:此类攻击指特定受感染终端发起大量非法请求,持续消耗递归服务器资源,影响正常解析。DNS智能安全防护体系通过对源IP的全局网段、特定网段、特定地址进行精细化控制,结合安全运营的情报和处置经验来扼制源地址DDoS攻击,保证DNS服务质量;
目的域名DDoS防护:攻击者利用受感染的终端或者僵尸程序对受害者的域发起大量随机子域请求,实现对目标域的权威服务器和相关递归服务器的DDoS攻击。DNS智能安全防护系体系通过灵活的目的域安全控制策略来防护此类DDoS攻击;
非法域名重定向:对于攻击特征不明显,但长期存在的非法域名(如每周定期请求),DNS智能安全防护体系嵌入了非法域名重定向功能,通过此功能可对不同域名灵活阻断;
缓存窥探防护:攻击者通过窥探DNS缓存记录,推断DNS用户最近访问过的特定站点,收集用户日常使用信息,为发起攻击做准备。DNS智能安全防护体系加入了校验功能,通过校验查询源、查询方式的合法性,来控制有助于窥探的应答信息,从DNS请求、应答整个过程防护DNS缓存窥探攻击;
缓存投毒防护:DNS缓存投毒指攻击者使用仿冒数据污染DNS缓存,诱使用户访问DNS缓存中的非法地址,实现数据盗用和其他攻击的目的。DNS智能安全防护体系的端口随机、ID随机、域名大小写随机机制,可以增加攻击者仿冒真实数据成本,避免缓存投毒,保证缓存安全,确保DNS解析结果正确。
(二)高性能和强化型安全机制
在安全防护底座的基础上,DNS智能安全防护体系具有高性能防护模式的保障和强化的安全机制,具体为:
高性能防护模式:在遭遇DDoS攻击时,DNS安全防护系统支持启用高性能防护模式,提升系统抗攻击的防护能力,高性能防护模式的处理性能是正常模式性能的数倍。
基于TSIG协议的数据更新:DNS数据更新是否来源于合法渠道,直接关系到DNS解析的正确性。DNS智能安全防护体系通过TSIG协议的加密认证方式验证DNS更新信息的合法性,确保DNS服务器之间数据更新的安全可靠。
DNSSEC安全加固机制:DNSSEC是防护DNS欺骗和缓存污染的一种安全机制,以保障DNS数据来源的合法性以及数据完整性。DNS智能安全防护体系适配了DNSSEC,可基于业务需要灵活配置。
(三)基于数据分析的DNS安全运营流程
尽管有了协议级别的DNS安全防护、高性能和强化的安全机制,但互联网上仍然存在大量的威胁域名,如果攻击者不利用协议层的脆弱性攻击,仅利用域名的原生属性,让受害者“正常”的回连、访问威胁域名,仍然会给企业造成威胁。因此就需要将威胁情报与DNS智能安全防护体系结合和分析,做到实时阻断失陷终端的非法外联,并按照不同威胁等级进行精细化处置,如预警、预警+阻拦、预警+重定向解析等多种措施进行威胁DNS流量的管控。同时提供DNS威胁预警拦截展示,直观的发现失陷终端、非法域名、威胁事件、威胁情报匹配组织背景等多维度分析统计数据,实现快速溯源,消除隐患。
基于数据分析的DNS智能安全防护系统主要包括以下几个部分:
1.数据采集处理
实时采集DNS流量数据,包括DNS查询和响应报文,我们需要利用高性能的数据包捕获技术来实现。在这里,我们将采用libpcap库作为数据采集模块的基础,因为它广泛应用于多种操作系统,并具有较低的延迟和高吞吐量特性。同时,为了进一步提高数据采集的性能和灵活性,我们将引入eBPF(扩展Berkeley Packet Filter)技术作为补充。eBPF允许我们在Linux内核中执行用户定义的程序,以处理网络事件等。在高并发的用户场景下,通过编写eBPF程序在内核级别对数据包进行过滤和处理,实现对于DNS流量数据的采集。
为了确保数据采集过程中不对网络性能产生显著影响,我们将采用以下策略:
(1)结合eBPF与零拷贝技术:虽然libpcap本身已经支持零拷贝技术,通过避免数据包在用户空间和内核空间之间的拷贝,来降低CPU负载和内存消耗,从而提高数据采集效率。但eBPF可以在内核级别进一步减少数据包在用户空间和内核空间之间的拷贝。通过eBPF程序,我们可以在内核中直接处理DNS流量数据,从而进一步提高数据采集效率。
(2)设置合适的缓冲区大小和超时时间:根据网络流量情况,合理配置缓冲区大小和超时时间,以减少数据包丢失的风险。同时,eBPF程序也可以对内核中的缓冲区进行监控和管理,以确保数据的有效传递和处理。
(3)并发处理:利用多线程或异步处理技术,并行处理捕获到的数据包,进一步提高数据采集速度。同时,eBPF程序也可以在内核级别并发执行,以提高整个系统的吞吐量和响应速度。
总的来说,eBPF在内核级别的处理能力将进一步提升数据采集的性能,而libpcap的广泛适用性和易用性则为我们提供了强大的数据捕获和分析能力。两者在不同用户场景下灵活使用,为我们提供一个强大且高效的实时DNS流量数据采集解决方案。
在数据采集阶段,我们还将关注用户隐私保护。为此,我们将对捕获到的DNS流量数据进行加密处理,以防止未经授权的访问和使用。
接下来,我们将对采集到的DNS流量数据进行预处理。预处理操作包括数据清洗、去重、格式化等。为了实现高效的数据清洗和去重,我们将采用以下算法:
(1)使用哈希表进行数据去重:通过计算数据包的哈希值,将具有相同哈希值的数据包视为重复数据,从而实现快速去重。
(2)利用正则表达式提取关键信息:使用正则表达式匹配DNS流量数据中的域名、IP地址等信息,以便于后续分析。
在对DNS流量数据进行格式化时,我们将统一采用JSON格式,以便于后续的数据挖掘和分析工作。
2.威胁情报
收集并整合来自不同来源的威胁情报数据,如恶意域名列表、僵尸网络命令与控制服务器地址等。这些数据将用于辅助分析DNS流量中的恶意行为。
(1)使用Python编程语言:Python因其易用性和丰富的库支持而被广泛用于网络安全领域。我们将使用Python编写数据收集、清洗、标准化和整合的脚本,以实现自动化处理流程。
(2)利用API接口:许多威胁情报来源提供API接口,包括各大威胁情报提供商,以便用户获取其发布的最新威胁数据。我们调用这些API接口,实现自动化数据收集。
(3)数据清洗和标准化:我们将使用pandas库对收集到的威胁情报数据进行清洗和标准化处理。这包括去除重复数据、填充缺失字段、统一数据格式等操作。数据清洗的公式如下:
清洗后的数据集 = 原始数据集 - 重复数据集 - 缺失数据集
(4)使用Elasticsearch存储数据:Elasticsearch是一个高度可扩展的开源搜索引擎,适用于存储和检索大量数据。我们将使用Elasticsearch作为威胁情报数据的存储后端,以便快速查询和分析。
(5)数据整合与分析:我们将使用Python的scikit-learn库对整合后的威胁情报数据进行聚类分析,以便发现潜在的关联和模式。聚类分析的公式如下:
聚类结果 = KMeans(n_clusters=k).fit_predict(特征矩阵)
其中,n_clusters表示聚类的数量,k表示预期的聚类数量,特征矩阵表示威胁情报数据的特征向量。
(6)数据更新和维护:我们将使用Python的schedule库设置定时任务,以定期自动更新威胁情报数据。同时,我们将密切关注威胁情报来源的动态变化,并根据实际情况对数据进行手动修正和调整。
(7)数据共享和交换:为了促进安全社区的协作防御,我们将积极参与行业共享项目,并通过安全信息交换协议(SIEM)与其他组织共享威胁情报数据。
3.智能分析
结合威胁情报数据,对处理后的DNS流量进行深入分析,识别潜在的恶意域名和攻击行为。该模块采用机器学习和人工智能技术,以提高分析的准确性和效率。
(1)特征提取:
利用pandas库从处理后的DNS流量中提取关键特征,如域名请求频率、请求时间间隔、域名与IP地址的映射关系等。
使用scikit-learn库中的TF-IDF算法对域名和IP地址进行向量化处理,以捕捉恶意行为的细微迹象。
(2)模型训练:
收集并标注一定数量的恶意域名和正常域名的DNS流量样本,构建训练数据集。
使用scikit-learn库中的支持向量机(SVM)算法对训练数据集进行训练,得到分类模型。SVM模型的公式如下:
f(x) = wx + b
其中,w表示权重向量,x表示输入特征向量,b表示偏置项。
使用交叉验证和网格搜索等技术,对模型进行调优,以提高其泛化能力和准确性。
(3)恶意域名检测:
将处理后的DNS流量输入到训练好的SVM分类模型中,对域名进行恶意性判断。对于被判定为恶意的域名,进一步分析其关联的IP地址和通信行为,以识别潜在的攻击行为。
(4)攻击行为识别:
利用TensorFlow库构建深度学习模型,如循环神经网络(RNN)或长短期记忆网络(LSTM),对DNS流量中的时间序列数据进行建模和分析,以识别异常模式和攻击行为。RNN模型的公式如下:
h_t = f(Wx_t + Uh_{t-1} + b)
其中,h_t表示当前时刻的隐藏状态,x_t表示当前时刻的输入,h_{t-1}表示上一时刻的隐藏状态,W和U表示权重矩阵,b表示偏置项,f表示激活函数。
结合威胁情报数据,对识别出的攻击行为进行关联分析和溯源追踪,以揭示攻击者的意图和攻击路径。
(5)实时分析与预警:
将分析模块部署在网络环境中,实时监控DNS流量,并对潜在的恶意域名和攻击行为进行实时分析。一旦发现可疑活动或攻击行为,立即触发预警机制,通知相关人员采取应对措施。
4.安全防护运营
通过对各类安全威胁事件聚合、分析,直观反映企业发生安全事件的攻击频率、严重程度等,提高安全运营效率,并通过展示详细威胁背景信息,为安全防护和追溯提供有效的依据。
对识别出的恶意域名和攻击行为,可自定义安全防护策略来进行拦截和阻断,以满足不同场景的安全需求,安全防护策略包括按照不同域名的风险级别设置不拦截+告警、拦截+告警、重定向到自定义页面+告警等。灵活有效的防止公司和客户遭到攻击和损害。
四、结束语
由于互联网发展的历史原因,DNS协议的脆弱性不可避免的会带来安全问题,同时,DNS使用场景的多样性使其在遭受攻击时对证券公司所造成的后果越来越严重,因此提升DNS攻击侦测能力、强化DNS安全防护是确保企业数据安全和业务安全的头等大事。本文介绍的DNS安全防护系统结合威胁情报系统形成一套“组合拳”,为企业的安全运营提供更有效的保障。
END