静态分析一款锁首的RootKit样本 – 作者:0zapt4toM

* 本文作者:0zapt4toM,本文属FreeBuf原创奖励计划,未经许可禁止转载

闲来无事,分析一个Rootkit(MD5:973fe1392e8145daf907fad7b4fbacdc)病毒驱动,样本来源于52pojie论坛。分析此样本的目的在于增加自己的逆向分析能力和加深对windows内核的认识。(可能有分析的不对的地方,请大家指正)

病毒整体逻辑

整体的病毒逻辑如下图所示。

main_mal_logic.png

1,创建病毒设备对象\\Device\\93218ec2da92e0af。

2,hook多处系统函数。

3,下载并执行盗号木马。

4,初始化锁首所需的html文件。

5,解密锁首所需的网址。

6,创建映像加载回调。

7,执行主要的锁首逻辑。

8,注册mimifilter。

9,创建一个线程,检查更新以及以上逻辑是否都正确执行。

下面详细介绍每一个病毒逻辑。

创建驱动对象

创建设备名为\\Device\\93218ec2da92e0af的设备,并且注册了关机回调。

create_drive.png

HOOK系统函数

hook_sysapi.png

使用同样的方法hook了ntdll的ZwCreateThreadEx,NtCreateThreadEx,ZwProtectVirtualMemory,NtProtectVirtualMemory,ZwReadVirtualMemory,NtReadVirtualMemory,ZwWriteVirtualMemory,NtWriteVirtualMemory以及kernel32的WinExec和ZwClose多处API。

下载执行盗号木马

该病毒会下载执行盗号病毒(MD5:0769a5098f7e95e1d9bd4bd0acce8eae),该病毒主要用与收集windows登陆凭证的hash,以及各种服务器的账号密码。

a,收集NTLM哈希。

image.png

b,收集各种账号密码

image.png

这个样本在vt的检出率为55.2%。

vt.png

解密锁首需要的网址

解密逻辑分为两步,第一步调用decode_funA()解密key,然后使用key解密内存中被加密的url得到明文url,并将全局变量lockpage_flag设置为1。

decode_url.png

锁定浏览器主页

我们查看解密出的url的交叉引用,可以看到有三处调用逻辑。

xref.png

lockpage_logic1:

lock_logic1.png

lock_logic2:

lock_logic2.png

lock_logic3:

lock_logic3.png

创建映像加载和进程回调

创建映像加载和进程回调,在指定进程运行时,运行相关的病毒逻辑。

proc_image.png

注册minifilter

逻辑如下:

minifilter.png

更新及检测各逻辑是否都正常执行

@FUWY4TU_U8CCP6{)(@OXFC.png

这里有三个全局变量,updata_flag,run_spyware_flag和lockpage_flag,检测这几个flag位是否正常,特别注意的是lockpage_flag,如果此标志位不为1,则表示加密的url位正常解密,则会再次执行锁首逻辑。

额,大部分的功能都分析完了,一部分觉得没必要的就省去了,还有一部分分析的不透,也没写上了,内核这块还是不太熟悉,大佬们勿喷。

* 本文作者:0zapt4toM,本文属FreeBuf原创奖励计划,未经许可禁止转载

来源:freebuf.com 2018-04-24 08:00:15 by: 0zapt4toM

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论