TGViewer
Сетевик Джонни // Network Admin Сетевик Джонни // Network Admin @iscode · 5.79K subscribers
Post #1070 3.23K
🥷 Проблема ботов и идея защиты, или о том как я использую zip-бомбы для защиты своего сервера(ч.2)

Механизм работы zip-бомб и их реализация:
Когда зловредный бот отправляет запрос, сервер имитирует успешный ответ (200 OK), но вместо реальных данных передаёт zip-бомбу. Ключевой момент — заголовок Content-Encoding: gzip, который заставляет бота автоматически распаковывать файл. Вот что происходит дальше:

Ловушка для бота
Большинство ботов слепо доверяют заголовкам сжатия. Получив файл, они начинают его распаковывать в память, не проверяя содержимое. Например, файл 10GB.gz весит всего 10 МБ, но содержит 10 ГБ нулевых байтов, сжатых многократно. Распаковка требует в 1000 раз больше памяти, чем исходный файл.
- Боты, написанные на языках с ручным управлением памятью (например, C/C++), крашатся из-за переполнения буфера.
- Скрипты на Python или Node.js выбрасывают исключения MemoryError, так как исчерпывают лимиты выделенной памяти.
- Даже если бот выживает, обработка гигабайтов "мусора" затягивает время выполнения, что делает атаку невыгодной для злоумышленника.

Технические нюансы создания zip-бомбы
Команда dd if=/dev/zero bs=1G count=10 | gzip -c > 10GB.gz работает так:

dd читает нулевые байты из /dev/zero блоками по 1 ГБ (10 блоков = 10 ГБ).

gzip сжимает данные, но из-за повторяющихся нулей степень сжатия максимальна.

Итоговый файл 10GB.gz будет многослойным: при распаковке он может генерировать вложенные архивы (если использовать рекурсивное сжатие), но в данном случае это простой поток нулей.

Важно! Современные антивирусы и системы анализа трафика могут блокировать такие файлы. Чтобы усложнить обнаружение, можно:
- Добавить случайные данные в начало файла.
- Использовать формат zlib вместо gzip.
- Создать бесконечно распаковывающийся архив через рекурсивное сжатие (например, с помощью pigz).

Интеграция с сервером

Для автоматизации защиты я добавил на сервер middleware, который:
- Проверяет IP по чёрному списку (например, через Fail2ban или базы вроде AbuseIPDB).
- Анализирует поведение: частоту запросов, подозрительные User-Agent (например, Python-urllib), попытки инъекций в URL.
- Использует ханипоты — фейковые страницы-ловушки, на которые попадают только боты (например, скрытые ссылки).

Пример логики на PHP:

// Проверяем признаки бота
$isMalicious = checkMaliciousPatterns($_SERVER['REQUEST_URI'])
|| isIPBlacklisted($_SERVER['REMOTE_ADDR'])
|| isUserAgentSuspicious($_SERVER['HTTP_USER_AGENT']);

if ($isMalicious) {
// Отправляем zip-бомбу
header("HTTP/1.1 200 OK");
header("Content-Encoding: gzip");
header("Content-Type: text/html"); // Маскируем под HTML
header("Content-Length: " . filesize($bombPath));
readfile($bombPath);
exit();
}


Zip-бомбы — это «грубая сила» в мире защиты от ботов. Они не заменят WAF (Web Application Firewall) или CAPTCHA, но станут дополнительным слоем обороны против простых атак.
  • 👍 23
More from @iscode
  1. Oct 1, 2026🥷 Подключилось новое устройство. Назвалось «принтер_бухгалтерия». IP свободный, MAC похож…
  2. Oct 1, 2026🎇Главная идея DevSecOps: безопасность перестаёт тормозить разработку. Вместо проверок «по…
  3. Sep 29, 2026Заморочились 😀
  4. Sep 28, 202622 октября встречаемся в Москве: Kuber Conf уже совсем скоро! Что будет на конференции: –…
  5. Aug 23, 2026🥸 OWASP Agentic Skills Top 10: критические уязвимости при работе с агентами Свежак от OWA…
  6. Aug 8, 2026Технологический радар и принятие изменений Когда вы уже достаточно выросли из штанишек и к…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →