【杂项入门-NTFS数据流】

  • A+
所属分类:逆向工程

本以为五一假期能把杂项理顺、学会。我高估了我的能力,也低估了杂项的技术涵盖量。

重新定个目标,五一不成,那就六一吧。

【杂项入门-NTFS数据流】


杂项第一题: 很普通的数独(ISCCCTF)

【杂项入门-NTFS数据流】

下载压缩包

https://ctf.bugku.com/files/2678e3fdabcb61c0ae67719c27732497/zip

下载后改成.zip后缀

解压后得到许多图

【杂项入门-NTFS数据流】

开始以为是让把这个数独完成才能得到下一步线索,于是在把图片拖到PowerPoint里,背景色设为透明,找了几个合适的图片叠了起来,得到了完整的数独的答案:

【杂项入门-NTFS数据流】

谁知道并没有什么卵用,只有看别人的wp了。正确方法是把这25个图片按5×5排列,然后把有数字的格记为数字1(代表黑色),没有的记为0(代表白色),再把得到的数字用python画出二维码。

【杂项入门-NTFS数据流】

1.png,5.png,21.png仔细看看就是是二维码的定位形状,三个角上的方形块,但是按排列的画,这三个图的顺序不对,需要将图片1.png,5.png,21.png重命名成:5.png,21.png,1.png,

【杂项入门-NTFS数据流】

然后把01提取出来:

我将有数字的格子写成0,没有的写成1,

比如第一行写成000000010101010111010111110000001111010000000,然后用之前写的01数字转换成图像的脚本生成了二维码hhh

 

111111101010101000101000001111110000101111111

100000101100111101010011101100011001001000001

101110101110011111010011111101000101001011101

101110101101100010001010000011110001101011101

101110100011100100001111101111111011101011101

100000101100100000011000100001110100001000001

111111101010101010101010101010101011101111111

000000000011001101001000110100110011100000000

110011100100100001111111100100101000000101111

101001001011111111101110101011110101101001100

100000111100100100000110001101001101010001010

001100010011010001010011000100000010110010000

010110101010001111110100011101001110101101111

100011000100011100111011101101100101101110001

001100110100000000010010000111100101101011010

101000001011010111110011011111101001110100011

110111110111011001101100010100001110000100000

110101000010101000011101101101110101101001100

010011111110001011111010001000011011101101100

011001011001010101100011110101001100001010010

010111111111101011111111101101101111111111100

011110001100000100001000101000100100100011110

111110101110011100111010110100110100101010010

110010001011101011101000111100000011100010000

101011111011100111101111111100001010111110010

110100011000111000100111101101111101000100010

111101111110001001000011010110001111110111110

011001010101000110010100010001000101101010001

011101110101101101100100001101101000111101001

110110001001101100010101101111110100101100110

000011100111000000000100001010101111100010010

111010010011110011101110010100001011111010010

101001100010111111110100000100001010101010100

000010011001001101110101001111100101111101101

000010111101110001101011000001000101110100110

011110011010100010100000011011000001110010000

100110100100001101111111101100101110111110011

000000001111110101101000101011100100100011010

111111100011111011011010101101110011101011110

100000101110101101101000111110010001100010001

101110101011100001111111101101001000111111011

101110100110111101101000001001101100011101101

101110100000011101100001101010110010010010001

100000101011001011111011001011000011010110000

111111101010101001111011110101101110000101101

 

脚本如下:

from PIL import Image

x = 45

y = 45

 

im = Image.new('RGB', (x, y))

white = (255, 255, 255)

black = (0, 0, 0)

 

with open('file.txt') as f:

    for i in range(x):

        ff = f.readline()

        for j in range(y):

            if ff[j] == '1':

                im.putpixel((i,j), black)

            else:

                im.putpixel((i,j), white)

im.save("1.jpg")

 

二维码:

【杂项入门-NTFS数据流】

扫出来是:

Vm0xd1NtUXlWa1pPVldoVFlUSlNjRlJVVGtOamJGWnlWMjFHVlUxV1ZqTldNakZIWVcxS1IxTnNhRmhoTVZweVdWUkdXbVZHWkhOWGJGcHBWa1paZWxaclpEUmhNVXBYVW14V2FHVnFRVGs9

是个多层的base64,解密拿到flag。

flag{y0ud1any1s1}


杂项第二题: PEN_AND_APPLE

【杂项入门-NTFS数据流】

下载mp4

之前做了mp3,做了音频,这是头一次碰到视频。

