百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

应急响应-提取黑客已删除的文件内容

nanshan 2025-02-21 14:32 15 浏览 0 评论

应急响应过程中,经常会遇到黑客删文件的情况。比如上面这种黑客执行
echo > /root/.bash_history 的方式来删除文件,如果没有事先部署主机安全agent做命令审计,这种情况基本都无解。

但通过魔改debugfs的源码,解决了这一类痛点。

文章目录

  • 误区: echo >$file 真的覆盖了文件吗?测试结论
  • 模拟黑客删除文件的场景使用魔改debugfs对磁盘内容进行提取
  • 原理分析
  • 发散思考echo 0 > file.txt 和 echo 0>file.txt 的区别是什么?0 1 2 3 在Linux中的含义?

file_真的覆盖了文件吗?">误区: echo >$file 真的覆盖了文件吗?

按照以往的理解,

rm -f $file

通过rm命令删除的文件,是可以恢复。

echo >$file

使用echo追加到文件,是“覆盖”文件的内容。这也是大部分黑客在入侵后清理痕迹时,更喜欢用echo来“覆盖”掉文件的原因,防止被溯源。

测试结论


但实际的测试结果证明,echo并不是真正意义的覆写文件,只是改变了文件的block指针。

模拟黑客删除文件的场景

假设黑客对 ~/.bash_history 文件做了删除操作,但应急需要提取黑客历史执行的命令。

此时 ~/.bash_history 文件是没有内容的,应急人员上机排查只能看到最后一条命令执行的记录。

使用魔改debugfs对磁盘内容进行提取

前面分析过,echo覆盖文件只是改变了文件指针,所以文件内容还是在磁盘上的。那么就可以用debugfs找回来。debugfs提供了一个查找未使用的block的命令为dump_unused。

我在debugfs源码做了大量修改,使dump_unused在查找未使用block的同时,并支持搜索block中的关键字。

比如我知道我在history中执行过 curl ip.sb 这条命令,那么原本的.bash_history文件中肯定会包含这条命令的内容,所以我可以将其作为关键字在debugfs中搜索。

原理分析

ext3/4文件系统中,当一个文件被删除后,系统会将inode中block的指针给覆写为0,并将对应的block标记为unused,但是不会覆写文件在block中的内容。

而系统中未使用的block是全0填充的,但如果一个block被标记为unused但是却有内容,就证明该block是被删除过的。

所以使用debugfs搜索磁盘中所有 被标记为unused但是有内容的block ,再从中提取存在关键字的block,就能快速找到被黑客删除的文件内容了。

魔改后的debugfs对于黑客删除history、ssh日志等强特征文件有非常好的溯源效果。

发散思考

与本文无关的内容,但是临时想到记录一下。上文件提到过 echo >$file 覆盖文件。

_filetxt_和_echo_0>filetxt_的区别是什么?">echo 0 > file.txt 和 echo 0>file.txt 的区别是什么?

当你在重定向操作符>前面加上一个数字,它会改变被重定向的文件描述符。默认情况下(即没有数字的情况下),>操作符会重定向标准输出(文件描述符1),echo >$file 等价于 echo 1>$file。当写0>时,你实际上是在重定向标准输入(文件描述符0),而不是标准输出。

echo 0 > file.txt和echo 0>file.txt在功能上是有区别的。前者是将”0″写入到file.txt,而后者是在尝试重定向echo命令的标准输入,而echo命令并不从标准输入读取任何内容,所以file.txt在执行后者之后是空的。

0 1 2 3 在Linux中的含义?

在Linux中,每一个进程都会有一些被预定义好的文件描述符。以下是这些预定义文件描述符的含义:

  • 0: 这个文件描述符代表标准输入(stdin)。当一个程序需要从用户输入或者文件输入获取数据时,会使用这个文件描述符。
  • 1: 这个文件描述符代表标准输出(stdout)。当一个程序需要打印或输出数据时,会使用这个文件描述符。
  • 2: 这个文件描述符代表标准错误输出(stderr)。当一个程序需要打印错误信息时,会使用这个文件描述符。
  • 3: 文件描述符3以及之后的数字,并没有预定义的含义,它们可以被进程用来打开和操作任何其他需要的文件。当一个进程打开一个新文件时,系统会提供一个最小的未使用的文件描述符。

例如将标准输出和错误输出都重定向到同一个文件,命令如下:

command > file.txt 2>&1

相关推荐

CentOS 7 搭建 Harbor2.4.1 Docker镜像仓库

