首页 > 代码库 > 文件寄生——寄生虫自体繁衍的道路
文件寄生——寄生虫自体繁衍的道路
Hi,又跟大家见面了,相信大家看了上一篇文章《文件寄生——寻找宿主的不归路(NTFS文件流实际应用)》后,都有看到局限性的一面。
没看过上一篇文章的建议先去看完,然后再来看这篇文章,这样相对可以更加的理解。
传送门:https://bbs.ichunqiu.com/thread-21137-1-1.html
本文作者:i春秋签约作家—gh0stkey
首先来解答一下很多人问得问题:
这个NTFS数据流文件,也叫Alternate data streams,简称ADS,是NTFS文件系统的一个特性之一,允许单独的数据流文件存在,同时也允许一个文件附着多个数据流,即除了主文件流之外还允许许多非主文件流寄生在主文件流之中,它使用资源派生的方式来维持与文件相关信息,并且这些寄生的数据流文件我们使用资源管理器是看不到的。
2、为什么NTFS有数据流这个特性?
原意是为了和Macintosh的HFS文件系统兼容而设计的,使用这种技术可以在一个文件资源里写入相关数据(并不是写入文件中),而且写进去的数据可以使用很简单的方法把它提取出来作为一个独立文件读取,甚至执行。
3、为什么资源管理器里面看不到文件所带的数据流文件呢?
我们之所以无法在系统中看到NTFS数据流文件,是因为Windows中的很多工具对数据流文件的支持并不是很好,就像“资源管理器”,我们无法在“资源管理器”中看到有关数据流文件的变化。
不过这个原因很奇怪,同样是MS自己做的东西,"资源管理器都支持不好,还有啥工具能支持好呢?" ,后来再想,也可能是这样一个原因:在当时写有关NTFS文件系统的数据流存储的时候很多WINDOWS工具没有相应的更新,同时呢NTFS流的显示与普通的文件不一样,需要使用其他的枚举方式来完成,再有NTFS对广大普通用户桌面用户来说没有必要去看到,更多的是被专业软件所使用,即使显示出来也没意义。
OK,进入正题,那么我们今天来分析下NTFS文件流这个寄生虫的一些“缺点”:
1.宿主需求,寄生虫需要宿主才可以繁衍:
2.共存状态。宿主死亡,寄生虫随之死亡。
局限点突破:
1.宿主需求
2.共存状态
咱们一次性把这两个问题解决,首先我们来测试下:
测试1:
一开始我是这样测试的,输入命令:echo mstsec>>hiurlife.txt
因为个人感觉无后缀名的会被windows自动隐藏起来,所以就这样了,而实际上是自己想的有点多了~
测试2:
后来想了下,Windows资源管理器是可以隐藏文件的,而默认的服务器隐藏文件是看不见的,也就是说,宿主是可以隐藏的:
命令:attrib +s +h hi
解释:attrib命令的意思,+s是为文件添加系统文件属性,+h是添加隐藏属性的意思。
反之使用命令attrib -s -h hi 即可显示文件:
这边即使改变了也不会造成寄生虫的死去:
此方法可行,在一定的程度上保护了咱们的寄生虫。
但是我这个人吧,有一个毛病,强迫症,就感觉不舒服,于是就开始了更隐蔽的测试。
测试3:
我重新理了一下思路,既然是无宿主,那么就顺着这个路线开始慢慢的推进,那就试试无宿主自体繁衍:
正常宿主寄生命令:echo gh0stkey>>www:hiourlife.txt
www是宿主文件,无宿主就删掉www呗~
修改后的命令:echo gh0stkey>>:hiourlife.txt
可以看见,无宿主寄生,完全是可以的。测试3成功。
但是却无法应用到实际的操作中,所以这里转换了下思路,让寄生虫寄生到文件夹上即可:
echo gh0stkey>>/:hiourlife.txt
实际测试:
可以应用于权限维持、BypassWAF等等(功能的靠你们自己的思维分散了)。除非是专杀方面的工具,不然没办法检测的出来文件流。而且据我了解一般的WindowsServer的运维是不怎么了解这方面的,倒是取证那一块有这一方面的介绍,所以相对是安全隐蔽的。
文件寄生——寄生虫自体繁衍的道路