剑指物联网安全,揭秘首个物联网攻击组织-FreakOut of KekSec
The following article is from 关键基础设施安全应急响应中心 Author CISRC
全文共4063字,阅读大约需要9分钟。
FreakOut事件概述
2021年1月上旬,CNCERT物联网威胁分析团队通过实时运转的数据平台捕获到一种未知恶意程序out.py,它的典型传播域名为gxbrowser.net。绿盟科技伏影实验室对该程序样本、传播Payload等进行深入研究,并与开源情报进行比对,确认它是一种新型僵尸网络家族。
1月中下旬,多家国内外公司也发现了这个恶意程序,由于它的名称为out.py,且关联到的攻击者代号为Freak,因此该家族被命名为FreakOut。该恶意程序在传播中使用了3种漏洞,分别是:
CVE-2020-28188(TerraMaster TOS 未授权 RCE);
CVE-2020-7961(Liferay Portal 代码执行漏洞);
CVE-2021-3007(Zend Framework反序列化漏洞);
其中CVE-2021-3007于2021年1月3日左右公开,很快就被黑产团伙利用(CNCERT监测到该漏洞被利用的最早日期为1月7日)。
通过持续分析,我们逐渐挖掘出了该家族背后的运营者以及售卖者。本文将详细描述FreakOut相关信息的关联过程,以及其背后组织的发展过程。
一、FreakOut组织分析
1.1 攻击者梳理
经溯源发现,FreakOut并非是攻击者于当下从零构建的恶意家族,而是经过多年修改变化而得。攻击者近期使用的一个版本necro.py,保留了注释信息,并披露了僵尸网络的名称与攻击者的代号,如下图所示:
这个躲在FreakOut事件背后的攻击团伙有着多年历史,而FreakOut作为Python编写的DDoS木马,只是该攻击团伙开发或使用过大量黑客工具的冰山一角而已。
早在2014年,攻击者就以Fl0urite为用户名,在Hackthissite论坛上讨论使用Python编写DDoS木马,并在2015年于HackForums论坛中以相同用户名发帖,提及了N3cr0m0rph IRC僵尸网络,可见当时已经初具规模。之后,因为各项变动,攻击者就很少使用Fl0urite这个账号了。
此外,攻击者在Stackoverflow上注册了用户N3Cr0M0rPh,其发布的帖子中指向的Pastebin页面上存放了与僵尸网络相关的工具和木马代码,仍然处于活跃状态。
另外我们在梳理本次事件的攻击技术时,发现了该组织使用的一种新型间接命令执行技术并对其进行了扩展研究,以下将对该技术进行详细分析。
1.2 组织轨迹梳理
通过对Pastebin共享的文件进行分析,我们获取到了攻击者与其背后的组织曾使用过的多个ID:
KekSec |
le_keksec |
sudoer |
Fl0urite |
Freak |
SynthMesc |
Milenko |
Binary |
B1NARY |
B1narythag0d |
PopulusControl |
Salamander;Squad |
Kek Security |
我们基于这些ID以及木马程序中发现的其他信息,收集了相关信息并进行了关联整理。下图显示了部分信息的联系过程:
通过以上关联过程,我们最终确认FreakOut开发者曾经在以下三个组织中活动:
组织曾用名 | 组织账户 | 活动时间 |
Salamander Squad | SalamanDDosers | 2014年底 |
PopulusControl | freakcontr0l | 2014年底-2016年一季度 |
Kek Security | KekSec | 2016年一季度-至今 |
在活跃时间上,Salamander Squad、PopulusControl和Kek Security三个组织呈现了明显的迭代关系,这可能与组织主要开发者的动向有关。
同时,我们确认了以上组织的部分组成人员:
组织成员 | 成员别称 | 备注 |
Freak (代码中自称) | Fl0urite | 主要开发者 |
Binary (代码中自称) | B1NARY | PopulusControl时期主要开发者之一,后从PopulusControl独立 |
Shitnbitch (BullyWiiHacks论坛账户名) | PopulusControl时期成员 | |
Thedetonator (BullyWiiHacks论坛账户名) | PopulusControl时期成员 | |
Shadow (BullyWiiHacks论坛账户名) | PopulusControl时期成员 |
汇总以上信息,我们可以确定FreakOut背后组织的发展轨迹。
FreakOut的主要开发者Freak,早在2014年就在一个名为Salamander Squad的DDoS僵尸网络运营团体中活动。此人不久后加入(或创立)了昵称为Binary的开发者所在的PopulusControl组织,继续进行DDoS僵尸网络的运营活动。
PopulusControl时期,组织成员在一个名为BullyWiiHacks的黑客论坛活动,并通过IRC频道保持联系。BullyWiiHacks的注册用户shitnbitch、thedetonator、shadow等人也是PopulusControl组织的成员。
2014年底,Binary声称将离开PopulusControl组织自立门户,并带走了部分成员。此后PopulusControl的开发任务主要由Freak负责。Freak在此期间更新了称为CancerNet与称为n3cr0m0rph的python IRC bot程序的多个版本,这些木马程序是FreakOut木马的前身。
2016年,Freak加入(或创立)了名为KeK Security的黑客组织。该组织除继续运营僵尸网络外,还进行了一些高调的黑客行动,包括入侵公共广告牌(https://hacked.wtf/hacker-news/keksec-on-billboard-security/2019/09/17/)等,并在推特上炫耀其入侵结果。下图显示了一则Keksec将杀软McAfee创始人John McAfee的推文搬运到广告牌上,并高调转发John McAfee对于此事表态的推文。
作为KeK Security的主要开发者之一,Freak制作了多个开源IoT木马的变种并投入使用,这些变种程序通常被命名为keksec.[platfrom],如keksec.x86和keksec.arm7。
相关组织的页面信息如下:
1.3 组织商业行为
Freak及其所在的Kek Security组织主要通过销售黑客软件以及销售DDoS资源的方式获利。Freak及其相关组织的售卖活动,可在其论坛活动中找到蛛丝马迹。
2020年,Hackforums论坛中一个名为Freak_OG的用户,曾在2020-06-17发帖,声称提供免费私人挖矿安装包,并在2020-12-06试图以25美元的价格出售其静默挖矿工具:
该挖矿工具使用XMRIG v6.6.2,包含多种特性,支持多种方式付款。为了推销工具,该用户还贴出了一些截图来证明可以获得金钱收入。
2020-12-01,Freak_OG发帖,推销一款名为DarkHTTP Loader的僵尸网络木马,售价50美元。按照说明,该木马提供了一个控制面板,并实现了多种功能,包括内网传播、文件窃取、USB传播、基于对SMB/MSSQL/MYSQL协议暴力破解实现的蠕虫功能。
此外,Freak_OG还以75美元的价格售卖一款名为DarkIRC的Windows木马。该木马通过WebLogic漏洞进行传播,可进行DDoS攻击、键盘记录、下载可执行文件、执行Shell命令、盗窃浏览器凭据和劫持比特币交易等恶意行为。
不过,该组织显然不善于隐藏自身,并受到研究人员的关注。在一篇帖子中,该用户对研究人员曝光其行为的举动进行吐槽,并主动承认自己不仅售卖木马,还发动过攻击行为。
这些信息表明,Kek Security一直在积极寻求自身资源的变现方法。
1.4 其他僵尸网络家族关联
除了FreakOut这样的Python DDoS家族外,Freak及KeK Security还运营了其他僵尸网络家族,并公用C&C基础设施。
信息显示,该组织使用了IRCBot和Tsunami这两个IRC家族进行DDoS活动,并曾使用Freak、keksec和kek这类名称作为IRC频道名,最大可容纳1214个用户,且大部分来自美国。
Kek Security组织还运营着一个被我们称为HybridMQ-keksec的木马程序构建的僵尸网络。HybridMQ-keksec是组合Mirai及Gafgyt的源代码并进行修改后得到的DDoS木马程序,主要使用华为HG532路由器命令注入和ThinkPHP远程命令执行等漏洞进行传播。
此外,部分HybridMQ-keksec木马程序搭载了新功能,可检查当前接收到网络中的原始TCP流量,若涉及HTTP、FTP和SMTP服务,则会将端口和数据信息回传至C&C。这种操作在Linux/IoT平台上DDoS家族中比较罕见,使得攻击者可以在利用受害者主机进行DDoS攻击之外,还可窃取受害者主机中非加密通信数据为后续的可能的内网渗透或定向攻击提供便利。
二、FreakOut样本分析
本次事件中出现的FreakOut样本是典型的python IRC bot木马程序。该木马会连接硬编码CnC中的IRC频道,接收CnC下发的指令进行信息收集、DDoS攻击、shell交互、ARP嗅探等攻击行为。该木马还带有三个漏洞载荷,可以攻击带有漏洞的web server以进行横向传播。
为了更好展示代码,下文截图中的部分代码进行了去混淆处理。
2.1 持久化及对抗
FreakOut木马主要通过以下操作实现持久化:
1、fork生成daemon实现进程守护:
2、通过更名为boot.py并将自身写入rc.local实现开机启动:
FreakOut木马一般带有以下对抗行为:
1、通过异或加密及zlib压缩实现了关键信息的保护:
该异或加密对应以下解密算法:
2、通过变量及方法名混淆在某种程度干扰分析:
3、运行实例唯一化及命令行检测:
该样本通过使用抽象UNIX域套接字,并绑定特殊关键字postconnect_gateway_notify_lock实现单例化。
2.2 漏洞传播
FreakOut木马使用CVE-2020-28188、CVE-2021-3007、CVE-2020-7961三个漏洞,分别针对TerraMaster TOS、Liferay Portal和Zend Framework进行横向传播。值得注意的是CVE-2021-3007是出现在2021年1月的反序列化漏洞,与FreakOut木马的在野出现时间非常接近。
1、 CVE-2020-28188
该漏洞是由“ makecvs” PHP页面(/include/makecvs.php)中“ event”参数缺少输入验证引起的。这允许未经身份验证的远程攻击者注入OS命令,并使用TerraMaster TOS(4.2.06之前的版本)获得对服务器的控制。
2、CVE-2021-3007
该漏洞是由对象的非安全反序列化引起的。在高于Zend Framework 3.0.0的版本中,攻击者滥用Zend3功能从对象加载类,以便在服务器中上载和执行恶意代码。可以使用“ callback”参数上传代码,在这种情况下,该参数将插入恶意代码,而不是“ callbackOptions”数组。
3、 CVE-2020-7961
该漏洞是Liferay Portal(在7.2.1 CE GA2之前的版本中)通过JSONWS进行的Java解组漏洞。编组类似于序列化,用于与远程对象(在本例中为序列化对象)进行通信。利用此漏洞,攻击者可以提供一个恶意对象,该恶意对象在未经编组时可以允许远程执行代码。
该漏洞payload经反序列化会访问http://gxbrowser.net:8004/t,下载名为t的java文件,由下图可知漏洞利用成功后会获取out.py,并更名执行。
2.3 ARP嗅探及投毒
FreakOut实现了ARP嗅探功能,会将自身设置为中间人,排除部分源及目的端口(1337/6667/23/443/37215/53/22),将接收信息转发到服务器1337端口。
该功能的具体实现见下图:
2.4 通信内容
该木马使用IRC协议与C&C通信,上线信息示例如下:
样例:
NICK [HAX|Linux|x86_64|32]aYXzMIcqFqg
释义:
[HAX|操作系统|架构|CPU数量]8-12个随机字母
样例:
USER [HAX|Linux|x86_64|32]aYXzMIcqFqg gxbrowser.net localhost: aYXzMIcqFqg
释义:
此命令在NICK基础上新增服务器地址及硬编码字段“localhost: ”
样例:
JOIN #update N3Wm3W
释义:
硬编码频道及聊天室密码
2.5 指令与功能
在CnC的控制下,FreakOut木马可以进行信息收集、DDoS攻击、shell交互、ARP嗅探等攻击行为。
命令 | 功能 |
.udpflood | udp泛洪 |
.synflood | syn泛洪 |
.tcpflood | tcp泛洪 |
.slowloris | slowloris泛洪 |
.httpflood | http泛洪 |
.loadamp | 下载反射节点列表 |
.reconnect | 重连服务器 |
.amp | 反射式放大攻击,支持{'ntp': 123, 'ssdp': 1900, 'snmp': 161, 'dns': 53} |
.scanner | 开启漏洞扫描器 |
. scannetrange | 通过指定IP段/掩码,端口进行漏洞扫描 |
.clearscan | 扫描状态库清空 |
.scanstats | 发送扫描状态 |
.revshell | 反弹shell |
.sniffer | ARP嗅探及投毒 |
.shell | shell交互 |
.download | 下载文件 |
.execute | 执行文件 |
.killbyname | 通过名称结束进程 |
.killbypid | 通过pid结束进程 |
.disable | 停止flood,扫描等功能 |
.enable | 开始flood,扫描等功能 |
.getip | 获取受害者ip |
.ram | 获取机器内存总大小 |
.info | 采集受害者机器架构,系统,版本,CPU型号等详细信息 |
.repack | 重新压缩木马关键信息,并采用随机生成字符串替换现有变量,方法等 |
2.6 版本迭代
FreakOut在2020年年末到2021年年初期间至少更新过3个在野版本。
第一个版本necro.py,与out.py有着相似的框架,代码可读性强,是out.py的前身。
第二个版本out.py,即前文分析的版本,在necro的基础上大大增加了代码混淆,并增加了TCP Flood和漏洞利用。
第三个版本benchmark.py,在out的基础上增加了DGA域名设置,使得所有生成的C&C皆以xyz为顶级域名。
三、监测数据
根据CNCERT物联网威胁分析团队的监测数据,发现FreakOut相关的攻击服务器IP地址532个,地域分布如下图所示:
被这些IP攻击的设备地址有35万个,主要位于美国(48.5%),地域分布如下图所示:
其中位于境内的被攻击的IP地址有1万5409个,主要位于台湾地区(32.2%)、香港地区(18.8%)、浙江(13.5%)、北京(11.1%)、广东(6.3%),省市分布如下图所示:
四、FreakOut IoC
Sha256:
C&C:
关于网络安全应急技术国家工程实验室
CNCERT网络安全应急技术国家工程实验室是于2013年由发改委批复成立的、由国家互联网应急中心(CNCERT)运营的国家级实验室。实验室致力于物联网及工控网安全领域的基础理论研究、关键技术研发与实验验证,开展物联网及工控网相关的安全监测、态势感知、信息通报与应急处置工作,向政府主管部门和行业用户提供威胁情报共享、态势信息通报等服务,为国家关键基础设施的建设和运行提供网络安全保障。
关于伏影实验室
伏影实验室专注于安全威胁与监测技术研究。 研究目标包括僵尸网络威胁,DDoS对抗,WEB对抗,流行服务系统脆弱利用威胁、身份认证威胁,数字资产威胁,黑色产业威胁及新兴威胁。通过掌控现网威胁来识别风险,缓解威胁伤害,为威胁对抗提供决策支撑。