【杂项入门-NTFS数据流】

。。。。。

视频另存到桌面

提示是Windows下的type命令,Windows下的type命令可以显示文件内容。

 

用alternatestreamview可以提取出其中的文件,得到flag

 

(说实话自己做了做不出来哈啊哈哈哈哈哈哈)

 

这道题有些脑洞,不过也是一种很常见的隐写技术,后来提示与win的type命令有关,可以找到相关资料,type命令可以用于ntfs文件写入,通过工具“`alternatestreamview“`扫描文件得到如下所示

【杂项入门-NTFS数据流】

SYC{Hei_hei_hei}

 

 

之后又顺带下载了大佬的一个NTFS数据流扫描工具,

【杂项入门-NTFS数据流】

利用NTFS流文件隐藏

 

首先用记事本新建两个文本文档,分别名为“1.txt”“2.txt”,其内容为“正常文件、数据流文件”,打开CMD命令行窗口, 进入两个文件所在文件夹,输入 type 2.txt>1.txt: shujuliu.txt,回车.即可将文件2.txt的内容加入1.txt,内容以数据流方式保存,该数据流名为shujuliu.txt.在资源管理器中查看宿主文件1.txt,发现文件的修改日期和文件大小 都无变化,现在删除2.txt,执行命令:notepad 1.txt:shujuliu.txt ,即可查看数据流文件中的文件内容了.


NTFS数据流及高级文件隐藏

一、NTFS数据流是什么:

    在介绍NTFS数据流之前,我们先简单了解一下NTFS文件系统。NTFS是微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。NTFS比FAT文件系统更稳定,更安全,功能也更为强大。如果要让FAT文件系统转换为NTFS文件系统,可以在“命令提示符”中输入“convert 分区盘符: /fs:ntfs”,即可将该分区的文件系统转换为NTFS。

 

  NTFS交换数据流(alternatedata streams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流,就是说除了主文件流之外还可以有许多非主文件流寄宿在主文件流中。它使用资源派生来维持与文件相关的信息,虽然我们无法看到数据流文件,但是它却是真实存在于我们的系统中的。创建一个数据交换流文件的方法很简单,命令为“宿主文件:准备与宿主文件关联的数据流文件”。

 

NTFS数据流的创建和打开方式:

1、创建一个NTFS数据流

e:type file.exe>>1.jpg:a.exe     

以1.jpg文件为宿主文件,将file.exe文件寄宿在1.jpg文件中,创建了一个ntfs数据流,名称为1.jpg:a.exe,

这样就讲file.exe文件以ntfs数据流的形式                                                           寄宿在了1.jpg文件中,

并且形成了一个流文件1.jpg:a.exe,只要执行这个流文件就可以打开隐藏在1.jpg中的file.exe文件了。

 

2、打开一个NTFS数据流

start e:1.jpg:a.exe                      

打开ntfs数据流文件1.jpg:a.exe,这里start参数后面必须跟绝对路径,且只能在cmdshall中打开,双标双击无效。

然而在微软为了安全性,在windows-xp以后的操作系统(从win7开始)就不允许直接使用start打开ntfs数据流文件,而必须使用mklink命令来为流文件建立一个链接,然后通过这个链接文件来打开流文件,以上面的为例:直接使用start e:1.jpg:a.exe是无法打开这个流文件的,提示权限不够,所以我们必须这样做:

 

1、首先为流文件建立一个链接

mklink e:b.exe e:1.jpg:a.exe             

将流文件1.jpg:a.exe链接到快捷方式b.exe上

2、使用start打开这个流文件的快捷方式

start e:b.exe                                     

这样就可以打开1.jpg:a.exe这个流文件了

 

二、高级文件隐藏

将文件藏入另一个文件内,举例将文件藏入123.jpg文件

1、windows下隐藏:

copy /b 123.jpg +123.rar 1234.jpg   

将123.rar隐藏到123.jpg中,生成的新文件为1234.jpg,修改后缀名还原,注意图片文件和压缩文件的顺序不能错,图片在前,否则图片不能正确显示。

2、linux下隐藏:

cat 123.zip >> 123.jpg                         

将123.zip文件隐藏到123.jpg中,重定向到123.jpg中,修改后缀名还原

 

三、windows下创建系统隐藏文件夹

1、windows下创建隐藏文件夹

attrib +a +s +h  文件夹名称,创建一个系统隐藏的文件夹

 


本文始发于微信公众号(LemonSec):【杂项入门-NTFS数据流】

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: