更新:2019年2月21号11点,我们捕获到了Fbot Loader完整的漏洞利用Payload,攻击者通过DVRIP协议建立telnet后门并植入Fbot僵尸网络程序。

特别声明

本次抓取的Fbot看起来是以 HiSilicon DVR/NVR Soc 的设备为目标,我们已经看到有24528个设备IP被感染。但需要警惕的是,考虑到物联网行业具有复杂的产业链,实际问题可能是在它的下游引入的,我们这里之所以列出 HiSilicon DVR/NVR Soc 仅源自于我们对可获取特征的统计,在没有拿到实际 Exploit 之前,我们无法给出引入问题的确切位置。

背景介绍

从2019年2月16号开始,360Netlab发现有大量HiSilicon DVR/NVR Soc设备被攻击者利用并植入Fbot僵尸网络程序。Fbot是由360Netlab率先发现并披露的僵尸网络[1],它一直很活跃,并且有在不断地升级。我们这次捕获到的Fbot就是一个针对HiSilicon DVR/NVR Soc设备的变种。

Fbot 感染目标

通过探测被感染的设备IP banner信息,我们得到一个被感染的设备CPU型号列表,并且可以确认这是属于HiSilicon DVR/NVR Soc设备[2]。由于有大量摄像头厂商采用了HiSilicon DVR/NVR Soc,我们也可以看到其它一些摄像头品牌。

目前,我们已经看到有24528个设备IP被感染。

fbot

图1:被感染的设备IP 国家/地区分布

以下是被感染的摄像头IP 国家/地区详细列表

VN 6760
TW 2110
TH 1459
BR 1276
TR 1137
IN 942
IR 892
RU 862
ID 609
RO 579
MY 553
IT 489
CO 363
EG 362
LK 360
US 328
AR 310
MX 293
FR 255
PK 237
UY 185
PL 184
GB 184
VE 183
CL 177
MA 176
UA 166
BG 147
GR 142
HU 141
SG 130
IL 123
DE 109
BD 106
ES 103

以下是被感染的设备CPU型号列表

   8262 bigfish
   3534 hi3520d
    383 godarm
    302 godnet
     78 hi3535
      8 Hisilicon Hi3536DV100 (Flattened Device Tree)

Fbot 感染流程

Fbot感染流程错综复杂,我们通过Anglerfish蜜罐和Fuzz Testing的技巧成功捕获到Fbot样本以及部分Paylod。遗憾的是,我们目前还没有捕获到关键Exploit Payload。以下是,Fbot大致的感染流程。

fbot_http_scan-2

图2:Fbot 感染流程

首先,被感染Fbot的设备会通过基础的HTTP请求去扫描TCP:80, 81, 88, 8000, 8080端口,当目标设备返回符合的特征后,Fbot会把这个IP和端口上报给 Reporter(185.61.138.13:6565)。

接着,Fbot Loader(185.61.138.13)通过设备默认密码 “admin/空密码” 登录目标设备Web端口,当目标设备返回符合的特征后,Fbot Loader再次使用设备默认密码 “admin/tlJwpbo6” 登录dvrip端口(TCP:34567)

由于我们的Anglerfish蜜罐并没有模拟dvrip协议,跟Fbot Loader的正常交互到这里就不能继续了。

所以,我们还不确定Fbot的Exploit入口(dvrip/web),也不确定是正常dvr协议利用还是漏洞利用。

Fuzz Fbot Loader

我们通过对dvrip协议进行Fuzz Testing,成功绕过Fbot Loader的Exploit逻辑。然后,Fbot Loader就会通过Shell命令向我们的TCP: 9000端口植入Fbot downloader。至此,我们便拿到了Fbot Downloader样本,然后通过Downloader样本我们得到Fbot 下载URL。

http://185.61.138.13:8080/fbot.arm5.u
http://185.61.138.13:8080/fbot.arm7.u

样本分析

Downloader

MD5:3b7f5be1c1ed582042f783ffcb23b754
该样本是在9000端口通过命令行(echo -ne XXXXXX > downloader)投递的,其核心功能只有一个,那就是通过HTTP协议从网络下载Fbot的主体并执行,下图是该样本中核心代码截图,可以直接看到下载Fbot的相关代码:

image001

fbot.arm5.u

被分析样本为fbot.arm5.u, MD5: 43A7D9956720B86330D4985C773E76C1

资源加密

样本中使用了两层不同的加解密代码,来保护样本中的静态资源不被分析。

最先用到的是一个单字节异或算法(异或0x31),相关代码如下图所示(Python 2.7):

image003

上述代码运行后会得到两个码表,分别为密文表/明文表。依照这两个码表做字符替换,就可以解密样本中其他静态字符串了。相关代码如下图所示(Python):

image004

将第一行输出进行截断操作后就得到了Fbot的C2地址(xabolfpzbz.ukrainianhorseriding.com)。

随后可以看到一些指令(PING/PONG/LOLNOGTFO)及资源控制相关的字符串,值得关注的是,最后两行字串是和本次扫描事件有关的字串。其中“GET / HTTP/1.0”被用于扫描,而“uc-httpd 1.0.0”则是扫描的目标特征。在MIRAI-SYN-SCAN的支持下,一旦扫到符合条件的目标,就会将目标的地址信息(IP:PORT)报告给核心Loader(185.61.138.13:6565),汇报的相关代码及协议格式如下图所示:

image006

用于DDoS攻击

在我们之前披露的文章中
曾介绍Fbot移除了DDoS功能。事实上,它在随后的更新中已经恢复了DDoS的功能模块。本次更新的样本中,具有5种攻击向量,均为DDoS相关。相关初始化代码如下所示:

image008

总结

我们建议HiSilicon等相关厂商提升初始密码复杂度,同时建立完善的软件系统安全更新机制。

相关安全和执法机构,可以邮件联系netlab[at]360.cn获取被感染的IP地址列表。

联系我们

感兴趣的读者,可以在 twitter 或者在微信公众号 360Netlab 上联系我们。

IoC list

C2:
xabolfpzbz.ukrainianhorseriding.com:6592

reporter ip:
185.61.138.13:6565

loader ip:
185.61.138.13

url:
http://185.61.138.13:8080/fbot.arm5.u
http://185.61.138.13:8080/fbot.arm7.u

md5:
9827375cd2e8ee9e3acc870e4b4c6097  downloader
3b7f5be1c1ed582042f783ffcb23b754  downloader
43a7d9956720b86330d4985c773e76c1  fbot.arm5.u

ASN Top 20

"geoip.number.raw: Descending","geoip.asn.raw: Descending","Unique count of ip.raw"
AS45899,"VNPT Corp",2590
AS7552,"Viettel Group",3600
AS3462,"Data Communication Business Group",1270
AS18403,"The Corporation for Financing & Promoting Technology",996
AS9121,"Turk Telekom",777
AS17552,"True Internet Co.,Ltd.",676
AS24086,"Viettel Corporation",531
AS4788,"TM Net, Internet Service Provider",428
AS17974,"PT Telekomunikasi Indonesia",376
AS45758,"Triple T Internet/Triple T Broadband",479
AS23969,"TOT Public Company Limited",325
AS18881,"TELEFÔNICA BRASIL S.A",319
AS8452,"TE-AS",259
AS9829,"National Internet Backbone",178
AS12880,"Information Technology Company (ITC)",277
AS8708,"RCS & RDS",270
AS8151,"Uninet S.A. de C.V.",282
AS9329,"Sri Lanka Telecom Internet",334
AS7738,"Telemar Norte Leste S.A.",183
AS3269,"Telecom Italia",209