预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

作者:TOo2y来源:不详加入时间:2003-2-3阅读次数: 一.Windows下进程的隐藏二.WindowsSocket2SPI技术概述三.基于SPI的DLL木马技术四.主要代码分析五.小结与后记六.附录之源代码 一)Windows下进程的隐藏在M$的32位操作系统中,有许许多多的办法可以实现进程隐藏的功能。在Win98下将程序注册为系统服务就可以实现在进程列表里的隐藏,但是在NT/2000下,由于操作系统添加了许多特性使得进程的隐藏提到了一个新的高度。其中,DLL木马是非常流行的一种形式,它将自己添加到其他可执行文件的进程里,这样在任务管理器里就不会出现我们的DLL文件,而是我们DLL的载体EXE文件。在JeffreyRichter大师的文章里提到了好几种插入DLL的方式,比如说在注册表的AppInit_DLLs里添加木马DLL,特洛伊DLL方式,使用Windows挂钩和远程线程的插入等等,在此我就不做详细介绍了。现在给大家介绍一种隐藏进程的新方法,它仍然是以DLL的形式存在的(同样需要由其他可执行文件来加载),而且还具有无端口的特性。它就是使用了WindowsSocket2的新特性,服务提供者 接口(ServiceProviderInterface),SPI试图支持所有的32位Windows操作系统,当然也包括Windows95。 二)WindowsSocket2SPI技术概述Winsock2SPI是一个新特性,是为书写服务提供者的人员提供的。Winsock2不仅提供了一个供应用程序访问网络服务的Windowssocket应用程序编程接口(API),还包含了由传输服务提供者和名字解析服务提供者实现的Winsock服务提供者接口(SPI)和ws2_32.dll。在此以传输服务提供者为例来实现进程的隐藏。如下是应用程序,Ws2_32.dll和传输服务提供者接口之间的层次关系:----------------------------|Windowssocket2应用程序|----------------------------Windowssocket2API|WS2_32.DLL|----------------------------Windowssocket2传输SPI|传输服务提供者(DLL)|----------------------------传输服务提供者是以DLL的形式存在的,它向外只有一个入口函数,那就是WSPStartup,其中的参数LPWSAPRTOCOL_INFOW结构指针决定了服务提供者的类型,其他的30个传输服务提供者函数是以分配表的方式调用的。当网络应用程序调用WSASocket/socket函数创建套接字时,会有三个参数:地址族,套接字类型和协议,正是这三个参数共同决定了是由哪一个类型的传输服务提供者来实现本应用程序的功能。在整个层次结构中,Ws2_32.dll只是起到了媒介的作用,应用程序则是对用户功能的实现,而真正实现网络传输功能的是传输服务提供者接口。当前系统中有一些默认的服务提供者,它们已经实现了大部分基本的功能,所以我们自己在书写服务提供者程序时,只须对数据报进行“修饰”后,将数据报传送给系统服务提供者来实现剩下的功能。 在服务提供者中有三种协议:分层协议,基础协议和协议链。区分它们的方法是通过结构WSAPROTOCOL_INFOW中的Protocolchain结构的ChainLen值来实现的。分层协议的ChainLen值为0,基础协议的值为1,而协议链的值是大于1。其实分层协议和基础协议在功能实现上没有太大的区别(均可通过调用系统服务提供者实现数据转发),但是在安装上却有很大的不同。安装基础协议时我们把所有的基础服务提供者的DLL文件名和路径都替换为我们自定义的基础协议;而安装分层协议后,我们还必须将和分层协议有关的各个协议组成协议链,然后再安装协议链。在所有的服务提供者都安装完后,我们还必须重新排列它们的安装顺序,这一点很重要。当我们的WSASocket/socket创建套接字时,Ws2_32.dll就会在服务提供者数据库中按顺序搜索和WSAStartup/socket提供的三个参数相匹配的服务提供者,如果同时有两个相同类型的服务提供者存在于服务提供者数据库中,那么顺序在前的那个服务提供者就会被调用。通常,在我们安装完自己的服务提供者后,都会将自己的服务提供者重新排列在最前面。在实例instBD.exe中,我们以分层协议为例,展示如何安装传输服务提供者。 Ws2_32.dll是使用标准的动态链接库来加载服务提供者接口的DLL到系统中去的,并调用WSPStartup来初始化。WSPStartup是WindowsSocket2应用程序调用SPI程序的初始化函数,也就是入口函数。WS