恶意代码分析之简单键盘记录器

0x01 前言

该样本来源https://any.run/,本编文章主要记录分析过程,思想方法,如有错误不足,欢迎指出。

0x02 基本信息

NAME

Lab03-03.exe

MD5

e2bf42217a67e46433da8b6f4507219e

SHA1

daf263702f11dc0430d30f9bf443e7885cf91fcb

系统平台

Windows

开发语言

C++

                                                       表1-1 样本信息

测试环境

WinXP Windows 7

测试工具

IDA、OD、PEID等

                                                     表1-2 测试环境及工具

1.1查壳

                                                         图1-1 Exeinfo

1.2导入表

                                         图1-2 导入表查看器

1.3资源表

                                           图1-3 PE细节

                                                  图1-4 资源表

1.4Procexp监控

1)释放svchost.exe

                                                       图1-5 释放文件

2)程序退出

主程序退出,留下svchost.exe进程。

                                                                  图1-6 程序退出

3)进程对比

svchost.exe是微软Windows操作系统中的系统文件,微软官方对它的解释是:svchost.exe 是从DLL中运行的服务的通用主机进程名称。这个程序对系统的正常运行是非常重要,而且是不能被结束的。许多服务通过注入到该程序中启动,所以会有多个该文件的进程。

                                                                      图1-7 文件对比

1.5procmon监控通过监控可以发现由主程序生成的svchost.exe在不断调用WriteFile和CreateFile等函数对一个名为practicalmalwareanalysis.log的文件进行操作:

                                                            图1-8 文件操作

                                                      图1-9 键盘记录

由此可知,程序运行后释放svchost.exe,然后退出主程序,留下的svchost.exe会在同目录生成practicalmalwareanalysis.log用于记录键盘信息。

0x03 样本分析

2.1 main函数

                                                                 图2-1 main函数

2.2 sub_40149D函数

跟进sub_40149D函数,将BufSize和Buffer当做参数传GetSystemDirectoryA,该函数作用于检索系统目录的路径,系统目录包含系统文件,例如动态链接库和驱动程序。

                                                         图2-2 sub_40149D

该GetSystemDirectoryA函数执行完后,eax中长度为19,ebp+0xC存的是

路径。

                                                                图2-3 sub_40149D返回

                                                       图2-4 sub_40149D返回

2.3 sub_40132C函数

传递的参数是PE文件的地址

                                                           图2-5 sub_40132C返回

                                                                        图2-6 sub_40132C函数

                                                                     图2-7 sub_40132C函数

资源名判断

                                                                       图2-8 资源名判断

2.4 sub_4010EA函数

函数执行前,创建svchost.exe,随后申请内存并将线程中获取的寄存器的值放入内存中。

                                                              图2-9 创建svchost.exe

函数执行后,主程序退出,释放的PE文件未分析。

                                                                图2-10 程序退出

0x04 总结

程序运行后生成名为svchost.exe的程序,随后主程序自动退出,留下的程序记录键盘及文件操作信息。

声明

以上内容,均为文章作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

长白山攻防实验室拥有该文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的副本,包括版权声明等全部内容。声明长白山攻防实验室允许,不得任意修改或增减此文章内容,不得以任何方式将其用于商业目的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容