解决方案

木马核心技术剖析读书笔记之木马免杀

seo靠我 2023-09-23 11:50:11

免杀原理

基于特征码的检测

基于病毒特征码的检测方法,是目前反病毒软件最常用的检测技术。经过长时间的收集与积累,反病毒软件建立了庞大的已知病毒的特征数据库。在对可疑软件进行检测时,会从特征数据库中匹配已有SEO靠我特征。这种方法相对比较准确、快速,而且可以很容易地通过快速分析,结合新的模板,添加新的病毒文件特征。

特征码可以是一个简单的字符串或者代码字节序列,也可以是包含了已知恶意文件各项特点的模板字符串特征是通SEO靠我过在恶意软件的数据区段中提取到的具代表性的字符串。字符串特征匹配通常包含了通配符,可灵活地检测恶意文件中字符串,以及对字符串做的一些简单处理,如在字符串的尾部或者中间加入其他字符,而在执行的时候转换为SEO靠我实际需要的字符串代码字符特征是通过反汇编恶意软件的二进制代码,提取恶意软件核心实现的字节序列。如恶意软件常使用的加密代码或者加壳工具的特征等基于模板的特征检测,是基于反病毒引擎中实现的模板进行检测。在SEO靠我扫描过程中,动态填充该模板。扫描完成后,反病毒软件根据模板里的内容,综合评定被扫描程序是否是恶意软件。一般模板中包含的待扫描文件的属性有:可执行依赖的库文件,如网络通信、敏感的系统库等;可执行文件是否SEO靠我被加壳或者压缩;可执行文件的PE格式里,是否有无效或者异常的字段,如处于.text段外的入口点地址等

基于特征码的检测优点是可以达到100%的检测正确率,没有误报,但缺点是检测依赖于特征库,无法检测出未SEO靠我知的恶意程序

启发式检测

启发式检测主要是为了弥补特征码检测的不足,可以在反病毒厂商未发现某个恶意软件和发布恶意软件特征码之前,阻止未知恶意软件对用户的侵害,防止造成不必要的损失

启发式检测可分为静态与动态SEO靠我两种方式:

静态启发式查杀方式是指在程序中查找已知病毒常用的一些实现方法、代码模式等,来判断该程序是否为未知恶意软件。主要从两个方面进行分析:

通过反汇编或者反编译被扫描程序,结合程序的API调用序列、在SEO靠我已知恶意软件大量使用的字符串,如系统关键进程名称。Explorer.exe、系统目录名称、PE文件中是否有可疑的段等进行判断扫描是否存在被修改的核心系统组件,如SSDT、IDT等动态启发式查杀方式是指SEO靠我对程序执行过程中的行为进行综合判别,来识别被扫描程序是否是恶意软件。通常,反病毒软件采用一些模拟的环境,如沙盒、虚拟机等,将程序模拟运行一段时间,并记录该程序的各种行为。待运行结束后,通过该程序的一系SEO靠我列行为,如内存写入、创建进程和网络连接等,来确定应用程序的行为是否可疑。动态启发式查杀能检测未知的病毒,但比较消耗计算资源,需要在安全性和可用性上有一定的平衡。在实际应用中,启发式检测方式通常与特征码SEO靠我检测相结合,以应对不同类型恶意代码的检测需求

白名单方法

通常,反病毒软件收集一些已知开发者签名的应用软件、系统组件等,对其相应文件使用MD5、SHA-2等哈希算法进行计算,并对计算结果进行保存

云查杀技术SEO靠我

云查杀技术是在云计算的基础上发展起来的,其实质是将病毒库由客户端移至服务器,基至是将某些检测过程也移植到服务器上。云查杀的原理是将在客户端提取特征上传到云端,或者将被扫描文件上传至云端,在云端通过大量SEO靠我服务器对被扫描软件进行检测,并将结果返回给客户端。在云端的检测过程中,仍然综合地使用了一些在本地检测中使用的技术,云查杀的优势是,病毒库处于云端,弥补了由于反病毒软件没有及时更新特征库、查杀策略,导致SEO靠我不能查杀最新病毒的缺陷。同时,突破了单机检测时的计算资源限制

针对静态查杀的免杀

特征字符串变形

在木马的实现过程中,经常要用到文件系统路径、文件名称、事件名称、注册表项等敏感项,如果直接使用字符串常量表示SEO靠我这些事项,会导致这些敏感字符串出现在可执行文件的数据段中。因此,必须对敏感字符串进行变形。变形的主要思想是将程序里面的字符串常量转换为指令的操作码,使程序不再具有可显示字符串

通常,木马程序会操作一些系SEO靠我统路径下的文件或文件夹,这不可避免地需要使用系统文件夹和文件路径的名称作为字符串常量。针对此类查杀,开发过程中可以手工构造字符串,不再使用字符串常量,而是将字符串常量拆分成一个一个的字节存在一个字符数SEO靠我组中

木马组件加密和存储

Dropper 是个比较特殊的可执行程序,它一般执行完释放和植入任务后就会将自身删除掉,不会在目标系统留下痕迹。但木马不可能在其外部再另外附带各种配置信息和需要释放的木马常驻组件SEO靠我,这些内容往往需要被附加到 Dropper 对应的可执行文件中

