勒索病毒的一些小结

image.png

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


image.png

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

image.png

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


image.png

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

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

image.png

执行监控:

image.png

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

行为监控:
自我删除:


image.png

自我复制:

image.png

释放隐藏文件

image.png

image.png

启动自释放文件

image.png

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

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

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

image.png

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


image.png

image.png

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


image.png

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


image.png

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


image.png

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


image.png
image.png

第二次VirtualAlloc;

image.png
image.png

第三次VirtualAlloc:

image.png
image.png

第四次VirtualAlloc

image.png

返回值:01270000;
Size:3AC00


image.png

CreateProcessW处断下来了;


image.png

再一次在VirtualAllocEx处断下来了:


image.png

WriteProcessMemory处停下来!
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里面:
image.png

image.png
image.png

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


获取权限的相关操作:


image.png

进行提权的相关操作:

image.png

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

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

image.png

读取当前进程权限:


image.png

获取当前进程的SID:


image.png
image.png
image.png

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


image.png

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


image.png
image.png

设置注册表键值:

image.png

获取磁盘信息:

image.png

遍历文件


image.png

加密文件:


image.png
image.png

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

image.png

管理员权限运行:

image.png

解密字符串:

image.png

image.png

image.png
image.png
image.png

image.png
image.png
image.png
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等函数,说明其进行了网络连接

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容