From 382e43590f3f001e96549302fa208f75c30ea108 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 20:10:23 +0000 Subject: [PATCH] Translated ['', 'src/generic-methodologies-and-resources/basic-forensic- --- .../zips-tricks.md | 160 +++++++++++++++++- 1 file changed, 152 insertions(+), 8 deletions(-) diff --git a/src/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md b/src/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md index e3e12ea6e..9d6f9ff98 100644 --- a/src/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md +++ b/src/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md @@ -1,21 +1,165 @@ -# ZIP'ler için hileler +# ZIP hileleri {{#include ../../../banners/hacktricks-training.md}} -**Komut satırı araçları**, **zip dosyalarını** yönetmek için, zip dosyalarını teşhis etmek, onarmak ve kırmak için gereklidir. İşte bazı anahtar yardımcı programlar: +**Command-line tools** zip dosyalarını yönetmek için; tanılama, onarma ve şifre kırma işlemlerinde gereklidir. İşte bazı önemli araçlar: -- **`unzip`**: Bir zip dosyasının neden açılmadığını gösterir. -- **`zipdetails -v`**: Zip dosyası format alanlarının detaylı analizini sunar. +- **`unzip`**: Bir zip dosyasının neden açılmayabileceğini ortaya çıkarır. +- **`zipdetails -v`**: zip dosyası format alanlarının ayrıntılı analizini sunar. - **`zipinfo`**: Bir zip dosyasının içeriğini çıkarmadan listeler. -- **`zip -F input.zip --out output.zip`** ve **`zip -FF input.zip --out output.zip`**: Bozulmuş zip dosyalarını onarmaya çalışır. -- **[fcrackzip](https://github.com/hyc/fcrackzip)**: Zip şifrelerini brute-force ile kırmak için bir araç, yaklaşık 7 karaktere kadar olan şifreler için etkilidir. +- **`zip -F input.zip --out output.zip`** ve **`zip -FF input.zip --out output.zip`**: Bozulmuş zip dosyalarını onarmayı dener. +- **[fcrackzip](https://github.com/hyc/fcrackzip)**: Yaklaşık 7 karaktere kadar parolalar için etkili bir zip parola kırma aracı. -[Zip dosya formatı spesifikasyonu](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT), zip dosyalarının yapısı ve standartları hakkında kapsamlı bilgiler sunar. +[Zip file format specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) zip dosyalarının yapısı ve standartları hakkında kapsamlı bilgiler sağlar. -Şifre korumalı zip dosyalarının **içindeki dosya adlarını veya dosya boyutlarını şifrelemediğini** belirtmek önemlidir; bu, RAR veya 7z dosyalarıyla paylaşılmayan bir güvenlik açığıdır. Ayrıca, daha eski ZipCrypto yöntemiyle şifrelenmiş zip dosyaları, sıkıştırılmış bir dosyanın şifrelenmemiş bir kopyası mevcutsa **düz metin saldırısına** karşı savunmasızdır. Bu saldırı, zip'in şifresini kırmak için bilinen içeriği kullanır; bu zayıflık [HackThis'in makalesinde](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) ve [bu akademik çalışmada](https://www.cs.auckland.ac.nz/~mike/zipattacks.pdf) detaylandırılmıştır. Ancak, **AES-256** şifrelemesiyle güvence altına alınmış zip dosyaları bu düz metin saldırısına karşı bağışıklık gösterir, bu da hassas veriler için güvenli şifreleme yöntemlerinin seçilmesinin önemini vurgular. +Şuna dikkat etmek önemlidir: parola korumalı zip dosyaları içinde dosya adlarını veya dosya boyutlarını şifrelemezler; bu, RAR veya 7z dosyalarının sahip olmadığı bir güvenlik açığıdır (bu formatlar bu bilgileri şifreleyebilir). Ayrıca, eski ZipCrypto yöntemiyle şifrelenmiş zip dosyaları, sıkıştırılmış bir dosyanın şifresiz bir kopyası mevcutsa bir plaintext attack'a karşı savunmasızdır. Bu saldırı, bilinen içeriği kullanarak zip parolasını kırmayı sağlar; bu zafiyet [HackThis's article](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) adresinde ve [this academic paper](https://www.cs.auckland.ac.nz/~mike/zipattacks.pdf) içinde detaylandırılmıştır. Ancak, AES-256 ile korunmuş zip dosyaları bu plaintext attack'a karşı bağışıktır; bu da hassas veriler için güvenli şifreleme yöntemleri seçmenin önemini gösterir. + +--- + +## Manipüle edilmiş ZIP başlıkları kullanılarak APK'larda anti-reversing hileleri + +Modern Android malware dropper'ları, APK'nın cihazda kurulabilir kalmasını sağlarken static araçları (jadx/apktool/unzip) bozmak için bozuk ZIP metadata'sı kullanır. En yaygın hileler şunlardır: + +- ZIP General Purpose Bit Flag (GPBF) bit 0'ı set ederek sahte şifreleme +- Parser'ları şaşırtmak için büyük/özel Extra alanlarını kötüye kullanma +- Gerçek öğeleri gizlemek için dosya/klasör isim çakışmaları (örn., gerçek `classes.dex` yanında `classes.dex/` isimli bir dizin) + +### 1) Fake encryption (GPBF bit 0 set) without real crypto + +Belirtiler: +- `jadx-gui` şu tür hatalarla başarısız olur: + +``` +java.util.zip.ZipException: invalid CEN header (encrypted entry) +``` +- `unzip` core APK dosyaları için parola ister, oysa geçerli bir APK `classes*.dex`, `resources.arsc`, veya `AndroidManifest.xml` dosyalarını şifreli olamaz: + +```bash +unzip sample.apk +[sample.apk] classes3.dex password: +skipping: classes3.dex incorrect password +skipping: AndroidManifest.xml/res/vhpng-xhdpi/mxirm.png incorrect password +skipping: resources.arsc/res/domeo/eqmvo.xml incorrect password +skipping: classes2.dex incorrect password +``` + +zipdetails ile tespit: +```bash +zipdetails -v sample.apk | less +``` +Yerel ve merkezi başlıklar için General Purpose Bit Flag'e bakın. İhbar edici bir değer, çekirdek girdiler için bile bit 0'ın setlenmiş olması (Encryption): +``` +Extract Zip Spec 2D '4.5' +General Purpose Flag 0A09 +[Bit 0] 1 'Encryption' +[Bits 1-2] 1 'Maximum Compression' +[Bit 3] 1 'Streamed' +[Bit 11] 1 'Language Encoding' +``` +Heuristik: Bir APK cihazda yüklenip çalışıyorsa ama araçlara göre core girdileri "encrypted" görünüyorsa, GPBF üzerinde oynanmış demektir. + +Düzeltme: Hem Local File Headers (LFH) hem de Central Directory (CD) girdilerindeki GPBF bit 0'ı temizleyerek yapılır. Minimal byte-patcher: +```python +# gpbf_clear.py – clear encryption bit (bit 0) in ZIP local+central headers +import struct, sys + +SIG_LFH = b"\x50\x4b\x03\x04" # Local File Header +SIG_CDH = b"\x50\x4b\x01\x02" # Central Directory Header + +def patch_flags(buf: bytes, sig: bytes, flag_off: int): +out = bytearray(buf) +i = 0 +patched = 0 +while True: +i = out.find(sig, i) +if i == -1: +break +flags, = struct.unpack_from(' 1: +print('COLLISION', base, '->', variants) +``` +Blue-team tespit fikirleri: +- Flag, local header'ları şifrelemeyi işaret eden (GPBF bit 0 = 1) fakat yine de install/run olan APK'ler. +- Flag, core entry'lerdeki büyük/bilinmeyen Extra field'lar (ör. `JADXBLOCK` gibi marker'lara bak). +- Flag path-collisions (`X` and `X/`) özellikle `AndroidManifest.xml`, `resources.arsc`, `classes*.dex` için. + +--- ## Referanslar - [https://michael-myers.github.io/blog/categories/ctf/](https://michael-myers.github.io/blog/categories/ctf/) +- [GodFather – Part 1 – A multistage dropper (APK ZIP anti-reversing)](https://shindan.io/blog/godfather-part-1-a-multistage-dropper) +- [zipdetails (Archive::Zip script)](https://metacpan.org/pod/distribution/Archive-Zip/scripts/zipdetails) +- [ZIP File Format Specification (PKWARE APPNOTE.TXT)](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) {{#include ../../../banners/hacktricks-training.md}}