转:Linux服务器清除隐藏的挖矿病毒

突然间服务器登陆补上,在后台系统一查发现cpu使用率一直都是100%。重启服务器登陆后发现top命令查不出什么东西,最后终于找到了这篇解决方案了。不得不说,这种病毒实在是太恶心了!记录一下这个问题,防止以后再出现手足无措,也给大家提个醒。同时非常感谢原文作者!
原文:http://blog.51cto.com/10950710/2123114

排查过程:

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,确认不再无故飙高,杀毒任务就完成了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,709评论 0 10
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,088评论 9 467
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,127评论 2 34
  • 1.Linux下如何用命令查看实时日志(完整命令) tail -f 路径.log查看前多少行 tai-200f 路...
    qianyewhy阅读 2,236评论 0 11
  • 在我决定开始早起的前几天,简直是对自己的折磨,每天天还不亮就要从温暖的被窝中爬出来,迷迷糊糊地到书房去看书。 有多...
    lily_眀芬阅读 251评论 0 2