如何避免文件上报-制作大文件
背景
了解hids的读者应该知道hids agent会有上报很多信息,其中有的agent会将可疑文件上报到云端做恶意分析。
同事问我一个问题:文件如果特别大,也会被上报吗?不会影响性能吗?
这个问题让我联想到 你的扫描器可以绕过防火墙么(三) 中大包绕过waf的场景,接着很容易想到:如果agent碰到大文件就不上传了,不就很容易绕过云端的恶意分析了嘛。
另外,一个恶意文件如果体积过大,可能对安全研究人员做"样本分析"造成一些困难,比如无法将文件下载到本地电脑(网速、磁盘空间可能不够)、ida等静态分析软件内存占用过大。
基于以上"安全攻防"的业务场景,加上我最近在学习一些操作系统相关的知识,所以就研究下"怎么让elf文件变大"。
文件变大的同时,还要满足以下条件:
不影响elf文件执行 从实用角度来说,攻击队也不会生成一个大文件,然后上传到目标。最好是上传一个小文件,上传到目标机器,然后本地让文件变大。
先说结论,有以下方式让"文件大小"变大:
文件末尾追加数据 稀疏文件 修改inode元数据 向elf文件节中填充垃圾数据
说明一下测试环境:测试程序是id命令,复制到了/tmp/y目录下
[root@instance-fj5pftdp?y]#?\cp?/usr/bin/id?/tmp/y
文件末尾追加数据
怎么实现?
这种方式实现很简单,如下
[root@instance-fj5pftdp?y]#?echo?1111?>>?./id
[root@instance-fj5pftdp?y]#?./id
uid=0(root)?gid=0(root)?组=0(root)关键是这样修改后的文件,还能正常执行。
稀疏文件
"稀疏文件"是什么?
"稀疏文件"的"文件大小"和实际占用磁盘空间是不一致的,比如:
[root@instance-fj5pftdp?y]#?ll?-h?id
-rwxr-xr-x?1?root?root?10T?9月???6?20:03?id
[root@instance-fj5pftdp?y]#?du?-sh?id
40K?id从上面命令可以看到:"文件大小"是10T,但实际数据只占用40K的磁盘大小。
对于原理感兴趣的读者,可以参考 深度剖析 Linux cp 的秘密 这篇文章。
怎么修改成"稀疏文件"?
可以利用fallocate、truncate命令。
使用起来也很简单,以truncate举例:
[root@instance-fj5pftdp?y]#?ls?-alh?id
-rwxr-xr-x?1?root?root?37K?9月???5?20:18?id
[root@instance-fj5pftdp?y]#?time?truncate?-s?10T?id???//?将id程序稀疏成10T大小
real?0m0.007s
user?0m0.000s
sys?0m0.007s
[root@instance-fj5pftdp?y]#?ls?-alh?id
-rwxr-xr-x?1?root?root?10T?9月???5?20:02?id????//?文件大小已经变成10T
[root@instance-fj5pftdp?y]#?./id
uid=0(root)?gid=0(root)?组=0(root)这种方式修改文件有两个特点:
文件改动非常快,上面的例子中将id文件大小扩大到"10T"只用了1s不到
文件大小最大可以是10T以上,但不需要本地磁盘空间真的有10T
当你想下载或者读这个文件(比如
cat)时,却是会有实实在在的10T流量。10T流量,按照"10M/s"的速度下载,也需要下载291个小时。
修改inode元数据
为什么修改"inode元数据"就可以修改文件大小信息?
inode元数据包含了文件大小信息,而inode元数据也是存储在磁盘扇区中的,所以应该可以通过修改inode元数据来"伪造"文件大小。
其实不光大小信息,inode元数据中还包括 文件是否删除、创建时间、修改时间、访问时间 等信息,所以这些都可以被伪造。
可以通过stat命令查看inode元数据:
[root@instance-fj5pftdp?y]#?stat?id
??文件:"id"
??大小:37400??????块:80???????? IO 块:4096 ??普通文件
设备:fd01h/64769d Inode:171252 ?????硬链接:1
权限:(0755/-rwxr-xr-x)? Uid:(????0/??? root)?? Gid:(????0/??? root)
最近访问:2021-09-06 20:27:26.224913458 +0800
最近更改:2021-09-06 20:27:26.218913032 +0800
最近改动:2021-09-06 20:27:26.224913458 +0800
创建时间:-怎么修改"inode元数据"?
利用debugfs命令,如下:
[root@instance-fj5pftdp?~]#?debugfs?-w?/dev/vda1
debugfs:??mi?/tmp/y/id
??????????????????????????Mode????[0100755]
???????????????????????User?ID????[0]
??????????????????????Group?ID????[0]
??????????????????????????Size????[37400]?100000??????//?这里修改文件大小为100000
?????????????????Creation?time????[1630929039]
?????????????...
debugfs:??quit
[root@instance-fj5pftdp?~]#?ll?/tmp/y/id
-rwxr-xr-x?1?root?root?37400?9月???6?19:50?/tmp/y/id
[root@instance-fj5pftdp?~]#?echo?3?>?/proc/sys/vm/drop_caches???//?清理inode缓存后,修改才生效
[root@instance-fj5pftdp?~]#?ll?/tmp/y/id
-rwxr-xr-x?1?root?root?100000?9月???6?19:50?/tmp/y/id????//?文件大小变成了100000
[root@instance-fj5pftdp?~]#?/tmp/y/id
uid=0(root)?gid=0(root)?组=0(root)在测试过程中,需要读者注意的是:
因为会对磁盘数据做写操作,所以最好找一个没数据的机器做测试
记得清理inode缓存
测试时如果使用文件当作设备,在挂载文件系统时去修改文件大小 会不生效。原因未知
向elf文件节中添加垃圾数据
是什么?
elf文件中包含很多的节,比如:
.text存放代码
.data存放初始化的全局变量和静态变量
关于elf的文件格式,更多信息可以参考 《程序员的自我修养—链接、装载与库》第三章 elf文件结构描述。
可以向elf的节(比如.data、.text、.bss等)中写入垃圾数据,而不影响程序的正常运行。
这种方式和其他三种方式的区别在于:因为可以删掉没用的节,所以就很容易就把"其他三种方式"修改的elf给还原回来。
比如strip后,文件大小就还原了
[root@instance-fj5pftdp?y]#?ll?-h?id
-rwxr-xr-x?1?root?root?10T?9月???6?20:03?id
[root@instance-fj5pftdp?y]#?strip?id
[root@instance-fj5pftdp?y]#?ll?-h?id
-rwxr-xr-x?1?root?root?37K?9月???6?20:27?id怎么"向elf文件节中添加垃圾数据"?
没有找到linux自带的命令,找到 patch elf工具-patchkit。
看文档感觉有点麻烦,就没有做测试了。
总结
"文件末尾追加数据"和"向elf文件节中填充垃圾数据"这两种方式是真的修改了文件内容,所以受限于磁盘空间大小也不可能生成几个T大小的文件。
"稀疏文件"这种方式,可以方便快速地生成几个T大小的文件,并且让上传、下载此文件 耗费很多时间,甚至是不可能成功。
"修改inode元数据",虽然也可以快速地将文件大小修改为几个T,但是并不会让上传、下载此文件 耗费很多时间,传输的文件大小还是实际大小。
如果应急时碰到超大的elf文件,就先用strip看看体积会不会变小。
本文提到的手段没有在真实的对抗中实践过,仅仅是我自己的研究,欢迎有对抗经验的读者与我交流。

end
招新小广告
ChaMd5?Venom?招收大佬入圈
新成立组IOT+工控+样本分析+AI?长期招新
欢迎联系admin@chamd5.org

关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675








Chamd5安全团队
