Flipper Zero и Pwnagotchi дав­но ста­ли куль­товыми инс­тру­мен­тами пен­тесте­ров. Некото­рое вре­мя назад у них появил­ся млад­ший брат — Bjorn, который уме­ет не толь­ко ска­ниро­вать сети, но и искать уяз­вимос­ти, бру­тить сер­висы и работать авто­ном­но. В этой статье мы раз­берем, что это за девайс, как он устро­ен, какие фун­кции пред­лага­ет и почему спо­собен стать новым любим­цем хакер­ской тусов­ки.

Два года назад мы уже писали про Pwnagotchi — при­коль­ный хакер­ский девайс, который мож­но соб­рать, что называ­ется, на колен­ке из Raspberry Pi Zero и ве­ток дешево­го дис­плея на элек­трон­ных чер­нилах. Панаго­чи хорош бук­валь­но всем, кро­ме раз­ве что сво­их скуд­ных воз­можнос­тей, которые огра­ничи­вают­ся перех­ватом хен­дшей­ков в сетях Wi-Fi. И вот в арсе­нале злоб­ных хакеров пен­тесте­ров появил­ся еще один мощ­ный инс­тру­мент под наз­вани­ем Bjorn. Так зовут забав­ного викин­га, который живет в про­шив­ке устрой­ства, исполь­зует аппа­рат­ную плат­форму панаго­чи, но обла­дает при этом дру­гим арсе­налом фун­кций: на его бор­ту име­ется авто­ном­ный ска­нер сетей и уяз­вимос­тей (за счет исполь­зования Nmap), модули для под­бора учет­ных дан­ных к SSH, FTP, SMB, RDP, Telnet и базам дан­ных по сло­варям, а так­же инс­тру­мен­ты для акку­рат­ной эксфиль­тра­ции обна­ружен­ной информа­ции в слу­чае успешно­го под­бора.

Вся пре­лесть девай­са — в авто­мати­зации тес­тирова­ния: нам не нуж­но откры­вать ноут, вво­дить какие‑либо коман­ды, все про­исхо­дит само, нуж­но толь­ко под­клю­чить устрой­ство к ата­куемо­му Wi-Fi. Цен­ная информа­ция эксфиль­тру­ется толь­ко в том слу­чае, если сра­ботал перебор паролей.

Bjorn
Bjorn

Кое‑кто называ­ет Bjorn спе­цифи­чес­кой про­шив­кой для панаго­чи, но это не в пол­ной мере соот­ветс­тву­ет дей­стви­тель­нос­ти. Кажет­ся, что в базовой кон­фигура­ции у Bjorn и Pwnagotchi дей­стви­тель­но мно­го обще­го, одна­ко фун­кци­ональ­но эти два про­екта раз­ные.

Нап­ример, сам по себе Bjorn не уме­ет перех­ватывать хеши Wi-Fi-паролей, но он может авто­мати­чес­ки иссле­довать Wi-Fi-сеть, к которой мы уже зна­ем пароль, что дела­ет его хорошим допол­нени­ем к Pwnagotchi. Мож­но ска­зать, что Bjorn — это такая авто­ном­ная сис­тема для авто­мати­чес­кого иссле­дова­ния сетей, которая подой­дет тем, кто любит про­верять безопас­ность в новых мес­тах, не замора­чива­ясь каж­дый раз с запус­ком одних и тех же скрип­тов. Залил про­шив­ку, один раз про­писал парамет­ры дос­тупа к новой точ­ке Wi-Fi, а даль­ше прос­то смот­ри, что инте­рес­ного муль­тяш­ный викинг сумел для тебя най­ти.

Од­нако преж­де чем мы перей­дем к изу­чению осо­бен­ностей это­го про­екта, давай нем­ного осве­жим в памяти мат­часть.

 

Изучаем матчасть

Как и в слу­чае с Pwnagotchi, в осно­ве Bjorn лежит одноплат­ный компь­ютер семей­ства Raspberry Pi. Офи­циаль­но автор ори­енти­рует сбор­ку на «нулевые» модели: Raspberry Pi Zero W в 32-бит­ной кон­фигура­ции, но, как показы­вают отзы­вы из юзер­ской тусов­ки, Zero 2 W в 64-бит­ном вари­анте тоже работа­ет (прав­да, с ого­вор­ками по сов­мести­мос­ти дис­пле­ев и про­шивок).

