恶意代码原理、技术与防范 课件 6-RootKit_第1页
恶意代码原理、技术与防范 课件 6-RootKit_第2页
恶意代码原理、技术与防范 课件 6-RootKit_第3页
恶意代码原理、技术与防范 课件 6-RootKit_第4页
恶意代码原理、技术与防范 课件 6-RootKit_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第六章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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论