揭秘“披着狼皮的羊”感染型病毒Belarus

computer-virus.jpg

前言


每当人们谈起病毒,蠕虫之类的话题,总给人一种让人不寒而栗的感觉,因为此类恶意程序通过自我复制迅速传播,给计算机造成极大的破坏。并且为了躲避杀毒软件的查杀,通常感染型病毒都会将自身分割变形或加密后,再将自身的一部分或者全部附加到宿主程序上。

今天分析的这款感染型病毒,可以说是感染型病毒中门槛最低最“傻瓜式”的一种。虽然不是多态病毒,并且该病毒程序难度并不高,但是病毒作者的思路也有”奇葩“和有趣的地方,故拿来与大家分享。

感染症状


新建文件夹“goat”,用来存放待感染的目标文件,观察这些PE文件被感染后的特征,如图:

p1.PNG

如上图所示,右图是目标文件感染后的截图,明显的看到文件图标更改了,并且每个文件的大小都增加了819KB。

样本分析


在正式分析之前,我们选择其中一个文件“test.exe”,观察其感染前后的文件大小,如图:

p2.PNG

如上图所示,右图为感染后的文件大小,文件增加了1014434 – 176175 = 838259 字节。

用PEID观察文件感染前后的PE区段的变化,如图:

p3.PNG

如上图所示,文件由原本的VC程序变成Delphi程序,并且区段也与未感染文件完全不同。让我们一层一层看清这只纸老虎的真面目。

用IDA打开病毒样本后,病毒入口点的代码如下图所示:

main.PNG

首先,病毒将自身释放到如下位置:“%system%\smrss.exe”,并通过修改系统配置文件的方法加入自启动。接着创建名为“BELARUS-VIRUS-MAKER”的互斥体,若病毒样本已经运行则退出,避免重复感染。

func1.PNG

然后,病毒释放自身到如下位置“C:\WINDOWS\system32\freizer.exe”,“C:\WINDOWS\svchost.exe”,并通过修改注册表启动项,开入开机自启动,如图:

func2.PNG

读取病毒文件末尾0×10个字节,主要包含了一个随机文件名和一个十进制表示的文件大小,如图:

drop.PNG

read_filesize.PNG

在“C:\windows\temp\”文件夹下创建文件,文件名为前面读取的病毒文件末尾0×10字节中的文件名,如图:

createfile.PNG

循环写入文件“C:\windows\temp\04004.exe”,写入文件的大小为前面读取的病毒文件末尾0×10字节中的文件大小,如图:

loopwrite.PNG

写入的内容为病毒文件后附件的PE文件,病毒文件最后一个区段的结尾偏移地址为:0×6800+0×200 = 0x6A00,0x6A00位置的PE文件就是将要写入“C:\windows\temp\04004.exe”的内容。如图:

embaded.PNG

sections.PNG

写入文件完成后,执行释放后的PE文件,如图:

shellexecute.PNG

查看释放出的文件大小,如图:

drop_cured.PNG

如上图所示,释放的文件大小为:176175字节,通过计算Hash值并比对发现,释放并执行的文件既感染前的文件。即未感染文件就在病毒文件的PE中。(“披着狼皮的羊”)

病毒程序遍历以下目录:”C:\”, “D:\”, “E:\temp”,获取文件后缀,若文件后缀为“exe”或“src”则感染,若文件后缀在“xlsx, xls, txt, jpg, jpeg, docx, doc, ppt, 3gp ”中,则直接删除文件。如图:

exts.PNG

ext_cmp.PNG

判断要感染的目标PE文件:是否是正在运行的进程,是否是病毒文件本身,是否文件中包含如下字符串 : “~c~a~n~n~a~b~i~s~~I~s~~n~o~t~~a~~d~r~u~g” (“大麻不是毒品”),以上条件若是则返回下一个文件,否则进行感染该PE文件,如图:

infect_file.PNG

如上图所示,感染目标PE文件时,生成长度为5随机数字字符串,然后拼接上“.exe”,如图:

rand.PNG

将待感染的目标PE写入病毒文件的后面,然后写入0×10字节的附加数据,包含原始PE文件的大小和下次感染其他PE时释放到“C:\windows\temp\”目录下的文件名。

至此,我们可以发现其实被感染后的PE文件,它的原始PE就附加在病毒文件后,当病毒文件运行时,从病毒文件的尾部释放为感染的PE文件到“C:\windows\temp\”下并运行,伪装成运行的是原始文件的假象。可以发现这个病毒程序其实就是披着狼皮的羊,只要稍做处理,就能修复被感染的PE。修复代码比较简单,有兴趣的话可以去下面的地址下载:

去感染(修复)代码下载:https://github.com/Voraka/VirusCurer_Belarus

样本:

6610da7873ffa71bb04a899f7dc99bbe

总结

感染型病毒的编译方式正在从传统的全部直接由低级汇编语言撰写,逐渐转变为高级语言撰写的方式。因此随着编写难度上大幅度降低,未来将有更多新型功能更强的感染型病毒诞生。