“DNS隧道”盗号木马分析——类似hjack偷密码然后利用dns tunnel直传数据发送出去
摘自:http://www.freebuf.com/articles/network/38276.html#
运行后不断监控顶端窗口,一旦发现为QQ,就弹出一个自己伪造的QQ登陆窗口,诱导用户输入密码

编码与发送
如果你不幸输入了密码并点击了登陆,那么请节哀——你中招了。你的QQ号和密码这些隐私数据正在木马指令的授意下,被你自己不惜高价买下的高性能CPU和内存飞速的进行着编码,并最终由你所钟爱的那块网卡发送到盗号者的服务器上……这绝对会是一个忧伤的故事……
但木马的编码过程却颇费周章:
首先,是将一个固定字符串“aaaaaa”与你的QQ号和密码这三组字符串,以制表符(’\t’)相连,拼成一个新的字符串,并将其转为UTF-16编码

然后,将上面的拼出的字符串的字符数(非字节数,实际上由于是UTF-16编码,字符数是字节数的1/2),保存为大端的WORD形式

接着,再将之前得到的账号信息字符串取Hex字符串后再次进行UTF-16编码……
我自己说着都乱……举个例子,字符’a',也就是’\x61′,UTF-16编码后就是’\x61\x00′,取Hex字符串就变成了’6100′,也就是’\x36\x31\x30\x30′,再UTF-16后则是’\x36\x00\x31\x00\x30\x00\x30\x00′
好吧,我猜大部分人还是晕……直接给大家看看最终结果吧,你的账号信息已经变的面目全非了:

同时,前面获取到的字符数也做同样的处理,并拼到上面这个字符串的前面,如下:

最后,以16字符为一批进行循环加密,并将加密后数据转成UTF-16编码的Hex字符串,最终结果如下:

这么麻烦,当然是为了绕过各种检测和分析系统,但同时还有一个目的——盗号者需要加密后的结果依然保持所有字符必须只有字母和数字组成(理论上还可以有连字符)。
这是为了给这个木马最关键的一步做好铺垫——以DNS查询的形式将账号信息发送出去!
木马在内存中将加密后的字符串,前面拼上”www.”,后面拼上”.cn”,得到了一个根本不存在的域名。再填上必须的结构,精心构造出了一个DNS查询数据包。

再将这个数据包用UDP协议发送到了自己的服务器的53端口——一切看起来都如此的天衣无缝。
一个DNS查询而已,没有额外的非法数据,只是查询了一个不存在的域名,伪装的够深了吧!
百密一疏
但其实,通过Wireshark抓包还是可以看到一个很讽刺的事实——这个数据包依然是畸形的!根本不是正常的DNS查询。

根据Wireshark的报错信息,可以看到问题出在Queries这一段上,那具体是哪里异常了呢?QNAME部分的每个Label和前面的字节数都能对应上,QType是0×0001——A类请求,QClass是0×0001——IN。看着好像都没错啊?
其实问题还就是出在了木马作者精心拼凑的这个加密字符串上,这一段Label的字节数为0×80——即128字节。而DNS请求的数据结构中队Label的长度可是有严格的规定的:
Labels must be 63 characters or less.(参考RFC882 [Page30])
也就是说Label被允许的最大长度只有63字节——即0x3f,只要超过了这个值,即为畸形!
最后
360的拦截截图是不能少的:

