0x00 概述
此文力求比较详细的解释DNS可视化所能带来的场景意义,无论是运维、还是DNS安全。建议仔细看完下图之后的大篇文字段落,希望能引发您的一些思考。
在“F5利用Elastic stack(ELK)进行应用数据挖掘系列(2)-DNS”一文中阐述了通过DNS logging profile进行DNS可视化的一种方法。DNS logging profile本身对解析和响应是发出的两条日志,因此在上篇文章中我们其实用了一些特殊的方法来处理一些我们想要的场景。所以这样的处理方式可能不够灵活,也不够优雅。通过logstash根据Query ID进行日志聚合后再处理也是一种思路,但是日志聚合本身这个动作需要仔细处理以防止聚合出错。同时即便使用了聚合,由于DNS logging profile输出的内容是固定的,因此在灵活性上依旧差那么一些。这篇文章则给大家提供了另一外一种形式的可视化。从通用性角度来说,更建议使用本篇文章中的方法,不受BIGIP DNS(GTM)版本及模块license类型的影响。
0x01 方法思路
iRule通过HSL输出必要的解析日志数据至elk
0x02 Dashboard与可视图分析
在整个dashboard中,划分了这样几个功能区域:
- 最上面的解析来源地理热力图,可以清晰的看出哪些地方是热点解析区域。热点解析区域,结合DNS TTL参考,可以意味着这个地方业务量较高,也可能意味着这个地方的DNS缓存存在问题。而同样的,如果此地理热力图所显示的业务真实热门的地方反而解析最不热门,也可能变相的说明该区域的DNS TTL存在问题。此外地理热力图也可以帮助揭示DNS攻击的区域
- 上部分右侧有总解析数,这里的总解析数也可以理解为实际的响应数(不管response是什么),所以与通过dns logging profile方式处理的不一样,这里没有统计那些request进来但被丢弃的请求,当然一般这也不需要统计,往往在外围DNS DDOS/Protocol火墙上就被过滤了。 总解析数意味着你统计时间段内的解析数量,在进行月度等报告撰写方面可以作为参考,是业务发展的一种指标。可以分不同域名(业务)来统计则会更有业务层面的价值
- 右侧的热点城市Top10,以及热点LDNS Top10 用于揭示热门的区域或LDNS IP。这是一个侧面的业务访问量大小的指标,当然也可以用于识别DNS DDOS。与第一条道理相同,过度热门的LDNS、城市在排除业务正常的因素前提下可能是衡量TTL的一个指标,即TTL在该地区/LDNS的是否被恶意不遵守。而业务本来应该热门的城市,但是解析却很不热门,那么也值得怀疑该地区的相关LDNS是否存在TTL恶意改大的情况
- 在地理图下的各线路实时解析统计可以帮助实时观察每个NS上实时的解析请求统计,一般来说应该各个NS上的总解析数应该比较接近,过度偏离的话,可以进一步跟踪该线路上的热门城市/LDNS,这些热门的LDNS里或许存在NS缓存不正确问题,或不能正确轮询NS问题
- DNS成功率饼图显示成功与失败解析占比,成功是指的解析状态为NOERROR的,其它状态如NXDOMAIN,REFUSED等都归为解析失败。需要注意,解析失败不代表业务解析出了问题,比如客户端解析一个不存在的域名,那么理所当然不能回复为NOERROR。所以这里可以理解为有效解析与无效解析的占比。如果无效解析占比很高,那么说明你的环境下存在太多DNS探测、攻击尝试等。有必要对此开启DNS firewall(方法找sales,哦不对找F5工程师)。同时这也是日常基线的一种衡量,如果突然无效占比高了,你要考虑是否存在攻击了,或者业务层面代码里那里写错了域名。。。
- 再接下来是所有线路的实时解析响应与智能解析的曲线图,这个可以帮助总览所有NS下的合并统计,作为日常基线、月度等报表内容。也可以宏观的看出整体的DNS解析量状态。过度的偏离都属于异常情况。这里的非智能解析是指的所有非GTM智能模块响应的解析,也就是说包含了非wideip的域名解析,wideip LB算法失效导致的BIND解析。所以如果将dashboard切换为某个wideip的域名视角的话,则可以看出该域名智能解析算法失效的统计,如果你的算法是topology算法的话,那么可能是你的topology兜底规则存在问题,使得解析进入了BIND。注意这里我们没有提最优解析(即解析的结果确实是规则设定的)统计,对于最优解析统计是一个比较复杂的工作,如果你确实有这么方面需求,请在部署了这个标准的可视化后联系sales(哦不,联系SE)来帮助你提出具体的解决方法,由于方法涉及的irule每个客户都需要定制化,所以没有包含在此通用的irule方法里。
- 在实时智能与总解析图右侧是 智能与非智能解析的占比环图,理论上智能解析占比越高越好,如果你的智能解析占比很低,你有必要将更多的域名部署为wideip解析(F5 DNS V12版本后可以对更多的解析类型使用wideip智能解析配置,使用wideip的解析性能要远高于非wideip解析),而对于依旧不能使用wideip进行解析配置的域名,则建议启用DNS express来优化你的DNS架构及性能。非智能解析占比越高,意味着你的DNS系统遭受DNS DDOS攻击时候系越脆弱。
- 再接下来的视图是各条线路的实时智能解析与非智能解析构成图,这个可以进一步的帮助从每条线路的视角来实时观察分析各条线路上的智能与非智能解析,如果某一条线路的非智能解析占比突然变高,你需要考虑是否是该线路上的DNS设备出现了攻击尝试的可能性,或者是否有因iquery跨线路问题导致的健康检查不稳定性所导致的该线路上动态算法失效的问题(结合具体实际判断,一般如果你是F5厂商推荐的第二代DNS架构体系,理论上不用怀疑iquery问题,可以直接优先怀疑攻击问题)
- 再接下来是各条线路的实时响应状态构成,可以帮助判断各条线路上有效解析与无效解析的分布情况,如果REFUSED或者NXDOMAIN明显多,有必要启用DNSX或者使用DNS firewall进行DNS防护。而如果通过钻取分析后,发现这些无效解析与某些固定的IP有关系,且这些固定的IP基本有效解析很少,则可以比较安全的封禁这些LDNS ip, 这些地址可能为攻击地址。当然业务如果在程序里调用了过时废弃的域名或者写错了域名等也会导致这样的结果,可以反馈给业务部门
- 接下来的一排三个饼图,分别是热门域名top10,解析类型占比,响应状态占比。 热门域名可以侧面衡量业务热门程度,特别是临时活动类域名(结合该域名的地理热力图)。也是日常的一个基线,如果突然某个域名变得很热门,抛开业务因素,可能需要怀疑攻击,或者TTL问题。 DNS解析类型占比,可以直观看出目前有哪些解析类型请求过,对于明显我们不存在的解析类型,或者某个我们并没有配置的解析类型占比很高,说明存在攻击意图,可以通过DNS firewall进行过滤。
- 最后两行视图主要是分NS线路的总解析数量以及各个响应状态的总统计,可以作为月度报表,或者在钻取显示某个LDNS、城市、某个域名时的关联统计值,方便进一步确认问题。更多有意义的用法,可能在实际使用中能发现更多。
- DDOS 攻击,水滴攻击 等场景分析请参考https://www.myf5.net/post/2504.htm
- 缓存投毒攻击的判断,在正常情况下,一个城市或者DNS的解析是相对稳定的解析态势。一般来说投毒着为了使得投毒效果最佳,投放的TTL都会很大,因此直接效果就是一个LDNS不再发送请求过来。所以如果一个稳定解析的地区/LDNS的解析数量突然大幅度下降变得很少,可能就需要怀疑为缓存投毒了(当然该LDNS出现故障也有可能,但是辅以人工解析验证可以很快判定
0x03 相关iRule及ELK设置
请访问https://github.com/myf5/f5-elk-demo/tree/master/DNS%E5%8F%AF%E8%A7%86%E5%8C%96
0x04 DNS安全与可视化的思考
如果上述的可视化能给你带来一些思考,将是本篇文章的最大价值。除此之外,你或许还可以把思维转向到内网DNS,内网DNS(特别是针对办公上网场景)的可视化在DNS安全管控,病毒、APT攻击,垃圾邮件等方面的洞察还是很有意义的。别忘记实际上F5 DNS也具备作为Cache DNS的功能,同时提供RPZ以及与LTM HTTP/Socks代理、Urlfiltering以及出向SSL可视化的整体结合的公网访问安全管控的方案。
下面这些文章和信息可以提供一些更多的DNS安全方面思路:
》以及从网上节选的参考信息来说明内网DNS安全可视化的重要性(原文):
远控木马
识别访问“远控”木马的网络流量,及时发现网络内可能存在的感染木马的主机,阻断其与“远控”中心服务器、下载服务器的连接 勒索软件
识别勒索软件产生的网络流量,及时报警并阻断勒索软件的连接尝试,避免可能产生的损失 APT攻击
识别对APT攻击相关网站的访问,保证网络内部数据安全 DNS攻击
识别网络外发起的DNS攻击流量,及时阻断,保证网络DNS服务器和网络内主机的正常运行 敏感数据泄漏
发现可能存在的内部敏感数据泄漏,并追查数据流向 DGA
识别基于DGA技术生成的恶意域名,阻止未知病毒活动。 FFSN
识别Fast-Flux网络访问 DNS流量携带恶意软件
发现伪装成DNS流量的网络交互行为 非DNS协议流量
发现在53端口的非DNS流量 挖矿机
识别BitCoin挖矿行为产生的网络流量,进而发现网络内可能存在的病毒感染 暗网流量
发现Tor网络流量,预警可能存在的不规范网络行为 无效域名访问
识别对无效域名的访问,以及背后可能存在的病毒感染或攻击行为 僵木蠕
发现僵木蠕活动痕迹 勒索软件
发现勒索软件活动痕迹 网页挂马攻击
用户访问被挂马的网站,会导致在不知情的情况下自动下载并执行恶意代码。 ======= dns 流量包分析 僵木蠕捕获
1. 在数据包bjzh-dns-1022.pcap中发现了疑似恶意软件行为活动痕迹。沦陷主机访问c2网址ipv6microsoft.dlmix.ourdvs.com 2. 在数据包bjzh-dns-0.pcap和bjzh-dns-2021.pcap中发现疑似远控木马活动痕迹,文件哈希为:B378307724c60db1b6ffea66a30fbc7c71a150e6f0b739de0c6c95e1d97ea5cc 恶意代码下载
1. 在数据包bjzh-dns-2077.pcap中发现下载恶意代码的痕迹,沦陷主机访问的域名为:d.img001.com 2. 在数据包bjzh-dns-2076.pcap中发现下载恶意代码的痕迹,沦陷主机访问的域名为:d1.kuai8.com 勒索软件捕获
1. 在数据包bjzh-dns-1008.pcap中发现勒索软件活动痕迹,沦陷主机访问域名:nsjicml.com,iwrmorzswyk.com 恶意网址访问
1. 在数据包bjzh-dns-3018.pcap,bjzh-dns-3032.pcap中发现恶意网址访问痕迹,沦陷主机访问域名为:t.t70123.com 2. 在数据包bjzh-dns-2025.pcap中发现恶意网址访问痕迹,沦陷主机访问域名为:z1.zedo.com