文件类型

识别方法

方法一 file

Linux下file命令

file 文件名

方法二 文件头类型

Windows下通过winhex查看文件头字段识别文件类型

image.png

文件分离操作

方法一: Linux下使用Binwalk工具进行文件的分析和分离。

分析文件:binwalk filename
分离文件:binwalk -e filename

方法二: 如果binwalk无法正确分离出文件,可以使用formost工具。

foremost 文件名 -o 输出目录名

方法三: 当文件自动分离出错或因为其他原因无法自动分离时,用dd工具进行手动分离。

dd if=源文件 of=目标文件名 bs=1 skip=开始分离的字节数
参数:if=file输入文件名,省略为标准输入。
参数:of=file输出文件名,省略为标准输出。
参数:bs=bytes同时设置读写块的大小为bytes。
参数:skip=blocks从输入文件开头跳过blocks个块后再开始复制。
参数:count一共取的块。

方法四: 使用010Editor直接选择对应的十六进制,然后右键单独保存,实现分离。

文件合并操作

Linux

Linux下:cat 要合并的文件 输出的文件

完整性检测: md5sum 文件名

Windows

Windows下: copy /b 合并的文件 输出的文件

完整性检测:certutil -hashfile 文件名 md5

文件内容隐写

文件内容隐写,是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或结尾部分,分析时通常重点观察文件开头和结尾部分。如果在文件内容中间部分,通常搜索关键字KEY或者flag来查找隐藏内容。

示例

1.Firework

  • 使用010Editor打开文件后,如果看到文件头部包含firework的标识,可以通过firework来找到隐藏的图片。

2.Exif

  • Exif按照JPEG的规格在JPEG中插入一些图像、数字相机的信息数据以及缩略图像,可以通过与JPEG兼容的图片浏览器,图片处理软件等查看Exif格式的图像文件。
  • 右键属性,查看exif或者详细信息,在相关的选项卡中查找flag。
  • Linux下直接使用exiftool工具查看

3.Stegsolve

  • 当两张jpg图片的样式,大小,像素基本相同时,可以考虑进行结合分析,将两个文件的像素进行ADD,SUB,XOR等操作,看是否可以得到有用的信息。Stegsolve工具可以方便的进行这些操作。

4.LSB(最低有效位)

  • LSB替换隐写的基本思想:用嵌入的秘密信息取代载体图像的最低比特位,原来的7个高低平面与替代 秘密信息的最低位平面组合成含隐藏信息对=的新图形。
  • 通过修改像素中最低位的一位来达到隐藏的效果。
  • 也可以使用Stegsolve来进行。
  • Linux下的工具:zteg工具
    • 下载:gem install zsteg
    • 检测LSB隐写:zsteg xxx.png
  • Windows下的工具:wbstego4工具。能够解密通过LSB加密的图片。
  • 其它方式:Python脚本。

5.TweakPNG

  • TweeakPNG是一款PNG图像浏览工具,它允许查看和修改一些PNG图像文件的原信息存储。
  • 如果文件头是正常的,但却无法打开,可以使用TweakPNG修改CRC。出现校验信息错误时,可以根据错误的CRC去十六进制中搜索,然后改成正确的CRC。(CRC上一行之后的 8个字节,前四个为宽度,后四个为高度(十六进制下的第二行前八位))
  • 有时不是CRC的错误,而是图片的宽高错误,需要通过CRC计算出正确的高度或宽度。可以通过脚本进行计算。

6.Bftools

  • Bftools常用于解密图片信息。
  • Windows下:
    • Bftools.exe decode braincopter 要解密的图片名称 -output 输出文件名
    • Bftools.exe run 上一步输出的文件。

7.SilentEye

  • Windows下可视化解密工具。

8.JPG图像加密

  • Stegdetect 工具用于探测JPEG文件的加密方式。(Linux下)
    • 可以检测到JSteg,F5,Camouflage,OutGuess,JPHide,appendX,Invisible Secrets等加密方式所隐藏的信息。
  • stegdetect xxx.jpg
  • stegdetect -s 敏感度 xxx.jpg

