记一次阿里云被挖矿处理记录

news2024/11/15 17:24:31

摘要
莫名其妙的服务器就被攻击了,又被薅了羊毛,当做免费的挖矿劳动力了。

一、起因

上班(摸鱼)好好的,突然收到一条阿里云的推送短信,不看不知道,两台服务器被拉去作为苦力,挖矿去了。这不是耽误我摸鱼吗,再说你挖到的矿币又不带我分,岂能忍。本着对公司负责任的态度(实在没办法),这不收拾一下过分的挖矿脚本,对不起这么多年积攒的专业知识。

登录服务器,top 一下,ps 一下,crontab -l 一下,好家伙,只看到 CPU 异常占用了,却没发现到底是哪个玩意贪了我这么多资源。与以往的不太一样啊(你特么在逗我?)。

按照以往的经验,ps -aux --sort=-pcpu|head -10 一下,贪渎者肯定原形毕露。难不成穿了个马甲。仔细分析,可能不仅仅是马甲这么简单,更有可能是隐身衣。使出万能的百度大法,果然有几篇秘籍指出问题,一一对照下,只能发现大概,定位不到最终的“宝藏”地点。看来百度不行,得 google 一下了。这次秘籍多了起来,给出了一项专门破解隐藏进程的功法。

二、寻“宝”

BusyBox 是一个集成了 300 多个最常用 Linux 命令和工具的软件。甚至还集成了一个 http 服务器和 telnet 服务器,集成的包大小只有 1M 左右。有人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单点说 BusyBox 就是一个集成了许多 Linux 工具和命令的大的工具箱。在嵌入式软件中,BusyBox 有着广泛的运用。

所以,下载 BusyBox,安装:

$ wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox
$ mv busybox /usr/bin/busybox
$ chmod +x /usr/bin/busybox

查看 BusyBox 基本功能

$ busybox --help

使用瑞士军刀查看一下进程信息

$ busybox top

作祟者原型毕露,有个 /bin/daemon 进程,占用过高的 CPU 使用

挖矿进程

同时使用 netstat 查看一下程序端口占用

$ netstat -anp | grep ESTAB

结果如下:

netstat结果

可以看到有一个程序占用端口 14444,连接的ip为 217.182.169.148,却并没有打印出程序的进程号,在shadan搜索一下,ip 为法国的,基本确定入侵使用的端口为 14444,先把端口禁用掉。

异常IP

三、“六娃”的能力

既然确定是 /bin/daemon,那就需要找出这个玩意是怎么具有“七娃”的能力,又是如何进行挖矿的。

首先可以确定的是 /bin/daemon 是一个二进制执行程序,那就可以看看它的动态库依赖关系

$ ldd /bin/daemon

ldd结果

此时还未发现有任何异常的结果(请原谅眼神不好使,四个眼睛都没发现问题)

既然 ldd 无法找出异常,祭出大招,看看 /bin/daemon 所执行的系统调用

$ strace /bin/deamon

strace调用链
好家伙,不看不知道,居然有一个 ld.so.preload,来了个预加载。

一般来说,预加载 so 有两种方式:

  1. 修改/etc/ld.so.preload配置文件,这种方法对配置修改后运行的进程有效,而无法影响已经在运行的进程
  2. 启动进程前设置LD_PRELOAD环境变量,此方法只对当前进程生效

LD_PRELOAD 可以影响程序的运行时链接,它允许定义在程序运行前优先加载的动态链接库,通过这个环境变量,可以在主程序和其动>态链接库的中间加载别的动态链接库,甚至覆盖正常的函数。

进程在启动后,会按照一定的顺序加载动态库:

  • 加载环境变量 LD_PRELOAD 指定的动态库
  • 加载文件 /etc/ld.so.preload 指定的动态库
  • 搜索环境变量 LD_LIBRARY_PATH 指定的动态库搜索路径
  • 搜索路径 /lib64 下的动态库文件

从上面的结果来看,加载了一个 /usr/local/lib/libprocesshider.so 动态库,从上面的 ldd 返回结果也看到了这个动态库,再仔细一看,这名字,不就是 process+hider
libprocesshider.so,Hide a process under Linux using the ld preloader. 官方的解释,本来可能只是作者觉得一个好玩的玩意,却被别有用心的人拿来做坏事。

找到这家伙,那好办了,先把它直接干掉。

$ rm -rf /usr/local/lib/libprocesshider.so

啥?万能的 rm -rf 大法居然失效了,这家伙身上居然给自己加了个盾,大招居然没有收到人头。

冷静一下,仔细分析。既然不能删除,那就是有着隐藏属性,等待技能冷却,我还有招。

$ lsattr /usr/local/lib/libprocesshider.so

文件隐藏属性

果然,文件被追加了隐藏属性。可以看到有 ia 属性。

文件隐藏属性解释:

属性选项功能
i如果对文件设置 i 属性,不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置 i 属性,只能修改目录下文>件中的数据,但不允许建立和删除文件
a如果对文件设置 a 属性,只能在文件中增加数据,不能删除和修改数据;如果对目录设置 a 属性,只允许在目录中建立和修改>文件,不允许删除文件
u设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录
s和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复

既然加了盾,那把盾给破了就是:

$ chattr -ia /usr/local/lib/libprocesshider.so

什么,chattr 没权限,这是反弹伤害吗?这,玩不下去了啊。

试试分身术吧。

$ cp /usr/bin/chattr /usr/bin/chattr2
$ chattr2 -ia /usr/bin/chattr

没报错,嗯,再试试

$ chattr -ia /usr/local/lib/libprocesshider.so

咋,还提示没权限。

再看一下 chattr

$ file /usr/bin/chattr

chattr

这这这,跟我这虚晃一枪呢。你把我原来的文件删了,给我放个空文件,你是想骗谁呢。

看来要重装 chattr 了,但是机器上跑了不少服务,担心有影响。集中精力,冥想三分钟,条条大路通罗马,此路不通,换路走。谁让咱兄弟姐妹多呢。

服务器都是选择的一样的镜像,版本一致,从其它未被攻击的系统中拷贝一份 chattr,(划重点)拷贝到服务器上时,请换一个文件名称,通过新的文件修改原来的文件。如 chattr2

$ chattr2 -ia /usr/bin/chattr
$ rm -rf /usr/bin/chattr
$ mv /usr/bin/chattr2 /usr/bin/chattr

正主归位,一切妖魔邪道即将化为无形。

$ chattr -ia /usr/local/lib/libprocesshider.so
$ chattr -ia /etc/ld.so.preload
$ rm -rf /usr/local/lib/libprocesshider.so
$ rm -rf /etc/ld.so.preload

此时,通过 top 即可看到 /bin/daemon 进程。没有了隐身衣,无所遁形了吧。

那么,接下来,就应该干掉“罪魁祸首”了。大蛇精和蝎子精已死,救爷爷终于有希望了。

/bin/daemon 是通过软链指向 /usr/bin/daemon,不墨迹,直接干掉本尊。

$ chattr -ia /usr/bin/daemon
$ rm -rf /usr/bin/daemon

当然,记得杀掉运行中的 /bin/daemon 进程

$ kill -9 2415

四、守护者

一般的挖矿脚本程序肯定都有一个守护进程,保证挖矿的进程被杀之后,可以重新启动,绝大多数是用的定时任务的方式。既然通过 crontab -l 没看到定时任务,那就看看 /etc/cron.d 目录下有没有:

crontab

cron.d
果然,在 /etc/cron.d 目录下,存在着定时任务脚本,查看脚本内容:

$ cat /etc/cron.d/systemd

果然运行了一条定时任务,查看指向的脚本内容:

$ cat /lib/systemd/systemd-login

systemd-login

脚本文件没有内容,file /lib/systemd/systemd-login

very short file(no magic)

什么👻 ,先不管了,干掉再说。

$ rm -rf /lib/systemd/systemd-login
$ rm -rf /etc/cron.d/systemd
$ rm -rf /etc/cron.d/systemd~
$ rm -rf /etc/cron.d/systemz~

打完野怪打小龙,打完小龙打大龙,等一段时间看看,还好,己方水晶没爆。

运行一段时间,一切稳定,算是暂告一段落。

五、总结

