FBot 新进展

【更新：2019年12月4日】近期我们多次收到针对本blog的询问。我们决定将一些事实补充列出如下：


——Kenneth Crurrin Schuchman，绰号 Nexus-Zeta，一名21岁的年轻人，已经于2019年9月3日向美国阿拉斯加区域法庭认罪。Schuchman的认罪书表明，Schuchman及其同谋者通过感染大批设备，创建了一系列僵尸网络，包括 Satori，Okiru，Masuta，Tsunami，Fbot，并利用这些僵尸网络的DDoS破坏力牟利；

——本 Blog 中涉及到的脆弱性并非发生在 Hisilicon。通过后续分析以及安全社区交流，我们确认该脆弱性发生在华为海思的供应链下游厂商。为了保护最终客户的利益，我们决定不公开脆弱性细节、攻击者使用的载荷或者具体厂商名字；

——华为 PSIRT 对我们披露的安全事件，作出了负责任的响应；


读者在继续阅读本blog时，应当明确blog和样本中出现的 Hisilicon字样，源自Schuchman及其同谋者的错误判断。实际上整个IoT产业链条庞杂，其体量远超攻击者或者任何单一从业人员能够理解的范围。只有产业界和安全社区的通力合作，才能增强产业链的安全性。


【更新：2019年2月21日】 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被感染。


图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大致的感染流程。


图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的相关代码：






fbot.arm5.u


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


资源加密


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


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





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





将第一行输出进行截断操作后就得到了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），汇报的相关代码及协议格式如下图所示：





用于DDoS攻击


在我们之前披露的文章中

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






总结


我们建议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