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