NTFS 数据流隐写学习

NTFS 数据流隐写学习

——

概念学习:

  • NTFS文件系统中存在NTFS数据流文件也被称为 Alternate data streams(ADS), 是NTFS磁盘格式的一个特性之一
  • 每个文件都有主文件流非主文件流,主文件流能够直接看到;而非主文件流寄宿于主文件流中,无法直接读取,这个非主文件流就是NTFS交换数据流。
  • 也就是说非主文件流是真实存在于我们系统的,但是我们看不到,可以通过创建这样的数据交换流文件,达到隐写的效果。

——

应用:

  • 隐藏后门文件(恶意文件木马病毒)
  • web实战中隐藏写入的webshell

——

关联文件流隐藏

先在test 文件夹下创建一个 test.txt 文本,内容为 123
请添加图片描述

现在写一个隐藏 txt 文本进去,通过命令行执行写入内容命令:

echo "abc" > test.txt:hide.txt

可以看到执行完命令,dir 查询文件列表还是只有原来的一个 test.txt 文本,但是文本的最后修改时间变化了。
请添加图片描述

可以用Windows 自带的 notepad 查看这个隐藏文件,局限性是需要知道全称,所以在实际情况下还是能达到隐藏。

notepad test.txt:hide.txt

请添加图片描述

————
也可以用 type 命令,将创建好的文件附加在另一个文件上。
在另一个文件夹下创建好一个 hide2.txt 文本

type e:/desktop/hide2.txt > text2.txt:hide2.txt

执行完之后,文件夹下就多了一个 text2.txt 文件,并且里面没有写内容。
这里不知道为啥用 notepad 无法查看隐藏信息,显示找不到文件。
请添加图片描述

除了这里演示的附加上 txt 文本外,还可以附加 .exe .jpg 文件等等进行隐藏

——

单文件流隐藏

上面进行的是把隐藏文件附加在另一个文件上。也可以直接创建隐藏文件流,不附加在其它文件上。
还是在 /test 这个文件夹下。

echo "hide3" > :hide3.txt

查看文件夹下文件并没有变化。
请添加图片描述

——

工具扫描 ntfs 数据流隐藏文件

有很多种工具可以扫描出隐藏的NTFS 数据流文件。
这里测试 NtfsStramsEditor

选择文件夹路径,点击搜索,可以看到前面创建的三个隐藏文件都显示出来了,并且点击可以查看内容。
请添加图片描述

——
在 CTF 题目中,给的 ntfs 隐写文件是在 压缩包内的,需要用 WinRAR 进行提取,不然会造成数据流丢失。

摘要:NTFS是Microsoft公司开发的一种有着良好安全性和稳定性的高性能文件系统,NTFS的文件或文件夹中附加多个额外的数据流,但是其访问一直没有很好的解决办法,本文使用VB2003实现NTFS文件附加数据流的读写类,提供.Net框架下NTFS文件附加数据流的完整解决方案。 关键词:VB.Net NTFS 数据流 类 在项目中选择添加引用->浏览->选择“JWBStreamOP.dll”文件->确定,即可成功引用。 4.1 类的声明: Dim myStreamOP As New ClassJWBStreamOP(“NTFS文件完整路径”) 4.2 属性: 该类共有3个只读属性 属性名 返回值类型 备注 FileName String 只读,在成功声明后使用 Ready Boolean 只读,该类可操作时为True Ver String 只读,类版本、版权信息 4.3 方法 该类共有6个方法: 4.3.1 OpenNTFSStream(ByVal sStreamName As String) As System.IO.FileStream 打开指定文件(声明时指定)的指定数据流,返回值为指定数据流的FileStream接口。 参数列表 类型 传递方式 参数说明 sStreamName String Byval 文件名 4.3.2 GetNTFSStreamSize(ByVal sStreamName As String) As Long 获取指定数据流的大小,返回实际大小,执行失败返回-1 参数列表 类型 传递方式 参数说明 sStreamName String Byval 文件名 4.3.3 AddNTFSStream(ByVal toHidName As String, ByRef percentDone As Double) As Boolean 添加附加数据流,返回执行结果。 参数列表 类型 传递方式 参数说明 toHidName String ByVal 待添加的文件路径 percentDone Double ByRef 传递一个完成百分比的参数 4.3.4 SaveNTFSStream(ByVal sStreamName As String, ByVal outFileName As String, ByRef percentDone As Double) As Boolean将指定的数据流保存为文件,返回执行结果。 参数列表 类型 传递方式 参数说明 sStreamName String ByVal 文件名 outFileName String ByVal 保存文件路径 percentDone Double ByRef 传递一个完成百分比的参数 4.3.5 ReadNTFSStreamsName() As String() 获取文件的所有附加数据流名称,返回名称数组。 4.3.6 DeleteNTFSStream(ByVal sStreamName As String) As Boolean 删除指定数据流,返回执行结果。 参数列表 类型 传递方式 参数说明 sStreamName String Byval 文件名
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goodric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值