恶意代码分析实战第12章实验

Lab 12-1

首先还是一样,peid进行查壳,发现无壳后查看导入表。导入表中发现CreateRemoteThread、VirtualAllocEx、LoadLibrary等敏感函数。

IDA打开Lab12-01.exe分析,程序使用LoadLibraryA+GetProcAddress分别获取EnumProcessModules、GetModuleBaseNameA和EnumProcesses函数在psapi.dll中的地址。

接下来获取Lab12-01.dll所在的完全路径,并将路径存储在Buffer中。

调用EnumProcesses检索系统中每个进程的pid。

 

 在获得所有pid后进入一个循环:

定位到for循环的主题操作:

0040121C处是对指针操作,对获得的pid数组各元素进行判空;在该元素不为空时指定到00401226处,跟进sub_401000函数查看:

利用OpenProcess、EnumProcessModules和GetModuleBaseNameA函数获得当前pid数组元素的模块值(xxx.exe),然后利用字符串比较xxx.exe与explorer.exe。 所以sub_401000函数既是匹配explorer.exe,成功返回1,失败返回0。

回到主函数中,00401242处判断explorer.exe是否匹配,若是则打开句柄:

否,则在for循环中进行自增操作:

在打开explorer.exe句柄跳出循环后,为其分配内存,将Lab12-01.dll路径写入内存,获取LoadLibraryA在kernel32.dll中的地址,创建远程线程同时起始地址既是LoadLibraryA。

 

将分析线索贯穿一下:Lab12-01.exe首先查找要注入的目标进程(explorer.exe),在目标进程中分配内存、在分配的内存中写入带有恶意DLL的路径、创建起始地址为LoadLibraryA的远程线程,从而线程执行时也就加载了恶意DLL(Lab12-01.dll)。

接下来IDA分析Lab12-01.dll:

DllMain中调用了CreateThread,跟进sub_10001030分析:

  

可以看出这是一个死循环,观察到有字符串"Practical Malware Analysis %d"和打印函数,其中 %d所表参数ecx,在sleep 60000毫秒后,不断的进行add ecx,1的自增操作。跟进StartAddress分析:

 

调用了MessageBoxA函数并且Text参数为"Press OK to reboot"。

将Lab12-01.dll的分析线索整理一下:一个死循环不停地显示一个对话框,对话框显示"Practical Malware Analysis %d"和"Press OK to reboot"

运行如下:

取消弹框有多种方式,选择patched二进制文件,在OD中编辑004011C4处,汇编为jmp 004011C6使程序直接执行结束。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值