上一篇文章我们使用了registry镜像来搭建Docker私有镜像仓库,但是使用体验不是很好,没有一个可管理的UI界面,管理很麻烦。本篇文章将介绍一个新的搭建Docker镜像仓库的工具叫做Har...

简单认识认识mqtt及mosquitto(mqtt报文解析)

某项目中使用了MQTT作为进程间的通信方式,之前没用过,这两篇笔记我们就来一起学习一下这种方式。MQTT的一些介绍以下介绍内容来自《[野火]《LwIP应用开发实战指南》MQTT协议全称是Messa...

全源码打造高性能 LNMP 架构: 实战教程(2025最新版)

适用场景:企业生产环境、自建Web服务、深度性能调优操作系统:CentOS7/8、RockyLinux、Debian、Ubuntu(本文以CentOSStream9为例)技术栈:N...

Nacos3.0重磅来袭!全面拥抱AI,单机及集群模式安装详细教程!

之前和大家分享过JDK17的多版本管理及详细安装过程,然后在项目升级完jdk17后又发现之前的注册和配置中心nacos又用不了,原因是之前的nacos1.3版本的,版本太老了,已经无法适配当前新的JD...

Ubuntu24.04.2 企业级MinIO存储系统部署指南

一、概要1.1MinIO架构解析MinIO是一款高性能的云原生对象存储系统,采用Golang开发并遵循ApacheLicensev2.0协议。其核心架构基于纠删码(ErasureCode)技...

从零打造自己的 国产鸿蒙(OpenHarmony)定制系统-完整可落地流程

适用版本:OpenHarmony4.0/5.0Standard目标人群:想在x86PC、RK3568开发板或自有硬件上裁剪、加品牌、预装应用并生成可刷机镜像的开发者/团队目录环境准...

一次暂未成功的dify安装经历(dify怎么安装)

前几天在阿里云买了一台机,这几天一直在尝试安装dify,到现在还没安装上我是按这个教程装的https://blog.csdn.net/2401_82469710/article/details/14...

ZLMediaKit教程(五)支持webrtc(webrtc lib)

ZLMediaKit系列文章(共六篇):ZLMediaKit流媒体(一)编译安装ZLMediaKit教程(二)主程序和配置文件解析ZLMediaKit教程(三)URL规则ZLMediaKit教程...

Linux程序安装与管理指南(linux程序安装命令大全)

在Linux系统中,安装和管理程序主要通过包管理器和手动编译安装两种主要方式实现。以下是详细的操作指南,涵盖常见发行版(如Ubuntu/Debian、CentOS/RHEL、Fedora等)的用法。一...

离线状态下安装 Nginx 各个模块?这篇攻略让你轻松搞定

你是不是也在为离线状态下安装Nginx各个模块而发愁?在互联网大厂后端开发工作中,我们常常会遇到一些特殊的网络环境,比如公司内部的离线服务器,或是处于隔离状态的测试环境。当需要在这些离线环境中安装...

Rust实践:Win10环境下的openssl交叉编译

Rust支持跨平台,可以指定生成目标平台,交叉编译也是支持的。当然,想要交叉编译成功,还需要指定平台的编译器(如:msvc、gcc等)。openssl是C语言开发的库,如果在Rust代码中用到open...

Linux下Blackwell架构显卡(RTX5070/5090)编译PaddlePaddle指南

Blackwell显卡架构如RTX5070\5090等显卡当前Paddle预编译版本中包含的GPU架构(即SM架构)是有限的,比如常见的SM75(T4)、SM86(A10)、SM89(...

突破操作系统界限,掌握Linux的必备指南

#头条创作挑战赛#简介Linux是一种开源的操作系统,它的核心思想是自由和开放。Linux以其稳定性、可靠性和安全性而闻名,被广泛用于服务器和嵌入式设备中。Linux创始人Linux安装在安装Linu...

Linux日常高频使用的100条命令,强烈建议收藏

查看系统信息如何查看系统版本:uname-alsb_release-acat/etc/os-release如何查看系统内核信息:uname-r如何查看系统CPU信息:lscpucat...

Linux文件系统结构全解析(linux文件结构详解)

对Linux新手而言,“一切皆文件”的设计哲学常让人既兴奋又困惑——打开终端输入ls/,看到的bin、etc、var等目录到底有什么用?如何快速定位关键文件?本文将从Linux文件系统的底层逻...

取消回复欢迎 发表评论: