Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
iptable_evil — Бэкдор на уровне ядра iptables, который принимает все пакеты с установленным «битом зла» RFC 3514, обходя правила брандмауэра. Включает сборки в дереве исходников и вне дерева для Linux. | Kitploit
Инструменты/GitHubGitHub/flamingspork/iptable_evil
ЭксплуатацияОбход IDS/IPSСетевая безопасностьОбучение и ОбразованиеRed Teaming
GitHubflamingspork/iptable_evil

iptable_evil

Бэкдор на уровне ядра iptables, который принимает все пакеты с установленным «битом зла» RFC 3514, обходя правила брандмауэра. Включает сборки в дереве исходников и вне дерева для Linux.

Репозиторий
541335 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

iptable_evil

iptable_evil — это очень специфичный бэкдор для iptables, который позволяет пропускать все пакеты с установленным "зловредным битом" (evil bit), независимо от правил брандмауэра.

Первоначальная реализация находится в iptable_evil.c, который добавляет таблицу в iptables и требует изменения заголовка ядра для вставки места под неё. Вторая реализация — это модифицированная версия основного модуля ip_tables и его зависимых компонентов, позволяющая пропускать все "зловредные" пакеты.

Я тестировал это на версии ядра Linux 5.8.0-48, но это должно быть применимо практически к любой версии ядра с полной реализацией iptables.

Объяснение "зловредного бита"

RFC3514, опубликованный 1 апреля 2003 года, определяет ранее неиспользуемый старший бит поля смещения фрагмента IP как флаг безопасности. Для систем, соответствующих RFC, 1 в этой позиции бита указывает на зловредное намерение и приведет к блокировке пакета.

По умолчанию этот бит выключен, но его можно включить в вашем программном обеспечении, если вы собираете весь IP-пакет целиком (как это делают некоторые хакерские инструменты), или в ядре Linux с помощью этого патча (зеркало в этом репозитории здесь).

Как работает бэкдор?

Когда пакет принимается ядром Linux, он обрабатывается iptables и либо отправляется в пользовательское пространство, либо отклоняется, либо изменяется в соответствии с настроенными правилами.

В частности, каждая таблица iptables использует функцию ipt_do_table в ip_tables.c для решения, принять ли данный пакет. Я изменил её, чтобы автоматически принимать любой пакет с установленным "зловредным битом" и пропускать всю дальнейшую обработку.

Я также попытался добавить другую таблицу (iptable_evil.c), которая принимала бы все "зловредные" пакеты и передавала остальные стандартным таблицам для обработки, но я так и не разобрался, как передавать пакеты следующей таблице, и решил, что бэкдора в ipt_do_table достаточно в качестве доказательства концепции.

Зачем вы это сделали?

Мне нужно было выполнить и описать довольно крупный проект в области компьютерной безопасности для одного из моих курсов, и эта идея показалась мне классной. Вероятно, это больше работы, чем он ожидал от этого, но ¯\_(ツ)_/¯.

Сборка

Сборка в дереве исходников

Таблица evil требует изменения заголовков ядра, поэтому для её установки необходимо запустить ядро, собранное из полного дерева исходников.

  • Скопируйте содержимое replace-existing в дерево исходников вашего ядра, перезаписывая существующие файлы.
  • Скопируйте iptable_evil.c в linux-X.Y.Z/net/ipv4/netfilter
  • (опционально) скопируйте ip_tables.c в linux-X.Y.Z/net/ipv4/netfilter
  • Скомпилируйте ядро в соответствии с процессом вашего дистрибутива (должен получиться пакет)
  • Установите файл пакета
  • Перезагрузитесь в новое ядро
  • iptables -t filter -L
  • iptables -t evil -L (вывод будет запутанным, но модуль загрузится)

Сборка вне дерева исходников

Это значительно проще и быстрее, но не поддерживает таблицу evil и помечает ядро как "испорченное" (tainted). Должна быть возможность скопировать полученные файлы ko на другой компьютер с точно такой же версией ядра, но я этого не проверял.

  • Выполните make
  • rmmod iptable_*
  • rmmod ip_tables
  • insmod ip_tables.ko
  • insmod iptable_filter.ko

Тестирование/Демонстрация

Чтобы протестировать это, вам нужно либо пересобрать всё ядро с этим патчем, либо создать собственные пакеты с помощью такого инструмента, как Scapy. Я выбрал первый вариант, потому что уже собирал ядро для таблицы evil.

На первом скриншоте я заблокировал весь трафик к этой ВМ в iptables, но я всё равно могу подключиться по SSH, потому что мои пакеты имеют установленный "зловредный бит", как показано на втором скриншоте. screenshot of a SSH connection that should have been blocked screenshot of Wireshark showing the reserved bit is set

При подключении к ВМ с бэкдором из ВМ, которая не устанавливает "зловредный бит", SSH-соединение в конечном итоге истечёт по таймауту. screenshot of a SSH connection timing out screenshot of Wireshark showing the reserved bit is not set

Захваты пакетов SSH-соединений с бэкдором и без него находятся в папке docs/ в этом репозитории для ознакомления.

Версия ядра

  • 5.8.0-48-generic (Ubuntu 20.04)

Дополнительная информация и ресурсы

  • RFC 3514, изобретающий "зловредный бит": https://tools.ietf.org/html/rfc3514
  • Введение в "зловредный бит" от Бена Кокса: https://blog.benjojo.co.uk/post/evil-bit-RFC3514-real-world-usage
  • iptables_uwu от Бена Кокса (в основном для указания названий вещей для исследования): https://github.com/benjojo/iptables-uwu
  • Несколько устаревшее, но очень подробное объяснение того, как работает iptables и как добавлять цели и модули: https://inai.de/documents/Netfilter_Modules.pdf
  • https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
  • Поиск Elixir от Bootlin значительно проще в использовании для поиска идентификаторов в ядре, чем grep: https://elixir.bootlin.com/linux/v5.8/source/net/ipv4/netfilter/ip_tables.c#L225
  • Документация Ubuntu объясняет, как собрать ядро: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
Скачать инструмент