Как сделать зип бомбу

Обновлено: 07.07.2024

Файлы, сжатые так сильно, что могут быть вредоносными, существуют уже пару десятков лет. Однако один исследователь только что представил совершенно новую zip-бомбу, которая превращается из 46-мегабайтного файла в 4,5-петабайтные данные.

За 30 лет с момента появления zip-формата сжатые файлы стали широко использоваться — и не всегда в благих целях.

Это — новейший поворот в истории вредоносных программ, которые не являются вирусами, но все же могут помешать работе вашего компьютера.

Как появились zip-бомбы

Так на чем же основаны zip-бомбы? Для начала — немного истории и пояснений. История формата zip берет отсчет в 1988 году, когда Фил Кац, программист и пользователь BBS (Bulletin Board System — формат электронной доски объявлений, работающей при коммутации через телефонные сети — прим. Newочём) получил судебный иск по поводу созданной им программы-архиватора, работавшей с форматом [сжатия данных] .arc. В ответ на это Кац создал новый алгоритм сжатия, который не был совместим с существующим форматом, но открыто распространялся и оказался чуть лучше. Это привело к тому, что его формат фактически стал стандартным.

(Вместе с успехом и известностью, которые Кацу принесло его творение, в личной жизни он испытывал серьезные проблемы; в 2000 году программист умер от расстройств, связанных с алкоголизмом, в возрасте 37 лет. Его история увлекательна и трагична, если вы захотите узнать больше).

Стандарт позволяет довести идею до логического предела. Если файл заполнен триллионом нулей, это значит, что сжать его можно до крайне малого объема, даже если при распаковке файл будет чрезвычайно тяжелым.

Вскоре после этого появился самый знаменитый образец zip-бомбы, 42.zip, чей создатель до сих пор неизвестен, но чья степень сжатия — 106 миллиардов к 1 — легендарна. В интервью, данном по электронной почте, Дэвид Фифилд отметил, что, хотя 42.zip (размещавшийся на одном и том же сайте на протяжении 15 лет) привлекает больше всего внимания, он считает последующие попытки куда более интересными в техническом плане.

Экстремальное сжатие

На протяжении многих лет zip-бомбы оставались чем-то вроде вредоносного новшества, которое время от времени показывает себя в разных контекстах. Мой любимый пример из 2017 года, когда IT-блогер, уставший от попыток ботов авторизоваться на его сайте на базе WordPress (система с открытым кодом для управления и кастомизации сайтов — прим. Newочём), создал собственную разновидность zip-бомбы на основе формата gzip, воспользовавшись встроенным во многие браузеры сжатием, чтобы нарушить работу ботов, пытавшихся проникнуть на его сайт.

Действенность этих файлов заключается в том, что они используют в свою пользу все то, что делает сжатие эффективным, и превращают эти аспекты в свое оружие, впустую растрачивая процессорное время, а также перегружая оперативную память и дисковое пространство в процессе.

Однако для таких файлов имелось естественное препятствие: большинство подпрограмм распаковки zip в высшей точке ограничиваются коэффициентом сжатия 1032 к одному, что означает, что zip-бомбы могут только рекурсивно раскрыть свой истинный потенциал сжатия. Например, файл 42.zip, который весит чуть больше 42 килобайт при полном сжатии, содержит более сложные zip-файлы, разбитые по 16 штук на каждый из нескольких слоев одного архива. При полной распаковке документы занимают 4,5 петабайта — это так много, что стало бы испытанием для cамого высококлассного сервера, который вы только могли бы купить.

Более поздние эксперименты по сжатию (собирательное их название — zip-квайны (квайн — самовоспроизводящаяся программа, выводящая свой собственный код — прим. Newочём)) допускали бесконечную рекурсию и поэтому могли распаковываться, так никогда и не достигая конечной точки. (Фифилд признался, что этот формат вдохновил его на создание собственного файла.)

Но что делает работу Фифилда действительно интересной, так это то, что она превышает коэффициент сжатия 1032 к одному путем накладывания файлов друг на друга во время процесса сжатия, создавая более плотно упакованный файл в одном слое без рекурсии. Хотя его результаты менее сжаты, чем у 42.zip, файл эквивалентного размера при распаковке достигает лишь скромных 5.5 гигабайт. Но чем больше размер, тем значительней степень сжатия — до 281 терабайта при обычных 10 мегабайтах zip-файла.

Выход за пределы стандартной спецификации zip дает еще более впечатляющие результаты: 45-мегабайтный файл, сжатый с использованием менее распространенного, но более эффективного форматного расширения zip64, может достичь размера, эквивалентного распакованному 42.zip, без какой-либо рекурсии и при соотношении 98 миллионов к одному — это конечно, не так плотно, но, безусловно, достаточно, чтобы заполнить весь ваш компьютер.

Фифилд отметил, что отчасти его работа стала возможной потому, что он придумал, как использовать циклические проверки избыточности или CRC-алгоритмы — базовую функцию корректировку ошибок, встроенную в zip, PNG, Ethernet и множество других технических стандартов. Фифилд также сказал, что лучше всего он изучил контрольные суммы CRC-32.

Действительно ли они опасны?

Фифилд представит свои выводы на конференции USENIX в рамках семинара по наступательным технологиям (Workshop on Offensive Technologies, WOOT) в следующем месяце. Ученый отметил, что сама работа является лишь дополнением к истории исследований и, вероятно, будет вытеснена в будущем, однако для повышения осведомленности она важна.

По материалам Vice
Автор: Эрни Смит

Переводила: Анастасия Ященко
Редактировал: Сергей Разумов

Новые разновидности компьютерных вирусов появляются едва ли не каждый день, причём подавляющее большинство как новых, так и модифицированных вредоносных программ нацелены на извлечение выгоды. Кража паролей, номеров банковских карт, использование вычислительной мощности компьютеров пользователей посредством создания бот-сетей, вымогательство — вот для чего в основном создаются вирусы. Но есть среди зловредов и такие, целью которых является обычное вредительство.

Такие вирусы были распространены в начале компьютерной эры и вот, похоже, они снова начинают набирать популярность. В последнее время участились случаи заражения компьютеров так называемыми архивами смерти — зловредными архивами, распаковка которых полностью забивает жёсткий диск данными и как уверяют некоторые, способными даже вывести из строя железо, создав на него сильнейшую нагрузку. Вирус 42.zip , уже раз терроризировавший пользователей несколько лет назад, является одним из них.

ZIP

Что касается выхода из строя железа компьютера, то здесь, пожалуй, имеет место преувеличение, нагрузка на комплектующие действительно резко возрастёт, но вряд ли она окажется достаточно высокой, чтобы они сгорели. Если процессор перегреется, сработает защита и компьютер перезагрузится, хотя стопроцентной гарантии, что будет именно так, дать нельзя. В хлам ПК ZIP -бомбы не превратят, уже имеющиеся на диске файлы не уничтожат, но нервы пользователю потреплют так это точно. Распознают ли антивирусы подобные угрозы? Да, антивирусные программы могут распознавать зловреды этого типа, впрочем, представлять угрозу ZIP -бомба может и для самого антивируса: при попытке распаковать архив антивирус также может забить всю память и ничего и не найти.

zip

Как и все ZIP -бомбы, 42.zip опасен не только для Windows, но и для других операционных систем, поддерживающих работу с архивами ZIP . Что делать, если такая ZIP -бомба таки сработала на вашем компьютере? Лучше не дожидаться вылета системы, а выключить компьютер принудительно, загрузиться в безопасном режиме или из-под LiveCD , удалить архив и тот мусор, который он уже успел наплодить, а заодно проверить автозагрузку, ведь вредоносная программа вполне могла прописать туда свой код.

Этот вопрос о zip бомбы, естественно, привело меня в Википедии на тему. В статье упоминается пример zip-файл 45.1 КБ, что распаковывает до 1,3 эксабайт.

Каковы принципы/методы, которые будут использованы для создания такого файла в первую очередь? Я не'т хотим, чтобы на самом деле делать это, больше интересует упрощенный "как-вещи-работает" по мотивам соответствующих понятий.

В статье упоминается 9 слоев zip-файлы, так что's не простой случай сжать кучу нулей. Почему 9, почему 10 файлов в каждой?

Цитировать страницу Википедия:

один пример в zip-бомба файла 45.1.zip который 45.1 КБ сжатых данных, , содержащий девять слои вложенные zip-файлы в комплектах 10, каждый нижний слой архиве содержащий файл 1.30 гигабайт для В общей сложности 1.30 экзабайт данных сведения.

Все что вам нужно это один файл 1.3 ГБ полный нулей, сжатие в zip-файл, сделайте 10 копий, упаковать их в zip-файл, и повторите эту процедуру 9 раз.

Таким образом, вы получаете файл, который, когда несжатый полностью, производит абсурдное количество данных, не требуя от вас, чтобы начать с этой суммы.

Кроме того, вложенных архивов сделать это намного сложнее для таких программ, как антивирусные программы (основная цель таких-то "бомбы" - а) быть умным и отказываются распаковывать архивы, которые "не большие по себе", потому что до последнего уровня общий объем данных не так много, вы не'т "не видеть" как большие файлы на самом низком уровне, пока вы не достигли этого уровня, и каждого отдельного файла не "не большие по себе" - только огромное количество проблематично.

Создать файл 1.3 эксабайта нулей.

Щелкните правой кнопкой мыши > отправляйте сжатые папки (на молнии).

Это легко сделать в Linux с помощью следующей команды:

ДД, если=/dev/нуль БС=1024 кол-во=10000 | зип zipbomb.zip -

Заменить графу с количеством КБ, который вы хотите сжать. Приведенный выше пример создает 10MiB зип-бомбы (не бомба, но она показывает процесс).

Вам не нужен жесткий диск, чтобы хранить все несжатых данных.

Ниже для Windows:

От безопасность фокуса доказательство концепции (не для офиса!), это'ы zip-файл с 16 папок, каждая с 16 папок, которая идет вот так (42-имя zip файла):

\42\Либ 0\Книга 0\глава 0\док 0\0.dll . \42\Либ Ф\книги Ф\глава Ф\док F\0.dll

Я'м неправильно, наверное, с этой фигурой, но она производит 4^16 (4,294,967,296) каталоги. Потому что каждый каталог должен пространственного распределения n байт, он оказался огромным. DLL-файл в 0 байт.

