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能够很好地进行免杀,但如果程序进行处理过,在加壳后执行就可能会出错。