各种进程保护方法的比较

一.利用hook 保护进程

1.inline hook

采用inlink hook 保护自身的进程,对抗CreateRemoteThreadDll注入。在ring3Dll注入的标准做法是使用CreateRemoteThread控制目标进程调用Loadlibrary加载,针对这一做法,可以按如下的步骤进行自身保护:

1在自身初始化完毕后,挂钩自身的LoadLibraryExW,并在主线程中获取当前线程ID

2在挂钩函数中判断当前线程ID是否和主线程ID相等,如不相等则可能是来自外部的DLL注入,进行拒绝或通知用户处理。

3对于自身所需要的LoadLibrary行为,可以在主线程中进行,或调用原始的LoadLibraryExW

2.SSDT hook

当打开任务管理器时,选择一个进程并结束进程这个过程,可以详细的分为以下几步:

1) taskmgr 进程首先获取要结束的进程句柄,通过 OpenProcess()这个下APIOpenProcess 调用在Kernel32.dll 中; 

2系统捕获API调用,转到Ring0 级下,从 SSDT中取得对应的 RintOpenProcess 的入口地址,执行相应操作,此过程在 ntdll.dll 中; 

3完成NtOpenProcess 操作后转回Ring3 级下返回 OpenProcess 函数返回taskmgr进程,因此获取了要结束的进程的句柄; 

4taskmgr 执行 TerminateProcess()这个 Ring3 下的 API,传入进程句试结束进程; 

5系统捕获API调用,再次转到 Ring0 级下,从SSDT中取得对应的PINtTerminateProcess 的入口地址,执行结束进程操作; 

6、完成 NtTerminateProcess 操作后转回 Ring3 级下返回 TerminatePro数,继而返回taskmgr 进程,完成结束进程过程; 

在这一个流程中,SSDT起到了重要的作用。于是针对这一流程可以hook ssdt,

改变这处流程的处理。

二.采用多进程保护进程

它是指一个或多个程序运行多遍,只有一个进程处于工作状态,其余进程的目的是为了保护这个进程。一旦其中一个进程被杀或失效,其他的进程将会创建出另外进程来填补

应用多进程来实现进程的保护中,可以综合运用多种保护的方法来实现对进程的保护。双进程保护基本的做法如下:

1)A为要保护的进程,在创建A进程的同时,同是创建副进程BB的作用主要是用来监视A进程的状态

2)A进程被结束,B进程根据记录A进程的状态重新创建A进程

3)B进程被结束,A进程也会自动去创建B进程

在对AB的保护中也可以利用一些其它的单独的方法来保护自身的进程不被结束。

三.对管理系统的进程保护的看法

CDMS系统能正常运行依赖的一个进程是UniFrm2.exe要实行对此进程的保护单一运用一种方法的安全性不是很高。如每种方法被攻破的概率为50%,那么综合一下同时采用两种方法保护UniFrm2.exe,此进程幸存的概率为(150%*50%)=75%一下就提高了不少。

估应该采用多种方法结合的方法来对些进程的保护。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值