WikiLeaks公开资料解读系列之CIA Hive项目

---------该文转自freebuf

背景

2017年11月9日WikiLeaks 开始公布Vault8系列资料,其中包括一个名为HIVE的CIA后门系统项目,输出了项目各版本的部分源代码,这是WikiLeaks公布CIA相关资料的历史上少见的包含源码的数据。360威胁情报中心对其主要内容进行了分析,提供在主机上对此后门程序进行搜索匹配的规则。

综述

HIVE项目为一款CIA内部使用的远程植入木马,由EDB部门开发。它使用HTTPS协议进行通信,主要用于控制目标机器并窃取敏感信息。

下图为CIA内部对该项目的描述:

WikiLeaks公开资料解读系列:CIA Hive项目

HIVE并不是一款重量级的木马,其主要功能只是提供一个最初的立足点以部署其他全功能的工具。

下图所示为Hive支持的系统平台版本,包括从Windows到Solaris等多个操作系统及各种CPU架构平台。

WikiLeaks公开资料解读系列:CIA Hive项目

下图为整个HIVE的整个项目周期:

WikiLeaks公开资料解读系列:CIA Hive项目

源码分析

Hive的源码版本如下所示,通过tag可以看到该源码包下所有的版本:

WikiLeaks公开资料解读系列:CIA Hive项目

注意并不是所有版本的源码都是完整的,如下所示为Hive 2.9版本的源码目录:

WikiLeaks公开资料解读系列:CIA Hive项目

版本2.8下除了完整项目外,还包含了对应的编译好的客户端和服务端:

WikiLeaks公开资料解读系列:CIA Hive项目

如下为编译好的所有系统平台架构Server端:

WikiLeaks公开资料解读系列:CIA Hive项目

下图完整的代码树结构:

WikiLeaks公开资料解读系列:CIA Hive项目

目录相关的内容:

 client/server目录为对应的CC端和Implant

 documentaiont目录为对应的使用指南

 honeycomb为CC的前置控制节点

 Ilm-client目录为封装过的CC端代码和hiveclient功能大致相同

Honeycomb

honeycom代码结构如下所示:

WikiLeaks公开资料解读系列:CIA Hive项目

主要功能在honeycomb.py中,该python脚本用于将implant提交的连接汇总,入库,再移交给到后端的hiveclient 。

如下所示为此工具的使用说明,设置开启的端口后运行,操作对应的日志文件会被保存。

WikiLeaks公开资料解读系列:CIA Hive项目

Server(implant)

Server端的代码结构如下所示:

 第一部分为对应各个版本的makefile文件(可以看到除了x86之外,还支持mips,ppc,sparc架构)

 第二部分为beacon,该部分代码用于和Loki’s Blot/Swindle通信,Loki’s Blot/Swindle为一套proxy,用于建立安全的通信并校验连接的implant,之后再将其转移至Honeycomb。

 第三部分的client_sesssion包含的主要的后门功能

 第四到第六部分别为对应的持久化,进程遍历及自毁模块

 第七部分为对应的Trigger,该Trigger用于过滤出网卡中的CC流量,并回连。

CC运行如下所示,需要制定对应的Loki’s Blot/Swindle回连地址,即keyid,该id用于和CC通信是进行校验。

WikiLeaks公开资料解读系列:CIA Hive项目

WikiLeaks公开资料解读系列:CIA Hive项目

Patcher

Patcher用于给implant打参数补丁,由于对应的implant每次启动需要定制参数,为了隐藏痕迹,可以通过Patcher给对应的一个的implant打入制定的参数补丁,如下所示即为对linux-x86打入对应运行参数的示例。

hive­patcher ­a 10.3.2.169 ­i 3600 ­j 5 ­m linux­x86 ­k “Testing Testing”

从源码中可以看到补丁的打入主要靠implant的平台进行区分。

WikiLeaks公开资料解读系列:CIA Hive项目

输入的参数通过拼接,直接写入到二进制文件中:

WikiLeaks公开资料解读系列:CIA Hive项目

Main中如下所示,除了一开始的参数初始化工作外最主要的功能如下所示:

1. 连接beacon,汇报基本的宿主机情况

2. 开启trigger,监控来自hiveclient的连接

WikiLeaks公开资料解读系列:CIA Hive项目

Beacon

beacon开启单独的线程运行,并最终在send_beacon_data中连接Loki’s Blot/Swindle,通过SSL协议发送连接数据,具体数据如下所示包含Mac地址,进程列表等:

WikiLeaks公开资料解读系列:CIA Hive项目

数据包本身经过一层加密:

WikiLeaks公开资料解读系列:CIA Hive项目

宿主信息在implant和Loki’s Blot/Swindle完成校验后,发送给Honeycomb,Honeycomb完成信息入库,并调用后端的hiveclient回连implant

Trigger

Trigger为implant中的激活部分,implant运行之后trigger监控网卡流量以识别来自于CC的连接(Solris下)。

WikiLeaks公开资料解读系列:CIA Hive项目

如下图所示函数dt_get_socket_fs函数中实现对具体网卡设备的流量过滤。

WikiLeaks公开资料解读系列:CIA Hive项目

具体的过滤分为两种,

如果是Solaris系统,依赖于DLPI函数库实现

WikiLeaks公开资料解读系列:CIA Hive项目

具体如下所示:

WikiLeaks公开资料解读系列:CIA Hive项目

如果是正常的Linux系统,通过原始套接字的方式,接收发往本机Mac的IP数据帧。

WikiLeaks公开资料解读系列:CIA Hive项目

捕获到对应流量后校验数据指定的字段以确保为CC流量。

WikiLeaks公开资料解读系列:CIA Hive项目

如下图所示为对应的校验算法,算法主要会依赖于以下两个校验项

