在上一篇博文Linux系统发现占用CPU达100%的进程并处理 里面以为已经把挖矿程序sustse处理干净了,可是没过两天又收到阿里云短信提醒,说服务器有问题,难道还有后门吗?也多亏阿里云给出提示“出现了可疑安全事件:Linux共享库文件预加载配置文件可疑篡改”。网上查了查相关内容,原来这个后门是动态链接库预加载机制造成的。
动态链接库预加载机制是系统提供给用户运行自定义动态链接库的一种方式,在可执行程序运行之前就会预先加载用户定义的动态链接库的一种技术。这种技术可以重写系统的库函数,只需要在预加载的链接库中重新定义相同名称的库函数,程序调用该库函数时,重新定义的函数即会屏蔽掉正常的库函数。
动态链接库预加载机制有两种方式:LD_PRELOAD环境变量和/etc/ld.so.preload配置文件。赶紧查看下LD_PRELOAD环境变量:
#echo LD_PRELOAD

未见异常,再看看/etc/ld.so.preload配置文件:

果然有异常的库,这里的cat或ls命令最好使用静态编译的,或者使用busybox工具,否则可能因为恶意库被隐藏而发现不了:

从时间上看,这个库和阿里云检测到的问题时间是一致的,赶紧清空ld.so.preload文件并删掉lbb.so库。使用top再查看一下:

原来top查不到的kworkerds进程终于出现了,而且启动了很多。看来不单单top命令没异常就代表查看是真实的信息,还要记得检查预加载库。
使用ps命令再查看下:

原来/var/tmp/目录下的kworkerds文件又出现了,这次好好找找吧,发现/tmp目录下也有这个文件,看来是会相互复制的。为了快速删除得写个删除脚本了,执行脚本删除完,top再查看,没有发现kworkerds进程,可是再看/usr/local/lib/目录,lbb.so库又出现了。
还是没能彻底清除,肯定还有定时任务,crontab -e命令删除的只是root创建的定时任务,而用户创建的定时任务在/var/spool/cron/目录下,查看/var/spool/cron目录:

果然还有定时任务,将其删除,再看/usr/local/lib/目录,还是被恢复了。阴魂不散啊,再看/etc/cron.d目录下文件:

还有那个定时任务,将其也删除,这下终于不再复发了。最后整理我的删除脚本如下:

