版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
恶
意
代
码
原
理
与
防
范
MalwarePrinciples&Prevention主讲人:张瑜广东技术师范大学
网络空间安全学院计算机病毒技术及其防御
ComputerVirusTechnology&ItsDefense主讲人:张瑜广东技术师范大学
网络空间安全学院主讲人:张瑜第六章ChapterSix广东技术师范大学网络空间安全学院IncubationofComputerViruses计算机病毒潜伏前言PREFACE计算机病毒在传播至目标系统后,为避免被安全软件查杀及实现其后续目的,通常会采取各类隐匿方法潜伏在目标系统中,伺机发作完成致命一击。为完成潜伏功能,计算机病毒会通过隐匿、加密、变形、加壳等方法改变自身特征,或者劫持API函数调用信息,或者合法利用系统工具,使安全软件难以识别和查杀。计算机病毒潜伏方法很多,本章将从病毒隐匿、病毒混淆、病毒多态及病毒加壳等方面探讨计算机病毒潜伏技术。清溪深不测,隐处唯孤云。——唐·常建1病毒隐匿目录2病毒混淆3病毒多态4病毒加壳1CHAPTER病毒隐匿Rootkit技术无文件病毒Rootkit简介Rootkit属性Rootkit作用Rootkit是一种通过修改操作系统内核或更改指令执行路径,来隐藏系统对象(包括文件、进程、驱动、注册表项、开放端口、网络连接等)以逃避或者规避标准系统机制的程序。攻击者借助于Rootkit隐遁技术对已被渗透的目标网络系统发动的网络攻击,如入无人之境,令人束手无策,安全威胁极大。网络攻击者已开始使用ChatGPT创建恶意软件、暗网站点和其他实施网络攻击的工具。此外,使用ChatGPT编写用于网络攻击的恶意软件代码,将会大大降低攻击者的编程或技术能力门槛。基础知识Rootkit定义WindowsRootkit是能够持久或可靠地、无法检测地存在于计算机上的一组程序和代码。一种将自身或其他对象隐藏起来,以躲过标准诊断、管理和安全软件查看的软件Rootkit是能够长时间存在于计算机上或自动化信息系统上的未被发现的程序和代码集合Rootkit在机器上建立一个远程接口,该接口允许攻击者以一种难以察觉的方式(隐藏)对系统进行操纵(指挥与控制)和收集数据(侦察)。它是一种通过使用隐形技术来隐藏系统对象(包括文件、进程、驱动、服务、注册表项、开放端口、网络连接等)以逃避或者规避标准系统机制的程序。
定义
WindowsRootkit是一种越权执行的程序或代码,常以驱动模块加载至系统内核层或硬件层,拥有与系统内核相同或优先的权限,进而修改系统内核数据结构或改变指令执行流程,以隐匿相关对象、规避系统检测取证,并维持对被入侵系统的超级用户访问权限。Rootkit原理如何化繁为简,将复杂系统简洁化?Rootkit设计理念是什么?
两个问题1、计算机系统的抽象在计算机科学中,抽象是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。它可以忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不考虑其他部分细节,即抽象侧重于相关的细节和忽略不相关的细节。在进行软件设计时,抽象与逐步求精、模块化密切相关,帮助定义软件结构中模块的实体,由抽象到具体地分析和构造出软件的层次结构,提高软件的可理解性。Rootkit原理1、计算机系统的抽象复杂问题局部化,增加系统可读性层次之间的组织结构与依赖关系清晰化,增加系统可靠性层次的增减简单化,增加系统灵活性与可适应性。层次结构1112采用此类结构的软件系统由2大部分组成:①运行于核心态的内核,②运行于用户态并以客户/服务器方式运行的进程层内核提供所有操作系统的基本操作,如线程调度、虚拟存储、消息传递、设备驱动以及内核的原语操作集和中断处理等。客户/服务器结构Rootkit原理1、计算机系统的抽象在软件系统中,所有高级语言都以迭代或递归算法来处理数据,且所有语言均须翻译成更低级的机器语言方能执行或解释。在硬件系统中,所有物理机器均由逻辑门构成的组合或时序电路组成。操作系统通过3个抽象概念来实现这两个功能:①文件、②虚拟存储器,③进程。文件是对IO设备的抽象表示,虚拟存储器是对主存和IO设备的抽象表示,进程是对CPU、主存和IO设备的抽象表示。Rootkit原理2、Rootkit设计理念(1)确保获得控制权在计算机系统中,这种层与层之间的耦合机制就是接口(Interface)。接口从本质上说是信息中转站,完成各层之间的信息交互,起着承前启后、承上启下的信息传递与转换作用。如能突破系统安全机制,通过替换该接口、修改接口信息或者修改接口所使用的数据结构,就能使该接口为我所控、为我所用,以至纵横驰骋、为所欲为。(2)确保隐藏自身作为隐遁攻击技术,Rootkit如能在CPU的环О级别运行,将能获得如下优势:①执行特权指令②访问所有内存地址空间③控制CPU表和系统表④监控其他软件执行。Rootkit原理运行于计算机系统的应用层,处于Windows系统的用户模式,其权限受控。-01--02--03-用户层运行于Windows系统的内核模式,拥有特权可执行CPU的特权指令主要包括固件Rootkit和硬件Rootkit。其中固件Rootkit运行于计算机系统的固件中,先于操作系统启动,其执行不受操作系统约束内核层底层Rootkit原理1、应用层Rootkit技术减少外部导入例程所占用的内存容量。DLL允许程序将通用例程置于共享模块中来共享内存,即DLL代码在物理内存中只有一个运行实例。尽管每个导入DLL例程的应用程序都可获得DLL副本,但却将其所导入的DLL代码分配的线性地址范围映射至相同的物理内存区。DLL的设计初衷IAT钩子InlineFunction钩子DLL注入DLL劫持Rootkit常用的4种技术Rootkit原理IAT(ImportAddressTable,导入地址表),是嵌于Windows应用程序中的调用表,用于存储该程序从外部DLL(DynamicLinkLibrary,动态链接库)导入的例程地址。当应用程序执行时,IAT将被自动填充以便其调用DLL中的相关库例程。IAT表是PE(PortableExecutable,可移植的执行体)文件格式的重要组成部分。所谓IAT钩子,就是用Rootkit设计的例程地址替换目标进程IAT表中的地址,从而实现Rootkit想完成的隐匿功能。为实现IAT钩子,大致需按如下步骤来完成:在内存中定位IAT表→保存表中操作项→以新地址替换该操作项→完成后再恢复该操作项。①IAT钩子Rootkit原理就是将Rootkit实现的DLL加载至目标程序的内存空间,使其能访问目标程序的IAT表,并用Rootkit实现的DLL对目标程序的IAT进行替换,以使目标程序访问Rootkit'实现的例程,从而达到隐匿等相关目的。因此,DLL注入实质上是玩“借刀杀人”计谋来实施Rootkit相关隐匿功能。概括起来,DLL注入方法大致有4种:⑴修改注册表键值,⑵利用SetWindowsHookEx进行注入,⑶利用BHO(BrowserHelperObject,浏览器辅助对象),(4使用CreateRemoteThread进行注入。②
DLL注入Rootkit原理在Windows系统中,当应用程序执行时,Windows加载器将其可执行模块映射至该进程地址空间,同时分析可执行模块的IAT表,查找所需的DLL并将其映射至该进程的地址空间。由于应用程序的IAT表只包含DLL名称而无其具体路径名,因此,Windows加载器将在磁盘上搜索IAT表所包含的DLL文件。搜索DLL文件的顺序为:首先,从当前应用程序所在目录加载DLL;其次,如没找到,则在Windows系统目录查找;最后,在环境变量中所列出的各个目录中查找。③
DLL劫持Rootkit原理DLL劫持就是利用了Windows加载器搜索DLL顺序,通过伪造一个与系统同名的DLL,提供同样的输出表,每个输出函数转向真正的系统DLL。应用程序调用系统DLL时,将首先调用当前目录中伪造的系统DLL,完成相关隐匿功能后,再跳转至真正的系统DLL的函数执行。因此,DLL劫持实质上就是利用Windows系统正常搜索路径的“狸猫换太子”替换操作来完成Rootkit相关功能。Rootkit原理2、内核层Rootkit技术内核层Rootkit是一种运行于操作系统内核,能以CPU的最高权限执行的,以隐遁、操纵、收集数据为主要目的的恶意代码。与用户层Rootkit一样,内核层Rootkit要能顺利执行,同样需要解决两个问题:⑴如何进入系统内核,⑵如何修改内核以隐匿自身。在Windows环境中,内核层Rootkit定义系统表格钩子映像修改过滤驱动程序直接内核对象操纵内核层Rootkit技术内容Rootkit原理①系统表格钩子在内核空间中,系统表格可分为2类:(1)Windows系统的调用表(软件表),譬如:实现系统服务调用的SSDT(SystemServiceDescriptorTable)表,实现IO操作的IRP(IORequestPackets)调度表;(2)IA-32处理器的调用表(硬件表),譬如:进行内存访问所用的GDT(GlobalDescriptorTable)表。此类系统表格中记载着内核函数具体地址的重要信息,能影响系统的指令指令流程和执行结果,因此,一直是内核层Rootkit必争之地。Rootkit原理SSDT:由于SSDT包含着庞大的地址索引表和其它重要信息,诸如地址索引的基地址、服务函数个数等,因此,通过修改此表的函数地址就可对常用WindowsAPI函数进行钩挂,从而实现对相关系统动作的过滤、监控。目前商用的HIPS、防毒软件、系统监控、注册表监控软件无一例外不是通过SSDT钩子方式来实现其监控功能。SSDTHook:由于SSDT中保存着系统函数地址,如Rootkit能钩挂该表中相应表项,就可重定向程序执行逻辑,使相关的系统调用请求被重定向至Rootkit代码,从而实现Rootkit想要完成的操作。这也是SSDTHook的基本原理。Rootkit原理②映像修改映像修改,是指对目标程序文件本身的二进制代码的修改。通过修改目标程序文件的二进制代码,Rootkit可改变程序执行逻辑,从而达到操控执行流程的目的。映像修改常采用2种策略实现:⑴静态磁盘代码修改,⑵运行时代码修改。对于前者,涉及修改磁盘上的静态二进制代码,会留下明显取证踪迹,对于后者,涉及修改目标代码的内存映像,事后取证困难。常见的映像修改方法有2类:(1)Detours,(2)内联函数钩子(InlineFunctionHook)(请参考应用层Rootkit技术)。Rootkit原理针对一个函数,Detours通常使用JMP或CALL指令来覆盖函数序言,跳转至Detours自己的函数。被替换的API函数的前几条指令被保存到Trampoline函数中。Trampoline保存了被替换的目标API的前几条指令和一个无条件转移,转移到目标API余下的指令。当执行到目标API时,直接跳到用户提供的拦截函数中执行,这时拦截函数就可以执行自己的代码了。Rootkit原理③过滤驱动程序借助Windows系统过滤驱动范式,Rootkit同样可拦截IRP请求,进而根据需要修改、过滤相关数值,达到隐匿自身目的。Windows系统支持堆叠式的设备添加机制,通过将自身驱动栈叠加至系统驱动设备栈上,就可实现设备过滤驱动。首先,调用IoGetDeviceObjectPointer获得指向设备栈中第一个设备的指针;其次,使用来自设备栈中下一个低层的驱动程序的设备对象信息,用自定义数据初始化自己的设备对象;之后,调用IoAttachDeviceToDeviceStack,传递一个指向需加入的初始化对象的指针和一个指向希望连接的设备栈的指针。Rootkit原理④直接内核对象操纵DKOM直接修改内存中本次执行流内核和内核对象(内核数据结构),从而完成进程隐藏、驱动隐藏、特权提升等功能。在Windows系统中,每个运行进程都在内存中存储信息,对应一个EPROCESS结构,其中保存着进程的各种信息和相关结构的指针。该结构中的双向链表成员FLINK和BLINK分别指向当前进程描述符的前方和后方进程。Rootkit原理3、底层Rootkit技术从功能实现的角度,计算机系统的上层,其实现抽象、功能复杂、权限受限;反之,计算机系统的低层,其实现具体、功能简单、权限充分。因此,对于侧重于获取执行特权的Rootkit而言,其驻留之地越往低层,则其所展示的权限控制与隐匿技巧就越出神入化、其自身就越难以被察觉。内核层Rootkit概述扩展的处理器模式固件硬件内核层Rootkit技术内容Rootkit原理①扩展的处理器模式对于处理器而言,其所处的具体模式将决定其内存组织、机器指令集以及其可用的系统架构。底层Rootkit如能充分利用处理器模式,将能在内存与指令集利用方面展现其特殊技能,达到扩权与隐匿效果。目前,就IA-32体系结构的处理器而言,主要有3种模式:⑴实模式,⑵保护模式,⑶系统管理模式。对于前两种处理器模式,Rootkit技术已进行了充分利用,上述应用层和内核层所讨论的Rootkit技术就是基于这两种模式。本部分着重讨论基于系统管理模式的Rootkit技术。Rootkit原理②固件对于计算机系统而言,层次越低,其启动顺序就越靠前,反之亦然。如想尽可能靠前启动,则程序就必须尽可能驻留于系统低层。对于Rootkit而言,想摆脱操作系统中安装的各类相关安全软件的检测,就应该驻留低层,使自身先期启动,再通过捕获并修改相关操作,达到隐匿自身、逍遥法外的目的。固件,就是将相关代码固化于可编程存储设备中,再通过相关机制启动其中代码执行,以此来简化系统设计、快速执行的硬件。由于固件通常都有存储代码与数据的存储器,Rootkit只要能修改固件存储器中的数据,就能实现隐匿自身、隐遁攻击的目的。Rootkit原理③硬件计算机主板是计算机系统资源聚集地,除了能提供常规功能之外,还能为新技术提供支撑。Intel公司推出的AMT(ActiveManagementTechnoloy,主动管理技术),通过在主板上提供独立的CPU和内存,借助AMT芯片组与RAM隔离,并通过专用通道与网络硬件相连。因此,如能基于该项技术,绕过AMT芯片组的内存隔离并修改相关代码,则完全不需要与操作系统交互就能达到隐遁攻击目的。譬如,InvisibleThingLab在2009年BlackHat大会上所展示的RootkitoRootkit原理无文件病毒是一种利用已安装在计算机上合法的系统工具或应用程序的恶意攻击,其主要目的是为规避安全软件查杀并维持持久驻留目标系统。它通常利用合法或正当活动的应用程序在内存中执行计算机病毒。与多数计算机病毒不同,无文件病毒不会在目标计算机的硬盘中留下蛛丝马迹,而是通过使用漏洞、宏、脚本或合法的系统工具,直接将病毒代码隐匿于内存或注册表中。由于没有病毒文件落地,传统基于文件扫描的安全软件难以检测到它们的存在。
无文件病毒定义根据无文件病毒所采用的隐匿技术不同灰色工具型潜伏型脚本型内存型无文件病毒分类1灰色工具型代换密码灰色工具型无文件病毒,又称为离地攻击(Living-0ff-the-Land),是利用系统或应用程序提供的合法组件或工具,如:注册表、NTFS数据流、Powershell、CMD、VBScript、JavaScript、RundI132、Explorer、Perl等去隐匿或执行计算机病毒由于这些合法的系统组件或工具是为管理员维护计算机环境以及对系统的管理,安全软件一般不会限制其使用,但这易为计算机病毒所使用我们将以NTFS的ADS数据流和系统合法组件注册表为例来解释说明此类灰色工具型无文件病毒。无文件病毒分类众所周知,NTFS(NewTechnologyFileSystem)是WindowsNT系列操作系统支持的、为网络和磁盘配额、文件加密等管理安全特性设计的磁盘文件格式,它提供长文件名、数据保护和恢复,能通过目录和文件许可实现安全性,并支持跨越分区。NTFS备用数据流(AlternateDataStreams,ADS)是NTFS磁盘文件格式的一个特性。NTFSADS推出的初衷是为兼容苹果公司的分层文件系统(HierarchicalFileSystem,HFS)。HFS文件系统将不同的数据存储于不同的分支文件,文件数据存放在数据分支而文件参数存放在资源分支。在NTFS文件系统下,文件或目录可由两个部分组成:主数据流(PrimaryDataStream,PDS),备用数据流(AlternateDataStreams,ADS)。主数据流(PDS)是指文件或目录的标准内容,通常对用户可见。备用数据流(ADS)则允许将一些元数据嵌入文件或是目录,而不需要修改其原始功能或内容,其内容通常是隐藏的。无文件病毒分类1.NTFSADS数据流文件创建在NTFS分区创建ADS数据流文件有两种形式:一是指定宿主文件;二是创建单独的ADS文件。常用的创建命令有两个:echo和type。echo用于输入常规字符,type则用于将文件附加到目标文件。①使用echo命令创建指定宿主文件的ADS数据流文件Echo命令会将输入的字符串送往标准输出,可使用echo命令创建文本类型的ADS数据流文件。例如,使用echo命令为primary.txt宿主文件创建ADS数据流文件gpnu.txt,在cmd控制台输入内容为:无文件病毒分类在正常情况下,ADS数据流文件是不可见的,但可使用如下命令查看无文件病毒分类可使用Notepad(记事本)查看和编辑文本类型的ADS数据流文件内容,例如,使用命令notepadprimary.txt:gpnu.txt进行查看和编辑也可使用Powershell的Get-Content命令进行查看无文件病毒分类1.NTFSADS数据流文件创建
②使用type命令创建指定宿主文件的ADS数据流文件
type命令用于显示文本文件的内容和拼接文件,可使用type命令为宿主文件附加其他类型的数据流文件。例如,使用type命令为primary.txt宿主文件附加ADS数据流文件cmd.exe,在cmd控制台输入内容为:接着使用命令:dir/r即可查看到上述附加在宿主文件primary.txt上的ADS数据流文件cmd.exe无文件病毒分类利用Vbsrcipt语言的命令msgbox创建一个简单对话框将该vbs脚本文件附加至宿主文件primary.txt上,使用type命令使用wscript.exe即可执行上述附加的vbs脚本文件,执行该ADS数据流文件primary.txt:gpnu.vbs的命令无文件病毒分类1.NTFSADS数据流文件创建
③使用echo命令创建单独的ADS数据流文件
尽管在在NTFS文件系统下,可创建与宿主文件相关联的ADS数据流文件,但ADS数据流文件也可单独存在。创建单独的ADS数据流文件,即该ADS数据流文件不与宿主文件关联,是单独存在的。使用echo命令创建单独的文本类型ADS数据流文件。例如,使用echo命令创建单独的ADS数据流文件test.txt,在cmd控制台输入内容为无文件病毒分类可使用Notepad(记事本)查看和编辑文本类型的ADS数据流文件内容。如只在同一目录下使用命令notepad:test.txt进行查看和编辑,由于单独创建在当前目录下,且无依赖的宿主文件,此类ADS数据流文件依赖于当前目录,在当前目录命令行下是无法查看的,要查看和编辑需要退至上一级目录无文件病毒分类退至上一级目录,使用如下命令:cd再使用命令notepadtests:test.txt进行查看和编辑如需删除该单独创建的ADS数据流文件,使用命令deltests:test.txt可发现无法删除无文件病毒分类可使用WinHex工具进行删除,即“工具→打开磁盘→选择磁盘”,找到相应的ADS数据流文件,即可删除无文件病毒分类1.NTFSADS数据流文件创建④计算机病毒利用ADS数据流文件计算机病毒在利用ADS数据流文件特性方面,有很多方法。例如,可在目标系统上创建文件夹,使用如下命令即可创建该命令会在当前目录中创建一个新的文件夹GPNU,可用于突破UDF提权时遇到无法创建文件夹的问题。无文件病毒分类还可创建一个与计算机病毒DLL文件相关联的的ADS数据流文件,并利用命令regsvr32来执行之。如将该计算机病毒DLL复制到Windows系统中时,Windows安全中心会提示并阻止复制操作无文件病毒分类接着使用命令typetest.dll>primary.txt:ms将该计算机病毒DLL附加至宿主文件primary.txt中,此时,Windows安全中心只能识别单独存在的test.dll文件,而对于附加至宿主文件primary.txt中的名为ms的ADS数据流文件已无法识别。如要执行该计算机病毒DLL文件,使用如下命令无文件病毒分类注册表(Registry)是Windows系统中的一个重要的核心数据库,用于存储系统和应用程序的设置信息,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序的运行。在Windows系统中,可使用Regedit.exe或Regedt32.exe打开注册表。但导入注册条目(.reg)文件是Regedit.exe的功能,Regedt32.exe不支持。Regedt32.exe可打开位于远程计算机上的注册表,这样就可在本地机上对远程计算机上的注册表进行编辑。如将Regedt32.exe设为只读属性,可防止计算机病毒对注册表的有意操作无文件病毒分类2脚本型计算机病毒通常会编译成传统的可执行PE文件格式,这很容易被安全软件实时跟踪与查杀。为规避安全软件查杀和永久驻留目标系统,计算机病毒开始利用恶意脚本的无文件属性进行隐匿与攻击。Windows系统内置支持的脚本解释器主要包括Powershell,VBScript,JavaScript和批处理文件等。计算机病毒可调用并运行,上述脚本的工具分别为:Powershell.exe,Cscript.exe(或Wscript.exe),Mshta.exe和CMD.exe。无文件病毒分类1.WindowsCommandShellWindowsShell是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并把执行结果回显给用户。此外,Shell也时一种强大的编程语言。WindowsCommandShell是一个独立的应用程序,它为用户提供对操作系统直接通信的功能,它为基于字符的应用程序和工具提供了非图形界面的运行环境,它执行命令并在屏幕上回显MS-DOS风格的字符。WindowsCommandShell所在位置的路径为:C:)Windows\System32\cmd.exe(64位系统)或C:\Windows\SysWOW64\cmd.exe(32位系统)。无文件病毒分类通过按下快捷键Win+R”打开运行窗口,输入cmd回车即可打开CMD,在CMD中可输入相关的命令在CMD中既可单独执行命令,也可将多条命令输入记事本中,并保存为后缀为.bat的批处理文件。双击该bat文件,Windows系统会自动执行文件中的多条命令。例如,用记事本将“%0/%0)”保存为LeastVirus.bat文件(最小的计算机病毒)无文件病毒分类双击该批处理文件运行后可发现CPU占用率很快飙升至100%,之后系统处于崩溃状态无文件病毒分类CMD.Exe目前,一些无文件病毒借助CMD.exe来在目标系统上添加或修改内嵌计算机病毒代码的ADS数据流文件,达到隐匿病毒代码目的。同时,还可利用CMD.exe执行隐匿于ADS数据流中的病毒代码以及相关命令。例如,可利用CMD.exe将计算机病毒代码添加至宿主文件fakefile.doc的ADS数据流文件Payload.bat中,达到隐匿计算机病毒目的,命令如下:无文件病毒分类Rund1132.exe顾名思义,Rundll32.exe是“执行32位或者64位DLL文件”的命令,用于执行DLL(DynamicLinkLibrary,动态链接库)文件中的内部函数。Rundl132.exe已安装在WindowsXP及更高版本的Windows中的%systemroot%System32文件夹中。在64位Windows系统上有两个版本的Rundll32.exe文件:无文件病毒分类Regsvr32.exeRegsvr32.exe是Windows系统用于注册或卸载DLL动态链接库和ActiveX控件的重要命令行实用工具。Regsvr32.exe已安装在WindowsXP及更高版本的Windows中的%systemroot%System32文件夹中。在64位Windows系统上有两个版本的Regsv32.exe文件:无文件病毒分类2.PowershellPowershell是Windows系统实现对系统以及应用程序进行管理自动化的命令行脚本环境,已是Windows系统的一个核心组件(且不可移除),它存在于System.Management.Automation.dll动态链接库文件(DLL)中且可附加到不同的运行空间中进行有效的Powershell实例化(PowerShell.exe和Powershell_ISE.exe)。PowerShell需要.NET环境的支持,借助.NETFramework平台强大的类库,Powershell如其名所言,是一种强大的Shell环境,能让一切成为可能。Powershell是一种跨平台的任务自动化解决方案,由命令行shell、脚本语言和配置管理框架组成。Powershell在Windows、Linux和MacOS上运行。无文件病毒分类2.Powershell
①绕过本地执行权限为防止恶意脚本执行,PowerShell可设置执行策略,默认情况下,执行策略被设为受限(Restricted)。此外,还有三类执行策略:Unrestricted(可执行所有PS1脚本文件),RemoteSigned(本地创建的脚本可运行,但从网上下载的脚本不能运行,拥有数字证书签名的除外),AllSigned(仅当脚本由受信任的发布者签名时才能运行)。可使用命令Get-ExecutionPolicy获取当前系统中PowerShell的执行策略无文件病毒分类为绕过本地执行策略的限制,可使用如下命令及参数:powershell.exe-ExecutionPolicyBypass-file.\gpnu.ps1通常在默认情况下,Powershell的安全策略不允许运行命令和文件。通过设置参数-ExecutionPolicyBypass可绕过本地执行安全策略。上述的gpnu.ps1脚本文件内容如图所示无文件病毒分类2.Powershell
②本地隐匿执行攻击者在执行攻击脚本文件时,为避免被用户发觉,通常会隐匿执行攻击脚本,可使用如下命令其中,参数-WindowStyleHidden用于隐藏窗口,-NoLogo用于启动时不显示powershell版权标志,-NonInteractive用于非交互模式(PowerShell不为用户提供交互提示),-NoProfile用于不加载当前用户的配置文件。无文件病毒分类2.Powershell
③远程下载ps1脚本并隐匿执行攻击者有时需要从远程服务器上下载相关脚本文件并执行之,可使用IEX进行远程下载ps1脚本并绕过安全执行策略执行之无文件病毒分类2.Powershell
④利用注册表加载并隐匿执行PS1脚本可将上述从远程服务器下载PS1脚本并隐匿执行的命令写入一个bat批处理文件gpnu.bat,并保存在目标系统的桌面上(C:lusersladminDesktop),其文件内容如下:无文件病毒分类2.Powershell
⑤混淆PS1脚本以隐匿执行可利用一些成熟的PS1脚本混淆工具,对Powershell脚本(计算机病毒)进行混淆,以规避安全软件查杀,从而达到隐匿执行目的。下载混淆工具Invoke-Obfuscation
导入Invoke-0bfuscation模块设置目标脚本文件设置并选择混淆方式输出混淆后的PS1脚本无文件病毒分类
下载混淆工具Invoke-Obfuscation从网上下载混淆工具Invoke-Obfuscation,其下载网址如下导入Invoke-Obfuscation模块利用PowerShell的import-module命令导入Invoke-Obfuscation模块无文件病毒分类设置目标脚本文件利用setscriptpath命令设置目标脚本文件路径设置并选择混淆方式选择“ENCODING”进行加密混淆无文件病毒分类输出混淆后的PS1脚本将通过Invoke-Obfuscation混淆后的PS1脚本输出至另一个文件gpnu1.ps1打开混淆后的gpnu1.ps1脚本文件,可发现与原来的gpnu.ps1脚本文件相比已加密混淆了无文件病毒分类3.WindowsScriptingHost为实现多类脚本文件在Windows命令提示符下直接运行,Windows系统内置入了一个独立于语言的脚本运行环境:WindowsScriptingHost,WSH架构于ActiveX之上,通过充当ActiveX的脚本引擎控制器,为用户提供了可调用系统组件的脚本指令执行环境。在Windows系统中,WindowsScriptingHost提供了两种程序执行环境:图形化界面的Wscript.exe,命令行的Cscript.exe。WSH引擎能执行VBScript、JavaScript等脚本语言,在Windows下双击并执行VBS、JS、WSF等脚本文件,系统就会自动调用WSH的适当程序来解释并执行。无文件病毒分类3.WindowsScriptingHost
①Cscript由上可知,WSH有两种形式:窗口化版本的WScript,命令行版本CScript。这两种版本都可运行任何脚本,只是窗口化版本(WScript)使用弹出对话框来显示文本输出消息,而命令行版本(CSCript)通过命令行方法来显示文本无文件病毒分类3.WindowsScriptingHost
②WscriptCScript是命令行版本WSH,通过输出至控制台,以便程序进行重定向调用。WScript是窗口化版本的WSH(如图6-63所示),通过直接输出至窗口,适合调试程序和编写小工具。在Windows系统下,如不使用cmd命令行,调用Cscript的输出将会一闪而过。无文件病毒分类3潜伏型为了让计算机病毒母体被删除后以及每次开机后还能继续执行恶意代码,持久化潜伏成为一种常见的无文件攻击方式。通过将计算机病毒存储在Windows系统内置的注册表、WMI、Windows库文件、MBR、定时任务等处,可让计算机病毒隐匿并自动执行。本部分主要介绍利用Windows系统内置的WMI(WindowsManagementInstrumentation)和Windows库文件来隐匿计算机病毒以实现无文件病毒。无文件病毒分类WindowsManagementInstrumentation(WMI)简介是Windows中用于提供共同的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。微软设计WMI的初衷是提供一个通过操作系统、网络和企业环境去管理本地或远程计算机的统一接口集。应用程序和脚本语言使用这套接口集而不用通过WindowsAPI去完成任务。由于多数基于Windows的软件依赖于此服务,如果此服务被终止,则基于Windows的软件将无法正常运行,如果此服务被禁用,任何依赖它的服务将无法启动。每个WMI对象都是代表着获取各种操作系统信息与进行相关操作的类实例,以ROOTCIMV2作为默认的命名空间,CIM为数据库,并以WQL查询语句用于查询WMI对象实例、类和命名空间。无文件病毒分类WMI是Windows在PowerShell尚未发布前用来管理Windows系统的重要数据库工具,WMI是一个C/S数据库架构,WMI服务使用DCOM(TCP端口135)或WinRM协议(SOAP-端口5985)。无文件病毒分类1、客户端/使用者(Clients/Consumers)客户端/使用者(Clients/Consumers)。客户端本质上是与WMI类交互以查询数据、运行方法等的终端使用者,可进行的操作包括:查询、枚举数据,运行Provider的方法,接受WMI事件通知。这些数据操作都需有相应的Provider来提供。客户端可使用各类编程语言与WMI服务端进行交互。2、查询语言(QueryLanguages)类似于SQL提供的查询数据库方法,WMI也有WQL(WMI查询语言)/CQL来查询WMI服务。当涉及管理远程计算机时,WBEM标准开始发挥作用。WQL可视为用于WMI的SQL语法,不区分大小写。例如,使用WQL语句select*fromwin32_bios,即可查询到BIOS信息。无文件病毒分类3、存储库(Repositories)用于保存存储类的所有静态数据(定义)的数据库。存储库是由MOF(ManagedObjectFormat,托管对象格式)文件定义的,该文件定义了结构、类、名称空间等。数据库文件可以在%WINDIR%System32\Wbem\Repository目录下找到无文件病毒分类4、MOF文件(MOFFiles)用于定义WMI命名空间、类、提供程序等。可在%WINDIR%\System32\Wbem目录下找到相关的.mof文件。5、提供者(Providers)通过WMI提供者可访问存储库中定义的任何内容。对于WMI生态系统,提供者用于监视来自特定定义对象的事件和数据,可将提供者程序视为在托管对象和WMI之间提供桥梁的驱动程序。它们通常是DLL文件(Cimwin32.dll,Stdprove.dll等),并与MOF文件相关联。6、托管对象(Managed0bjects)它们是上下文中资源的别名,即托管对象可为WMI管理的服务、进程或操作系统等。无文件病毒分类7、命名空间(Namespaces)命名空间是类的逻辑划分,可分为三类:系统(System),核(Core),扩展(Extension)。每类可分为三种:抽象(Abstract),静态(Static),动态(Dynamic)。
无论WMI客户端使用哪种语言(PowerShell、VBScript、JavaScript或C/C++等),本质上仍使用.NET去访问WMI的类库。
使用WMI技术主要分为两个方面:①获取信息,②提供数据。其中“获取信息”需要WMIClasses(WMI类),“提供数据”需要WMIProvider(WMI提供者)。无文件病毒分类WindowsManagementInstrumentation(WMI)功能由于WMI提供了丰富的WMI对象、方法和事件,利用它可执行攻击杀伤链中的多个阶段(系统侦察、反病毒、虚拟机检测、代码执行、横向运动、隐蔽存储数据、持久性)。
由于在使用Wmiexec进行隐匿攻击时,Windows系统不会将WMI操作记录在日志中,具有较好的隐匿性。因此,计算机病毒利用此功能进行隐匿,减少被查杀概率。无文件病毒分类系统侦察计算机病毒在进行攻击时通常会进行系统侦察,用于了解目标系统相关的环境信息,以便后续更好地采取相应措施。在进行系统侦察时,可利用如下的WMI类来收集目标系统信息无文件病毒分类1)获取操作系统信息无文件病毒分类2)获取文件/文件夹列表3)获取磁盘卷列表4)操作注册表无文件病毒分类5)获取当前运行进程6)列举当前服务7)查看系统日志无文件病毒分类8)查看登陆账号9)查看共享文件夹10)查看系统补丁无文件病毒分类安全软件检测Windows系统如安装有相关的安全软件(反病毒引擎之类的软件),
通常会将自身注册在WMI的AntiVirusProductclass类中的root\SecurityCenter或root\SecurityCenter2命名空间中。因此,计算机病毒在实施攻击前,如能检测目标系统中安装的安全软件,则可有的放矢予以卸载继而开展后续攻击行动。无文件病毒分类虚拟机检测计算机病毒如身处虚拟机中,则容易被调试及逆向分析。为避免被逆向分析及查杀,计算机病毒在实施攻击前应进行虚拟机检测。如处于虚拟机中,则应避免进行后续操作。计算机病毒可使用WMI对通用的虚拟机和沙盒环境进行检测。例如,如物理内存小于2GB或是单核CPU,则目标系统极可能在虚拟机中运行无文件病毒分类检测是否为VMWare虚拟机进程的Powershell代码如图所示无文件病毒分类利用WindowsManagementInstrumentation(WMI)隐匿病毒载荷利用WMI类可新建并在其中添加相关属性的特性,计算机病毒可将自身载荷隐匿于WMI相关类中,以便后续隐匿执行。例如,在WMI中新建一个类Win32_EvilClass,并添加属性EvilProperty,其内容为一字符串“Thisisthepayloadofcomputervirus.”无文件病毒分类Windows库文件Windows库文件通常位于%APPDATA%MicrosoftWindows\Libraries目录中,文件扩展名为library-ms。库文件包含存储在本地计算机或远程存储位置上的文件和文件夹,允许用户在一个视图中同时查看多个目录的内容。库文件本质是一个xml配置文件,可支持指向Junction文件夹,在xml文件中指定foldertype和knownfolder字段就可构造恶意的”库”快捷方式。
%appdata%表示Windows的应用程序数据存储路径:C:Users\用户名lAppDatalRoaming无文件病毒分类4内存型内存型无文件病毒通常利用系统工具、系统及应用程序漏洞去获取隐匿在远程系统上的病毒代码,并将下载的病毒载荷直接加载至内存中执行,全程无磁盘文件落地,能极好地规避安全软件查杀内存型无文件病毒主要包括两类:漏洞利用型,系统工具利用型,本部分主要探讨系统工具利用型无文件病毒,侧重于利用Windows系统内置的工具与命令,将隐匿于远程系统上的病毒代码直接下载至内存执行。无文件病毒分类mstha.exe
MSHTA(MicrosoftHTMLApplicationHost)是MicrosoftWindows操作系统的一部分,必须使用它才能执行HTA文件。而WindowsShell中存在远程代码执行漏洞,起因就是系统不能正确识别文件的关联程序。
由于MSHTA是Windows系统内置工具,用于执行HTA(HTMLApplication)程序:不仅能直接指向远端的HTA程序,还能执行包含VBScript、JScript等代码的HTA程序,且在浏览器外部运行,因此可绕过白名单限制与浏览器安全设置。无文件病毒分类Bitsadmin
BITS(BackgroundIntelligentTransferService,后台智能传输服务),是自Windows7后已默认内置于系统中,用于系统软件的自动更新。Bitsadmin是一个命令行工具,用于创建、下载或者上传作业并监视作业进度,且支持代理,断点续传等功能。
其中,name参数用于指定作业的名称;type参数是可选的,用于指定作业类型,为下载作业指定/download或为上载作业指定/upload;priority参数是可选的,用于指定作业的优先级,可将job_priority操作数设置为foreground、high、normal或low等四个选项。无文件病毒分类其他命令除了上述命令之外,还有其他一些常见命令也可用于内存型无文件病毒隐匿下载与执行。例如,可使用CMD命令进行远程下载病毒载荷无文件病毒分类上述命令将从远程服务器webserver\folder目录中下载payload.exe文件至本地内存隐匿并执行。还可使用Cscript命令从远程下载病毒载荷无文件病毒分类病毒混淆混淆原理混淆实现2CHAPTER1指令,是计算机系统中用来指定进行某种运算或要求实现某种控制的代码。2所谓花指令,是一些在程序中的无用代码或垃圾代码,有之程序能照常运行,无之也不影响程序运行3代码混淆(Obfuscatedcode)亦称花指令,是将计算机程序的代码,转换成一种功能上等价而又难于阅读和理解的形式的行为4即代码混淆是故意模糊源代码的行为,使人类难以理解。就其本质而言,混淆完全改变了源代码,但其仍在功能上等价于原始代码。混淆原理重命名混淆通过修改代码中相关变量和方法名称,使人难以阅读与理解代码。然而,混淆后的代码仍保持程序执行能力,即不用去混淆就能执行该代码。字符串加密字符串加密。与重命名混淆不同,字符串加密是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化产业示范园区及示范基地创建管理工作办法
- 学校卫生防疫巡查工作制度
- 人造软骨产业深度调研及未来发展现状趋势
- 双体船用帆市场需求与消费特点分析
- 浙江省温州2024-2025学年高三上学期一模政治试题(含答案)
- 办公室用信封封口机市场发展预测和趋势分析
- 内燃机排气系统用颗粒物空气过滤器市场发展预测和趋势分析
- 发育生物学(含实验)学习通超星期末考试答案章节答案2024年
- 宠物服装产业深度调研及未来发展现状趋势
- 奶油机产业运行及前景预测报告
- 五上《美丽文字民族瑰宝》
- 大一微积分练习题
- 浅谈落实新课程理念下小学语文作业设计与实践
- 七人学生小品《如此课堂》剧本台词手稿
- 沂蒙红色文化与沂蒙精神智慧树知到答案章节测试2023年临沂大学
- 初中数学 二倍角问题专项教案
- 市政工程项目部管理制度及岗位职责
- 高效能人士的执行4原则
- 《特殊儿童早期干预》教学大纲
- 医疗机构消毒技术规范(2023年版)
- 幼儿园:智慧阅读读懂孩子-读《聚焦式观察》第二章有感
评论
0/150
提交评论