进程隐藏的各种方法 以及分析比较以及实现链接

典型进程隐藏技术
1  基于系统服务的进程隐藏技术
在 W I N 9X 系列操作系统中, 系统进程列表中不能看到任何系统服务进程, 因此只需要将指定进程注册为系统服务就能够使该进程从系统进程列表中隐形

在win9x下用RegisterServiceProcess函数隐藏进程,NT架构下用不了 即win2000  xp等什么的用不了此方法。

2  基于API HOOK的进程隐藏技术
API HOOK指的是通过特殊的编程手段截获WINDOWS系统调用的API函数,并将其丢弃或者进行替换。 通过API
HOOK编程方法,截获系统遍历进程函数并对其进行替换,可以实现对任意进程的隐藏

3  基于 DLL 的进程隐藏技术:远程注入Dll技术
DLL文件没有程序逻辑,不能独立运行,由进程加载并调用,所以在进程列表中不会出现DLL文件。如果是一个以DLL形式存在的程序,通过某个
已有进程进行加载, 即可实现程序的进程隐藏。在windows系统中, 每个进程都有自己的私有地址空间, 进程不能创建属于另一个进程的内存指针
。而远程线程技术正是通过特殊的内核编程手段, 打破进程界限来访问另一进程的地址空间, 以达到对自身 进行隐藏的目的。
远程线程注入DLL技术指的是通过在某进程中创建远程线程的方法进入该进程的内存空间, 然后在其内存空间中加载启动DLL程序。

4  基于远程线程注入代码的进程隐藏技术
这种方法与远程线程注入 DLL 的原理一样,都是通过在某进程中创建远程线程来共享该进程的内存空间。所不同的是,远程线程注入代码通过直接
拷贝程序代码到某进程的内存空间来达到注入的目的。因为程序代码存在于内存中, 不仅进程列表中无法检测, 即使遍历进程加载的内存模块也无法
找到被隐藏程序的踪迹。

5  Rootkit方式
Intel CPU 有4 个特权级别: Ring 0, Ring 1, Ring 2, Ring 3。Windows 只使用了其中的 Ring  0 和  Ring  3 两个级别。
操作系统分为内核和外壳两部分:内核运行在Ring0级,通常称为核心态(或内核态),用于实现最底层的管理功能,在内核态
可以访问系统数据和硬件,包括处理机调度、内存管理、设备管理、文件管理等;外壳运行在 Ring 3 级,通常称为用户态,
是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。通常情况下,用户态的应用程序没有权限访问核心态的地址空间。
Rootkit 是攻击者用来隐藏自己的踪迹和保留 root 访问权限的工具,它能使攻击者一直保持对目标机器的访问,以实施对目标计算机的控制[1]。从 Rootkit 运行的环境来看,可将
其分为用户级 Rootkit 和内核级 Rootkit。
用户态下,应用程序会调用 Wi n32 子系统动态库(包括Kernel32.dll, User32.dll, Gdi32.dll等) 提供的Win32 API函数,
它们是  Windows  提供给应用程序与操作系统的接口,运行在Ring  3 级。用户级 Rootkit 通常就是通过拦截 Win32  API,建立系统钩子,插入自己的代码,从而控制检测工具对进程或服务的遍历调用,实现隐藏功能。
内核级 R o o t k it 是指利用驱动程序技术或其它相关技术进入Windows 操作系统内核,通过对 Windows 操作系统内核相关的数据结构或对象进行篡改,以实现隐藏功能。
由于Rootkit 运行在 Ring  0 级别,甚至进入内核空间,因而可以对内核指令进行修改,而用户级检测却无法发现内核操作被拦
截。
下面介绍两种使用 Rootkit 技术来实现进程隐藏的方法。册表来实现启动,因而易于被检测出来。显然,要增强进程的隐蔽性,关键在于增强加载程序文件的隐藏性。

<1>   SSDT Hook

参考本文最下面的链接

<2> DKOM (Direct Kernel Object Manipulation,直接内核对象操作)

使用DKOM方法进行进程隐藏。在Windows操作系统中,系统会为每一个活动进程创建一个进程对象EPROCESS,为进程中的每一个线程创建一个线程对象 ETHREAD。

在 EPROCESS 进程结构中有个双向链表 LIST_ENTRY,LIST_ENTRY结构中有FLINK 和BLINK 两个成员指针,分别指向当前进程的前驱进程和后继进程。

如果要隐藏当前进程,只需把当前进程的前驱进程的BLINK 修改为当前进程的BLINK,再把当前进程的后继进程的FLINK修改为当前进程的FLINK。

进程隐藏方法    隐蔽性 健壮性 实现难度 加载方式  进程存在方式                              操作系统
注册系统服务    较差   很好   简单     简单      存在于系统服务                           win9x 系列
API HOOK        很好   很好   较难     简单      仍以进程存在                             win NT及以上
注册表注入DLL   一般   很差   简单     简单      以DLL形式存在于所有加载user32.dll的进程中 winNT及以上
Rundll32加载DLL 一般   好     简单     简单      以DLL形式存在于Rundll32.exe进程中        winNT及以上
远程线程注入DLL 较好   很好   较难     较复杂    以DLL形式存在于任一进程中,包括系统进程    winNT及以上
远程线程注入代码很好   较好   很难     很复杂    存在于任一进程的内存空间中,包括系统进程   winNT及以上

