记一次手动查杀Linux服务器挖矿木马

目录

  • 前言
  • 排查开始
    • 系统占用
    • 进程排查
    • 网络统计
  • 深入排查
    • 修复指令篡改
    • 隐藏程序查找
    • 进程信息查看
  • 后续清理
    • 删除相关文件
    • systemd
    • 计划任务
    • 用户
  • 原因追溯

前言

我实验室的座位隔壁放着一台其他课题组管理的服务器,平时利用率不高。那天我发现服务器的风扇转速拉满持续了至少一天,遂问隔壁在跑什么东西,隔壁同学在课题组问了一圈发现没人在用。两天后我恰好有点时间,帮他们在服务器上进行调查。最终发现是中了挖矿木马,进行了杀毒并把多个存在的系统漏洞都补上了。第一次手动实战查杀,故记录方法和过程。

系统版本:Ubuntu 20.04 LST

排查开始

系统占用

使用nvidia-smi查看显卡占用,发现没有进程使用显卡,占用为0。
使用top指令,按P以CPU占用率排序,按c显示完整的启动命令。
发现CPU总占用100%,有多个服务和应用分别占用不同的CPU资源。
查找CPU占用较高的进程,使用sudo kill [进程号]关闭。

进程排查

对于关闭后自动重启的进程,使用pstree -sap [进程号]查看该进程被启用的原因。
大部分分为以下几种:

  1. 通过ssh连接的bash启动的,大部分可以认为是手动启动的。
    在这里插入图片描述

  2. 来自gnome-shell的,一般是图形界面手动启动的
    在这里插入图片描述

  3. 通过containerd-shim启动的,一般是docker
    在这里插入图片描述
    在这里插入图片描述

  4. 直接是systemd启动的,通过systemctl查看和管理。
    在这里插入图片描述
    在这里插入图片描述

在该过程中,我关闭了所有服务器上占用大量资源的服务,然而CPU占用仍为100%。
在这里插入图片描述

网络统计

使用 netstat -anp 查看网络连接,主要关注StateESTABLISHED的连接。
在这里插入图片描述
图中172.16.开头的是内网地址,与外网的连接有两个,红框的那一行以及其上一行。
红框中的连接的PID和程序名被隐藏,十分可疑,查询该IP发现是德国某数据中心的。
在这里插入图片描述

深入排查

修复指令篡改

这种情况我已经预感是中了木马病毒,topps命令可能被篡改,便从别的机器复制了个新的topps文件来使用(也可以检查命令文件的md5),发现结果是一样的,这说明至少topps二进制文件没被篡改。

那么还有一种可能是动态链接库劫持,如果topps指令需要调用的动态链接库被篡改,也会影响其正常工作。一种劫持方法是让被篡改的动态链接库预加载,使其具有更高的优先级,从而代替正常的动态链接库被程序调用。

通过ldd指令查看topps使用的动态链接库,并对比其他机器上的相同内容,发现确实多了一个动态链接库/usr/local/lib/libextrasshd.so
在这里插入图片描述
环境变量LD_PRELOAD和默认配置文件/etc/ld.so.preload指定了预加载的动态链接库路径。一般情况下,Ubuntu系统中不存在该文件,但在该服务器中该文件存在且指定了/usr/local/lib/libextrasshd.so。该动态链接库在正常的系统里也是不应该存在的。
在这里插入图片描述

通过删除/etc/ld.so.preloadlibextrasshd.sotopps指令恢复正常,可以发现木马进程及其对资源的占用情况。

隐藏程序查找

除了手动清除指令篡改外,也有其他手段发现隐藏的程序,如busybox还有unhide等工具。
安装并运行sudo unhide proc,发现多个隐藏进程,其程序位于/root/.cfg/,是名为rcu_tasked的二进制文件。
在这里插入图片描述

进程信息查看

通过pstree -sap 1369 发现其进程直接由系统守护进程systemd启动。我们通过sudo systemctl status [主进程PID]查看其运行信息。
在这里插入图片描述
发现其配置文件位于/lib/systemd/system/myservice.service。删除该文件并输入sudo systemctl stop myservice.service关闭该程序,关闭后服务器瞬间安静了下来。
在这里插入图片描述

myservice.service文件内容如下,其目的为保持启动一个藏在/usr/bin/player下的程序,该程序会启动多个/root/.cfg/rcu_tasked进程,而这些rcu_tasked进程会占用大量CPU资源。
在这里插入图片描述

