专栏名称: Th0r安全
一个专注于ctf的安全团队
目录
相关文章推荐
51好读  ›  专栏  ›  Th0r安全

PC端恶意代码分析Lab11.1-3:行为拓展

Th0r安全  · 公众号  ·  · 2022-04-19 11:27

正文

点击蓝字 · 关注我们

前言

恶意代码分析是安全从业人员非常重要的一个技能。

参考书籍:<>

< >

Lab11-1前言GINA拦截

这是一个比较老的方法,适用于windows Xp系统中,恶意代码使用微软图形识别和验证界面(GINA)拦截技术来窃取用户的登录凭证。GINA的设计目的是让合法第三方通过添加一些代码,来自定义登录过程,如用硬件无线射频标识(RFID)令牌或者智能卡来进行身份认证等。恶意代码编写者利用GINA对第三方的支持来加载密码器

Lab11-1

放入PEid中,无壳。


放入IDA中查看。



可以看到先是从资源节中获取了文件内容,并写入到dll中。


然后将其注册到了winlogon这里,为后面 的GINA拦截获得数据提供了条件。


这里我们从Resource hacker提取资源文件


放入IDA中查看。


这里可以看到在进入和退出的时候都对注册表的winlogon进行了一个判断。如果没有,就注册。


这里对几个函数看了一下,都没有修改的痕迹,只有一个WlxLoggedOUTSAS.


可以看到先是调用了原生的函数。


然后这里获取了用户相关的信息。

这里输出到了msutil32.sys中,该文件位于system32下,因为winlogon在这,该dll是winlogon启动的。

这里运行一下,果然看到了一个GUI的界面,重启,果然看到了相应的信息。

Inline Hook

直接在以前的函数替里面修改指令,用一个跳转或者其他指令来达到挂钩的目的。

Lab11-2

放入IDA中查看。


看到有一个installer,运行。


接着看到了读取一个ini文件的内容。


读取的内容放入一个函数,看着是一个解密函数,用Ollydbg运行。


得到了一个邮箱。


接着获取当前进程的名字,与三个预设的名称进行比较,如果不相等,就退出,这里也起到了一定的反调试。

GetCurrentThreadId

获取当前线程一个唯一的线程标识符

Thread32First

获取线程

CreateToolhelp32Snapshot

获取函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照.

SuspendThread

暂停指定的线程。

Thread32Next

进入到下一个线程。

RsumeThread

重新启动线程。

之后调用一个函数判断是否是当前线程。


如果不是当前线程,则将线程挂起。


然后再获取wsock32.dll和send,传递给一个函数。


这个函数先通过VirtualProtect修改了内存的保护权限,为后面的send修改打下了条件。

然后将send函数的前五个字节复制给中间变量,最后通过增加一个跳转,跳回send函数。



然后这里将中间变量的地址设为传进来的函数地址。


然后再去查看这个函数。


可以看到,先是判断有无"RCPT TO:"

有的话,再后面追加要发送的目的邮箱。

这样实现了一个窃取邮箱内容的一个病毒。

然后再调用函数恢复线程工作。


Lab11-3

将文件放入PEid中查看,无壳。







请到「今天看啥」查看全文