分析实例:Absolute公司防盗追踪软件安全隐患 – 作者:东巽科技2046Lab

Computrace背景

Computrace是一款防盗追踪软件,它来自于国外Absolute公司,该软件主要确保用户在笔记本丢失后,通过定位帮助用户能够找回被盗笔记本,同时,该软件还具有远程锁定、文件传输等功能。目前,Computrace防盗追踪软件被主流的电脑供应商预装到电脑的BIOS模块中,用户只需要更改BIOS选项设置即可激活软件功能。

一、Computrace运行过程

大部分预装了Computrace防盗软件的笔记本,在其BIOS的Security模块中,提供了关于这个软件的配置选项。本文所使用的笔记本型号为Thinkpad系列,Computrace防盗软件在BIOS的配置选项如下图所示。

图片1.png开启了Computrace防盗软件的笔记本,在启动时,会执行Computrace防盗软件的Option ROM,并尝试查找FAT/FAT32/NTFS分区,然后创建或修改系统内的autochk.exe文件,由于autochk.exe在进入桌面之前启动,用于检测硬盘驱动状态,因此,autochk.exe运行后的操作是无法被应用软件所监控到;修改后的autochk.exe会释放出rpcnetp.exe文件并运行,rpcnetp.exe运行后会将自己复制成DLL文件,并且以服务的形式驻留在系统中,主动和C&C服务器建立通信。Rpcnet.exe文件是rpcnetp.exe运行后从C&C服务器端下载回来的EXE,是Computrace防盗软件的主体功能程序。

图片2.png

computrace运行流程


二、Computrace阶段细节

A.Computrace BIOS模块

国外有人从旧版本BIOS固件中,发现了Computrace防盗软件的ROM配置信息,通过BIOS查找FAT/FAT32/NTFS分区,然后创建或修改系统内的autochk.exe文件,并保存为autochk.EXE:bak NTFS数据流文件格式或Autochk.bak文件。

 图片3.png

B. autocheck.exe阶段

在进入桌面前,系统运行修改后的autochk.exe程序,在系统目录system32或SYSWOW64目录下创建rpcnetp.exe文件,通过注册表创建rpcnetp系统服务,并将当前自身autocheck.exe还原为初始状态。

C. rpcnetp.exe阶段

rpcnetp.exe是一个小型的代理程序,主要实现与C&C端通信,并下载Computrace软件的主体程序。

Rpcnetp.exe通过服务自启后,会在当前目录下拷贝自身重命名为rpcnetp.dll,IDA截图如下所示:

图片4.png通过直接修改文件内容,主要为文件的PE头结构,生成rpcnetp.dll类型的文件。

图片5.pngRpcnetp.exe创建子进程“svchost.exe”,并将生成的rpcnetp.dll文件注入到svchost.exe进程中,然后svchost.exe生成一个IEPLORE.exe子进程,并再次将rpcnetp.dll注入到IEPLORE.exe进程中,发起与C&C(search.namequery.com)的连接通信。

图片5.5.png

D.rpcnet.exe阶段

rpcnet是Computrace防盗软件主体程序,该程序与rpcnetp.exe连接的服务器和端口相同,协议类型也一样。

该样本首先在系统内寻找指定名称的exe与dll文件,若不存在,则将自身重命名为rpcnet.dll并复制到程序的当前位置。

图片6.png随后修改复制体,将其由exe格式变为dll格式,并使用LocalLibraryA()函数进行加载。

图片7.png程序获取使用POST指令将通信信息发送至域名search.namequery.com与search.dnssearch.org。图片8.png程序随后将开启一个接收线程,接收从服务端发送来的数据。图片9.png通过对服务端发送数据的解析,分别进行创建新进程、关闭rpc通信、等候后续指令等操作。图片10.png

三、通信协议分析

东巽铁穹预警设备捕捉到的Computrace防盗软件的通信行为截图如下:

