注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨夜归人

专业收集资料,个人爱好!

 
 
 

日志

 
 

驱动编程资料和N 种内核注入DLL 的思路  

2011-07-24 06:38:30|  分类: 驱动 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

"N 种内核注入DLL 的思路"

内核注入,技术古老但很实用。现在部分RK 趋向无进程,玩的是SYS+DLL,全部存在于内存中。

(1) APC技术

给一个Alertbale 的用户态线程插APC,让其执行其中的ShellCode,来执行我们的代码。   
(2) 内核Patch   
当系统任何一个线程创建时,  
会走到CreateThread函数,然后执行空隙中的ShellCode,其负责调用LoadLibrary加载我们的DLL。DLL一经加载,会发IOCTL通知本驱动,让驱动卸载HOOK。这样就完成了内核注DLL 的过程。(3) 内核HOOK ZwMapViewOfSection 有部分模块加载时会调用ZwMapViewOfSection,比如进程创建时映射N 份DLL 到自己的虚拟空间中去.我们替换SSDT 中的这个函数,过滤出是加载Kernel32.dll 的情况,从参数中取得其基址,Inline Hook 其EAT 中的CreateThread 函数,跳转到在这个进程虚拟地址空间中申请的Buffer,在其中完成DLL 的加载过程.

(4) 内核HOOK NtCreateThread

跟踪进程创建的流程,会很明晰的发现有多点可以patch 来实现DLL 的注入。

(5) 内核感染常用模块,让感染模块帮我们Load DLL

(6) 拦截NtCreateUserProcess、NtCreateSymbolicLinkObject

(7) 内核拦截NtResumeThread

(8) NtUserSetWindowsHookEx 注入

纵观进程启动的全过程,可patch 的地方很多,只要保证进程、线程上下文不被破坏,注入的手法可多种多样。只要保证我们的DLL 注入时间足够短,稳定性足够高即可。当我们迫不得已要从内核注入DLL 到用户进程去时,系统已经中毒很深,此时运用类似上面提到的技术来加载DLL,让DLL 做我们驱动无法完成的任务,是可以接受的。

  评论这张
 
阅读(1451)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017