• Linux 清除隐藏的挖矿程序


    问题描述:

    一台阿里云服务器,收到连续告警CPU使用量已经大于95%。但这台机器上面使用中的业务只有一个不常使用的MySQL,其他就没有了,正常情况下CPU是不可能达到这么高的。查看告警信息,发现有被植入挖矿程序,可疑程序文件路径为 /usr/lib/libiacpkmn.so.3。

    排查过程:

    1、top查看,找占CPU高的进程:
    阿里云机器清除隐藏的挖矿程序

    通过按照CPU占比降序查看,除了少数几个进程占CPU,并没有发现可疑程序
    阿里云机器清除隐藏的挖矿程序
    占用CPU高的挖矿程序应该是隐藏在某个地方了,

    2、使用命令ps -aux --sort=-pcpu|head -10查找,果然找到了这个程序:

    [root@dbserver ~]# ps -aux --sort=-pcpu|head -10
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root     14454  179  0.0   6780   740 ?        Ssl  08:00 708:24 [xfsdatad]

    阿里云机器清除隐藏的挖矿程序

    解决过程:

    1、首先杀掉上面这个占CPU高的xfsdatad进程:

    [root@dbserver ~]# kill -9 14454

    再使用top查看CPU,马上就降下来了:
    阿里云机器清除隐藏的挖矿程序

    2、清理定时任务
    挖矿程序一般都设置了定时任务启动脚本程序,查看定时任务,crontab -l查看是找不到的。得看/etc/crontab文件。果然有任务在启动程序脚本 /usr/lib/libiacpkmn.so.3

    [root@dbserver bin]# cat /etc/crontab 
    SHELL=/bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    # run-parts
    01 * * * * root run-parts /etc/cron.hourly
    02 4 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly
    0/8 00 * * * /bin/bash  /usr/lib/libiacpkmn.so.3  >/dev/null 2>&1
    [root@dbserver bin]# 

    删除掉定时任务,防止再次启动脚本

    3、删除脚本文件/usr/lib/libiacpkmn.so.3
    根据定时任务中暴露的可疑文件所在路径/usr/lib/libiacpkmn.so.3,彻底删除该脚本文件 rm -f /usr/lib/libiacpkmn.so.3 。
    结果显示文件是被加了锁的,使用root用户去删除、mv、chmo/chown改权限,或者清空文件,任何操作都会报Permission denied(没权限):

    [root@dbserver lib]# cd /usr/lib
    [root@dbserver lib]# rm -rf libiacpkmn.so.3 
    rm: cannot remove ‘libiacpkmn.so.3’: Operation not permitted
    [root@dbserver lib]# >libiacpkmn.so.3 
    -bash: libiacpkmn.so.3: Permission denied

    因此需要确认文件是否枷锁,lsattr命令查看,发现有一个 i 权限:
    lsattr 命令介绍
    发现 I 权限如下:
    不能被删除、改名、设定连结、写入或新增数据;

    [root@dbserver lib]# lsattr libiacpkmn.so.3
    ----i--------e-- libiacpkmn.so.3

    使用命令撤销i权限:

    [root@dbserver lib]# chattr -i libiacpkmn.so.3 

    注意:如果不能使用chattr命令,就使用yum -y install e2fsprogs命令安装即可。

    然后再检查文件权限,就没有i权限了。再删除文件成功:

    [root@dbserver lib]# lsattr libiacpkmn.so.3
    -------------e-- libiacpkmn.so.3
    [root@dbserver lib]# rm -f libiacpkmn.so.3
    [root@dbserver lib]# 
    [root@dbserver ~]# find / -name "libiacpkmn.so.3"      #查找文件,确认已经删除OK
    [root@dbserver ~]#     
    

    4、同样的方法删除残留文件nfstruncate
    查找挖矿程序根源所在地 已知 PID 14454。同时根据 ps -anx查询到的端口号查询端口14454,
    cd /proc/14454
    ls -a 查询到/etc/ 目录存在启动文件nfstruncate 
    exe -> /etc/rc.d/init.d/nfstruncate #这个nfstruncate 文件,也需要删除

    [root@dbserver lib]# find  / -name "nfstruncate"     #查找出来这个文件有两个,都删除
    /etc/rc.d/init.d/nfstruncate
    /usr/bin/nfstruncate
    [root@dbserver lib]#  cd /etc/rc.d/init.d/
    [root@dbserver init.d]# chattr -i nfstruncate 
    [root@dbserver init.d]# rm -rf nfstruncate 
    [root@dbserver bin]# 
    [root@dbserver init.d]# cd /usr/bin/
    [root@dbserver bin]# chattr -i nfstruncate 
    [root@dbserver bin]# rm -rf nfstruncate 
    [root@dbserver bin]# 
    [root@dbserver ~]# find / -name "nfstruncate"   #查找文件,确认已经删除OK
    [root@dbserver bin]# 

    补记:
    在后面的一次杀毒中,/proc/pid/目录下面的exe指向的是另一个文件:

    exe -> /usr/lib/libiacpkmn.so.3 (deleted)

    但是/etc/rc.d/init.d/目录和/usr/bin/下面也都存在nfstruncate文件。因此不仅要删除 /usr/lib/libiacpkmn.so.3,也要删除/etc/rc.d/init.d/nfstruncate和/usr/bin/nfstruncate。三个文件都得清理干净。

    5、清除/etc/rc*.d/目录下的S01nfstruncate文件链接,在rc0.d-rc6.d目录下都存在S01nfstruncate文件,全部删除。
    查看/etc/rc0.d目录下的文件链接S01nfstruncate:

    [root@dbserver rc0.d]# ll
    total 0
    lrwxrwxrwx 1 root root 20 May  3  2016 K01agentwatch -> ../init.d/agentwatch
    lrwxrwxrwx 1 root root 15 Mar 27  2017 K15nginx -> ../init.d/nginx
    lrwxrwxrwx 1 root root 19 Mar 27  2017 K25uwsgi9090 -> ../init.d/uwsgi9090
    lrwxrwxrwx 1 root root 15 May  3  2016 K50aegis -> ../init.d/aegis
    lrwxrwxrwx 1 root root 20 May  3  2016 K50netconsole -> ../init.d/netconsole
    lrwxrwxrwx 1 root root 22 Jun 21  2017 K80cloudmonitor -> ../init.d/cloudmonitor
    lrwxrwxrwx 1 root root 17 May  3  2016 K90network -> ../init.d/network
    lrwxrwxrwx 1 root root 23 Oct 19 08:00 S01nfstruncate -> /etc/init.d/nfstruncate    #需要删除

    找到所有的文件链接删除:

    [root@dbserver rc0.d]# find / -name "S01nfs*"
    /etc/rc.d/rc1.d/S01nfstruncate
    /etc/rc.d/rc2.d/S01nfstruncate
    /etc/rc.d/rc4.d/S01nfstruncate
    /etc/rc.d/rc3.d/S01nfstruncate
    /etc/rc.d/rc6.d/S01nfstruncate
    /etc/rc.d/rc5.d/S01nfstruncate
    /etc/rc.d/rc0.d/S01nfstruncate
    find: ‘/proc/4796’: No such file or directory
    find: ‘/proc/5488’: No such file or directory
    [root@dbserver rc0.d]# 
    [root@dbserver rc0.d]# find / -name "S01nfs*"|xargs rm -f

    6、再top观察CPU,确认不再无故飙高,杀毒任务就完成了。

  • 相关阅读:
    TelephonyManager对黑名单的管理
    1125: 零起点学算法32——输出四位完全平方数
    1124: 零起点学算法31——开始新的起程
    1123: 零起点学算法30——参加程序设计竞赛
    1122: 零起点学算法29——等级分制度
    1121: 零起点学算法28——判断是否闰年
    1120: 零起点学算法27——判断是否直角三角形
    1119: 零起点学算法26——判断奇偶数
    1118: 零起点学算法25——求两点之间的距离
    1117: 零起点学算法24——求正弦和余弦
  • 原文地址:https://www.cnblogs.com/reachos/p/13129155.html
Copyright © 2020-2023  润新知