恶意代码分析实战 第十一章课后实验Lab11-01

首先查看一下字符串:

在这里看到了GinaDLL和Winlogon,这就有理由猜这是一个拦截GINA的恶意代码,这个在书中也提到了,GINA拦截就是在Windows XP系统中,恶意程序可以使用微软图形识别和验证界面(GINA)拦截技术来窃取用户的登陆凭证。

下面使用peid查看一下导入表:

在kernel32.dll中发现了许多关于资源的API函数。

在advapi32.dll中发现了关于注册表的函数。

由于知道了这个程序对资源做了一些操作,所以用Resource Hacker来查看一下:

在这里看到了PE和MZ,说明这里隐藏这一个PE文件。可以将这个文件提取出来,使用peid可以知道这是一个.dll文件。

运行程序前使用ProcessMonitor来进行监控,并且关注一下注册表有什么变化。双击运行Lab11-01.exe,可以发现桌面多了一个名为msgina32.dll的文件,同时呢,在注册表的位置多了一个GINADLL,双击GINADLL出现的路径也就是桌面上的msgina32.dll。前面我们提取过一个文件,查看一下这两个的MD5值:

可以看到两个的MD5值是相同的。这也就确定了这两个是同一个文件。所以呢,恶意程序从名为TGAD的资源节中提取出名为msgina32.dll的文件,将其释放到硬盘上。

问题2:

在前面已经分析过了,为了让msgina32.dll作为GINADLL安装,恶意程序将自己添加进了注册表里,系统重启后,msgina32.dll将会被加载。也就是驻留。

问题3、4:

首先使用strings程序查看msgina32.dll:

这里看到了许多以Wlx为开头的函数。因为msgina32.dll这个恶意程序截获了Winlogon与msgina.dll之间的通信,为了让系统能够正常工作,它必须将登录凭证信息传递给msgina.dll。为了完成这项工作,恶意程序必须包含GINA要求的所有导出函数。并且大部分的前缀是“Wlx”。那么对于这个DLL程序来说,这里面有很多的“Wlx”开头的函数,那么我们就有充分的理由认为,这个样本是一个GINA拦截。还看到了msuti123.sys,这个重点关注一下。

用ida加载这个文件:

首先我们看到了fdwReason这个参数,这个参数表示DLL函数被调用的原因,然后这个参数会与1进行比较,也就是在判断当前这个DLL文件是不是在加载时被调用的。如果是的话就会进入下面的程序:

程序会调用GetSystemDirectoryW这个函数,用于获取系统目录。然后调用lstrcatW把上面获取的目录与"\\MSGina"组合在一起,再使用LoadLibraryW函数获取msgina.dll的句柄。这里将LoadLibraryW的返回值保存到了eax,然后又将eax的值保存到了hModule里面。这样就可以让这个恶意的DLL程序的导入函数使用真实的msgina.dll的函数,从而使系统操作得以正常执行。

下面来分析一下导出函数,找到WlxLoggedOnSAS

双击点进去:

可以看到,这里现将字符串“WlxLoggedOnSAS”作为参数压栈,然后调用了sub_10001000这个函数。双击进去分析一下:

可以看到,这里使用到了我们刚刚所获取的msgina.dll的句柄hModule以及WlxLoggedOnSAS(lpProcName)这个字符串。下面调用了GetProcAddress,目的就是获取WlxLoggedOnSAS的地址。继续分析其它的导出函数,基本上和WlxLoggedOnSAS这个函数差不多。但是发现这个函数WlxLoggedOutSAS有点不一样,这个函数是在系统注销的时候被调用的,进去分析一下:

这里进行了一系列的push操作,还有一个格式化字符串"UN %s DM %s PW %s OLD %s",可以看到这些参数都是函数sub_10001570的函数,双击进去查看一下:

这里是将时间,日期和登录凭证写入到msutil32.sys这个文件里。

分析到这里我们就可以知道,恶意程序使用GINA拦截窃取用户登陆凭证。msgina32.dll能够拦截所有提交到系统的用户登陆凭证。而恶意程序会把存储登录情况的日志文件msutil32.sys保存到系统目录里面。

问题5:

在前面分析的时候已经运行过这个恶意程序了,重新启动电脑,找到msutil32.sys这个文件,这里面就记录了用户的登录凭证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值