忍術隱寫の術
作為一個 CTF 垃圾菜雞,每次下手都只能從別人可能根本不屑的misc開始看能不能撿些分數,最近想說仔細把 Stego 的套路都熟悉一下,下次撿分的時候至少不要連 misc 都撿不了,所以讀了一些關於 Stego 套路的文章,這裡稍微整理一下。
隱藏檔案
這應該算是很容易被發現的一個套路,把檔案藏在圖片裡,原理是讀圖片的工具通常遇到 ‘FF D9’ 結尾就會把它當成 jpg 檔了,所以接在他後面的 data 它也不管,圖片也就能正常顯示,把副檔名改成 zip 就能變回壓縮檔了,只是覺得滿有趣所以記一下。
在 windows 裡面可以直接用 copy /b a.jpg+b.zip output.jpg
做出來,在 linux 裡也可以用 cat a.jpg b.zip > output.jpg
做到。
遇到這種只要用 winhex 開起來看看就會發現後面還有東西了,或是用 binwalk 也可以輕易被發現。
那如果需要把隱藏的東西,或是合在同一個檔案的東西拆開來有幾種方式。
- winhex 把要擷取的地方選起來,右鍵Edit->Copy Block->Into New File
- dd
dd if=[input] of=[output] skip=[ 從哪個byte開始做 ] bs=1
- foremost
foremost [pic]
LSB(Least Significant Bit)
把訊息藏在圖片的數據後面,在 CTF 裡面遇到過,都用 stegsolve 直接解決的,每個 pixel 都是三原色組成的,每個顏色 8bits,如果只改了最後一個 bit,通常是看不太出來的,所以可以把訊息藏在最後一個 bit 裡,用 ascii 或是只用這一 bits 組成不同的圖案來隱藏訊息,這種作法 jpg 是做不到的,因為 jpg 會壓縮圖片,這些隱藏訊息就可能被破壞了,png 和 bmp 才有可能用上這套路。
順帶一提遇到 QRcode 或是條碼都可以用這個網站來掃。
檔案修復
有時候是給的圖片壞掉了要去修,這種時候需要稍微知到一下各種檔案的結構會比較好,不過常常都是開頭的地方出錯而已,用編輯器修好就好了。
有時候是需要改圖片的長寬,把它改大一點就能看到被藏起來的部分了。
metadata
有時候訊息會直接藏在圖片的 metadata,可以用 windows 的右鍵內容直接看到,或是在 linux 下可以 exiftool
來查看,也可以直接丟到線上處理。
像是 picoCTF 2018 的 Truly an Artist。
雙圖
通常會給兩張圖的,就會需要比較兩張圖的差異,可能會是 XOR/SUB/AND/OR/MUL 不一定,可以善用 stegsolve 裡面的 Analysis->Image Combiner 處理。
有時候會是需要比較 data 內的差異,抓出有問題的 data 段來分析。
Blind WaterMark
腳本和說明
除了圖片以外,音檔、pdf、pcap 也都可以藏東西,之後只要有遇到相關的題目會再回來補上。