摘要
此恶意代码样本是《恶意代码分析实战》书中的实验Lab12-03样本。此样本主要使用了击键记录技术(钩子)。

环境和工具

  • 虚拟机:VMware虚拟机
  • 系统环境:win10系统(win xp系统运行时出现障碍,被迫中止)
  • PEID
  • strings提取字符串
  • PEview
  • IDA pro

一、静态分析

1、查壳:

无壳。
查壳结果截图

2、提取字符串:

提串结果截图
发现字符串中出现了几个值得注意的地方:

  • “[Window:”:应该是一个字符串,先记着,后面再看看有什么用;
  • “practicalmalwareanalysis.log”:像是一个日志文件的名字;
  • “[SHIFT]”、”[ENTER]”等:显然是键盘的一些特殊键的名称,感觉这个恶意程序和键盘输入可能有关。

3、导入表:

导入表截图
前面的函数看起来没什么异常。
导入表截图
后面这几个函数值得注意:

  • SetWindowsHookExA、CallNextHookEx、UnhookWindowsHookEx:明显在使用钩子技术;
  • GetForegroundWindow、SetWindowsHookEx:像是在使用击键记录技术。

总结
目前怀疑恶意代码使用了钩子技术应用中的击键记录技术,后面需要验证这个猜想,还要找出记录结果保存的文件和文件保存的位置。

二、动态分析:

双击运行,打开火绒剑查看进程变化,考虑到这可能是一个击键记录器,所以在调试过程中随意打开几个窗口,运行几个程序,输入几个命令。
效果如下图。
进程管理截图
恶意代码创建了进程Lab12-03.exe和它的子进程Conhost.exe。
运行结果截图
运行之后,恶意程序所在目录下出现了一个日志文件,名字和之前提串时看到的字符串相同,查看文件内容如下图。
日志文件截图
日志文件截图
如上图,文件内存储了我打开的几乎所有窗口的名称、输入的所有字符串,甚至包括了我一些特殊字符组成的击键输入。
这里我们可以确定,这就是一个击键记录器,记录的内容存储在practicalmalwareanalysis.log文件中。

三、反汇编分析:

为了进一步了解这个恶意程序是如何工作的,我进行了反汇编分析。
汇编代码截图
进入main函数,看到恶意代码向函数FindWindowA中传递一个参数”ConsoleWindowClass”,应该是寻找到控制台程序窗口,为了之后提取窗口的名称保存起来。
汇编代码截图
注意到第一个函数_memset,跳转进去。
汇编代码截图
汇编代码截图
汇编代码截图
这里有一些函数toend、tail、dwords,都是递归函数,可能和击键记录有关,不太清楚什么用途。回到主函数,往下看其他函数。
汇编代码截图
这里出现了一个和钩子相关的函数SetWindowsHookExA,应该是用这个功能来使用钩子。注意到这个函数有一个传入的参数fn,看旁边的列表应该是一个函数的名称,所以跳转进去看看。
汇编代码截图
fn果然是一个函数,并且有调用函数CallNextHookEx,可以确定,恶意代码就是通过使用SetWindowsHookExA的功能来实现钩子的技术。
汇编代码截图
这里还调用了一个函数sub_4010C7,跳转进去看看。
汇编代码截图
这里出现了字符串”practicalmalwareanalysis.log“,还出现了CreateFileA函数,结合之前的分析,很明显,这是在创建并命名一个可以保存击键记录的日志文件。后面调用GetForegroundWindow函数,应该是要进行击键记录操作,往下看。
汇编代码截图
这里出现了[Window:等字符串,并将这些字符串写入文件,而三个写入文件函数的中间的那部分应该就是在提取窗口的名称和文件的位置信息,并打印出来。
汇编代码截图
汇编代码截图
后面就更明显了,识别用户从键盘输入的所有字符,包括特殊字符。

四、总结:

这个样本使用了 SetWindowsHookExA的功能来实现钩子技术,最终实现了击键记录和窗口名称、文件位置的记录。将记录的内容保存在当前目录下的日志文件practicalmalwareanalysis.log中。
击键记录是钩子技术的应用之一。钩子是系统消息处理机制中的一个点,可以用来监听事件,例如消息,鼠标动作、击键等。这个技术的目的主要是通过监视并获取用户的操作记录,来获取用户的隐私信息。