Linux中挖矿病毒清理通用思路

2023-11-16

目录

前言

清理流程

检查修复DNS

停止计划任务

取消tmp目录的可执行权限

服务排查

进程排查

高CPU占用进程查杀

计划任务清理

预加载劫持清理

系统命令变动排查

中毒前后可执行文件排查

系统配置文件排查

小结

前言

在被植入挖矿病毒后,如果攻击者拥有足够的权限,比如root权限,往往会对系统命令进行劫持,达到隐藏自己的效果,故第一步最好是先确认是否存在rootkit劫持、库劫持,之后的命令执行操作也最好是通过busybox执行

清理流程

注:命令均在busybox工具下执行

检查修复DNS

挖矿病毒有时候为了防止访问不到矿池或者代理,往往会修改dns记录,故可以先查看“/etc/resolv.conf”文件内容情况

停止计划任务

为了做到持久化控制,在攻击者权限足够的情况下,往往会写计划任务项,达到持续执行挖矿脚本的目的,为了清理过程中不会再都执行挖矿脚本,先把定时任务服务停止。

    chattr -R -ai /etc/ &>/dev/null  #去除文件不可修改权限
    systemctl stop crond #centos为crond,ubuntu为cron
    systemctl stop atd
    pkill crond 
    pkill atd

取消tmp目录的可执行权限

攻击者为了方便,往往会把运行脚本隐藏在tmp目录下,但是我们清理过程中,如果怕误删或者不清楚哪些是恶意文件的话,可以直接取消tmp目录下所有文件的可执行权限

chattr -R -ai /tmp/ /var/tmp/ /dev/shm/
chmod -R -x /tmp/ /var/tmp/ /dev/shm/

服务排查

正常情况下,服务器所起的系统服务是不会变动的,可以排查中挖矿病毒前后系统服务的变动情况,排查确认异常后可将服务停止,并将文件打包移走

find /etc/systemd/system/ -mtime -近期变动时间 -type f
chattr -ia filename #filename为近期找到的变动过的服务文件
systemctl stop 服务名 #停止服务
systemctl disable 服务名

进程排查

查看所有进程的信息,排查”/proc/pid号/exe” “/proc/pid号/cmdline” ,检查进程的启动命令,已经引用的exe软连接的真实路径。其中如果/proc/pid号/exe”中调用了/bin/bash,(deleted),/tmp/ 都是可疑,有必要排查是否是异常项

高CPU占用进程查杀

中挖矿病毒的一个重要特征就是cpu占用率会非常高,当然一些挖矿病毒为了更好的隐藏自己当老6,会控制cpu的占用率,比如维持在50%以下,同时很多时候我们如果不用busybox的话,top命令等都是看不到有高占用cpu的进程的。

这里可以使用htop,busybox的top命令查看是否高占用cpu的进程,同时通过进程号可查看“/proc/pid号/cmdline”判断是否是异常进程,确认后使用kill命令终止挖矿进程即可

计划任务清理

最开始的时候我们只是停止了计划任务服务,但是并没有对计划任务文件进行清理,这里对计划任务进行清理,一个简便的方法就是查看中挖矿前后发生变动的计划任务文件,这些都是可疑的。

#计划任务目录
("/etc/crontab" "/var/spool/cron/" "/etc/cron.d/" "/etc/cron.daily/" "/etc/cron.hourly/" "/etc/cron.monthly/" "/etc/cron.weekly/" "/etc/init.d" "/etc/rc.d/" "/etc/rc.local")

#排查这些目录中近期发生过变动的文件
find 计划任务目录 -type f -mtime 中病毒前后时间

预加载劫持清理

挖矿有时候为了隐藏自己,会对系统的预加载配置进行修改,让执行的命令加载恶意的so文件,这里需要对这些文件进行清理(注:不确定的时候不要随便清除,如果是劫持的系统自身的so文件,最后找个干净系统的so文件替换)

检测预加载文件,用busybox命令查看
cat /etc/ld.so.preload   #这个文件默认是空的和不存在的,如果有内容并且确认不是管理员的操作话,那么这个so文件就有问题

系统命令变动排查

一直有说到,挖矿为了隐藏自己,有时候会修改系统命令,让我们排查的时候看不到它,这里通过时间排查挖矿后被变动过的系统命令(一般这个命令文件是不会有变动,故变动过的都是可疑的)