“DNS隧道”盗号木马分析——类似hjack偷密码然后利用dns tunnel直传数据发送出去的更多相关文章
- dns隧道攻击原理及常用工具流量分析
DNS协议是一种请求应答协议,也是一种可用于应用层的隧道技术.虽然DNS流量的异常变化可能会被发现,但是在基于传统socket隧道已经濒临淘汰,TCP.UDP通信大量被安全设备拦截的大背景下,DNS. ...
- dns隧道 dns2tcpd
有些网络的防火墙设置只允许端口53的UDP流量,就不能通过tcp搭建隧道,这种情况下我们可以通过UDP搭建DNS隧道,通过搭建一个DNS服务器委派的子域,这个子域因为使我们自己搭建的主机,这时候就可以 ...
- DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp
DNS隧道之DNS2TCP使用心得教程 转自:http://blog.creke.net/750.html DNS2TCP是在上次DNS隧道大检阅时提到的一个DNS隧道. 在2010年6月的更新(也是 ...
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...
- DNS隧道工具:iodine使用
iodine可以通过一台dns服务器制造一个IPv4数据通道,特别适合在目标主机只能发送dns请求的网络中环境中使用.iodine是基于C语言开发的,分为服务端程序iodined和客户端程序iod ...
- 技术报告:APT组织Wekby利用DNS请求作为C&C设施,攻击美国秘密机构
技术报告:APT组织Wekby利用DNS请求作为C&C设施,攻击美国秘密机构 最近几周Paloalto Networks的研究人员注意到,APT组织Wekby对美国的部分秘密机构展开了一次攻击 ...
- 病毒木马查杀实战第012篇:QQ盗号木马之逆向分析
前言 在本系列的文章中,对每一个病毒分析的最后一个部分,若无特殊情况,我都会采用逆向分析的手段来为读者彻底剖析目标病毒.但是之前的"熊猫烧香"病毒,我用了三篇文章的篇幅(每篇250 ...
- 病毒木马查杀实战第010篇:QQ盗号木马之十六进制代码分析
前言 按照我的个人习惯,在运用诸如IDA Pro与OllyDBG对病毒进行逆向分析之前,我都会利用一些自动化的工具,通过静态或动态的分析方法(参见<病毒木马查杀第008篇:熊猫烧香之病毒查杀总结 ...
- 一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案
摘自:http://www.freebuf.com/articles/network/149328.html 通过以上分析得出监控需要关注的几个要素:长域名.频率.txt类型.终端是否对解析ip发起访 ...
随机推荐
- 线性规划(LP)资料下载
1.学习用PPT harvard gondzio IOE610 mit cxg286 含matlab程序 2.测试库 BPMPD netlib fsu 3.软件测试 BENCHMARKS FOR OP ...
- cin详解(get()、getline()、clear()、sync())
简述 在C中,输入输出用scanf和printf,在输入数据的同时还需说明数据的类型,如果输入数据较多,那就很麻烦,而C++中也有相似的东西cin和cout,它们来自C++的一个名叫" io ...
- POJ 3368 Frequent values(RMQ 求区间出现最多次数的数字的次数)
题目链接:http://poj.org/problem? id=3368 Description You are given a sequence of n integers a1 , a2 , .. ...
- RabbitMQ inequivalent arg 'durable' for exchange 'csExchange' in vhost '/': received
错误:inequivalent arg 'durable' for exchange 'csExchange' in vhost '/': received 使用不同的MQ客户端时,常常会出现以上错误 ...
- 【C++探索之旅】第二部分第一课:面向对象初探,string的惊天内幕
内容简单介绍 1.第二部分第一课:面向对象初探.string的惊天内幕 2.第二部分第二课预告:掀起了"类"的盖头来(一) 面向对象初探,string的惊天内幕 上一课<[C ...
- Domino 使用递归算法获取视图值
在关系数据库中,有两字段是父子关系.通过递归算法,输入一个父ID,能够获取全部相应的子ID.这种数据结构在组织架构中常常使用.显示一般使用树形结构.在Domino中相同能够处理这种情况,下面是个小de ...
- angularjs作用域和函数调用
<!DOCTYPE HTML> <html ng-app> <head> <meta http-equiv="Content-Type" ...
- ★★★【卡法 常用js库】: js汇合 表单验证 cookie设置 日期格式 电话手机号码 email 整数 小数 金额 检查参数长度
[卡法 常用js库]: js汇合 表单验证 cookie设置 日期格式 电话手机号码 email 整数 小数 金额 检查参数长度 // +---------------------- ...
- 32.AngularJS 表达式
转自:https://www.cnblogs.com/best/tag/Angular/ AngularJS 表达式写在双大括号内:{{ expression }}. AngularJS 表达式把数据 ...
- [NOIP2015模拟10.22] 最小代价 解题报告 (最小生成树)
Description 给出一幅由n个点m条边构成的无向带权图.其中有些点是黑点,其他点是白点.现在每个白点都要与他距离最近的黑点通过最短路连接(如果有很多个黑点,可以选取其中任意一个),我们想要使得 ...