前言
辅助工具: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中。
大佬大佬跪拜