从0开始学杂项 第二期:隐写分析(1) 直接附加
Misc學習(二) - 隱寫分析:直接附加
在上一期,我主要談了談對于雜項的一些淺薄理解,這一期我們正式開始對于CTF雜項的學習,我們首先學習的是雜項中最常考察的一項——隱寫分析。
這篇文章的大部分來自于我為了科學之光冬令營20號下午的講課所準備的大綱。
一. 什么是隱寫分析
有些時候,我們想把一些信息或者文件隱藏在某些文件之中,就可以利用隱寫術來達到我們的目的。而針對那些有隱藏信息的文件,我們從中獲取到被隱藏的信息的過程就叫做隱寫分析。
隱寫分析是 Misc 中最為重要的項目之一,包括文件分析、信息隱寫等等,涉及巧妙的編碼、隱藏數據、層層嵌套的文件中的文件等等于雜項一樣,它也喜歡考察一些并非為我們所掌握的小知識,比如一些從來沒聽說過的亂七八糟的密碼(比如與佛論禪加密、顏文字加密等等),我們需要善用自己的信息搜集能力(其實就是查百度),在這里順便簡單介紹一下信息搜集。
信息搜集
我的理解是,信息搜集就是針對某一目標,在搜集它/他/她的明顯信息后,通過進一步的信息整合與分析得到他的隱蔽信息。
(此處省略500字)
“知己知彼,百戰百勝。”我們學習信息搜集只是為了更好地防止自己的信息被搜集,提高自身信息安全意識,自覺保護個人信息,防止自己的隱私被窺探。
但其實,我們做隱寫分析也用不到什么高深的技術,在這里我推薦使用 Bing(國內查不到還能順手查查國外的)。當碰到自己的知識盲區時,我們需要準確地找出自己想問的問題,比如[BUUCTF]荷蘭寬帶數據泄露,下載后我們得到了一個 conf.bin 文件,我覺得可能大部分人都不清楚這是個什么玩意,編輯器打開一看還是堆亂碼,這個時候我們就需要使用搜索引擎了。
我們首先要明確自己的問題: conf.bin 文件是什么,輸入搜索框,回車,很快便能得知這是路由器的備份配置文件,要用 RouterPassView.exe 打開查看。
其它的問題大抵也是如此,只要我們準確把握問題主干,搜索引擎大多數時候都會給我們想要的結果。
二. 直接附加
本節我們需要的工具:一個十六進制編輯器(010 Editer 或者 WinHex 等等),最好有個 Kali Linux 虛擬機
我們都知道,文件的擴展名往往反映了文件的類型,但又不一定準確,因為我們可以隨意地去修改它。比如我們把可以一個 jpg 圖片文件改名成 xxx.png,無論我們學過學過計算機知識都應該知道 JPG 和 PNG 不是同一個東西,但是我們雙擊卻依然可以用圖片查看器查看這張圖片,這說明程序有自己的方式去判斷這是什么類型的文件,從而選擇讀取這張圖片內容的方式,這就是文件頭的作用。
大部分文件類型有其固定的文件結構,基本結構為:
文件頭 + 文件內容(+ 文件尾) //文件尾可能有可能沒有
圖片查看器打開圖片文件時,首先會根據文件頭判斷它是哪種類型的文件,然后再根據文件類型選擇恰當的讀取方式。一般來說,程序在讀取有文件尾的文件時一般只會讀到文件尾,并不會關注后面還有沒有別的內容。
所以對于有文件尾的文件類型A來說,文件尾之后的內容往往不會對文件的查看有影響,增加的內容普通情況下不會被發現(拿十六進制編輯器不算普通情況)。我們可以往它的文件尾后面添加字符,數字,甚至是藏一個別的文件,這就是直接附加。
要分離出附加在文件A后面的文件,可以通過在十六進制編輯器中觀察文件尾后中隱含的文件頭信息來判斷文件A中附加的文件類型,從而進行提取,常見文件類型文件頭(尾)如下:
文件類型 | 文件頭 | 文件尾 |
JPEG( jpg ) | FF D8 FF | FF D9 |
PNG | 89 50 4E 47 | AE 42 60 82 |
GIF | 47 49 46 38 | 00 3B |
ZIP | 50 4B 03 04 | 50 4B |
RAR | 52 61 72 21 | / |
Wave(wav) | 57 41 56 45 | / |
類型列舉不全,更詳細的可以看大佬博客:https://blog.csdn.net/Ahuuua/article/details/109165473
說實話,我不推薦肉眼觀察法提取(楽),一個是考驗記憶力和眼力,最主要的是可能有藏比作者把一個相同類型的文件藏一個文件里,然后在前一個文件的文件尾和后一個文件的文件頭之間藏東西(我是深受其害),對于我這種喜歡先拉到最后看文件尾的人很不友好。
我推薦使用 Binwalk 工具(Kali Linux自帶)和 Foremost 工具(如果你的 linux 沒有的話可以輸入 apt-get install foremost 回車,其他工具類似)分離文件A中附加的其他文件,Binwalk 可以自動分析一個文件中包含的多個文件并將它們提取出來,Foremost 也可以分離文件而且有時候更好用一點,我們可以先用 Binwalk 進行分析,如果有隱藏文件再用 Foremost 分離,我們經常使用的一些相關使用方法如下:
binwalk [文件A] #分析文件A binwalk -e [文件A] #分析文件A后自動提取已知的文件類型的隱藏文件 foremost [文件A] #分離文件A的隱藏文件,存到與文件A同目錄的output文件夾中,同時在文件夾中生成一個日志文件更詳細的使用方法我懶得寫了(笑,以后可能統一寫寫),不過一般也用不著
例題
找了道例題:[BUUCTF] 二維碼 大家可以自己先嘗試一下,如果有困難再去看下面的題解。順便說一下,做CTF題,遇到不會的題看題解是一件非常正常的事,關鍵在于能不能在這道題中吸取教訓,只要下次做到類似的能做對就行,這也是一個積累經驗的過程(最好看完自己不會的地方再自己做,不要照抄 flag)。
題解
下載下來是一張 PNG 格式的二維碼,盲猜掃出來肯定不是結果。扔到 WinHex 中(或者 010-Editor ),一眼看到 png 文件尾和 zip 文件頭(看多了就能一眼盯真😂)。(圖片里面寫錯了)
這時當然可以直接人力提取,從 504B0304 開始選中一直到最后,右鍵-編輯-復制選塊-正常 復制這一段數據,然后左上角新建一個文件,大小無所謂(最好小一點)直接確定。
選中第一個 0,右鍵-編輯-剪貼板數據-寫入(其實我不知道寫入和粘貼有什么區別,希望有大佬可以解惑),在彈出的窗口里確定-確定,成功寫入后按 Ctrl+S 鍵保存,命名為1.zip。(不推薦這樣肉眼觀察法和人力分離法,這里講主要是想帶大家熟悉一下編輯器的用法)
我更推薦使用 Binwalk+Foremost 的方式,打開 Linux,把文件弄進去放個地方,在這個地方打開終端,輸入 binwalk QR_code.png 發現有隱藏的ZIP文件,再輸入 foremost QR_code.png 在 output 文件夾中找到分離出來的ZIP文件(或者直接輸入 binwalk -e QR_code.png也是可以的)。
打開壓縮包發現需要密碼(好像有點超綱,算了無所謂做中學吧),直接打開上古神器 ARCHPR 選擇 “所有數字”,長度 1-6(一般CTF題里面需要暴力破解的壓縮包的密碼都不會太復雜)(壓縮包我會以后說)
得到密碼 7639,解壓后打開 4number.txt ,得到 flag。
本期就先說到這里,主要講了講隱寫分析中的直接附加,寫的不太好的地方還請包涵并提出您寶貴的建議,我們下期再見。
參考資料
[1] CTF WIKI : https://ctf-wiki.org/misc/introduction/
以上內容僅供參考,水平不高,大佬見笑。
上一期:第一期:什么是雜項
下一期:隱寫分析(2):PNG 圖片隱寫
作者:CHTXRT
出處:https://blog.csdn.net/CHTXRT
本文使用「CC BY-ND 4.0」創作共享協議,轉載請在文章明顯位置注明作者及出處。
總結
以上是生活随笔為你收集整理的从0开始学杂项 第二期:隐写分析(1) 直接附加的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络相关的常识、基本概念
- 下一篇: u盘数据乱码怎么恢复?恢复U盘,图文教程