什么是隐写?由于我们识别声音或图片的能力有限,因此稍微改动信息的某字节位的数据是不会影响我们识别声音或图片的。举个最通俗的例子,古人的藏头诗就是隐写的一种方式:

而CTF图片隐写术就是利用图片来隐藏一些机密信息,一张看起来很正常很普通的图片其实内部隐藏了其他玄机。

图种(多文件压缩)

所谓图种,就是先把要想隐藏的东西打包压缩,然后再跟一张正常的图片结合起来,达到隐藏信息的目的。

可以直接使用CMD "copy/b" 直接压缩图片:

copy/b a.png + b output.png

例如,将一张jpg隐藏到另一张png图片中:

用kali中的"binwalk"工具可以根据检索匹配文件头的原理轻松地检索图片文件中隐藏的其他文件,还是以这张图片为例:

找到隐藏的文件在kali 中可以使用"foremost"或者"dd",将output.png进行分离,分离出的隐藏的文件:

各位置信息隐藏

2.1 文件头尾

较为直接的方式,直接将文字信息隐藏在图片文件的头尾内容之中,例如下图:

使用16进制编辑工具(winhex)直接打开,可以发现再图片基础信息字段之后,直接插入了flag信息:

还有些是在文件尾部插入信息:

2.2 IHDR隐藏信息

文件头数据块IHDR(header chunk):它包括有PNG文件里存储的图像数据的基本信息,并要作为第一个数据块出如今PNG数据流中,并且一个PNG数据流中仅仅能有一个文件头数据块。

文件头数据块由13字节组成,它的格式如下表:

域的名称

字节数

说明

Width 4 bytes 图像宽度,以像素为单位
Height 4 bytes 图像高度,以像素为单位
Bit depth 1 byte 图像深度:
索引彩色图像:1,2,4或8
灰度图像:1,2,4,8或16
真彩色图像:8或16
ColorType 1 byte 颜色类型:
0:灰度图像, 1,2,4,8或16
2:真彩色图像,8或16
3:索引彩色图像,1,2,4或8
4:带α通道数据的灰度图像,8或16
6:带α通道数据的真彩色图像,8或16
Compression method 1 byte 压缩方法(LZ77派生算法)
Filter method 1 byte 滤波器方法
Interlace method 1 byte 隔行扫描方法:
0:非隔行扫描
1: Adam7(由Adam M. Costello开发的7遍隔行扫描方法)

在CTF图片隐写中,常常通过改变Height(4 bytes)来隐藏有效信息,例如下图:

使用16进制编辑工具(winhex)直接打开,尝试改变IHDR中的高度信息(PS:一般图片宽度信息无法修改,会造成图片乱码)“01 DD”——>“02 DD”:

隐藏的flag信息通过高度调整,被暴露出来:

2.3 exif信息隐藏

按照国际Exif2.1标准,当你用单反相机或手机拍摄完一张照片,相机会生成一个如JPEG格式的电子文件保存起来,这个jpeg图片它不只保存了你拍摄的画面,还保存很多其他的一些信息如:相机品牌、手机型号、闪光灯、快门速度、光圈大小、感光度及GPS坐标等,这些信息就是EXIF信息。最常见的就是:右键——>属性,这样只能够查看部分的exif信息。

当然这个信息是可以被篡改的,例如使用“PowerExif”等工具,在kali中,可以使用"exiftool"直观的查看图片各类exif信息:

例如下面这张照片,我们“右键->属性”只能看到部分的base64编码信息:

借助"exiftool"在Comment中发现另一部分编码信息:

文件修复

将文件头内容(16进制编码)修改或删除,会造成文件无法打开,损坏的问题,可以通过16进制编码器(winhex)进行修复。

需要我们比较熟悉已知常见文件的文件头标准编码:

文件名

文件头

文件尾

JPEG (jpg) FFD8FF FFD9
PNG (png) 89504E47 AE426082
GIF (gif)

47494638

003B

ZIP Archive (zip) 504B0304

504B

