双机调试一直出了不晓得为什么的问题,导致第十章的东西一直不晓得怎么调试
先往后走一章,windbg之后再补习好了
IDA分析该程序

main中的重要函数有两个,分别是401080和401000
分析401080函数:

第一眼看到的是FindResource的API调用,该函数确定指定模块中指定类型和名称的资源所在位置。其中参数是:

第一个参数是被提取资源文件的句柄,第二个参数是被提取资源的名称,第三个参数是需要提取的类型

然后执行了打开文件、写入文件的操作,文件名为:

可见,底下应该会生成一个伪造的(蓝色标记)
在程序运行之前,搜索msgina32.dll

这个版本下搜索不到msgina.dll


这个系统上可以找得到

GINA拦截原理在书上的11.3.1解释得很清楚了
可以在注册表的相应位置添加表项,从而实现某个恶意dll作为GINA拦截器的恶意功能
根据书中的说法,如果分析的一个DLL中有许多包含前缀Wlx的导出函数,那么就有很充分的理由判定正在分析一个GINA拦截器。多数的导出函数只需要简单调用msgina.dll中的真正函数

在export项中看不到呀
重启机器之后,发现原来没有用户登录(输入密码)这个界面的,现在有了,可见这个恶意dll很有可能是劫持的登陆过程,然后获取用户名密码的
分析401000函数:


可见是对注册表进行写入的修改

运行前是没有GinaDLL这一项的
这里的401299函数比较简单,但是有几次函数调用,不晓得具体是个什么功能
然后就可以运行跑起来,看看会发生什么
FILE MONITOR


运行完了之后,竟然在当前文件夹下创建了一个文件


注册表下的新建表项也是到位了的
所以,现在可以来分析释放出来的恶意dll做了什么

和书上说的一样,有好多导出表函数,也有好多以Wlx前缀的导出表函数

然后看到dllmain:

从系统目录下找到MSGina.dll

很明显,msgina32.dll是个恶意的,所有合法的过程都是直接调用的msgina.dll的导出函数,非法的过程是自己实现的,所以在代码体积上差距很大
分析WlxLoggedOutSAS函数:

这一段:通过调用10001000函数,恶意代码实现了将登录凭证信息传递给msgina.dll。这个函数可以动态解析和调用msgina.dll中的WlxloggedOutSAS,字符串WlxLoggedOutSAS作为一个参数传递给它。

这一段,明显是传递参数,保存有效信息的,记录包括用户名、Windows域名称、密码以及旧密码

保存的文件名为msutil32.sys

打开可以发现:

问题1:代码向磁盘释放了什么
释放了一个msgina32.dll在exe的当前目录下
问题2:代码如何进行驻留
驻留方式是通过注册表的添加表项


问题3:代码如何窃取用户登录凭证
msgina32.dll截取了winlogon.exe与msgina.dll的通信
问题4:代码对窃取的证书做了什么处理
利用函数WlxLoggedOutSAS,将窃取的证书保存在system32下的msutil32.sys文件
问题5:如何在测试环境下,让代码获得凭证
系统没有任何特殊保护,就获得了凭证
PLUS:
https://blog.youkuaiyun.com/wangtiankuo/article/details/76672916
本文通过双机调试分析恶意DLL,揭示其通过GINA拦截窃取用户登录凭证的技术细节,包括DLL注入、注册表驻留及敏感信息保存。
1173

被折叠的 条评论
为什么被折叠?