cat $PATH  #环境变量下目录
find 环境变量目录 -type -executable -mtime -中病毒前后时间
chattr -ai -R 环境变量目录 #解除环境变量目录不可修改权限,之后对异常命令打包清理

中毒前后可执行文件排查

正常情况下,系统的可执行文件基本是不会变动,基本不会有新增,那中挖矿时间前后变动的可执行文件都是可疑,需要进一步排查清理。

find /etc /tmp /user/ /root /var /lib /dev/shm -maxdepth 3 -mtime -挖矿前后时间 -type f -executable

系统配置文件排查

由一些病毒会对系统配置文件进行修改,这里对这些配置文件操作需要慎重,需确认的确是异常后再清理。

系统配置文件目录:/etc/profile /home/用户名/.bash_profile /home/用户名/.bashrc /home/用户名/.profile
find 系统配置文件目录 -type f -mtime -中病毒前后时间

小结

清理到这里,病毒以及残留文件已经清理干净了,后续的就是重新开启定时任务,重新安装系统命令,恢复dns配置文件,排查入侵原因

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中挖矿病毒清理通用思路 的相关文章

  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • Fortran gfortran linux 中的“分段错误(核心转储)”错误

    我正在创建一个程序 该程序将分析目录中的文件 fits 然后它将在另一个目录中创建另一个文件 txt 它只是一个转换器 当我尝试执行该程序 编译正常 时 它给了我一条错误消息 程序收到信号 SIGSEGV 分段错误 无效的内存引用 此错误的
  • NUMA 在虚拟内存中是如何表示的?

    有许多资源 https en wikipedia org wiki Non uniform memory access从硬件角度描述NUMA的架构性能影响 http practical tech com infrastructure num
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 捕获实时流量时如何开启纳秒精度?

    如何告诉 libpcap v1 6 2 将纳秒值存储在struct pcap pkthdr ts tv usec 而不是微秒值 捕获实时数据包时 Note This question is similar to How to enable
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • 如何从 C 程序中获取 NIC 详细信息?

    我想要获取连接到我的计算机的所有 NIC 的以下详细信息 1 接口名称 例如eth0 2 接口编号 如Windows http answers yahoo com question index qid 20080517041705AAOmJ
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • linux下写入后崩溃

    如果我使用 write 将一些数据写入磁盘上的文件会发生什么 但我的应用程序在刷新之前崩溃了 如果没有系统故障 是否可以保证我的数据最终会刷新到磁盘 如果您正在使用write 并不是fwrite or std ostream write 那

