双机调试一直出了不晓得为什么的问题,导致第十章的东西一直不晓得怎么调试

先往后走一章,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.csdn.net/wangtiankuo/article/details/76672916