勒索病毒的一些小结

勒索病毒的一些小结_第1张图片
image.png

该病毒利用加密算法对文件进行加密,使得用户无法对文件进行正常操作
运行之前:
利用PEID,发现其没有加壳


勒索病毒的一些小结_第2张图片
image.png

一般通过观察其输入表来判断其行为,然而这里比较奇怪的是输入表里面居然没有Kernel32.dll,说明其太可疑了!!!很有可能通过加密来隐藏了自己的行为

勒索病毒的一些小结_第3张图片
image.png

利用Strings查看一下其字符串列表:


勒索病毒的一些小结_第4张图片
image.png

全是乱码,及有可能进行了加密或者混淆

火绒剑监控:
文件监控:
遍历文件夹,加密文件并且在每个文件夹下创建勒索相关图文信息

image.png

执行监控:

勒索病毒的一些小结_第5张图片
image.png

通过执行监控可以看到,创建了一个新的可执行文件,并且调用cmd,打开notepad写入文字信息,仅通过调用cmd就可以视为病毒行为,普通程序根本不需要调用cmd命令行工具

行为监控:
自我删除:


勒索病毒的一些小结_第6张图片
image.png

自我复制:

勒索病毒的一些小结_第7张图片
image.png

释放隐藏文件

勒索病毒的一些小结_第8张图片
image.png

勒索病毒的一些小结_第9张图片
image.png

启动自释放文件

勒索病毒的一些小结_第10张图片
image.png

可以看出其有以下几个行为:

  1. 自我复制
  2. 在User/Documetns下创建了一个文件并隐藏了
  3. 自我删除
    pcHunter监控

重启之后,使用pcHunter查看,发现

image.png

设置了勒索图文为启动项,更改了注册表,本身已经删除了病毒本身的程序,无法打开任务管理器和注册表编辑器
动态检测:
加载至OD 里面:跟进到第一个call中发现有大量的混淆:


勒索病毒的一些小结_第11张图片
image.png

勒索病毒的一些小结_第12张图片
image.png

再仔细反思一下刚才的那些行为,会释放一个PE文件,其很有可能调用了CreateProcess这个API, 可以在CreateProcess处下断点试试看:
按F9运行:


勒索病毒的一些小结_第13张图片
image.png

CreateProcess创建了一个进程,进程名字在 commandLine所对应的那个字符串,其实所创建的进程的名字一般是写在第一个参数的,即ModuleFileName;当然这里可以写NULL,名字就可以写在第二行的CommandLine里面了,一般而言,利用CreateProcess创建出来的线程是要运行的;而这里的参数为:CREATE_SUSPEND,故这里的线程创建出来之后随即被挂起
以挂起的形式创建了一个进程,说明其之后还应该会恢复进程,这里可能为ResumeThread,在ResumeThread出下断点;同时我们可以推测,为何要以挂起的方式创建进程,很有可能要在创建出来的进程里面做一些操作,比如可以写一些东西,这时候可能会用到VirtualAlloc以及VirtualAllocEx,WriteProcessMemory等函数
在这些地方下断点;


勒索病毒的一些小结_第14张图片
image.png

果然在这个函数段下来了;
继续运行,发现其在WriteProcessMemory这个API断下来了:


勒索病毒的一些小结_第15张图片
image.png

为了更加清晰的分析其过程,再重新用OD加载一下(同时在上面几个API下断点):
第一次Virtualloc


勒索病毒的一些小结_第16张图片
image.png
勒索病毒的一些小结_第17张图片
image.png

第二次VirtualAlloc;

勒索病毒的一些小结_第18张图片
image.png
勒索病毒的一些小结_第19张图片
image.png

第三次VirtualAlloc:

勒索病毒的一些小结_第20张图片
image.png
勒索病毒的一些小结_第21张图片
image.png

第四次VirtualAlloc

勒索病毒的一些小结_第22张图片
image.png

返回值:01270000;
Size:3AC00


勒索病毒的一些小结_第23张图片
image.png

CreateProcessW处断下来了;


勒索病毒的一些小结_第24张图片
image.png

再一次在VirtualAllocEx处断下来了:


勒索病毒的一些小结_第25张图片
image.png

WriteProcessMemory处停下来!
勒索病毒的一些小结_第26张图片
image.png

到这里,我们可以大概推测出这个病毒执行的大概的流程了:
一开始的时侯连续调用了四个virtualalloc函数,并且在第四次调用这个函数申请的空间里面存放恶意代码,值得注意的是这个程序何时将恶意代码放入VirtualAlloc申请的那个空间我们目前是不知道的,但是有一点可以确定的是在调用WriteProcessMemory的时候,之前申请的那个空间里面肯定已被填入了恶意代码;继续分析,在调用了4次VirtualAlloc之后,又调用了CreateProcessW函数,接着调用VirtualAllocEx和WriteProcessMemory函数;看来果然如我们之前推测的一般,先将恶意代码拷贝至第四次VirtualAlloc申请的空间,然后利用WriteProcessMemory将刚才用VirtualAlloc申请到的空间里的存放的恶意代码存放至用VirtualAllocEx申请出来另一个进程(此进程是通过CreateProcess创建出来的)的空间中;另一方面根据WriteProcessMemory这个API中的一个参数,可以得知VirtualAlloc申请出来的空间中的恶意代码是存放于缓冲区之中的,说明其数据是以文件的形式保存的,故这里为我们提供了方便,我们只要将dump下来即可
(注:经过多次测试,发现在createrocess之前的那个virtualalloc申请的空间里面将放恶意代码,故要得到那个virtualalloc的返回值(即申请空间的首地址))


