分析一款名为iauzzy.exe的病毒
一、病毒基本信息:
Icon GraphicFile Size (bytes):8329 bytes
Signed?:Packed: UPX -> www.upx.sourceforge.net
Unpacked: Microsoft Visual C++ v4.2
File Hash:md5,2F359A346CC2CDEFE62BF0DAF13D8B6A
Imp Hash:1AF0CE2225B2530C53B32CB60D0046BC
Packed: UPX
二、行为分析
打开Fakenet和ProcessMonitor来监测网络、文件,注册表等信息变化。然后将生成出来的PCAP包和CSV文件放入ProcDot中进行分析。
Fakenet监控记录
访问的网址:slack.isfs.org.hk,127.0.0.2,www.mmbest.com,testirc.88cc.org
端口:6667,103
病毒对文件系统和注册表的操作详情:
a. iauzzy.exe创建名为1484的线程,并生成文件qqt.exe
b. 线程1484修改注册表,将qqt.exe加入自启动表
c. 线程1484 创建一个新的进程qqt.exe (PID:2536)
d. qqt.exe 创建两个线程
e. iauzzy.exe 将自己关闭(这是为什么之后找不到iauzzy.exe这个进程)
f. 线程尝试访问和修改一些设置(ProxyEnable,SaveLegacySettings, CachePrefix, ProxyBypass, IntranetName, etc.)
三、动态分析
iauzzy.exe是个年代比较久远的病毒,所以脱壳工程比较简单,直接用UPX就把壳脱掉了,先用ida pro查看下可疑字段和程序结构。
发现了远程通信后门,阅读完相关代码后进行了标注。
标识过的部分程序结构通过阅读后门部分的汇编代码,结合之前的该病毒访问的6667和103端口,可以推测该病毒使用IRC协议进行远程通信。
IRC是Internet Relay Chat的英文缩写,是应用层的即时通讯协议。特点是小而美,原理非常简单,用户运行基于IRC协议的客户端软件,连接上IRC服务器,就可以开始聊天了。黑客可以通过IRC远程发送聊天内容,再用已经运行的病毒进程解析内容,从而执行远程指令。
当通信双方通过IRC建立连接后,可以通过/list查看所有channel,然后加入某个channel来进行会话,这里channel跟QQ里面的群组很相似。所以接下来的目标是:
1.找到6667端口和103端口中的channel
2.查看后门指令内容和实际执行效果
首先要做些准备工作:
将病毒尝试访问的网站们重定向到本机。通过更改C:\Windows\System32\drivers\etc\host将网站名加进去,这时病毒运行后尝试连接的服务器就变成了本机。
更改host
下载并安装xchat,开启irc服务器,监听本地192.168.1.00:6667
将病毒扔到Ollydbg中运行调试。运行病毒之后,在Xchat中发现channel:#zeus
#zeus为聊天频道
输入指令:/join #zeus,加入频道,发现已经有一个用户dpp在该频道了,这个已经存在的用户dpp其实就是本机,也就是实际情况中的肉鸡,而Ran2是我新登录的账号,在实际情况中的黑客。
聊天页面
可以在Ollydbg中容易的查找出可疑的指令,一般以!@开头:
可疑指令
实验证明,很多功能需要!@login正确后才能执行,所以先破解login的密码,跟踪!@login指令,发现有字符串比较的指令,得到登录密码:
字符串比较模块登录之后就可以使用所有的远程控制指令了,这里只说一下远程执行程序的指令!@run
远程执行记事本
执行成功:
新打开的记事本
四、总结
这是一次比较完整的分析过程,包括了常规的行为分析,静态分析和动态分析。
在行为分析部分,主要熟悉了Fakenet和ProcessMonitor的用法,以及用ProcDot生成图表来直观地查看病毒每一步的行为,包括是否修改注册表,访问的网站和端口,是否创建文件等。在静态分析部分,用IDA PRO找程序框图,并分析大概的程序逻辑,可疑字段等,为动态分析做充足的准备。
在行为分析和静态分析之后,确定该病毒使用的通信方式:IRC。之后收集有关IRC协议的资料,更改host等网络配置,使本机可以复现实际攻击时的情景。通过动态分析得到黑客登录所用的密码,并执行相关恶意指令查看效果。