文章目錄
一、zip
CTF中的壓縮包隱寫一般有這樣幾個套路
1、通過編碼轉換隱藏信息(common)
比如給出一堆字符或數字,仔細觀察為某種進制,將其解碼為十六進制,觀察其文件頭是壓縮包或者是其他格式,修改后綴名后解壓得flag
2、在文件中隱藏壓縮包(圖種)
在CTF壓縮包隱寫中最為常見,多用於在一個文件中隱藏一個壓縮包
原理:以jpg格式為例,完整的JPG由FF D8開頭,FF D9結束,圖片瀏覽器會忽略FF D9之后的內容,因此可以在JPG文件之后加入其他的文件。
利用foremost,dd或者直接將其修改為壓縮包后綴進行提取。
推薦使用foremost,因為foremost還可以分離其他隱藏的文件。
修改為ZIP文件雖然方法簡單,但是如果隱寫了多個文件時可能會失敗。
以前不知道foremost的時候一直是用dd分離的,后邊知道了foremost就一直用的foremost。
3、偽加密
原理:ZIP偽加密是在文件頭的加密標志位進行修改,進而再次打開文件時被識別為加密壓縮包。
ZIP文件主要由三個部分組成:壓縮源文件數據區 + 核心目錄 + 目錄結束標志
壓縮源文件數據區
local file header + file data + data descriptor
local file header:文件頭用於標識該文件的開始,記錄了該壓縮文件的信息,
這里的文件頭標識由固定值 50 4B 03 04 開頭,也是 ZIP 的文件頭的重要標志。
file data:文件數據記錄了相應壓縮文件的數據。
data descriptor:數據描述符用於標識該文件壓縮結束,
該結構只有在相應的 local file header 中通用標記字段的第 3 bit設為 1 時才會出現,
緊接在壓縮文件源數據后。
50 4B 03 04:這是頭文件標記(0x04034b50)
14 00:解壓文件所需 pkware 版本
00 00:全局方式位標記(有無加密)
08 00:壓縮方式
5A 7E:最后修改文件時間
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校驗(1480B516)
19 00 00 00:壓縮后尺寸(25)
17 00 00 00:未壓縮尺寸(23)
07 00:文件名長度
00 00:擴展記錄長度
6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500 (直到核心目錄文件頭標識)
壓縮源文件目錄區
記錄了壓縮文件的目錄信息,在這個數據區中每一條紀錄對應在壓縮源文件數據區中的一條數據。
50 4B 01 02:目錄中文件文件頭標記(0x02014b50)
3F 00:壓縮使用的 pkware 版本
14 00:解壓文件所需 pkware 版本
00 00:全局方式位標記(有無加密,這個更改這里進行偽加密,改為09 00打開就會提示有密碼了)
08 00:壓縮方式
5A 7E:最后修改文件時間
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校驗(1480B516)
19 00 00 00:壓縮后尺寸(25)
17 00 00 00:未壓縮尺寸(23)
07 00:文件名長度
24 00:擴展字段長度
00 00:文件注釋長度
00 00:磁盤開始號
00 00:內部文件屬性
20 00 00 00:外部文件屬性
00 00 00 00:局部頭部偏移量
6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001 (直到目錄結束標識頭)
目錄結束標識(End of Central Directory Record)
存在於整個歸檔包的結尾,用於標記壓縮的目錄數據的結束。每個壓縮文件必須有且只有一個結束標識。
50 4B 05 06:目錄結束標記
00 00:當前磁盤編號
00 00:目錄區開始磁盤編號
01 00:本磁盤上紀錄總數
01 00:目錄區中紀錄總數
59 00 00 00:目錄區尺寸大小
3E 00 00 00:目錄區對第一張磁盤的偏移量
00 00:ZIP 文件注釋長度
zip偽加密
zip偽加密是在文件頭的加密標志位做修改,進而再打開文件時識被別為加密壓縮包。
如果把第二個加密標記位的00 00改為09 00,打開就會提示有密碼:
其實改成09只是舉的一個例子,只要末位是奇數,就代表加密,反之,末位是偶數代表未加密。
有時這里是01,也代表加密!不用更改!
識別真假加密
無加密
壓縮源文件數據區的全局加密應當為00 00
且壓縮源文件目錄區的全局方式位標記應當為00 00
假加密
壓縮源文件數據區的全局加密應當為00 00
且壓縮源文件目錄區的全局方式位標記應當為09 00
真加密
壓縮源文件數據區的全局加密應當為09 00
且壓縮源文件目錄區的全局方式位標記應當為09 00
二、RAR
文件格式
RAR 文件主要由標記塊,壓縮文件頭塊,文件頭塊,結尾塊組成。
其每一塊大致分為以下幾個字段:
RAR壓縮包的文件頭為:52 61 72 21 1A 07 00
其后是標記塊(MARK_HEAD),還有文件頭(FILE_HEAD)。
更多信息見:http://www.forensicswiki.org/wiki/RAR
主要攻擊方式
1、爆破
利用linux下的rarcrack(http://rarcrack.sourceforge.net/)
2、偽加密
RAR 文件的偽加密在文件頭中的位標記字段上,用 010 Editor 可以很清楚的看見這一位,修改這一位可以造成偽加密。
3、其他如明文攻擊等方法與ZIP相同。