CTF | 那些比較好玩的stego(正傳)

自從開了專欄之後(其實是我覺得在專欄上寫東西方便),尤其是在寫完讀書 | The myths of security 之後,居然還收到了8個贊,我瞬間懷疑起貴乎的正確使用方式(233,但是還是很開心的)

在這兒給大家續CTF系列的正傳。當時因為這篇文章,我獲得了很多東西:一個烏雲賬號,意外的稿酬,簡歷上終於可以多了可以寫的東西,等等。然而,6月份的時候,一直到現在,哎喲我去這篇文章居然被各路大神轉載了,我當時的反應如下

不扯淡了,都過去了,現在本系列已經委託朋友 @ming Luo 進行文章轉載的維護。

所以,各位老司機們,在轉載前麻煩和本人打聲招呼?OK?

好,正文(其實修改過了)開始:

-------------------------------------------------------------------------------

0X00 引子

最近國內各種CTF層出不窮,看出來國家對於信息安全終於決定下重本了。另外因為本人比較喜歡研究怎麼藏東西,所以一開始在CTF隊組建的時候,就負責了misc(雜項)中的Steganography(Stego)部分,中文翻譯過來是「隱寫術」。

烏雲上也有好幾篇關於隱寫術的文章,其中以AppLeU0大大的那篇《隱寫術總結》最為經典,還有Gump大大的《數據隱藏技術》。在這兒,本菜鳥也想和大家分享在CTF中見到的比較好玩的stego題目。寫的不好,請大大們多多包涵。

(啊,某雲的文章自己找鏡像去吧……)

0X01 什麼叫隱寫術?

題圖:無意中被「隱身墨水」給隱藏了下半身的Jerry正在嘗試驗證自己的手能不能被「隱身墨水」給隱藏(設置變數驗證)

隱寫術,在我們的生活中既熟悉而又陌生。記得童年回憶《貓和老鼠》有關於「隱寫術」的這一集:Jerry有一天在玩耍的時候,不小心往自己的身上塗了一種「神奇墨水」,然後把自己藏了起來,還成功的把Tom戲弄一通並趕走了Tom。這種「神奇「的墨水,叫「隱形墨水」,寫到紙上之後需要特殊處理才可以看得到對方想要給我們傳達的信息。

同樣的,在信息安全中,隱寫術也是舉足輕重的一塊領域,從我們最早接觸到的圖種(copy /b 1.jpg+1.torrent 1.jpg),到有事沒事就上個頭條的locky,看個圖片就中招的 stegosploit,圖片木馬Stegoloader,還有就是三大高危CVE之一CVE-2016-3714(ImageMagick的,linux下用於處理圖像的一個應用),然後也有CHM打造後門,等等。總的來說,就和藏東西似的,能藏就藏,而我們就是要去尋找這種蛛絲馬跡。

(現在JPEG 2000可執行任意代碼漏洞已經加入Stego豪華漏洞套餐)

0X02 常用工具

手邊剛好放了一本很老的大部頭:

(管校圖書館借的),在第85頁由暗夜舞者的《機密文件的圖片隱藏法》里記載了將zip文件和gif圖片的通過文件流讀入ZIP文件將其合到一起的小辦法。最後的文件要怎麼打開呢?把.gif改為.zip就好啦~~

另外,在CTF中,老司機們可能更偏向於用UE/Winhex一類的16進位的編輯器去打開待分析文件,然後通過拼寫文件頭(嗯。常用的文件頭有幾類?)然後blah blah的解決了。然而,新手們尤其是像我這樣的菜鳥們,就比較喜歡用工具先分析一下有什麼樣的發現,這時候,為什麼不考慮使用binwalk呢?早年在freebuf上也有binwalk的身影。

寒假刷XCTF的OJ的時候,binwalk用起來很方便,但是也有不方便的時候。比如說我要想藏個字元啥的,這個也是binwalk看不出來的。記得最近的某CTF曾經出過這道題:

(到後面我還會再用這張圖片來進行分析)

人家最後放了個提示Stegdetect,那時候我們用binwalk分析了很久也沒分析出來個所以然。圖上的,你總不能一個個鏈接試吧(反正有聽說有師傅們通過這個攢了幾部小電影的)。然後用binwalk分析的時候,提示有壓縮包,然後foremost出來之後壓縮包里攢著另一個壓縮包

請根據以上描述,問:此文件屬於什麼樣的數據結構? (大霧)

後來,就有了 @4ido10n 的《深入理解JPEG圖像格式Jphide隱寫》

Jphide隱寫過程大致為:先解壓壓縮JPEG圖像,得到DCT係數;然後對隱藏信息用戶給定的密碼進行Blowfish加密;再利用Blowfish演算法生成偽隨機序列,並據此找到需要改變的DCT係數,將其末位變為需要隱藏的信息的值,最後把DCT係數重新壓回成JPEG圖片。

關於圖片其他方面的隱寫,請參考隱寫術總結 - 安全客

到這兒為止,我們已經提了以下幾種工具:

  • Binwalk

  • Stegdetect

此外根據剛剛提到的這幾篇,圖片方面我們還可以嘗試這些工具:JPHS(由Stegdetect檢測出來的,這個是分離工具)、Stegsolve、winhex、Power_exif、Pngcheck等等,此外也可以用編程、或者尋找圖片的結尾符FFD9等輔助。

如果出的是其他類型的文件呢?

MP4:ffmpeg

PDF:常用的有wbStego4open

vmdk:Dsfok-tools

以上,當然如果你覺得用工具解不出來的話,那就……看下面幾道題目壓壓驚

0x03 幾道可以分辨惡趣味的題目

今年被吊打過的CTF里,我們可以發現隱寫術不那麼單調了,體現了隱寫術的特點之「物所能及不能藏」。不光是常見的jpg、tiff、png,

如果你有細心算過0x1E是啥子玩意的話,你應該也不會直接foremost分離了……

這道題的正確打開方式如下:

這道題的解題思路是exif,exif承載了這張照片的一些比如相機型號、照相地點等重要信息。然後,我們判斷出來這個是什麼樣的編碼就直接解碼就好。

另外,在風雲杯2016上比較有意思的一道misc04是關於加密與解密,同時還涉及到stego,先是zip偽加密破解,然後得到一張圖片。爾等菜鳥們用binwalk分辨出了文件頭分出來四張圖片,嗯?然後?其實在賽後處理這張圖發現了一個詭異的地方:

詭異就詭異在文件尾的exif到底是啥?

然後就沒然後了……

P.S. 老司機們看透了一切,早早在這兒打好了埋伏,這一次是使用了zip偽加密+stego+base32,殺了個misc的回馬槍。當時還是太年輕啊……

還有這道png的題目(用pngcheck來分析的)

這道題通過塊損壞和重排來出的題目,把損壞的塊處理一下就變成了下面這樣

重排一下即可。

Word的基礎題

烏雲網友評論:你把整個字體顏色調白了也可以達到隱寫術的效果

PDF

之前見過的隱寫題目都很容易,用wbStego4open這個工具都可以解出來,這兒一般是以字元串為主。然而,直到發稿之前剛剛看了一道讓我整個都233的題解:

The website at hack.lu CTF 2016

allows you to download a pdf file. It contains an attachment named pdf10000.pdf.

Attachment pdf10000.pdf contains another attachment named

pdf9999.pdf; pdf9999.pdf contains pdf9998.pdf and so on...

With this behavior in mind, we can write a script to

automate the extraction process. The assumption is that pdf0.pdfmight contain the flag.

本來想嘗試一下解這道題,然而

那還是不做了,把那道題的題解放出來:

After "guessing" (a 30.7 MB pdf file containing only few characters and a small image) that the pdf has something embedded in it I started to use pdfdetach to extract the file:

pdfdetach simplepdf_f8004a3ad0acde31c40267b9856e63fc.pdf -saveall

A new file was created pdf10000.pdf, then when I ran pdfdetach again and observed that it creates a file pdf9999.pdf and so on. The objective was to get to pdf0.pdf so a quick script solved it:

<?php nfor ($i=10000; $i >= 0; $i--)n{nt$j = $i + 1;ntif ($j < 10001)nt{nttexec("rm pdf$j.pdf");nt}ntexec("pdfdetach pdf$i.pdf -saveall");ntecho $i."n";n}n?>n

When it get to pdf0.pdf I ran it again

pdfdetach pdf0.pdf -saveall

And I got start.pdf, ran it again

pdfdetach start.pdf -saveall

but I got a file start.pdf with 0 bytes (and lost the original start.pdf, so be careful and backup it !). Something was wrong. I looked on the pdfdetach arguments and :

pdfdetach start.pdf -save 1 -o x.pdf

Opened x.pdf and there was the flag :)