echo "" > /etc/ld.so.preload
chattr +i /etc
rm -rf /var/spool/cron/*
rm -rf /etc/cron.d/*
chattr +i /var/spool/cron/
rm -f /usr/local/lib/*
chattr +i /usr/local/lib
killall kworkerds
rm -f /var/tmp/kworkerds*
rm -f /var/tmp/1.so
rm -f /tmp/kworkerds*
rm -f /tmp/1.so
rm -f /var/tmp/wc.conf
rm -f tmp/wc.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
其中chattr +i命令是给文件夹加锁,删除完赶紧上锁,防止恶意文件再复制进去,这下终于安静了。。。
-#################################################################l

第二种方案

原因是在 有个叫 libselinux.so的二进制在执行,这个名字看起来跟selinux有关系,实则不然,应该是一个挖矿脚本之类的,然后top里没有进程,ps 里也没有
最后通过 perf top -s comm,pid,symbol    查出一堆unknown进程,然后根据 /proc/pid 找到了执行文件所在地,删除了整个目录,最后就cpu使用率就降下去了,
现在的病毒真机智,竟然在top 和 ps 里死活都查不出来,通过 ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu  这个命令竟然都没有。

执行完果真发现了病毒

另外 top -i  top -b 可尝试 不一定安装perf   没有就按sudo yum install perf

然后

kworkerds 处理脚本

腾讯云的机器发现中了 kworkerds 病毒。经过一顿调查,初步完成了处理。

结合网上其他人的遭遇,感觉这个病毒会有所进化,如果发现我这招不好用,就需要研究一下你中的病毒的脚本,它到底修改了哪些文件。然后通过 chattr -i 去掉 i 属性(这个是后来病毒才需要的,困扰了我好久,之前竟然都没听所过Linux下面还有这个属性),然后才能修改文件的只读属性。


echo '127.0.0.1 pastebin.com' >> /etc/hosts chattr -i /etc/ld.so.preload
echo "" > /etc/ld.so.preload chattr -i /usr/local/bin/dns
echo "" > /usr/local/bin/dns chattr -i /etc/cron.d/root
echo "" > /etc/cron.d/root chattr -i /etc/cron.d/apache
echo "" > /etc/cron.d/apache chattr -i /var/spool/cron/root
echo "" > /var/spool/cron/root chattr -i /var/spool/cron/crontabs/root
echo "" > /var/spool/cron/crontabs/root rm -rf /etc/cron.hourly/oanacroner
rm -rf /etc/cron.daily/oanacroner
rm -rf /etc/cron.monthly/oanacroner #rm -rf /bin/httpdns
#sed -i '$d' /etc/crontab sed -i '$d' /etc/ld.so.preload
chattr -i /usr/local/lib/libntpd.so
rm -rf /usr/local/lib/libntpd.so ps aux|grep kworkerds|grep -v color|awk '{print $2}'|xargs kill -9
chattr -i /tmp/thisxxs
rm -rf /tmp/thisxxs
chattr -i /tmp/kworkerds
rm -rf /tmp/kworkerds

 找到了这个解决脚本, 运行了就ok

云主机中毒 cpu爆满解决日志的更多相关文章

  1. (原创)基于CloudStack的平安云-云主机的生命周期

    一.购买云主机1.条件筛选   涉及环境.应用系统.区域.网络.操作系统.套餐.期限.数量筛选2.校验   2.1 应用系统角色权限校验   2.2 应用系统可用配置校验   2.3 产品区域是否下架 ...

  2. AWS:1.相关概念、创建云主机的过程

    概念 EC2是弹性的云计算 云主机 也即虚拟机,由分配的CPU.内存.网络和磁盘等资源组成 好处:维护成本低(主机替换).环境升级成本低 AMI:映像 创建云主机的蓝图,指定初始状态1 预装什么操作系 ...

  3. 阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法

    最近网站CPU经常爆满,到阿里云提交了工单,工程师给我的处理意见:   您好,虚拟主机CPU占用比较高通常这种情况有两种可能:   一是网站应用程序代码逻辑较复杂,或业务架构效率比较低,在请求了某个网 ...

  4. VPS/云主机CPU占用100%故障排查

    VPS/云主机CPU占用100%故障排查 方法/步骤 通常情况下云主机/VPS的CPU一般不会占用100%,内存资源也不会占完.若您的服务器经常CPU资源100%,可以打开任务管理器,查看是哪个进程引 ...

  5. 云主机被拿去挖矿,cpu暴涨,tcp连接突增

    1.云主机被拿去挖矿,cpu暴涨,tcp连接突增 2.现象:top -c 3.然后我再查看pstree进程树 4.查找文件来源 ind  / -name '*suppoie*' 5. 然后删除 sup ...

  6. [Windows Server 2008] 阿里云.云主机忘记密码解决方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:解决阿里云 ...

  7. 【小技巧解决大问题】使用 frp 突破阿里云主机无弹性公网 IP 不能用作 Web 服务器的限制

    背景 今年 8 月份左右,打折价买了一个阿里云主机,比平常便宜了 2000 多块.买了之后,本想作为一个博客网站的,毕竟国内的服务器访问肯定快一些.满心欢喜的下单之后,却发现 http 服务,外网怎么 ...

  8. Openstack 调整云主机大小失败解决

    Openstack 使用调整openstack云主机大小报错 tailf /var/log/nova/nova-compute.log 2017-02-24 18:21:29.088 28511 ER ...

  9. rocketMq指定broker ip地址,适合解决云主机部署问题

      在工作中遇到了一个这个问题,就是我们rocketmq是部署在云主机上的 但是我们的开发同事在自己的电脑连接rocketmq链接不上 报错显示Caused by: org.apache.rocket ...

随机推荐

  1. Ansible运维自动化

    Ansible运维自动化 一.Ansible-playbook的初步使用 playbook的使用,playbook可以把ansible的模块进行组合 ln -s /usr/local/python/b ...

  2. AsyncTask 的 get post 封装

    1.get方法的封装AsyncTask public class DBUTil2 { public static interface Succee{ void onSuccee(String resu ...

  3. Python3 标准库学习

    python3.5.6 官方文档  https://docs.python.org/3.5/library/index.html 1.介绍 2.内置函数 3.内置常量 3.1常数添加的 site模块 ...

  4. Spring中的接口BeanFactory和FactoryBean的学习

    BeanFactory: 相当于对象工厂,可以获取对象的实例以及相应的属性.BeanFactory定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接口,也就是Spring IOC所遵 ...

  5. 辨析字节序(Endianness)

    字节序(Endianness, Byte Order)指的是对于一个多字节数值,当在内存中存储该值或者在链路中传输该值时,其值所包含的多个字节的排列顺序. 在计算机科学中,一般存在两种字节序,大端字节 ...

  6. 移植mysql到ARM(AM335x)

    一,编译ncurses 编译mysql需要依赖ncurses,先编译ncurses 1.下载ncurses 下载路径是ftp://ftp.gnu.org/gnu/ncurses,选择下载的是ncurs ...

  7. navigateTo、redirectTo、switchTap与reLaunch的区别

    wx.navigateTo:保留当前页,跳转到指定页,非tabBar:使用 wx.navigateBack 可以返回到当前的页面. wx.redirectTo:关闭当前页,跳转到指定页,非tabBar ...

  8. [UE4]Spline

    Spline和Spline Mesh的区别: 1.Spline Mesh是有实体表现的,Spline Mesh可以拉伸弯曲实体模型,Spline Mesh是具象. 2.Spline 只有曲线,没有实体 ...

  9. js判断是否安装某个android app,没有安装下载该应用(websocket通信,监听窗口失去焦点事件)

    现在经常有写场景需要提示用户下载app, 但是如果用户已经安装,我们希望是直接打开app. 实际上,js是没有判断app是否已经安装的方法的,我们只能曲线救国. 首先,我们需要有call起app的sc ...

  10. 关于mysql文件导入提示“Variable @OLD_CHARACTER_SET_CLIENT can't be set to the value of @@CHARACTER_SET_CLIENT”问题分析

    今天用myssqldump导出数据,然后再导入另外mysql数据库时,提示Variable @OLD_CHARACTER_SET_CLIENT can't be set to the value of ...