图片11.pngComputrace和C&C服务器之间的通信开始由一系列POST请求和HTTP响应组成。客户端启动后的第一个Post请求没有负载,是一个空的POST请求。服务器在第一次收到rpcnetp的请求后,会回复一个带有特殊头部的HTTP响应,其中包含了标签ID,这个ID将用于与rpcnet持续的会话。每个HTTP响应和后续POST请求中都携带了一些二进制数据,这些二进值的负载是协议中重要的数据包。所有数据包以特殊字节“ ~”(0x7E)开始和结束。

图片12.png

rpcnet.exe和rpcnetp.exe连接的C&C端和端口都相同,并且通信特征也类似,主要在通信结构上存在差异。在rpcnet响应服务器的握手包时,包的开头部分放置了两个Session ID,这样,C&C服务器就知道了客户端上运行的是哪个EXE程序。

Computrace防盗软件和C&C服务器通信指令的负载结构分为三种,握手建立连接、读数据结构和写数据结构,开始握手Payload结构如下:

服务器返回握手包以特殊的数据 FF FF FF FF开始;Size为0x04;Session ID由服务器定义;Seq是序列号;CheckSum是包内容的Hash值,用于校验包的内容。

图片13.png

C&C服务器向客户端写数据通信payload结构

Address表示要写入的地址;Size表示要写入的字节数;Data To Write是要写入的内容;Seq是包序列号;CheckSum是Hash值。

图片14.png

C&C服务器向客户端写数据通信payload结构

Address表示要写入的地址;Size表示要写入的字节数;Data To Write是要写入的内容;Seq是包序列号;CheckSum是Hash值。

图片15.png

四、威胁风险分析

Computrace客户端与Absolute Software服务器通信,在协议层面针对服务器的合法性未做任何验证机制,攻击者通过DNS劫持和重放攻击,可以利用其通信机制来远程执行任意代码。因为Computrace防盗软件是烧制在BIOS中,无法通过应用软件进行修补,只要客户开放了该软件使用权限,那么该威胁将一直影响客户。建议用户针对系统中的Computrace采取相应的措施来降低安全风险。

五、防护措施

A.排查是否存在Computrace防盗软件

联想品牌计算机请进入BIOS“Security”菜单,查找是否有“Anti-Theft”子项,即如下图所示。

图片16.png如有“Anti-Theft”子项,进入后可发现Absolute的防盗追踪软件Computrace,即说明存在该软件。

图片17.png

其他品牌请在BIOS菜单中逐一筛查。

B. 处置

方法1:更换主板或升级BIOS

升级方法请联系计算机生产商咨询。

方法2:禁止该软件运行

第一步:打开注册表编辑器,请定位到:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager

将右边的 BootExecute 键值(系统默认为autocheck autochk *)备份后删除掉,阻止该程序自动再启动后续进程。

图片18.png

第二步:在任务管理器中结束相关进程,删除System32目录下的文件rpcnet.exe、rpcnetp.exe、rpcnet.dll、rpcnetp.dll,此时切勿重新启动Windows。

第三步:在System32目录下分别新建以上四个文件,文件内容为空,为每个文件执行如下操作:右键单击,打开属性页,切换到“安全”选项卡,为列出的每个用户或组(包括SYSTEM)设置为拒绝“完全控制”。

方法3:禁止软件访问网络

修改host文件,将相关域名设置为禁止访问:记事本打开C:\Windows\System32\drivers\etc\hosts文件,末行输入以下信息后保存。

127.0.0.1       search.namequery.com

127.0.0.1       search.namequery.com

127.0.0.1       search2.namequery.com

127.0.0.1       search64.namequery.com

127.0.0.1       search.us.namequery.com

127.0.0.1       bh.namequery.com

127.0.0.1       namequery.nettrace.co.za

127.0.0.1       m229.absolute.com

并在防火墙软件中设置将rpcnet.exe、rpcnetp.exe  禁止访问网络。

 

 

 

来源:freebuf.com 2019-06-05 10:03:33 by: 东巽科技2046Lab

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论