后续清理

斩草除根,检查下述位置是否存在可疑内容

删除相关文件

删除/usr/bin/player以及/root/.cfg/下的所有文件,可以看到文件名写着gminer,是挖矿木马无误了。
在这里插入图片描述
此外,被攻破的用户dev的用户目录下也有包含木马的.cfg文件夹,一并删除。
还有这些文件被篡改,也一并删除:

/usr/bin/mslog
/home/dev/.local/share/gvfs-metadata/
/home/dev/.config/pulse/
/root/.ssh/authorized_keys

systemd

时间倒序排序检查 systemd 中是否还有别的启动配置。

ll -rt /lib/systemd/system
ll -rt /lib/systemd/user/
ll -rt /etc/systemd/system
ll -rt /etc/systemd/user/

计划任务

sudo crontab -l查看root用户的计划任务,发现一条,使用crontab –e删除。同时检查其他用户的计划任务。

@monthly /root/.cfg/./dealer > /dev/null 2>&1 & disown

用户

cat /etc/passwd查看服务器的用户,发现一个无人认领的账号pischi

pischi:x:0:0::/home/pischi:/bin/bash

sudo cat /etc/shadow查看其密码最后更改时间,发现与myservice.service文件的创建日期一致,基本可以确定是问题账号,将其/bin/bash改为/bin/false,禁用该账号。

pischi:$6$8rq.pSIq86wW9CaK...:19730:0:99999:7:::

原因追溯

使用last查询登录历史,基于myservice.service文件的创建时间查找对应的记录,发现一条完全对应的记录。使用的账号为dev,说明该账号或其启动的服务存在漏洞;来源ip为127.0.0.1,说明是通过内网穿透服务连接的。
在这里插入图片描述
使用sudo lastb查询当时登录失败的记录,发现并没有,这说明可能不是直接通过ssh弱口令攻击黑进来的,除非第一次攻击就成功或暴力破解的记录被删掉了。
在这里插入图片描述
另一种可能是该用户下载并执行了包含木马的程序,但根据调查当时服务器并没有人在使用,那么剩下更大的可能是该用户部署的服务存在漏洞,导致黑客可以调用该用户权限进行操作。

进一步查看/var/log/auth.log中对应时间的日志
在这里插入图片描述
日志中记录的信息包括:黑客通过dev用户登录服务器后过了70秒切换到了root用户(切换时其所在路径是/home/dev/.cfg),7秒后添加了用户pischi、修改了pischi和root的密码,6秒后退出。

全盘查找这段时间中修改过的文件,发现漏网之鱼,已补充到删除相关文件章节中。

find / -newermt "2024-01-08 22:02:34" ! -newermt "2024-01-08 22:03:59"

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

test-02-test case generate 测试用例生成 EvoSuite 介绍

拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) 拓展阅读 自动生成测试用例 什么…

企业网络扫描程序中需要的功能

网络扫描程序已成为每个 IT 管理员抵御安全漏洞的第一道防线不可或缺的一部分。使用正确的网络扫描程序工具进行有效的网络侦察和诊断,使管理员能够查明可能升级为安全风险和网络事故的网络问题。典型的网络扫描程序可以与 IP 扫描程序配合使用,按顺序扫…

LangChain 75 打造你自己的OpenAI + LangChain网页应用

LangChain系列文章 LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 62 深入理解Lang…

zabbix实验

目录 一、zabbix 自动发现与自动注册 1、zabbix 自动发现 ①关闭防火墙和安全机制 ②在服务端和客户端上配置 hosts 解析 ③在 Web 页面配置自动发现 2、zabbix 自动注册 ①环境准备 ②在服务端和客户端上配置 hosts 解析 ③修改 zabbix-agent2 配置文件 ④在 Web 页…

UMind:从功能绑定到自如切换,用AI重塑摄像机价值

随着人工智能技术的迅速发展,AI摄像机的使用越来越广泛。虽然AI赋予了摄像机更加丰富的功能,但是在实际应用中仍然存在诸多不便。 为了解决以上问题,悠络客提出了【软件定义硬件】的创新理念,致力于让摄像头像智能手机那样&#x…

Linux开发工具:yum、vim、gcc/g++、makefile

