版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章RootKit引言Rootkit是一种以管理员身份访问计算机或计算机网络的程序,其目的在于隐藏自己以及其他软件不被发现。运行的权限级别高、隐蔽性强是攻击者特别喜爱的主要原因。攻击者往往利用Rootkit实现启动、文件、进程、通信等多方面的隐藏。本章将介绍Rootkit的概念、技术基础以及应用层和内核层Rootkit关键技术,以及各类Rootkit隐藏技术在恶意代码中的具体应用。RootKit概述RootKit关键技术RootKit的防范与检测1RootKit概述Rootkit出现于1994年,安全咨询报告“OngoingNetworkMonitoringAttacks”中首先使用了Rootkit这个名词。Rootkit利用操作系统的模块化技术,作为系统内核的一部分运行,并且可以使常规系统分析工具失效,无法捕捉到任何蛛丝马迹。1.1RootKit的定义Rootkit是一个由root和kit组成的复合词。Root是用来描述具有计算机最高权限的用户,kit被定义为工具和实现的集合,因此Rootkit是一组能获得计算机系统root或者管理员权限对计算机进行访问的工具。RootKit:一组在恶意软件中获得root访问权限、完全控制目标操作系统和其底层硬件的技术编码。1.2RootKit的特性Rootkit技术设计之初是用计算机系统的特权对计算机进行管理,然而却为攻击者提供了两种最有利的帮助:维持对目标系统的访问权限通过隐身技术掩盖攻击痕迹1.3RootKit的分类根据驻留的操作系统环境:UNIXRootkitLinuxRootkitWindowsRootkitAndroidRootkit根据在系统中运行的位置进行分类:驻留于固件的Bootkit操作系统内核的内核层Rootkit操作系统应用层的应用层RootkitRootKit概述RootKit关键技术RootKit的防范与检测2
Rootkit关键技术技术基础Windows层次结构层次结构为Rootkit提供了修改接口信息的机会。基础知识2
Rootkit关键技术CPU的特权等级基础知识Intel
CPU的特权等级:程序在CPU执行时被分配相应的Ring权;Ring值高的程序不能直接访问Ring值低的程序及内存空间;某些特权指令只能在Ring0级执行;应用层的程序代码如何应访问内核数据?
2
Rootkit关键技术基础知识2
Rootkit关键技术12程序执行序列EnumProcessNtQuerySystemInformationZwQuerySystemInformation进程内核对象Win32APINativeAPISSDT用户态核心态2
Rootkit关键技术利用挂钩技术修改程序的执行路径,从而拦截并修改上下层传递的信息。分为应用层挂钩和内核层挂钩。MEP直接修改内核对象的关键数据结构DKOMIAT
HookInline
HookSSDT
HookIDT
HookIRP
Hook应用层挂钩驱动层挂钩2
Rootkit关键技术(1)MEP技术利用Windows
Hook,修改程序调用过程中传递的消息;参考文献:Hook技术解析(比较全但概要),/developer/article/17685742
Rootkit关键技术
IATHook原理:通过修改导入表中API函数的地址改变程序流程。15IAT
Hook2
Rootkit关键技术16LoadLibraryMain()PE文件中:[924F0]=0x925CA加载到内存后:[924F0]=0xaaaaMyLdLibrary1.获得自已在进程中的地址0xbbbb;2.从[924F0]中找到当前LoadLibrary的地址0xaaaa,保存;3.[924F0]的内容改为0xbbbb;4.卸载时再将[924F0]改回0xaaaa;用IAT挂钩LoadLibary2
Rootkit关键技术17Inline
Hook通过替换导入DLL中API函数的部分代码实现函数劫持。优点:全局Hook比IAT
Hook更隐蔽
示例:微软Detours2
Rootkit关键技术技术TargetFunction:pushebpmovebp,esppushebxpushesipushedi…Main:callTargetFunction…TargetFunction:JmpDetourFunctionpushedi
TrampolineFunction:pushebpmovebp,esppushebxpushesijmpTargetFunction+5…DetourFunction:TrampolineFunction
;addyourrootkitcode……Inline
Hook前Inline
Hook后2
Rootkit关键技术SSDT
Hook通过修改系统服务描述表(SSDT)地址,使控制权重定向到Rootkit代码,再将被修改后的假消息传回至应用程序。192
Rootkit关键技术typedefstructSystemServiceDescriptorTable{UINT*ServiceTableBase;//addressoftheSSDTUINT*ServiceCounterTableBase;//notusedUINTNumberOfService;//numberofsystemcallsUCHAR*ParameterTableBase;//bytearray}SystemServiceDescriptorTable,*PSystemServiceDescriptorTable;202
Rootkit关键技术若函数在SSDT的索引号为x,则:Address=KeServiceDescriptorTable->ServiceTableBase+4*x;21如何获得ZwFuncName在SSDT中的地址?利用该函数在SSDT的索引号!2
Rootkit关键技术22索引号怎么得到?#defineSYSCALL_INDEX(ZwFuncName)(*(PULONG)((PUCHAR)ZwFuncName+1))kd?>unt!ZwSetValueKeyNt!ZwSetValueKey:81a999c8b844010000moveax,144h81a999cd8d542404leaedx,[esp+4]81a999d19c pushfd81a999d26a08 push881a999d4e8a50e0000 callnt!KiSystemService[81a9a87e]2
Rootkit关键技术根据前人逆向得到的UndocumentAPI文档23如何得到ZwFuncName的声明格式?2
Rootkit关键技术24例:SSDTHooking实现进程隐藏EnumProcessNtQuerySystemInformationZwQuerySystemInformation进程内核对象Win32APINativeAPISSDT用户态核心态25通过挂钩ZwQuerySystemInformation函数实现隐藏。NTSYSAPINTSTATUSNTAPIZwQuerySystemInformation(INSYSTEM_INFORMATION_CLASSSystemInformationClass,INOUTPVOIDSystemInformation,INULONGSystemInformationLength,OUTPULONGReturnLengthOPTIONAL);存放信息的数据结构查询信息类型2
Rootkit关键技术2
Rootkit关键技术26若SystemInformationClass的值设置为5,则查询进程信息,此时SystemInformation对应_SYSTEM_PROCESS结构。typedefstruct_SYSTEM_PROCESSES{ULONGNextEntryDelta;ULONGThreadCount;ULONGReserved1[6];LARGE_INTEGERCreateTime;LARGE_INTEGERUserTime;LARGE_INTEGERKernelTime;UNICODE_STRINGProcessName;KPRIORITYBasePriority;ULONGProcessId;ULONGInheritedFromProcessId;ULONGHandleCount;ULONGReserved2[2];VM_COUNTERSVmCounters;IO_COUNTERSIoCounters;//Windows2000onlySYSTEM_THREADSThreads[1];}SYSTEM_PROCESSES,*PSYSTEM_PROCESSES;隐藏方法:在返回的_SYSTEM_PROCES结构链表中遍历,发现需要隐藏的Rootkit进程,则将其从链表中删除。2
Rootkit关键技术文件隐藏27FindFirstFileExwNtQueryDirectoryFileZwQueryDirectoryFileIRP_MJ_DIRECTORY_CONTROLIRP_MJ_DIRECTORY_CONTROLIRP_MJ_READIRP_MJ_READAPINativeAPISSDT过滤驱动过滤驱动磁盘过滤驱动磁盘驱动用户态核心态文件处理核心态磁盘处理2
Rootkit关键技术28文件隐藏:修改SSDT的ZwQueryDirectoryFile思路:1.定义钩子函数HookZwQueryDirectoryFile,其中返回值和参数类型与原始函数相同;2.钩子函数调用原始函数进行文件查询。通过遍历返回的结果链表_FILE_BOTH_DIRCTORY_INFORMATION,检查是否为隐藏的文件名,若是则将其从链表中删除,达到隐藏的效果。2
Rootkit关键技术IRP
HookIRP是驱动程序与驱动程序之间、应用层程序与内核层驱动程序之间通信的一种方式.IRP
Hook在IRP传递过程中进行拦截并处理有关IRP,从而达到修改IRP数据消息的目的。(2)DKOM技术操作系统通过创建相关内核对象来登记和审计系统资源,DKOMRootkit可通过修改这些内核对象来隐藏特定资源。DKOMRootkit可直接访问内核存储器,以相对可靠的方式修改内核关键对象,如隐藏进程、为指定令牌增加权限、隐藏端口等。前提:知道内核对象管理结构302
Rootkit关键技术2
Rootkit关键技术31例:DKOM隐藏进程Windows系统枚举进程使用的是活动进程列表PsActiveProcessList,每个结点对应一个进程的EPROCESS数据结构,所有结点通过EPROCESS结构中的ActiveProcessLinks双向指针链在一起。要隐藏某个进程,只需修改对应EPROCESS的ActiveProcessLinks,将其从链表中摘除即可。2
Rootkit关键技术32摘除前链表结构摘除后链表结构关键:通过PsGetCurrentProcess函数能找到当前运行进程的指针,从而找到它的EPROCESS。RootKit概述RootKit关键技术RootKit的防范与检测3Roo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑方案设计说明案例
- 健身减肥活动方案策划
- 2023年富氧水充氧机项目安全风险评价报告
- 2023年透皮吸收材料项目风险评价报告
- 开门红活动营销方案
- 辽宁省葫芦岛市龙港区市级名校2024届中考数学模拟预测题含解析
- 尿液沉渣分析仪品牌
- 开工报告 施工组织方案
- 2024年注射用骨肽项目申请报告
- 幼儿园数学活动分析与反思
- XX中心学校各项规章制度检查评估报告
- 大型设备分析评价报告.doc
- 年产2亿支2ml水针剂生产车间工艺设计
- SAP B1 系统操作指引
- 《国家电网公司输变电工程施工分包管理办法》
- 员工薪资调整申请表
- 满族旗人姓氏
- 《电影摄影棚建筑设计规范》(征求意见稿)20140522
- 民兵基层建设调研情况报告
- 统编版语文四年级下册全册词语、课文默写卷
- 标前协议书(共3篇)
评论
0/150
提交评论