Trickbot 是久负盛名的银行恶意软件家族。10月12日,微软等发布公告称,微软联合FS-ISAC、ESET、Black Lotus Labs、NTT等毁坏了TrickBot 僵尸网络的C2基础设施。但不到半个月,Trickbot Linux变种随即出现,开始新一轮的攻击活动。
通信建立
Trickbot的Anchor 框架是2018年发现的后门模块。Anchor与C2的通信目前是使用DNS 通道。通信建立的过程中包含很多的步骤。
图 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所示。
图 2: DNS查询概览
图 2 是DNS 查询的概览图。每个查询在发送给恶意软件C2的数据类型上都有自己的格式,具体如下所示:
Query 0
僵尸主机 DNS 查询
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:
发送到C2的每个命令后面都有其自己的内容集(表2):
因为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的数据示例:
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所示,是数据如何构造的一个结构。
图 3: C2 发送的IP 记录
图4是C2 发送的IP 记录的PE 文件payload 示例:
图 4: PE文件 payload示例
结论
Anchor的C2 通信的复杂度和僵尸主机可以执行的payload 不仅反映了Trickbot 背后的攻击者的能力,也显示了其不断创新的能力。可以看出,许多攻击者都在构造跨平台编译的恶意软件家族,同时,安全研究人员也需要重新评估Linux系统的安全实践以确保可以应对逐渐增加的威胁。
本文翻译自:https://www.netscout.com/blog/asert/dropping-anchor如若转载,请注明原文地址: