iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

🧂 前言

關於圖片類型的Forensic 如果出現在 CTF 上,我都覺得是通靈題

所以只要遇到圖片的 forensic 題,我都會盡可能找可以無腦砸下去就可以解出來的工具,因此今天要來介紹幾個我覺得好用的圖片鑑識工具。


Zsteg

下載連結:https://github.com/zed-0xff/zsteg

專門針對 PNG 跟 BMP 做 steganography 探測。例如偵測 LSB 隱寫、ZLIB 壓縮後的隱藏資料、OpenStego、Camouflage 等格式。用於 CTF 隱藏資料快速找訊息

$ zsteg -h
Usage: zsteg [options] filename.png [param_string]

    -a, --all                        try all known methods
    -E, --extract NAME               extract specified payload, NAME is like '1b,rgb,lsb'

Iteration/extraction params:
    -o, --order X                    pixel iteration order (default: 'auto')
                                     valid values: ALL,xy,yx,XY,YX,xY,Xy,bY,...
    -c, --channels X                 channels (R/G/B/A) or any combination, comma separated
                                     valid values: r,g,b,a,rg,bgr,rgba,r3g2b3,...
    -b, --bits N                     number of bits, single int value or '1,3,5' or range '1-8'
                                     advanced: specify individual bits like '00001110' or '0x88'
        --lsb                        least significant bit comes first
        --msb                        most significant bit comes first
    -P, --prime                      analyze/extract only prime bytes/pixels
        --shift N                    prepend N zero bits
        --invert                     invert bits (XOR 0xff)
        --pixel-align                pixel-align hidden data

Analysis params:
    -l, --limit N                    limit bytes checked, 0 = no limit (default: 256)

        --[no-]file                  use 'file' command to detect data type (default: YES)
        --no-strings                 disable ASCII strings finding (default: enabled)
    -s, --strings X                  ASCII strings find mode: first, all, longest, none
                                     (default: first)
    -n, --min-str-len X              minimum string length (default: 8)

    -v, --verbose                    Run verbosely (can be used multiple times)
    -q, --quiet                      Silent any warnings (can be used multiple times)
    -C, --[no-]color                 Force (or disable) color output (default: auto)

PARAMS SHORTCUT
	zsteg fname.png 2b,b,lsb,xy  ==>  --bits 2 --channel b --lsb --order xy

例子:Picoctf 2022 St3g0

直接把圖片用zsteg分析

$ zsteg pico.flag.png
b1,r,lsb,xy         .. text: "~__B>wV_G@"
b1,rgb,lsb,xy       .. text: "picoCTF{7h3r3_15_n0_5p00n_96ae0ac1}$t3g0"
b1,abgr,lsb,xy      .. text: "E2A5q4E%uSA"
b2,b,lsb,xy         .. text: "AAPAAQTAAA"
b2,b,msb,xy         .. text: "HWUUUUUU"
b2,a,lsb,xy         .. file: Matlab v4 mat-file (little endian) ><�P, numeric, rows 0, columns 0
b2,a,msb,xy         .. file: Matlab v4 mat-file (little endian) | <�, numeric, rows 0, columns 0
b3,r,lsb,xy         .. file: gfxboot compiled html help file
b4,r,lsb,xy         .. file: Targa image data (16-273) 65536 x 4097 x 1 +4352 +4369 - 1-bit alpha - right ""
b4,g,lsb,xy         .. file: 0420 Alliant virtual executable not stripped
b4,b,lsb,xy         .. file: Targa image data - Map 272 x 17 x 16 +257 +272 - 1-bit alpha ""
b4,bgr,lsb,xy       .. file: Targa image data - Map 273 x 272 x 16 +1 +4113 - 1-bit alpha ""
b4,rgba,lsb,xy      .. file: Novell LANalyzer capture file
b4,rgba,msb,xy      .. file: Applesoft BASIC program data, first line number 8
b4,abgr,lsb,xy      .. file: Novell LANalyzer capture file

就直接得到了flag


Binwalk

下載連結:https://github.com/ReFirmLabs/binwalk

他可以分析圖片是否有隱藏的檔案,並將隱藏檔案塊挖出來。對於圖片裡面被 embed 的檔案或壓縮段非常方便。

例子:picoctf 2021 Matryoshka doll

這題下載後可以用binwalk 看看

$ binwalk dolls.jpg
                                                          /Users/yunshiuan/lab/dolls.jpg
--------------------------------------------------------------------------------------------------------------------------------------------------
DECIMAL                            HEXADECIMAL                        DESCRIPTION
--------------------------------------------------------------------------------------------------------------------------------------------------
0                                  0x0                                PNG image, total size: 272492 bytes
272492                             0x4286C                            ZIP archive, file count: 1, total size: 379130 bytes
--------------------------------------------------------------------------------------------------------------------------------------------------

Analyzed 1 file for 85 file signatures (187 magic patterns) in 6.0 milliseconds

發現他裡面有zip 檔 可以把它extra 出來

$ binwalk -e dolls.jpg

                                                    /Users/yunshiuan/lab/extractions/dolls.jpg
--------------------------------------------------------------------------------------------------------------------------------------------------
DECIMAL                            HEXADECIMAL                        DESCRIPTION
--------------------------------------------------------------------------------------------------------------------------------------------------
0                                  0x0                                PNG image, total size: 272492 bytes
272492                             0x4286C                            ZIP archive, file count: 1, total size: 379130 bytes
--------------------------------------------------------------------------------------------------------------------------------------------------
[#] Extraction of png data at offset 0x0 declined
[+] Extraction of zip data at offset 0x4286C completed successfully

他會在現在的所在位置創建一個 extractions 資料夾,進入之後裡面後又有一個jpg,就跟他的圖片一樣一層一層的用 binwalk 解。最後就會拿到flag


foremost

下載連結:https://www.kali.org/tools/foremost/

foremost 跟 binwalk 類似,也是在分離隱寫的檔案,foremost 也可以拿來恢復資料。

剛剛 binwalk 那題也可以用 foremost 解

$ foremost dolls.jpg -T
foremost: /opt/homebrew/etc/foremost.conf: No such file or directory
Processing: dolls.jpg
|foundat=base_images/2_c.jpgUT

stegsolve

下載連結:https://github.com/Giotino/stegsolve

網頁版:https://georgeom.net/StegOnline/upload

GUI 工具,可視化地查看圖片像素 / RGB / alpha 通道 /做 XOR /顏色通道切割,適合人工探索圖片裡的變化/隱寫的痕跡,這個工具也可以解LSB。

例子:Hackme-corgi can fly

這題下載後是一個png 檔,丟進 stegsolve 看一下

下面會有左右箭頭都按按看

在 Red plane 0 的情況下出現 QRcode ,掃了就會是 flag

除了看每個通道外還可以去Analyse 功能中可以看 File format 以及提出LSB 資料...等等


imhex

下載連結:https://imhex.werwolv.net/

十六進位/二進位編輯器,可用來檢查圖片的 header、檔案結構、metadata 有沒有被動過或有異常,介面還不錯看。


pngcheck

下載連結:https://www.libpng.org/pub/png/apps/pngcheck.html

檢查 PNG 檔案的結構正確性,檢測 chunk 是否完整、CRC 是否正確。若隱寫工具改動了部分 chunk,檔案可能破壞或檢查出錯。


modsize

下載連結:https://github.com/flawwan/modsize

一款專門調整圖片尺寸 metadata 的工具,或檢查圖片尺寸/metadata 跟真實圖像的 mismatch(我自己找的這個 library 可以用來看 image metadata 裡頭尺寸標記會不會被偽造)。

以他github 的X-MAS CTF 2018 的題目測試

可以成功修改 height


結論

有這些工具之後還蠻大程度幫助我在遇到圖片鑑識時可以很快就解決,或很快直接放棄,如果有什麼其他好用的圖鑑鑑識工具也歡迎跟我說。


上一篇
Day9 對蘋果進行一波大調查
系列文
Blue 了 Blue 了!只會看封包與log的我錯了嗎!10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言