双机调试一直出了不晓得为什么的问题,导致第十章的东西一直不晓得怎么调试
先往后走一章,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: