恶意代码分析实战 --- 第十一章 恶意代码行为

一、 Lab11-01

行为分析

在当前目录释放文件msgina32.dll
并且修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL为释放出来的msgina32.dll,对登录进行劫持。
在这里插入图片描述
ida pro7.5很多unicode字符串无法识别出来。这里用了SysinternalsSuite中的strings工具来搜索字符串。
在这里插入图片描述

静态分析

对Wlx开头的所有函数进行分析。大部分的函数如下:
1.push对应的api名字符串
2.获取msgina.dll中函数地址
3.跳转执行。
也就是之进行了简单函数的调用,并没做额外的事情。
在这里插入图片描述

WlxLoggedOutSAS

有一个函数WlxLoggedOutSAS做了很多不一样的操作。
1.先调用了msgina.dll中的WlxLoggedOutSAS
2.将pNprNotifyInfo结构体中的内容(包括用户名、密码等保存)
在这里插入图片描述
sub_10001570就是将前面的内容按“UN %s DM %s PW %s OLD %s"”格式保存
在这里插入图片描述
可以重新登录系统看看效果。查看C:\windows\system32\msuntil32.sys
在这里插入图片描述

习题答案

1.这个恶意代码向磁盘释放了什么?
在当前目录释放msgina32.dll文件
2.这个恶意代码如何进行驻留?
3.这个恶意代码如何窃取用户登录凭证?
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL为释放出来的msgina32.dll
4.这个恶意代码对窃取的证书做了什么处理?
将得到的密码保存到C:\windows\system32\msuntl.sys中
5.如何在你的测试环境让这个恶意代码获得用户登录凭证?
重新登录

二、Lab11-02

静态分析

Lab11-02.dll导出了installer
在这里插入图片描述

Installer导出函数
1.设置注册表SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs为spoolvxx32.dll
2.将当前的dll复制到C:\windows\system32\spoolvxx32.dll
在这里插入图片描述
DLLMain函数
1.判断fdwReason是否为1(DLL_PROCESS_ATTACH),如果不是则退出
2.读取当前目录下(c:\windows\system32)的Lab11-02.ini的内容
3.将内容与0x21进行异或得到email地址:billy@malwareanalysisbook.com
在这里插入图片描述
sub_100014B6函数
1.得到进程的名字并大写
2.将进程名字与THEBAT.EXE、OUTLOOK.EXE、MSIMN.EXE,没有匹配就退出
3.循环挂起线程(SuspendThread)
4.对send函数设置inline hook。
5.恢复挂起的函数(ResumeThread)
在这里插入图片描述
hook_func函数(sub_1000113D)
inlinehook函数所以参数和send一样(socket s,const char* buf,int len,int flags).
1.搜索RCPT TO:字符串,如果没有则调用原本的send
2.添加一个邮件用户 billy@malwareanalysisbook.com
在这里插入图片描述

习题答案

1.这个恶意DLL导出了什么?
installer
2.使用rundll32.exe安装这个恶意代码后,发生了什么?
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs为spoolvxx32.dll
将当前的dll复制到C:\windows\system32\spoolvxx32.dll
3.为了使这个恶意代码正确安装,Lab11-02.ini必须放置在何处?
c:\windows\system32\目录下
4.这个安装的恶意代码如何驻留?
通过设置AppInit_DLLs注册表项为恶意dll。AppInit_DLLs用来全局注入dll模块,凡是导入了user32.dll的程序都会 主动加载这个键值下的模块。
5.这个恶意代码采用的用户态Rootkit技术是什么?
对send函数进行inlinehook
6.挂钩代码做了什么?
添加邮件发送目标,窃取邮件内容
7.哪个或者哪些进程执行这个恶意攻击,为什么?
THEBAT.EXE、OUTLOOK.EXE、MSIMN.EXE
8.ini文件的意义是什么?
加密恶意邮件地址
9.你怎么用wireshark动态抓获这个恶意代码的行为?

三、Lab11-03

行为分析

lab11-03.dll包含了和一个c:\WINDOWS\System32\kernel64x.dll两个可疑字符串。且导入了GetWindowTextA、GetAsyncKeyState、GetForegroundWindow,可能是键盘记录器。
在这里插入图片描述
设置过滤条件为Lab11-03.exe。可以观察到有两次文件创建和一次cmd.exe执行命令
在这里插入图片描述
设置过滤条件为cisvc.exe,只关注文件操作,有向kernel64x.dll进行写操作。
在这里插入图片描述
kernel64x.dll记录了当前运行程序的内容。
在这里插入图片描述

静态分析Lab11-03.exe

main函数
1.复制Lab11-03.dll到C:\WINDOWS\System32\inet_epar32.dll
2.sub_401070函数对C:\WINDOWS\System32\cisvc.exe进行操作
3.“net start cisvc”启动cisvc服务
在这里插入图片描述
sub_401070函数
1.通过CreateFile、CreateFileMapping、MapViewOfFile将cisvc.exe映射到内存中
2.一堆没用的操作,搜索xV4\12,最后还是直接把shellcode复制到.text段的空闲位置(virtualsize+PointToRawData)之后
3.计算新的OEP=shellcode偏移+baseOfCode,并赋值给AddressOfEntryPoint
在这里插入图片描述
shellcode
shellcode分析起来比较麻烦,先看一下shellcode包含两个字符串“C:\WINDOWS\System32\inet_epar32.dll”和“zzz69806582”。猜测应该是加载dll并调用zzz69806582函数。
在这里插入图片描述
bindiff比较
使用bindiff对比cisvc.exe前后的变化(注意:文件路径不能出现中文)
1.先用ida打开cisvc_ori.exe,原本的exe文件,然后关闭选择(pack database)
2.用ida打开cisvc.exe,再ctrl+6,点击diff database,选择cisvc_ori.exe.idb
主要就是start,入口点发生了变化。
在这里插入图片描述

动态调试shellcode

shellcode动态调试分析
od加载cisvc.exe并在shellcode下断点
0x1001B0A Loadlibrary(C:\WINDOWS\System32\inet_epar32.dll)
在这里插入图片描述
0x1001B1B GetProcessAddress(,‘zzz69806582’)
在这里插入图片描述
0x1001B21调用zzz69806582,最后回到cisvc.exe原本的start地址。
在这里插入图片描述
inet_epar32.dll(Lab11-03.dll)分析
zzz69806582函数启动了一个线程然后退出(线程函数0x10001410),线程函数主要功能如下如下:
1.打开一个互斥体“MZ”失败则退出,防止多个实例运行
2.如果没有互斥体则创建
3.打开kernel64x.dll并把文件指针指向最后
4.获取按键信息。GetForegroundWindow获取前台窗口句柄并GetWindowText获取当前窗口的标题,GetAsyncKeyState获取按键信息。
5.将内容保存到kernel64x.dll中
在这里插入图片描述

习题答案

1.使用基础的静态分析过程,你可以发现上面有趣的线索?
2.当运行这个恶意代码时,发生了什么?

记录键盘信息
3.Lab11-03.exe如何安装Lab11-03.dll使其长期驻留
感染cisvc.exe的添加shellcode
4.这个恶意代码感染windows系统的哪个文件?
cisvc.exe
5.Lab11-03.dll做了什么?
开启线程,记录键盘信息
6.这个恶意代码将收集的数据存放在何处?
kernel64x.dll

总结

需要补强的点
1.pe结构
2.各种hook技术

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值