摘自: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的拦截截图是不能少的:

最新文章

  1. [修正] Firemonkey TFrame 存档后,下次载入某些事件连结会消失(但源码还在)
  2. Java 理论与实践: 处理 InterruptedException
  3. jsp声称的java文件位置
  4. js判断图片加载完成后获取图片实际宽高
  5. AEAI EM费用管理系统V1.0.2版本开源发布
  6. 李洪强-C语言4-内存分析
  7. stm32上的Lava虚拟机开发进度汇报(3)
  8. 关于String s = new String("xyz"); 创建几个对象的问题
  9. javascript 数据结构和算法读书笔记 > 第三章 列表
  10. Lamd表达式
  11. Linux 静态库&动态库调用
  12. UML类图图示样例
  13. MySQL 实现调用外部程序和系统命令
  14. 原生aspx页面如何引用公共js和css
  15. Atom编辑器插件
  16. linux系统mysql主从配置
  17. 数字对——RMQ+二分答案
  18. node.js 爬虫动态代理ip
  19. Enigma Virtual Box:生成可执行文件。
  20. Python并行编程的几个要点

热门文章

  1. 获取mapper
  2. ActiveMQ客户端配置使用
  3. H3C S5130交换机堆叠操作
  4. HDU 4069 数独
  5. Win7+VS2010:mysql 源代码编译与调试
  6. storm trident function函数
  7. NPOI操作Excel 004:写入空Excel(添加保存提示框)
  8. STL源代码学习(vector篇)
  9. 智课雅思短语---四、Exploit to the full one’s favorableconditions and avoid unfavorable ones
  10. asp.net 项目发布注意点