9.Jphide

  • 基于LSB的JPEG格式图像隐写算法。
  • 如果使用Stegdetect检测到使用jphide,可以使用Jphs进行解密。

10.Outguess

  • outguess用于解密文件信息。
  • 如果确认使用OUtguess加密的图片,可以使用outguess进行解密。
  • outguess -r 要解密的文件名 输出结果文件名

11.F5

  • 识别是F5加密后,进入F5-stegangraphy_F5目录,将图片文件拷贝下来,cmd进入该目录。
  • Java Exrtact 待解密文件名 -p 密码
  • 运行成功后,在output.txt可以看到解密结果。

12.二维码处理

  • 使用工具CQR打开图片,查看内容字段。
  • 如果二维码的定位角覆盖,该工具有一定几率识别,如果不能识别,需要使用其他工具将另外几个角的定位符移动搭配相应的位置,补全二维码。
  • 如果二维码定位点中间是白色,可能是被反色了,可以使用其它工具进行反色再回来扫描。

工具

stegsolve

参数

Analyse下面几个功能键作简单介绍:

File Format:文件格式,这个主要是查看图片的具体信息

Data Extract:数据抽取,图片中隐藏数据的抽取

Frame Browser:帧浏览器,主要是对GIF之类的动图进行分解,动图变成一张张图片,便于查看

Image Combiner:拼图,图片拼接

用法

image.png

解释

RGB是红绿蓝 但他们的值代表的实际上是亮度R的数字越大,则代表红色亮度越高;R的数字越小,则代表红色亮度越低。G,B同理R的亮度各有256个级别,GB同理。即从0到255,合计为256个。从数字0到255的逐渐增高,我们人眼观察到的就是亮度越来越大,红色、绿色或蓝色越来越亮。然而256是2的8次方 所以你会看见上图的7~0  一共8个通道而Alpha就是透明度 该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域alpha的值为0就是全透明,alpha 的值为 255 则表示不透明因此左半部分就理解了右半部分就是Extra By(额外的)和Bit Order(位顺序)和Bit Plane Order(位平面的顺序)1).Extra By(额外的):分为row(行)和column(纵)   每个像素用R,G,B三个分量表示,那么一张图片就像一个矩阵,矩阵的每个单位就是(0~255,0~255,0~255)   也就会有是纵排列和行排列了,一般事先访问行再访问列(如果相反会引起ve使用方法)2).Bit Order(位顺序):MSB是一串数据的最高位,LSB是一串数据的最低位。3).Bit Plane Order(位平面的顺序)     整个图像分解为8个位平面,从LSB(最低有效位0)到MSB(最高有效位7)随着从位平面0 到位平面7,位平面图像的特征逐渐变得复杂,细节不断增加。(一般我们的图片如果是RGB那么就是24位 3乘8嘛)4)Bit Plane Order(位平面的顺序):一般图片是24位 也就是3个8 大家可以想像成三明治 比如BGR就是B为三明治第一层 G为第二层 R为第三层。 3.Steregram Solve:立体试图 可以左右控制偏移 可以放张图片试一下就知道这个是什么意思了4.Frame Browser:帧浏览器   主要是对GIF之类的动图进行分解,把动图一帧帧的放,有时候会是二维码5.Image Combiner:拼图,图片拼接(意思显而易见)

接下来会带大家实战去深入理解一下Data Extract里面ctf经常用到的LSB隐写
image.png
这个我们之前介绍的很详细
而LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),而人类的眼睛不会注意到这前后的变化,(人类的眼睛只能识别一部分颜色的变化)
![]image.png

如果我们修改lsb那么颜色依然和没修改的一样,并且修改的话每个像数可以携带3比特的信息。
image.png
这个作用是在于把最低位的二进制全部提取出来
image.png
这个作用在于对提取出来的最低位使用lsb解码算法

上一篇 下一篇