【原创,第一次发帖】白加黑远控木马分析
本帖最后由 dsb2468 于 2018-7-30 23:10 编辑ps:病毒不是新病毒,新人练手啦,第一次发帖,大家一起交流学习啦:Dweeqw
概述:
病毒伪装成一个DLL文件,QQ游戏启动的同时,病毒DLL也会被加载启动(也叫DLL劫持)。病毒加载之后,会在内存中释放出远控模块,通过建立本地端口映射的方式,意图绕过某些安软的网络拦截,从而控制目标计算机。
病毒目录文件如下:
病毒运行加载流程如下:
详细分析:
1、启动方式:
首先,病毒作者将关键文件全部隐藏打包了起来,只留了了一个快捷方式,通过调用CMD的方式,打开目录下的QQ游戏大厅程序:
而QQ游戏大厅程序在启动的过程中,会去加载一个名为:factory.dll的文件,由于Windows本身所设定的DLL加载顺序,目录下的这个factory.dll文件将会被QQ游戏大厅所加载:
2、factory.dll
将原版factory.dll和这个病毒的factory.dll进行比较,发现后者多了一些额外的导出函数,仔细观察甚至还会发现,后者有两个导出函数的地址竟然相同,通常一个正常的DLL文件不会这样:
在factory.dll的导出函数中,被调用的是CreateFactorys函数,这个函数的主要作用是执行病毒的初始化安装操作:
在病毒的初始化安装操作中,会先获取加载当前DLL的模块的路径,然后检查此路径下是否存在io.dat文件(被加密的DLL文件),若不存在则直接退出,猜测是用这种方法来反自动化检测程序,防止被发现。若文件存在,则读取到内存中,然后进行解密操作,解密出来发现是另一个恶意DLL文件(远控的核心部分):
此处所使用的解密算法,通过对比LZMA的压缩算法库(右边是LZMA压缩库的源代码),可以看出,作者采用的其实就是LZMA压缩库:
解密io.dat文件到内存,并且完成校验(检查是否有正常的PE结构)后,将会被加载执行:
程序运行后,会去获取这个新DLL的导出函数地址,并且通过判断当前加载模块的名称是否含有crossfire.exe字样,来执行不同的功能(因为病毒成功加载一次之后,会将文件名改成crossfire.exe,所以从文件名就能够判断是否是首次加载):
3、解密出来的新DLL
这个新DLL拥有2个导出函数QtxVGA和Update,从前面的分析我们可以得知:Update函数用于首次加载执行,而QtxVGA函数用于非首次加载执行。
(1).Update导出函数
在Update函数中,病毒会首先检测是否存在360的进程,若存在,则直接退出。接着,通过检查互斥体(c91fbfd3142a697886)的存在,来判断系统是否已经被感染,以确定是否是否继续执行,若未感染,则继续执行:
接着,将同目录下的文件全部复制到C:\Users\Administrator\AppData\Roaming\MenuStar,并将加载模块的重命名为crossfire.exe:
为了不让双击快捷方式的人产生怀疑,病毒还会释放打开一张准备好的图片,让人放松警惕,图片被加密保存在了temp,dat文件中,解密后调用命令行打开图片:
图片打开之后,病毒会以无窗口的形式运行crossfire.exe,并且在在C盘下创建kwoyou.ini文件,来保存记录病毒运行的日志:
(2).QtxVGA导出函数
函数一开始会去读取之前的日志文件,然后会创建一个线程去配置电脑上的网络代{过}{滤}理信息,如果存在360的话,还会配置端口转发,将96端口的访问全部转发到116.28.191.115:96上去。此处设置端口转发的目的,是和目标服务器之间建立SSH隧道连接,从而绕过防火墙的拦截。将本机的某个端口(96)转发到远端指定机器的指定端口(116.28.191.115:96);本地端口转发是在localhost上监听一个端口。
接着,就进入到了远控的关键函数F_HackKernelModule_0了,在F_HackKernelModule_0中,主要包含了两方面的内容:
1、获取计算机的IP、名称、系统版本号等信息,加密送给黑客
2.根据黑客发来的指令,执行相应的操作,如:关闭注销系统、读取模拟键盘、鼠标的操作、屏幕监控、修改注册表、系统服务等
具体如下:
1、对键盘、鼠标、剪切板的操作:
2、对硬盘文件的操作:
3、对系统服务的操作:
4、记录按键记录,并保存到dump.log文件中
5、对注册表的操作:
6、获取屏幕监控截图:
病毒的远控地址为:116.28.191.115:947(已下线)。另外,病毒在与控制端建立连接是,并未直接连接,而是在系统本地利用netsh,创建了一个本地的端口代{过}{滤}理:
猜测创建端口代{过}{滤}理的做法,是为了隐藏其所创建的网络连接,当用户在查看网络连接时,不会被发现该连接是由病毒自身所创建:
==================================================
补充:
病毒的第一个DLL文件(factory.dll),其实是一个PeLoader,主要用于加载其他PE文件到内存中执行,我尝试还原了一下,大致流程如下:
1、加载读取目标DLL文件到内存中,获得文件操作句柄
2、检查PE文件头、PE标志、程序运行环境是否符合预期
3、在堆上分配一个长度52的空间,用于存放一个自定义结构体,结构体定义如下:
4、在内存中申请一段文件头大小的空间,复制文件的文件头信息到这段空间中,并将该空间的地址保存到结构体的dwNtHeaderAddr中
5、复制节区表,调整重定位表、IAT表,设置节区的读写属性,设置TLS表
6、查找目标导出函数的地址,通过判断加载模块的文件名,执行不同的目标导出函数
相关的IDA分析文件,和还原出来的PeLoader加载部分代码,一并附在网盘链接中啦(论坛限制了大小,传不了,囧)
IDA分析文档里面的注释超多,强烈建议和我一样的新手,下载下来试试看:lol
IDA分析文件下载地址:https://www.icloud.com/iclouddrive/0n9T3_B1T7X4tr3OkaU77P1GQ#%E5%88%86%E6%9E%90.rar
病毒样本下载地址:https://www.icloud.com/iclouddrive/06MZY3wDA3y5ddNjkNBAW_AeA#%E7%97%85%E6%AF%92%E6%A0%B7%E6%9C%AC.rar
加载器部分代码还原:https://www.icloud.com/iclouddrive/0gXpzsigRSTuLofB7ofqpbnYA#%E5%8A%A0%E8%BD%BD%E5%99%A8%E9%83%A8%E5%88%86%E4%BB%A3%E7%A0%81.rar
涉及到的加解密算法:https://www.icloud.com/iclouddrive/0JeQ1e0lI9Td2GV1WzlvardjA#%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95.rar
综上,就是本次分析的记录信息,新手练习,大神轻喷{:1_1:}
虽然我看不懂,说不定以后就用上了! 受教了 LZ很用心啊 xuwang1234 发表于 2018-7-30 22:55
虽然我看不懂,说不定以后就用上了!
有道理,哈哈~~ 楼主也算的上是中不溜啦 虽然不懂,但还是谢谢楼主的精彩分析!!! 哈哈 学习中,树状图是真的一目了然,小白也能明白整个流程了。 谢谢楼主的精彩分析!!!{:1_919:} 第一次就这么牛 原来这样的原理啊学习了学习了