TIFF (tif) 49492A00
Windows Bitmap (bmp) 424D
CAD (dwg) 41433130
Adobe Photoshop (psd) 38425053
Rich Text Format (rtf) 7B5C727466

...更多参考

例如下面这张无法打开的png图片,导入winhex后,发现文件头明显不符合PNG图片的标准编码:

"89 5A"——>"80 5A"改为PNG标准编码,发现图片可以正常打开了:

LSB隐写

LSB全称为 least significant bit,是最低有效位的意思。Lsb图片隐写是基于Lsb算法的一种图片隐写术,一般能使用LSB进行隐写的图片需要是无损压缩(png图片)或者无压缩的图片(BMP图片),因为这能保证我们修改的信息不至于丢失,也就能得到正确的表达。

以png图片为例子,png图片中的图像像数一般是由RGB三原色(红绿蓝)组成,每一种颜色占用8位,取值范围为0x00~0xFF,即有256种颜色,一共包含了256的3次方的颜色,即16777216种颜色。而人类的眼睛可以区分约1000万种不同的颜色,这就意味着人类的眼睛无法区分余下的颜色大约有6777216种。

而LSB隐写算法就是去修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),人类的眼睛不会注意到这前后的变化,每个像素可以携带3比特的信息。

例如下面这张经典的图:绿色,十进制的235,二进制的11101011,通过二进制运算加、减3修改最低有效位,发现肉眼根本区分不出来差别:

像下面这张图,通过"StegSlove"工具打开:

利用LSB算法提取最低有效位信息,可以有效的发现隐藏的压缩包文件:

还有一种双图比较的题型,也是利用RGB图层更改的方式来隐藏信息:

将上面两张肉眼无法区分的图片,放入"StegSlove"中进行RGB图层处理,在SUB(R,G,B separate)发现了一张模糊二维码:

再将这张模糊二维码进行RGB图层处理,在RED、GREEN、BLUE plane 0 下分别发现3张清晰的二维码,扫码就得到了隐藏的具体信息:

总结

以上的几种就是CTF中常见的图片隐写方法和题型,而在实际的隐写技术中还有更多的隐写算法和隐藏技术。这里在总结下上述的思路:

在图像数据中加入数据,不影响视觉效果情况下修改像素数据,加入信息;(图种)
在图片右击查看属性,在详细信息(exif)中隐藏数据;(exif信息隐藏)
根据各种类型图像的固定格式,在各位置添加数据;(头、尾、IHDR信息隐藏)
在编译器中修改图像开始的标准编码,改变其原来图像格式;(文件修复)
将数据类型进行改写(rar或者zip数据改为jpg等格式);(文件修复)
利用隐写算法将数据隐写到图片中而不影响图像,隐写常用的算法有LSB,jpghide;(LSB算法)

​​掌握类似的图片隐写技术,一方面可以帮助我们了解暗水印的原理,另一方面对我们在恶意文件隐藏(类似图片木马)检测的防御中,更有效的去取证溯源。

【安全技术揭秘系列】探索图片隐写的奥秘相关推荐

  1. CTF MISC图片隐写简单题学习思路总结(持续更新)

    系列文章目录 第一篇文章: CTF Crypto简单题学习思路总结(持续更新) 文章目录 系列文章目录 前言 一.JPG类隐写 1.1 JPG文件末尾添加字符串 1.2 JPG文件中添加字符串 1.3 ...

  2. 推荐几篇图片隐写技术的文章

    这几天了解与学习图片隐写相关的技术点,在查找与阅读相关的文章后,选了三篇不错的文章推荐给大家. 说明:三篇文章是一个系列,专门讲图片隐写.内容全面,有原理介绍,还有实践操作指引,可所谓用心之作,很棒! ...

  3. 图片指定区域根据rgb值计算出对应的坐标地址_【水文】震惊!高考期间,这位学生居然能通过图片隐写实现文字通信!...

    图片隐写术,是一种将信息藏在图片中的技术.这个技术的前景非常广阔,在网络安全.神经网络对抗攻击等都有一定应用. 2020年7月10日,我开发出图片隐写工具--TPEncoder v1.0.2,可以将海 ...

  4. python图片隐写_Lsb图片隐写

    前言 在刚刚过去的网鼎杯第一场比赛中,做到了一道杂项题是关于lsb隐写的.LSB全称为 least significant bit,是最低有效位的意思.Lsb图片隐写是基于lsb算法的一种图片隐写术, ...

  5. linux隐写文件剥离,杂项的基本解题思路(1)——文件操作隐写、图片隐写

    文件操作隐写 图片隐写 压缩文件处理 流量取证技术 文章本来是分成4部分的,但是前两部分何在一起写了也就没有分开,所以干脆就只分了两部分 文件基本类型的识别 一.kail 下 file 文件名 原理就 ...

  6. 【LSB】图片隐写文档大纲

    第一章 绪论 1.1研究背景 1.2研究意义 1.3主要工作 第二章 图片隐写和LSB算法 2.1关于图片隐写术 2.2LSB算法 第三章 系统设计与实现 3.1图像的加载 3.2文本的预编码 3.3 ...

  7. CTF解题思路:图片隐写

    一.说明 说道图片隐写,应该算是一种信息隐藏,属于信息保护机制. 二.题目 这是一个利比亚-密码有多简单的题目. 使用的主要工具为: binwalk.foremost.dd 1.首先将图片传至kali ...

  8. 由一道简单的图片隐写题总结思路

    题目来源:BUU [WUSTCTF2020]find_me 已我的经验拿到杂项图片题一般这个思路(以后自己变强了再补充): 右键看属性有无提示. binwalk分析文件是否隐写入其他文件有则forem ...

  9. 网络安全培训小白入门课,从buu到红帽的图片隐写

    图片隐写是MISC中的一部分,雨笋教育小编给小白从BUU中找到入门MISC之图片隐写,分享给大家 恢复黑白图片 buuoj 静静听这么好听的歌 由于网上wp只给了代码而且函数非常吓人,因此写了一个新手 ...

最新文章

  1. 蓝桥杯国赛-矩阵计数三种解法-java实现
  2. 基于i.MX RT电磁智能车AI算法的一些讨论
  3. 三、如何手动实现一个微前端框架雏形
  4. win7_64 安装 caffe
  5. Constructor vs Object
  6. 苹果python环境依赖库,【强迫症系列】【mac】更改 Python 的 pip install 默认安装依赖路径...
  7. 【Linux】系统移植篇一--linux系统移植导学
  8. 带图破解无源晶振与有源晶振知识
  9. 描述TCP和UDP区别
  10. win10录屏电流声_Win10自带录音录屏工具使用体验,值得一试
  11. PictureSelector九宫格图片展示
  12. YUV与RGB互转各种公式 (YUV与RGB的转换公式有很多种,请注意区别)
  13. 为什么正态分布如此常见?
  14. 图的遍历(书本内容)
  15. datagridvie设置行高列宽_DataGridView 列宽和行高自动调整的设定
  16. P2P网贷平台系统市场占有率排行榜
  17. Verilog语法中parameter与localparam
  18. VMware虚拟机安装教程图解,虚拟机…
  19. 通讯录管理系统(c/c++)含完整源码~
  20. python微博爬虫分析_基于Python的新浪微博爬虫研究

热门文章

  1. 重温WIN32 API ------ 最简单的Windows窗口封装类
  2. openstack核心服务
  3. 呕心沥血之作-----线性代数总结(1)--行列式基础
  4. 【开发工具集】Process Explorer——进程资源管理器
  5. flask均值哈希网页分镜
  6. Class4-Week2 Case study
  7. 【Tryhackme】Hacker+of+the+Hill+#1
  8. 双系统电脑从window切换到ubuntu,外接显示屏用不了了(显卡驱动问题,降低驱动解决)
  9. PHP编辑正方体,【转】PHP编辑器:phpDesigner
  10. WPS Office AI实战:Word写作如有“神”助