首页 > 代码库 > NTFS交换数据流隐写的应用

NTFS交换数据流隐写的应用

by Chesky

##目录

####一、NTFS交换数据流(ADS)简介

####二、ADS应用

           写入隐藏文件(文本\图像\可执行文件)

           ADS在Windows平台下的利用——写入后门

           ADS在Web中的利用——Get shell(待完成)

####三、NTFS交换数据流在CTF中的应用——查看ADS内容

####四、清除ADS

 

##Content

####一、NTFS交换数据流(ADS)简介

      在NTFS文件系统中存在着NTFS交换数据流(Alternate Data Streams,简称ADS),这是NTFS磁盘格式的特性之一。每一个文件,都有着主文件流和非主文件流,主文件流能够直接看到;而非主文件流寄宿于主文件流中,无法直接读取,这个非主文件流就是NTFS交换数据流。
      ADS的作用在于,它允许一个文件携带着附加的信息。例如,IE浏览器下载文件时,会向文件添加一个数据流,标记该文件来源于外部,即带有风险,那么,在用户打开文件时,就会弹出文件警告提示。再如,在网址收藏中,也会附加一个favicon数据流以存放网站图标。

      ADS也被用于一些恶意文件隐藏自身,作为后门。

 

####二、ADS应用

    **最好在管理员模式下操作(需要文件的写权限)

    **格式为     宿主文件:关联的数据流文件

    1.向ADS中写入文本文件

首先需要创建一个文本文件,这里的测试文件是001.txt

技术分享

然后向这个文件写入ADS

echo "Baolimo" > 001.txt:hidden.txt
/*echo "隐藏内容" >宿主文件:关联文件*/

技术分享

可以看到,文件字节没有改变,但是时间改动了。

还可以使用type命令,将已经存在的文件附加上去。

 

type "test002.txt" > "001.txt":"test002.txt"
/*type "要隐藏的附加文件">"宿主文件":"要隐藏的附加文件"
最好使用引号括起来,否则会引起误解
*/

 

2、向ADS中写入图像/音频/可执行文件

类似于写入文本文件,可以使用如下命令:

 

type "hidden.jpg" > "targe.jpg":"hidden.jpg"
type "hidden.mp4" > "targe.jpg":"hidden.mp4"
type "hidden.exe">>"targe.txt":"hidden.exe"
type "hidden.exe">>"targe.exe":"hidden.exe"

 

3.在Windows平台下使用ADS构造后门

      在Windows XP中,可执行文件可以隐藏并且被执行。但是,微软已经发现了这个问题并进行了修复,目前在Windows Vista及后续系统中已经无法直接运行ADS中的可执行文件了。

      技术分享

      我们可以使用mklink命令来建立一个链接,但必须要管理员权限才能完成。

mklink D:\moha.exe "hidden.txt":moha.exe

 

      这里有一个在普通用户权限下也可操作的方法,使用Powershell的脚本。

      项目地址

      这个脚本只有两个参数:

      Arguments “BadFunction -Lhost 192.168.1.11 -LPort 3333 -Payload weeeeee”

      -URL即payload,-Arguments是Payload所需要的参数。

      这个后门被运行后,会在注册表下

      HKCU:\Software\Microsoft\Windows\CurrentVersion\Run中建立一个键值为update的键,注册表的键值调用wscript.exe来执行隐藏的VBS。执行完毕后,VBS脚本会解析执行在AppData目录下的payload(当然,是隐藏的)。

      具体内容参考作者的文章。

      在Windows10下,这个方法已经意义不大了,WD会对该脚本进行查杀。不过也可以考虑Winrar自解压文件,但是这个方法……呃……

      从目前公开的资料来看,对ADS的利用主要集中于Web方面,但是我暂时不打算发展这方向的,这一块以后写一写。

 

4.Getshell(待完成)

 

####三、NTFS交换数据流在CTF中的应用——查看ADS内容

  **如果文件原本是在压缩包内的,这时使用除WinRAR以外的软件进行提取会造成数据流丢失。所以务必使用WinRar进行文件解压。

  **最好不使用CMD命令(notepad)查看,这些命令对

 1.使用工具查看

    使用工具查看是最快捷方便的方法了,可以使用NTFS Streams Info这个软件进行查看,但似乎是收费的。

    地址:https://ntfs-streams-info.en.softonic.com/

    在做CTF题时,我用的是Ntfs Streams Editor这个软件。

技术分享

技术分享

网盘下载:http://pan.baidu.com/s/1c2zbNaC

 

2.使用labs

网盘下载:http://pan.baidu.com/s/1slTJwMp

将labs.exe放入需要检测的文件的所在目录下。

lads.exe File /S
/*这条命令会检测File这个目录下所有文件的隐藏流文件*/
lads.exe /S
/*检测根目录下的隐藏流文件*/

 技术分享

可以清楚地看到001.txt有着一个ADS:test002.txt。

知道了Hidden的文件,就可以进行查看了。

notepad.exe test.txt:hidden.txt
mspaint.exe test.txt:hidden.jpg

技术分享

 

####四、清除ADS

 这里可以采用之前的Ntfs Streams Editor这个软件直接删除ADS文件。

 也可以用streams.exe进行清除。

streams.exe -d <File>

技术分享

技术分享

若出现 Error deleting,说明这个进程还在运行,需要先结束该进程再进行删除操作。

NTFS交换数据流隐写的应用