挖矿云服务器可以吗(有什么风险)
1.事故现场
某天正常登录到服务器上,想做一些测试,正当我使用curl命令时,发现提示命令不存在,又测试了下wget命令,也是同样的情况,心里突然感觉到情况不妙。其它的一些如netstat、ps命令也都不能使用了,但是top还能用。
点击输入图片描述(最多30字)
看了眼系统的负载(这里截图的时候已经做了一些重启处理),发现平均负载为19.40,高的离谱,绝对出问题了。
点击输入图片描述(最多30字)
执行top命令,按1,展开多核心查看,并按c,将列表以CPU占用大小排序。CPU占用高,但是没有出现占用高的程序。
点击输入图片描述(最多30字)
怀疑这个top命令被篡改了,从相同发行版中拷贝一个top过来,重新执行,效果一样,那就应该是病毒程序做了手脚,让你看不出来。
点击输入图片描述(最多30字)
此时服务器在疯狂地对外发包,通过shell软件的可视窗口可以看到。为了更直观的看,使用以下命令,发现服务器对146.165.159.*的6379端口疯狂发包。
tcpdump
-nn
点击输入图片描述(最多30字)
第一个想法就是通过防火墙的出站规则把IP限制了,但是又会有新的链接建立,治标不治本。看起来是一个挖矿程序,
趁着这个时间把重要的文件备份到本地,不太重要的文件断网后再打包。
由于我的两台学生机通过私钥免密登录了,所以另外一台也被感染了,由于工作原因没来得及处理,收到了告警短信。
点击输入图片描述(最多30字)
2.处理
已经将重要文件备份到本地了,断网!!!通过VNC登录后,执行命令停止网络服务。(这里的vnc在停止网络后仍能使用)
点击输入图片描述(最多30字)
systemctl
stop network
先不着急查问题吧,把比较不重要的文件先打成一个包备份,等会处理完网络问题后再下载到本地。先查一下有没有定时任务,使用以下命令:
crontab
-l
点击输入图片描述(最多30字)
发现没有,再使用以下命令查看一下:
cat /var/spool/cron/root#
或者使用下面的命令m
ore /var/lo
g/c
ron lo
g
点击输入图片描述(最多30字)
发现每隔一分钟会执行一条flock -xn……的命令。flock没遇到过呀,找度娘问问。
flock
flock——Linux 下的文件锁
当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进程没有也在操作,以免损坏数据。
通常,这样的进程会使用一个「锁文件」,也就是建立一个文件来告诉别的进程自己在运行,如果检测到那个文件存在则认为有操作同样数据的进程在工作。这样的问题是,进程不小心意外死亡了,没有清理掉那个锁文件,那么只能由用户手动来清理了。
-s,–shared:获取一个共享锁,在定向为某文件的FD上设置共享锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置独占锁的请求失败,而其他进程试图在定向为此文件的FD上设置共享锁的请求会成功。
–
x,-e,–exclusive:获取一个排它锁,或者称为写入锁,为默认项-
u
,–unlock:手动释放锁,一般情况不必须,当FD关闭时,系统会自动解锁,此参数用于脚本命令一部分需要异步执行,一部分可以同步执行的情况。-n
,
–nb, –nonblock:非阻塞模式,当获取锁失败时,返回1而不是等待-w,
–wait, –timeout seconds:设置阻塞超时,当超过设置的秒数时,退出阻塞模式,返回1,并继续执行后面的语句-o,
–
-close:表示当执行command前关闭设置锁的FD,以使command的子进程不保持锁。-c, –
–
command command:在shell中执行其后的语句
也不用管那么多,只要知道最后是去执行那个脚本就是了。
点击输入图片描述(最多30字)
从日志中可以看到脚本的来源为
http
:
//107.189.3.150/b2f628/cronb.sh
并且下载下来就被病毒拦截了,给火绒点个赞。恢复一下,用记事本看看脚本的内容。
点击输入图片描述(最多30字)
不该干的事情它全干了,感兴趣的朋友可以下载样本来研究,切忌乱运行!
点击输入图片描述(最多30字)
如果你的机器是阿里云,还会删除系统中的防护服务或云警。
点击输入图片描述(最多30字)
根据脚本的内容,反向处理:
chattr
-iea /var/tmp/*
r
m
–
rf /var/tmp/*r
m
-r
f
/var/spool/cron/*rm
–
rf
/etc/cron.d/*rm –
r
f
/
var/spool/cron/crontabsrm -r
f
/
e
tc/crontabsystem
c
tl stop c
o
ntab# 删除隐藏的
密
钥chattr -i
e
a /hom
e
/hilde/rm -rf /ho
m
e/
h
ilde/# 停止挖矿程序sud
o
systemc
t
l di
s
able kswapd0.servicesudo systemct
l
sto
p
kswapd0.servicerm /etc/system
d
/s
y
stem/kswapd0.service# 删除执行脚本chattr
–
ia /etc/n
e
wsvc.s
h
chattr -ia /etc/sv
c
*chatt
r
-ia /etc/php
u
pdatec
h
attr -ia /etc/phpg
u
ardcha
t
tr -ia /etc/netwo
r
kmanag
e
rchattr -ia /etc/newdat
.
shchat
t
r -iea /etc/ld.so.
p
reload
rm -rf /etc/ld.so.preloa
d
r
m
-rf /etc/newsvc.shrm –
rf
/e
t
c/svc*rm -rf /etc/
p
hp
u
pdaterm -rf /
e
tc
/
phpguardrm -rf /et
c
/n
e
tworkmanagerrm -r
f
/
e
tc/newdat.shchattr -i /
u
sr
/
lib/systemd/system
d-
update
–
dailyrm -rf /usr/lib/systemd/systemd-upd
a
te
–
dailychattr -ia /etc/zzhchattr -ia /etc/n
ew
init
前面的操作中,清除ld.so.preload文件后,就能在top中找到挖矿程序的进程并杀掉。
点击输入图片描述(最多30字)
然后分析一下进入到原因吧。把需要备份的文件存储好,重装系统吧!
cat /var/
log
/secure
3.复盘
为了便于分析,也可以对服务器进行限速。
开始之前,先要清除 eth0所有队列规则
tc qdisc del dev eth0 root
2
>
/dev/null
>
/dev/null
定义最顶层(根)队列规则,并指定 default 类别编号。这样一来对外发包的速度就降下来了。
tc qdisc add dev eth0 root handle 1:
htb
default
20
t
c class add dev eth0 parent 1:
c
lassid
1
:20
h
tb
r
ate
2
000kbit#
(
1KB/s = 8KBit/s)
查看tc状态
tc -s -d qdisc
show
dev eth0tc -s -d c
lass
s
how
dev eth0
删除tc规则
tc
qdisc del dev eth0 root
限速后也可以使用下面的命令,查看对外发包的IP地址和端口,交由防火墙阻止或进一步看进程。
tcpdump