Ви­зуаль­ная сос­тавля­ющая Bjorn — кро­шеч­ный чер­но‑белый e-paper-экран диаго­налью 2,13 дюй­ма. Про­ект про­верен на модулях Waveshare (в докумен­тации и обсужде­ниях упо­мина­ются вер­сии V2/V4), и имен­но под такие дис­плеи собира­ется фир­менная про­шив­ка и UI-логика. Для опи­сан­ного в статье панаго­чи в свое вре­мя был куп­лен дис­плей Waveshare V4, поэто­му он впол­не при­годен и для Bjorn, но, если ты хочешь поэк­спе­римен­тировать с дру­гими моделя­ми, пом­ни, что раз­ные ревизии панелей могут пот­ребовать сво­ей про­шив­ки или мел­ких пра­вок в кон­фигура­ции (config/shared_config.json для выбора пра­виль­ного epd_type) — поэто­му, преж­де чем покупать пер­вый попав­ший­ся экран, полез­но про­лис­тать вики и саб­реддит про­екта.

Дисплей маленький, но инфы на него влезает много
Дис­плей малень­кий, но инфы на него вле­зает мно­го

Пи­тание у викин­га может быть устро­ено по‑раз­ному: от ком­пак­тно­го пауэр­банка до акку­рат­ного модуль­ного акку­муля­тора, который кре­пит­ся пря­мо под пла­той Raspberry Pi и пита­ет девайс без тор­чащих в раз­ные сто­роны про­водов. Для пол­ноцен­ной работы тре­бует­ся кар­та памяти MicroSD не менее 32 Гбайт, желатель­но Class 10, — туда записы­вает­ся образ с сис­темой и все­ми ком­понен­тами, которые и прев­раща­ют Bjorn в уни­каль­ный инс­тру­мент пен­тесте­ра.

Одноплатник, на котором собран Bjorn
Од­ноплат­ник, на котором соб­ран Bjorn

Сбор­ка девай­са пол­ностью ана­логич­на сбор­ке панаго­чи — этот про­цесс мы уже под­робно опи­сыва­ли в пре­дыду­щей статье, поэто­му лиш­ний раз пов­торять­ся не будем. Пла­та мон­тиру­ется на стой­ки, дис­плей под­клю­чает­ся через соот­ветс­тву­ющий разъ­ем, питание зак­репля­ется сни­зу. Кто‑то печата­ет кор­пус на 3D-прин­тере, но и в «голом» виде устрой­ство выг­лядит впол­не акку­рат­но. Одна­ко сам по себе одноплат­ник с экра­ном — это все­го лишь одноплат­ник с экра­ном, в прод­винутый инс­тру­мент хакера его прев­раща­ет софт.

 

Устанавливаем софт

Что­бы твой одноплат­ный викинг прос­нулся и ринул­ся в бой, нуж­но нем­ного тер­пения, дос­туп к интерне­ту и пара чашек кофе (или ячменно­го пива, если сле­довать сред­невеко­во‑скан­динав­ско­му духу про­екта). Для начала нам понадо­бит­ся све­жая Raspberry Pi OS (Bookworm) — имен­но «лай­товая» вер­сия без гра­фичес­кого интерфей­са. Автор про­екта нас­тоятель­но рекомен­дует 32-бит­ную сбор­ку для Raspberry Pi Zero W, хотя поль­зовате­ли сооб­щают, что на Zero 2 W (64-bit) все работа­ет, пусть и с нюан­сами. Глав­ное — ядро 6.6, Debian 12 и пра­виль­ное имя хос­та. При уста­нов­ке сис­темы с помощью Raspberry Pi Imager желатель­но ука­зать в нас­трой­ках Set hostname имя bjorn, но если ты забыл это сде­лать, то его мож­но поменять пос­ле про­шив­ки кар­ты запус­ком сле­дующей коман­ды на самой Raspberry Pi:

sudo hostnamectl set-hostname bjorn

