Flipper Zero — пацанский мультитул-тамагочи для пентестера

Flipper Zero — Multi-tool Device for Hackers

Flipper Zero — проект карманного мультитула на основе Raspberry Pi Zero для пентеста IoT и беспроводных систем контроля доступа. А еще это тамагочи, в котором живет кибер-дельфин.

Он будет уметь:

  • Работать в диапазоне 433 MHz — для исследования радиопультов, датчиков, электронных замков и реле.
  • NFC — читать/записывать и эмулировать карты ISO-14443.
  • 125 kHz RFID — читать/записывать и эмулировать низкочастотные карты.
  • iButton ключи — читать/записывать и эмулировать контактные ключи, работающие по протоколу 1-Wire.
  • Wi-Fi — для проверки защищенности беспроводных сетей. Адаптер поддерживает инъекции пакетов и мониторный режим.
  • Bluetooth — поддерживается пакет bluez для Linux
  • Режим Bad USB — может подключаться как USB-slave и эмулировать клавиатуру, ethernet-адаптер и другие устройства, для инъекции кода или сетевого пентеста.
  • Тамагочи!  — микроконтроллер с низким энергопотреблением работает, когда основная система выключена.

Я с волнением представляю свой самый амбициозный проект, идею которого я вынашивал много лет. Это попытка объединить все часто необходимые инструменты для физического пентеста в одно устройство, при этом добавив ему личность, чтобы он был милым до усрачки.
В данный момент проект находится на стадии R&D и утверждения функционала, и я приглашаю всех поучаствовать в обсуждении функций или даже принять участие в разработке. Под катом подробное описание проекта.

Зачем это нужно?


Я люблю исследовать все вокруг и постоянно таскаю с собой разные инструменты для этого. У меня в рюкзаке: WiFi-адаптер, NFC-ридер, SDR, Proxmark3, HydraNFC, Raspberry Pi Zero (из-за этого бывают проблемы в аэропорту). Всеми этими приборами не так просто воспользоваться на бегу, когда у тебя в одной руке чашка с кофе или ты едешь на велосипеде. Нужно сесть, разложиться, достать компуктер — это не всегда удобно. Я мечтал об устройстве, которое бы реализовывало типичные сценарии атак, было всегда в боевой готовности и при этом не представляло из себя пачку разваливающихся плат, смотанных изолентой.

lymkzlhnk_8lep8rqrioq8jetos.jpeg

Raspberry Pi Zero W с батарейным шилдом UPS-Lite v1.0 в качестве автономного флудера для рассылки картинок на устройства Apple по AirDrop

Недавно, после того как была опубликована открытая реализация протокола AirDrop owlink.org и исследование от ребят из HexWay об уязвимостях iOS Apple-Bleee, я стал развлекаться новым для себя способом: знакомиться с людьми в метро, рассылая им картинки через AirDrop и собирая их номера телефонов. Потом я захотел автоматизировать этот процесс и сделал автономную дик-пик машину из Raspberry Pi Zero W и батарейки. Эта тема заслуживает отдельной статьи, которую я никак не могу дописать. Все бы хорошо, но этот девайс было крайне неудобно носить с собой, его нельзя было положить в карман, потому что острые капли припоя рвали ткань штанов. Я попробовал напечатать корпус на 3d-принтере, но результат мне не понравился.

Отдельное спасибо Ане koteeq Просветовой, которая по моей просьбе написала Telegram-бота @AirTrollBot, который генерирует картинки с текстом, телеграм-ником и правильным соотношением сторон так, что они полностью отображаются на превью при посылке через Airdrop. Можно быстро сгенерировать картинку, подходящую по ситуации, выглядит это примерно так.


ynobsadfibtfrajlxnhbuiwtp30.jpeg


Pwnagotchi в сборе с e-ink экраном и батарейным шилдом
Потом я увидел потрясающий проект pwnagotchi. Это как тамагочи, только в качестве еды он ест WPA-хендшейки и PMKID от Wi-Fi сетей, которые потом можно брутить на GPU-фермах. Мне так понравился этот проект, что я несколько дней ходил со своим pwnagotchi по улицам и смотрел как он радуется новой добыче. Но у него были все те же проблемы: нельзя нормально положить в карман, нет органов управления, поэтому любой пользовательский ввод возможен только с телефона или компьютера.
И тогда я наконец понял, каким вижу идеальный мультитул, которого мне не хватало. Я написал об этом в твиттер и идея понравилась моим друзьям промдизайнерам, которые делают серьезные электронные штуки. Они предложили сделать полноценный девайс, вместо наколенной DIY-поделки. С настоящим фабричным производством и качественно подогнанными деталями. Мы приступили к поиску концепции дизайна.

