恶意代码分析

前言

辅助工具:Peview,process monitor,IDApro,deyond compare,ollydbg

1.Beyondcompare
Beyond Compare是一套由Scooter Software推出的文件比较工具。主要用途是对比两个文件夹或者文件,并将差异以颜色标示。比较范围包括目录,文档内容等。

2.IDA Pro
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!

实验步骤

使用Peview分析exe文件

其中值得怀疑的是net start cisvc 这一块值得怀疑

首先使用process monitor.exe进行监控,设置好过滤的条件

然后双击运行(在监控这里咱们看得到 创建了一个 inet_epar32.dll 于是怀疑这个dll 和运行目录下的Labll-03.dll 文件有关联

我们找到生成出来的inet_epar32.dll

我们打开WinMd5把软件运行目录下的Labll-03.dll和生成的inet_epar32.dll进行比较发现MD5值一样,说明是同一个程序

接着咱们用IDA分析一下exe文件发现有一个CopyFile 怀疑程序是感染cisvc.exe 后然后通过 net start cisvc 运行服务

我们来比较运行前后的cisvc.exe

先来看看感染后的在系统目录下的cisvc.exe

再看感染前的(可以在网上下载一个,实验环境中在桌面tools文件夹下有同名压缩文件,解压即可)

可以看到这两个文件的入口点不同。

也可以使用beyond compare进行比较

可以看到上图中红色标注的就是不一样的地方。左边是感染的文件,右边是原始的文件。左边比右边多出来一些数据,这些添加的数据其实就是前面在IDA中发现的那段shellcode

可以回到ida

将shellcode调出来

ok之后如图所示

一开始是5589e5

与这里的是对应的

接下来IDA分析被感染后的文件

一开始是走到loc_1001b2c

其中调用了sub_1001ad5

跟进,定位到关键函数

ida没分析0101b0a处的call调用的是什么,我们可以配合od进行分析

直接在od中跳到该位置

ctrl+g输入

在该位置下断点

然后直接运行

可以看到调用的是loadlibrary

在eax处右键->数据窗口中跟随

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

回到ida

看到接下来的call是01001b1b

同样在od下断点,直接运行

看到此时是调用GetProcAddress,其作用是获取导出函数的地址(在右下角可以看到导出函数)

返回值在eax,接下来将eax赋给ebp-8,之后是call ebp-8

那么也就是说下一个call就是在调用这个导出函数

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

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

实验步骤三

继续单步,跟着jmp

我们来到了这里

这其实就是原始程序的入口点的位置

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

A3.恶意代码通过入口点重定向从而使它永久性地安装Lab11-03.dll。它通过重定向入口点,来运行加载这个DLL的shellcode

接下来使用ida分析本次的dll文件

直接分析导出函数

首先是通过CreateThread创建线程

跟踪StartAddress

双击跟入

首先是通过OpenMutex查看当前是否存在名为MZ的互斥量,如果已经存在,则会终止这个线程

如果不存在,则往右边走,调用CreateMutexA来创建一个名为MZ的互斥量

接着是调用CreateFile创建一个名为上图中字符串所示的文件

这个文件其实是用于写入日志的

获得kernel64.dll句柄之后

调用SetFilePointer

其dwMoveMethod值为2

也就是说令文件指针指向文件末尾

接着调用sub_10001380

跟入可以看到是一个循环结构

调用了sub_10001030,跟入

跟入sub_10001000

看到调用了GetForegroundWindow,其实是用于判断当前哪个程序正在输入

通过GetWindowsTextA获取当前的标题

esc返回上个函数

继续往下看

通过GetAsyncKeyState来判断一个按键是被按下还是弹起

这些函数的组合使用不难看出其实就是起到键盘记录器的功能

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

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

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

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

那么总结一下流程。启动lab11-03.exe后,会修改cisvc.exe。植入shellcode,而shellcode会加载一个dll,并调用导出函数,导出函数起到的作用类似于键盘记录器,记录在kernel64x.dll中。

点赞
  1. 一个编程小白说道:
    Google Chrome Windows 10

    大佬大佬跪拜

发表评论

电子邮件地址不会被公开。必填项已用 * 标注