IDA中一些小结:

可以查看导入表(imports):
看里面的导入的函数,通过查看里面的可疑函数,可疑定位到相关地址(结合交叉引用)

在OD中如何拷贝二进制到010Editor里面:
勒索病毒的一些小结_第27张图片
image.png

勒索病毒的一些小结_第28张图片
image.png
勒索病毒的一些小结_第29张图片
image.png

再利用010Editor编辑器将随机基址关掉(在可选头里面,具体参见讲义里面)(可以方便调试与测试)


获取权限的相关操作:


勒索病毒的一些小结_第30张图片
image.png

进行提权的相关操作:

勒索病毒的一些小结_第31张图片
image.png

动态跟踪,将进一步验证:

(在IDA中查到相关特征api之后在OD里面进行下断点)

勒索病毒的一些小结_第32张图片
image.png

读取当前进程权限:


勒索病毒的一些小结_第33张图片
image.png

获取当前进程的SID:


勒索病毒的一些小结_第34张图片
image.png
勒索病毒的一些小结_第35张图片
image.png
勒索病毒的一些小结_第36张图片
image.png

上图中描述了dump出的文件中有复制文件与删除文件的操作;
下图中为进入自我是删除的函数:


勒索病毒的一些小结_第37张图片
image.png

利用ShellExecuteW函数在OD里面进行动态跟踪;
验证了之前的判断,确实是在删除自身!


勒索病毒的一些小结_第38张图片
image.png
勒索病毒的一些小结_第39张图片
image.png

设置注册表键值:

勒索病毒的一些小结_第40张图片
image.png

获取磁盘信息:

勒索病毒的一些小结_第41张图片
image.png

遍历文件


勒索病毒的一些小结_第42张图片
image.png

加密文件:


勒索病毒的一些小结_第43张图片
image.png
勒索病毒的一些小结_第44张图片
image.png

跟进函数sub_411960,发现大量的加密操作:

勒索病毒的一些小结_第45张图片
image.png

管理员权限运行:

勒索病毒的一些小结_第46张图片
image.png

解密字符串:

勒索病毒的一些小结_第47张图片
image.png

勒索病毒的一些小结_第48张图片
image.png

勒索病毒的一些小结_第49张图片
image.png
勒索病毒的一些小结_第50张图片
image.png
勒索病毒的一些小结_第51张图片
image.png

勒索病毒的一些小结_第52张图片
image.png
勒索病毒的一些小结_第53张图片
image.png
勒索病毒的一些小结_第54张图片
image.png
勒索病毒的一些小结_第55张图片
image.png

利用WNetOpenEnum和WNetEnumResourceW对网络资源进行枚举,

HGLOBAL __stdcall sub_401610(LPNETRESOURCEW lpNetResource)
{
  HGLOBAL result; // eax@2
  void *v2; // ebx@3
  DWORD v3; // edi@5
  const wchar_t **v4; // esi@6
  DWORD cCount; // [sp+0h] [bp-8h]@1
  SIZE_T dwBytes; // [sp+4h] [bp-4h]@1

  dwBytes = 0x4000;
  cCount = -1;
  if ( WNetOpenEnumW(2u, 0, 0, lpNetResource, (LPHANDLE)&lpNetResource) )
  {
    result = 0;
  }
  else
  {
    result = GlobalAlloc(0x40u, dwBytes);
    v2 = result;
    if ( result )
    {
      while ( 1 )
      {
        memset(v2, 0, dwBytes);
        if ( WNetEnumResourceW(lpNetResource, &cCount, v2, &dwBytes) )
          break;
        v3 = 0;
        if ( cCount )
        {
          v4 = (const wchar_t **)((char *)v2 + 20);
          do
          {
            if ( dword_43A834 <= 64 && *(v4 - 5) == (const wchar_t *)2 && *(v4 - 4) == (const wchar_t *)1 )
            {
              wcscpy_s(&word_43AE58 + 1024 * dword_43A834, 0x400u, *v4);
              ++dword_43A834;
            }
            if ( (*((_BYTE *)v4 - 8) & 2) == 2 )
              sub_401610((LPNETRESOURCEW)(v4 - 5));
            ++v3;
            v4 += 8;
          }
          while ( v3 < cCount );
        }
      }
      GlobalFree(v2);
      result = (HGLOBAL)(WNetCloseEnum(lpNetResource) == 0);
    }
  }
  return result;
}



同时发现 HttpSendRequestA和InternetCrackUrlA等函数,说明其进行了网络连接

勒索病毒的一些小结_第56张图片
image.png

你可能感兴趣的:(勒索病毒的一些小结)