Analyse der 42.zip und 0.dll

Die Analyse der ZIP-Dateien

In der 42.374 Byte großen "42.zip" (CRC32=9A0D79CC, Änderungszeit unbekannt, Kompressionsgrad [A] 92,69%) befinden sich

16 ZIP-Dateien der Größe 34.902 Byte und den Namen "lib [0..f].zip" (CRC32=C8DC7593, Änderungszeit 28.03.2000 21:40:54, Kompressionsgrad [B] 92,92%), welche wiederum

16 ZIP-Dateien der Größe 29.446 Byte und den Namen "book [0..f].zip" (CRC32=01EB60C6, Änderungszeit 28.03.2000 21:38:30, Kompressionsgrad [C] 94,60%) beihalten, welche wiederum

16 ZIP-Dateien der Größe 32.150 Byte und den Namen "chapter [0..f].zip" (CRC32=B4BD441B, Änderungszeit 28.03.2000 21:36:28, Kompressionsgrad [D] 98,84%) beihalten, welche wiederum

16 ZIP-Dateien der Größe 165.302 Byte und den Namen "doc [0..f].zip" (CRC32=4FFEC4D7, Änderungszeit 28.03.2000 21:34:08, Kompressionsgrad [E] 99,75%) beinhalten, welche wiederum

16 ZIP-Dateien der Größe 4.168.266 Byte und den Namen "page [0..f].zip" (CRC32=0F6AEE37, Änderungszeit 28.03.2000 19:49:08, Kompressionsgrad [F] 99,90%) beinhalten, welche wiederum

jeweils eine einzelne "0.dll"-Datei mit der Größe 4.294.967.295 Bytes beinhalten.

Obwohl die letzteren ZIP-Dateien "page [0..f].zip" am Dateianfang auffällig viele 0x00 Bytes besitzen, ist es unwahrscheinlich, dass diese ZIP-Dateien zur besseren Wiederkompression synthetisch erzeugt oder modifiziert wurden, da bisher alle untersuchten Daten (CRC, Größe, ...) der Realität entsprachen.

Alle ZIP-Archive wurden in Version 2.0 (DOS) angelegt.

Die Analyse der 0.dll

Eine "0.dll"-Datei (CRC32=00000000, Änderungszeit 28.03.2000 18:03:14) hat eine Originalgröße von 4.294.967.295 Bytes mit dem sich wiederholenden Bytemuster 0xAA. Diese Datei wurde auf 4.168.158 Bytes komprimiert. Es handelt sich selbstverständlich nicht um eine echte Dynamic Link Library.

Interessant ist, dass die letztere ZIP-Datei, die diese DLL enthält, fast ausschließlich aus "UUU..." Sequenzen bestehet, die dekomprimiert die oben besagte 0xAA Sequenz über 4.294.967.295 Bytes hinweg erzeugen, die in der Tat die CRC32-Prüfsumme 00000000 besitzt. Dies wurde anhand einer extrahierten "0.dll" durch manuelle Berechnung bestätigt.

Zusammenfassung

Die 0.dll mit insgesamt 4.294.967.295 Bytes (4,3 GB) konnte also insgesamt 1.048.576 Mal in nur 42.374 Bytes (42 KB) gepackt werden. Es konnten also 4.503.599.626.321.920 Bytes (4,5 PB) in nur 42 KB gepackt werden.

Download der Datei

Wer die Datei selbst einmal betrachten will, kann sie hier herunterladen. Sie wird von fast allen modernen Virenscannern erkannt werden und somit sollte es zu keinem Denial-Of-Service (DoS) kommen.

Die Fortsetzung...

Die 42.zip könnte durchaus wieder 16 Mal in eine weitere ZIP-Datei gepackt werden. Diese Prozedur kann beliebig oft wiederholt werden. Die daraus resultierenden ZIP-Dateien werden zwar immer leicht größer, allerdings wird die resultierende Anzahl der Gesamtextraktion an "0.dll"-Dateien unverhältnismäßig höher.

Anti-Virenprogramme oder Firewalls wirken Archivbomben meist durch Timeout-, Speicherlimits oder Kompressionsgradmessung entgegen. Wird in eine 42.zip noch zusätzlich Bilder oder andere Daten gespeichert, kann der hohe Kompressionsgrad von 93% auf einen realistischen Wert minimiert werden. In wie fern Antivirenprogramme trotz Heuristik ausgetrickst werden können, habe ich in meinen Versuchen noch nicht untersucht.

Kompressionsgrade Nebenrechnung

[A] 100-(40848/558432*100) = 92,685232937940519167955991060684 ~= 92,69%

[B] 100-(33344/471136*100) = 92,92263804931060245873802893432 ~= 92,92%

[C] 100-(27792/514400*100) = 94,597200622083981337480559875583 ~= 94,60%

[D] 100-(30624/2644832*100) = 98,84211927260408222526043242066 ~= 98,84%

[E] 100-(163744/66692256*100) = 99,754478241071946943885059158892 ~= 99,75%

[F] 100-(4168158/4294967295*100) = 99,902952508978301777732163150267 ~= 99,90%