Так­же в ходе про­шив­ки име­ет смысл ука­зать в Raspberry Pi Imager SSID и пароль от сво­его Wi-Fi, ина­че как малин­ка узна­ет, куда под­клю­чать­ся, что­бы потом мож­но было зай­ти в ее нас­трой­ки?

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

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

wget https://raw.githubusercontent.com/infinition/Bjorn/refs/heads/main/install_bjorn.sh
sudo chmod +x install_bjorn.sh && sudo ./install_bjorn.sh

Пос­ле запус­ка уста­нов­щик пред­ложит выб­рать режим: пункт 1 — пол­ностью авто­мати­чес­кий. Мож­но, конеч­но, выб­рать руч­ной и все соб­рать по час­тям, но, если ты не мазохист и не пишешь дис­серта­цию по Ansible, авто­мати­чес­кий вари­ант — твой луч­ший друг.

Ус­танов­ка занима­ет ощу­тимое вре­мя: Raspberry Pi Zero не чем­пион по ско­рос­ти, а Bjorn тянет за собой вну­шитель­ный хвост из ути­лит, биб­лиотек и Python-зависи­мос­тей. На экра­не в это вре­мя будет мель­кать поток команд, из которо­го труд­но понять, что имен­но про­исхо­дит, но глав­ное — не тро­гать устрой­ство и не выдер­гивать питание. Пос­ле завер­шения сис­тема поп­росит перезаг­рузить­ся.

Ког­да Bjorn прос­нется пос­ле пер­вого ребута, он уже будет пол­ностью готов к работе. Если устрой­ство под­клю­чено по Wi-Fi, его IP мож­но най­ти стан­дар­тным ска­нером сети (Nmap, Angry IP Scanner, Fing — на твой вкус) или пос­мотреть в спис­ке кли­ентов на роуте­ре. А если ска­ниро­вать сеть лень — автор пре­дус­мотри­тель­но выложил отдель­ный про­ект под наз­вани­ем Bjorn Detector & SSH Launcher, который сам находит нуж­ный IP и откры­вает сес­сию.

А мож­но прос­то написать в кон­соли

ssh bjorn@bjorn

и ввес­ти пароль. Еще мож­но выпол­нить коман­ду ping bjorn и узнать нуж­ный IP, но это сра­бота­ет, если ты не про­дол­бал пункт с уста­нов­кой hostname в Raspberry Pi Imager.

Даль­ше все прос­то: под­клю­чаешь­ся к устрой­ству по SSH, вво­дишь пароль, и перед тобой — рабочая кон­соль Bjorn. Ска­нер сети, к которой под­клю­чен Bjorn по Wi-Fi, запус­кает­ся авто­мати­чес­ки при вклю­чении устрой­ства. Мож­но пос­мотреть, как на e-Paper-экра­не начина­ет менять­ся кар­тинка: количес­тво целей (targetnbr), пор­тов (portnbr), уяз­вимос­тей (vulnnbr), появ­ляют­ся знач­ки под­клю­чения и текущий ста­тус Bjorn (нап­ример, NetworkScanner, SSHBruteforce, IDLE) и, конеч­но, сам муль­тяш­ный викинг.

Bjorn в деле
Bjorn в деле

Веб‑интерфейс тоже дос­тупен — дос­таточ­но ввес­ти IP-адрес устрой­ства в бра­узе­ре и порт 8000. А мож­но исполь­зовать и такой адрес:

http://bjorn:8000/
Веб-интерфейс
Веб‑интерфейс

Ес­ли на каком‑то эта­пе что‑то пош­ло не так (а Raspberry Pi любит сюр­при­зы), докумен­тация пред­лага­ет под­робный раз­дел Troubleshooting. Там опи­саны типич­ные ошиб­ки — от несов­падения архи­тек­туры ядра до неп­равиль­но под­клю­чен­ного дис­плея.

 

Интерфейсы

Эк­ран с диаго­налью 2,13 дюй­ма физичес­ки не смо­жет вмес­тить зна­читель­ный объ­ем информа­ции, поэто­му здесь отоб­ража­ется толь­ко самое необ­ходимое, а для осталь­ного есть веб‑интерфейс. Сре­ди необ­ходимо­го — забав­ная рожица самого викин­га Bjorn, которая меня­ется в зависи­мос­ти от того, чем устрой­ство занято в текущий момент, и корот­кие тек­сто­вые ста­тусы.

