病毒专杀工具的制作

课题内容:

请使用IDA或其它分析工具分析本次的样本文件,写一个简要的行为分析报告,并编写一个针对于这次样本的专杀(恢复)程序。
要求:
1、样本分析只要说明主要行为即可。提示:sub_401320主要用于文件加密操作;sub_401470主要用于查找docx文件;sub_4017D0主要用于创建自删除脚本文件;sub_4019B0主要用于创建readme说明文件。
2、专杀工具需要能够识别本次的样本文件,可采用课堂上说过的两种取特征码的方法(也可以采用你自己的方法)进行样本识别与查杀。
常用的特征提取方法有:计算病毒哈希值、提取病毒本体指定偏移位置的一段十六进制代码。
3、专杀工具需要有文件恢复功能,需要采用逆运算的方式解密文件,同时还需要修改文件后缀,即改回docx的扩展名。专杀工具采用的编程语言不限。

分析过程

首先将病毒程序置入IDA中并找到程序入口进行分析:

病毒IDA解析

在程序入口这边我们看到了几个call函数调用了其他功能,着重对这一部分进行分析:

函数入口

对主程序入口进行反编译进行分析:

主程序入口反编译

首先可以看到的该病毒程序调用了GetCurrentDirectoryA的函数,推测可知该函数为获取本程序在系统中所在的位置。接下来调用了地址为sub_401014的函数并给其传递了&buffer参数,大致猜测该函数在这个文件所在的目录地址进行一些操作,跳转该地址进行进一步分析。

跳转地址

跳转的代码

代码有点多,通过伪代码进行分析:

伪代码

在这个伪代码中我们可以看到,该函数对该程序所在目录下的所有文件进行搜索,搜索对象包含全体文件,当找到后缀为.docx文件将对其进行改名操作变为后缀.crc32的文件。这也符合课题提示中

sub_401470主要用于查找docx文件的操作。

在这里我们还看到其还调用了地址为sub401023,我们对其进行追踪:

调用地址跳转分析

在这里我们看到跳转至sub_401320地址,我们接着进行跳转:

跳转至另外一个函数

内容比较多,我们通过伪代码进行分析:

跳转函数伪代码

在这里我们看到该函数首先调用了CreateFile()函数获取句柄,然后接着使用ReadFile()函数读取被加密的文件,在这里面我们看到了ReadFile()函数还调用了NumberOfBytesRead还进行了一个循环,回到汇编语言我们可以看到:

配合伪代码我们可以得知,该病毒程序对被害文件进行了异或运算,对该文件的前16位进行异或运算,从指针开始处读取16位,将他们分别与1进行异或运算,达到对文件“加密”的结果。这也符合题目所给的地址为sub_401320的操作为文件加密操作的提示。

接下来继续进行分析一下两个被调用的函数:

sub401005

先分析sub401005地址:

在这里我们看到了push了一句”This is a ransomware.”提示该程序位一个勒索程序,利用伪代码进行分析:

勒索病毒伪代码

在这里我们可以看到该程序调用了createfile()函数,在此可以得知该病毒程序在所在的目录下创建了一个readme.txt的文件,留下信息。这部操作应该也是勒索程序留下的信息。

接下来该程序进行了运行sub_401019地址的函数:

在这里我们看到了一个特征很明显的delself.cmd的类脚本文件,这里我们可以得知该程序在程序所在目录下创建了一个删除自我的脚本,还利用WinExec函数执行了该脚本。在伪代码中我们看看脚本的内容:

在这里我们可以看到该脚本文件内容含有删除该病毒程序的字眼并删除该脚本的字眼,可以得知该程序进行了自我删除操作。

编写病毒专杀工具

学习提供的教程:病毒木马查杀实战第019篇:病毒特征码查杀之编程实现

杀查病毒首先需要做的是找到病毒的特征,在上面的分析中可以看出该病毒文件在运行过程中会产生一个交readme.txt的文件,而文件内容为一段话:This is a ransomware.而这就是本次专杀程序所要利用的特征值。

首先从IDA中找到“This is a ransomware.”这句话所在的地址:(shift+f12调出字符集)

我们可以看到这串字符所在的地址为00420064,我们将virus.exe文件放置于hex editor中进行分析:

在hex editor中我们可以看到他所在的地址为00020064,接下来我们可以进行专杀程序的编写。

有一点需要注意,需要将“This is a ransomware.”转换为16进制,结果为:

“\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x72\x61\x6e\x73\x6f\x6d\x77\x61\x72\x65\x2e\x00\x00\x00\x00\x00\x00\x00\x72\x65\x61\x64”

转换后即可设置病毒的特征杀查值:

经过编写该程序可以达到对病毒的查找功能。

专杀工具的恢复文件功能

前面分析可以知道该病毒程序进行的加密方法为异或运算,然而异或运算是一个双向过程,因此也给了我们一个解密的机会。因此,我们可以采用与1的逆运算即可解密,解密效果如下:

只针对本文出现的勒索病毒,现实中的病毒采用复杂的运算加密,很难通过逆向分析去把加密文件解锁。

感想

通过本文所学的知识,了解到一些病毒毒理的分析,拓宽了视野。若文中有误烦请指点。

2020年11月8日星期日


病毒专杀工具的制作
http://blask.cn/2020/11/18/病毒专杀工具制作/
作者
Wayne Li
发布于
2020年11月18日
许可协议