P4wnP1 A.L.O.A.
P4wnP1 A.L.O.A. от MaMe82 — это фреймворк, который превращает Raspberry Pi Zero W в гибкую, недорогую платформу для пентестинга, red teaming и физических взаимодействий... или в "A Little Offensive Appliance" (немного атакующее устройство).
0. Как установить
Последний образ можно найти на вкладке релизов.
Самый простой способ получить доступ к свежей установке P4wnP1 A.L.O.A. — использовать веб-клиент через созданную WiFi-сеть (PSK: MaMe82-P4wnP1, URL: http://172.24.0.1:8000) или SSH (пароль по умолчанию: toor).
1. Возможности
Эмуляция USB-устройств Plug&Play
- USB-функции:
- USB Ethernet (RNDIS и CDC ECM)
- USB Serial
- USB Mass Storage (флешка или CD-ROM)
- HID-клавиатура
- HID-мышь
- Переконфигурация USB-стека на лету (без перезагрузки)
- Обнаружение подключения/отключения позволяет держать P4wnP1 A.L.O.A. включенным (внешнее питание) и запускать действия при подключении эмулируемого USB-устройства к новому хосту
- Нет необходимости работать с разными внутренними сетевыми интерфейсами, так как CDC ECM и RNDIS подключены к виртуальному мосту
- Сохранение и загрузка конфигурационных шаблонов для USB-настроек
HIDScript
- Замена ограниченного DuckyScript
- Сложный скриптовый язык для автоматизации клавиатуры и мыши
- До 8 задач HIDScript могут выполняться параллельно (одна задача может двигать мышь, пока другие запускаются по требованию для бесшовной инъекции произвольных нажатий клавиш и движений мыши)
- HIDScript основан на JavaScript, доступны общие библиотеки, что позволяет создавать более сложные скрипты (вызовы функций, использование
Math для расчетов мыши и т.д.)
- Клавиатура
- Основана на UTF-8, поэтому нет ограничения на ASCII-символы
- Может реагировать на обратную связь от реальной клавиатуры хоста, считывая изменения состояния светодиодов NUMLOCK, CAPSLOCK и SCROLLLOCK (если целевая ОС делит состояние светодиодов между всеми подключенными клавиатурами, что не так в OSX)
- Принимать ветвящиеся решения в HIDScript на основе обратной связи от светодиодов
- Мышь
- Относительное движение (быстро, но неточно)
- Шаговое относительное движение (медленнее, но точно... перемещает мышь шагами по 1 DPI)
- Абсолютное позиционирование на Windows (пиксельная точность, если известны размеры экрана цели)
- Клавиатура и мышь управляются не только одним языком скриптов, но и могут использоваться в одном скрипте. Это позволяет комбинировать их для достижения целей, которые невозможно было бы выполнить только клавиатурой или только мышью.
- Текущие раскладки: br, de, es, fr, gb, it, ru и us
Bluetooth
- Полный интерфейс к стеку Bluez (пока без поддержки удаленного обнаружения/подключения устройств)
- Позволяет запустить Bluetooth-точку сетевого доступа (NAP)
- Настраиваемая парная связь (PIN-код в легаси-режиме или SSP)
- Поддержка High Speed (использует кадры 802.11 для скорости, сравнимой с Wi-Fi)
- Перенастройка Bluetooth-стека на лету
- Примечание: PANU также возможен, но пока не поддерживается (нет подключения удаленного устройства)
- Сохранение и загрузка конфигурационных шаблонов для Bluetooth-настроек
WiFi
- Модифицированная прошивка (собрана с фреймворком Nexmon)
- Позволяет KARMA (подделывать правильные ответы для точек доступа, зондируемых удаленными устройствами, и разрешать ассоциацию)
- Вещать дополнительные маяки для эмуляции нескольких SSID
- WiFi скрытый канал
- Примечание: Легаси-режим монитора Nexmon включен, но не поддерживается P4wnP1. Режим монитора всё ещё глючный и может привести к сбою прошивки при изменении конфигурации.
- Простая настройка точки доступа
- Простая настройка режима станции (подключение к существующей точке доступа)
- Режим отказоустойчивости (если не удается подключиться к целевой точке доступа, поднимается собственная точка доступа)
- Перенастройка WiFi-стека на лету
- Сохранение и загрузка конфигурационных шаблонов для WiFi-настроек
Сеть
- Простая настройка Ethernet-интерфейсов для:
- Bluetooth NAP интерфейса
- USB-интерфейса (если включен RNDIS/CDC ECM)
- WiFi-интерфейса
- Поддержка выделенного DHCP-сервера для каждого интерфейса
- Поддержка режима DHCP-клиента
- Ручная настройка
- Сохранение и загрузка конфигурационных шаблонов для каждого интерфейса
Инструментарий
Здесь нечего особо сказать: P4wnP1 A.L.O.A. работает на базе KALI Linux, так что всё необходимое будет под рукой (или можно установить через apt)
Конфигурация и управление через CLI, при необходимости удаленно
- Все перечисленные функции могут быть настроены с помощью CLI-клиента
- Основной сервис P4wnP1 — это один бинарный файл, запущенный как systemd-юнит, который сохраняет состояние во время выполнения
- CLI-клиент взаимодействует с этим сервисом через RPC (точнее, gRPC) для изменения состояния ядра
- Поскольку CLI использует RPC-подход, его можно использовать и для удаленной конфигурации
- Если доступ к P4wnP1 осуществляется через SSH, CLI-клиент уже ждет команд (или ваших комбинаций с Tab)
- CLI написан на Go (как и большая часть кода) и, таким образом, компилируется для большинства основных платформ и архитектур
Так что если вы хотите использовать пакетный файл на удаленном хосте Windows для конфигурации P4wnP1... без проблем:
- Скомпилируйте клиент для Windows
- Убедитесь, что можете подключиться к P4wnP1 (Bluetooth, WiFi, USB)
- Добавьте параметр
host в ваши команды клиента
- ...и используйте CLI так же, как при локальном доступе.
Конфигурация и управление через веб-клиент
Хотя изначально это не планировалось, P4wnP1 A.L.O.A. можно настраивать через веб-клиент.
Несмотря на то, что клиент не был запланирован, он стал хорошим программным продуктом. Фактически он стал основным инструментом конфигурации для P4wnP1 A.L.O.A.
Веб-клиент имеет возможности, недоступные в CLI (хранение шаблонов, создание "TriggerActions").
Основные возможности:
- Должен работать в большинстве основных мобильных и десктопных браузеров с единым стилем (Quasar Framework)
- Использует gRPC через websockets (нет RESTful API, нет XHR, практически тот же подход, что и в CLI)
- Благодаря этому интерфейсу веб-клиент не полагается только на схему "запрос-ответ", но получает "push-события" от ядра P4wnP1. Это означает:
- Если вы (или скрипт) меняете состояние P4wnP1 A.L.O.A., изменения немедленно отразятся в веб-клиенте
- Если запущено несколько веб-клиентов, изменения состояния ядра будут передаваться от одного клиента всем остальным
- Включает редактор HIDScript с
- подсветкой синтаксиса
- автодополнением (
CTRL+SPACE)
- постоянным хранением и загрузкой HIDScript
- запуском HIDScript по требованию прямо из браузера
- менеджером задач HIDScript (отмена запущенных задач, просмотр состояния и результатов)
- Включает обзор и редактор TriggerActions
- Полная поддержка шаблонов для всех описанных функций
- Веб-клиент — это одностраничное приложение (SPA), после загрузки всё выполняется на стороне клиента, обмениваются только gRPC-запросы
Автоматизация
Подход к автоматизации старой версии P4wnP1 (статические bash-скрипты) больше не использовался.
Подход к автоматизации P4wnP1 A.L.O.A. должен был удовлетворять следующим требованиям:
- Простота использования и понимания
- Возможность использования из веб-клиента
- Одновременно универсальность и гибкость
- Всё, что можно было сделать старым подходом "bash-скрипт", должно оставаться возможным
- Возможность доступа ко всем подсистемам (USB, WiFi, Bluetooth, Ethernet-интерфейсы, HIDScript...)
- Модульность с переиспользуемыми частями
- Возможность поддержки (простых) логических задач без написания дополнительного кода
- Поддержка физических вычислений с использованием GPIO-портов
Введение так называемых "TriggerActions" и их комбинация с системой шаблонов (постоянное хранение настроек для всех подсистем) позволили удовлетворить все требования. Подробности о TriggerActions можно найти в разделе WorkFlow.
Учебное пособие
2. Часть рабочего процесса 1 - HIDScript