1、问题
首先用Strings查看一下字符串:
我们可以看到字符串GinaDLL以及Winlogon这个注册表的位置。在Windows XP系统中,恶意程序可以使用微软图形识别和验证界面(GINA)拦截技术来窃取用户的登陆凭证。
通过PEID我们可以看到很多关于资源的API函数。可以猜测它对资源进行了某些操作,接下来用Resource Hacker来查看一下这个程序的资源。
用Resource Hacker打开这个程序,可以发现程序的资源中隐藏着一个PE文件,我们将其提取出来,可以发现是一个dll文件。
运行该程序,使用promon对其行为进行监控,发现它释放了一个名为msgina32.dll的文件,通过md5码比对,可以看到从资源中提取出的dll与该dll文件md5码一致,说明它们是同一个文件。
我们再来分析一下msgina32.dll这个文件,利用Strings查看一下这个DLL文件:
在这里我们可以看到很多以“Wlx”为开头的函数。msgina32.dll这个恶意程序截获了Winlogon与msgina.dll之间的通信,为了让系统能够正常工作,它必须将登录凭证信息传递给msgina.dll。为了完成这项工作,恶意程序必须包含GINA要求的所有导出函数。
下面来分析一下导出函数,首先看一下WlxLoggedOnSAS。可以看到,这里现将字符串“WlxLoggedOnSAS”作为参数压栈,之后调用了sub_10001000这个函数。然后跳转到该函数的返回值的位置继续执行。可以进入这个函数来分析一下:
可以看到,这里使用了我们刚才所获取的msgina.dll的句柄以及WlxLoggedOnSAS这个字符串,并且调用了GetProcAddress来获取msgina.dll中的WlxLoggedOnSAS函数的地址。这样就能够实现该函数的正常调用。
WlxLoggedOutSAS这个函数在系统注销的时候被调用,并且包含一些额外的代码。
我们进入进入sub_10001570函数可以看到这段代码的目的是将日期、时间以及登陆凭证等信息写入到msutil32.sys这个文件里面。
1、这个恶意代码向磁盘释放了什么?
恶意程序从资源节中提取出名为msgina32.dll的文件,将其释放到硬盘上。
2、这个恶意代码如何进行驻留?
恶意程序将自己添加进注册表:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL中。这使得系统重启后,msgina32.dll将被加载。
3、这个恶意代码如何窃取用户登录凭证?
恶意程序使用GINA拦截并窃取用户登陆凭证。
4、这个恶意代码对窃取的证书做了什么处理?
msgina32.dll能够拦截所有提交到系统的用户登陆凭证。而恶意程序会把存储登录情况的日志文件(msutil32.sys)保存到系统目录里面。
5、如何在你的测试环境让这个恶意代码获得用户登录凭证?
重启计算机,这样就能够找到这个存储着登录信息的文件。