揭开NTFS下真正的隐藏文件--'流'的奥秘

原创 2001年09月25日 09:26:00
揭开NTFS下真正的隐藏文件--'流'的奥秘

[ 作者: 陆麟   添加时间: 2001-9-4 14:21:15 ]


作者:陆麟
来源:http://lu0.126.com

NTFS下,支持一个特殊概念,那就是'流'.怎么个流法呢?先看'流'的定义:
stream
A sequence of bits, bytes, or other small structurally uniform units.
BIT的序列,或者小的统一结构单元.当然,小的统一结构单元并不意味着一定要大小统一,格式统一.
流依附于文件而存在,你可以在流中存储2进制数据,文字或者其他一些东西.就象文件一样.文件存什么,流就能存什么.每个文件可以含有多个流.但是流又和文件有些不同.每个流的打开需要单独的一个CreatFile(...)操作,并不是打开文件就打开了流.
流的名字和文件名以':'分隔.例如:ABC:A.
ABC就是文件名,而流的名字为A.当我们操作流时,可以用如下简单方法:
ECHO STREAM1>ABC:STREAM1
ECHO STREAM2>ABC:STREAM2
现在,ABC就有了:STREAM1和:STREAM2共2个流.
而读出流可以用:
MORE <ABC:STREAM1
MORE <ABC:STREAM2
这样,内容就被读出了.CreateFile("ABC:STREAM1",...);
如果用编程的方法.操作就和文件操作一样.
那么为什么要用流呢?流的好处就是隐蔽.WINNT没有任何一个工具用来发现流的存在.我们看
C:/>ECHO "Hi Reader" > XX.TXT:MyStream
C:/>DIR XX.TXT
Volume in drive C is Wizard
Volume Serial Number is 40E5-92D4
 
Directory of C:/
03/18/98  08:36a                      0 XX.TXT
               1 File(s)              0 bytes
               0 Dir(s)   3,399,192,576 bytes free
这就是好处.所以,在绿色兵团里有一篇文章专门介绍了流.说是一种隐藏很深的文件存取格式.
的确深,但是NT只不过没有提供工具而已.而我们仍然有探测到流的存在.那就是,Inside Programming为大家提供的Stream.Exe.该工具可以看到含有流的文件以及所有的流的名字.
当然,NT提供一个API,BackupRead(...)用于流名的读出.既然是Inside Programming,介绍这个API显然不能提供更多帮助,接下来介绍的是一个NATIVE API:NtQueryInformationFile(...)
下面给出该API涉及流的部分:
/*+++
Streaminfo.h
author: lulin
date: 2000.8.25
Abstract:
interface to NtQueryInformationFile
stream portion.
 
---*/
#ifndef __STREAMINFO_H__
#define __STREAMINFO_H__
#include <windef.h>
extern "C"{
typedef LONG NTSTATUS;

typedef struct {
   union {
       NTSTATUS Status;
       PVOID Pointer;
   };

   ULONG *Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;

typedef struct { //infoclass 22
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER EndOfStream;
LARGE_INTEGER AlloCationSize;
WCHAR StreamName[1];
}FILE_STREAM_INFORMATION,*PFILE_STREAM_INFORMATION;

__declspec(dllimport) NTSTATUS __stdcall NtQueryInformationFile(
HANDLE handle,
PIO_STATUS_BLOCK io_status_block,
PVOID FileInFormation,
ULONG FileInformationLength,
int FileInfomationClass
);
}

#endif //__STREAMINFO_H__
NTFS真正存储流名时,名字里会加上:$DATA,例如:ABC:STREAM1在存储时,流名被存为了:STREAM1:$DATA,所以在查询结果中需要去除:$DATA.在这里,我不详细讨论STREAM.EXE如何运作,需要源程序的朋有同样可以购买.20元/份.付款信息件UTILITY页里的信息.

NTFS数据流及高级文件隐藏

一、NTFS数据流是什么:     在介绍NTFS数据流之前,我们先简单了解一下NTFS文件系统。NTFS是微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理...
  • alone_map
  • alone_map
  • 2016年07月07日 14:37
  • 833

NTFS的ADS流应用

所有的文件在NTFS上都至少包括一个流-主流,即是我们平常看到可以存数据的文件。一个流的全名包括下面三个部分::: 流在渗透中比较实用的有这几个方面: top1:在udf提权中,mysql在5.1...
  • u011066706
  • u011066706
  • 2016年04月17日 21:10
  • 887

NTFS数据流及高级文件隐藏

一、NTFS数据流是什么:     在介绍NTFS数据流之前,我们先简单了解一下NTFS文件系统。NTFS是微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理...
  • alone_map
  • alone_map
  • 2016年07月07日 14:37
  • 833

[转]NTFS交换数据流打造文件隐藏…

NTFS文件系统大家应该都不陌生吧?它是微软从NT系统就开始推出的一种有利于计算机安全的磁盘格式。它通过使用一系列的安全措施来对用户组和用户进行权限等方面的管理,确实起到了增强系统安全的作用。NTFS...
  • eltaera
  • eltaera
  • 2013年07月08日 16:06
  • 677

系统中的隐身人——ADS数据流文件

NTFS交换数据流(Alternate Data Streams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某...
  • cosmoslife
  • cosmoslife
  • 2015年10月21日 09:28
  • 593

NTFS文件系统结构--从零开始追踪一个文件的位置

前言:最近由于项目需要,研究了一下NTFS文件系统,NTFS文件系统是windows使用的文件系统,包括NT,2000,xp系列。无奈万恶资本主义的windows将自家的东西全部藏在阴暗的角落,NTF...
  • yiqiaoxihui
  • yiqiaoxihui
  • 2017年04月14日 13:02
  • 2199

NTFS文件系统详解(三)之NTFS元文件解析

在NTFS中,所有存储在卷上的数据都包含在文件中,包括用来定位和获取文件的数据结构,引导程序和记录这个卷的记录(NTFS元数据)的位图,这体现了NTFS的原则:磁盘上的任何事物都为文件。在文件中存储一...
  • enjoy5512
  • enjoy5512
  • 2016年03月23日 19:48
  • 3649

分析NTFS系统,得到特定文件内容

手动在硬盘上找到特定文件的内容
  • enjoy5512
  • enjoy5512
  • 2016年03月20日 21:31
  • 973

mysql利用ntfs的ADS创建文件夹

熟悉mysql的同志大家都知道,mysql版本的更替很快,也导致了黑客技术的变化。 最明显的就是在使用udf提权时候的变化 1.版本 这时候的版本帖主不是非常清楚,因为没有实际遇到过,就从网络资料上抄...
  • yiyefangzhou24
  • yiyefangzhou24
  • 2013年12月07日 19:31
  • 3640

NTFS文件系统主要特点是什么?

我们在使用电脑磁盘时常会有人提到NTFS文件系统,它是什么呢?有什么主要功能呢?NTFS是新技术文件系统(New Technology File System)的英文缩写。与FAT相比,NTFS具有许...
  • forererer
  • forererer
  • 2016年05月05日 17:09
  • 1156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:揭开NTFS下真正的隐藏文件--'流'的奥秘
举报原因:
原因补充:

(最多只允许输入30个字)