Pereiti prie pagrindinio turinio

„ZIP Bombs: A Journey to Good and Offensive Techniques”

Jei kada nors esi užmetęs akį į nuolat online esančio kompiuterio serverio log‘us, žinai – pasaulis negailestingas. Web’ai ar serveriai yra nuolatiniai hack’erių taikiniai. Gali bannin‘ti IP adresus, nebesinaudoti kenksmingomis programomis ar portalais… visgi, gali smogti ten, kur labiausiai skauda – į RAM. Kaip? Apie tai pasakoja Visma Lietuva PHP programuotojas Denis.

Kas yra ZIP?

Zip yra failo formatas, sukurtas 1984 – iais metais. Šis formatas gali suglaudinti duomenis neprarandant kokybės, neiškraipant duomenų (lossless data compression). Taip pat jis leidžia naudoti skirtingus glaudinimo metodus:

  • Store (saugoti; neglaudinimas)
  • Shrink (sutraukti)
  • Reduce (sumažinti, 1-4 lygiai)
  • Implode
  • Deflate
  • Bzip2
  • LZMA (EFS)
  • WavPack, and PPMd

Kas yra Zip bomba?

Zip bomba yra kenksminga archyvo byla, sukurta sugadinti ar sutrikdyti programą, kuri bando šį archyvą atidaryti. Zip bomba dažnai naudojama siekiant išjungti antivirusinę programinę įrangą, kad tradiciniai virusai galėtų pakliūti į sistemą.

ZIP bombų rūšys

Paprasta ZIP bomba:

  • 1 žingsnis: sukurk didelį failą su besikartojančiu turiniu (pvz., daug nulių)
  • 2 žingsnis: suspausk į ZIP failą
  • 3 žingsnis: profit

Sudėtinga ZIP bomba:

  • 1 žingsnis: sukurk didelį failą su besikartojančiu turiniu (pvz., daug nulių)
  • 2 žingsnis: suspausk į ZIP failą
  • 3 žingsnis: padaryk šio failo kopijų tiek, kiek nori (5, 16, 99 kopijos)
  • 4 žingsnis: suspausk visas kopijas į ZIP archyvą
  • 5 žingsnis: pakartok šiuos žingsnius 3-4 kartus
  • 6 žingsnis: profit

Pavyzdinis skaičiavimas:

Nesuspaustas failas = 4 GB

Suspaustu kopijų kiekviename lygyje = 16

Iš viso lygių = 5

4 GB × 16^5 = 4 194 304 GB = 4 PB (petabaitai) nesuglaudintų duomenų
Rezultato pavyzdys: http://www.unforgettable.dk/42.zip (42,838 baitų)

Rezultato pavyzdys:

Rekursinė ZIP bomba:

Reikalavimai: negali būti tuščia ir turi išlaikyti savo suspaustą struktūrą ir turinį toje pačioje vietoje.

Pavyzdžiai:

Original Input → zip() → Compressed Input

Compressed Input → unzip() → (same) Compressed Output

Lempel-Ziv algoritmas:

literal(n) == Ln

repeat(d, n) => repeat(n, n) == Rn

Dekompresija:

L3 H E L R1 L1 O  => H E L L O

L5 H E L L O  => H E L L O

ZIP bomba (web edition)

ZIP bomba (web edition)

PNG bomba

PNG formato kompresijos algoritmas:

  • Taikomas vienas iš 5 PNG filtrų (0x00 – 0x04) kiekvienai pikselių eilutei
  • Ankstesnio žingsnio rezultatai suspaudžiami naudojant Deflate algoritmą

Kaip sukurti daug sveriantį vaizdą su geriausiu glaudinimo santykiu?

  • Naudokite 1 bito spalvų erdvę
  • Padarykite visus pikselius tos pačios spalvos

Reikalinga RAM:

  • plotis × aukštis × baitai vienam pikseliui
  • RGB spalvų erdvė => 3 baitai vienam pikseliui

225 000 × 225 000 px = 50.625 gigapixels (giga = 10^9)

50.625 × 10^9 × 3 bytes = 141.44 GB (151 875 000 000 bytes)

XML bomba:

XML bomba – tai žinutė, sukurta ir siunčiama siekiant užkrauti XML parser’į (paprastai HTTP serverį). Pavyzdys:

Kaip ZIP bomba padės tau apsiginti nuo kenkėjų?

Kai botas patenka į tavo serverį, ieškodamos blogai sukonfigūruoto WordPress’o, jis gauna 10 GB duomenų, kurie iš pradžių atrodo kaip milžiniško puslapio turinys suspaustas iki 10 MB. Bandant analizuoti suspaustą turinį, bot`ui reikės jį išskleisti, o čia jau prasideda pats įdomumas: priklausomai nuo bot`o implementacijos, jis gali:

  • užsipildyti visa operatyvioji atmintis (RAM) ir bot`o kompiuteris apsikraus taip, jog nebegalės vykdyti darbo
  • atminties pritrūks ir bot`o programos veikla sutriks – ji nutrauks savo veikimą
  • programa “tyliai” pratęs veikimą lyg nebūtų aptikus jokių WordPress`o spragų šiame serveryje, nors iš tikrųjų jų net nepatikrino.

Tikimės, kad ši PHP programuotojo Denio Zyk apžvalga apie Zip bombas bus naudinga!

Populiariausi blog'ai

  • Migrating from Xamarin to .NET MAUI: A Comprehensive Guide

    The world of mobile application development is constantly evolving, and Microsoft’s .NET Multi-platform App UI (.NET MAUI) is at the forefront of this change. As an evolution of Xamarin.Forms, .NET MAUI offers developers a modern, cross-platform framework for building native device applications. This blog post will guide you through the process of migrating your existing Xamarin.Forms application to .NET MAUI.

  • My experience on taking the eWPTXv2 exam

    So a few months ago I had the joy of passing the eWPTXv2 exam. Well, it does not sound intriguing until you translate it into human language. The eWPTXv2 is actually eLearnSecurity Web Penetration Testing Extreme second version. Everything sounds better than you put extreme into it. Well, this is not that case since the exam is actually a bit hard.

  • Socialinis intranetas „Simoona“ – dabar prieinamas kiekvienam!

    Šiame blog’o įraše papasakosime apie vidinės komunikacijos įrankį, mūsų kurtą socialinį tinklą „Simooną“. Tik prasidėjus kūrybos procesui mums rūpėjo tik viena – kaip kuo daugiau įmonės kultūros perkelti į skaitmeninę erdvę. Ir prieš aštuonerius metus, net neįsivaizdavome, kad šis vidinis intranetas, bus toks svarbus kuriant glaudžius ryšius tarp kolegų ir tikrai net negalėjome nutuokti, kokia svarbi „Simoona“ bus užklupus pasaulinei pandemijai.