内容简介:NTFS交换数据流(Alternate DataStreams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上。利用ADS数据流,我们可以做很多有趣的事情,同时对于企业安全来说这类问题也隐藏着巨大的风险。本文主要讨论利用方式以及如何防御这类攻击。在NTFS分区创建ADS数据流文件有
*本文作者:3unshine,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
前言
NTFS交换数据流(Alternate DataStreams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上。利用ADS数据流,我们可以做很多有趣的事情,同时对于企业安全来说这类问题也隐藏着巨大的风险。本文主要讨论利用方式以及如何防御这类攻击。
利用方式
文件隐藏
在NTFS分区创建ADS数据流文件有 两种形式 :一是指定宿主文件;二是创建单独的ADS文件。常用的创建命令有两个: echo 和 type ,echo用于输入常规字符,type则用于将文件附加到目标文件,此类用法通常为CTF出题时候使用。
指定宿主文件
这类情况可以使用命令
echo 9527 > 1.txt:flag.txt
创建目标文件:
正常情况文件无法查看到,可以使用命令:
dir /r
文件内容可以使用命令notepad 1.txt:flag.txt 进行查看和编辑 查看到文件名:
文件内容可以使用命令:
notepad 1.txt:flag.txt
进行查看和编辑:
此类文件可以通过直接删除宿主文件清除。
单独的ADS数据流文件
这类可以通过命令
echo hide > :key.txt
来进行创建:
创建之后在目录下无文件,也没有依赖的宿主文件,并且此类文件在当前目录命令行下是无法查看的,因为它是依赖于文件夹的ADS数据流文件:
因此需要退到上级目录进行查看:
使用命令:
notepad test:key.txt
可以进行编辑:
像这类文件的清除一种是通过删除文件夹的方式,但是假如这个文件是创建在系统根目录如何进行处理,此时需要用到 WinHex Tools – Open Disk 功能。
选中目标盘符,找到目标文件夹。
可以进行查看:
如需删除只需在 WinHex 选中之后按 Delete 即可。
webshell后门
由于 windows xp 之后的系统对于ADS文件都没有执行权限,因此隐藏此类webshell需要用到文件包含来进行配合。
首先创建被包含文件 index.php:s.txt。
内容为:
<?php phpinfo();?>
然后参考: https://blog.csdn.net/nzjdsds/article/details/81260524 的方法,Hex之后通过利用 PHP 可变变量进行二次转换, 696e6465782e7068703a732e747874 为 index.php:s.txt 的hex编码,最终test.php中内容如下:
<?php $a="696e6465782e70"."68703a732e747874"; $b="a"; include(PACK('H*',$$b)) ?>
访问test.php即可:
使用最新版 D盾 扫描也无法发现问题。
PS:这边另外补充一点,文件最好寄宿在纯静态文件,因为像php文件修改后会改变属性,系统层相当于生成了一个新的文件,导致ADS文件失去宿主而消失。
文件上传
这一块主要是用于 Bypass 上传黑名单验证,因为在我们上传数据流文件时,形如 test.php::$DATA 、 test.php:a.txt 这样的后缀, windows 系统必定需要创建一个对应的宿主文件test.php,同时假设我们需要上传的文件内容为:
<?php phpinfo();?>
下面是上传是会出现的现象:
上传的文件名 | 服务器表面现象 | 生成的文件内容 |
---|---|---|
Test.php:a.jpg | 生成Test.php | 空 |
Test.php::$DATA | 生成test.php | <?phpphpinfo();?> |
Test.php::$INDEX_ALLOCATION | 生成test.php文件夹 | \ |
Test.php::$DATA\0.jpg | 生成0.jpg | <?phpphpinfo();?> |
可以注意到上传文件名为 Test.php::$INDEX_ALLOCATION 时会生成对应的文件夹,利用此种特性也可以用于突破UDF提权时遇到无法创建文件夹的问题。
病毒免杀
前面提到过在 windows xp 03 之后的版本的数据流文件都被禁止了执行权限,因此可以使用wscript来运行vbs,此处在C盘根目录使用命令:
type1.vbs > :2.vbs
创建了依赖C盘存在的数据流文件 c::2.vbs ,没有 工具 正常是无法清除的。
使用命令:
wscript c::2.vbs
可以成功执行vbs。
当然我们今天主要是来测试病毒免杀的,所以首先使用 msf 生成一个 dll 木马。
很容易就被确认为病毒。
使用命令:
type test.dll > 1.txt:ms
将dll写入数据流文件:
再次使用 360 联网完全体进行查杀,无法发现此类木马。
使用命令:
regsvr32 1.txt:ms
运行dll,当然由于病毒行为太明显没作处理,360还是会动态查杀的,这个配合一点其他的免杀技术完全过掉也不难,这边不再多做赘述。
目前杀毒软件和webshell查杀对ADS数据流技术的查杀支持并不是很好,并且木马可能进行依赖于盘符的驻留方式,希望能本文能有所帮助。
检测的工具常见的有 LADS (List Alternate Data Streams)、Streams、Sfind 等(供参考)
清除方式目前一个是个人用过的 winhex 和删除宿主文件这两种方式,另一个就是借助相关工具如 IceSword 删除。
https://www.freebuf.com/articles/73270.html
https://www.cnblogs.com/feiyucha/p/9940895.html
https://blog.csdn.net/nzjdsds/article/details/81260524
https://www.i0day.com/733.html
*本文作者:3unshine,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
区块链核心算法解析
【瑞士】Roger Wattenhofer(罗格.瓦唐霍费尔) / 陈晋川、薛云志、林强、祝庆 / 电子工业出版社 / 2017-8 / 59.00
《区块链核心算法解析》介绍了构建容错的分布式系统所需的基础技术,以及一系列允许容错的协议和算法,并且讨论一些实现了这些技术的实际系统。 《区块链核心算法解析》中的主要概念将独立成章。每一章都以一个小故事开始,从而引出该章节的内容。算法、协议和定义都将以形式化的方式描述,以便于读者理解如何实现。部分结论会在定理中予以证明,这样读者就可以明白为什么这些概念或算法是正确的,并且理解它们可以确保实现......一起来看看 《区块链核心算法解析》 这本书的介绍吧!