From 17d2d9fbe195f86f410e4c0e15ad659757d64ecf Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 20:09:58 +0000 Subject: [PATCH] Translated ['', 'src/generic-methodologies-and-resources/basic-forensic- --- .../zips-tricks.md | 164 ++++++++++++++++-- 1 file changed, 154 insertions(+), 10 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 d18c3149c..69b87cc17 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 @@ -# ZIPs tricks +# Τρικ για ZIPs {{#include ../../../banners/hacktricks-training.md}} -**Εργαλεία γραμμής εντολών** για τη διαχείριση **zip αρχείων** είναι απαραίτητα για τη διάγνωση, επισκευή και σπάσιμο zip αρχείων. Ακολουθούν μερικά βασικά εργαλεία: +**Εργαλεία γραμμής εντολών** για τη διαχείριση αρχείων zip είναι απαραίτητα για τη διάγνωση, επιδιόρθωση και cracking αρχείων zip. Ακολουθούν μερικά βασικά utilities: -- **`unzip`**: Αποκαλύπτει γιατί ένα zip αρχείο μπορεί να μην αποσυμπιέζεται. -- **`zipdetails -v`**: Προσφέρει λεπτομερή ανάλυση των πεδίων μορφής zip αρχείου. -- **`zipinfo`**: Λίστα περιεχομένων ενός zip αρχείου χωρίς να τα εξάγει. -- **`zip -F input.zip --out output.zip`** και **`zip -FF input.zip --out output.zip`**: Προσπαθούν να επισκευάσουν κατεστραμμένα zip αρχεία. -- **[fcrackzip](https://github.com/hyc/fcrackzip)**: Ένα εργαλείο για brute-force σπάσιμο κωδικών zip, αποτελεσματικό για κωδικούς έως περίπου 7 χαρακτήρες. +- **`unzip`**: Αποκαλύπτει γιατί ένα αρχείο zip μπορεί να μην αποσυμπιεστεί. +- **`zipdetails -v`**: Παρέχει λεπτομερή ανάλυση των πεδίων του format zip. +- **`zipinfo`**: Καταγράφει τα περιεχόμενα ενός αρχείου zip χωρίς να τα εξάγει. +- **`zip -F input.zip --out output.zip`** και **`zip -FF input.zip --out output.zip`**: Προσπαθούν να επιδιορθώσουν corrupted αρχεία zip. +- **[fcrackzip](https://github.com/hyc/fcrackzip)**: Ένα εργαλείο για brute-force cracking κωδικών zip, αποτελεσματικό για κωδικούς περίπου έως 7 χαρακτήρες. -Η [προδιαγραφή μορφής zip αρχείου](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) παρέχει λεπτομερείς πληροφορίες σχετικά με τη δομή και τα πρότυπα των zip αρχείων. +Η [Zip file format specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) παρέχει πλήρεις λεπτομέρειες για τη δομή και τα standards των αρχείων zip. -Είναι κρίσιμο να σημειωθεί ότι τα zip αρχεία που προστατεύονται με κωδικό **δεν κρυπτογραφούν τα ονόματα αρχείων ή τα μεγέθη αρχείων** εντός τους, μια αδυναμία ασφαλείας που δεν μοιράζονται τα RAR ή 7z αρχεία που κρυπτογραφούν αυτές τις πληροφορίες. Επιπλέον, τα zip αρχεία που κρυπτογραφούνται με την παλαιότερη μέθοδο ZipCrypto είναι ευάλωτα σε **επίθεση απλού κειμένου** αν είναι διαθέσιμο ένα μη κρυπτογραφημένο αντίγραφο ενός συμπιεσμένου αρχείου. Αυτή η επίθεση εκμεταλλεύεται το γνωστό περιεχόμενο για να σπάσει τον κωδικό του zip, μια ευπάθεια που αναλύεται στο [άρθρο του HackThis](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) και εξηγείται περαιτέρω σε [αυτή την ακαδημαϊκή εργασία](https://www.cs.auckland.ac.nz/~mike/zipattacks.pdf). Ωστόσο, τα zip αρχεία που ασφαλίζονται με κρυπτογράφηση **AES-256** είναι ανθεκτικά σε αυτή την επίθεση απλού κειμένου, επιδεικνύοντας τη σημασία της επιλογής ασφαλών μεθόδων κρυπτογράφησης για ευαίσθητα δεδομένα. +Είναι κρίσιμο να σημειωθεί ότι τα password-protected αρχεία zip **δεν κρυπτογραφούν τα ονόματα αρχείων ή τα μεγέθη αρχείων** στο εσωτερικό, ένα πρόβλημα ασφάλειας που δεν ισχύει για RAR ή 7z που κρυπτογραφούν αυτή την πληροφορία. Επιπλέον, αρχεία zip κρυπτογραφημένα με την παλαιότερη μέθοδο ZipCrypto είναι ευάλωτα σε μια plaintext attack εάν υπάρχει διαθέσιμη μια μη κρυπτογραφημένη αντίγραφα ενός συμπιεσμένου αρχείου. Αυτή η επίθεση εκμεταλλεύεται το γνωστό περιεχόμενο για να σπάσει τον κωδικό του zip, μια ευπάθεια που αναλύεται στο [HackThis's article](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) και εξηγείται αναλυτικότερα σε [this academic paper](https://www.cs.auckland.ac.nz/~mike/zipattacks.pdf). Ωστόσο, αρχεία zip που προστατεύονται με AES-256 είναι ανθεκτικά σε αυτή την plaintext attack, υπογραμμίζοντας τη σημασία της επιλογής ασφαλών μεθόδων κρυπτογράφησης για ευαίσθητα δεδομένα. -## References +--- + +## Τεχνικές αντι-ανάλυσης σε APKs χρησιμοποιώντας παραποιημένα headers ZIP + +Σύγχρονοι Android malware droppers χρησιμοποιούν κακοσχηματισμένα metadata ZIP για να σπάσουν statικά εργαλεία (jadx/apktool/unzip) ενώ διατηρούν το APK εγκαταστάσιμο στη συσκευή. Τα πιο συνηθισμένα τρικ είναι: + +- Fake encryption by setting the ZIP General Purpose Bit Flag (GPBF) bit 0 +- Abusing large/custom Extra fields to confuse parsers +- File/directory name collisions to hide real artifacts (e.g., a directory named `classes.dex/` next to the real `classes.dex`) + +### 1) Fake encryption (GPBF bit 0 set) χωρίς πραγματικό crypto + +Συμπτώματα: +- `jadx-gui` αποτυγχάνει με σφάλματα όπως: + +``` +java.util.zip.ZipException: invalid CEN header (encrypted entry) +``` +- `unzip` ζητάει κωδικό για βασικά αρχεία APK παρόλο που ένα έγκυρο APK δεν μπορεί να έχει encrypted `classes*.dex`, `resources.arsc`, ή `AndroidManifest.xml`: + +```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: +```bash +zipdetails -v sample.apk | less +``` +Δες το General Purpose Bit Flag για τα local και central headers. Μια χαρακτηριστική τιμή είναι το bit 0 set (Encryption) ακόμη και για core entries: +``` +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' +``` +Ευρετικό: Αν ένα APK εγκαθίσταται και τρέχει στη συσκευή αλλά βασικές εγγραφές εμφανίζονται "encrypted" στα εργαλεία, το GPBF έχει παραποιηθεί. + +Διόρθωση: Καθαρίστε το GPBF bit 0 τόσο στις Local File Headers (LFH) όσο και στις Central Directory (CD) εγγραφές. 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: +- Επισήμανση των APKs των οποίων οι τοπικές κεφαλίδες δηλώνουν κρυπτογράφηση (GPBF bit 0 = 1) αλλά παρόλα αυτά εγκαθίστανται/εκτελούνται. +- Επισήμανση μεγάλων/άγνωστων Extra fields σε core entries (ψάξτε για δείκτες όπως `JADXBLOCK`). +- Επισήμανση συγκρούσεων διαδρομών (`X` and `X/`) ειδικά για `AndroidManifest.xml`, `resources.arsc`, `classes*.dex`. + +--- + +## Αναφορές - [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}}