[WeChall] Training: LSB (Stegano, Image, Training)

http://www.wechall.net/challenge/training/stegano/LSB/index.php

首先,眼神好一点应该都能看到那个Hidden Hint,选中一下,如下。

下面是The carrier image的原图。

打开Hidden Hint是一个软件Steganabara的Project Page,它的Github项目地址是:https://github.com/quangntenemy/Steganabara

要使用Steganabara需要下载这个项目,然后打开run,拷贝里面运行软件的命令,然后把命令行的当前目录切到这个工程的目录,然后运行run里面的命令即可打开Steganabara。

当然,我这里推荐一个更好用的图片隐写破译软件Stegsolve,下载链接:http://www.caesum.com/handbook/Stegsolve.jar

介绍了所有题目给的线索之后,我们要开始分析这道题目了。

这是一道图片隐写题。刚接触到CTF的时候,我就是被图片隐写题勾起了对CTF的极大兴趣,从此觉得CTF很神奇。

回到正题,题目告诉了我们图片采用了LSB的隐写方式。如果不知道什么是LSB,这时候就需要去查一下。

一张图片若使用RGB进行存储,每个像素点每个颜色可以取0~255,对应的二进制就是00000000~11111111,8位。 LSB隐写就是修改了RGB中的某分量(或者说通道)最低的1bit(如[0, 0, 0]修改为[0, 0, 1], 即00000000 -> 00000001),利用最后的1bit进行信息的隐写。

为什么使用最后的1bit进行隐写呢?因为改变1bit,人眼根本分辨不出区别。

至于是不是只能使用最后1bit呢?答案显然否定的。但是改变的位置越低越好,如果选择的位置太高,那么那1bit的改变可能就能导致图像上人眼能分辨的改变,这样图片隐写就会被识破。

知道LSB隐写是什么东西之后,我们就来破译它。首先我以Steganabara作为示范。

Step 1. 用上面所说的办法运行Steganabara。

Step 2. File–>Open或者F3或者用直接拖的办法打开要分析的图片。

Step 3. Filter–>Bit Mask或者Ctrl+B打开Bit Mask Filter。

Step 4. 选中要分析的一个或多个通道的某一个或多个,选中Amplify对差异进行放大,这样看得更明显。然后点OK。

结果如下:

你肯定有一个疑问:你怎么知道Step 4要选哪个通道哪个位?

当然不知道呀,但是你可以试呀,情况并不是很多,而且Steganabara允许你多选,你可以全都选上,如下图:

全选后四位(记得刚刚所说的,改变的位越低越好吗?),得到如下结果:

已经能看到其中的文字了对吧?这种能见到文字但是很模糊,就说明你多选了高位,高位的变化模糊了隐写位的变化,所以可以去除高位继续尝试。

如果全选后两位,如下:

会得到如下结果:

啥东西都看不到。很大可能是因为并没有包含隐写位。因此这个时候就需要再包含高一位进行Bit Mask Filtering。如果包含低三位的话,结果如下,同样能获得Flag。


下面介绍Stegsolve的使用方法。

Step 1. 打开Stegsolve。下载的Stegsolve以及打包成.jar文件了,所以可以直接运行打开。

Step 2. 打开要分析的图片。Stegsolve不能通过拖入的方式打开图片,所以只能通过File–>Open或者快捷键O的方式打开图片。

Step 3. 点击下方按钮切换Bit Mask Filter的方式。

Step 4. 调呀调,调到下图。(这下终于知道我为什么知道上面选隐写位的时候选绿色通道的2号位了吧。)

Leave a Comment