DNS隧道通信的检测
DNS 隧道通信
DNS 隧道通信是C&C常用的通信方式,一般常用的编码方式Base64,Binary编码,NetBios编码等,Hex编码等。且请求的Type一般都是txt(为了返回的时候能够加入更多的信息)。payload部分一般是子域名。攻击者自己控一个域的DNS权威应答服务器,然后等待失陷主机请求域名,本地DNS服务器迭代查询转发请求到那台权威DNS,从而实现失陷主机与C&C Server的通信。
DNS 检测方案
+ 频率大:一般远超正常的DNS频率;
+ 不重复:一般子域名变化很多,很少重复;但不排除网络不通一直发送前几个指令的请求;
+ 文本类型:一般为了传输更多数据,使用TXT类型;
+ 域名很长,有一段base64、2进制或16进制的编码段的域名;
备注: 可以根据以上做个打分,但是打分机制还没有想好,下面代码中只是一个小例子
+ 规则一:domain长度大于52,每增加一个,增加0.5分;
+ 规则二:出现出去26个字符和点以及-的字符串,则乘以2;
+ 规则三:如果请求type是TXT则严重怀疑,分数乘以2;
代码
https://github.com/cisp/DNSTunnelDetectTools
效果:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
DNS隧道通信检测工具
作者:陈然
版本:V1.0.3
联系:WeChat-Number -> cr1914518025
"""
#脚本信息配置:
_author = "隐私保护"
_nicky = "挖洞的土拨鼠"
_version = "v1.0.3"
_version_string = """