根据这类信息附加到Dropper中的位置,可以分为以下方式

在可Dropper文件的尾部添加需要包含的内容,这种方式不修改PE结构,在PE文SEO靠我件后面添加的内容,常常被称为附加数据

写入过程:利用木马生成器对编译后的 Dropper 可执行文件进行修改,在其尾部写入需要保存的数据加密后的结果,写入的数据通常需要结构化存储,方便读取读取过程:在 SEO靠我Dropper 运行的时候,解析 Dropper 对应的可执行文件的格式,根据PE格式获取PE文件本身的大小,PE文件本身内容后边的部分就是附加数据,附加数据的大小可以使用 Dropper 的实际大小SEO靠我与 Dropper 的 PE 文件本身大小的差值确定

利用可执行文件的结构,添加需要包含的内容,如使用PE文件资源保存要添加的内容、使用PE文件数据段保存要添加的内容等方式

基于泛型的 API 动态调用

SEO靠我常,木马隐藏导入表需要使用动态调用的方式使用系统API函数,即先使用 LoadLibray 了函数得到 API 所在模块的句柄,再使用 GetprocAddress 函数得到要调用 API 函数的地址SEO靠我,在程序中直接使用这个函数地址来替代该 API 函数的静态调用。更进一步的做法是,木马程序会自行实现 LoadLibrary 和 GetprocAddress 两个函数。这样处理能很好地隐藏导入表,但SEO靠我造成了一定的代码混乱,每次动态获取该函数的时候,都需要确保该函数所在的模块句柄是否有效,这在一些较为复杂的逻辑中,会经常因模块句柄未获取或者模块未加载而导致函数地址获取失败,而多次对 DLL 模块的加SEO靠我载,则会导致 DLL 的引用计数增加,使 DLL 不能完整释放,浪费系统资源

泛型(Generic)是现代高级程序设计语言的一种重要特性,是指编写的代码可以在不同的数据类型上重用,允许程序开发人员在静态SEO靠我类型的程序设计语言中,编写代码时预先定义数据类型可变,而在具体调用时,可以手工或者通过编译器确定具体对应的数据类型。代码中函数或者变量类型参数化是提高代码复用性和提高软件开发工作效率的一种重要方法

SEO靠我C++ 语言中称泛型为模板(template),模板由函数模板和类模板两部分组成,使用可变类型作为参数的函数叫做函数模板,而具有可变类型数据成员的类叫做类模板

GetProcAddressEx 的实现思SEO靠我路时间:获取并使用全局变量记录主要模块的地址,如 kernel32.dll、Shell32.dll 的模块地址,然后从 PE 格式得到 DLL 的导入表,使用 API 名称的哈希值从导入表中找到具体的SEO靠我 API 地址

针对动态查杀的免杀

时间延迟

反病毒软件的查杀是非常费时的一个过程,如果查杀对系统产生大的影响,会影响用户的体验。因此,査杀不可能在单个文件的处理上无限制地消耗检测时间。针对这二个特点,最简SEO靠我单的动态免杀方式是消耗虚拟执行的时间。在木马核心代码被执行之前,使得反病毒软件的模拟环境花费大量的时间执行无用的代码,从而使得反病毒软件没有时间再检测后续的敏感代码

时间延迟的方式有很多。在反病毒虚拟机SEO靠我发展的初期,简单地使用 sleep 函数就可绕过动态查杀。目前大多数反病毒软件已经对该函数做了特殊处理,遇到此类情况会立即跳过

资源耗尽

反病毒软件动态査杀时,它的模拟器或者沙盒资源是有限的,不可能虚拟全SEO靠我部的真实环境。针对这个局限性,木马在核心功能之前,请求使用大量系统资源(如内存等),就有可能迫使反病毒软件模拟器或沙盒无法虚拟执行核心的木马功能,从而绕过动态查杀。同时,这种资源的需求需要有一定的尺度SEO靠我,不能影响木马在实际环境中执行

需要注意的是,穿透模拟器或沙盒的代码中不能使用敏感的 API,以防止反病毒软件对绕过动态查杀的代码进行查杀

上下文差异

一般情况下,反病毒软件的虚拟环境不会给予被模拟执行的程SEO靠我序访问网络的权限。例如,当在反病毒软件的虚拟环境中运行的代码需要访问 Web 页面时,虚拟环境仅仅会提供一个自己产生的页面,如果被扫描程序访问一个不存在的域名,在真实环境下,该访问会失败;但在反病毒软SEO靠我件的模拟环境中,该访司依然有效,这是因为反病毒软件提供了自己产生的页面

多次启动

反病毒软件在动态查杀时,会模拟执行被检查的程序。在模拟执行过程中,木马程序进程由反病毒软件创建,其父进程是反病毒软件的组件SEO靠我,故通过分析木马的父进程可以检测是否运行在模拟环境中。具体的,判断父进程是否是一些常见程序,如 explorer.exe、cmd.exe 等,或是预定的特定程序等;如果是,表示运行环境正常,可以启动真SEO靠我正的木马程序;否则,则当前进程可能运行在虚拟环境,木马代码不执行并退出,从而绕过反病毒软件的査杀

随着反病毒软件对这一漏洞的修复,无法仅依靠父进程来判断木马是否运行在反病毒软件的虚拟环境中。但该方法可以SEO靠我略作改变,以绕过反病毒软件查杀。通常,反病毒软件只会将被查杀程序运行一次,若程序多次嵌套运行,反病毒软件的虚拟环境会因为资源受限等原因,放弃整个分析过程。此时,再执行真正的木马代码,则能顺利突破反病毒SEO靠我软件的动态査杀

虚拟环境中的 Windows API 差异

调用 AllocateUserPhysicalPagesNuma() 函数进行环境判断。该函数在反病毒软件的虚拟环境中执行时,返回为 FALSESEO靠我 ,而在真实系统环境中返回值为 TRUE

已知特定目标机器信息

木马植入后通常会掌握了目标机器上的某些信息,如目标机器的用户名、安装的软件等,基于这些信息进行一些特定的操作,可以更容易地绕过反病毒软件的查SEO靠我杀。例如,如果已知上的用户名,则可以在该用户目录下创建并写入一个文件。这一操作在真是系统环境中能够正常执行,但是在反病毒软件的虚拟环境中,则会执行失败

其他免杀

代码注入

代码注入是指将特定的代码段加载到目SEO靠我标进程中去执行。通常,木马程序将一个标准的 DLL 文件注入目标进程中,也可以是将一段代码和数据写入到目标进程中,需要注意的是这段注入的代码需要是地址无关代码(position-independentSEO靠我 code),即该段代码在任意内存可以执行,不受绝对地址的影响,也可以是根据写入的目标进程内存重定位的代码

代码注入要解决两个问题:

- 如何将代码和数据写入到目标进程的内存中

- 如何使得写入目标进程的代SEO靠我码被执行

Win32/Gapz 木马利用共享内存注入目标进程,修改目标进程(Explorer.exe)所创建窗口的处理过程;向目标窗口发送消息,使得被修改后的窗口处理过程得以执行,进而使得木马的代码能够SEO靠我顺利在目标进程中执行。该方法很好地完成了向系统关键进程Explorer.exe的代码注入,还能绕过反病毒软件的检测

傀儡进程

傀儡进程的方法是指创建一个处于系统白名单或反病毒软件白名单中的进程,使用木马的SEO靠我可执行文件(EXE)的内存镜像替换进程原始主模块的内存镜像,并代替进程原始主模块执行。由于在替换之前,系统已经完成了对进程信息的初始化,而且替换过程只是替换镜像内容,没有修改和影响保存该进程信息的相关SEO靠我数据结构,因此反病毒软件得到的信息是一个正常系统中正常的信息

傀儡进程的方法可以隐藏木马进程,使任务管理器、进程查看工具和反病毒软件看到的是一个正常的系统进程。同时,也能够欺骗反病毒软件,绕过反病毒软件SEO靠我的拦截和监控

傀儡进程的主要思路是以阻塞的方式启动一个系统进程,如 svchost.exe、services.exe 等。然后将父进程主模块的代码替换成木马代码,对替换进去的代码根据目标进程主模块基址进SEO靠我行重定位,再恢复被阻塞进程,使得替换后的木马代码得以执行,具体执行过程如下:

使用 CreateprocessA 创建一个阻塞状态(suspendedstate)的系统进程,通过 CreateProceSEO靠我ssA 得到有关进程信息的结构体 PROCESS_INFORMATION,该结构体提供的信息可以使得对该进程进行修改很容易通过 NtQueryProcessInformation 获取该进程的 PEBSEO靠我 地址,使用 ReadProcessMemory 读取该进程的 PEB 数据,进而通过镜像基址(Image Base)读取文件的 PE 头信息。也可以读取该进程对应的可执行文件,通过分析可执行文件格式SEO靠我,获取 PE 头信息使用 WriteProcessMemory 将要执行的代码写入到进程主程序的镜像基址开始的内存中,写入的代码要根据目标进程的主程序镜像基址进行重定位恢复目标进程主线程的执行,这样写SEO靠我入到目标进程的代码就会执行起来

DLL 劫持

Windows 应用程序启动时,一般需要加载多个DLL。Windows 镜像加载器可以通过 DLL 的完整路径或者使用 manifest 文件来加载指定 DLSEO靠我L。如果指明了 DLL 路径,Windows 镜像加载器会根据一定的顺序从不同目录搜索加载 DLL 文件

DLL 劫持的方法,是针对 Windows 镜像加载器加载 DLL 时的搜索顺序有先后,将 DLSEO靠我L 置于应用程序相同的目录或系统加载器搜索路径上优先的目录中,使得木马 DLL 替代正常 DLL 被加载,从而达到运行木马的方法。该方法不需要额外进程操作,如打开进程、向远程进程写入数据等,只需要将木SEO靠我马 DLL 写入到特定位置(一般是 EXE 文件的目录),等待应用程序启动时加载自己

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2