Flipper-демиург: ставим софт на macOS через JS для пентестеров

Flipper-демиург: ставим софт на macOS через JS для пентестеров

Когда речь заходит о Flipper Zero, многие вспоминают RFID, NFC, Sub-GHz. Но одна из самых интересных возможностей устройства — это JavaScript-движок и модуль BadUSB, который позволяет превратить Flipper в программируемую USB-клавиатуру.

В этой статье разберём небольшой, но показательный скрипт, который автоматически устанавливает набор инструментов для пентеста(или другого ПО) на macOS через Homebrew. И посмотрим, почему JavaScript на Flipper значительно интереснее классического DuckyScript.

Почему одного DuckyScript уже мало?

Традиционные BadUSB-сценарии обычно пишутся на DuckyScript:

Подход рабочий, но чаще упирается в ограничения:

нет циклов;

нет циклов;

нет условий;

нет условий;

нет модулей;

нет модулей;

сложно обрабатывать состояния;

сложно обрабатывать состояния;

код плохо масштабируется.

код плохо масштабируется.

Во Flipper доступен JavaScript API, который позволяет писать полноценную логику:

Например:

По сути мы получаем миниатюрный сценарный движок прямо внутри устройства.

Разбираем скрипт

Начинается всё с подключения модулей, где первый отвечает за уведомления Flipper, а второй — за эмуляцию HID-устройства:

Следом задаётся список программ:

Список можно расширять любым количеством пакетов.

Следующий блок задаёт USB-идентификаторы:

Здесь используются VID и PID производителя Apple(гуглятся или смотрятся в настройках).

После короткой индикации:

скрипт проверяет наличие соединения:

Это уже преимущество JavaScript перед DuckyScript. Можно выполнять действия только при наличии активного USB-соединения.

Автоматический запуск терминала

Далее происходит открытие Spotlight(Command + Space):

После небольшой паузы вводится:

Скрипт ищет iTerm и запускает его.

При желании можно заменить на:

Установка инструментов

Самая интересная часть, так как больше всего показывается превосходство над DuckyScript:

На каждую программу, cоздаётся команда установки через brew:

То есть список пакетов превращается в набор последовательных установок.

Например:

Таким образом один и тот же сценарий можно использовать для разных ролей:

пентестер;

пентестер;

DevOps-инженер;

DevOps-инженер;

разработчик;

разработчик;

аналитик безопасности.

аналитик безопасности.

Обратная связь через Flipper

После завершения цикла:

Flipper отображает успешное выполнение.

Дополнительно в терминал выводится сообщение:

Где это действительно полезно

Чаще демонстрации BadUSB сводятся к “взлом умный холодильник за 5 секунд”. Но, как по мне, гораздо интереснее сценарии автоматизации(не только просто установок приложений).

При выдаче нового ноутбука специалисту:

Что можно улучшить ?

У исходного скрипта есть несколько ограничений.

Если Homebrew не установлен:

весь сценарий остановится.

Логичнее сначала выполнить проверку:

и при необходимости установить пакетный менеджер.

Сейчас используется:

Но установка приложение, особенно metasploit, может занимать минуты.

Фиксированные паузы работают не всегда надёжно.

Сценарий предполагает, что:

пользователь авторизован;

пользователь авторизован;

iTerm установлен;

iTerm установлен;

Homebrew присутствует;

Homebrew присутствует;

сеть работает.

сеть работает.

Почему JavaScript меняет правила игры

Идея этого примера не в установке Nmap или Hydra.

Интереснее другое: Flipper превращается из “умной флешки с макросами” в полноценную платформу автоматизации.

Появляются:

циклы;

циклы;

условия;

условия;

работа с модулями;

работа с модулями;

управление логикой выполнения;

управление логикой выполнения;

интерактивная обратная связь через устройство.

интерактивная обратная связь через устройство.

Поэтому, как по мне, JavaScript-сценарии для Flipper выглядят перспективнее классических DuckyScript-пейлоадов.

Рассмотренный скрипт занимает всего несколько десятков строк, но хорошо показывает эволюцию BadUSB-подхода.

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

Исходный код, можно посмотреть здесь: https://gitlab.com/DuDlick/flipper-auto-installer/-/blob/main/download_all.js?ref_type=heads

← Cybersecurity