安全研究 | Linux 遭入侵,挖矿进程被隐藏案例分析

本文作者:Fooying、zhenyiguo、murphyzhang

一、背景

云鼎实验室曾分析不少入侵挖矿案例,研究发现入侵挖矿行为都比较粗暴简单,通过 top 等命令可以直接看到恶意进程,挖矿进程不会被刻意隐藏;而现在,我们发现黑客开始不断使用一些隐藏手段去隐藏挖矿进程而使它获得更久存活,今天分析的内容是我们过去一个月内捕获的一起入侵挖矿事件。

二、入侵分析

本次捕获案例的入侵流程与以往相比,没有特殊的地方,也是利用通用漏洞入侵服务器并获得相关权限,从而植入挖矿程序再进行隐藏。

通过对几个案例的分析,我们发现黑客主要是利用 Redis 未授权访问问题进行入侵,对于该问题的说明可以参考我们过去做的一些分析:

https://mp.weixin.qq.com/s/inazTPN5mHJYnt2QDliv8w

在服务器被入侵后,首先可以明显感觉到服务器的资源被占用而导致的操作迟缓等问题,通过一些常规手段可以发现一些异常信息,但又看不到进程信息:

通过 top 命令,可以看到显示的 CPU 使用率较低,但 ni 值为 100 ;同时通过 /proc/stat 计算 CPU 使用率又基本是 100% 。

通过 netstat 查看端口监听情况,也可以看到异常的连接。

通过在 Virustotal 查询 IP,可以看到 DNS 指向为矿池域名。

通过 find 命令查找入侵时间范围内变更的文件,对变更文件的排查,同时对相关文件进行分析,基本可以确认黑客使用的进程隐藏手法。

在变更文件里可以看到一些挖矿程序,同时 /etc/ld.so.preload 文件的变更需要引起注意,这里涉及到 Linux 动态链接库预加载机制,是一种常用的进程隐藏方法,而 top 等命令都是受这个机制影响的。

在 Linux 操作系统的动态链接库加载过程中,动态链接器会读取 LD_PRELOAD 环境变量的值和默认配置文件 /etc/ld.so.preload 的文件内容,并将读取到的动态链接库进行预加载,即使程序不依赖这些动态链接库,LD_PRELOAD 环境变量和 /etc/ld.so.preload 配置文件中指定的动态链接库依然会被装载,它们的优先级比 LD_LIBRARY_PATH 环境变量所定义的链接库查找路径的文件优先级要高,所以能够提前于用户调用的动态库载入。

——段落引自《警惕利用 Linux 预加载型恶意动态链接库的后门》

通过查看文件内容,可以看到加载一个 .so 文件:/usr/local/lib/libjdk.so

而这个文件也在文件变更列表里。

我们通过查看启动的相关进程的 maps 信息,也可以看到相关预加载的内容:

通过对 libjdk.so 的逆向分析,我们可以确认其主要功能就是过滤了挖矿进程,具体可见下文分析。

在知道了黑客使用的隐藏手法后,直接编辑 /etc/ld.so.preload 文件去掉相关内容,然后再通过 top 命令即可看到挖矿进程:

通过查看 /proc/ 下进程信息可以找到位置,看到相关文件,直接进行清理即可:

继续分析变更的文件,还能看到相关文件也被变更,比如黑客通过修改 /etc/rc.d/init.d/network 文件来进行启动:

同时修改 /etc/resolv.conf :

还修改了 HOSTS 文件,猜测是屏蔽其他挖矿程序和黑客入侵:

同时增加了防火墙规则:

查询 IP 可以看到是一个国外 IP :

三、样本分析

通过对样本逆向分析,发现样本 libjdk.so 主要是 Hook 了 readdir 和 readdir64 两个函数:

对应修改后的 readdir 函数结构如下(readdir64 函数也是类似的):

get_dir_name 函数结构:

get_proces_name 函数结构:

process_to_filter 常量定义如下:

整个函数功能结合来看就是判断如果读取目录为 /proc,那么遍历的过程中如果进程名为 x7,则过滤,而 x7 就是挖矿进程名。

而类似于 top、ps 等命令在显示进程列表的时候就是调用的 readdir 方法遍历 /proc 目录,于是挖矿进程 x7 就被过滤而没有出现在进程列表里。

四、附录

IOCs:

样本

1.4000dc2d00cb1d74a1666a2add2d9502

2.8bd15b2d48a051d6b39d4c1ffaa25026

3.e2a72c601ad1df9475e75720ed1cf6bf

4.d6cee2c684ff49f7cc9d0a0162b67a8d

矿池地址

1.xmr-asia1.nanopool.org:14433

2.123.56.154.87:14444

钱包地址

42im1KxfTw2Sxa716eKkQAcJpS6cwqkGaHHGnnUAcdDhG2NJhqEF1nNRwjkBsYDJQtDkLCTPehfDC4zjMy5hefT81Xk2h7V.v7

相关链接:

1.https://mp.weixin.qq.com/s/inazTPN5mHJYnt2QDliv8w

2.https://cloud.tencent.com/product/hs

云鼎实验室主要关注腾讯云安全体系建设,专注于云上网络环境的攻防研究和安全运营,以及基于机器学习等前沿技术理念打造云安全产品。

原文发布于微信公众号 - 云鼎实验室(YunDingLab)

原文发表时间:2018-06-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Seebug漏洞平台

Discuz!X 3.4 任意文件删除漏洞分析

作者:LoRexxar'@知道创宇404实验室 日期:2017年9月30日 0x01 简 述 Discuz!X 社区软件,是一个采用 PHP 和 MySQL...

3218
来自专栏小白安全

web渗透思路及总结

(一)针对网站程序,不考虑服务器。 一、查找注入,注意数据库用户权限和站库是否同服。 二、查找XSS,最近盲打很流行,不管怎样我们的目的是进入后台。...

3057
来自专栏GreenLeaves

Oracle Profile文件

一、Profile文件概述:Profiles是Oracle安全策略的一个组成部分,当Oracle建立数据库时,会自动建立名称为Default的profile,当...

2116
来自专栏FreeBuf

Office DDEAUTO技术分析报告

0x1 背景 过去几年,基于宏的文档攻击技术一直是主流,虽然需要用户主动进行确认,但是攻击的成功率依然非常的高。不过,近段时间来,使用Office DDEAUT...

1898
来自专栏Hadoop实操

LDAP用户组信息异常导致Sentry授权失效问题分析

问题起因:“80040151”用户反映在Hue上通过Hive查询表数据出现异常,异常信息为权限拒绝,需要通过Sentry授权。然而通过beeline直连Hive...

1133
来自专栏菩提树下的杨过

Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(2)RPD资料档案库创建

BI创建(数据)分析、仪表盘、报表前,都需要对数据进行建模,在oracle biee里称为创建“资料档案库”-该文件后缀为RPD,所以一般也称为创建RPD文件。...

1936
来自专栏小狼的世界

使用PHP脚本来写Daemon程序

这又是一个有趣的概念,daemon在英语中是"精灵"的意思,就像我们经常在迪斯尼动画里见到的那些,有些会飞,有些不会,经常围着动画片的主人公转来转去,啰里啰唆地...

892
来自专栏安恒信息

安全漏洞公告

Dell OpenManage Server Administrator 'file'参数开放重定向漏洞 Dell OpenManage Server Admi...

2663
来自专栏企鹅号快讯

自动化测试如何解决验证码的问题

对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使...

2278
来自专栏大内老A

在Managed Code通过Google Gmail发送邮件以及如何通过Outlook配置Gmail

在项目开发中,发送邮件时一种非常常见的功能。一般的情况下,大型的公司都有自己的邮件系统,我们可以直接通过公司的Pop/SMTP Server进行邮件的发送和接收...

1879

扫码关注云+社区