R77 RootKit原代码分析

Install

其中,GetPowershellCommand()函数经过封装,首先会通过创建委托,覆写AmsiScanBuffer来绕过Windows操作系统的AMSI反恶意软件扫描接口;之后会通过StrCatW函数,将stager相关命令行指令进行拼接,从注册表中取出并执行。

Stager

其中,UnhookDll是用于解除目标dll的钩子的函数,主要通过将目标dll的.text(代码部分)进行复原,从而解除原来dll中可能带有的钩子。

SetValue用于将R77 32/64.dll写入注册表中,等待调用。

其中,VirtualProtect函数用于更改当前进程地址空间中某个区域的内存保护属性,这里是将(long)dll + virtualAddress处的保护属性进行了修改,并在下面进行复制;修改完毕后再将保护属性恢复。

随后,将r77-x86.dll和r77-x64.dll写入到\HKEY_LOCAL_MACHINE\SOFTWARE\下的注册表中。

之后,通过内存指针找到service.exe,再启动一个dllhost.exe程序作为winlogon的子进程,最后,通过进程镂空技术,使用service.exe替换winlogon,从而实现service.exe进程的创建。

Service

读取Stager运行时写入到注册表的\HKEY_LOCAL_MACHINE\SOFTWARE

\$77dll的值,也就是r77 x64/r77x86.dll文件的内容。

再实现一个类似全局注入的逻辑——创建一个监控进程,并提供一个回调函数。这个监控进程是尝试连接指定名称的管道pipe,当连接成功的时候读取获取到的内容(这个内容其实就是一个pid),然后调用提供的回调函数操作这个pid;这个回调函数是一个远程进程注入函数,通过指定的目的pid,向对应的进程注入第二步获取的r77x64/32.dll;

R77

这里就是上面在Stager写入注册表,servcie从注册表中读出的r77x32/x64.dll的实现。

这里通过微软研究部门开发的开源Detours库来进行函数的重定向

Reference:r77Rootkit原理分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值