简单的间谍木马分析
0.前言
此篇笔记记录一下分析实战样本11_1的样本,技术已经过时,只是为了了解一下间谍木马的特征和行为。
1.静态分析
- 由下图可知程序没有加壳是一个控制台程序。

- 查看导入表,可以看到对资源节操作的API,还有一些注册表相关的API


- 使用ResHack查看资源数据, 可以发现一段未经加密的PE数据, 后续会分析这段PE

IDA查看字符串,可以看到GinaDll,Windows的开机密码认证模块一般是由Gina DLL完成的。

2.火绒剑行为检测
查看行为,发现样本在同目录下释放了一个dll,经过对比发现,释放的dll就是资源中的PE数据(为什么),然后对注册表写入dll的路径,并且最后摧毁了自己的进程。


3.IDA分析
3.1 main分析
观察main函数代码, 可以发现程序首先通过
GetModuleFileNameA获取自身程序的全路径, 在调用401080后, 然后通过_strrchr截取\之前的内容, 与\\msgina32.dll进行字符串拼接 然后将拼接后的字符串作为参数传入堆栈调用401000
接下来分析401080与401000
3.2 401080分析
可以明显看到资源节数据的操作,然后通过
VirtualAlloc申请一段内存空间用于存放资源中的PE数据, 在将资源中的数据取出后, 通过一系列文件操作将PE数据保存到xx\msgina32.dll文件中, xx的路径就是main函数中通过GetModuleFileNameA取出的当前程序的运行路径。这里有个函数为401299, 这个函数就是类似printf的打印输出函数,这里我们将这个函数重命名, 防止后面的分析中再次出现 , 可以节省时间。
到这里
401080这个函数功能已经确定了, 取资源节数据并写入文件 , 文件名为msgina32.dll, 路径为程序同路径。3.3 401000分析
该函数的参数是释放出的dll文件的全路径,可以看到一系列注册表操作, 函数功能是将dll全路径写入注册表路径为
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, 名为GinaDLL的注册表项。

3.4 exe总结
整个exe的功能就是为了持久化安装dll文件:将自身资源中的PE数据写入与自身路径相同, 文件名为
msgina32.dll的dll文件;将dll文件写入注册表;程序结束。 所以说重要功能应该在dll里面,exe文件只是为了dll文件服务。
4.IDA分析dll
4.1 dllmain分析
将
dll文件拖入IDA,查看dllmain函数,首先是DisableThreadLibraryCalls禁用指定的DLL的DLL_THREAD_ATTACH和DLL_THREAD_DETACH通知,这样可以减小某些程序的工作集大小。 通过
GetSystemDirectoryW获取系统目录, 与\MSGina拼接后获取正常的GinaDll , 然后通过LoadLibraryW加载获取dll句柄, 存入全局变量hLibModule, 然后dllmain函数执行结束
根据前面exe的注册表操作可以知道,这是为了替换正常的GinalDll,
4.2 dll导出函数
查看dll导出函数,依次查看导出函数代码, 发现绝大多数导出函数都调用了
10001000函数, 这个函数很明显用于导出函数的转发。
DllRegister与DllUnregister也是很简单的函数, 对于注册表值的安装/卸载操作,通过查询百度相关文档信息, 我们知道WlxLoggedOutSAS是在windows注销时会调用的函数,接下来看看它想在注销时做什么。4.3 WlxLoggedOutSAS分析

观察代码, 样本首先调用10001000进行正常功能的转发, 然后调用edi, 通过回溯寄存器(如何?), 我们知道了edi是正常的
WlxLoggedOutSAS, 然后样本执行了10001570函数, 观察参数发现一个有趣的字符串UN %s DM %s PW %s OLD %s, 这种携带占位符的字符串常用于输出, 替换, 拼接等, 接下来我们就需要看看10001570处的函数4.4 10001570分析
首先将传入的参数通过
_vsnwprintf进行格式化, 然后打开文件msutil32.sys, 接着格式化时间, 然后调用fwprintf将数据写入流中, 通过寄存器回溯, 我们可以找到esi来源就是wfopen的返回值, 也就是代表文件msutil32.sys然后调用
FormatMessageW转化一些数据, 观察参数大致能猜出来是系统调用时传递的数据. 最后关闭文件,结束程序。
4.5 总结
根据分析, 整个dll的作用就是劫持WlxLoggedOutSAS函数, 获取到函数参数后加入一些例如时间戳信息后写入文件
msutil32.sys, 这也说明这个sys文件并不像它表现出的是个驱动文件, 而是一个简单的日志文件。 由于GinaDll在新系统中已经不再使用, 因此想要复现需要XP或者更旧的系统, 这样在点击注销后, 样本会记录用户的账户密码, 也就是个最简单的间谍木马