计算机病毒

什么是计算机病毒?

《中华人民共和国计算机信息系统安全保护条例》中指出:计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并且能自我复制的一组计算机指令或者程序代码

计算机病毒的种类

任何以某种方式对用户、计算机、网络造成破坏的软件都可以被认定为计算机病毒

  • 木马
  • 蠕虫
  • rootkit
  • 勒索病毒
  • 间谍软件
  • 垃圾邮件发送病毒

计算机病毒的分析技术

计算机病毒的分析技术可以分为静态分析和动态分析

静态分析

计算机病毒的静态分析技术是指在不运行程序时,对其进行分析的相关技术,比如最常用的是使用IDA对静态程序反汇编,然后查看整个程序的执行流程,还可以使用PEID对计算机病毒进行差壳,看计算机病毒是否带有壳进行保护,如果程序是带壳的,那么在反汇编的时候会出错

动态分析

动态分析则需要运行恶意程序,运行恶意程序一定要在一个隔离的沙箱中,确保病毒不会对本机重要文件造成影响,也确保计算机病毒不会通过网络传播出去。常见的动态分析工具有OllyDbg、火绒剑、Process Monitor等,OllyGdb是一个功能强大的经典的动态分析工序,程序被反汇编成汇编代码,然后可以动态一步一步执行,分析程序的运行功能。火绒剑是火绒下面的一款安全人士的专业分析工具,可以对运行的程序进行监控,并且把程序的行为反馈出来,例如对注册表的操作或者是对系统文件的操作。

啥是沙箱?

Sandboxie(又叫沙箱、沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。 在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具。(百度百科)

简单来说就是一个隔离的环境,在这里面分析程序不会对外界造成影响,不过现在很多先进的病毒都有反沙箱技术,病毒程序会检测自己是否是在沙箱中,如果检测出来是在沙箱中则会直接终止运行,更严重的会利用一些漏洞进行沙箱逃逸,对外界环境造成影响。

分析一个恶意的程序需要哪些基本的技术呢?

首先既然是windows的程序,那么对PE文件格式的了解是必不可少的,还有就是逆向工程技术,要想分析一个PE程序,我们需要能够看懂汇编代码,知道各个寄存器的作用以及各种函数调用、堆栈的使用,最基础的还是编程语言功底,毕竟现在恶意程序为了增加逆向分析难度,经常会在程序中添加一些加密算法,这是就需要我们对程序分析去解密了。然后的话就是一些分析工具的使用了,比如IDA、OllyGdb、火绒剑的使用

一次恶意样本的分析

使用火绒剑对恶意样本的行为分析

打开火绒剑,在系统中选择进程过滤

TnEXVK.png

并填写需要分析的进程名

TnVp2d.png

点击开启监控

TnV0qx.png

然后运行文件,进行监控

切记,恶意样本运行一定要在一个隔离的沙箱中,本次我使用的就是一台纯净的win10虚拟机,并且进行了断网操作

TnVAVf.png

运行恶意文件从任务管理器看到该恶意文件大量占用CPU

TnVcJe.png

回到我们的火绒剑中,我们看到一开始使用EXEC_create这个动作启动了1.exe这个进程

Tnm9xJ.png

注册表操作分析

在火绒剑中可以看到,程序使用REG_openkey打开一些注册表键,通过REG_getval获取注册表项值

TnmAVx.png

查看恶意程序获取了哪些注册表项值

TnmtJS.png

该注册表是在x86下镜像一些x64的注册表,因为程序是32位,需要判断是否能在该电脑下执行相应的操作

Tnmrd0.png

这个则是关于终端的一个注册表,具体是啥功能,一直查不到

TnmsoV.png

该注册表是查看windows下文件路劲是否有260长度限制

Tnm2z4.png

AppInit_DLLs用来全局注入dll模块,凡是导入了user32.dll的程序都会 主动加载这个键值下的模块。

文件操作分析

TnKwsH.png

我们可以看到程序读取了conhost.exe文件然后创建了Conhost.exe文件,conhost.exe文件是windows下命令行的宿主进程

然后就是一系列的遍历目录,创建文件,并写入数据

TnMTnH.png

  • DILE_readdir:遍历目录
  • FILE_touch:创建文件
  • FILE_write:向文件中写入数据
  • FILE_modified:文件被修改

随便打开一个该恶意样本创建文件,发现里面是:本文已经被加密

TnQZgU.png

前面这些还没啥危害,就是创建了一些文件,后面可以看到该程序开始遍历磁盘,删除文件,然后创建一个和删除文件相同名字并且后缀为.ssx的文件,并在里面同样写入了:本文已经被加密

TnltJ0.png

该恶意样本运行后会不断遍历磁盘,直至把所有能删除的文件全部删除,然后创建一个有“本文已被加密”的.ssx文件

最后文件退出时

Tn143V.png

会将改程序的注册表项值修改为3,然后退出进程

这就是执行该恶意样本的桌面

image-20211220161330746

可以看到所有文件都被删除了,然后被替换成了.ssx文件

IDA分析

把程序丢到IDA里面,可以看到import窗口引用了KERNEL32.dll、msvcrt.dll、USER32.dll三个链接库

KERNEL32.dll控制着系统的内存管理、数据的输入输出操作和中断处理

msvcrt.dll是微软在windows操作系统中提供的C语言运行库执行文件

USER32.dll是Windows用户界面相关应用程序接口

我们看到主函数start中有一个sub_4A7B50()的函数,这个函数就是对文件操作的函数,也就是我们刚刚用火绒剑分析的,该程序不断在删除文件创建文件

TumKXj.png

我们双击进去看看,果然看到里面把各个盘符当做参数传递到了一个sub_401AD0()的函数

Tumg3D.png

进入sub_401AD0函数,可以看到它先使用递归的方法,找到一个文件后就把文件路径完整地传入sub_401830()函数进行删除操作

TunAKJ.png

然后同样也是递归的方法一步步遍历磁盘中的文件,然后执行sub_401830()该函数,对文件进行操作

Tuu3WT.png

我们进入sub_401830()该函数,看看它具体对文件的操作

先是确保这是一个文件而不只是一个目录

TuKHC6.png

然后对该文件执行删除内容操作,然后在文件后面追加.ssx

TuKzVA.png

我们在remove()函数处下个断点,使用IDA自带的动态调试

TuQxht.png

发现它第一次要删除的文件就是Alphabet.xml,而且后面的没有个文件夹都是前面一个文件夹下的第一个文件夹,也验证了它是从头开始遍历文件

总结

对于一个恶意样本的分析,我们可以先使用一些行为监控的软件,例如Process Monitor、火绒剑,让程序运行起来,然后从这些行为监控软件中查看程序调用了那些链接库,执行了那些危险操作,在虚拟机中在动态分析程序前,一定要记得给虚拟机快照。

行为分析结束后,就可以进行静态分析整个程序的逻辑,在这期间也可以配合动态分析,例如IDA自带的动态调试,或者使用OllyGdb进行动态调试,来使得我们更加深刻了解整个恶意程序的运行过程

分析一个恶意样本的时候,也可以借助云沙箱的帮助

参考链接