标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-2630] 作者: ecawen 发表于: [2020-04-07]
本文共 [569] 位读者顶过
印象中,从2017年下半年开始,感觉挖矿事件层出不穷。只要有客户的网络系统发生异常报告,基本都是从CPU发生异常开始。现在只要听到客户报告其主机系统出现异常,我们的第一反应就是,是不是又是“挖矿”啊?还真的是,到了现场一看,确实,恭喜“亲”,你又成为辛勤奉献、任劳任怨的苦力小矿工了。 [出自:jiwo.org] 一、系统环境
该主机对外开放两个端口,分别是22端口(SSH-2.0-OpenSSH_7.2p2)、80端口(nginx/1.4.6)。经过分析,发现80端口的日志和目录、文件基本没有异常,22端口也没有其他异常情况。 二、病毒分析通过本地分析,发现一堆由pnscan进程发出去的6379端口网络扫描行为,判断应该是针对redis的病毒扫描程序。 另外,还有两个名为gpg的进程占用很高的CPU,并且对外有网络链接。 此外,还发现该主机竟然开放redis服务,而且绑定地址已经修改为127.0.0.1:6379。哇,小伙伴安全意识蛮到位的嘛,竟然会加固redis安全了。可是通过和客户磋商,其确实有安装redis服务,可是上面并没有跑业务数据,而且只用于学习开发,也仅仅是默认安装,并没有做任何安全设置。 好吧,看来,初步判断应该是通过redis入侵主机系统。 于是登录 redis控制台,输入keys *命令(反正没有业务系统,呵呵,不怕数据多的让你挂掉),发现创建了三个Key,分别名为Backup1、Backup2和Backup3。 其内容分别如下:
确定了,就是通过redis未授权访问漏洞入侵的系统。接下来看看具体的恶意脚本和文档,看看攻击者到底想干嘛? 1、transfer.sh文件共享刚开始还以为transfer.sh又是攻击者申请用来干坏事的域名。呵呵,大家别笑俺孤陋寡闻,以前真不知道,没有用过transfer.sh服务。 打开其主页,发现其竟然提供的是正常的服务,该网站提供黑屏下文件共享的方式(命令行式文件分享网),经过细看,哇塞,竟然在黑屏下提供了上传、下载文件的功能,用户可直接通过命令行工具把文件上传到该网站,网站生成该文件下载连接url,可供其他用户下载。其功能还蛮强大的,根据介绍,其特征包括:命令行下使用/url共享链接/上传最大10gb/文件保存14天/免费/加密/无限次数下载等,如上图所示。哇哇,这网站tmd真是无私奉献啊,令人肃然起敬。对用户来说,提供了多少便利。知道了此网站的存在和用法,也是本次病毒分析的一大收获了,呵呵。 话说回来,对该网站最爱的应该是黑客了吧,简单,还提供了免费的域名(中转站)。命令行下直接使用,无需验证,感觉这个网站的所有者是否就是黑客出身(妄测一下),太贴合需求了。 2、脚本分析从上述Backup里面包含的URL分别下载了tmp.DoRh9YadFi(大小4,853)和tmp.pCnR6is0Gm(大小4,783)文件,发现两个文件只有极小的差异,完成的功能是一样的。 脚本很长,很多命令都要重新去查询,去学习。原来以前都看不清所谓的“脚本小子”,其实这些在LINUX下写脚本的人真的是太聪明了,很震撼。不过脚本太复杂了,有些地方考虑还是不周,不如权限的问题、下载的问题、还有pnscan病毒扫描程序的编译问题等,如果有任何一步出现问题,整个功能就大打折扣了。在实际测试中,我们发现关是利用yum/apt-get下载相应的库和包就需要漫长的时间,下载的东西太多了,作者想的真全面啊。 具体的内容和解释如下,如果有些解释不到位的地方望大家指正,#后面是自己加的注释。 #休眠一秒 sleep 1
#当前目录下查找60分钟之前修改过的名为.mxff0的普通文件,并删除
#创建 .mxff0文件 echo 0 > .mxff0
#删除文件 trap "rm -rf .m* .cmd tmp.* .r .dat$0" EXIT
#临时关闭防火墙,关闭输出 setenforce 0 2>/dev/null
#关闭selinux echo SELINUX=disabled >/etc/sysconfig/selinux 2>/dev/null
#清除当前cron定时任务 crontab -r 2>/dev/null
#删除/var/spool/cron rm -rf /var/spool/cron 2>/dev/null
//设置dns解析为8.8.8.8 grep -q 8.8.8.8 /etc/resolv.conf || echo"nameserver 8.8.8.8" >> /etc/resolv.conf
#删除/tmp,/var/tmp下文件和/etc/root.sh
#修改/etc/security/limits.conf文件,limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量
#防火墙修改redis只让本机访问
#杀掉包含下列字符串的进程,好疯狂。 ps xf | grep -v grep | grep "redis-server\|nicehash\|linuxs\|linuxl\|crawler.weibo\|243/44444\|cryptonight\|stratum\|gpg-daemon\|jobs.flu.cc\|nmap\|cranberry\|start.sh\|watch.sh\|krun.sh\|killTop.sh\|cpuminer\|/60009\|ssh_deny.sh\|clean.sh\|\./over\|mrx1\|redisscan\|ebscan\|redis-cli\|barad_agent\|\.sr0\|clay\|udevs\|\.sshd\|/tmp/init"| while read pid _; do kill -9 "$pid"; done
#又删除/tmp和/var/tmp下的文件
#清除登录日志、历史记录 echo 0 > /var/spool/mail/root
#下载安装相应的库和软件包
#如果是CentOS系统,用yum下载安装
#如果是Redhat系统,用yum下载安装
#如果是Fedora系统,用yum下载安装
#如果是Ubuntu系统,用apt下载安装
#如果是Debian系统,用apt下载安装
#如果是Mint系统,用apt下载安装(Linux Mint由Linux MintTeam团队于2006年开始发行,是一份基于Debian和Ubuntu的Linux发行版)
#如果是Knoppix系统,用apt下载安装(KNOPPIX是一个linux发行版,基于debian,功能包括:自动硬件监测、支持常见的显卡、声卡、SCSI和USB设备,以及其它外设)
#如果本地不存在pnscan,则去下载
#解压、编译、安装pnscan
#从transfer.sh下载tmp.Woq2ONMx8z文件
#文件改名、增加执行属性、运行后删除(进程为.gpg)
#对redis进行操作,添加定时任务
#利用pnscan进行病毒扩散
#写入IP地址文件到.ran
#循环扫描 Redis服务器(目标针对linux)
#如果成果扫到redis服务器,就利用redis-cli客户端写入.dat内容完成病毒感染
#再次清除日志记录、登录历史等
——————————————————————————————————————————————————————————————————————————— 上述脚本中,刚开始有些地方还是没有弄清楚。 (1)比如作者会在目标机器中下载并安装redis,如果说安装redis客户端还情有可原,毕竟利用pnscan扫描程序的时候,如果有扫描到空口令的redis服务器,是利用redis-cli去连接并执行命令的。可是为什么每台主机还要安装redis-server呢?难道安装redis-cli必须安装server? 经过全程分析,最后明白了,作者是禁止了原主机的redis:0.0.0.0:6379端口访问,重新安装了一个redis服务并只绑定127.0.0.1:6379端口,从而防止被别的恶意软件再次侵袭。可是万一机器主人本来是用来可以内部局域网访问的咋整呢?唉。 3、进程.gpy分析gpy进程发出的链接如下图所示: 直接用编辑软件打开发现其是xmrig的挖矿软件(最简单的就是用文本编辑可以查找到xmrig字符串)。作者对xmrig代码进行了修改并重新编译。加参数—version运行,结果如下图所示: 加参数 –help命令执行。其界面如下图所示,是典型的xmrig挖矿的界面,只不过作者把文件名修改成了svshost。 实际运行的gyp进程没有带任何参数,而我们知道xmrig软件是带参数运行的(要么命令行直接加参数,或者命令行指定参数文件)。那么参数在哪呢?按常理,肯定是作者直接在程序里面写死了。 于是我们直接调用IDA对其进行反编译,找到作者的参数如下图所示(实际代码中,作者还是把字符串分成一个一个字符的形式): 其中,连接的矿池地址是:jb.chakpools.com:443 钱包地址为: N9emUy6baNTbNwFzZmjzzg7bntSr6TFYRiJy6oXuosHhQZamMFZXzpYENJcdXvC5cwN8oqCrXJ4YYgWRgBNXZk6a33wT7os
占用CPU最大:50%(还蛮人性的,呵呵) 域名和IP查询其中,jb.chakpools.com的IP地址是159.203.182.176,位于美国。 IP查询如下图所示: 域名信息查询如下如下图所示: BS是巴哈马群岛。 猜测该矿池应该是个小矿池或者是一个矿池代理。由于chakpools.com不知道如何查询其挖矿情况,希望知道的朋友多指教。 三、应对措施1、 重新安装redis(千万不要赋予root权限)服务,根据客户实际需要对特定IP开放端口(利用防火墙设置,尤其是必须对外(公网)提供服务的情况下),如果只是本机使用,绑定127.0.0.1:6379 ,增加认证口令。 2、 清除定时任务 3、 杀掉进程、删除实体 |