摘自: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直传数据发送出去的更多相关文章

  1. dns隧道攻击原理及常用工具流量分析

    DNS协议是一种请求应答协议,也是一种可用于应用层的隧道技术.虽然DNS流量的异常变化可能会被发现,但是在基于传统socket隧道已经濒临淘汰,TCP.UDP通信大量被安全设备拦截的大背景下,DNS. ...

  2. dns隧道 dns2tcpd

    有些网络的防火墙设置只允许端口53的UDP流量,就不能通过tcp搭建隧道,这种情况下我们可以通过UDP搭建DNS隧道,通过搭建一个DNS服务器委派的子域,这个子域因为使我们自己搭建的主机,这时候就可以 ...

  3. DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp

    DNS隧道之DNS2TCP使用心得教程 转自:http://blog.creke.net/750.html DNS2TCP是在上次DNS隧道大检阅时提到的一个DNS隧道. 在2010年6月的更新(也是 ...

  4. DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网

    我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...

  5. DNS隧道工具:iodine使用

      iodine可以通过一台dns服务器制造一个IPv4数据通道,特别适合在目标主机只能发送dns请求的网络中环境中使用.iodine是基于C语言开发的,分为服务端程序iodined和客户端程序iod ...

  6. 技术报告:APT组织Wekby利用DNS请求作为C&C设施,攻击美国秘密机构

    技术报告:APT组织Wekby利用DNS请求作为C&C设施,攻击美国秘密机构 最近几周Paloalto Networks的研究人员注意到,APT组织Wekby对美国的部分秘密机构展开了一次攻击 ...

  7. 病毒木马查杀实战第012篇:QQ盗号木马之逆向分析

    前言 在本系列的文章中,对每一个病毒分析的最后一个部分,若无特殊情况,我都会采用逆向分析的手段来为读者彻底剖析目标病毒.但是之前的"熊猫烧香"病毒,我用了三篇文章的篇幅(每篇250 ...

  8. 病毒木马查杀实战第010篇:QQ盗号木马之十六进制代码分析

    前言 按照我的个人习惯,在运用诸如IDA Pro与OllyDBG对病毒进行逆向分析之前,我都会利用一些自动化的工具,通过静态或动态的分析方法(参见<病毒木马查杀第008篇:熊猫烧香之病毒查杀总结 ...

  9. 一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案

    摘自:http://www.freebuf.com/articles/network/149328.html 通过以上分析得出监控需要关注的几个要素:长域名.频率.txt类型.终端是否对解析ip发起访 ...

随机推荐

  1. 用TamperMonkey去掉cdsn中的广告

    最近CSDN需要登录后才能查看更多内容,有点影响心情 解决方案 添加一段书签 javascript:(function(){document.getElementById('article_conte ...

  2. Geany IDE搭建

    http://blog.sina.com.cn/s/blog_567e650201010x5e.html

  3. Qt之OpenSSL

    简述 OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. 简述 下载安装 使用 更多参考 下载安装 ...

  4. LeetCode 232: Implement Queue using Stacks

    Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of ...

  5. Linux Shell脚本编程学习笔记和实战

    http://www.1987.name/141.html shell基础 终端打印.算术运算.经常使用变量 Linux下搜索指定文件夹下特定字符串并高亮显示匹配关键词 从键盘或文件里获取标准输入 [ ...

  6. JS学习笔记-数据类型

    最初的JS学习已经过去大半年的时间了,至此感觉对JS的使用与理解并非非常深入,因此在近期的工作之余也開始了新一轮的JS学习. 几天时间过去了,对于一些基础内容的学习还是非常有必要的,就从今天的又一次整 ...

  7. pig 调试(explain&amp;illerstrate)

    grunt> cat t.txt kw1 2 kw3 1 kw2 4 kw1 5 kw2 2 cat test.pig A = LOAD '/user/input/t.txt' as (k:ch ...

  8. User-defined types

    We have used many of Python’s built-in types; now we are going to define a new type. As an example, ...

  9. spring cloud集成 consul源码分析

    1.简介 1.1 Consul is a tool for service discovery and configuration. Consul is distributed, highly ava ...

  10. win10安装jdk8 配置环境变量

    参考:https://jingyan.baidu.com/article/6b97984dd257b41ca2b0bf86.html