恶意代码Lab11-03分析

Lab 11-3


分析恶意代码Lab11-03.exe和Lab11-03.dll。确保这两个文件在分析时位于同一个目录中。

问题

1. 使用基础的静态分析过程,你可以发现什么有趣的线索?

我们先来看exe的导入表有些啥:
在这里插入图片描述

放到IDA里面再看看,在这里我们能够看到C : \WINDOwS\1System32\ linet_epar32.dll还有Lab11-03.dll这俩dll,cisvc.exe这个exe程序以及net start cisvc这条命令。
在这里插入图片描述

dll接下来再看,我们先了解一下cisvc.exe是个啥东西:
在这里插入图片描述

似乎不是什么不好的东西,而net start cisvc则是启动这个服务的命令,于是我们转移目标,看Lab11-03.dll:
在这里插入图片描述

我们能发现,这里的GetForegroundWindow;GetiindowTextA;GetAsyncKeyState三个导入函数。初步推断是要做键盘记录。再看看导出函数。
在这里插入图片描述

这个导出函数暂时也不知道是干什么的。我们再到IDA里面看看,这里好像创建了个kernel64x.dll的文件,其他还有创建文件,创建互斥体,创建线程什么的,我们就先不管。

在这里插入图片描述

Lab11-03.exe包含字符串inet_epar32.dll和 net start cisvc,这意味着它可能启动CiSvc索引服务。包含字符串C:\WINDOWS\System32\kernel64x.dll的Lab11-03.dl导入了API函数GetAsyncKeyState和 GetForegroundwindow,这让我们怀疑它是一个记录到文件kernel64x.dll的击键记录器。

2. 当运行这个恶意代码时,发生了什么?

我们用procmon来监测一下,过滤一下:
在这里插入图片描述

我们看到以下这些行为
在这里插入图片描述
在这里插入图片描述

可以看到,这里会创建inet_epar32.dll,还有Lab11-03.dll的一堆操作。我们打开创建的inet_epar32.dll看看)。进行MD5比对能够发现,inet_epar32.dll和Lab11-03.dll是相同的文件,所以我们可以知道恶意代码复制了lab11-03.dll到windows系统目录。

在这里插入图片描述

监控到的还有cisvc.exe的创建,不过并没有其他的相关操作。

恶意代码首先复制Lab11-03.dll到Windows系统目录的inet_ epar32.dll中, 并有针对cisvc.exe的操作

3. Lab11-03.exe 如何安装Lab11-03.dll使其长期驻留?

我们用IDA调试一下Lab11-03.exe
在这里插入图片描述

在main函数中一开始是复制lab11-03.dll到system32系统目录中的inet_epar32.dll。之后创建一个字符c:\windows\system32\cisvc.exe,将其作为参数传递给了sub_401070.之后是使用系统运行命令net start cisvc,来启动索引服务。

接下来我们看看他的子函数
在这里插入图片描述

从上图可知调用了createfile(创建文件),createfilemappingA(创建一个文件映射内核对象)和MapViewOfFile(将一个文件映射对象映射到当前应用程序的地址空间),将cisvc.exe映射到内存中。这些函数都有访问这个文件的权限。

MapViewOfFile返回的内存映射视图的基地址(lpBaseAddrress)可以被读写
在这里插入图片描述

我们接着往下看

在这里插入图片描述
在这里插入图片描述

可以看到调用了UnmapViewOfFile(停止当前程序的一个内存映射),这样对这个文件做的任何修改都会被写入到硬盘。

同时我们顺着绿色那条线看下来(上三图的下面那张),查看在调用该函数sub_401070之前的操作。

能够发现其实是进行了写入操作。一开始文件的映射位置移入到EDI,用Var_28调整一些偏移量。rep movsd循环,用ecx(4E)计数来写入该数量的DWORD。之后byte_409030被移入ESI,复制byte_409030的数据到映射文件中。

接下来F5跟进一下

在这里插入图片描述

跟一下dword_409030
在这里插入图片描述

这里一大段不知道是个啥东西,来c一下看看
在这里插入图片描述

可以看到这里出现了一个跳转jmp loc_409134,跟过去看看
在这里插入图片描述

发现这里出现了被感染的dll和这个exe的导出函数。所以我们可以猜测,shellcode加载了这个dll,并调用了它的导出函数。

接下来IDA分析一下感染后的文件
在这里插入图片描述

这里call了sub_1001AD5,我们跟过去看看

在这里插入图片描述

这里call的这些个函数不知道是个啥,所以我们上OD里面调试一下

在01001B0A用这个函数的位置下断点,运行

在这里插入图片描述

提示出用的是loadlibrary函数,在数据窗口看一下这个位置

在这里插入图片描述

可以知道其作用是将inet_epar32.dll载入内存

同理接着看下一个函数,00101B1B处下断点,看到此时是调用GetProcAddress,其作用是获取导出函数的地址(在右下角可以看到导出函数)返回值在eax,接下来将eax赋给ebp-8,之后是call ebp-8,那么也就是说下一个call就是在调用这个导出函数。

接着往下单步
在这里插入图片描述

通过一个jmp后到达原始程序的入口点。

所以,恶意代码通过入口点重定向从而使它永久性地安装Lab11-03.dll。它通过重定向入口点,来运行加载这个DLL的shellcode
接下来使用ida分析本次的dll文件

4. 这个恶意代码感染Windows系统的哪个文件?

为加载inet epar32.dll,恶意代码感染了cisvc.exe,然后调用了inet_epar32.dll的导出函数zzz69806582。

5. Lab11-03.dll做了什么?

来看他的导出函数
在这里插入图片描述

这里有个创建线程,其中有个startaddress参数,跟过去看看
在这里插入图片描述

这里创建了个“MZ”互斥量(因为前面OpenMutexA那个地方没有互斥量,所以跟着绿线运行下来)

接着往下看
在这里插入图片描述

创建了个文件"C:\WINDOWS \System32\kernel64x.dll"
在这里插入图片描述

SetFilePointer:在一个文件中设置新的读取位置,dwMoveMethod值为2(开始点为文件的结尾位置)

然后call了个sub_10001380,看看是什么
在这里插入图片描述

call了个sub_10001030,看看

在这里插入图片描述

这又call了个sub_10001000,过去看看
在这里插入图片描述

这里看到了一开始静态分析的时候看到的GetForegroundWindow,GetiindowTextA,用来判断当前哪个程序正在输入和获取当前的标题。

再看回sub_10001030,能发现下面用到了GetAsyncKeyState判断一个按键是被按下还是弹起。
在这里插入图片描述

Lab11-03.dll 是一个轮询的记录器,这在它的导出函数zzz69806582中得到实现

6. 这个恶意代码将收集的数据存放在何处?

恶意代码存储击键记录和窗体输入记录,其中击键记录被存入到C:\Windows\System32\kernel64x.dll。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值