87vlmjdqynqm6vrrhlykn6hmezu.jpegeyhjy9j1zo_y7ah9465ecc_6fkg.jpeghlw3mioanytxwil7np29zjrfko8.jpeg5sys5zwccpoxd0pkyyul1v268oq.jpeg
Кликабельно. Первые зарисовки дизайна Flipper Zero
Корпусу и дизайну уделено много времени, потому что я устал, что все хакерские девайсы выглядят как куча PCB, смотанных изолентой и ими невозможно нормально пользоваться. Задача была придумать максимально удобный и компактный корпус и устройство, которым будет легко пользоваться автономно без компьютера или телефона, и вот, что из этого получилось. Дальше описан текущий не финальный концепт устройства.

Что такое Flipper Zero


vz7y59nedhr-ac4meihg4wpq7to.png
По сути Flipper Zero это несколько шилдов и батарейка вокруг Raspberry Pi Zero, упакованные в корпус с экранчиком и кнопками. В качестве ОС используется Kali Linux, так как он уже содержит все необходимые патчи и из коробки поддерживает rpi0. Я смотрел на много разных одноплатных компьютеров: NanoPi Duo2, Banana Pi M2 Zero, Orange Pi Zero, Omega2, но все они проигрывают rpi0 и вот почему:

  • Встроенный Wi-Fi адаптер, поддерживающий мониторный режим и инъекции пакетов (nexmon патчи)
  • Встроенный Bluetooth 4.0
  • Достаточно хорошая 2.4 Ghz антенна
  • Официально поддерживается Kali Linux и имеет множество готовых сборок вроде P4wnP1 A.L. O.A.
  • Легкий доступ к SD-карте, можно быстро передать большой объем данных


Наверняка многие скажут, что Raspberry Pi не лучший выбор для такого устройства и найдут множество аргументов, например высокое энергопотребление, отсутствие спящего режима, не открытые железо и т.д. Но если сравнивать все минусы и плюсы, ничего лучше rpi0 я не нашел. Если у вас есть что сказать по этому поводу, добро пожаловать на форум разработчиков forum.flipperzero.one.

j-iyhxo0isz7xapzoa_hmhslwvy.png

Flipper Zero полностью автономный и может управляться с помощью 5-и позиционного джойстика без дополнительных устройств, таких как компьютер или телефон. Из меню можно вызвать типовые сценарии атак. Разумеется не все можно сделать с помощью джойстика, поэтому для большего контроля можно подключиться по SSH через USB или по Wi-Fi/Bluetooth.

Я решил использовал олдскульный монохромный LCD-дисплей с разрешением 126×64 px как на старых телефонах Siemens. Во первых это просто круто, монохромный экранчик с оранжевой подсветкой вызывает у меня неописуемый восторг, эдакий ретро-милитари-киберпанк. Его прекрасно видно на ярком солнце и у него очень низкое энергопотребление, около 400uA с выключенной подсветкой. Поэтому его можно держать в Always-On режиме и всегда выводить изображение. Подсветка будет включаться только при нажатии на клавиши.

l7gy53a6qjuddez52_1iyp7tgfg.jpeg


Примеры экранчиков на телефонах Siemens

Такие экраны до сих пор выпускают для всяких промышленных устройств и кассовых аппаратов. На текущий момент мы выбрали этот экран.

lcyy_8yg8s0ybmy8sctgxfcx-xm.png
Порты Flipper Zero
На торцах Flipper Zero имеет стандартные порты Raspberry Pi, кнопку включения/подсветки, отверстие для ремешка и дополнительный сервисный порт, через который можно получить доступ к UART-консоли, зарядить батарею, залить новую прошивку.

433 MHz трансмиттер


tw6sd9i7bsnaaw-yxyhfcbat9oy.jpeg

fnarqjeohf-anh9vkxg4cybx5hm.jpeg Flipper имеет встроенную антенну на 433 MHz и чип CC1111, для работы в диапазоне <1GHz, такой же, как в популярном устройстве Yard Stick One. Он может перехватывать и анализировать сигналы радиопультов, брелков, всяких умных розеток и замков. Поддерживает работу с библиотекой rfcat и умеет декодировать, сохранять и воспроизводить популярные коды пультов, подобно ПДУ анализатору. Для случаев, когда Raspberry Pi не успевает обработать сигнал, работу CC1111 может контролировать встроенный микроконтроллер. В режиме тамагочи Flipper может общаться с себеподобными и отображать их имена, как это делает pwnagotchi.

Bad USB


gpi46aidfa1tyjsuhdvh29hstww.jpeg
Flipper может эмулировать USB-slave устройства и прикидываться клавиатурой для залива пейлоада, подобно USB Rubber Ducky. А также эмулировать ethernet-адаптер для подмены DNS, последовательный порт и т.д. Для Raspberry Pi есть готовый фреймворк, реализующий различные виды таких атак github.com/mame82/P4wnP1_aloa
Нужный сценарий атаки можно выбрать из меню джойстиком. При этом на экране может выводится отладочная информация о состоянии атаки или же что-то безобидное для маскировки.

WiFi


zmfakezmwjqwl-zvs1lbtbdl8fs.jpeg
Встроенный в Raspberry Pi адаптер Wi-Fi изначально не поддерживает мониторный режим инъекции пакетов, но есть сторонние патчи, добавляющие эту функцию. Для некоторых видов атак нужно два независимых Wi-Fi адаптера. Сложность заключается в том, что почти все Wi-Fi чипы подключаются по USB, а мы не можем занять единственный USB на rpi0, иначе сломается режим USB Slave. Поэтому необходимо использовать интерфейс SPI или SDIO для подключения Wi-Fi адаптера. Мне неизвестно ни одного такого чипа, который поддерживает мониторный режим и инъекцию пакетов из коробки, при этом подключается НЕ по USB. Если вы знаете такой, подскажите, пожалуйста, на форуме в теме Wi-Fi chip with SPI/SDIO interface that supports monitoring and packet injection

NFC


Flipper Zero — модуль для чтения NFC-карт

NFC-модуль умеет читать/писать все ISO-14443 карты, в том числе Mifare, банковские бесконтактные карты PayPass/PayWave, ApplePay/GooglePay и прочее. Поддерживается библиотекой LibNFC. В нижней части Флиппера есть антенна на 13,56 MHz, и для работы с картой его достаточно положить на нее сверху. На данный момент остается открытым вопрос эмуляции карт. Хотелось бы полноценный эмулятор вроде Chameleon Mini, но при этом хочется иметь возможность работать с LibNFC. Я не знаю вариантов чипа кроме NXP PN532, но он не может полноценно эмулировать карты. Если вы знаете вариант лучше, напишите об этом в теме Looking for better NFC chip than PN532

125kHz RFID


Flipper Zero 125 kHz RFID Low frequency cards reader / writer / emulator

Старые низкочастотные карты 125 kHz до сих пор широко используются в домофонах, офисных пропусках и т.д. На боковой грани флиппера расположена 125 kHz антенна, он может читать карты EM-4100 и HID Prox, сохранять их в память и эмулировать ранее сохраненные карты. Так же можно передать ID карты для эмуляции по интернету или вписать его вручную. Таким образом владельцы флиппера могут передавать друг другу считанные карты удаленно. Кайф.

iButton


s7cv8etqyj6vii1epdws6xjwpv8.jpeg
iButton — старый тип контактных ключей, которые до сих пор популярны в СНГ. Они работают по протоколу 1-Wire и не имеют никаких средств аутентификации, поэтому могут быть легко прочитаны. Флипер умеет читать эти ключи, сохранять ID в память, записывать ID на болванки и эмулировать ключ самостоятельно так, что его можно прикладывать к считывателю как ключ.

Режим считывателя (1-wire master)
-nqbu9yuz4llmklehpym14wyete.jpeg
В этом режиме устройство работает как дверной считыватель. Прислонив ключ к контактам, флиппер считает его ID и сохранит в память. В этом же режиме можно записать сохраненный ID на болванку.

Режим эмуляции ключа (1-wire slave)
ysxlvsuqxufylemwrvnw0_9fwdy.jpeg
Сохраненные ключи можно эмулировать в режиме 1-wire slave. Флиппер выступает в роли ключа и его можно прикладывать к считывателю. Главная сложность состояла в том, чтобы придумать конструкцию контактной площадки, которая бы одновременно могла использоваться как считыватель и как ключ. Мы нашли такую форму, но я уверен что ее можно сделать еще лучше, и если вы знаете как, предложите свой вариант на форуме в теме iButton contact pad design

Bluetooth


cm2uql7ydnib6ly8xpfv5in1oim.jpeg
Встроенный в Raspberry Pi Bluetooth-адаптер. Конечно он не может заменить устройства вроде ubertooth one, но зато полностью поддерживается библиотекой bluez, может использоваться для управление флиппером со смартфона или для различных атак на bluetooth вроде apple-bleee, позволяющей собирать sha256 от номеров мобильных телефонов, привязанных к Apple ID, а так же управлять всякими IoT-девайсами.

Мироконтроллер с низким энергопотреблением


z7hg3um9mfrrfrmavkplf7jzkri.jpeg Так как флиппер слишком крут, чтобы его выключать, мы решили засунуть в него отдельный микроконтроллер с низким энергопотреблением который будет работать, когда Raspberry Pi выключен. Он будет управлять тамагочи, контролировать процесс загрузки Raspberry Pi до момента, пока тот не готов управлять экраном и управлять питанием. Так же он будет управлять чипом CC1111 для связи с другими флипперами.

Режим тамагочи


Your browser does not support HTML5 video.


Флиппер это кибер-дельфин хакер, которому подвластны все цифровые стихии. Когда Raspberry Pi выключен, он переходит в режим тамагочи, с которым можно играть и находить друзей на частоте 433 MHz. В этом режиме, вероятно, будут частично доступны функции NFC.

hqbo55znhdayj_3xz4ibejowqim.jpeg

Прототипом персонажа стал дельфин из фильма Джонни Мнемоник который помог похекать мозги Киано Ривза и своим излучением размозжил плохих парней. У дельфинов есть встроенный частотный генератор, которым они исследуют все вокруг, а так же врожденная потребность в развлечении и природное любопытство. Нам нужен человек, который сможет придумать личность флиппера, весь игровой дизайн в целом, от эмоций до мини-игр. Все свои соображения по этому поводу можно писать форум в соответствующий раздел.

Обо мне


Павел Жовнер

Меня зовут Павел Жовнер, я живу в Москве. В данный момент я руковожу московским Хакспейсом Нейрон. В самого детства я люблю глубоко исследовать все вокруг: природу, технологии, людей. Моя основная специализация: сети, железо и безопасность.
Я стараюсь никогда не использовать слово «хакер», потому что благодаря СМИ и медиа, оно полностью обесценено. Мне нравится называть себя «задрот», потом что оно честнее и без пафоса раскрывает суть. В жизни я ценю увлеченных людей, которые глубоко эмоционально вовлекаются в то, что им интересно, которых тоже смело можно называть задротами.

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

Присоединиться к проекту


Я приглашаю всех, кому понравился этот проект поучаствовать в разработке любым доступным способом. На данном этапе нам нужно утвердить финальный список функций, чтобы приступить к реализации первой версии устройства. Есть много технических вопросов, которые в данный момент не решены.

Для разработчиков


tpco-aaznuclfhnfc-nmq0oa76w.png Все наши текущие задачи по R&D мы будем обсуждать на форуме forum.flipperzero.one. Если вы разработчик железа или софта, или у вас есть любые вопросы, советы, предложения, критика — смело пишите их на форум. Это главное место где будет происходить обсуждение всех этапов разработки, краудфандинга, производства. Общение на форуме ведется только на английском, не стесняйтесь писать коряво, главное чтобы был понятен смысл.

Проголосовать за функции


gnrakpugcexajo_ayyr0rhshzmi.png
Нам очень важно знать, какие функции должны быть во флиппере. От этого будут зависеть приоритеты в разработке. Возможно, я ошибочно считаю, что какие-то функции важны, или наборот упускаю что-то. Например, у меня есть сомнения насчет iButton, ведь это устаревшая технология. Поэтому пожалуйста пройдите короткий опрос: docs.google.com/7VWhgJRBmtS9BQtR9

Заслать денег


wmbx6xfrvdtvzbmffgoftasej40.png Когда будет закончен прототип и проект будет готов для выхода на краудфандинговую площадку вроде KickStarter, можно будет оплатить предзаказ. В данный момент вы можете поддержать меня лично небольшими пожертвованиями на еду через Patreon. Регулярные пожертвования в виде 1$ намного лучше, чем большая сумма за раз, потому что позволяют прогнозировать наперед. Ссылка для донатов: flipperzero.one/donate

Disclaimer


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

ueiimdzuyrmmsl8smmtdvprox94.png Все заметки по проекту я публикую в свой Telegram-канал @zhovner_hub.

© Habrahabr.ru