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" > .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)查看,这些命令对ADS的支持不是很好。
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交换数据流隐写的应用的更多相关文章
- UNCTF杂项题Hidden secret 之NTFS交换数据流隐写
---恢复内容开始--- 做这道题目的经历比较坎坷,题目中用于隐藏flag的jpg文件出了问题,导致不能被交换数据流隐写所以出题人换了一次题目,最后做法也换了,不过出题人一开始的考察点还是基于NTFS ...
- 利用NTFS交换数据流隐藏文件
利用NTFS交换数据流隐藏文件 发表于 2012 年 12 月 15 日 由 晴刃 这篇文章介绍一下Windows的NTFS文件系统的ADS(alternate data streams,交换数据流) ...
- NTFS系统的ADS交换数据流
VC++ 基于NTFS的数据流创建与检测 What are Alternate Streams?(交换数据流) NTFS alternate streams , 或者叫streams,或者叫ADS(w ...
- NTFS的交换数据流ADS应用
NTFS的交换数据流ADS应用 NTFS是Windows常用的文件系统格式.该格式支持交换数据流(Alternate Data Streams,缩写ADS)特性.该特性可以让多个文件流使用同一个文 ...
- 深入理解JPEG图像格式Jphide隐写
0x00 隐写原理 Jphide是基于最低有效位LSB的JPEG格式图像隐写算法,使用JPEG图像作为载体是因为相比其他图像格式更不容易发现隐藏信息,因为JPEG图像在DCT变换域上进行隐藏比空间域隐 ...
- 隐写技巧——利用JPEG文件格式隐藏payload
0x00 前言 继续对图片隐写技巧的学习,这次是对JPEG文件格式的学习和理解.同PNG文件的格式对比,JPEG文件相对简单,读取其中隐藏payload的方式大同小异,两者区别在于文件格式不同,可供利 ...
- LSB最低有效位隐写入门
LSB也就是最低有效位 (Least Significant Bit) 被替换成传递的信息字节.对原图影响很小. 这题可以算是隐写工具[wbStego]的使用入门练习题吧. 第一步,告诉你工具是支持在 ...
- 记XDCTF的misc之旅---base64隐写
bWFpbigpe2ludCBpLG5bXT17KCgoMSA8PDEpPDwgKDE8PDEpPDwoMTw8Cm==ICAgICAgIDEpPDwoMTw8KDE+PjEpKSkrKCgxPDwx ...
- [CTF隐写]png中CRC检验错误的分析
[CTF隐写]png中CRC检验错误的分析 最近接连碰到了3道关于png中CRC检验错误的隐写题,查阅了相关资料后学到了不少姿势,在这里做一个总结 题目来源: bugku-MISC-隐写2 bugku ...
随机推荐
- css3+jquery制作3d旋转相册
首先来看一下今天的炫酷效果: 首先分析一下这张图片: 1.每张图片都有倒影 2.这11张图片呈圆形均匀排列 3.可旋转,上下移动(当然这是效果做出来以后,图片是分析不出来的) 那下面就开始吧. 一.准 ...
- H3 BPM初次安装常见错误详解5-7
错误5:登陆无反应,F12查看后台网络请求错误如下图所示 错误原因:ISAPI未对相应的.net版本允许. 解决方法:IIS的根节点--右侧"ISAPI和CGI限制"打开--将相 ...
- dotnet core 使用 MongoDB 进行高性能Nosql数据库操作
好久没有写过Blog, 每天看着开源的Java社区流口水, 心里满不是滋味. 终于等到了今年六月份 dotnet core 的正式发布, 看着dotnet 社区也一步一步走向繁荣, 一片蒸蒸日上的大好 ...
- Google C++单元测试框架GoogleTest---Google Mock简介--概念及基础语法
就在昨天终于做了gtest的分享,我的预研工作终于结束了,感觉离我辞职的日子不远了,毕竟是专注java二百年啊,要告别实习啦.. 这篇是GoogleMock的简介文档,会在后边附带一个自己的例子. 一 ...
- 使用gulp解决RequireJS项目前端缓存问题(一)
1.前言 前端缓存一直是个令人头疼的问题,你有可能见过下面博客园首页的资源文件链接: 有没有发现文件名后面有一串不规则的东东,没错,这就是运用缓存机制,我们今天研究的就是这种东西. 先堵为快,猛戳链接 ...
- 使用gulp解决外部编辑器修改Eclipse文件延迟更新的问题
本人前端用惯了Hbuilder,修改了eclipse项目中的文件后,由于是外部编辑器修改过的,eclipse不会自动部署更新,一般按F5刷新项目,或者在 preferences > genera ...
- 做一个java项目要经过那些正规的步骤
理论上应该是: 一.立项 1.项目的功能的范围.实现技术方法和细节 2.需要多少人,需要的开发周期(根据客户的需求) 3.分析成本和风险 4.有相应的利润,可以立项 二.需求调研: 三.需求评审.确定 ...
- Spring Bean的加载
Spring加载bean的原则:不等bean创建完成就会将创建bean的ObjectFactory提早曝光加入到缓存中. 单例bean在Spring容器里只会创建一次,后续创建时会首先从缓存中获取 ...
- Oracle常用函数汇总
在Oracle OCP考试中,相当一部分知识点涉及到对于Oracle常见函数的考查.尽管Oracle官方文档SQL Language Reference中Functions一章内列举了所有Oracle ...
- Chrome 扩展机制
据说,今年9月份开始,谷歌将在Chrome浏览器中全面禁用NPAPI插件,Chrome 45以后将无法再加载NPAPI插件,并推出了一种新的机制:扩展. 其实,如果把浏览器看作一块画布的话,NPAPI ...