f10@t's blog

CTF常见隐写手段小结

字数统计: 1.2k阅读时长: 4 min
2018/08/25

今天想把遇到的知识点进行一个小结,以便于后续复习。

隐写这方面的内容还是丰富的,涉及面较广,知识较多,可以通过各种手段、方式、载体来隐藏重要的信息。在这个过程中你可以学到很多工具的使用以及一些基础理论常识。

图种

什么是图种?

图种一种采用特殊方式将图片文件(如jpg格式)与压缩文件结合起来的文件。可以将你想要隐藏的文件"藏"于另一个文件。生成图种的方法也十分简单,这里我们将一个普通的图片1.jpg和一个secret文本合成图种。

在winhex下,原图的结尾是正常的FF D9。

而生成的图种很明显我们可以看到后续有别的文件。这里我们可以看到内容。

这个属于最简单的手段了,很基础,也很重要,往往拿道题目我们就先放进winhex中查看有没有其他的文件,即图种。

分离方法

分离方法大体上有两种,手动分离和工具分离。手动即将图种的完整部分(即包含文件头和文件尾)截取出来,单独成型。工具分离的话常见的工具有binwalkforemost

这两个工具会自动识别文件头、文件尾,并将文件自动提出,当然了有些题目会删去隐藏文件的文件头和文件尾,"躲"开工具的识别,这时候就需要你手动分离了。附上常见文件头文件尾。

图片信息

可以通过改变图片的信息,比如属性信息来实现信息隐藏。比如下图:   

放进winhex中好像没有什么特殊的信息,这时我们查看属性:

我们可以看到宽和高差距较大,我们尝试在winhex改变图片的高度:

上述信息一直到蓝圈位置,具体含义如下:

1
2
3
4
5
89 50 4E 0D 0A 1A 0A     //图像的标识
00 00 00 0D //文件头数据块IHDR的长度 0x0D = 13Byte
49 48 44 52 //IHDR标识
00 00 02 A7 //图像的宽度,单位为像素 4Byte
00 00 01 00 //图像的高度,单位为像素 4Byte

黄圈和蓝圈分别是图片的长和宽,我们将图片改为正方形。

得到结果:   有时候也会将信息隐藏在属性的备注中,常常容易被忘掉。

zip文件

这种类型文件的题很常见,主要有以下几个方向:

  1. 伪加密:通过特定的加密点来实现。
  2. 暴力破解:使用工具来爆破密码,比如:Advanced Archive Password Recovery等
  3. 明文攻击:明文攻击使用条件是我们有一个加密压缩包中的一个文件,使用这个已知的信息来瓦解加密的信息。同样使用Advanced Archive Password Recovery可以进行明文攻击。
  4. CRC32碰撞:这种类型不是很多见,CRC,循环冗余校验(Cyclic Redundancy Check, CRC),用来校验文件是否出错。主要通过脚本实现爆破解密,当然也有工具可用,如:crc32-master。

更多关于zip文件格式请参考我的另一篇博客:传送门

ntfs文件流隐写、LSB隐写、盲水印隐写

这三个就属于高级一点的了,需要借助工具完成工作。

  1. nfts文件流隐写:请移步我的另一篇博客传送门
  2. LSB隐写:请移步我的另一篇博客传送门
  3. 盲水印隐写:这个说实话,我也是今天在安恒杯上新碰到的题型(孤陋寡闻的我),谢谢冰皇指导(手动滑稽)。

数字水印(Digital Watermarking)技术是将一些标识信息(即数字水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改。但可以被生产方识别和辨认。

实现盲水印是需要条件的,即原图和水印,和图种类似,但是另一种方式隐藏了信息。这里直接用这次安恒的题做示例。 拿到题目以后,里面有两个加密文件:

拖进winhex中查看:         

可以看到该压缩包全局加密,排除伪加密可能,再根据题目暴力的提示,只能暴力破解了。

得到密码后解压,得到两张一模一样的图,但大小有很大区别,这时可以判断属于盲水印了,使用工具BlindWaterMark-master。将大的图作为原图,小图作为盲水印,使用命令行:         

得到水印,放大就能看到flag了:     

CATALOG
  1. 1. 图种
    1. 1.1. 什么是图种?
    2. 1.2. 分离方法
  2. 2. 图片信息
  3. 3. zip文件
  4. 4. ntfs文件流隐写、LSB隐写、盲水印隐写