日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZIP已知明文攻击深入利用

發布時間:2024/3/12 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZIP已知明文攻击深入利用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

首發在:https://www.freebuf.com/articles/network/255145.html

?

一、前言

你加密的壓縮包比你想象中的還不安全!
哪怕對于信息安全人員來說,很多時候給壓縮包加上一個密碼就以為的是萬事大吉了。但事實是,很多情況下,你的加密壓縮包,遠遠沒有你想象的安全。

二、內容概要

以往進行ZIP已知明文攻擊,通常需要一個完整的明文文件。 而本文討論的攻擊方式只需要知道加密壓縮包內容的12個字節,即可進行攻擊破解降低了已知明文的攻擊難度。同時,結合各類已知的文件格式,更擴寬了ZIP已知明文攻擊的攻擊面。

三、正文

3.1 ZIP已知明文攻擊的一般利用

以往出現在網絡安全競賽中的已知明文攻擊考點,或者大部分網上的文章,都需要知道加密zip文件中的一個完整明文文件并且要求明文以相同的標準被壓縮,這才有可能會攻擊成功。
其實傳統的已知明文攻擊要成功需要三個條件,在此我將條件列出來:

  • 完整的明文文件
  • 明文文件需要被相同的壓縮算法標準壓縮(也可理解為被相同壓縮工具壓縮)
  • 明文對應文件的加密算法需要是 ZipCrypto Store

第三點是我們實際應用中常常會被忽略的。因競賽中遇到的題目,都是提前設置好的。

· AES256-Deflate/AES256-Store加密的文件不適用于明文攻擊。

ZIP的加密算法大致分為兩種ZipCrypto和AES-256,各自又分Deflate和Store。

  • ZipCrypto Deflate
  • ZipCrypto Store
  • AES-256 Deflate
  • AES-256 Store

ZipCrypto算是傳統的zip加密方式。只有使用ZipCrypto Deflate /Store才可以使用 ZIP已知明文攻擊進行破解。
傳統的ZIP已知明文攻擊利用,windows下可以使用AZPR,linux下可以使用pkcrack。

3.2 ZIP已知明文攻擊的深入利用

本文要探討的攻擊方法并不需要知道壓縮文件中完整的明文,只需在已知加密壓縮包中的少部分明文字節時即可進行攻擊破解。而各類文件都有其自身固定的文件格式,結合這類格式,極大擴展了ZIP明文攻擊的攻擊面。
具體要求如下:

  • 至少已知明文的12個字節及偏移,其中至少8字節需要連續。
  • 明文對應的文件加密方式為ZipCrypto Store

該方法對于ZIP加密的算法有要求,明文對應的文件加密方式需要為ZipCrypto Store。經測試,Winrar(v5.80)、7zip(v19.00)默認狀態下加密使用的就是AES256算法,直接排除。360壓縮(v4.0.0.1220)、好壓(v6.2)使用的是ZipCrypto,不固定使用Store或Deflate(如果要固定使用ZipCrypto Store算法加密,可以在壓縮的時候指定壓縮方式為“存儲”)。

以下破解用到的壓縮包,都是經360壓縮或者好壓加密打包的。

3.2.1 使用到的工具項目
bkcrack:https://github.com/kimci86/bkcrack

bkcrack安裝:
apt install cmake -y
cmake .
make ? ? //在src下生成bkcrack文件
cp bkcrack /usr/sbin/bkcrack ? ?//作為系統命令使用

bkcrack常用參數:
-c 提取的密文部分
-p 提取的明文部分
-x 壓縮包內目標文件的偏移地址 ?部分已知明文值
-C 加密壓縮包
-o offset ?-p參數指定的明文在壓縮包內目標文件的偏移量

在此我們不是“造輪子”,而是“使用輪子”,偏向于實操,利用已有的手段工具去解決現有的問題。話不多說,上實操案例。

3.3 實操案例

案例中演示的壓縮包等,都可在文末附件中下載。

3.3.1 加密文本破解
文本類文件被加密成zip時,有很大的概率以ZipCrypto Store方式加密存儲。
創建加密zip:
生成uuid,將字符串 “flag{16e371fa-0555-47fc-b343-74f6754f6c01}” 保存為flag.txt。然后用360壓縮將文件添加為加密ZIP: flag_360.zip


攻擊破解:
采用8+4的方式提取部分已知明文來進行攻擊測試,
flag{16e371fa-0555-47fc-b343-74f6754f6c01}

我們利用以下這部分明文,來進行攻擊破解:
*lag{16e3********************74f6********

#準備已知明文
echo -n "lag{16e3" > plain1.txt ? //連續的8明文
echo -n "74f6" | xxd ? ? ? ? ? ? //額外明文的十六進制格式,37346636

#攻擊
bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636

#由于時間較長,為防止終端終端導致破解中斷,可以加點小技巧
bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636 > 1.log& //后臺運行,結果存入1.log

//加上time參數方便計算爆破時間
time bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636 > 1.log&

//查看爆破進度
tail -f 1.log

注:· -p 指定的明文不需要轉換,-x指定的明文需要轉成十六進制
· 提到的偏移都是指 “已知明文在加密前文件中的偏移”。

歷時近16分鐘,成功得到秘鑰,這不是壓縮包的加密密碼,而是ZIP內部的三段秘鑰。

b21e5df4 ab9a9430 8c336475
?

使用該秘鑰進行解密:
bkcrack -C flag_360.zip -c flag.txt ?-k b21e5df4 ab9a9430 8c336475 -d flag.txt

?

3.3.2 利用PNG圖片文件頭破解
PNG文件頭:


89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52

滿足,12個字節的要求。拿一張圖片和一個flag.txt一起打包成加密ZIP壓縮包:png4.zip

攻擊破解:

#準備已知明文
echo 89504E470D0A1A0A0000000D49484452 | xxd -r -ps > png_header

#攻擊
time bkcrack -C png4.zip -c 2.png -p png_header -o 0 >1.log&
tail -f 1.log

耗時近7分鐘破解出秘鑰:e0be8d5d 70bb3140 7e983fff


利用秘鑰解密文件:
? ? ? ? ?bkcrack -C png4.zip -c flag.txt -k e0be8d5d 70bb3140 7e983fff -d flag.txt

?

3.2.3 利用壓縮包格式破解

將一個名為flag.txt的文件打包成ZIP壓縮包后,你會發現文件名稱會出現在壓縮包文件頭中,且偏移固定為30。且默認情況下,flag.zip也會作為該壓縮包的名稱。

所以,當一個加密壓縮包中存在另一個ZIP壓縮包時,且能夠知道或猜測該壓縮包內的文件名稱時,可以嘗試進行已知明文攻擊。

將flag.zip與其他文件(選用一張圖片)一起用好壓打包成加密ZIP壓縮包:test5.zip

已知的明文片段有:
· “flag.txt” ?8個字節,偏移30
· ZIP本身文件頭:50 4B 03 04 ? ? ,4字節

8+4,滿足了破解的最低要求

攻擊:
echo -n "flag.txt" > plain1.txt? ? ?//-n參數避免換行,不然文件中會出現換行符,導致攻擊失效
time bkcrack -C test5.zip -c flag.zip -p plain1.txt -o 30 ?-x 0 504B0304 >1.log&
tail -f 1.log

得到秘鑰:

b21e5df4 ab9a9430 8c336475


?

利用秘鑰解密:
bkcrack -C test5.zip -c flag.zip -k b21e5df4 ab9a9430 8c336475 ?-d flag.zip

flag.zip可以直接成功解密。

但若想解密2.png,由于是ZipCrypto deflate加密的,所以解密后需要bkcrack/tool內的inflate.py腳本再次處理。

bkcrack -C test5.zip -c 2.png -k b21e5df4 ab9a9430 8c336475 ?-d 2.png
python3 inflate.py < 2.png > 2_out.png
?

3.2.4 EXE文件格式破解

EXE文件默認加密情況下,不太會以store方式被加密,但它文件格式中的的明文及其明顯,長度足夠。如果加密ZIP壓縮包出現以store算法存儲的EXE格式文件,很容易進行破解。
大部分exe中都有這相同一段,且偏移固定為64:

生成一個加密EXE的ZIP壓縮包進行測試:nc64.zip

攻擊破解:

#準備明文
echo -n "0E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000" | xxd -r -ps > mingwen

#攻擊
time bkcrack -C nc64.zip -c nc64.exe -p mingwen -o64 ?>1.log&

#查看進度
tail -f 1.log
?

很快就解出了秘鑰:

b21e5df4 ab9a9430 8c336475

?

解密:
bkcrack -C nc64.zip -c nc64.exe -k b21e5df4 ab9a9430 8c336475 ?-d nc64.exe

3.2.5 ?流量包pcapng格式解密
這個有例題: 釣魚城杯-量子加密?
具體格式介紹及解法參考官方的writeup,已打包在附件中

加密算法都是 Store


選用第二段文件頭格式:
00 00 4D 3C 2B 1A 01 00 00 00 FF FF FF FF FF FF FF FF

攻擊:
echo -n "00004D3C2B1A01000000FFFFFFFFFFFFFFFF" | xxd -r -ps > pcap_plain1

time bkcrack -C 3.zip -c capture.pcapng -p pcap_plain1 -o 6
?

解密:
bkcrack -C 3.zip -c capture.pcapng ?-k e33a580c ?c0c96a81 1246d892 ?-d out.pcapng

3.2.6 網站相關文件破解
網站目錄中充斥著大量類型的文件,哪怕被打包成加密ZIP,也很容易找到突破口。
例如:
? ? ? robots.txt的文件開頭內容通常是User-agent: *?
? ? ? html文件開頭通常是 <!DOCTYPE html>
? ? ? ?xml文件開頭通常是<?xml version="1.0" encoding="UTF-8"?>

?

在此以web.xml為例,web.xml 是網絡程序中的一個很重要的配置文件。


常見xml文件頭為:
? ? ? ? ? ? <?xml version="1.0" encoding="UTF-8"?>

?

網站目錄肯定會涉及到多級目錄,我們也同樣進行模擬。在文件夾中創建一個二級目錄“123”,并將一個web.xml放入該二級目錄中,然后打包成加密ZIP。

攻擊:

echo -n '<?xml version="1.0" encoding="UTF-8"?>' > xml_plain


time bkcrack -C xml.zip -c 123/web.xml -p xml_plain -o 0 ?//注意相對路徑
?

?

攻擊成功:

解密:
? ? ? ? bkcrack -C xml.zip -c 123/web.xml ?-k e0be8d5d 70bb3140 7e983fff ?-d web.xml

?

3.2.7 SVG文件格式破解
xml格式的文件除了.xml以外,也包括.svg文件。SVG是一種基于XML的圖像文件格式。

攻擊:

//已知明文
echo -n '<?xml version="1.0" ' > plain.txt

bkcrack -C secrets.zip -c spiral.svg -p plain.txt -o 0

?

?

攻擊成功:

解密:

//解密 Store算法 ?直接解密即可
bkcrack -C secrets.zip -c spiral.svg -k c4038591 d5ff449d d3b0c696 -d spiral_deciphered.svg

//解密 deflate算法
bkcrack -C secrets.zip -c advice.jpg -k c4038591 d5ff449d d3b0c696 -d advice.deflate

//該文件使用了deflate算法壓縮的,解碼出來的是Deflate的數據流,因此須將其解壓縮。
python3 inflate.py < advice.deflate > advice.jpg
?

四、結尾

4.1 結語

以上這些案例只是給打擊做個示范,打開大家的思路,實際可用的場景有許多。例如一些CTF題目壓縮包的非預期解,或者網絡上資源的破解。

4.2 注意點:

  • 已知的明文長度越長,破解速度越快
  • 圖片、文本格式文件、壓縮包是最容易以store算法被加密打包的
  • 有時會出現攻擊得到了秘鑰,卻無法解密正確文件的情況
  • 存在rbkcrack項目,增加了部分支持

4.3 附件下載:
? ? ? 鏈接:https://pan.baidu.com/s/1fuuHYFHSU2e0eIAjO7FLfw?
? ? ?提取碼:t2y4

4.4 參考文章:
? ? ??https://www.aloxaf.com/2018/10/zip_crack/

? ? ??https://zhuanlan.zhihu.com/p/129855130
?

總結

以上是生活随笔為你收集整理的ZIP已知明文攻击深入利用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。