从hook007学习dll劫持自启动方式

转载来自:http://blogs.360.cn/360safe/2016/10/24/hook007autostart/
https://blog.51cto.com/2817071/710911

级别一:
一般程序调用dll会从一定的路径查找需要的Dll,在调用真正的dll之前将payload变成dll让程序先识别调用,这就是dll劫持。
加载顺序为:首先会尝试从当前程序所在的目录加载DLL,如果没找到,则在Windows系统目录中查找,最后是在环境变量中列出的各个目录下查找。利用这个特点,先伪造一个系统同名的DLL,提供同样的输出表,每个输出函数转向真正的系统DLL。程序调用系统DLL时会先调用当前目录下伪造的DLL,完成相关功能后,再跳到系统DLL同名函数里执行。这个过程用个形象的词来描述就是系统DLL被劫(hijack)了。

级别二

利用msdtc.exe。
msdtc.exe是微软分布式传输协调程序,以Windows服务的形式存在。该服务在启动过程中会调用一个系统中不存在的dll文件oci.dll。而***可以生成一个oci.dll文件供msdtc.exe加载,而该dll文件也会随着服务的启动而启动。将***生成为oci.dll放在%windir%system32下,在启动该服务后,会调用这个dll。
关键点:

  1. 分别加载3个dll:oci.dll,SQLLib80.dll,xa80.dll

  2. 然而特别的是,Windows系统默认不包含oci.dll

  3. 也就是说,将payload.dll重名为oci.dll并保存在%windir%system32下

  4. 域中的计算机启动服务MSDTC时就会加载该dll,实现代码执行

             设置服务自启动:
             使用wmic.exe "service where name="msdtc" changestartmode "automatic"" open
    
         检出特点:查找oci.dll文件,服务MSDTC的开启。

级别三:

Spooler服务是windows的打印机服务,在服务启动时,会检索注册表键HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64(Windows NT x86)下Directory的键值,而该键值对应的是一个文件夹名称,文件夹位于C:\Windows\System32\spool\prtprocs下。Spooler服务检索该注册表之后会查找该文件夹路径下的winprint.dll(x64下,x86下为TPWinPrn.dll)。hook007远控***利用这一点修改了注册表键值使其指向另一文件夹,然后在C:\Windows\System32\spool\prtprocs路径下新建该文件夹,并将***以dll的形式存放到文件夹中,重命名为winprint.dll。

检出:
查看C:\Windows\System32\spool\prtprocs下文件夹修改时间,查看winprint.dll修改时间

级别四
第一个可利用的点来自于RemoteAccess服务。RemoteAccess服务在启动时会读取注册表键HKLM\Software\Microsoft\Ras\AdminDll下的DLLPath的值,并加载DLLPath的值所表示的路径下的dll。因此***可以将DLLPath的值设为***dll的路径以达到劫持效果。如果将RemoteAccess服务设为自动启动,那么该dll也将随着RemoteAccess服务开机自启。

第二个可利用的点就是利用了这样一个较为稳定的dll,它劫持一个常见的注册表键HKLM\SYSTEM\CurrentControlSet\Services\,这是一个存放系统服务相关信息的注册表键。样本中的***劫持了系统服务eventlog,也就是事件查看器,通过修改注册表键HKLM\SYSTEM\CurrentControlSet\Services\eventlog下ServiceDll的值来进行dll劫持。

原值对应的是%SystemRoot%\System32\wevtsvc.dll,***作者将其改为***dll的路径,每次事件查看器启动时就会加载该dll。

检出:
(1)检查HKLM\Software\Microsoft\Ras\AdminDll下的DLLPath的值
(2)检查HKLM\SYSTEM\CurrentControlSet\Services\eventlog下ServiceDll的值 正确的值为:%SystemRoot%\System32\wevtsvc.dll

转载于:https://blog.51cto.com/antivirusjo/2092368

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值