CTF壓縮包隱寫類(zip、RAR、zip偽加密)


一、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相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM