TrickBot复活:使用新的Linux 变种
2020-10-30 12:05:45 Author: www.4hou.com(查看原文) 阅读量:247 收藏

Trickbot 是久负盛名的银行恶意软件家族。10月12日,微软等发布公告称,微软联合FS-ISAC、ESET、Black Lotus Labs、NTT等毁坏了TrickBot 僵尸网络的C2基础设施。但不到半个月,Trickbot Linux变种随即出现,开始新一轮的攻击活动。

通信建立

Trickbot的Anchor 框架是2018年发现的后门模块。Anchor与C2的通信目前是使用DNS 通道。通信建立的过程中包含很多的步骤。

Parts of communication between Bot and C2

图 1: 僵尸主机与C2的通信

图 1是僵尸主机和C2之间的通信流。

· Part 1 :僵尸主机发送c2_command 0 到C2,其中含有客户端的信息,包括bot ID。一旦建立了连接,C2就会响应含有 signal /1/的消息。

· part 2:僵尸主机发送c2_command 1,C2响应bot_command。

· Part 3:僵尸进一步请求C2发送可执行文件,具体是根据接收到的初始的bot命令。

· Part 4:僵尸主机向C2发送执行的结果。

DNS 请求的创建

图1 中通信的每个部分都有3条不同的DNS 请求查询,如图2所示。

High-level overview of the DNS queries

图 2: DNS查询概览

图 2 是DNS 查询的概览图。每个查询在发送给恶意软件C2的数据类型上都有自己的格式,具体如下所示:

Query 0

僵尸主机 DNS 查询

image.png

0 – 表示type 0查询

UUID – 僵尸主机生成的16字节长度的UUID

current_part – 发送的数据的当前部分

total_parts –  数据分割的部分数

anchor_dns –与C2通信的Anchor bot的类型

Bot_GUID – 生成的GUID根据Windows和Linux 平台的不同而不同

c2_command –C2命令

content – 根据命令类型要发送的内容

Anchor 模块会根据平台的不同生成 GUID:

image.png

发送到C2的每个命令后面都有其自己的内容集(表2):

122_副本.png

因为DNS name长度最大为 255 字节,发送的数据是分段进行的。这也就解释了为什么type 0查询中有current_path 和 total_parts 2部分。下面是数据分割的算法伪代码:

def get_total_parts(c2, data):
    divider = ((0xfa - len(c2)) >> 1) - 0x18
    size = len(data)
    return (size / divider) + 1

发送给C2的数据在与密钥进行异或计算后会被构造成子域名。密钥仍然是0xb9。

下面是发送给c2_command 0的数据示例:

image.png

C2响应

在查询的每部分都发送后,C2就会用IP 地址响应。僵尸主机会用该IP来获取id值,并用于下一个查询序列。

def get_identifier(IP):
    return inet_aton(IP) >> 6

Query 1:

僵尸主机DNS 查询

Windows平台和Linux平台都有相同的type 1查询。同样地,数据会在与密钥进行异或计算后会被构造成子域名。密钥仍然是0xb9。

1 < UUID > < dw_Identifier >

· dw_Identifier – C2为query type 0发送给僵尸主机的值

C2响应

C2 会响应一个IP。给IP 会传递给相同的函数作为伪代码的get_identifier,生成的值是final query type 中的数据大小。

Query 2:

僵尸主机DNS 查询

Windows平台和Linux 平台对type 2都有相同的查询。

2 < UUID > < dw_Identifier > < dw_DataReceivedSize >

· dw_Identifier –与query type 0中C2发送给僵尸主机的值相同

· dw_DataReceivedSize – 接收到的数据大小。

僵尸主机会持续发送query type 2查询,直到从C2接收到的数据的大小与C2 发送的值相匹配为止。

C2 响应

对每个type 2 DNS 查询,C2 会响应一个 IP 记录列表。IP 列表如图3所示,是数据如何构造的一个结构。

Records of IPs sent by the C2

图 3: C2 发送的IP 记录

图4是C2 发送的IP 记录的PE 文件payload 示例:

Example PE file payload

图 4: PE文件 payload示例

结论

Anchor的C2 通信的复杂度和僵尸主机可以执行的payload 不仅反映了Trickbot 背后的攻击者的能力,也显示了其不断创新的能力。可以看出,许多攻击者都在构造跨平台编译的恶意软件家族,同时,安全研究人员也需要重新评估Linux系统的安全实践以确保可以应对逐渐增加的威胁。

本文翻译自:https://www.netscout.com/blog/asert/dropping-anchor如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/Zp78
如有侵权请联系:admin#unsafe.sh