DNS和安全

本文最后更新于2018年4月1日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

前面在博客中整理了两篇和DNS原理及作用相关的文章,详细介绍了DNS的原理和作用,这里想整理记录一下DNS和安全的关系及其能起到的作用,方便以后参考。

正文:

参考解答:
DNS的重要性:

1、技术角度看
DNS解析是互联网绝大多数应用的实际寻址方式;域名技术的再发展、以及基于域名技术的多种应用,丰富了互联网应用和协议。

2、资源角度看
域名是互联网上的身份标识,是不可重复的唯一标识资源;互联网的全球化使得域名成为标识一国主权的国家战略资源。

DNS对黑客的几个意义:
  1. 传输命令与控制指令(c&c)
  2. 偷渡数据(steal data)
  3. 重定向流量(hijacking)
  4. 信息收集(zone transfer/domain leak)
DNS对于企业(安全)的重要性:
  • 如果您的内部DNS表现不佳或者不可用,那么您的所有应用程序的性能将会很差或者会明显下降。如果您的内部DNS受到攻击,那么攻击者将对您的网络上的所有服务一目了然并且可以十分容易到达目标服务器。黑客也可能会控制和更新DNS记录,将您的内部流量重定向到他们自己的恶意目的地。
  • 如果您的外部DNS表现不佳或不可用,则客户可能无法联系您的网站或向您的企业发送电子邮件。如果网络体验不佳,客户可能会流逝或转向竞争对手。外部DNS表示您的品牌和互联网的可用性,根据您的业务性质,可能会对您的品牌和收入产生重大影响。不安全的外部DNS可能会悄悄地将您的客户引向恶意网站,欺骗您的网站以窃取客户信息或拦截电子邮件。
  • 如果您的递归DNS表现不佳或者不可用,您的互联网访问就会变得无效或严重退化。这是因为您无法快速解析任何外部网站或资源的IP地址。不安全的递归DNS可能会导致您在不知情的情况下进入恶意或受损目的地。不安全的递归DNS会导致进行恶意软件通过DNS 与命令与控制(C2)通信,另外数据泄露也会经常利用不安全的DNS服务。
DNS在企业安全中可以起到的作用:
  • 在DNS层实施安全防御,可以有效检测和控制类似于WannaCry恶意软件的感染。

 

一些概念补充:

DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务器因意外故障变得不可用时影响到整个域名的解析。一般来说,DNS区域传送操作只在网络里真的有备用域名DNS服务器时才有必要用到,但许多DNS服务器却被错误地配置成只要有client发出请求,就会向对方提供一个zone数据库的详细信息,所以说允许不受信任的因特网用户执行DNS区域传送(zone transfer)操作是后果最为严重的错误配置之一。

DNS区域传送漏洞的危害:黑客可以快速的判定出某个特定zone的所有主机,收集域信息,选择攻击目标,找出未使用的IP地址,黑客可以绕过基于网络的访问控制。


DNS劫持,就是指用户访问一个被标记的地址时,DNS服务器故意将此地址指向一个错误的IP地址的行为。范例,网通、电信、铁通的某些用户有时候会发现自己打算访问一个地址,却被转向了各种推送广告等网站,这就是DNS劫持。

DNS污染,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。范例,访问Youtube、Facebook之类网站等出现的状况。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3861.html

《DNS和安全》上有26条评论


  1. 现在威胁情报里面最有用的两个基础数据:PDNS和网络流量。

    检测的话可以利用pdns数据来分析恶意dns。可以是从企业内部去dns数据中分析恶意dns,也可以是从外部pdns威胁分析服务中获取恶意的dns,如思科的opendns服务;防御方法一般可以采用DNS RPZ来sinkhole/blackhole dns请求(前者是返回无害的dns答复给请求,后者是不返回dns答复给请求,从而阻断恶意dns的请求), 或者采用外部的具备安全能力的DNS服务器,如IBM的 9.9.9.9 DNS服务。

    在内部进行安全分析、检测的话:
    进程树,dns, netflow, http, https 握手,这些能记录的都记录上。

  2. 从救火到先知-DNS安全分析场景实践谈
    https://zhuanlan.zhihu.com/p/34992317
    https://www.sec-un.org/%e4%bb%8e%e6%95%91%e7%81%ab%e5%88%b0%e5%85%88%e7%9f%a5%ef%bc%8cdns%e5%ae%89%e5%85%a8%e5%88%86%e6%9e%90%e5%9c%ba%e6%99%af%e5%ae%9e%e8%b7%b5%e8%b0%88/

    DNS是互联网和物联网(IOT)的“神经系统”,是连接网络的第一步动作,DNS系统是一个基于C/S结构的巨型分布式数据库系统,实现域名到IP地址的转换,对用户访问各种互联网应用至关重要。DNS协议设计之初的目标是提供一种一致的命名空间和灵活高效的解析服务,DNS系统有着良好的系统性能,同时作为一个开放的系统,也存在着诸多的安全问题和隐患。

    DNS协议的数据报文不受限制地传输,使得DNS通讯作为隐蔽通道在整个攻击链多个环节被黑客们广泛应用,通过研究DNS流量或数据,可以发现网络的安全攻击以及异常行为。虽然很多企业正在全力以赴地应对网络安全威胁,以期能检测和规避网络攻击,但遗憾的是,大多数企业并没有对DNS安全起到足够的重视,至使企业的数据、资产和信誉都处在风险之中。思科2016年度安全报告指出,近91.3%的“已知不良”恶意软件被发现使用DNS作为主要手段,但68%的企业却忽略了这个问题,并没有对DNS解析进行监测,思科非常形象地把这称作“DNS盲点”——DNS是互联网上最常见的协议,但它却成为了最容易被忽视的。

    恶意软件一般通过DNS实现命令与控制(Command and Control)信道、窃取数据和重定向流量等三个目的。除了恶意软件,还有很多网络攻击也离不开DNS,比如APT攻击、垃圾邮件、僵尸网络和挂马网站等,它们都在利用DNS伺机攻击企业的网络。

    域名在一定程度上反映了用户的网络访问行为,对一些用户而言,每天能监测到海量的域名信息,如何从这些海量信息中,抽取需要人工能确认或分析过来的信息至关重要。海量的域名信息,经过白域名库、黑域名的筛选,形成的灰域名数量可以大大减少,可以到达工具或人工的分析程度,同时分析的结果又可以反馈到名单库中。

    (一).基于多元属性特征的检测方法(也称静态安全检测)
    (二).针对域名的行为特征方面(动态安全检测)

    3.安全分析场景
    3.1 隐蔽隧道的监测场景
    3.2 恶意域名的访问分析
    3.3 Visibility场景:解析的趋势分布
    3.4 用户行为分析场景
    3.5 高风险主机检测分析
    3.6 新增域名的监测场景
    3.7 DNS Server监测场景
    3.8 Rdata数据的深入分析

  3. erbbysam/DNSGrep: Quickly Search Large DNS Datasets
    https://github.com/erbbysam/dnsgrep

    A utility for quickly searching presorted DNS names. Built around the Rapid7 rdns & fdns dataset.
    一个在预先排序的DNS数据集中进行快速搜索的实用程序。基于Rapid7 rdns和fdns数据集构建。

  4. Datacon DNS攻击流量识别 内测笔记
    http://momomoxiaoxi.com/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/2019/04/24/datacondns1/

    题目
    比赛结果
    分析思路
    困难与挑战
    时间线
    攻击与检测
    DNS缓存投毒或网关劫持
    DNS域传送漏洞
    非法DNS 动态更新:
    DNS Amplification Attack
    DNS子域名枚举
    DNS tunnel
    Nsec 枚举
    收获
    参考

    考察DNS安全问题,因此首先寻找都有哪些DNS安全问题。
    主要思路:
    攻击者思路:搜索搜集对应的攻击类型,依据特征进行检测。
    Google
    Nmap dns攻击插件
    Nessus dns攻击插件
    防御者思路:
    传统厂商检测规则
    snort
    suricata

  5. DataCon 2019: 1st place solution of malicious DNS traffic & DGA analysis
    https://paper.tuisec.win/detail/c45f10f2c89e3c0
    https://www.cdxy.me/?p=806
    https://static.cdxy.me/datacon-%E9%98%BF%E9%87%8C%E4%BA%91-%E7%A0%94%E8%AE%A8%E4%BC%9A%E6%9C%80%E7%BB%88%E7%89%88.pdf
    https://github.com/Xyntax/datacon_2019_DNS/

    Q1 DNS恶意流量检测
    解题思路:结合专家经验在多个维度做统计特征,滤出超越统计基线3sigma的异常行为,人工检验异常数据确认攻击,然后编写规则滤出该类攻击全部数据包。
    方案特点:
    使用云环境大数据分析组件,高效完成题目。
    使用异常检测方法,所使用的特征空间能够对数据集做完全线性二分类,达到100% precision和recall。

    1.2 解题策略
    通过对数据的初步人工浏览和简单可视化分析发现:

    数据经过脱敏,因此部分字符分布、语义、信息熵等特征会受到影响。
    时间区间很短,因此并不适合用"对历史行为建模以检测未知"的思路来做。
    数据完整,不存在缺失值填充的问题。
    题中说明存在五种攻击方式,且提交的是DNS query的packet id,表明出题人自信已经100%吃透了这1kw数据包。因此本次五种攻击模式不会太复杂,每种攻击流量都是"干净"的(可以用规则搞定答案全集,不存在模棱两可、特征模糊、人工难辨的情况),猜测攻击包有可能是出题人自己造的。
    eth层、frame层、UDP层、TCP层的特征高度统一,出题人没有留下漏洞,因此重点分析DNS层即可。

    据此,我的解题策略为:
    原始日志->特征工程->异常检测->人工验证(得到部分答案)->pattern提取->规则匹配->全部答案。

    1.3 特征工程
    接下来开始思考本题的特征维度。根据我的安全经验,将DNS攻击分为三种建模:

    密集请求型:例如随机子域名DDoS、反射型DDoS。其特征为QPS高、时序特征强,一般能够可视化观察到波峰。
    漏洞攻击型:例如针对DNS server的已知漏洞攻击。其特征为数量少、受DNS type影响,适合分类统计。如果批量PoC的话,则特征同1。
    数据传输型:例如DNS Tunnel、Malware DGA、PoC中的DNS回显、SSRF重绑定等。其特征在于域名文本特征明显、适用于规则匹配。

    1.4 异常检测
    将以上统计特征通过全量数据建立基线,然后在每个特征维度滤出超越3sigma的异常值。

    1.5 人工验证及过滤
    将以上异常检测滤出的IP按照异常维度数量排序,依次人工确认是否为攻击行为,然后通过规则滤出存在攻击的数据包。

    1.6 总结
    从结果来看,本题最高效的特征如下:

    DNS type。
    src_ip维度的统计分析特征(QPS、域名数量、请求响应数),因为出题人将src_ip的行为做的非常干净,找到了IP就找到了攻击。
    分析方法只用了3sigma异常基线一种,人工排序观察Top的异常结果,确认攻击后写规则捞出全部同类攻击。

  6. https://github.com/rrenaud/Gibberish-Detector
    https://pc.nanog.org/static/published/meetings/NANOG71/1444/20171004_Gong_A_Dga_Odyssey__v1.pdf
    https://cloud.tencent.com/developer/article/1142855
    https://github.com/360netlab/DGA/tree/master/code
    https://www.botconf.eu/wp-content/uploads/2015/12/OK-P06-Plohmann-DGArchive.pdf
    https://www.usenix.org/sites/default/files/conference/protected-files/security16_slides_plohmann.pdf
    https://github.com/rmariko/security-ids/blob/0696255b7f2600429a3129bdc1b271d3c4db20ae/ids.py
    https://github.com/LittleHann/DGA-1/blob/master/dga_algorithms/Conficker.cpp
    https://github.com/andrewaeva/DGA/blob/master/dga_algorithms/Matsnu.py
    https://github.com/LittleHann/dga-collection/tree/master/dgacollection
    https://github.com/360netlab/DGA/tree/master/code
    https://github.com/baderj/domain_generation_algorithms/tree/e2ed68a9813b2265652a79291a74b4c23fc13bf0
    https://www.cdxy.me/?p=805
    https://github.com/shyoshyo/Datacon-9102-DNS
    http://momomoxiaoxi.com/数据分析/2019/04/24/datacondns1/

    Q2 DGA域名检测与家族聚类
    解题思路:首先通过专家经验做强关联社区发现洗出一部分DGA域名,以此为正样本训练二分类模型识别DGA域名,然后对结果分别进行社区发现、社区聚合、标签传播扩展与降噪,最终得到结果。
    方案特点:
    1、使用改进的强社区发现方法和专家知识,将无监督问题转化为有监督问题。
    2、从种子样本到二分类、社区发现、降噪,最终结果回流到样本集,不断递归收敛最终获取准确结果。
    3、通过DGA公开家族特征、whois特征、http响应特征等扩展数据增强结果。

    解题策略:
    1、解题前没有label数据,属于零先验知识数据挖掘,因此不能直接设计单个model进行multiclass多分类一步得到所有DGA家族分类。
    2、针对这种场景,我们设计了一个 种子样本生成-二分类-社区发现-降噪与传播-更新种子样本 的循环工作流,在每次迭代过程中的"降噪与传播"部分引入专家经验,在每次迭代中提高精度和召回,最终逼近正确答案。

    特征维度:
    1、稀有TLD
    2、DGA家族互斥假设
    3、WHOIS特征
    4、域名访问频次
    5、域名长度统计
    6、源IP计数
    7、信息熵
    8、域名可读性
    9、Markov概率
    10、N-Gram平均排名

    结果优化
    这一步通过引入其他维度数据进一步提高精度和召回。

    域名维度特征:
    Only SLD+TLD && length(SLD) > 5
    Number of rdata < 5
    HTTP alive
    NXDOMAIN rate
    WHOIS existed
    WHOIS sinkhole
    Alexa rank < 1M
    IP malicious request rate
    DGA Generate Algorithm

    社区维度特征:
    NXDOMAIN≥ 20%
    Number of Domain names ≥ 4
    Query in a short times

  7. 安全应急之命令控制
    https://l0gs.xf0rk.space/2019/06/14/about-command-and-control/

    命令控制 (C&C、CNC、Command & Control),受控机器(木马后门)与攻击者控制服务器通讯行为。受控机器通过一定的通道,从控制服务器获得指定的业务指令并执行恶意行为,例如上传从宿主机偷窃的到的信息、定时给感染机文件加密勒索等。

    根据命令控制通道所使用的协议及实现方式不同,常见的类型如下所示:

    SSH 隧道(SSH 代理、端口转发),建立一个 SSH 通道,将相关数据包转发至目标机器
    HTTP 命令隧道,将 TCP 流量数据包或控制命令数据封装到 HTTP 数据包中,相关测试工具有 reGeorgl 等
    ICMP 命令隧道,将命令控制指令封装到 ICMP 数据包中,相关测试工具有 icmptunnel 等
    DNS 命令隧道,将命令控制指令封装到 DNS 数据包中,相关测试工具有 dnscat2 等

    下文将介绍 DNS 命令隧道分类、命令控制实践及 DNS 查询日志采集等。

    1. 命令控制隧道
    1.1. 命令隧道
    2. DNS 命令隧道
    2.1. IP 型 DNS 命令隧道
    2.1.1. IP 隧道本质
    2.1.2. DNSCAT2 演示
    2.2. 域名型 DNS 命令隧道
    2.2.1. DNS 递归解析
    2.2.2. DNSLOG 演示
    2.2.3. 域名请求有效空间
    3. DNS 流量采集
    3.1. SYSMON 工具采集

  8. DNS 隧道通信特征与检测
    http://blog.nsfocus.net/dns-tunnel-communication-characteristics-detection/

    一、DNS 隧道技术解析
    1.1 DNS协议解析过程
    1.1.1 迭代查询
    1.1.2 递归查询
    1.2 DNS隧道
    1.2.1 DNS隧道攻击实现流程
    1.2.2 典型恶意程序
    1.2.3 经典的攻击事件
    二、DNS隧道攻击实现以及流行工具展示
    2.1 测试平台
    2.2 dns2tcp
    2.2.1 dns2tcp建立隧道流程
    2.2.2 dns2tcp数据包分析
    2.2.3 总结
    2.3 iodine
    2.3.1 iodine建立隧道流程
    2.3.2 iodine数据包分析
    2.3.3 总结
    2.4 Dnscat2
    2.4.1 Dnscat2 建立隧道流程
    2.4.2 Dnscat2 数据包分析
    2.4.3 总结
    三、检测DNS隧道木马
    3.1 DNS会话中数据包的总数
    3.2 隧道消息类型
    3.3 域名固定部分不变

  9. 一次出人意料而名留青史的DNS投毒攻击
    https://mp.weixin.qq.com/s/KaIiJaKDrE2Q5iZ_GwBG1g

    2008年7月,在互联网上发生了一件极具历史意义的DNS安全事件,该事件一经发布,立即震动了整个互联网,因为,自1983年DNS被发明以来,人们还从未遇到过这类影响深远而易于实现的攻击。Cricket Liu, 《DNS and BIND》(O'Reilly出版)的作者, 认为这可能是互联网历史上最大的一次DNS安全事件。1

    这个攻击是美国人Dan Kaminsky精心构造的,他本人因此一战成名,该攻击也因此被命名为Kaminsky攻击。

    漏洞由CERT于2008年7月8日发布2,但没有公布细节,Dan那时正在协助一些DNS厂商补上这个漏洞,并计划于8月6日在拉斯维加斯召开的Black Hat年度安全大会上披露全部细节内容(然而漏洞细节还是在7月21日被泄漏了出来),由于明明知道有漏洞却又不知道到底怎么回事,当时安全圈内颇有一些人对Dan表示了不满3。

    该攻击令人恐惧之处在于,攻击者并不要求有什么特别的条件(比如占据某个路由交换节点可以监听和修改DNS报文),也无需使用社工之类的手段,攻击者就是一个普普通通的网络用户,却可以使用该方法,无差别地在全球复现这个攻击。

    攻击产生的后果是什么?

    后果是DNS服务器缓存中的记录被修改(所谓被“投毒”),比如用户本来想访问www.baidu.com,如果本机没有缓存,就会向本地DNS查询该域名的IP,但由于DNS服务器被投毒,所以用户得到的IP并不是想要去的地方,而是一个攻击者设定的IP,这样,用户就被牵引到完全可能是恶意的网站。

    这种对IP的掉包,对搞信息安全的人来讲,哪怕是随便想一想,都会毛骨悚然。

    在用户层面是无法感知和防范这种攻击的,因为攻击破坏了互联网底层的基础设施:域名服务。而域名服务正是那种它不出事时你意识不到它存在,一旦出事都是大事的东西。

发表评论

电子邮件地址不会被公开。 必填项已用*标注