Распакован только первый каталог `\42\Либ 0\0 Книга\глава 0\0\0.dll док результатов в 4Гб пространства распределения.

(Очень принципиально) сжатия опирается на зрительные повторяющиеся узоры, так что zip-файл будет содержать данные, представляющие что-то вроде

Очень короткое zip-файл, но огромный, когда вы развернуть его.

Для создания в практической деятельности (т. е. без создания на 1,3 эксабайта файл на огромный жесткий диск), вы, вероятно, придется изучить формат файла в бинарном уровне и писать что-то, что приводит к тому, что нужный файл будет выглядеть после сжатия.

в статье упоминается 9 слоев zip-файлы, так что's не простой случай сжать кучу нулей. Почему 9, почему 10 файлов в каждой?

Во-первых, статьи в Википедии сейчас написано 5 слоев с 16 файлов в каждой. Не знаете, где это расхождение приходит, но это's не все, что актуально. Вопрос в том, почему использовать вложенность в первую очередь.

Сдуется, единственный поддерживаемый метод сжатия для zip-файлов*, имеет максимальную степень сжатия 1032. Это может быть достигнуто асимптотически для любой повторяющейся последовательности 1-3 байта. Неважно, что вы делаете в zip-файл, так долго, как это только через сдуется, распакованный размер будет в самый 1032 раз размер оригинального файла zip.

Следовательно, необходимо использовать вложенные zip-файлы, чтобы добиться действительно запредельные коэффициенты сжатия. Если у вас есть 2 слоя сжатия, максимальное соотношение становится 1032^2 = 1065024. Для 3, Он'ы 1099104768, и так далее. Для 5 слоев, используемых в 42.zip теоретический максимальный коэффициент сжатия 1170572956434432. Как вы можете видеть, фактический 42.zip далеко от этого уровня. Частично это издержки формата ZIP, и часть его является то, что они просто не'т волнует.

Если бы мне пришлось угадывать, я'д сказать, что 42.zip образовалась просто создать большой пустой файл, и несколько раз сжать и скопировать его. Нет никаких попыток выйти за пределы формата или увеличить степень сжатия или что-нибудь - они просто произвольно взял 16 экземпляров на один слой. Смысл было создавать большие нагрузки без особых усилий.

Примечание: другие форматы сжатия, такие как командой bzip2, предлагают гораздо, гораздо, гораздо больше максимальной степенью сжатия. Однако, большинство зип анализаторов Дон'т принять их.

P. S. можно создать zip-файл, который будет распаковать в копию себя (Куайн). Вы также можете сделать одно, что занимает несколько копий себя. Поэтому, если вы рекурсивно распаковать файл навсегда, максимально возможный размер бесконечен. Единственным ограничением является то, что она может увеличиться в самое 1032 на каждой итерации.

P. P. S. В 1032 рисунок предполагает, что файл данных в zip-непересекающиеся. Один выверт формат zip-файла является то, что она имеет Центральный каталог, в котором перечислены файлы в архиве и смещения в файле данных. Если вы создаете несколько записей файла, указывая на одни и те же данные, можно достичь значительно большей степени сжатия, даже без вложений, но такая zip-файл, скорее всего, будет отклонена парсеров.



Это что-то новое в сфере вредоносного ПО, которое, по сути, не является вирусом, но всё ещё может нанести урон вашему компьютеру.

Как были изобретены Zip-бомбы

История Zip-формата восходит к 1988 году, когда Фил Кац, программист и пользователь BBS, ответил на судебный процесс, связанный с созданием программного обеспечения для сжатия, совместимого с форматом ARC, придумав новый алгоритм сжатия, который был несовместим с существующим форматом, но открыто распространялся. Это привело к тому, что формат стал стандартом де-факто.

Формат Zip и подобные ему варианты хорошо работали на досках объявлений и FTP-серверах и стали повсеместными благодаря условно-бесплатному ПО и добавлению формата в операционные системы Windows и Macintosh. Однако подход к сжатию сделал их пригодными для использования уникальными способами. Одна из причин, по которой Zip-бомбы стали возможными, во многом связана с тем, как работают алгоритмы сжатия. На высоком уровне системы сжатия берут повторяющуюся информацию в сжатом архиве и разбивают её самым минимальным возможным способом. Именно поэтому MP3-файл, который уже сжат, не уменьшается в размере так сильно, как стандартный текстовый файл.

Этот стандарт позволяет довести идею до логической крайности. Если файл состоит из триллиона нулей, это означает, что сжатый файл может получиться чрезвычайно крошечным, даже если распакованный файл огромен.

В результате сам файл, по сути, бесполезен, не считая использования его в качестве способа обойти некоторые антивирусные программы (которые часто сканируют сжатые файлы, чтобы увидеть, могут ли они содержать вирусы) и чего-то вроде инженерного упражнения.

Вскоре после этого появился самый известный пример Zip-бомбы, 42.zip — его автор по сей день неизвестен, однако коэффициент сжатия составляет 106 миллиардов к одному, что является невероятынм. В интервью по электронной почте Файфилд отметил, что, в то время как 42.zip (который находился на одном и том же одностраничном веб-сайте не менее 15 лет) получает большую часть внимания, он находит поздние попытки более интересными с технической точки зрения.

Экстремальное сжатие

На протяжении многих лет Zip-бомба остаётся чем-то вроде вредоносной новинки, которая время от времени всплывает в разных контекстах. Мой любимый пример – из 2017 года, когда IT-блогер создал вариант Zip-бомбы на основе gzip, чтобы уничтожить ботов, которые пытались зарегистрироваться на его сайте.

Что делает эти файлы настолько эффективными, так это то, что они используют процессор, ОЗУ и дисковое пространство в процессе распаковки.

Более поздние эксперименты по сжатию, называемые Zip-quines, обеспечивали бесконечную рекурсию, поэтому вы могли продолжать распаковывать вечно.

Работу Файфилда делает примечательной то, что она минует коэффициент сжатия 1032 к одному путём наложения файлов друг на друга во время процесса сжатия, создавая более плотно упакованный файл с одним слоем, без рекурсии. И хотя его результаты менее сжаты, чем 42.zip (файл эквивалентного размера содержит скромные 5,5 гигабайтов), скорость сжатия является гораздо более значительной при бóльших размерах – 281 терабайт при традиционном 10-мегабайтном Zip-файле.

Выход за пределы исходной спецификации Zip даёт ещё более впечатляющие результаты: 45-мегабайтный файл, сжатый с использованием несколько менее распространённого, но более эффективного расширения формата Zip64, может достигать эквивалента, распакованного до размера 42.zip, без какой-либо рекурсии и в соотношении 98 миллионов к одному.

Действительно ли они опасны?

Но поскольку такое обнаружение не существует в инструментах сжатия на данный момент, оно создало возможность для тестирования, и даже тогда худшее, что произошло со многими программами, протестированными Файфилдом и другими (включая LibreOffice и McAfee Antivirus) – отправка их в тайм-аут. Как отметил пользователь Twitter Тавис Орманди, несколько антивирусных программ даже правильно обнаружили, что это была Zip-бомба, несмотря на то, что это новый вид.

Читайте также: