From f8ec74a2e8ec59eae2b64b2c8145cc809c2fe1ca Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 20:13:40 +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 4ba876611..9a2baa47a 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 फ़ाइलों को मैनेज करने के लिए जरूरी हैं — इन्हें zip फ़ाइलों का डायग्नोसिस, रिपेयर और क्रैक करने में इस्तेमाल किया जाता है। यहाँ कुछ महत्वपूर्ण यूटิลिटी हैं: -- **`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)**: zip पासवर्ड के लिए ब्रूट-फोर्स क्रैकिंग का एक उपकरण, जो लगभग 7 वर्णों तक के पासवर्ड के लिए प्रभावी है। +- **`unzip`**: बताता है कि कोई zip फ़ाइल क्यों decompress नहीं हो रही है। +- **`zipdetails -v`**: zip फ़ाइल फॉर्मेट फ़ील्ड्स का विस्तृत विश्लेषण प्रदान करता है। +- **`zipinfo`**: zip फ़ाइल की सामग्री को बिना निकालें (extract किए) सूचीबद्ध करता है। +- **`zip -F input.zip --out output.zip`** और **`zip -FF input.zip --out output.zip`**: क्षतिग्रस्त (corrupted) zip फ़ाइलों की मरम्मत की कोशिश करते हैं। +- **[fcrackzip](https://github.com/hyc/fcrackzip)**: zip पासवर्ड्स को ब्रूट-फोर्स से क्रैक करने के लिए एक टूल, लगभग 7 अक्षरों तक के पासवर्ड के लिए प्रभावी। -[Zip फाइल प्रारूप विनिर्देशन](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) zip फाइलों की संरचना और मानकों पर व्यापक विवरण प्रदान करता है। +[Zip file format specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) zip फ़ाइलों की संरचना और मानकों पर व्यापक विवरण प्रदान करता है। -यह ध्यान रखना महत्वपूर्ण है कि पासवर्ड-संरक्षित zip फाइलें **फाइल नामों या फाइल आकारों को एन्क्रिप्ट नहीं करती हैं**, जो एक सुरक्षा दोष है जो RAR या 7z फाइलों के साथ साझा नहीं किया जाता है, जो इस जानकारी को एन्क्रिप्ट करते हैं। इसके अलावा, पुराने ZipCrypto विधि के साथ एन्क्रिप्ट की गई zip फाइलें **प्लेनटेक्स्ट हमले** के प्रति संवेदनशील हैं यदि एक संकुचित फाइल की अनएन्क्रिप्टेड प्रति उपलब्ध है। यह हमला ज्ञात सामग्री का उपयोग करके zip के पासवर्ड को क्रैक करने के लिए किया जाता है, जो [HackThis के लेख](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) में विस्तृत रूप से बताया गया है और [इस शैक्षणिक पत्र](https://www.cs.auckland.ac.nz/~mike/zipattacks.pdf) में आगे समझाया गया है। हालाँकि, **AES-256** एन्क्रिप्शन के साथ सुरक्षित zip फाइलें इस plaintext हमले के प्रति प्रतिरक्षित हैं, जो संवेदनशील डेटा के लिए सुरक्षित एन्क्रिप्शन विधियों का चयन करने के महत्व को दर्शाता है। +यह जानना महत्वपूर्ण है कि पासवर्ड-प्रोटेक्टेड zip फ़ाइलें अंदर के फ़ाइल नामों या फ़ाइल साइज़ को **एनक्रिप्ट नहीं करतीं (do not encrypt filenames or file sizes)** — यह एक सुरक्षा कमजोरी है जो RAR या 7z फ़ाइलों के साथ साझा नहीं होती क्योंकि वे इस जानकारी को एनक्रिप्ट करते हैं। आगे, पुराने ZipCrypto तरीके से एनक्रिप्ट की गई zip फ़ाइलें तब एक **plaintext attack** के प्रति संवेदनशील होती हैं जब किसी compressed फ़ाइल की एक अनएन्क्रिप्टेड कॉपी उपलब्ध हो। यह हमला ज्ञात कॉन्टेन्ट का उपयोग कर 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) में और विस्तार से समझाया गया है। हालांकि, **AES-256** एनक्रिप्शन वाले zip फ़ाइलें इस plaintext attack से सुरक्षित होती हैं, जो संवेदनशील डेटा के लिए सुरक्षित एनक्रिप्शन विधियाँ चुनने के महत्व को दर्शाता है। -## References +--- + +## APKs में हेरफेर किए गए ZIP headers का उपयोग करके Anti-reversing ट्रिक्स + +आधुनिक Android malware droppers खराब/malformed ZIP metadata का उपयोग स्टैटिक टूल्स (jadx/apktool/unzip) को तोड़ने के लिए करते हैं, जबकि APK को डिवाइस पर इंस्टॉल करने योग्य बनाए रखते हैं। सबसे सामान्य ट्रिक्स हैं: + +- ZIP General Purpose Bit Flag (GPBF) का bit 0 सेट करके Fake encryption +- पार्सर्स को भ्रमित करने के लिए बड़े/कस्टम Extra fields का दुरुपयोग +- वास्तविक आर्टिफैक्ट्स छिपाने के लिए फ़ाइल/डायरेक्टरी नामों का टकराव (उदा., एक directory जिसका नाम `classes.dex/` है, जो वास्तविक `classes.dex` के बगल में मौजूद हो) + +### 1) Fake encryption (GPBF bit 0 set) बिना असली क्रिप्टो के + +लक्षण: +- `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 +``` +local और central headers के लिए General Purpose Bit Flag को देखें। एक स्पष्ट संकेतक मान है 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 डिवाइस पर इंस्टॉल होकर चलता है लेकिन core entries टूल्स को "encrypted" दिखती हैं, तो GPBF में छेड़छाड़ की गई है। + +ठीक करने के लिए GPBF बिट 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 detection ideas: +- उन APKs को फ़्लैग करें जिनके local headers एन्क्रिप्शन को चिह्नित करते हैं (GPBF bit 0 = 1) फिर भी install/run होते हैं। +- core entries पर बड़े/अज्ञात Extra fields को फ़्लैग करें (markers जैसे `JADXBLOCK` देखें)। +- path-collisions को फ़्लैग करें (`X` और `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}}