#Environment: Linuxn#https://cthulhu.fluxfingers.net/static/chals/simplepdf_f8004a3ad0acde31c40267b9856e63fc.pdf#Extract pdf10000.pdf and use the scriptnnfrom subprocess import callnctr = 10000npdfname = "pdf10000.pdf"nwhile ctr > 0: n call(["pdfdetach", "-saveall", pdfname]) #for more info http://www.dsm.fordham.edu/cgi-bin/man-cgi.pl?topic=pdfdetach&sect=1 ctr -= 1n pdfname = "pdf" + str(ctr) + ".pdfn

----------------------------------------------------------------------------------------------------

From the script above, pdf0.pdf was extracted. It contains

start.pdf which contains the flag.

The flag is flag{pdf_packing_is_fun}

pcap流量分析:

運氣好的話,可以嘗試使用foremost+strings,當然特別高階的方法還是請教各位老司機們……

WAV:

哎喲說到這個每次都是滿腦子的渡口和魂斗羅……

常見的WAV文件使用PCM無壓縮編碼,這使WAV文件的質量極高,體積也出奇大,對於PCM WAV,恐怕也只有無損壓縮的音頻才能和其有相同的質量,平時我們見的什麼mp3,wma(不含wmalossless)和wav的質量都是差很遠的!這點可以通過頻譜看出,即使320kbps的mp3和wav一比,也要自卑了!

Wav格式支持MSADPCM、CCITTALaw、CCITT μ Law和其它壓縮演算法,支持多種音頻位數、採樣頻率和聲道,但其缺點是文件體積較大(一分鐘44kHZ、16bit Stereo的WAV文件約要佔用10MB左右的硬碟空間),所以不適合長時間記錄。

之前看別人的WP屯了這麼幾張圖

p.s. 腦洞君你好

突然想起來今年的一件事,當時是剛比完四葉草的CTF之後,我們隊又去了一次國外的小比賽。比賽當中,也是有一首隱寫術的題目,給了rain.wav (這兒給了其他隊伍提取的源文件),那道題當中按照同樣的方法卻沒辦法分析出來個所以然,「你聽到這歌里有沒有雜音?」,然後我和隊友把聲音調到最大才聽出來這首歌的另外的一些聲音,通過判斷聲音位置最後提取到了flag。

這件事告訴了我們:比賽的時候,如果有聲音類的題目,不要用10塊錢耳機,認真臉

MIDI:

從來沒做出來過midi的flag的我……

AVI:

AVI含三部分:文件頭、數據塊和索引塊。

其中數據塊包含實際數據流,即圖像和聲音序列數據。這是文件的主體,也是決定文件容量的主要部分。視頻文件的大小等於該文件的數據率乘以該視頻播放的時間長度,索引塊包括數據塊列表和它們在文件中的位置,以提供文件內數據隨機存取能力。文件頭包括文件的通用信息,定義數據格式,所用的壓縮演算法等參數。

avi的編碼標準不同導致的文件體積太大,比賽中應該不會放那麼大的視頻文件供CTFer下載吧?但誰又能說的准呢?給大家安利一個MSU VideoStego,是用於分析avi文件的小工具。

EXE:

exe里藏東西其實還涉及到病毒行為分析,有可能是藏在殼內,也有可能是其他地方,具體情況可以使用IDA或者OD還有C32Asm來進行跟進分析。

此話說出後不久,flag就沒了,看這兒:CTF中比較好玩的stego(續一)

MP4:

BCTF2016出過catvideo (在這兒也給了源文件供各位黑闊分析), 然後用了ffmpeg大法:

ffmpeg.exe -i catvideo-497570b7e2811eb52dd75bac9839f19d7bca5ef4.mp4 -r 30.0 fr_%4d.bmpn

然後就xor一下得到了這個(我只是打個比方,這道題我原來的腳本不是這麼寫的):

0x04 後記

這一塊可以深挖的東西還有很多,都是特別的有意思,如果隱寫術和密碼學結合起來,也是一道非常有意思的題目,也有見到和演算法結合起來的"png number"(png套路蠻多的)。個人感覺如果說是順著CTF這一塊往下挖的話,也挺考驗選手自身的基礎的。

不過現在光考察stego的題目也已經很少了,反正和這篇文章並不是同一個level……

-------------------THE END-------------------

舊文,原文發佈於2016年05月20日的烏雲知識庫。

在此再次謝謝烏雲知識庫,謝謝。

來源:

CTFtime.org / Hack.lu CTF 2016 / simplepdf

wav文件格式分析

Rain or Shine (35 pts)

BCTF - Forensics


推薦閱讀:

TAG:信息安全 | CTFCaptureTheFlag | 二进制 |