网络攻防实战研究:漏洞利用与提权
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 对提权工具PR的免杀

对工具软件的免杀有两种方式,一种是手工免杀,另外一种是通过工具软件直接加壳。在本节中将介绍如何使用编译和反编译工具对PR程序进行免杀,并使用加壳软件直接加壳。

1.6.1 什么是PR

PR是指提权Windows跟踪注册表项的ACL权限提升漏洞。Windows管理规范(WMI)提供程序在没有正确地隔离NetworkService和LocalService账号的情况下运行的进程,同一账号下运行的两个独立进程可以完全访问对方的文件句柄、注册表项等资源。WMI提供程序的主机进程在某些情况下会持有SYSTEM令牌,如果攻击者可以以NetworkService或LocalService账号访问计算机,就可以执行代码,探索SYSTEM令牌的WMI提供程序的主机进程。一旦攻击者找到了SYSTEM令牌,就可以获得SYSTEM权限的提升。

1.6.2 如何对提权工具进行免杀

1.获取文件信息

首先我们来看PR.EXE这个样本文件的基本信息。如图1-50所示,使用PEiD对PR程序进行检测,可以看到,它是用C++6.0编写的(没有混淆过),入口点的地址为0000476F。

图1-50 查看PR程序基本信息

单击“EP区段”后的“>”按钮,如图1-51所示,查看PR程序一共有几个区段。

图1-51 查看EP区段

因为文件体积比较小,所以区段也都不大,方便我们对该提权工具进行特征码定位免杀(当然,如果有源代码,免杀更容易实现)。

2.更改PR文件的MD5值

(1)定位并修改字符串

用C32ASM将PR文件以HEX(十六进制)方式打开,定位字符串“.DLL”,将其填充为“00”。

(2)修改PR文件,增加数字签名

预处理完成后,对引擎逐一进行测试(同时开启多个引擎会干扰免杀的针对性)。

3.绕过杀毒引擎

QVM人工智能引擎用于扫描检测用户计算机中的恶意程序。360杀毒集成了BitDefender杀毒引擎和360云查杀引擎。前者属于常规的杀毒引擎,能够查杀已知病毒、修复感染型病毒破坏的用户文件;后者必须在连网状态下使用,能够快速响应最新的木马病毒。QVM人工智能引擎的意义在于,它不仅能够辅助这两款引擎进行扫描,提高查杀率,还能在断网状态下发挥作用,代替云查杀引擎检测出最新的恶意程序。具体设置可以在360杀毒的“多引擎设置”界面进行,如图1-52所示。

图1-52 设置杀毒引擎

4.绕过QVMII引擎

将“.DLL”填充为“00”后,如图1-53所示,利用数字签名添加工具以360杀毒为签名样本进行伪造签名操作。

图1-53 QVMII引擎免杀

先选择一个带有数字签名的可执行文件,然后选择需要免杀的PR程序,如图1-54所示,对该PE文件添加数字签名操作后,QVMII引擎已经初步免杀。然后,使用360杀毒进行查杀,如图1-55所示,没有病毒告警,QVMII引擎顺利绕过。

图1-54 伪造签名

图1-55 杀毒日志

5.对BitDefender杀毒引擎的免杀处理

BitDefender引擎的查杀主要由特征码数据库来完成,所以针对该引擎的免杀需要定位特征码。定位特征码的工具是MyCCL 3.0,通过找到的特征码,利用C32ASM修改特征码定位的函数。

使用BitDefender引擎进行查杀,如图1-56所示,提示为病毒。

图1-56 BitDefender引擎报警

使用定位工具,选择要做免杀的123.exe文件,然后选中“复合定位”单选按钮,其他选项保持默认值,如图1-57所示,定位其特征码。

图1-57 定位特征码

该PE文件的特征码为000022E9_00000002,用C32ASM定位该特征码地址即可找到该函数。如图1-58所示,修改此处数据,因为此处的字符串不是字母,所以不能通过改变大小写来达到免杀的目的。这里的汇编代码是“CALL00402A80”,我们可以使用OllyDbg来修改此处的代码,使用JMP指令将此处代码跳转到空白区域,从而在保证程序正常运行的情况下达到免杀的目的。

图1-58 通过C32ASM软件定位特征码地址

修改后,再次使用360杀毒进行查杀,如图1-59所示,顺利通过查杀。

图1-59 通过BitDefender杀毒引擎

6.绕过小红伞引擎

由于小红伞引擎是高启发性的引擎,所以绕过难度比较大。可能是因为之前的操作,笔者的样本用小红伞进行查杀时已经达到了免杀的效果,笔者推测可能是在预处理时将已经定位的特征码过滤了。如图1-60所示,将引擎全部打开,然后扫描,顺利通过。

图1-60 通过5个杀毒引擎

7.程序实际运行测试

测试该PE文件是否能够成功运行。如图1-61所示,PR程序成功运行,未报错。

图1-61 实际环境测试

1.6.3 加壳软件VMProtect Ultimate

VMProtect是新一代的软件保护系统。将保护后的代码放到虚拟机中运行,会使分析反编译的代码和破解变得极为困难。使用MAP文件或内建的反编译引擎,可以快速选择需要保护的代码。与其他大部分保护程序不同,VMProtect可以修改程序的源代码。

VMProtect可将被保护文件中的部分代码转换到在虚拟机(以下称作VM)上运行的程序(以下称作bytecode)中。同样,可把VM当成具备命令系统的虚拟处理器,该命令系统与Intel 8086处理器所使用的完全不同。例如,VM没有负责比较两个操作数的命令,也没有有条件与无条件的转移等。因此,黑客必须开发一款特定的工具来分析与反编译bytecode,而且相当耗时。可是,我们也知道,没有无法破解的保护程序,这也是我们将保护级别提高到破解费用与购买费用相当(破解费用甚至超过购买费用)的程度的原因。不管怎么样,请记住:VMProtect是唯一能“隐藏”主要软件保护机制的工具。

(1)加载免杀程序

VMProtect Ultimate安装完成后,可以直接运行VMProtect程序。如图1-62所示,将需要实现免杀的程序直接拖入程序主界面。

图1-62 加载免杀程序

(2)编译程序

单击工具栏上的三角形图标,执行编译。程序会自动进行编译,编译成功后会弹出是否运行程序的提示。如图1-63所示,可以根据实际情况决定是否直接运行。程序会自动在被免杀程序所在目录生成增加了“vmp.”的文件名称,例如免杀wce142_x32.exe会生成wce142_x32.vmp.exe文件。

图1-63 编译程序

(3)测试程序可否正常运行

在DOS窗口直接运行wce142_x32.vmp.exe,如图1-64所示,运行成功。

图1-64 测试程序可否正常运行

VMProtect免杀相对简单,但进行免杀的程序要尽量使用原程序,即未做处理的程序。对开发者编译后的程序,VMProtect能够很好地进行免杀,但如果程序进行处理过,在加壳后执行就可能会出错。