Bjorn: создаем тамагочи для пентестеров

Вступление

Приветствую!

Бывают моменты, когда, казалось бы, уже ничего не может удивить, но тут в поле зрения попадает Bjorn. 😁

Информацию об этом любопытном проекте я обнаружил случайно в Telegram. Исходный репозиторий: https://github.com/infinition/Bjorn.

Bjorn — это своеобразный «тамагочи» для специалистов по кибербезопасности. Устройство на базе Raspberry Pi с 2,13-дюймовым e-Paper дисплеем способно автономно сканировать сети, обнаруживать узлы, проводить оценку защищенности и даже эксплуатировать уязвимости (разумеется, строго в рамках легального тестирования).

Благодаря гибкой модульной архитектуре Bjorn легко адаптируется под разнообразные задачи мониторинга и тестирования безопасности.

Ключевой функционал, заявленный авторами:

  • Сетевое сканирование: обнаружение активных хостов и открытых портов;

  • Анализ защищенности: выявление уязвимостей с применением Nmap и иных специализированных утилит;

  • Пентест инфраструктуры: перебор учетных данных для различных протоколов (FTP, SSH, SMB, RDP, Telnet, SQL);

  • Сбор данных: извлечение файлов из уязвимых сервисов;

  • Интерфейс: визуализация данных в реальном времени через e-Paper HAT и веб-панель управления.

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

И вот, спустя почти год, я наконец делюсь результатом. Такая задержка связана с рядом технических препятствий, которые потребовали детального разбора. Важно отметить, что за это время в журнале «Хакер» вышла отличная статья. Она не является конкурентом моему материалу, так как исходит из того, что устройство у вас уже функционирует, в то время как установка софта из оригинального репозитория чревата использованием устаревшего кода с ворохом уязвимостей. Давайте во всем разбираться по порядку.

Подготовка комплектующих

Поскольку документация в оригинальном репозитории довольно лаконична, мне пришлось опираться на базовые знания (по образованию я радиоинженер). Итак, что было приобретено:

Основной вычислительный модуль — Raspberry Pi Zero 2 W. Как утверждается в проекте, она прекрасно работает под 64-битной системой.

Экран. Здесь возникла путаница с версиями (V1-V4), упоминаемыми в документации. Я заказал самый доступный вариант, который в итоге оказался маркирован как V4.

Для соединения платы и экрана потребовался 40-контактный GPIO-разъем. Рекомендую сразу покупать плату с уже впаянным разъемом, чтобы не тратить время на поход в мастерскую, как это сделал я.

Так как это мой первый опыт работы с Raspberry Pi, пришлось докупить ряд мелочей:

Mini HDMI-адаптер для вывода картинки на монитор при первичной настройке.

MicroSD карта на 64 ГБ. Этого более чем достаточно, Raspberry Pi Zero 2 W отлично ладит с таким объемом.

OTG-переходник micro-USB на USB для подключения периферии. Выбирайте вариант с кабелем — монолитные штекеры крайне неудобны.

И, конечно, качественный блок питания — экономить на нем чревато проблемами с железом.

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

Установка ОС

Для записи образа системы потребуется ПК с кардридером. Скачиваем официальную утилиту Raspberry Pi Imager.

Выбираем нашу модель (Zero 2 W) и подходящую 64-битную версию ОС (без графической оболочки, она здесь ни к чему).

В настройках («Изменить параметры») обязательно укажите имя хоста (bjorn), логин, пароль и учетные данные Wi-Fi, чтобы система сразу подключилась к сети после запуска.

Запуск и развертывание Bjorn

Собираем стенд: подключаем питание, клавиатуру и монитор. Экран пока не обязателен. После загрузки системы запускаем скрипт установки из репозитория:

Здесь я застрял на 8 месяцев.

Основные трудности

Проблема №1: Неработающий дисплей. После «успешной» установки, согласно скрипту, экран оставался безжизненным. Проверка контактов и замена экрана результата не дали. Решение пришло после анализа файловой системы карты памяти: выяснилось, что из-за ограничений в региональных репозиториях пакеты вставали «криво». Переустановка с «зарубежного» IP решила вопрос моментально.

Проблема №2: Устаревший код. Исходный проект полон уязвимостей и не обновляется годами. Наблюдается полная неразбериха с ветками и форками. Я принял решение развивать собственный форк с исправлением архитектурных ошибок.

Мой форк: Bjorn — Chumikov Sec

Проведя анализ кодовой базы, я подготовил релиз 1.5.0, включающий следующие улучшения:

  • Безопасность: внедрена авторизация для веб-интерфейса, исправлены уязвимости типов shell injection, path traversal и XSS.

  • Стабильность: устранены утечки ресурсов, из-за которых происходили краши системы (Too many open files).

  • Оптимизация EPDManager: реализовано автовосстановление экрана при зависании.

  • Функциональность: добавлен headless-режим (эмуляция), блокировка двойного запуска и расширенное сканирование нескольких подсетей.

  • Мониторинг: внедрено отслеживание нагрузки и «здоровья» критических процессов.

Установка

Для развертывания моей версии используйте команды:

# Скачивание скрипта
wget -O install_bjorn.sh https://chumikovsec.ru/install

# Запуск
sudo chmod +x install_bjorn.sh && sudo ./install_bjorn.sh

Планы на будущее

В ближайших планах:

1) Разработка полноценного 3D-печатного корпуса;

2) Интеграция компактного аккумулятора для автономности;

3) Дальнейшая оптимизация кода в моем форке;

4) Активное полевое тестирование.

Все обновления буду публиковать в канале Chumikov Sec.

Итог

Спустя год проект успешно реализован и доведен до ума. Надеюсь, мой опыт поможет вам собрать свой Bjorn без тех сложностей, с которыми столкнулся я. Все вопросы можно задавать в моем Telegram или в issues на GitHub.

Буду благодарен за обратную связь, лайк и звезду на GitHub!

 

Источник

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