如何避免文件上报-制作大文件
字数 1160 2025-08-22 18:37:21

如何制作大文件以绕过安全检测 - 技术指南

背景与目的

在安全攻防场景中,有时需要制作大体积文件来:

  • 绕过HIDS agent的文件上报机制(大文件可能不被上传)
  • 增加安全研究人员分析样本的难度(下载和分析大文件困难)
  • 测试系统对大文件处理的能力

环境准备

测试环境使用id命令的ELF文件作为示例:

\cp /usr/bin/id /tmp/y

方法一:文件末尾追加数据

实现方式

echo 1111 >> ./id

特点

  • 操作简单快速
  • 追加后文件仍可正常执行
  • 文件实际大小增加(受限于磁盘空间)

方法二:创建稀疏文件

概念

稀疏文件的"文件大小"和实际占用磁盘空间不一致,表现为大体积但实际占用小空间。

实现方式

使用truncatefallocate命令:

truncate -s 10T id  # 将文件扩展为10T

特点

  • 操作极快(10T文件只需不到1秒)
  • 文件显示大小可达TB级,但实际占用磁盘空间很小
  • 尝试传输或读取时会按显示大小处理(如10T需要291小时以10M/s速度下载)

方法三:修改inode元数据

原理

通过修改存储文件大小信息的inode元数据来伪造文件大小。

实现步骤

  1. 查看当前inode信息:
stat id
  1. 使用debugfs修改:
debugfs -w /dev/vda1
debugfs> mi /tmp/y/id
# 在Size字段输入新的大小值(如100000)
debugfs> quit
  1. 清理inode缓存使修改生效:
echo 3 > /proc/sys/vm/drop_caches

注意事项

  • 需要root权限
  • 修改后文件实际内容不变
  • 传输时仍按实际大小传输

方法四:向ELF文件节中添加垃圾数据

ELF文件结构

  • .text节:存放代码
  • .data节:存放初始化的全局变量和静态变量
  • .bss节:存放未初始化的全局变量和静态变量

实现方式

使用专用工具如patchkit修改ELF节内容。

特点

  • 实际修改文件内容
  • 可通过strip命令还原:
strip id  # 移除调试和符号信息,还原文件大小

方法对比

方法 实际修改内容 速度 最大大小 传输影响 可逆性
文件末尾追加 受限于磁盘 按实际大小 不可逆
稀疏文件 极快 几乎无限 按显示大小 可逆
修改inode 几乎无限 按实际大小 可逆
ELF节修改 受限于磁盘 按实际大小 可逆(strip)

防御建议

  1. 对大文件处理:

    • 实现分块上传/分析
    • 对稀疏文件特殊处理
  2. 应急响应:

    • 对可疑大ELF文件先尝试strip命令
    • 检查文件实际占用空间(du -sh)
  3. 监控:

    • 监控文件大小异常变化
    • 关注debugfs等工具的使用

总结

四种方法各有特点,在对抗场景中:

  • 稀疏文件最适合快速创建"大文件"阻碍传输
  • ELF节修改最隐蔽但实现复杂
  • 文件末尾追加最简单但效果有限
  • inode修改快速但防御容易识别

安全团队应了解这些技术以更好地检测和防御相关攻击手法。

如何制作大文件以绕过安全检测 - 技术指南 背景与目的 在安全攻防场景中,有时需要制作大体积文件来: 绕过HIDS agent的文件上报机制(大文件可能不被上传) 增加安全研究人员分析样本的难度(下载和分析大文件困难) 测试系统对大文件处理的能力 环境准备 测试环境使用 id 命令的ELF文件作为示例: 方法一:文件末尾追加数据 实现方式 特点 操作简单快速 追加后文件仍可正常执行 文件实际大小增加(受限于磁盘空间) 方法二:创建稀疏文件 概念 稀疏文件的"文件大小"和实际占用磁盘空间不一致,表现为大体积但实际占用小空间。 实现方式 使用 truncate 或 fallocate 命令: 特点 操作极快(10T文件只需不到1秒) 文件显示大小可达TB级,但实际占用磁盘空间很小 尝试传输或读取时会按显示大小处理(如10T需要291小时以10M/s速度下载) 方法三:修改inode元数据 原理 通过修改存储文件大小信息的inode元数据来伪造文件大小。 实现步骤 查看当前inode信息: 使用debugfs修改: 清理inode缓存使修改生效: 注意事项 需要root权限 修改后文件实际内容不变 传输时仍按实际大小传输 方法四:向ELF文件节中添加垃圾数据 ELF文件结构 .text节:存放代码 .data节:存放初始化的全局变量和静态变量 .bss节:存放未初始化的全局变量和静态变量 实现方式 使用专用工具如 patchkit 修改ELF节内容。 特点 实际修改文件内容 可通过 strip 命令还原: 方法对比 | 方法 | 实际修改内容 | 速度 | 最大大小 | 传输影响 | 可逆性 | |------|-------------|------|---------|---------|-------| | 文件末尾追加 | 是 | 快 | 受限于磁盘 | 按实际大小 | 不可逆 | | 稀疏文件 | 否 | 极快 | 几乎无限 | 按显示大小 | 可逆 | | 修改inode | 否 | 快 | 几乎无限 | 按实际大小 | 可逆 | | ELF节修改 | 是 | 慢 | 受限于磁盘 | 按实际大小 | 可逆(strip) | 防御建议 对大文件处理: 实现分块上传/分析 对稀疏文件特殊处理 应急响应: 对可疑大ELF文件先尝试 strip 命令 检查文件实际占用空间( du -sh ) 监控: 监控文件大小异常变化 关注debugfs等工具的使用 总结 四种方法各有特点,在对抗场景中: 稀疏文件最适合快速创建"大文件"阻碍传输 ELF节修改最隐蔽但实现复杂 文件末尾追加最简单但效果有限 inode修改快速但防御容易识别 安全团队应了解这些技术以更好地检测和防御相关攻击手法。