执行摘要
2020年10月26日,我们捕获到一个Gafgyt家族DDoS变种开始利用Seowon SlC 130路由器RCE漏洞进行传播。不同于往常,僵尸网络通常在大规模投递样本前进行小规模的漏洞验证,本次捕获到的变种没有任何征兆即爆发了大规模投递样本的情况。该变种VirusTotal检出率为0,共包含12种DDoS方式,除常规的反射攻击方式(SSDP等)外,还包含独特的DDoS方式(STUN等)。本文将通过脆弱性、暴露情况以及威胁分析三个方面,分析本次捕获到的攻击。
脆弱性分析一节,我们结合互联网公开PoC及捕获到的攻击,分析了攻击者攻击的手法。发现攻击者使用的PoC极有可能来自Exploit-DB。
暴露情况分析一节,我们结合绿盟威胁情报中心,发现2020年至今,互联网中暴露1124台Seowon SLC-130路由器,主要位于美国。
威胁分析一节,我们还原了针对Seowon SlC 130路由器攻击的时间线,并分析了攻击源和样本情况。发现攻击源只有一个,位于美国布法罗,且仅在2020年10月26日活动,其余时间段暂未捕获,但也应引起重视,以防该攻击再次爆发。样本的VT检出率为0,并包含独特的DDoS手法和User-Agent伪装手法。
此次攻击事件中,攻击者入侵设备所使用的漏洞、DDoS攻击方式、攻击特征都在推陈出新,给防护带来了新的挑战。跟进Exploit-DB公布的RCE漏洞并将其整合进自己的武器库,已经成为僵尸网络的常规行为(尤其有一定开发能力的变种,非常热衷于扩大自己的武器库并不断加入新的攻击手法)。设备厂商,除关注、修复CVE、CNVD等平台的漏洞外,也应重点关注Exploit-DB上的RCE漏洞,及时修复漏洞,以免造成更严重的损失。
一、脆弱性分析
本次我们捕获到的攻击,漏洞利用详见公开PoC(Exploit-DB. Seowon SlC 130 Router – Remote Code Execution. https://www.exploit-db.com/exploits/48759),攻击过程分为三步:
第一步,硬编码脆弱性验证。攻击者发送一条HTTP POST请求,PATH_INFO为:/cgi-bin/login.cgi,弱口令admin/admin位于Body中。
第二步,投递下载器。攻击者发送一条HTTP POST请求,PATH_INFO为:/cgi-bin/system_log.cgi,恶意载荷位于Body的pingIpAddr字段中。
第三步,通过下载器下载并执行二进制样本。下载器采用Bash编写,如图 1.1 所示。
图 1.1 针对Seowon路由器的样本下载器
我们发现攻击者投递样本的过程与Exploit-DB公布的漏洞利用基本一致,说明此次攻击PoC的来源极有可能是Exploit-DB。跟进Exploit-DB公布的漏洞利用并将其整合近自己的武器库,已经成为僵尸网络的常规行为。
二、暴露情况分析
通过使用绿盟威胁情报中心对Seowon SLC-130路由器指纹进行搜索,共发现1124条记录(2020年至成稿),暴露的Seowon SLC-130路由器国家分布情况如图 2.1 所示,可以看出暴露的地区以美国为主。
图 2.1 暴露的Seowon SLC-130路由器国家分布情况(2020年1月至10月)
三、威胁分析
3.1 时间线
2020年8月21日:Exploit-DB公布了Seowon SlC 130路由器的远程代码执行漏洞。
2020年10月26日:利用该漏洞投递样本的行为首次出现并呈现爆发态势。
3.2 攻击源及攻击趋势
我们发现,攻击源只有一个,IP:172.245.7.141,位于美国布法罗,说明攻击者使用了固定的主机进行全网探测。同时我们统计了攻击者的攻击趋势,此次攻击仅在2020年10月26日活动,其余时间段暂未捕获。
3.3 样本分析
我们捕获到的攻击样本为Gafgyt家族变种,同时引入了其他蠕虫家族(如Satori)的一些功能模块,本文重点分析的样本,其投递URL为http://172.245.7.141/bot.armeb,SHA256见表 3.1 。表中同时列出了我们通过关联分析得到的其他样本。
表 3.1 部分样本源文件名与SHA256
文件名 | sha256 |
w | 639cf87bc97dd547e29a64635b3eb0701e2ac84cfb46d46684b7e750b346f411 |
bot.armeb | c8ca7723a28061a1894bf8cbeb311b4e748a70b9527d78568003240b72282b44 |
bot.arm5 | caf01a7da4c28c9c3c9a7fb340a5d56ecc0ab6e8cb2ef590b0b2b4ea0c625d70 |
bot.arm7 | 12924b0f50bcfb7487aade4c7c9fd426505648bcaddee7d1736b4c0a588b9fe4 |
由于此样本使用了非常冷门的架构(ARM Big-Endian),且采用变种UPX加壳,其VT检出率为0,如图 3.2所示 。
图 3.1 bot.armeb样本的VT检测结果
我们对脱壳后的样本进行分析,样本运行后会输出固定字符串9xsspnvgc8aj5pi7m28p,这个特征在其他Gafgyt样本中也曾出现,主要用于扫描模块判定样本执行情况。
图 3.2 样本中包含的特征字符串
通过分析我们发现,投递样本的服务器172.245.7.141同时也是其C&C地址。这个地址多处硬编码于样本中。样本通过4321端口接受控制指令,通过6666端口上报DDoS攻击任务执行状态,通过7685端口动态获取telnet爆破所需的密码表。拥有非常多的功能与交互。
图 3.3 样本建立C&C连接部分逻辑
目前,样本仅包括两个功能,Telnet扫描传播、接受指令进行DDoS攻击。其中,Telnet扫描功能除了通过内置的密码表进行暴力破解外,还会连接C&C服务器的7685端口动态获取密码表并合并到内置的库中。但我们模拟协议与C&C进行交互后,发现攻击者目前并没有下发任何数据,端口虽然开放,但返回数据为空。
图 3.4 样本动态获取密码表部分逻辑
Telnet登录成功后,样本通过两种方式尝试投递样本,一是通过设备内busybox自带的wget与tftp插件从172.245.7.141下载样本,二是识别设备/bin/busybox的ELF文件头,根据不同架构将样本本身嵌入的下载器ELF投递到设备并执行。样本中包含8个不同架构的下载器,这些样本非常小巧,每个大小只有1k左右,通过HTTP协议连接172.245.7.141进行下载。
图 3.5 样本中内嵌的下载器ELF
投递样本时尝试的URL列表:
• http://172.245.7.141/bot.armeb 本文分析的主要样本。
• http://172.245.7.141/bot.arm4 无法下载,404
• http://172.245.7.141/bot.arm5 SHA256: caf01a7da4c28c9c3c9a7fb340a5d56ecc0ab6e8cb2ef590b0b2b4ea0c625d70
• http://172.245.7.141/bot.arm6 无法下载,404
• http://172.245.7.141/bot.arm7 SHA256: 12924b0f50bcfb7487aade4c7c9fd426505648bcaddee7d1736b4c0a588b9fe4
• http://172.245.7.141/bot.aarch64 无法下载,404
样本的第二个功能为DDoS攻击,共12种。除了常规的UDP(NTP、mDNS、LDAP、Memcached、SSDP)反射、TCP/HTTP floods之外,还包含了多种非常规的攻击方式,比如利用STUN(NAT穿透服务)协议进行攻击,还包括一种从随机端口无规律攻击、可由服务端控制攻击强度的特殊UDP攻击方式,其C&C命令码为0x0F。
图 3.6 样本包含的DDoS攻击方式
除此之外,比较有趣的另一点是,样本中HTTP Flood所采用的User-Agent伪造了多款家庭游戏主机,包括WiiU、PS4、3DS。与平常伪造浏览器的样本不同。
图 3.7 HTTP Flood伪造的User-Agent列表
3.4 IoC
URLS:
http://172.245.7.141/bot.armeb
http://172.245.7.141/bot.aarch64
扫描源:
185.163.46.6
样本名及SHA256:
文件名 | sha256 |
w | 639cf87bc97dd547e29a64635b3eb0701e2ac84cfb46d46684b7e750b346f411 |
bot.armeb | c8ca7723a28061a1894bf8cbeb311b4e748a70b9527d78568003240b72282b44 |
bot.arm5 | caf01a7da4c28c9c3c9a7fb340a5d56ecc0ab6e8cb2ef590b0b2b4ea0c625d70 |
bot.arm7 | 12924b0f50bcfb7487aade4c7c9fd426505648bcaddee7d1736b4c0a588b9fe4 |