文章目录 一. Linux软件包管理器-yum使用1. Linux 安装软件的方式2. yum 三板斧yum listyum installyum remove 二. Linux编辑器-vim使用1. vim 的基本概念2. vim 的基本操作3. vim 的命令模式命令集4. vim 底行模式命令集 三. Linux编译器-gcc/g使用1. 快速使用2. 程序翻译过程…

2024中国光伏展

2024年中国光伏展预计将是一个规模庞大的展览,吸引了全球光伏行业的专业人士和企业参与。光伏展将为各个光伏领域的企业提供一个展示最新技术、产品和解决方案的平台。 在2024年的中国光伏展上,参展企业将能够展示他们的光伏组件、太阳能电池板、逆变器、…

盲猜你不懂H5架构和原生架构的区别

盲猜你不懂H5架构和原生架构的区别 前言 1. App 的 3 种开发方式 表面上看,手机 App 都是同样的东西,就是手机上的应用程序,点击图标就能运行,但是它们的底层技术不一样。按照开发技术,App 可以分成三大类。原生应用…

[Android] Android架构体系(1)

文章目录 Android 的框架Dalvik 虚拟机JNI原生二进制可执行文件Android NDK中的binutils Bionic谷歌考虑到的版权问题Bionic与传统的C标准库(如glibc)的一些不同 参考 Android 的框架 Android 取得成功的关键因素之一就是它丰富的框架集。 没有这些框架…

Github 2024-01-16 Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-01-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10HTML项目1 精心策划的Python资源列表 创建周期:3490 天开发语言:Python…

CTF CRYPTO 密码学-1

题目名称:enc 题目描述: 压缩包中含两个文件:一个秘钥d.dec,一个密文flag.enc 解题过程: Step1:这题是一个解密他题目,尝试openssl去ras解密 工具简介 在Kali Linux系统中,openss…

基于Java+SSM养老行动能力评估系统详细设计和实现【附源码】

基于JavaSSM养老行动能力评估系统详细设计和实现【附源码】 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制…

关于git与git-lfs对文件压缩存储方面的研究

先说结论,git使用了Delta增量压缩算法,git-lfs实测没有进行任何压缩,这个结论让我很震惊。 测试过程如下: 测试git仓库自身的压缩 准备一个包含许多杂项文件的文件夹,大概几百M,要保证有一个txt文本文件…

深度好文:MySQL体系结构

MySQL采用的是客户/服务器体系结构,实际是有两个程序,一个是MySQL服务器程序,指的是mysqld程序,运行在存放数据库的机器上,负责在网络上监听并处理来自客户的服务请求,根据这些请求去访问数据库的内容&…

插件和工具汇总

插件和工具汇总 【一】MyBatis Log插件【二】热部署(1)适用于IntelliJ IDEA 2021.X以上版本(2)适用于IntelliJ IDEA 2021.X以下版本 【三】一些快捷键 【一】MyBatis Log插件 能够自动拼接参数生成执行的SQL语句,可以…

073:vue+mapbox 加载here地图(影像瓦片图 v3版)

第073个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载here地图的影像瓦片图。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共77行)相关API参考:专栏目标示例效果

docker:环境安装

系列文章目录 docker:环境安装 文章目录 系列文章目录前言一、Debian安装1.镜像下载2.VM安装3.Debian安装 二、docker安装1.Debian12换源2.docker安装3.docker测试4.docker换源 总结 前言 因为CentOS7确定停服时间为6月30日,虽然对我这种小虾米没啥影响…

ML:2-2-1 Tensorflow

文章目录 1. Tensorflow实现2. 模型训练细节2.1 定义模型f(x)2.2 找到loss and cost funciton2.3 Gradient descent 【吴恩达p60-61】 1. Tensorflow实现 继续看手写数字识别的例题第一步,我们上周学习了。第二步,让Tensorflow去编译模型。最重要的一步…

游戏素材永不缺,免费在线AI工具Scenario功能齐全,简单易用

Scenario是一个在线的AI驱动的工具,主要用于游戏艺术创作。它提供了一套全面的功能,旨在帮助游戏开发者创建与其独特风格和艺术方向相符的独特、高质量的游戏艺术。Scenario的突出特点之一是它的微调能力,允许用户根据独特的风格和艺术方向训…

Vue-23、Vue收集表单数据

1、效果 2、代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>收集表单数据</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js…
最新文章