今天想把遇到的知识点进行一个小结,以便于后续复习。
隐写这方面的内容还是丰富的,涉及面较广,知识较多,可以通过各种手段、方式、载体来隐藏重要的信息。在这个过程中你可以学到很多工具的使用以及一些基础理论常识。
图种
什么是图种?
图种一种采用特殊方式将图片文件(如jpg格式)与压缩文件结合起来的文件。可以将你想要隐藏的文件"藏"于另一个文件。生成图种的方法也十分简单,这里我们将一个普通的图片1.jpg和一个secret文本合成图种。
在winhex下,原图的结尾是正常的FF D9。
而生成的图种很明显我们可以看到后续有别的文件。这里我们可以看到内容。
这个属于最简单的手段了,很基础,也很重要,往往拿道题目我们就先放进winhex中查看有没有其他的文件,即图种。
分离方法
分离方法大体上有两种,手动分离和工具分离。手动即将图种的完整部分(即包含文件头和文件尾)截取出来,单独成型。工具分离的话常见的工具有binwalk和foremost。
这两个工具会自动识别文件头、文件尾,并将文件自动提出,当然了有些题目会删去隐藏文件的文件头和文件尾,"躲"开工具的识别,这时候就需要你手动分离了。附上常见文件头文件尾。
图片信息
可以通过改变图片的信息,比如属性信息来实现信息隐藏。比如下图:
放进winhex中好像没有什么特殊的信息,这时我们查看属性:
我们可以看到宽和高差距较大,我们尝试在winhex改变图片的高度:
上述信息一直到蓝圈位置,具体含义如下:
1 | 89 50 4E 0D 0A 1A 0A //图像的标识 |
黄圈和蓝圈分别是图片的长和宽,我们将图片改为正方形。
得到结果: 有时候也会将信息隐藏在属性的备注中,常常容易被忘掉。
zip文件
这种类型文件的题很常见,主要有以下几个方向:
- 伪加密:通过特定的加密点来实现。
- 暴力破解:使用工具来爆破密码,比如:Advanced Archive Password Recovery等
- 明文攻击:明文攻击使用条件是我们有一个加密压缩包中的一个文件,使用这个已知的信息来瓦解加密的信息。同样使用Advanced Archive Password Recovery可以进行明文攻击。
- CRC32碰撞:这种类型不是很多见,CRC,循环冗余校验(Cyclic Redundancy Check, CRC),用来校验文件是否出错。主要通过脚本实现爆破解密,当然也有工具可用,如:crc32-master。
更多关于zip文件格式请参考我的另一篇博客:传送门。
ntfs文件流隐写、LSB隐写、盲水印隐写
这三个就属于高级一点的了,需要借助工具完成工作。
数字水印(Digital Watermarking)技术是将一些标识信息(即数字水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改。但可以被生产方识别和辨认。
实现盲水印是需要条件的,即原图和水印,和图种类似,但是另一种方式隐藏了信息。这里直接用这次安恒的题做示例。 拿到题目以后,里面有两个加密文件:
拖进winhex中查看:
可以看到该压缩包全局加密,排除伪加密可能,再根据题目暴力的提示,只能暴力破解了。
得到密码后解压,得到两张一模一样的图,但大小有很大区别,这时可以判断属于盲水印了,使用工具BlindWaterMark-master。将大的图作为原图,小图作为盲水印,使用命令行:
得到水印,放大就能看到flag了: