研究人员最近发现一个影响Linux系统的加密货币挖矿恶意软件。该恶意软件融合了rootkit组件来隐藏恶意进程以对抗反病毒软件的检测。受感染的系统只表现出性能问题,恶意软件还可以更新和升级自己和配置文件。

Unix和类unix操作系统的权限模型使恶意软件很难以特权运行。研究人员发现的加密货币挖矿恶意软件的感染向量是一个恶意的、第三方或被黑的插件。安装后会授予恶意软件admin权限,这样恶意软件就可以以授予应用的权限运行。其他Linux加密货币挖矿恶意软件工具也使用类似的向量作为攻击入口。

图1: 加密货币挖矿恶意软件感染链

技术分析

初始的文件会连接Pastebin,并下载一个文件。下载的文件是一个shell脚步,会保存为/bin/httpdns。然后会创建一个定时任务每小时运行一次/bin/httpdns 。最后执行shell脚步。/bin/httpdns含有一个可以连接和下载另一个base64编码的文本文件的脚本。解码的新文件也是一个由/bin/httpdns执行的shell脚本。

图2: shell脚本下载和保存过程

脚步执行后,首先会检查恶意软件是否有更新。链接中含有字符串noupdate,表明当前没有恶意软件更新。如果有更新,shell脚步就会调用echocron函数,该函数负责下载和创建计划任务来执行恶意软件更新。

图3: shell脚本调用echocron的代码段

如果当前没有可用更新,shell脚本就会继续运行调用负责下载真实恶意加密货币挖矿机的downloadrun函数,如图4所示。虽然URL的扩展是.jpg文件,但真实的文件是一个ELF的可执行文件,会保存为/tmp/kworkerds

在下载和执行加密货币挖矿恶意软件后,shell脚步就会调用init函数,下载初始化文件。下载的文件会保存为/usr/sbin/netdns,然后以服务的形式安装,最后调用echocron函数。

图4: 恶意软件downloadrun(上)init(中)downloadrunxm(下)函数代码段

然后shell脚本会休眠10秒,然后检查是否在56415端口建立了连接。如果没有建立连接,就执行downloadrunxm函数。该函数是在downloadrun函数不能正常工作的情况下,下载另一个加密货币挖矿机(Coinminer.Linux.KORKERDS.AA)。

图5: 恶意软件top函数

安装rootkit组件

恶意软件的更新版本有一个top函数,负责下载和安装rootkit。首先检查受感染的机器上是否安装了rootkit。如果没有安装,就下载和安装rootkit,然后保存为/usr/local/lib/libdns.so

进程监视工具可以检测到加密货币挖矿机的存在。图6是htop检测到受感染的机器上/tmp/kworkerds的情况。图6中,rootkit组件隐藏了可能造成资源消耗比较多的进程。

图6: htop工具检测挖矿机进程 /tmp/kworkerds(上);rootkit安装后进程变得不可见(下)

加密货币挖矿机恶意软件的rootkit组件是公开代码的修改版。安装后,所有名为kworkerds的进程都会对进程监控工具不可见。因为进程监控工具是通过访问位于/proc/{PID}目录的文件来工作的。拦截对进程/proc/{PID}目录的访问后,就不能通过常用的方法进行检测了。

Rootkit会hook libc库的readdirreaddir64应用程序接口。进程监控工具常用这些API来获取信息。
通过预加载内存中的文件,rootkit可以用rootkit的readdir文件替换正常的readdir文件来覆盖正常的库文件(图7)。一旦API被hook,进程监控工具就不能看到名为kworkerds的进程了。

图7: rootkit隐藏加密货币挖矿机进程的代码段

安全最佳实践

如果rootkit没有成功隐藏高CPU利用率和加密货币挖矿机创建的连接,可以通过编辑一些代码和重塑现有代码或工具来改善其隐藏性。恶意软件有了更新的能力后,运营者就可以增加更多的函数来使恶意软件获取更多盈利。加密货币挖矿恶意软件会给Linux系统带来明显的性能问题,因为是对运营商业服务的服务器、工作站、应用开发框架、数据库和手机设备。IT和系统管理员可以应用以下安全实践来应对安全问题:

https://www.trendmicro.com/vinfo/us/security/news/cybercrime-and-digital-threats/cryptocurrency-mining-malware-targets-linux-systems-uses-rootkit-for-stealth

源链接

Hacking more

...