随机推荐

  • janus以及coturncentos8的配置_排错填坑完结篇

    前言 查阅了不少资料 网上对janus以及coturn的配置比比皆是 不过 我发现了一个问题 那就是 janus要直接对接coturn作为turn服务器吗 为什么 janus的demo例子 譬如 video room 能不能在手机4g网络上
  • netty文件上传断点续传的演示

    Netty文件上传断点续传的演示 一 理论和协议规范和工具类等 1 实现原理 netty文件上传采用自定义的协议方式实现 断点续传主要是依据RandomAccessFile类的随机读写能力 主要流程是客户端发起请求 将需要上传文件名称 路径
  • Leetcode[数组] 分发饼干 -- 贪心算法

    0 题目描述 leetcode原题链接 分发饼干 1 预排序 双指针 利用贪心算法的思想 每次都先满足胃口最小的孩子 直到有效饼干分完 或者小胃口孩子都被满足则停止分发 class Solution def findContentChild
  • 区块链浏览器搭建

    嗨喽 大家好 不知道大家是否遇见过类似的问题 自己使用以太坊源代码搭建了一个开发网私链时 缺少了主网或者测试网的区块链浏览器这种区块链数据直观展示的工具 那么今天就带大家一起搭建一个适合自己的区块链浏览器使用 文章目录 一 环境准备 1 1
  • 利用BFD协议提高SD-WAN网络的故障收敛时间

    BFD简介 为了减小设备故障对业务的影响 提高网络的可用性 设备需要能够尽快检测到与相邻设备间的通信故障 以便能够及时采取措施 从而保证业务继续进行 现有的故障检测方法主要包括以下几种 1 硬件检测 例如通过SDH Synchronous
  • 第三章 C++之面向对象

    C 基础进阶系列文章 目录 第一章 C 之函数 第二章 C 之引用实现游戏对话框显示 第三章 C 之面向对象 第二章 C 之面向对象 C 基础进阶系列文章 前言 一 什么是面向对象 二 抽象与类 1 C 中的类 2 类的声明 3 创建第一个
  • Java基础知识总结(史上最全)

    Java基础知识总结 写代码 1 明确需求 我要做什么 2 分析思路 我要怎么做 1 2 3 3 确定步骤 每一个思路部分用到哪些语句 方法 和对象 4 代码实现 用具体的java语言代码把思路体现出来 学习新技术的四点 1 该技术是什么
  • openssl编程指南

    openssl编程指南 对于openssl应用编程这方面的详细文档很少 我是通过认真分析openssl源码包中的示例代码来学习并结合man文档来理解它的基本结构的 SSL通讯模型为标准的C S结构 除了在TCP层之上进行传输之外 与一般的通
  • ubuntu18.04使用jlnk下载程序

    ubuntu使用JLink下载程序 JLink安装 JLink官网下载最新的JLink驱动程序 ubuntu使用的是deb包 下载时选J Link Software and Documentation Pack下面的链接 使用sudo dp
  • 基于梯度下降的线性回归(Gradient Descent For Linear Regression)

    概述 梯度下降是很常用的算法 它不仅被用在线性回归上和线性回归模型 平方误差代价函数 在本次 我们要将梯度下降和代价函数结合 我们将用到此算法 并将其应用于具体的拟合直线的线性回归算法里 梯度下降算法和线性回归算法比较如图 左边梯度下降 右
  • Python 队列(Queue)用法

    一 队列 Queue Python的Queue模块中提供了同步的 线程安全的队列类 包括FIFO 先入先出 队列Queue LIFO 后入先出 队列LifoQueue 和优先级队列PriorityQueue 这些队列都实现了锁原语 能够在多
  • Win32程序之进程的原理

  • 面试题更新之-使用 base64 编码的优缺点

    文章目录 base64 编码是什么 使用 base64 编码的优缺点 base64 编码是什么 Base64编码是一种将二进制数据转换为ASCII字符的编码方式 它将三个字节的二进制数据分割成四组 每组6个比特 然后将这些6个比特转换为可打
  • IP有效性检查(C language)

    STATUS ip valid check const char v p Str int i int tmp char p NULL if strlen v p Str gt 15 return ERROR p char v p Str t
  • 基于Logistic回归和Sigmoid函数的分类【机器学习】

    一 认识Logistic回归 LR 分类器 首先 Logistic回归虽然名字里带 回归 但是它实际上是一种分类方法 主要用于两分类问题 利用Logistic函数 或称为Sigmoid函数 自变量取值范围为 INF INF 自变量的取值范围
  • poll方法01

    p select poll 功能 创建poll对象 返回值 poll对象 p register fd event 功能 注册关注的io事件 参数 fd 要关注的IO event 要关注的io事件类型 通用类型 POLLIN 读io事件 po
  • iphone邮箱看不到已发送_不看不知道 教你如何设置iPhone邮箱

    电子邮件是我们日常生活中必不可少的实用工具 尤其是在商务发面发挥着重要的作用 所以 这次我要教大家怎样设置与使用iPhone的电子邮箱功能 电子邮件是我们日常生活中必不可少的实用工具 尤其是在商务发面发挥着重要的作用 所以 这次我要教大家怎
  • Linux Cobbler自动部署装机

    Cobbler自动部署装机 一 实验准备 二 Cobbler自动装机服务搭建步骤 1 导入epel源 2 安装Cobbler以及其相关服务软件包 3 修改cobbler主配置文件 4 使用cobbler check 命令对Cobbler做检
  • ztree实现异步加载(点击节点,请求后台数据,添加数据到对应节点)真正实现了异步树加载数据

    ztree实现异步加载 首先说一下这篇文章和我写的上一篇异步树的区别 上一篇的我实现的是其实是个伪异步加载 因为我实际是把异步的操作写在了节点上面 点击节点时 获取当前节点的ID 取回子节点的数据 然后手动拼接到当前节点下面 真正的异步其实
  • Linux中挖矿病毒清理通用思路

    目录 前言 清理流程 检查修复DNS 停止计划任务 取消tmp目录的可执行权限 服务排查 进程排查 高CPU占用进程查杀 计划任务清理 预加载劫持清理 系统命令变动排查 中毒前后可执行文件排查 系统配置文件排查 小结 前言 在被植入挖矿病毒