前言
Windows xp 中,恶意代码可以使用微软图形识别和验证界面(GINA)拦截技术窃取登陆凭证,虽然是老系统,老技术了,可能有些过时,不过这种技术神似中间人攻击,而且示例程序极其优秀所以还是值得分析的。
GINA拦截图解
渣渣图又来了233
程序分析
首先运行这个程序没什么反应,所以直接可以ida打开分析,main函数长这样,打开string界面,有点东西,有经验的大佬会发现一些敏感关键字。
接着发现程序释放了自身TGAD的资源,保存为msgina32.dll,这可能是为了防止分析而混淆视听吧,然后修改了注册表,将msgina32.dll的路径插入到注册表HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL中,让系统启动时就会加载这个DLL。
接下来分析msgina32.dll,这是DLL的dllmain()函数,只是成功加载这个dll之后就会获取msgina.dll的句柄,并将句柄保存在一个全局变量中。因为msgina32.dll要想获取凭证必须让Winlogon与msgina之间有通信。
然后我们看到此dll导出函数果然有WlxLoggedOnSAS和WlxLoggedOutSAS等。
因为作为winlogon和msgina的中间拦截者,那么一定会对导出函数做手脚,所以我们先看这两个登陆登出函数
明显发现logon函数没什么问题,就是调用了一个中间函数,将函数名作为参数传入后调用,不过logout函数却有一个多出来的函数,进入之后可以看出来是一个文件操作,貌似是记录某些信息,至于是什么我们不太清楚,所以我们只需要重启看一看便知道了。
其中的file操作我们需要记住文件名,如下图
当重启系统时会发现本来系统不会加载登陆窗口,而注册表的自启动使msgina32.dll自动加载,从而获取msgina.dll的句柄,从而弹出登陆窗口。
而当多次重启后会发现system32目录下的msutil32.sys(这并不是内核文件)文件用记事本打开,已经拦截下了登陆凭证,不过需要注意的是程序是在用户登出的时候记录的凭证。
虽然分析并不透彻,不过还是值得一学的
程序及内容源自《恶意代码分析实战》一书11-1。