一、概述
从今年5月底开始,绿盟科技伏影实验室不间断地捕获到一些特征及行为相似的ELF样本,通过对这批样本持续的跟踪与分析,最终确认这些样本隶属于一个新的botnet家族,依据样本运行时特点,我们将它命名为lolfme。lolfme在5,6,7,8这四个月里有过多次版本的更迭,与此同时,我们也见证了它从最初的测试版本到功能趋于完善的发展过程。
lolfme开发初期的样本运行时输出:“md5hashguys botnet testing”,通过溯源分析,我们发现类似的名称在Keksec往期攻击活动中也曾使用过,但在lolfme后期的版本中逐渐消除了这些信息。
lolfme 的代码由Gafgyt修改而来,但与传统的Gafgyt相比又有许多新的变化,最新版本的lolfme主要有以下特点:
- 存在大量反调试代码。
- 自定义了一套简单的算法,对字符串,指令等信息加密存储,对应的解密函数名:“watudoinglookingatdis”。
- 回传指令的解析方面也具有较强的隐蔽性,用了两套解密算法,先是对回传数据进行解密,然后对本地硬编码数据用另一套算法进行解密,最后匹配对应指令。
- 自定义攻击指令,共计达到20条,功能相对完善。
1.1 版本梳理
目前捕获到的样本分为多个版本,通过版本间的变化我们可以推断lolfme是一个不断更新与发展的僵尸网络,近期捕获到样本信息如下:
1.2 组织关联
lolfme开发初期的样本运行时输出信息如下:
我们注意到该样本在运行时会输出“md5hashguys botnet testing”,通过溯源分析,我们发现类似的名称在Keksec往期攻击活动中也曾使用过。今年六月初的时候,我们在“Keksec团伙运营网络新增三个僵尸网络家族”一文中披露过该组织新增成员ur0a,直至今日,我们依然可以从Youtube上找到相关的视频,视频由名为“itz UR0A”的用户创建。
Youtube 视频中包含“UR0A”的 Discord 账号信息,当然,对于这一点我们习以为常,Keksec组织素来高调,他们习惯在被攻陷机器感染日志中留下组织签名及联络方式,UR0A在Ryuk Botnet、Samael Botnet(Keksec新作,与Ryuk Botnet基于同一架构)以及Simps Botnet中都曾留下过类似的组织签名。
国外安全研究员Pierluigi Paganini也曾描述过相关细节,依据他的描述,UR0A的Discord账号中包含了与僵尸网络及DDoS相关的话题。在聊天对话中识别出一个名为gay.x86二进制文件,有趣的是在样本执行时,显示信息恰好是“the system is pawned by md5hashguy”,这里复用该研究员所提及的样本运行时截图:
同时,我们注意到样本中存在“/Game/Mods/TheCente”,“TSource Engine Query”,“XD!!lol”等字符串,这些都很容易让我们联想到该僵尸网络的主要攻击目标极有可能是游戏服务器。
二、样本分析
样本基本信息:
MD5:5d3938c5cbdfb31f0d4229e9306cbd9b
ELF 32-bit LSB executable, ARM, version 1 (ARM), statically linked, with debug_info, not stripped
2.1 反调试
样本入口处有大量反调试代码,比如通过getenv检测环境变量,利用getppid来进行探测,检测gdb,strace,禁用watchdog等等。
lolfme在初期测试版本中并无反调试代码,随着版本的升级,反调试代码逐渐增多。同时,我们注意到lolfme 反调试代码部分输出信息“XD!!lol”颇为有趣,“XD”和“lol”经常出现在欧美游戏当中,“XD”表示“用邪恶的眼神看着对方”,“lol”则表示“笑得很开心的样子”,是网络常用的缩略语。
2.2 解密算法
大量的数据信息加密存储,并且被加密的信息量随着版本的更迭不断增加,隐蔽性逐步增强。
解密算法C++实现:
#include<stdio.h>
#include<windows.h>
int __fastcall watudoinglookingatdis(char a1[])
{
int v1=0;
do
{
if (!*(BYTE *)(v1 + a1))
break;
*(BYTE *)(v1++ + a1) -= 3;
} while (v1 != 100);
printf(“%s”,a1);
return 0;
}
int main()
{
char a[] = “2ghy”; //此处输入待解密字符串
watudoinglookingatdis(a);
system(“pause”);
return 0;
}
2.3 Telnet扫描&漏洞利用
telnet扫描模块经历多次的修改,最初的v1版本中未能全部实现,仅有telnet_kill函数,最新版本中该模块功能趋于完善。
telnet扫描模块会从socket返回的数据中查找“ogin”(login),“assword”(password),“ncorrect”(incorrect)等标记,至于查找数据为什么都少了一位不清楚,但这种查找方式与传统Gafgyt相同。
漏洞利用模块在多次版本更迭中没有新的变化,所利用漏洞依然是Gafgyt的标配CVE-2017-17215。
2.4 攻击指令
样本共计有多达20条攻击指令,主体功能依然是发起DDoS攻击,同时相较于Gafgyt又有了许多新的功能点,比如使受感染设备成为下载服务器,tcpark等等,攻击指令的参数通过加密的方式存储,这样可以达到规避检测的效果:
上线包同样以加密方式存储,解密后发送给远程服务器:
解密后上线包:0x1\0x1\0x5\0x7\0x9\0x0
对于C2返回数据,先经过解密函数decrypt_for_recv()处理:
最后匹配这些数据中不同字符串执行不同功能,攻击指令整理如下:
原始数据 | 解密后 | 功能 |
SLQJ | PING | 探测 |
QLJSRQJ | NIPONG | 探测 |
udzxgs | rawudp | UDP Flood |
xgs | udp | UDP Flood |
xgsyvh | udpverse | UDP Flood |
xgse|sdvv | udpbypass | UDP Flood |
xgsryk | udpovh | UDP Flood |
xgskh{ | udphex | UDP Flood |
xgsudqg | udprand | UDP Flood |
xgsdun | udpark | UDP Flood |
wfsdfn | tcpark | TCP Flood |
vwg | std | STD FLOOD |
udqjhvfdq | rangescan | 地址扫描 |
vkhoo | shell | 执行shell命令 |
kwwsvwduw | httpdstart | 受感染设备成为下载服务器 |
uvkhoo | rshell | Reverse shell |
nloodwwn | killattk | kill进程 |
erwnloo | botkill | exit |
wfsrii | tcpoff | tcp kill |
wfsrq | tcpon | tcp on |
三、总结
从5月份初次发现lolfme僵尸网络的测试版本至今已过去多个月,最初的样本涵盖了x86-64,Intel 80386,ARM等多个CPU架构,近期发现的样本以ARM CPU架构的居多,在这段时间里lolfme经历了多次版本的更迭,功能趋于完善,隐蔽性也在不断增强,虽然至今尚未发现与该僵尸网络相关的攻击事件发生,样本量也并不是很多,但面对一个长时间持续更新与升级,功能相对完善的僵尸网络,我们有理由给予足够的重视,伏影实验室将持续追踪lolfme僵尸网络及其背后运营者Keksec组织的活动。
四、检测规则
rule lolfme
{
meta:
version = “1.0”
strings:
$str1 = “#fuckwhitehats” ascii wide
$str2 = “XD!!lol” ascii wide
$str3 = “lol f me” ascii wide
$str4 = “watudoinglookingatdis” ascii wide
$str5 =”TSource Engine Query”
$pass1 = “3{4_3{4_3{8_3{:_3{<_3{3” ascii wide
$pss2 = “xgsyvh” ascii wide
$pass3 = “udqjhvfdq” ascii wide
$pass4=”2ghy” ascii wide
$vul=”DeviceUpgrade_1″ ascii wide
condition:
3 of them
}
五、IOC
a940696207db50e62ed931717294dd7a
38745582dc7eaa619959afd6b415bbd6
73ee2e924f654266022a3f61ccd68d59
95e98ea981f26eba35a79a57b84255cb
722de277cf74f8ddc8dfd9025ceb84bc
dff43814c8491106ad81d836283eaccd
f5f0930c369be3f6fac3de06d4fc5f3e
88f6156b18ef75033f3cef5f7a741e3e
5d3938c5cbdfb31f0d4229e9306cbd9b
796bcc8eb282f33d7d506cb06ee8702c
936a0640a475cfd4ad1c604ea1226f0a
ab0c09a31bc3d6ef069c150f3e2669bf
4369b5f7e87492e67ac280e0546e140d
584d777365ff2d449b0be9c458ce0c6b
b0a58793e9658e19e42dac035ffe6da9
a4afea5bb6083d2a48204d2cce7aa693
0x1\0x1\0x5\0x7\0x9\0x0
lolfme
2fsxlqir
Lqir
2surf2
3{4_3{4_3{8_3{:_3{<_3{3
/root/#fuckwhitehats
XD!!Lol
192.3.15.100
关于伏影实验室
研究目标包括Botnet、APT高级威胁,DDoS对抗,WEB对抗,流行服务系统脆弱利用威胁、身份认证威胁,数字资产威胁,黑色产业威胁及新兴威胁。通过掌控现网威胁来识别风险,缓解威胁伤害,为威胁对抗提供决策支撑。
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。