ブルートフォース
利用 ARCHPR
平文攻撃
プレーンテキスト攻撃とは、暗号化されたZIPと暗号化されていない圧縮ファイルを指します。同じZIP圧縮パッケージ内のすべてのファイルは同じ暗号化キーを使用して暗号化されるため、既知のファイルを使用できます。キーを推測し、ZIPファイルを復号化する攻撃方法。
問題解決のアイデア:
タイトルが画像と圧縮パッケージを提供していると仮定すると、圧縮パッケージは暗号化されており、外部パッケージと同じ名前の画像が圧縮パッケージ内にあります。推測はプレーンテキスト攻撃です。ソフトウェアを使用して画像を圧縮した後、圧縮パッケージ内の画像と圧縮された画像のCRC32値が同じであることがわかりました。これは、平文攻撃であることが確認されています。
練習:
ARCHPRを開き、復号化する圧縮パッケージを開き、「攻撃のタイプ」を「プレーンテキスト」として選択し、「プレーンテキスト」オプションをクリックして、画像を圧縮したばかりの圧縮パッケージを選択します。「開始」をクリックしてクラッキングを開始し、キーを取得します。
[注:異なる圧縮ソフトウェアは、異なる圧縮アルゴリズムを使用します。自己圧縮された圧縮パッケージは、同じテキストで与えられた圧縮パッケージの圧縮アルゴリズムがプレーンテキスト攻撃を実行できるようにする必要があります(一般的な圧縮ソフトウェア:優れた圧縮、winRAR、7z、高速圧縮、360圧縮)]
CRC32衝突(小さな圧縮ファイルファイルに適しています)
CRCの完全な名前は巡回冗長検査(巡回冗長検査、CRC)です。異なる長さの定数は、さまざまなCRC実装アルゴリズムに対応します。これは、ファイルにエラーがあるかどうかを確認するために使用できますが、自動エラー修正には使用できません。
問題解決のアイデア:
タイトルの解凍が開き、CRC32衝突を試すために複数の圧縮パッケージがあることがわかりました
練習:
スクリプトを記述し、CRC32衝突を使用して、圧縮パッケージ内のすべてのファイルの内容を復元してみます
参考大神写的脚本
import zipfile
import string
import binascii
def CrackCrc(crc):
for i in dic:
for j in dic:
for p in dic:
#for q in dic:
s = i + j + p
if crc == (binascii.crc32(s) & 0xffffffff):
#在 Python 2.x 的版本中,binascii.crc32 所计算出來的 CRC 值域为[-2^31, 2^31-1] 之间的有符号整数,为了要与一般CRC结果作比对,需要将其转为无符号整数,所以加上& 0xffffffff来进行转换。如果是 Python 3.x 的版本,其计算结果为 [0, 2^32-1] 间的无符号整数,因此不需额外加上& 0xffffffff
#print s
f.write(s)
return
def CrackZip():
for I in range(36):
file = 'flag' + str(I) + '.zip'
f = zipfile.ZipFile(file, 'r')
GetCrc = f.getinfo('flag.txt')
crc = GetCrc.CRC
#以上3行为获取压缩包CRC32值的步骤
#print hex(crc)
CrackCrc(crc)
dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt', 'w')
CrackZip()
f.close()
圧縮ファイルが6バイトの場合
利用可能なツールhttps://github.com/theonlypwner/crc32
使い方:
python crc32.py reverse crc32密文(16进制形式)
zip疑似暗号化
構成:圧縮ソースファイルデータ領域+圧縮ソースファイルディレクトリ領域+圧縮ソースファイルディレクトリエンドマーク
ZIPファイルヘッダーの識別は0×50に固定4B 03 04
コアディレクトリエリアマークは0x 50 4B 01 02
コアディレクトリエンドマーク0× 50 4B 05 06
問題解決のアイデア
圧縮されたソースファイルのディレクトリ領域の完全なレイアウトモードマークを表示する
50 4B 01 02 3F 00 14 00 09 00
第9、10位00 00,即为全布局方式标记,由此判断有无加密(伪加密的关键)
【注:全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性!】
第二个数字为奇数时 –>加密
第二个数字为偶数时 –>未加密
練習
グローバルモードのビットマークを00 00に変更します。
画像の圧縮パッケージを非表示にします
ビンウォークまたは最前線の分離
例としてjpgファイルを取り上げます。jpgファイルはFF D9で終わり、画像ブラウザーはFF D9の背後にあるコンテンツを無視します。今回は、背後に他のファイルを追加できます。
このような問題については、画像を16進エディターにドラッグして、ファイル形式を確認できます
または直接カリビンウォークに引き込む/最前線をスキャンして分離する