Свер­ху выводит­ся крат­кая телемет­рия:

  • ко­личес­тво видимых хос­тов в сети;
  • об­щее количес­тво откры­тых пор­тов на этих хос­тах;
  • ко­личес­тво най­ден­ных уяз­вимос­тей (CVE);
  • ко­личес­тво учет­ных дан­ных, которые уда­лось подоб­рать;
  • ко­личес­тво «зом­бирован­ных» хос­тов (эта фун­кция еще находит­ся в раз­работ­ке на момент написа­ния статьи);
  • чис­ло укра­ден­ных фай­лов.
Вот что мы видим на экране
Вот что мы видим на экра­не

Кро­ме того, про­ект исполь­зует гей­мифика­цию — на экран выводят­ся игро­вые дос­тижения и прог­ресс, что дела­ет работу с устрой­ством более увле­катель­ной. Ины­ми сло­вами, дис­плей показы­вает «пульс» устрой­ства, дает быс­трый ответ на три воп­роса: что сей­час дела­ет викинг, что он недав­но нашел и в каком он нас­тро­ении. Все, что показы­вает дис­плей, одновре­мен­но дуб­лиру­ется в веб‑интерфей­се и логиру­ется на SD-кар­ту.

Веб‑интерфейс управля­ется встро­енным веб‑сер­вером (в про­екте он реали­зован в виде скрип­та webapp.py), который отда­ет HTML-стра­ницы, изоб­ражение текуще­го сос­тояния экра­на и API-эндпо­инты для управле­ния дан­ными. В прак­тичес­ком пла­не это зна­чит, что ты можешь открыть в бра­узе­ре стра­ницу по IP-адре­су девай­са и получить тот же набор информа­ции, что и на дис­плее, но с удоб­ной навига­цией, логами и дос­тупом к фай­лам. Сер­вер в репози­тории опи­сан как мно­гопо­точ­ный, обра­баты­вающий GET/POST-зап­росы и логиру­ющий события для отладки.

Веб-интерфейс довольно-таки наглядный и удобный
Веб‑интерфейс доволь­но‑таки наг­лядный и удоб­ный

SSH-дос­туп оста­ется базовым спо­собом вза­имо­дей­ствия с Bjorn для тех, кто пред­почита­ет коман­дную стро­ку: по SSH мож­но выпол­нять коман­ды, пра­вить кон­фиги и прос­матри­вать содер­жимое дирек­тории data/output, где Bjorn хра­нит все арте­фак­ты из сво­их рей­дов — дам­пы, отче­ты. Что­бы не лазить в сеть вруч­ную, автор про­екта раз­работал вспо­мога­тель­ный инс­тру­мент — Bjorn Detector, который ска­ниру­ет локал­ку, находит IP девай­са и отоб­ража­ет кноп­ку для быс­тро­го SSH-дос­тупа. Это удоб­но для «полевой» работы, нап­ример ког­да тре­бует­ся быс­тро получить дос­туп к Bjorn с ноут­бука или план­шета.

На­конец, интерфейс про­екти­рова­ли с мыслью о рас­ширя­емос­ти. Веб‑мор­да и скрип­ты лег­ко под­дают­ся модифи­кации: мож­но добавить пла­гины, допол­нитель­ные стра­ницы или визу­али­зации, а сооб­щес­тво активно делит­ся готовы­ми фикcами и тем­плей­тами.

 

Что умеет викинг?

Ос­новное отли­чие Bjorn от Pwnagotchi сос­тоит в том, что пос­ледний фокуси­рует­ся имен­но на зах­вате рукопо­жатий (handshakes) и поз­воля­ет собирать хен­дшей­ки для пос­леду­юще­го взло­ма паролей Wi-Fi. Bjorn же работа­ет ина­че: он под­клю­чает­ся к сети с уже извес­тным SSID и паролем, а затем занима­ется ска­ниро­вани­ем активных хос­тов, пор­тов и сер­висов в ней, а так­же пыта­ется про­водить брут­форс этих самых сер­висов.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии