windowsnt-2000系统下进程的隐藏(1)

windowsnt-2000系统下进程的隐藏(1)

ID:33891027

大小:58.12 KB

页数:10页

时间:2019-03-01

windowsnt-2000系统下进程的隐藏(1)_第1页
windowsnt-2000系统下进程的隐藏(1)_第2页
windowsnt-2000系统下进程的隐藏(1)_第3页
windowsnt-2000系统下进程的隐藏(1)_第4页
windowsnt-2000系统下进程的隐藏(1)_第5页
资源描述:

《windowsnt-2000系统下进程的隐藏(1)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、WindowsNT/2000系统下进程的隐藏(1)摘要进程的隐藏一直是木马程序设计者不断探求的重要技术,本文采用远程线程技术,通过动态链接库方法,较好地解决了这一问题,通过远程线程将木马作为线程隐藏在其他进程中,从而达到隐藏的目的。关键字进程线程木马动态链接库木马程序(也称后门程序)是能被控制的运行在远程主机上的程序,由于木马程序是运行在远程主机上,所以进程的隐藏无疑是大家关心的焦点。本文分析了WindowsNT/2000系统下进程隐藏的基本技术和方法,并着重讨论运用线程嫁接技术如何实现WindowsNT/200

2、0系统中进程的隐藏。1基本原理在WIN95/98中,只需要将进程注册为系统服务就能够从进程查看器中隐形,可是这一切在WindowsNT/2000中却完全不同,无论木马从端口、启动文件上如何巧妙地隐藏自己,始终都不能躲过WindowsNT/2000的任务管理器,WindowsNT/2000的任务管理器均能轻松显示出木马进程,难道在WindowsNT/2000下木马真的再也无法隐藏自己的进程了?我们知道,在WINDOWS系统下,可执行文件主要是Exe和Com文件,这两种文件在运行时都有一个共同点,会生成一个独立的进程

3、,寻找特定进程是我们发现木马的方法之一,随着入侵检测软件的不断发展,关联进程和SOCKET已经成为流行的技术,假设一个木马在运行时被检测软件同时查出端口和进程,我们基本上认为这个木马的隐藏已经完全失败。在WindowsNT/2000下正常情况用户进程对于系统管理员来说都是可见的,要想做到木马的进程隐藏,有两个办法,第一是让系统管理员看不见你的进程;第二是不使用进程。本文以第二种方法为例加以讨论,其基本原理是将自已的木马以线程方式嫁接于远程进程之中,远程进程则是合法的用户程序,这样用户管理者看到的只是合法进程,而无

4、法发现木马线程的存在,从而达到隐藏的目的。实现方法为了弄清实现方法,我们必须首先了解Windows系统的另一种”可执行文件”-…DLL,DLL是DynamicLinkLibrary的缩写,DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。因为DLL文件不能独立运行,所以在进程列表中并不会出现DLL,假设我们编写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会

5、出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员,也就达到了隐藏的目的。运行DLL方法有多种,但其中最隐蔽的方法是采用动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。理论上来说,在Windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的,但是实际上,我们仍然可以利用种种方法进入并操作进程的私有内存。动态嵌入技术有多种如:窗口Hook、挂接API、远程线程等,这里介绍一下远程线程技术,

6、它只要有基本的进线程和动态链接库的知识就可以很轻松地完成动态嵌入。远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程共享地址空间以及其他的资源。但是很少有人知道,通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。实施步骤1)

7、用Process32Next函数找到宿主进程,获取宿主进程ID,并用OpenProcess函数打开宿主进程。2)用VirtualAllocEx函数分配远程进程地址空间中的内存。3)用WriteProcessMemory函数将待隐藏的DLL的路径名。4)拷贝到步骤二已经分配的内存中。5)用GetProcAddress函数获取LoadlibraryA函数的实地址。6)用CreateRemoteThread函数在远程进程中创建一个线程。7)它调用正确的LoadlibraryA函数。8)为它传递步骤二中分配的内存地址。具

8、体实例下面是在C++环境下编写的运用远程线程技术隐藏木马的程序代码:#include#include#includeinclude//该头文件包涵了进程操作的APT函数#pragmahdrstop#include#pragmapackage(smart_init)#pragmaresource"*・dfirTInsistingpszLibFileName;//存放待隐藏的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。