1. 校验数据偏移8位置的到92位置的数据的CRC是否为内置的CRC值。

2. 校验CRC之后两位对应数字是否能被127整除。

WikiLeaks公开资料解读系列:CIA Hive项目

下图为手册中给出的对应流量包的结构

WikiLeaks公开资料解读系列:CIA Hive项目

一旦校验通过则进行triggered回连。

WikiLeaks公开资料解读系列:CIA Hive项目

目前来看trigger支持的UDP和TCP两种协议

WikiLeaks公开资料解读系列:CIA Hive项目

恶意功能

回连beacon完成校验之后,下图所示为implant支持的功能,包括基本的文件上传下载,程序执行及远程shell功能:

WikiLeaks公开资料解读系列:CIA Hive项目

Client

hiveclient的代码结构如下,和server基本对应:

WikiLeaks公开资料解读系列:CIA Hive项目

运行如下所示:

WikiLeaks公开资料解读系列:CIA Hive项目

整体架构

目前由于Loki’s Blot/Swindle的缺失,整体Hive的网络结构还不能完整的运行起来。

下图为在Hive指导手册中Hive使用场景基础上的一个补充图,攻击场景如下:

1. 使用patcher处理指定的implant

2. 部署implant到受害者机器

3. Implant和switchblade通信,完成校验

4. 校验完成,Honeycomd记录对应的日志,并将其交至最后的hiveclient/hive-ilm

5. 远端hiveclient/hive-ilm通过trigger触发implant

6. 如果implant需要更新通过hivereset对implant进行更新

下图为系统的整体架构;

WikiLeaks公开资料解读系列:CIA Hive项目

检测方法

Yara规则

360威胁情报中心建议通过以下Yara规则搜索匹配本机上的文件:

rule hive

{

meta:

description= "This is for CIA hive"

strings:

$elf= {7F 45 4C 46}

$cert1= "./server.crt"

$cert2= "./ca.crt"

$cert3= "./server.key"

$personalization= "7ddc11c4-5789-44d4-8de4-88c0d23d4029"

condition:

$elfat 0 and 3 of them and filesize < 1000KB

}

利用该Yara在VirusTotal上一共匹配到25个样本,从提交时间来看基本都是Hive源码泄露之后,未发现有早期的样本。

WikiLeaks公开资料解读系列:CIA Hive项目

关联项目/组件/行动

从泄露的相关文档来看,该项目没有相关的关联项目。

技术水平解读

该项目样本使用的技术并不复杂,但是作为前置的轻量级样本,Hive是合格的,亮点在于通过Loki’s Blot/Swindle建立proxy通道及跨平台的特性,从架构上看和与去年的Mirai在较为相似,由于都开放了源码,可能不久的将来,Mriai和Hive的子婿将会出现。。

应对措施

Hive本身只是一个恶意软件,并不具备主动攻击的特性,建议在本机搜索匹配包含木马特征的文件。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

数据库负载急剧提高的应急处理(r9笔记第54天)

今天处理了一起紧急问题,回过头来看还是有不少需要注意的地方。 首先是收到了报警,有一台DB服务器的负载有一些高,但是会快就恢复了。所以自己也没有在意,但是过了大...

3265
来自专栏FreeBuf

【漏洞预警】Linux内核ipv4/udp.c 远程任意代码执行(CVE-2016-10229)

? 漏洞描述 Linux kernel是美国Linux基金会发布的操作系统Linux所使用的内核。Linux kernel 4.5之前的版本中的udp.c文件...

1746
来自专栏蓝天

Linux下可以替换运行中的程序么?

今天被朋友问及“Linux下可以替换运行中的程序么?”,以前依稀记得Linux下是可以的(而Windows就不让),于是随口答道“OK”。结果朋友发来一个执行结...

952
来自专栏沃趣科技

sysbench的lua小改动导致的性能差异

最近在配合某同事做一项性能压测,发现相同数据量、相同数据库参数、相同sysbench压力、相同数据库版本和sysbench版本、相同服务器硬件环境下,我和同事的...

953
来自专栏SDNLAB

基于SDN的网络状态测量

为了更好地管理和运行网络,非常有必要收集网络资源及其状态信息。在很多网络场景中,SDN控制器的决策都取决时延,带宽和拓扑等网络状态。在开发SDN应用的过程中,笔...

3534
来自专栏嵌入式程序猿

赶快来更新你的bootloader吧

不知大家是否还记得在之前给大家介绍过NXP的kinetis bootloader1.2版本的, 嵌入式工程师必须会的技能:玩转bootloader 时隔一年多,...

3449
来自专栏架构师之路

如何防止根目录被删?

周末误删根目录《就这样把根目录删了!!!》,引起了广泛的讨论: (1)部分朋友表达了同情 (2)部分朋友建议买机票跑路 (3)部分朋友分享了类似的悲剧(例如:多...

3376
来自专栏FreeBuf

如何利用Fluxion诱惑目标用户获取WPA密码

前言 由于ISP替代了易受攻击的路由器,供渗透测试人员选择的诸如Reaver这样的工具越来越少,对于特定的目标,哪些工具有用与否能够确定的也很少。而如果采用暴力...

2286
来自专栏JavaQ

研发利器V1.0版

子曰:“工欲善其事,必先利其器”。同样,作为研发人员,想要高效、快捷的研发出优秀的产品,好工具的熟练使用是非常有必要的。记录一些最近一直在使用且高效的工具。 V...

3215
来自专栏木子昭的博客

网络测速插件speedtest

当上网速度很慢的时候, 人们想到的第一件事就进行网络测速,在window上, 只要你安装了360全家桶, 测速功能就是默认安装的, 但其实测速这种功能根本不需要...

1006

扫码关注云+社区