Watchdog 是一个能够针对 Windows 与 Linux 平台发起攻击、主要进行门罗币挖矿的攻击团伙。从 2019 年起就十分活跃,根据分析人员估算 Watchdog 通过挖矿获取的利益已经能够达到数万美元。
TeamTNT 是一个非常高调的团伙,经常在 Twitter 上进行互动,甚至开发了对外的 Dashboard 来展示运行情况,如下所示。该团伙对 Docker 和 Kubernetes 格外感兴趣,经常更新升级技术手段。
这次的主角是 zzhreceive.top
,有数据视角的肯定早就分析过它了,攻击已经持续了不短的时间。简单看下其攻击链,大体如下所示(注:为保证可读性有一些存在交错重合的部分脚本与关系并未完全显示):
攻击基础设施
IP
IP |
AS | ASN |
组织 | 国家 |
107.189.3.150 |
PONYNET |
53667 |
FranTech Solutions | 卢森堡 |
159.75.18.13 |
Shenzhen Tencent Computer Systems Company Limited | 45090 |
Shenzhen Tencent Computer Systems Company Limited | 中国 |
194.36.190.30 |
Host Sailor Ltd | 60117 |
Host Sailor Ltd | 荷兰 |
mysql.zzhreceive.top
前一段时间先后绑定在 123.56.55.130
与 159.75.18.13
上,这两个 IP 地址似乎分别是阿里云和腾讯云的服务器。这一点上,与其他攻击团伙尽量将攻击基础设施部署在境外产生差异。
Domain
攻击者看起来似乎格外喜欢使用数据库名称用于域名命名,除了三月份刚刚启用的子域名 bbq.zzhreceive.top
非数据库相关,其余使用了 mysql、hbase、oracle 和 elastic。
样本分析
apa.jpg
攻击者基于 ziggystartux 的 IRC Bot (https://github.com/isdrupter/ziggystartux)继续开发,公开版本中的版本描述为“BadKarma v6 Feb 2017”,而攻击者标注其代码版本为“BadKarma v12 Feb 2021”。
其主要功能如下所示:
攻击者沿用了原作者的自定义加解密方式来保护 IRC 服务器的明文地址与密码,只是略有改动。解密的逻辑如下所示:
尽管与原始的程序相比略有修改,仍然很容易用 Python 写出简单解密脚本:
解密可以得到其加密的 IRC 服务器地址为 hbase.zzhreceive.top
,频道为 #ntsett
,密码为 JzHR0SRFfJ1M6KI9
。这一点也可以在实际流量中得到验证:
IRC 的服务器端使用的是 Go 编写的 ergo 2.7.0 版本,服务器在 2022 年 1 月初开始上线运行。目前,该频道中有近 1500 个受害者。
b.sh/cronb.sh/dk.sh/dkb.sh/tmate.sh
攻击者会通过 URL 请求来在后台进行相关统计,例如用户身份为 root 的时候会发起如下请求:http://xx/b2f628/idcheck/uid=0(root)
。请求也不会有什么响应,应该只是为了在后台进行统计分析。
以及一些其他统计成功与否的请求:
禁用防火墙等安全措施,卸载云防护产品:
清除竞争对手的挖矿进程:
通过 base64 编码隐藏 tar 文件:
解压后为 Diamorphine Rootkit 的源码,再通过 insmod diamorphine.ko
进行安装。
下载 http://xx/hide/hide.jpg
解压 tar 文件是后续需要的一些 .so 文件:
写入指定位置的文件,内容如下:
增加用户 hilde,并写入 SSH 后门:
使用 post-exploitation 工具(https://github.com/r3vn/punk.py)收集失陷主机的用户名、SSH 秘钥和其他主机信息。
进行持久化:
横向平移:
优先使用 MoneroOcean 的 XMRig,备选标准的 XMRig:
配置文件并非一次到位,为规避检测后续还有修改:
修改完的配置文件 config_background.json
:
{
"api": {
"id": null,
"worker-id": null
},
"http": {
"enabled": false,
"host": "127.0.0.1",
"port": 0,
"access-token": null,
"restricted": true
},
"autosave": true,
"background": false,
"colors": true,
"title": true,
"randomx": {
"init": -1,
"mode": "auto",
"1gb-pages": false,
"rdmsr": true,
"wrmsr": true,
"numa": true
},
"cpu": {
"enabled": true,
"huge-pages": true,
"hw-aes": null,
"priority": null,
"memory-pool": false,
"yield": true,
"max-threads-hint": 50,
"asm": true,
"argon2-impl": null,
"astrobwt-max-size": 550,
"cn/0": false,
"cn-lite/0": false,
"kawpow": false
},
"opencl": {
"enabled": false,
"cache": true,
"loader": null,
"platform": "AMD",
"adl": true,
"cn/0": false,
"cn-lite/0": false
},
"cuda": {
"enabled": false,
"loader": null,
"nvml": true,
"cn/0": false,
"cn-lite/0": false
},
"donate-level": 0,
"donate-over-proxy": 0,
"log-file": null,
"pools": [
{
"algo": null,
"coin": "monero",
"url": "elastic.zzhreceive.top:1414",
"pass": "x",
"rig-id": null,
"nicehash": true,
"keepalive": false,
"enabled": true,
"tls": false,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null
},
{
"algo": null,
"coin": "monero",
"url": "oracle.zzhreceive.top:1414",
"pass": "x",
"rig-id": null,
"nicehash": true,
"keepalive": false,
"enabled": true,
"tls": false,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null
}
],
"print-time": 60,
"health-print-time": 60,
"retries": 5,
"retry-pause": 5,
"syslog": true,
"tls": {
"enabled": false,
"protocols": null,
"cert": null,
"cert_key": null,
"ciphers": null,
"ciphersuites": null,
"dhparam": null
},
"user-agent": null,
"verbose": 0,
"watch": true,
"rebench-algo": false,
"bench-algo-time": 10
}
攻击者使用自建矿池(
elastic.zzhreceive.top:1414
与oracle.zzhreceive.top:1414
)。
为了逃避检测,钱包地址也不是开箱即用需要再二次处理,处理后钱包地址为 43Xbgtym2GZWBk87XiYbCpTKGPBTxYZZWi44SWrkqqvzPZV6Pfmjv3UHR6FDwvPgePJyv9N5PepeajfmKp1X71EW7jx4Tpz
。
攻击者使用最新版(2.4.0)的 tmate(https://github.com/tmate-io/tmate)作为另一重后门,URLTOKEN 会生成一个字符串,如 261342O26837
。将该唯一标识通过 HTTP 请求上报,攻击者即可滥用 tmate 的服务连接失陷主机。攻击者的 APIKEY 为 tmk-4ST6GRXU6GPUjlXHfSlNe0ZaT2
,滥用行为应该被封禁。
可以看出攻击者为规避检测做了大量的工作,并且使用或者定制修改了开源程序和滥用合法程序。值得注意的是,tmate 仍然被许多引擎认为是与 TeamTNT 有关(标记为 Hildegard),并且也有许多引擎识别出其为 tmate 仍然予以告警:
c.sh/dkis.sh
根据设备内存情况调整扫描强度:
base64 编码的字符画:
利用 masscan
和 zgrab
对 2375 端口和 2376 端口进行扫描,再利用 docker 远程访问写入定时任务进行入侵:
cf.jpg
矿机配置文件,使用的钱包地址与前述相同,改用公开矿池。
{
"api": {
"id": null,
"worker-id": null
},
"http": {
"enabled": false,
"host": "127.0.0.1",
"port": 0,
"access-token": null,
"restricted": true
},
"autosave": true,
"background": false,
"colors": true,
"title": true,
"randomx": {
"init": -1,
"mode": "auto",
"1gb-pages": false,
"rdmsr": true,
"wrmsr": true,
"cache_qos": false,
"numa": true,
"scratchpad_prefetch_mode": 1
},
"cpu": {
"enabled": true,
"huge-pages": true,
"hw-aes": null,
"priority": null,
"memory-pool": false,
"yield": true,
"max-threads-hint": 100,
"asm": true,
"argon2-impl": null,
"astrobwt-max-size": 550,
"cn/0": false,
"cn-lite/0": false,
"kawpow": false
},
"opencl": {
"enabled": false,
"cache": true,
"loader": null,
"platform": "AMD",
"adl": true,
"cn/0": false,
"cn-lite/0": false
},
"cuda": {
"enabled": false,
"loader": null,
"nvml": true,
"cn/0": false,
"cn-lite/0": false
},
"log-file": "/usr/share/[crypto].log",
"donate-level": 1,
"donate-over-proxy": 1,
"pools": [
{
"algo": null,
"coin": "monero",
"url": "xmr-asia1.nanopool.org:14444",
"user": "43Xbgtym2GZWBk87XiYbCpTKGPBTxYZZWi44SWrkqqvzPZV6Pfmjv3UHR6FDwvPgePJyv9N5PepeajfmKp1X71EW7jx4Tpz.dream",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": true,
"enabled": true,
"tls": false,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null
},
{
"algo": null,
"coin": "monero",
"url": "xmr.f2pool.com:13531",
"user": "43Xbgtym2GZWBk87XiYbCpTKGPBTxYZZWi44SWrkqqvzPZV6Pfmjv3UHR6FDwvPgePJyv9N5PepeajfmKp1X71EW7jx4Tpz.dream",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": true,
"enabled": true,
"tls": false,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null
}
],
"retries": 5,
"retry-pause": 5,
"print-time": 60,
"health-print-time": 60,
"syslog": true,
"tls": {
"enabled": false,
"protocols": null,
"cert": null,
"cert_key": null,
"ciphers": null,
"ciphersuites": null,
"dhparam": null
},
"user-agent": null,
"verbose": 0,
"watch": true,
"pause-on-battery": false
}
查询显示连接 nanopool 矿池的部分,其收益已经达到 8 个门罗币,查询时在线矿工 43 个。
cronis.sh/iss.sh
部署 masscan、pnscan 扫描程序。
cronscan/scan
设定持久化服务:
cronrs.sh/rss.sh
入侵 redis 所用:
随后利用 masscan 扫描其他 redis 服务器。
midd.jpg/father.jpg
为矿机与相应的配置文件:
归因疑云刍议
样本中经常使用与 TeamTNT 类似的实现方式,如使用了与 TeamTNT 相同的文件名(/usr/bin/bioset)、与 TeamTNT 一致的字符画:
攻击中与 TeamTNT 的相似是全方位的,包括原来未发现针对 Docker 的攻击,目前已经新增了这部分功能(注:这里指的 Watchdog 是这个攻击中的,不是此前传统的 Watchdog)。
根据 PaloAlto Networks 的跟踪分析,攻击者曾经使用新基础设施替换了原有的 Watchdog 的基础设施,但也保留了 Watchdog 原有的路径结构。
据此,姑且可以认为这是 Watchdog 做的。但令人讶异的是,IP 地址 199.19.226.117 先后被 TeamTNT 和 Watchdog 所使用:
并且研究人员在 TeamTNT 的恶意样本中发现了 b.sh
,该脚本部署在 45.9.148.35
上。且该 IP 地址确认与 TeamTNT 有关:
脚本文件中不仅包含 Watchdog 的门罗币钱包,还指向了 TeamTNT 的域名 borg.wtf
。
如果说 Watchdog 模仿 TeamTNT 的话,能够解释攻击痕迹中对 TeamTNT 的亦步亦趋,但这无法解释在 TeamTNT 的基础设施中发现 Watchdog 的部分。这部分其实没有更多的数据支撑,比如发现的样本与其他 TeamTNT 样本的关联情况,具体样本的下载使用量是否很大等。只是目前披露的情况,难以表示二者间就存在关联。
不管怎么说,尽管攻击也未使用 Watchdog 传统的、带有大量 Exploit 的恶意样本,Palo Alto Networks 最后认为该攻击还是属于 Watchdog 模仿 TeamTNT 的。从目前的情况来看,我个人也倾向于这种判断,如果各位有更多的数据或者以前的分析欢迎指路和讨论。
Palo Alto Networks 在 2021 年 6 月份发布的报告原标题是“TeamTNT Using WatchDog Operations TTPs in Cryptojacking”。而 TeamTNT 在 Twitter 上予以回复“Das ist KEINE TeamTNT Kampagne!”(德文意为:“这不是 TeamTNT 的攻击行动!”)。
以 TeamTNT 高调的行事作风,也许不会抵赖自己的攻击行为。并且 TeamTNT 对这种拙劣的模仿非常不满,表示“TeamTNT 并不需要要抄 Watchdog 的垃圾”!
随后研究人员重新分析该攻击行动,发现是 WatchDog 模仿 TeamTNT 的攻击。但这后续的“反转”大家普遍都没有跟上,表述停留在 TeamTNT 使用 Watchdog 的 TTP 进行攻击:
中文世界的消息似乎也没有及时跟进,这样反转性质的攻击归因可能会带来极大的误导。
甚至某些安全厂商的威胁情报标签也没有对应更新。当然,不排除是大家对归因仍然存在分歧,所以这里不一一列举,感兴趣的可以自行查阅。(PS:标记了恶意和标记了归属之间的差异其实还是很大的,如果是公开采集而来的威胁情报,带有归属信息的情报最好还是二次校验为好,毕竟这可能是威胁情报最常见的应用场景。从另一个方面讲,这也是威胁情报中心会遇到的典型困境,高可信渠道来源都有可能存在“反转”的情况下,高质量的情报整合能力是极具价值的)。
总结
假旗(FALSE FLAGS)不仅被较高水平的 APT 组织所采用,现在也被黑产团伙盯上了。分析人员在给出归因结果时,一定要警惕 FALSE FLAGS 的存在,时刻牢记攻击归因是需要坚实的证据支撑的,否则有可能会被表面现象所蒙蔽。社区对此也要加强沟通讨论与数据共享,毕竟人多力量大嘛。卡巴斯基此前写过关于错误归因的博客,列举了攻击归因的审慎之处,可以参考此前翻译的版本进行拓展阅读。
错误归因
https://github.com/PolluxAvenger/Paper_Recording/blob/master/WAVE%20YOUR%20FALSE%20FLAGS%20DECEPTION%20TACTICS%20MUDDYING%20ATTRIBUTION%20IN%20TARGETED%20ATTACKS.md
IOC
哈希(MD5) | 文件名 |
---|---|
b66fe14854d5c569a79f7b3df93d3191 | 1.0.4.tar.gz |
10ac30ebbed68584400f8ccd814e2a60 | apa.jpg |
61b9e621c7f5cccf7531df2960d1279a | b.sh |
84a5ad559fb6214ed41ab6d5148e6fa2 | cf.jpg |
33f3af3578a006c540a6d672018685a4 | cronb.sh |
f1c1406a1713f3213276aee6f2f4d0ee | cronis.sh |
49d08057803bc26d335a31d17aa6d516 | cronrs.sh |
95671392750cbf2beeded42dd4a8112b | cronscan |
32fc7480579c81080d58257bc0610ce2 | c.sh |
e0970e709cdf0724a8d923f9c300798b | dkb.sh |
acd107d13c46ecbfa9cb54af1ac4048f | dkis.sh |
46e66fb290f0c2c44cc224aa4c3e2767 | dk.sh |
a06f97d208b2dce7f5373538d840fe4f | father.jpg |
d7a454d9427ae6c980f892891d1f3f77 | hide.jpg |
9f337437314f3f3f37fb8ef46b3c5412 | iss.sh |
5739e2b0bf1962d2ac147aeca8763d36 | jq |
12b50559b634a77b48a193d48860521e | midd.jpg |
aacd7b3d0c4a2686d3291f02030696d9 | p.tar |
394fd351e83b997d7d7169792ed07ff0 | rss.sh |
fd679470a787f18534a614b100fa171c | scan |
1aeb95215a633400d90ad8cbca9bc300 | tmate |
7691c55732fded10fca0d6ccc64e41dc | zgrab |
41a7ce7b86f18a9d3ca21482d799393f | tmate.sh |
http://oracle.zzhreceive.top/b2f628/b.sh
http://oracle.zzhreceive.top/b2f628/cronis.sh
http://oracle.zzhreceive.top/b2f628/p.tar
http://oracle.zzhreceive.top/b2f628/dkb.sh
http://oracle.zzhreceive.top/b2f628/father.jpg
http://oracle.zzhreceive.top/b2f628/cf.jpg
http://oracle.zzhreceive.top/b2f628/cronscan
http://oracle.zzhreceive.top/b2f628/dkb.sh
http://oracle.zzhreceive.top/b2f628/cryptostart
http://oracle.zzhreceive.top/b2f628/cryptonotfount
http://oracle.zzhreceive.top/b2f628/authfailed
http://oracle.zzhreceive.top/b2f628/authok
http://oracle.zzhreceive.top/b2f628/dkis.sh
http://oracle.zzhreceive.top/b2f628/scan
http://oracle.zzhreceive.top/b2f628/rss.sh
http://oracle.zzhreceive.top/b2f628/cronrs.sh
http://oracle.zzhreceive.top/b2f628/c.sh
http://oracle.zzhreceive.top/service/tmate.sh
http://bbq.zzhreceive.top/zgrab
http://bbq.zzhreceive.top/midd.jpg
http://bbq.zzhreceive.top/jq
http://oracle.zzhreceive.top/b2f628fff19fda999999999/dk.sh
http://oracle.zzhreceive.top/b2f628fff19fda999999999/b.sh
http://oracle.zzhreceive.top/b2f628fff19fda999999999/iss.sh
http://oracle.zzhreceive.top/b2f628fff19fda999999999/1.0.4.tar.gz