网络安全学习第4篇-使用特征码和MD5对勒索病毒进行专杀,并对加密文件进行解密

本文介绍了对一个勒索病毒样本的分析,详细讲解了其加密文件、查找docx文件、创建自删除脚本以及创建readme文件的主要行为。通过对病毒样本的分析,提出了两种专杀方法:特征码查杀和MD5值比对。专杀工具利用解密算法解密被加密文件并恢复扩展名为.docx。实验中还强调了分析病毒样本时寻找关键行为的重要性,以及正确理解基地址和偏移量的概念在病毒查杀中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请使用IDA或其它分析工具分析本次的样本文件,写一个简要的行为分析报告,并编写一个针对于这次样本的专杀(恢复)程序。

要求:

1、样本分析只要说明主要行为即可。提示:sub_401320主要用于文件加密操作;sub_401470主要用于查找docx文件;sub_4017D0主要用于创建自删除脚本文件;sub_4019B0主要用于创建readme说明文件。

2、专杀工具需要能够识别本次的样本文件,可采用课堂上说过的两种取特征码的方法(也可以采用你自己的方法)进行样本识别与查杀。

3、专杀工具需要有文件恢复功能,需要采用逆运算的方式解密文件,同时还需要修改文件后缀,改回docx的扩展名。专杀工具采用的编程语言不限。

4、本次实验需要提交实验报告以及专杀程序的源代码。

链接:https://pan.baidu.com/s/10YhRSY40GgWXKln8BE1F3Q
提取码:1yto


实验开始准备阶段:

首先从网络教学平台下载资源,然后把自己电脑的杀毒软件关掉,因为样本有可能会被杀毒软件认为是病毒。所以要把杀毒软件关掉。

注意:这个实验期末考试会选出一段进行考试,所以要注意


病毒样本分析


                                                                  (1)sub_401320文件加密操作分析


分析:

  1. sleep - 程序休眠一点时间
  2. CreateFileA - 创建一个新的文件
  3. 移动文件指针到头部
  4. 读取同一个文件夹下的一个文件

分析:

  1. sleep - 程序休眠一点时间
  2. CreateFileA - 创建一个新的文件
  3. 移动文件指针到头部
  4. 读取同一个文件夹下的一个文件

(1)* 00000000004013C9 cmp     [ebp+var_1C], 10h  比较,如果文件还未加密完(前16个字节),跳转00000000004013CF,

* xor c1,1 - 按位或1将获取的值加密

* 反之跳转00000000004013E2  

* setFilePointer - 对文件指针偏移到最开始

* writeFile - 把前16个字节加密后的数据流写入之前创建的新文件

* Closehandle - 关闭文件句柄

 


具体流程图:


                                                                 (2)sub_401470主要用于查找docx文件


分析:

LstrcpyA 、LstrlenA、lstrcatA - 主要获取文件夹里的路径,文件名,并对之进行处理

 

FindFirstFileEx - 根据文件名查找文件。该函数到一个文件夹(包括子文件夹)去搜索指定文件 如果要使用附加属性去搜索文件的话 可以使用FindFirstFileEx函数。

 

如果没有这些文件,跳转 loc_4016FC

有,则跳转0000000000401571

链接:

https://baike.baidu.com/item/FindFirstFile/9621776 - FindFirstFile


分析:

lstrcpyA - 复制字符串

LstrcatA - 连接字符串

总之就是一系列字符串的复制拼接

然后判断是否为空,不为空(!0),则跳转00000000004016FC

反之,为空(0)则跳转00000000004015D5

 

注:

test eax,eax 基本上和 And eax,eax 是一样的,不同的是test 不改变eax的结果,只是改变FLAG寄存器的状态,也就是改变进位标志,零标志,溢出标志等 等。举一个例子,如果eax=01h,test eax,eax 就是两个01h 作与操作,所以结果还是01h,不是0的话,就不会跳转 je xxxx。所以要跳转je xxxx,只有一种可能就是eax=0h.所以现在eax=0a 则不会跳转 je xxxx

链接:

https://zhidao.baidu.com/question/106832847.html - test eax,eax 如何解释?


 

分析:

PathFindExtension - 获得文件后缀名

Lstrcmp - 比较文件后缀名,如果是.docx 跳转0000000000401614,如果不是.docx,跳转00000000004016CC

 

 

注:PathFindExtension函数的功能是获取绝对路径或文件名中的文件扩展名。

链接:https://baike.baidu.com/item/PathFindExtension/2910474?noadapt=1 - PathFindExtension

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

分析:

上面一系列函数主要是用于装换.crc32后缀名,拼接文件名和路径

 


解释:

findNextFileA - 查找下一个文件

.text:004016EF cmp     [ebp+var_564], 0 - 比较是否查找到最后,查找到最后,跳转00000000004016FC

.text:004016F6 jnz     loc_401571  反之,跳转loc_401571

findClose - 查找停止



总的逻辑图


                                                            (3)对sub_4017D0主要用于创建自删除脚本文件分析


分析:

 

createFileA - 打开一个文件

 

.text:00401844 cmp     [ebp+hObject], 0FFFFFFFFh

.text:0040184B jnz     short loc_401852  -  如果文件打开成功,跳转到0000000000401852

反之,跳转到000000000040184D

 

 

GetModuleFileName -

获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。

如果想要获取另一个已加载模块的文件路径,可以使用GetModuleFileNameEx函数。

 

注:

 

1mov si,offset BUFFER 汇编后是mov si, xxxx,这里的xxxx指的是一个相对偏移量,是BUFFER在内存中的相对地址,是一串数字。
  汇编器知道BUFFER相对于DS的地址,因为在做汇编的时候,告诉了汇编程序DS的值(ASSUME),然后汇编器通过计算BUFFER之前的东西要多少字节,就能知道BUFFER相对于DS的地址。

 

(2)Delself.cmd - 删除自身

 

 3CreateFile

  这个函数的功能是创建或者打开一个文件或者I/O设备,通常使用的I/O形式有文件、文件流、目录、物理磁盘、卷、终端流等。如执行成功,则返回文件句柄。 INVALID_HANDLE_VALUE 表示出错,会设置 GetLastError 。

链接:

https://bbs.youkuaiyun.com/topics/30115564 - offset到底是起什么作用?

http://www.bkjia.com/sdfd/967246.html - 反病毒攻防研究:自我复制与自删除

 


 

分析:

Writefile - 写一个勒索文件

CloseHandle - 关闭句柄

winExec - 运行删除程序

 

注:WinAPI: WinExec - 运行外部程序


 

完整逻辑图:


-

                                                       (4)sub_4019B0主要用于创建readme说明文件。


分析:

 

createFileA - 创建readme.txt文件


分析:

WriteFile - 给文件写入内容

closeHandle - 关闭句柄


 

具体流程图:



                                                                      第二部分:专杀工具编写思路


  1. 用total command打开ScapeGoat01.docx


  1. 再点击运行病毒,用total command查看加密后的病毒,结合病毒分析,可以知道是

病毒分析:

该病毒virus.exe_是把word文件加密,怎么加密呢?是把word文件的文件前16个字节(好像是前16个字节)加密,word是一个压缩文件,打开它就是一个解密的过程,而对它的前16个字节加密,就是对word文件头进行加密(包含PE)。解压的原理是看被解压文件的文件头,看这个文件是什么类型,再依靠此信息进行解压。如果改变了文件头,就不能知道这个文件是什么文件,所以就不能打开被病毒加密的文件。所以我们要对文件解密,就要把被修改的文件头进行还原。病毒virus.exe_是通过什么方式进行进行加密的,就是把前16个字节的每一个字节xor(按位异或)1,怎么把它解密呢?

方法如下:

 

解密是把前16个字节再xor(按位异或)1

 

如原来的值为:11011101

加密:

 11011101

^00000001

__________

 11011100


解密:

11011100

^ 00000001

-----------------

  11011101

 

注:

按位异或^

  运算符^

  1^1=0;0^0=0; //相同则为0

  0^1=1;1^0=1; //不相同为1

 

 

专杀方法(两种):

 

提特征码

 

跳转oX00420020:

修改:此处有问题,就是通过地址跳转要使用F5(Goto)- 注意:输入的是偏移量,通过特征码跳转要使用F7(Search),上面这个图是错的,大家参考时知道就行

 

 

提取特征值:00420020 - 2E 63 72 63 33 32 00 00 2E 64 6F 63 78 00 00 00

 

 提字符串:delself.cmd,或者是那句话(勒索的话),crc32

  1. 找偏移(地址:要减去前面的基地值),提取特征码,进行专杀

 

hash值MD5

 

(1)c语言查看程序MD5的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值