初學看到大神總結:http://www.cnblogs.com/xishaonian/p/7633038.html
http://blog.csdn.net/qq_37592482/article/details/78146259
覺得很有用。
細節例題分析http://www.cnblogs.com/k1two2/p/5170178.html
備注: 隱寫的載體是PNG的格式,如果是像之前的jpg圖片的話就是不行的,原因是jpg圖片對像數進行了有損的壓縮,你修改的信息可能會被壓縮的過程破壞。而PNG圖片雖然也有壓縮,但卻是無損的壓縮,這樣子可以保持你修改的信息得到正確的表達,不至於丟失。BMP的圖片也是一樣的,是沒有經過壓縮的,可以發現BMP圖片是特別的大的,因為BMP把所有的像數都按原樣儲存,沒有壓縮的過程。
一個jpg的圖片。除了我們之前說到的隱藏在結束符之后的信息,jpg圖片還可以把信息隱藏的exif的部分。exif的信息是jpg的頭部插入了數碼照片的信息,比如是用什么相機拍攝的。這些信息我們也是可以控制的,用查看屬性的方式可以修改一部分的信息,還可以用exif編輯器來進行編輯。
解隱寫題的思路:
首先看看圖片是不是圖種,是,只要將圖片保存為zip壓縮包格式,然后解壓出來就可以了
然后使用binwalker分析圖片,如果是有文件合成,分離
有時信息藏在備注中(看屬性)
hex(查看文件頭部尾部:文章:理解JPEG文件頭的格式http://blog.csdn.net/ryfdizuo/article/details/41250775)
工具stegsolve
編程分析
神器:stegsolve,mp3stego
0x01分析
1.圖片屬性信息
例如這個base64
2.文本文檔查看具體內容
3.需要用到一個工具binwalk(在kali下自帶的一個命令行工具),binwalk檢查圖片里是否存在其他文件,可以參考這篇Binwalk:后門(固件)分析利器(http://www.freebuf.com/sectool/15266.html)文章,以及kali官方對binwalk的概述和使用介紹(https://tools.kali.org/forensics/binwalk)。
0x02分離(如果圖片中隱藏另一張圖片)
有以下幾種方法:
(1)使用dd命令分離(linux/unix下)
我們可以使用dd命令分離出隱藏文件:
# dd if=carter.jpg of=carter-1.jpg skip=140147 bs=1
可以參考dd命令詳解(http://www.cnblogs.com/qq78292959/archive/2012/02/23/2364760.html),這里if是指定輸入文件,of是指定輸出文件,skip是指定從輸入文件開頭跳過140147個塊后再開始復制,bs設置每次讀寫塊的大小為1字節 。
(2)使用foremost工具分離
foremost是一個基於文件文件頭和尾部信息以及文件的內建數據結構恢復文件的命令行工具,win可以下載地址,Linux可以
通過下面命令安裝使用:
# apt-get install foremost
安裝foremost后你可以使用foremost -help查看使用幫助,這里最簡單分離文件的命令為:
# foremost carter.jpg
當我們使用這行命令后,foremost會自動生成output目錄存放分離出文件:
foremost -v -i baozou_new.jpg -o /root/Desktop/xx
支持恢復如下格式: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。
(3)hex編輯器分析文件
至於hex編輯器有很多,win下有用得較多的winhex,UltraEdit等,linux下有hexeditor等,這里我們以winhex為例手動分離,在分離之前我們需要知道一點關於jpg文件格式的知識,jpg格式文件開始的2字節是圖像開始SOI(Start of Image,SOI)為FF D8,之后2個字節是JFIF應用數據塊APPO(JFIF application segment)為FF E0 ,最后2個字節是圖像文件結束標記EOI(end-of-file)為FF D9 詳情參考jpg文件格式分析(http://blog.csdn.net/liuqz2009/article/details/8270355)
用winhex打開圖片,通過Alt+G快捷鍵輸入偏移地址22373跳轉到另一張jpg的圖像開始塊,可以看到FF D8圖像開始塊。
而圖像結束塊FF D9
選取使用Alt+1快捷鍵選取FF為開始的塊,Alt+2選取D9為結束塊,然后右鍵->Edit->Copy Block->Into New File保存相應的文件后綴
(3)LSB隱寫(png圖片)
還有另一類隱藏的方法就是利用修改數據的方式來隱藏自己傳遞的信息.利用LSB來進行隱寫.如果是要尋找這種LSB隱藏痕跡的話,有一個工具是個神器,可以來輔助我們進行分析。Stegsolve這個軟件….打開之后,使用Stegsolve——Analyse——Frame Browser這個可以瀏覽三個顏色通道中的每一位
(4)qrcode,用在線的就可以解開http://tool.chinaz.com/qrcode/
(5)其他
還有一種特例,它是事先制作一個hide.zip,里面放入隱藏的文件,再需要一張jpg圖片example.jpg,然后再通過命令 copy /b example.jpg+hide.zip output.jpg生成output.jpg的新文件,原理是利用了copy命令,將兩個文件以二進制方式連接起來,正常的jpg文件結束標志是FF D9,而圖片查看器會忽視jpg結束符之后的內容,所以我們附加的hide.zip就不會影響到圖像的正常顯示。(參考AppLeU0的隱形術總結)
針對這種特例我們可以直接將jpg文件改為zip文件后綴(其他文件如rar文件也類似),就可以看到hide.zip壓縮包里隱藏的文件。
比如當我們得到一張wh3r3_is_f14g.jpg文件:
當我們用winhex打開文件,發現wh3r3_is_f14g.jpg文件最后數據塊不是FF D9 jpg文件的結束標志,而是zip文件的結束標志。
我們直接將文件改名為wh3r3_is_f14g.zip,打開得到flag.txt。
最后打開flag.txt得到flag。
0x03
gif圖快速閃動的信息隱藏方式 : 我們可以通過一些看圖軟件來固定每一幀進行觀察,得到密鑰
參考書籍:機械工業出版社《數據隱藏技術揭秘:破解多媒體、操作系統、移動設備和網絡協議中的隱秘數據》下載pdf版:http://www.jb51.net/books/434273.html