恶意代码分析实战12-03

Posted Neil-Yale

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了恶意代码分析实战12-03相关的知识,希望对你有一定的参考价值。

本次实验我们将会分析lab12-03.exe文件。先来看看要求解答的问题
Q1.这个恶意负载的目的是什么?
Q2.恶意负载是如何注入自身的?
Q3.这个程序还创建了哪些其他文件?

首先使用IDA载入文件

在imports窗口中看到了SetWindowsHookExA,这个函数可以用于应用程序挂钩或者监控windows内部事件
切换到view-a

在040105b处调用了SetWindowsHookExA
第一个参数idHook的值是0Dh,通过MSDN可知对应的是WH_KEYBOARD_LL,可知安装这个钩子的作用就是监控键盘的消息
第二个参数lpfn表示的是hook函数的地址,在上图中被标记为了fn,启用键盘事件监控
这一段应该就是对击键消息做某些手脚,而这个fn参数正在接受这些击键记录。在注册了接受键盘事件的钩子之后,调用了GetMessageA,因为windows不会将消息发送到程序进程的钩子函数汇总,所以一定要调用这个函数,直到所处的循环结构产生错误,才会终止
Q1.这个恶意代码的目的是什么?
A1.这个程序是一个击键记录器
Q2.恶意负载是如何注入自身的?
A2.这个程序使用hook注入,来偷取击键记录

接下来分析之前看到的fn函数
双击跟入

可以看到带有三个参数。
在MSDN中我们知道WH_KEYBOARD_LL回调函数实际上是LOWLevelKeyboardProc回调函数。

接下来我们将参数解析为实际的数据结构。

我们将第三个参数我选归为第二个箭头所示的数据结构
在00401086按y键,修改如图

点击ok即可

在0040108f,00401098处的两个cmp比较的100h,104h的意义可以在这里看到https://wiki.winehq.org/List_Of_Windows_Messages

可知这是用于检查按键的类型

在004010a4将虚拟按键码作为参数传到sub_4010c7
跟入sub_4010c7

一开始是调用CreateFileA来创建或打开一个log文件
成功后往右

调用GetForegropundWindow选择按键按下时的活动窗口,调用GetWindowTextA获得窗口的标题。这样程序就能获得按键来源的上下文
程序将窗口标题写入log文件之后,会来到这里

这里的var_c有buffer传入,回溯buffer

看到buffer就是该函数的参数
esc回到上层函数

可以看到传入的参数实际上就是虚拟按键码
回到之前的位置,再往下走

进入了一个跳转表。在00401220看到虚拟按键码作为一个查询表的索引。查询表得到的值作为跳转表off_401441的一个索引
加上当前的按键为shift,其虚拟按键码为0x10,回到00401202我们从头跟踪

此时Var_c为0x10,而0040120b处减去8
0x10是10进制的16,减去8,等于8
之后来到了这里

根据前面的结果8,我们在byte_40148d找相应的偏移,双击跟入

由于这是一个数组,偏移为8,实际是第9个,也就是3
然后根据00401226,将3*4=12
它会作为off_401441的偏移量,跟入

dd表示的data dword,数据,双字。每个元素会占据4空间
所以12-15对应的是loc_401249,跟入

这里就是将SHIT字符串写入到log中
综合上述分析,可知恶意代码就是一个键盘记录器,通过SetWindowsHookEx实现记录功能,将击键记录到praticalmalwareanalysis.log中。
Q3.这个程序还创建了哪些其他文件?
A3.这个程序创建文件praticalmalwareanalysis.log,来保存击键记录

以上是关于恶意代码分析实战12-03的主要内容,如果未能解决你的问题,请参考以下文章

恶意代码分析实战3-2

恶意代码分析实战3-2

恶意代码分析实战9-1

恶意代码分析实战11-1

恶意代码分析实战15-3

恶意代码分析实战14-02