winodws中隐写:交换数据流、及其隐避

举报
黑色地带(崛起) 发表于 2023/02/18 22:56:13 2023/02/18
【摘要】 winodws中隐写:交换数据流、及其隐避

winodws中隐写:交换数据流、及其隐避

 目录

一、交换数据流

1.1、简介:

1.2、使用方法:

第一步:创建文件

第二步:查看创建的文件

第三步:创建交换数据流

第四步:查看文件

第五步:创建多个交换数据流

第六步:再次查看文件

二、隐蔽交换数据流

2.1、简介:

2.2、示例:

2.3、隐蔽性

2.4、优点

2.5、示例:




一、交换数据流

1.1、简介:

WindowsNTFS文件系统的交换数据流(AlternateData Steams, ADS)为众人所熟知,它的历史可以追溯到WindowsNT3. I。交换数据流的诞生源于Windows系统与苹果的HFS(Hierachical File System)系统的交互需求。


NTFS使用交换数据流来存储文件的相关元数据,包括安全信息、原作者及其他元数据。
 


Windows NTFS中的交换数据流是个简单有效的隐藏载体文件渠道。 对于普通检查人员来说, 查看当前目录内容时, 除了一些正常文件外看不到任何特殊信息。 除非使用非常规方法检查, 否则无法发现交换数据流中隐藏的文件。


在一个使用 NTFS文件系统的 Windows计算机上如何用交换数据流隐藏文件, 这是一个简单且足够隐蔽的隐藏文件的方法。


1.2、使用方法:

第一步:创建文件

创建一个文本文件”mike.txt”。

notepad mike.txt

编辑


编辑


第二步:查看创建的文件

执行打印目录清单的命令,查看在当前目录新创建的文件:

dir

编辑




第三步:创建交换数据流

用原始文本文件(mike.txt)创建我们的第一个交换数据流

notepad mike.txt:mikehidden.txt

编辑


编辑

 编辑



第四步:查看文件

常用的浏览技术似乎对交换数据流都是免疫的。 执行完上述命令后, 用命令行或窗口dir
都看不到新文件, 文件大小和磁盘的可用空间也没有变化。 虽然我们刚才的确创建了一个交换数据流 ” mikehidden.txt" ,但却没有明显的证据。

编辑

 编辑





第五步:创建多个交换数据流

同一文件可创建的交换数据流不止一个, 我们可以为 mike.txt 附加多个交换数据流(7.4)

notepad mike.txt:mikehidden2.txt

编辑


编辑

 编辑



第六步:再次查看文件

同样, 还是执行打印目录清单命令, 依然看不到任何交换数据流:

dir

编辑


需要特别注意的是, 默认情况下, 大多数防病毒软件在检查病毒、 木马和其他恶意代码时, 并不会扫描Windows的交换数据流。 如果你在执行取证调查任务, 请确保供应商提供的防病毒装备具备扫描数据交换流的功能。 如果防病毒软件有这个功能, 需要的时候可以启动它。 但是, 启用这个功能有个缺点, 即扫描速度会比平时降低90%, 所以很多供应商提供的防病毒软件默认情况下都是禁用这个功能的。 总之, 交换数据流通常会被检查人员忽略, 因此它应该是个不错的文件隐藏渠道。




二、隐蔽交换数据流

2.1、简介:

隐藏交换数据流还有一个更隐蔽的方式, 就是将交换数据流绑定到一个保留设备名中, 这样就算使用工具(比如LDS或streams.exe)也无法检测到交换数据流。


Windows 有很多不应该用作文件名的保留设备名。 MSDN中还特别列出了这些保留设备名:CON、 PRN、 AUX、 NUL、COMl、COM2、COM3、 COM4、COM5、COM6、COM7、COM8、 COM9、LPTl、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8和LPT9。 这些保留设备名是用来将输出数据发送到周边硬件设备的。 请注意, 这些保留设备名是 “不应该” 作为文件名, 但并没有禁止使用, 这就意味着可以用这些保留设备名作为文件名。


2.2、示例:

 用echo命令创建一个文件, 然后用同样的命令再创建一个使用保留设备名的文件。

C:\sandbox>echo mike> mike.txt
C:\sandbox>echo mike> COMl.txt
The system cannot find the file specified.
C:\sandbox>mkdir COMl
The directory name is invalid.
C:\sandbox>dir


 使用保留设备名创建文件或者目录时系统会报错, 但这只是个假象而已。

既然使用这些保留设备名的主要目的是文件读写, 那么我们就可以跳过自动字符串解析, 并直接把未解析的文件发送至文件系统。 命令中的 "\\?\ ” 表示取消了字符串解析, 并将文件直接发送到文件系统。 这种方法通常用千Windows API编程, 现在我们可以用它 在文件系统中创建以保留设备名命名的文件。 通过融合保留设备名和 \\?\ “ 前缀, 我们就可以绕过标准的文件解析环节, 直接创建一个以保留设备名命名的文件。



我们将 "\\?\ "选项和保留设备名组合 在一起创建一个名为NUL的文件。

C:\sandbox>echo mike > \\?\c:\sandbox\NUL 

执行打印目录内容命令可以看到新创建的NUL文件, 但是本地无法读取该文件。 这有利千躲避一些取证工具或防毒软件的检查。

C:\sandbox>dir

C:\sandbox>more NUL


但是熟悉该技术的人还是可以通过在命令中加入“ \\?\ ” 来读取到文件内容。

C:\sandbox>more \\?\c:\sandbox\NUL


2.3、隐蔽性

融合这个使用保留设备名的技术和交换数据流就可以创建所谓的“隐蔽“ 交换数据流。

为了采用更隐蔽的方法, 我们将以保留设备名命名的文件与交换数据流融合, 也就是
创建“隐蔽“ 交换数据流。


2.4、优点

隐蔽交换数据流不会被交换数据流工具(比如streams.exe)检测到, 也不能通过dir /R命令或其他方法检测到;


大多数工具都不够完善, 无法检测到隐蔽交换数据流;


如果交换数据流是可执行文件, 就可以结合VB脚本、Windows PowerShell等, 通过WMIC (Windows Management InstrumentationC ommand-line)运行, 这就为隐藏和运行恶意软件提供了便利。


2.5、示例:

使用交换数据流将cmd.exe绑定到CON文件中, 以创建隐蔽交换数据流。

C:\sandbox> type cmd. exe > \\?\c:\sandbox\CON:hiddencmd.exe


用WMIC运行这个先前嵌人到隐蔽交换数据中的cmd.exe,系统弹出一个cmd.exe的DOS窗口。然而, 嵌入的可执行文件完全可以是一个功能强大的恶意软件, 那么它的破坏性将是无法评估的。


C:\sandbox>wmic process call create
\\.\c:\sandbox\CON:hiddencmd.exe
Executing (Win32_Processl) ->Create()
        Method execution successful.
        Out Parameters:
        instance of _PARAMETERS

        (
        Processld = 8696:
        ReturnValue = O;
        );


即使防毒产品开启了扫描交换数据流功能来检测恶意软件, 通常也无法检测到隐蔽交
换数据流。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。