August 7, 2018

Zip-бомба

Что вообще из себя представляет Zip-бомба?

Zip-бомба это архивный файл, который по своей природе обладает разрушающим действием. При распаковке может вызвать крах системы. Современные антивирусы вполне распознают подобные файлы и предупреждают пользователя о разрушающем действии.

Принцип работы.

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

Применение.

В некоторых случаях таким способом можно устроить DoS-атаку на систему, обрабатывающую архивы без участия человека.

Как создать Zip-бомбу самому?

  1. Открываем блокнот.
  2. Пишем достаточное кол-во нулей.
  3. Увеличиваем их кол-во путем нажатия комбинаций Ctrl+A, Ctrl+C, Ctrl+V.
  4. Повторяем третий пункт, пока вы не заметите, что размер ну очень вырос, а наш ПК сам от большого количества нулей начинает глючить.
  5. А теперь сжимаем этот файл в rar / zip.

В итоге наш архив весит максимум 1мб. Как все это получилось? Все это тоже просто: архиваторы используют специальные алгоритмы сжатия; например, у нас было "0000000", а архиватор сжал все это дело вот так: "70".

Далее создайте несколько копий архива (штук так десять) и всех их сожмите в один. Отправьте получившийся архив нашей жертве и ждите открытия, или сами распакуйте архив на его ПК, если есть возможность.

Если лень делать самому, то вот вам самая знаменитая бомба: 42.zip Её распакованный вес: 4,5 петабайт(4.503.599.626.321.920 гигабайт). Этот архив можно найти на просторах интернета.

PNG Zip-бомба.

Программист и хакер Дэвид Фифилд (David Fifield) задумался, где ещё можно применить «архивные бомбы». Сразу на ум приходит графический формат PNG, в котором используется алгоритм сжатияDEFLATE в библиотеке zlib.

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

Сначала алгоритм DEFLATE заменяет повторяющиеся строки указателями (LZ77), при этом каждая пара бит кодирует 258 одинаковых байтов с нулями. Степень компрессии составляет 1032 к 1.

Затем за дело берётся bzip2, который сжимает длинный набор одинаковых значений в максимально компактный вид.

В архиве на 420 байт — файл PNG размером 6 132 534 байт (5,8 МБ) и изображением 225 000 х 225 000 пикселей (50,625 гигапикселей). В пиксельном буфере с тремя байтами на пиксель картинка займёт примерно 141,4 ГБ.

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

Защита сайта Zip-бомбой.

Раньше ZIP-бомбы использовались для самых разных целей, от обыкновенного троллинга, до умышленного вывода из строя антивирусов. И хотя современные защитные решения давно научились распознавать такие файлы и даже предупреждают пользователя об опасности, тем же не могут похвастаться браузеры и сканеры уязвимостей, такие как Nikto, SQLMap и так далее.

Учитывая эту особенность, австрийский ИБ-специалист Кристиан Хашек (Christian Haschek) предложил использовать ZIP-бомбы во благо, обращая их против злоумышленников. Для этого исследователь написал два небольших PHP-скрипта, которые определяют подозрительные user-agent. Так, если злоумышленники пытаются использовать сканер уязвимостей, или через браузер запрашивают доступ к защищенным или приватным страницам (бэкэнду, панели администрирования, страницам, содержащим формы регистрации и входа), скрипты подменяют обычное содержимое страницы ZIP-бомбой. Как только клиент атакующего получит такой архив, злоумышленника ждет неизбежный аварийный отказ.

Хашек успешно протестировал свою методику на бразуерах IE11, Chrome, Edge, Safari и Chrome для Android, а также сканерах SQLmap и Nikto. Во всех случаях получение ZIP-бомб приводило к краху и многочисленным ошибкам. Лишь Nikto, казалось бы, продолжил работать, но выяснилось, что никакого результата такое сканирование не приносит.