本篇文章还有很多的不足之处,并没有找到病毒攻击的入口,又是如何入侵到系统的,挖矿的脚本究竟运行在哪?按照正常的被攻击排错方式,一开始并不顺利。总结一下系统被入侵的排查思路,只是给后来者提供一下解决思路(希望大家的系统都很健壮,不被攻击)。

  • 查看系统的 CPU内存占用
  • 查询占用系统资源过高的进程
  • 排查定时任务,crontab -l 或者 /etc/cron.d 目录
  • 检查异常端口,如发现,禁用端口,堵漏
  • 使用 last 命令查看系统异常登录情况(一般攻击者会抹去入侵记录)
  • 使用 history 命令查看系统历史执行命令(一般攻击者会抹去历史命令)
  • 查看开机启动脚本 /etc/rc.local ,是否插入了开机启动进程
  • 通过 find /etc/cron.daily/* -mtime -1 查找前一天到现在被修改的文件
  • 找一台正常的机器,比较一下被修改文件的 md5

后续救援不如从源头堵住疏漏,平时使用系统时,可以从以下方面尽量保证系统安全:

  • 检查弱口令,使用强口令,能用证书的,尽量不使用密码
  • 不需要在外网访问的端口,尽量不开启,只开放在内网
  • 尽量使用普通用户启动服务,不要使用 root 用户启动服务
  • 系统被入侵,一般都是通过部署的服务暴露出来的漏洞,及时更新软件版本,加固系统
  • 修改常用软件服务的端口,尽量不要使用原有端口
  • 定时备份重要的文件数据,以防止服务器被入侵时,丢失重要数据

未完待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/731588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

核磁共振常用的文件格式介绍:NIfTI volume 格式 (*.nii), GIFTI 格式 (*.gii), CIFTI 格式 (*.nii)

核磁共振常用的文件格式介绍:NIfTI volume 格式, GIFTI 格式, CIFTI 格式 NIfTI volume 格式 (*.nii)GIFTI 格式 (*.gii)CIFTI 格式 (*.nii)自定义工作台 (wb_view) 文件:Scene file文件 (*.scene)规格文件 (*.spec)Spec file (*.border)Foci (*.foci)Trajectory file (*.t…

PowerShell和cmd区别以及在文件夹快速打开cmd窗口的几种方法

区别: cmd是Windows才有的,PowerShell是跨平台通用的 cmd进入的是dos系统 PowerShell可以看作是cmd的升级版。PowerShell更方便使用,而且功能更加强大 方法: 1.在PowerShell中打开cmd 在当前文件夹,shift右键找到…

《黑马头条》 内容安全 自动审核 feign 延迟任务精准发布 kafka

04自媒体文章-自动审核 1)自媒体文章自动审核流程 1 自媒体端发布文章后,开始审核文章 2 审核的主要是审核文章的 内容(文本内容和图片) 3 借助 第三方提供的接口审核文本 4 借助第三方提供的接口审核图片,由于图片存储到minIO中&…

flutter聊天界面-消息气泡展示实现Flexible

flutter聊天界面-消息气泡展示实现Flexible 在之前实现了flutter聊天界面的更多操作展示,消息气泡展示实现Flexible, 一、Flexible Flexible可以帮助Row、Column、Flex的子控件充满父控件,它的用法很灵活,也具有权重的属性。跟Fl…

记录征战Mini开发板从无到有

前言 我们店铺的开发板目前主要有Altera,Xilinx以及国产安路,高云。Xilinx只有Spartan6系列,这个系列的芯片只支持ISE软件,但是很多客户用的是VIVADO软件,所以导致我们无法满足客户的需求。基于此原因,我们经过几个月…

go性能分析工具--pprof使用

之前线上遇到了内存泄露,就在找工具来分析,刚好还是个纯go的项目, 就找到pprof. 来串一下如何使用吧; pprof可以支持多种类型的采样分析. 可以分析cpu或者内存或者goroutine等 集成很简单, 在工程中引入如下代码: import _ "net/http/pprof"go func() {log.Println…

K8s集群部署最新Jenkins 2.387.1

K8s集群部署最新Jenkins 2.387.1 概述环境准备设置存储目录并启动NFS服务安装 NFS 服务端 动态创建 NFS存储(动态存储)部署jenkins服务 概述 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作…

图像直方图、模板匹配

目录 1、图像直方图 1.1 直方图统计 1.2 直方图像素统计 1.3 直方图绘制 2、直方图均衡化 2.1 实现 2.2 效果 3、直方图匹配 3.1 匹配原理 3.2 实现 4、模板匹配 4.1 模板匹配 4.2 模板匹配函数 4.3 模板匹配方法标志 4.4 代码实现 1、图像直方图 1.1 直方图统计 1.…

超详细保姆级vue3和代码规范项目搭建

vue3-admin项目搭建 项目初始化 创建 git 仓库 npm 管理工具 pnpm 安装 pnpm create vite zf-v3-admin –template vue-ts pnpm init 初始化package.json 创建pnpm-workspace.yaml 定义工作区 pnpm-lock.yaml 和 package-lock.json 都是项目中的锁定文件,它…

逆转乾坤,反转字符串

本篇博客会讲解力扣“344. 反转字符串”的解题思路,这是题目链接。 这是一道经典题目了。解题思路是:双下标,left指向最左边的字符,right指向最右边的字符,交换2个字符,left向右挪动一格,right向…

多路转接高性能IO服务器|select|poll|epoll|模型详细实现

前言 那么这里博主先安利一下一些干货满满的专栏啦! Linux专栏https://blog.csdn.net/yu_cblog/category_11786077.html?spm1001.2014.3001.5482操作系统专栏https://blog.csdn.net/yu_cblog/category_12165502.html?spm1001.2014.3001.5482手撕数据结构https:/…

金九银十面试必备,对标阿里 P7Java 架构师面试题

开源一套金九银十自刷的面试题库,自己感觉还不错,也拿了几个 Offer(三个大厂的,字节、蚂蚁、滴滴)!下面直接上干货哈! JVM 篇(87 道) JVM 篇中面试题中的知识点&#xff…

动态规划解决鸡蛋掉落问题

目录 问题描述 解决问题 ①蛮力法 ②备忘录 ③递归改递推 ④二分法 ⑤逆向思维 问题描述 给定一定楼层数的建筑物和一定数量的鸡蛋,求出可以找出门槛楼层的最少鸡蛋掉落实验的次数,约束条件是:幸存的鸡蛋可以重复使用,破碎…

多模态系列论文--BEiT-3 详细解析

论文地址:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks 论文代码:BEiT-3 BEiT-3 1 引言:Big Convergence(大一统)2 BEIT-3预训练框架3 下游任务实现框架4 实验效果5 总结…

李沐动手学深度学习:softmax回归的从零开始实现

import torch from IPython import display from d2l import torch as d2lbatach_size256 train_iter,test_iter d2l.load_data_fashion_mnist(batach_size) num_input 784 #图片的尺寸:28*28 num_output 10 #10个类别 W torch.normal(0,0.01,size(num_input,nu…

Docker尝鲜

一、Docker的安装 卸载系统自带的旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc 获取软件最新源 sudo apt-get update 安装apt依赖包 sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common 安装…

Feign实现远程接口的调用

Feign实现远程接口的调用 前言一、Fegin是什么?二、Feign使用步骤准备工作被调用的远程服务必须上传到nacos/eureka服务中心进行管理配置,比如我调用media-api服务(媒资管理服务),那么media-api必须被nacos/eureka所管理。如图,都…

CentOS7和主机Win11不能复制粘贴解决之道及CentOS7最小安装版 VMware Tools安装

入世心法&#xff1a; 金字塔 结构化 系统化 底层认知 认知升级 来认识下你老祖宗 底层逻辑 分别从: ---->道|法|术|器|势<--- 这五个层次去打通............................翻新思维底层认知&#xff…

【CSS】跳动文字

文章目录 效果展示代码实现 效果展示 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>一颗不甘坠落的流星</title></head><style type"text/css">/* 遮罩盒子样式 */#mask {/* 设…

基于单片机的蓝牙音乐喷泉的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过HM-18蓝牙音频模块进行无线传输&#xff1b; 通过LM386功放模块对音频信号进行放大&#xff1b;手机端可以直接控制音频播放&#xff0c;并且最远距离可达20米&#xff1b;手机端可以进行任意音乐切换&#xff0c;播报、暂停&a…