信息安全的一個分支是信息隱藏與傳遞,當年很火的圖種就是其中之一,而作為最易於使用的是圖片隱寫,在各種CTF中,也有出現
隱寫術是一門關於信息隱藏的技巧與科學,所謂信息隱藏指的是不讓除預期的接收者之外的任何人知曉信息的傳遞事件或者信息的內容。隱寫術的英文叫做Steganography,來源於特里特米烏斯的一本講述密碼學與隱寫術的著作Steganographia,該書書名源於希臘語,意為“隱秘書寫”。
0x0001
一個24位的位圖中的每個像素的三個顏色分量(紅,綠和藍)各使用8個比特來表示。如果我們只考慮藍色的話,就是說有2^8種不同的數值來表示深淺不同的藍色。而像11111111和11111110這兩個值所表示的藍色,人眼幾乎無法區分。因此,這個最低有效位就可以用來存儲顏色之外的信息,而且在某種程度上幾乎是檢測不到的。如果對紅色和綠色進行同樣的操作,就可以在差不多三個像素中存儲一個字節的信息。
這個圖片是很經典的最低有效位的隱寫,來自於實驗吧隱寫題目(侵刪),拿到圖片先考慮最低有效位的隱寫,因為比較常見且容易解決,新手下載一個StegSolve,這需要搭建一個JAVA環境,然后需要簡便操作即可發現端倪
這里會發現在紅色 plane0 模式下顯示了一個二維碼。掃碼即可得flag
0x0002
還有一種最常見的是圖種形式,其中之一就是文檔格式變換,在jpg或者png格式下是一個圖片,在別的格式下就不一樣了,或者txt里亂碼藏着key,或者rar、zip解壓后隱藏文件
0x0003
還有最常見的疊圖,倆圖相疊,下層圖片內容就被隱藏,具體細節處不贅述,需新手自己摸索,只提供思路
0x0004
再有就是看到一個圖片先觀察大小,發現大小和他的清晰度不太成正比,這時候就需要考慮包含文件
這個就是一個典型,修改為zip后綴后發現key.txt文件,但是有解壓密碼,無法解壓,kali Linux集成了binwalk,提取,提取txt文件,然后發現加密,winhex 16進制文件查看后發現加密數字,改后拿到flag
0x0005
接下來是一些各種格式圖片的一些規律與格式
jpg
頭: FF D8 FF E0 00 10 4A 46
后綴FFD9
gif 圖片的速度也可用Stegsolve調節
隱藏在詳細信息中
gif 文件頭 GIF89a 47 49 46 38 39 61
png 文件頭 、IHDR塊、PLTE塊、tRNS塊、IDAT塊、文件尾
89 50 4E 47 0D 0A 1A 0A
IHDR(00000008~00000020):
塊長度,ihdr標識,寬,高
(可選數據塊)00000021~0000002F
文件尾:45 4E 44 AE 42 60 82
zip文件頭:
zip偽加密,在文件名后 50 4B 01 02 3F 00 14 00 0*(改成 00)
504B0304
摩斯密碼通常三個元素
bmp(http://www.cnblogs.com/tiandsp/archive/2012/10/22/2734552.html
)
十進制1078,實際數據開始的偏移是。
第一排a-d
文件頭42 4D
大小為0006395E
steghide
在文件中隱藏數據
steghide --embed -cf /root/Desktop/1111.jpg -ef /root/Desktop/embeddate
檢查圖片中隱藏的信息
steghide info /root/Desktop/1111.jpg
steghide extract -sf background.jpg
wav:
52 49 46 46 文見頭 緊接大小(倒序)
Foremost ( foremost -v -i /root/Desktop/oddpic.jpg -o /root/aaa) 目錄必須為空
支持恢復如下格式:avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip。
mp3:mp3stego
decode -X -P simctf music.mp3