恶意代码分析实战Lab1101

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

先往后走一章,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

全部评论

相关推荐

HR_丸山彩同学:你的项目描述里,系统设计讲了很多:MemCube是什么、三级存储架构怎么设计、四种遗忘策略分别是什么。这些面试的时候讲没问题,但简历上不需要这么细。 简历要突出的是影响力,不是实现细节。面试官看简历的时候想知道的是「这个项目有多大价值」,不是「这个项目具体怎么实现的」。实现细节是面试时候聊的 怎么改:技术细节可以精简为一句「采用三级存储架构+四种遗忘策略」,把省出来的篇幅用来写影响力。比如:项目有没有开源?有没有写成技术博客?有没有被别人使用过? 校园经历没有任何信息量,任何人都可以写这句话,写了等于没写。更关键的是,你投的是技术岗,校园活动经历本来就不是加分项。如果非要写,必须写出具体的数字和成果。如果你没有这些数字,那就老老实实删掉 「端到端耗时缩减30-40%」要给出确切数字和绝对值。从1000ms降到600ms是降了40%,从100ms降到60ms也是降了40%,但这两个含义完全不一样。其他也是,涉及到数据,准备好证据,口径统一,面试会问 「熟练」「熟悉」「了解」混在一起用,读起来很乱。而且「了解前端需求」最好改成「具备前后端协作经验」
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务