近日,火绒安全实验室截获到一种内核级后门病毒,并将其命名为 “Pengex” 病毒。经分析,”Pengex” 以劫持用户首页流量牟利为目的,但是不同于其他”流量劫持”类病毒的是,它技术高明、手段凶狠,会主动攻击国内主流的安全软件,使他们失去内核对抗能力,这会让电脑完全失去安全防护。诡异的是,Pengex 唯独不攻击并且刻意”放过”腾讯电脑管家。
“Pengex” 通过盗版系统盘和”注册机”软件进行传播,并在用户电脑中留下后门,日后可随时植入任意病毒,因此威胁隐患极大。”Pengex” 会攻击各种主流的杀毒软件,包括火绒、360、金山等,导致这些软件的驱动无法加载,因此失去在内核层对抗病毒的能力。
但有意思的是,该病毒却唯独刻意放过了腾讯电脑管家,它将腾讯电脑管家加入白名单中,在进行”删除驱动回调”的操作时放过腾讯电脑管家。病毒的这种行为表明,该病毒团伙很可能是腾讯安全管家的系统盘渠道推广服务商,火绒建议”腾讯安全管家”彻查系统盘推广渠道。
“Pengex” 通过修改浏览器配置和进程启动参数两种方式,来劫持首页牟利。在此过程中,病毒会按照制作者的计划,将不同的浏览器指向不同的导航站。该病毒不仅攻击安全软件,还会攻击其他同类病毒,以便独占用户电脑首页资源牟利。据分析,该病毒劫持首页后设置的渠道号是”oemxiazaiba2″(”下载吧”的全拼),请各大导航站关注并查证这个渠道账号。
“火绒安全软件”已经在第一时间更新病毒库,可彻底查杀该病毒。火绒工程师提醒广大用户,如需重装系统,务必通过正规渠道,购买正版系统,目前看来,盗版系统盘已经成为电脑病毒的重要传播渠道。
该病毒是一个内核级后门病毒,初步怀疑该样本主要通过第三方系统盘方式进行传播。该样本在系统中运行后,会造成国内主流安全软件驱动程序无法正常加载,从而使安全软件失去防御能力。该病毒主要对抗的安全厂商包括:火绒、360、金山等,其恶意代码执行之后,可以执行远端 C&C 服务器存放的任意病毒代码。
该病毒分为两个部分,即病毒加载器和后门病毒,下文中分为两部分进行详细分析。病毒结构如下图所示:
该部分代码主要用于对抗安全软件查杀和进行内核对抗。加载器功能代码分为两个部分,先会在内存中通过虚拟映射加载一个新的 ntoskrnl 镜像,再通过相同的方式将真正的病毒驱动加载到内存中,并且将导入的 ntoskrnl 中的函数地址指向其虚拟加载的 ntoskrnl 镜像中的函数地址上,通过此方法可以绕过其他驱动在 ntoskrnl 中设置的内核钩子。全局变量 is_virus_load
是一个标记,通过传入驱动主函数中的 RegistryPath 参数是否为 NULL 判断是否为病毒通过虚拟映射方式加载。如下图所示:
load_fake_ntoskrnl_safe
函数会通过虚拟加载新的 ntoskrnl 镜像,在其执行完虚拟加载逻辑之后,会与当前内存中系统加载的 ntoskrnl 模块前 0x200 个字节数据进行比较,从而判断自己创建的 ntoskrnl 镜像内容是否正常。如下图所示:
load_rootkit
函数会通过与虚拟映射 ntoskrnl 相同的方法加载真正的病毒驱动。病毒驱动的镜像数据是被异或 0xC0 加密过的,该函数首先会将病毒数据进行解密,之后对该驱动进行映射并修复导入表和重定位数据,最后通过调用 ExQueueWorkItem
函数执行病毒驱动入口。如下图所示:
ExQueueWorkItem
函数所传入的 WORK_QUEUE_ITEM
结构尾部带有附加数据,在上述调用中,附加数据存放有被加载驱动的入口点地址。如下图所示:
该病毒执行后,会不断地与 C&C 服务器(域名:caoduba.com 或 139.129.234.76,通讯端口:7897)进行通讯。病毒使用的域名和 IP 地址解密代码,如下图所示:
病毒与C&C服务器的通讯内容分为两大类:
1) 数据请求通知
服务器在获取到病毒请求数据的通知后,可以根据控制码返回被请求的数据。通过网络通讯,病毒可以进行远程驱动模块加载、获取远程动态库注入系统进程、获取配置数据进行流量劫持。控制码含义,如下图所示:
服务器可以根据通知中的控制码获取当前病毒的运行状态,例如映像加载回调是否设置成功,是否已经成功劫持用户主页等,病毒作者可以根据这些通知得知病毒运行中可能存在的问题。控制码含义,如下图所示:
病毒与服务器通讯函数,如下图所示:
下面我们根据病毒所使用的主要的控制码对病毒功能进行详细分析:
1) 控制码0x2,获取病毒执行配置数据进行流量劫持
与服务器通讯后,病毒可以获取到劫持配置数据,数据中包括是否劫持某种浏览器、各个种类浏览器需要劫持的网址、控制病毒执行流程的执行标记。如下图所示:
virus_proc_ctrl_code
可以控制病毒的执行执行的对抗操作流程,其所能控制的对抗操作例如:删除其他驱动的映像加载回调和进程回调、截断 attach 在系统网络驱动上的设备链等。因为绝大部分浏览器首页保护和首页劫持都会在这些位置上做文章,所以在病毒在劫持流量的同时进行上述对抗可以一定程度上提高其劫持成功率。该变量以位段的形式规定执行流程,各个位段含义如下图所示:
virus_proc_ctrl_code
变量控制执行流程,如下图所示:
A. 删除其他驱动的进程回调和映像加载回调
这种方法主要针对利用进程回调和映像加载回调相互配合劫持或保护浏览器启动参数的情况,病毒先通过搜索代码的方式在设置回调的系统函数中找到回调函数表,之后判断回调函数所属驱动模块是否在白名单中,如果不在白名单中则执行删除操作,删除成功后想服务器发送运行状态通知 0x10。如下图所示:
除了删除驱动回调外,该病毒还会通过截断 attach 到 tcpip、AFD、tdx 驱动上设备链的方式,排除网络过滤驱动对其流量劫持效果的影响。如下图所示:
通过删除\Registry\Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BrowserHelperObjects
注册表项下的所有子项来删除所有 BHO。但当病毒发现系统中存在\REGISTRY\MACHINE\Software\Wow6432Node\Tencent\QQPCMgr
注册表项时,则不对 BHO 文件进行清除。如下图所示:
病毒通过将\Registry\User\
当前用户\Software\Microsoft\Windows\CurrentVersion\InternetSettings的ProxyEnable
键值置为0的方法禁用网络代理。
F. 劫持浏览器配置
在进行对抗操作之后,病毒使用所收到的劫持网址和相关数据尝试对一些常用浏览器(IE、QQ浏览器、360安全浏览器、火狐、世界之窗)和腾讯电脑管家首页保护的配置进行修改,从而进行流量劫持。在进行劫持操作之后,会向C&C服务器发送控制码0x4。如下图所示:
病毒除了会篡改浏览器配置外,还会通过添加自定义保护网址(自定义网址相关注册表项均为 3rd 开头)的方式,劫持腾讯电脑管家首页保护网址。如下图所示:
与上文(一)病毒加载器中病毒所使用的方法相似,只不过病毒这次用来加载的驱动模块数据是通过C&C服务器获取的,大致执行过程相同,其具体的驱动执行过程不再赘述。如下图所示:
执行远程驱动模块代码部分,是通过注入 winlogon.exe 进程实现的,注入部分使用了开源的 BlackBone 项目代码。如下图所示:
1) 通过进程回调和映像加载回调劫持浏览器启动参数
除了上述介绍的病毒所使用的劫持方法外,病毒还通过注册进程回调和映像加载回调劫持浏览器启动参数进行流量劫持。如下图所示:
除了用于进行流量劫持的映像加载回调外,病毒还注册了一个用来进行内核对抗的映像加载回调,该回调函数不但会阻止带有安全软件签名信息的驱动执行,还会拦截一些内核级流量劫持类病毒的执行。当所加载的驱动信息在黑名单中,病毒会将映像的入口点代码替换为直接返回,从而禁止执行该映像中的逻辑代码。如下图所示:
UPX0
或者 .vmp0
则禁止驱动逻辑执行。如下图所示:
文中涉及样本SHA256:
附PDF版报告下载地址