首页
社区
课程
招聘
[原创]恶意代码GINA拦截样本分析
2021-5-24 02:14 6668

[原创]恶意代码GINA拦截样本分析

2021-5-24 02:14
6668

本文分析的是《恶意代码分析实战》书中的样本Lab11-01.exe
分析工具:
Windows XP系统
Vmware虚拟机
PEiD
火绒剑
Regshot
IDA Pro
拿到样本后首先进行静态分析
1、PEiD查壳
可以看到这个样本没有壳,并且是一个控制台程序
2、提取字符串

这里出现了GinaDLL、msgina32.dll、开机自启动的注册表项
初步判断GINA拦截恶意代码,并且很可能通过修改注册表项随着系统启动自启动

这里有很多函数名,一会儿细说
3、导入导出函数表

导入函数中有提取资源节和文件操作的相关函数,说明这个程序有PE文件操作,所以我们看一下这个程序的PE文件有什么问题
4、PE view查看PE文件

果然有问题,我们在这个PE文件中发现了一个TGAD的陌生资源节,进去一看是一个完整的PE文件格式,也就是说,这个恶意代码的PE文件里嵌套了一个PE文件。

 

到这里静态分析就差不多到极限了,开始动态分析。
这里我用的工具是火绒剑和Regshot。
首先用Regshot拍摄注册表状态。
然后双击运行恶意代码。
发现火绒键查看进程并没有明显变化。运行时可以看到有一个窗口一闪而过。
恶意代码在自己的目录下创建了msgina32.dll文件,感觉和之前提到的提取资源节的操作有关,先留个疑点。

注册表拍摄第二次之后对比,修改了三个值,但是没什么帮助。

到这里我们可以看出exe文件只是一个安装器,运行之后就会安装msgina32.dll文件,所以后面的分析重点就在msgina32.dll上

 

分析msgina32.dll:
还是那个流程
1、先静态分析,提取字符串

开机自启动(修改注册表Winlogon项)、"UN %s DM %s PW %s OLD %s"疑似记录什么信息和密码的字符串、msutil32.sys不清楚是什么,留个疑点,一些函数名
2、之前留的疑点msgina32.dll是否和提取资源节操作有关,现在可以通过查看msgina32.dll的PE文件验证了

对比发现,PE文件和之前exe文件内嵌的不明PE文件完全相同,证明msgina32.dll是从Lab11-01.exe中提取出来的。
3、导入导出函数表:

导入表中貌似有字符串操作,没什么其他的了

导出表中有大量Wlx开头的函数,这个是GINA拦截的特征,还有一些注册表操作
这里基本可以确定恶意代码的主要行为就是实现GINA拦截,并且通过修改注册表实现系统开机的自启动
4、IDA Pro分析:
将msgina32.dll拖入IDA Pro。
首先从入口Dillmain分析。
先大致浏览一下,按下空格键,大体是个选择结构,结构还不复杂。

开始细致分析。


恶意代码先检查参数,检查通过后继续执行,不通过跳转到后面。

继续执行的代码调取系统目录,这里出现了一个字符串"\MSGina",LoadLibraryW获取动态链接库句柄

可以看出恶意代码想要获取Windows DLL msgina.dll的句柄来实现GINA拦截,这里也可以看出恶意dll的命名msgina32.dll与正规的Windows DLL命名很相近,显然是为了起到迷惑分析人员的作用

 

之后恶意代码将获取的句柄保存在变量hLibModule中,以便使用msgina.dll中的函数,用FreeLibraryW释放动态链接库,至此dllmain函数执行完毕。

 

导出函数中有一系列与GINA拦截有关的函数,所以我们对其进行分析。
导出函数中与GINA拦截有关的一般只有Wlx开头的函数,所以我们只看这些函数。


浏览一遍后发现几乎所有的函数都结构相同且只有几行(如上图例子所示),其中都包括了调用sub_10001000位置的函数,猜测是都调用了Windows系统的msgina.dll中的函数,这样来增强隐秘性。
其中只有WlxLoggedOutSAS有很多代码,来分析一下这个函数。

 

分析WlxLoggedOutSAS:

第一遍浏览就注意到"UN %s DM %s PW %s OLD %s"字符串,之前分析过,猜测这个函数和窃取到的信息的存储有关。
没有例外的是这个函数也调用了sub_10001000位置的函数,说明也是使用了Windows系统的msgina.dll中的函数。这里不再赘述。
中间的部分是一些看起来没什么用的代码,不清楚具体的含义。

后面就到了那个字符串部分,仔细看会知道这个字符串被作为参数由sub_10001570位置的函数调用。
这个函数就到此为止了。

 

sub_10001570函数分析:
为了搞清那个神秘字符串的作用和去向,我们接着分析一下这个函数。
看到了之前不知道什么意思的文件名msutil32.sys

分析发现这个文件被创建后进行了一系列文件操作,并且还有和之前作为参数的字符串差不多格式的字符串格式操作,说明窃取的信息按照这种格式被存入了msutil32.sys文件中保存。由于这个程序设置了自启动,并且注册表项Winlogon在C:\Windows\System32\目录中,所以推测msutil32.sys文件也被创建在此目录中。

 

为了验证猜想,我们重新运行Lab11-01.exe程序,并且重新启动系统。
果然,在C:\Windows\System32\目录中的系统文件msutil32.sys
检查msutil32.sys文件中的内容,如下图,分析结束

总结:
这个恶意程序的运行方式是,当用户双击启动恶意程序时,程序自动提取自己的资源节到目录中,释放文件msgina32.dll,并且修改注册表项Software\Microsoft\Windows NT\CurrentVersion\Winlogon,使得重启系统时程序自启动。之后msgina32.dll在系统启动时完成GINA拦截,获取用户信息和密码,存储在C:\Windows\System32\msutil32.sys系统文件中。


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2021-5-24 02:16 被fickle编辑 ,原因:
上传的附件:
收藏
点赞2
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回