时间: 2024-10-20 01:56:12

进程隐藏的各种方法 以及分析比较以及实现链接的相关文章

进程隐藏的方法

最基本的隐藏:不可见窗体+隐藏文件 木马程序无论如何神秘,但归根究底,仍是Win32平台下的一种程序.Windows下常见的程序有两种: 1.Win32应用程序(Win32 Application),比如QQ.Office等都属于此行列. 2.Win32控制台程序(Win32 Console),比如硬盘引导修复程序FixMBR. 其中,Win32应用程序通常会有应用程序界面,比如系统中自带的"计算器"就有提供各种数字按钮的应用程序界面.木马虽然属于Win32应用程序,但其一般不包含窗体

进程隐藏系统调用

一.实验内容 实验3:Linux进程管理及其扩展 1.阅读并分析Linux内核源代码,了解进程控制块.进程队列等数据结构: 2. 实现一个系统调用,使得可以根据指定的参数隐藏进程,使用户无法使用ps或top观察到进程状态.具体要求如下: (1)实现系统调用int hide(pid_t pid, int on),在进程pid有效的前提下,如果on置1,进程被隐藏,用户无法通过ps或top观察到进程状态:如果on置0且此前为隐藏状态,则恢复正常状态. (2)考虑权限问题,只有根用户才能隐藏进程. (

采用[ICONIX] 方法实践分析和设计之六 [时序图](转)

采用[ICONIX] 方法实践BLOG设计之六 [时序图] 在前几篇文章中,我们分别进行了域模型和用例建模,并使用 Robustness工具进一步分析验证了相应用例的处理流程,并在相应模型(域模型)的基础上,通过Robustness方法引入相关的边界对象,控制对象(控制器),并更新了相应域模型中类的属性(字段).下面就可以进入到交互建模阶段了.如下图:    作为交互建模本身,就是要通过寻找对象之间的交互关系,进而进行方法(操作或行为)分配.    正所谓"只有在所有的用例为所有事件进程建立了交

JQuery 支持 hide 和 show 事件的方法与分析

问题提出  JQuery不支持hide和show作为事件形式出现, 实际上这两个仅仅是JQuery对象的一个方法(fn): 有一类UI交互需求,根据一个DOM对象的或者显示对附属的DOM对象做相同操作, 一般情况下, 利用jquery hide和show方法的扩展参数中的回调函数,是可以实现的,例如: $( "#book" ).hide( "slow", function() { $( "#booklet" ).hide() }); 如果附属DO

HOOK - 进程隐藏与进程保护(SSDT Hook 实现)(三)

进程隐藏与进程保护(SSDT Hook 实现)(三) 文章目录:                   1. 引子: 2. 获取当前系统下所有进程: 3. 服务管理(安装,启动,停止,卸载): 4. 应用程序和内核程序通信: 5. 小结: 1. 引子: 关于这个 SSDT Hook 实现进程隐藏和进程保护呢,这是最后一篇博文了, 在文章的结尾处呢你可以下载到整个项目的实例程序以及代码, 程序可以在 XP.Server.Win7 上运行的,当然我是说的 32 位操作系统.        <进程隐藏与

HOOK - 进程隐藏与进程保护(SSDT Hook 实现)(二)

进程隐藏与进程保护(SSDT Hook 实现)(二) 文章目录:                   1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ring0 实现进程保护: 6. 隐藏进程列表和保护进程列表的维护: 7. 小结: 1. 引子 – Demo 实现效果: 上一篇<进程隐藏与进程保护(SSDT Hook 实现)(一)>呢把 SSDT 说得差不多了, 博文地址: http://www

进程隐藏与进程保护(SSDT Hook 实现)(二)

文章目录:                   1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ring0 实现进程保护: 6. 隐藏进程列表和保护进程列表的维护: 7. 小结: 1. 引子 – Demo 实现效果: 上一篇<进程隐藏与进程保护(SSDT Hook 实现)(一)>呢把 SSDT 说得差不多了, 博文地址: http://www.cnblogs.com/BoyXiao/archiv

采用[ICONIX] 方法实践分析和设计之三 [需求复核](转)

需求复核旨在确保用例和域模型同时满足客户的功能性需求.同时确保客户知道开发小组将根据这些需求做何种设计.同时它也是系统分析阶段的一个里程碑(milestone).      这一阶段在ICONIX方法中的位置如下图:      三巨头的首次聚首:客户代表,开发小组代表,经理就已有的工具(用例,原型和域模型)帮助客户理解其需求,并确定系统的功能需求.在这一过程中,ICONIX方法认为可跟踪性(traceability)是非常关键的,它强调清楚每种需求是如何转换为一个或多个用例,以及域模型中的一个或

python开启进程的两种方法

1.开启进程的方法一 from multiprocessing import Process import time def work(name): #定义一个函数 print('task <%s> is runing' %name) time.sleep(1) print('task <%s> is aaaaa' %name) if __name__ == '__main__': p1=Process(target=work,args=('yxwang',)) #产生一个进程对象