РАЗБОР На проверке

Stryker OS: обзор Android-тулкита для пентеста

Сергей Попов
Сергей Попов Red Team · 6,7 тыс. сообщений
Подписаться
81
[ обложка статьи ]
Режим чтения
Смартфон на тёмном антистатическом коврике со светящимся терминалом Stryker OS и выводом nmap, рядом USB-адаптер Wi-Fi с кабелем, тёплый свет лампы и бликующие огни на фоне.


Полгода назад на внутреннем пентесте бизнес-центра задача была банальная - просканировать гостевой Wi-Fi и проверить сегментацию от корпоративного VLAN. Ноутбук с Kali через проходную с рамками и досмотром рюкзака - верный способ задержаться на полчаса с охраной. На основном телефоне стоял NetHunter, но адаптер AR9271 через OTG определился только с третьей попытки и после ручной правки конфига. На запасном устройстве я поставил Stryker - APK, распаковка chroot, встроенный терминал. nmap заработал через пять минут без танцев с бубном. Вот эта разница и заставила копнуть глубже: что такое Stryker, где он реально полезен и где упирается в потолок - а общую методологию и инструментарий для работы с мобильными платформами я собрал в руководстве по пентесту мобильных приложений.

Что такое Stryker и почему это не дистрибутив​

Первое уточнение, которого не дают русскоязычные обзоры: Stryker - не операционная система. Это Android-приложение (пакет com.zalexdev.stryker, лицензия GPL v3.0), которое разворачивает Debian trixie arm64 chroot и даёт доступ к пентест-инструментам через собственный UI. В отличие от Kali NetHunter, который подменяет ядро устройства и требует поддерживаемую модель телефона, Stryker ставится как обычный APK на любой рутованный Android начиная с версии 7.0 (SDK 24).

Проект открытый, исходники на GitHub (github.com/zalexdev/strykerapp), автор - zalexdev. Стабильная версия - 6.0, в dev-ветке тестируется 6.5 с новым движком исполнения. По данным разработчика - более 2000 скачиваний, при этом аналитики в приложении ноль: единственное внешнее обращение - проверка обновлений через GitHub.

Архитектура Stryker: три движка исполнения​

Главное архитектурное решение, которое отличает Stryker от конкурентов - поддержка нескольких моделей запуска Linux-окружения на Android. Не «терминал поверх Android», а система выбора движка в зависимости от возможностей устройства.

Chroot на рутованном устройстве​

Основной и самый быстрый режим. При наличии root (Magisk или KernelSU) Stryker монтирует Debian trixie arm64 в /data/local/stryker/release. Процессы внутри chroot используют ядро хост-устройства напрямую - никакой эмуляции. nmap, msfconsole, hydra работают с нативной скоростью ARM64.

Принципиальный нюанс: chroot - не изоляция. Процессы внутри него крутятся на том же ядре Android и с теми же привилегиями. Если root-процесс в chroot скомпрометирован - скомпрометировано всё устройство. Для пентестера на собственном телефоне риск приемлемый, но забывать о нём не стоит.

По исходникам видно, что все root-команды проходят через обёртку Core.generateSuProcess() в com.zalexdev.stryker.utils - централизованный диспетчер, который выполняет команду от su напрямую или пробрасывает в chroot. Одна точка входа вместо россыпи Runtime.exec("su") по всему коду - грамотно.

QEMU и UML для устройств без root​

Для устройств без root Stryker v6 поднимает полноценную виртуальную машину через QEMU с тем же Debian arm64 образом. Гостевая ОС получает собственное ядро Linux - проблема отсутствия привилегий решена, но накладные расходы ощутимые.

В dev-версии 6.5 появился третий движок - User Mode Linux (UML). UML запускает ядро Linux как обычный userspace-процесс на хосте. Компромисс между chroot (нет своего ядра, зато быстро) и QEMU (своё ядро, зато тормозит): отдельное ядро есть, но без тяжёлой эмуляции оборудования.

КритерийChrootQEMUUML
Требует rootДаНетНет
Своё ядро LinuxНет (хостовое)ДаДа
ПроизводительностьНативнаяНизкаяСредняя
Доступ к USB-устройствамПрямойЧерез пробросОграничен
Статус в v6.0СтабильныйСтабильныйНет (только v6.5 dev)

Автоматический выбор движка заявлен в v6.5 - приложение проверяет наличие root и выбирает оптимальный путь. В текущей стабильной 6.0 выбор ручной.

Установка Stryker OS и требования к железу​

Минимальные требования по README проекта:
  • Android 7.0+ (SDK 24), target SDK 28
  • Root-доступ через Magisk или KernelSU (для chroot-режима)
  • Около 1 ГБ свободного хранилища для chroot и инструментов
  • Внешний USB Wi-Fi адаптер с поддержкой monitor mode для беспроводных атак (рекомендуются Atheros AR9271 и Realtek RTL88XXAU)
  • Ядро с поддержкой USB ConfigFS для HID-атак (CONFIG_USB_CONFIGFS=y, CONFIG_USB_CONFIGFS_F_HID=y) - большинство ядер NetHunter и KernelSU-Next это поддерживают
Установка занимает порядка десяти минут:
Bash:
# Установка через adb
adb install StrykerOSS-6.0.apk
# При первом запуске (AppIntroActivity):
# 1. Запрос root (su)
# 2. Разрешения: storage, location, notifications, BT, audio
# 3. Скачивание chroot64-debian.tar.gz
# 4. Монтирование в /data/local/stryker/release
# 5. Установка Metasploit, Nuclei, Hydra, SearchSploit
После установки встроенный терминал (боковое меню или иконка Stryker Terminal) попадает прямо в chroot. Внешнее терминальное приложение не нужно.

Грабли, на которые я наступал:
  • SELinux в enforcing блокирует часть операций chroot. Magisk обычно переключает контекст автоматически, но на некоторых прошивках приходится вручную setenforce 0.
  • Нехватка места - заявлен 1 ГБ минимум, но с Metasploit и полным набором NSE-скриптов nmap реально уходит 1.5–2 ГБ. Закладывайте с запасом.
  • OTG-проблемы с USB-адаптерами - не каждый OTG-кабель даёт стабильное питание для AR9271. Активный USB-хаб решает вопрос, но убивает мобильность.

Инструментарий Stryker для мобильного пентеста​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Nmap с полным набором NSE-скриптов (более 550). Из встроенного терминала работает идентично десктопной версии:
Bash:
# Сканирование LAN из терминала Stryker
nmap -sV -sC --script=smb-vuln* 192.168.1.0/24
# Результат совпадает с десктопным Kali
Проверка известных уязвимостей - встроенные проверки EternalBlue (SMB), SMBGhost (SMBv3) и BlueKeep (RDP). Stryker прогоняет nmap-скрипты по найденным сервисам и выводит вердикт.

Nuclei - сканер веб-уязвимостей от ProjectDiscovery. Работает с шаблонами, проверяет веб-приложения на стандартные CVE и misconfigurations.

Hydra - Brute Force (T1110) сетевых сервисов: SSH, FTP, HTTP-auth, SMB. Словари можно импортировать в приложение.

Metasploit Framework - полноценный msfconsole внутри chroot. Работает, но нюанс: PostgreSQL на телефоне - штука прожорливая, на устройствах с 3–4 ГБ RAM может быть нестабильным. Если RAM меньше 6 ГБ - рекомендую отключить database и использовать Metasploit без неё.

SearchSploit - локальная копия ExploitDB для поиска эксплойтов без интернета. Незаменимо при работе в изолированных сетях.

Интеграция с 3wifi - поиск по MAC-адресу, получение данных из базы (название сети, координаты, пароль, PIN). При Wi-Fi-сканировании точки из базы 3wifi подсвечиваются цветом. Результаты Router Scan можно загрузить обратно в базу.

HID-атаки и USB Arsenal​

Функции, которые русскоязычные обзоры Stryker OS почему-то обходят стороной:

HID Attacks - Stryker превращает телефон в USB-клавиатуру с поддержкой DuckyScript. Подключаете телефон к целевому компьютеру - он определяется как клавиатура и выполняет заранее записанный скрипт. Классический вектор initial access при физическом доступе. Требует ядро с CONFIG_USB_CONFIGFS_F_HID=y.

USB Arsenal - создание произвольных USB-профилей: mass storage (телефон как флешка), RNDIS/ECM (сетевой адаптер через USB). Позволяет поднять MITM через USB-сетевой интерфейс или подсунуть payload через эмуляцию хранилища.

MAC Changer - рандомизация MAC-адреса. Базовая OPSEC-гигиена для работы в поле.

WhisperPair - модуль для BLE Fast Pair. Относительно свежая функция с минимальной документацией.

Stryker OS против Kali NetHunter - альтернатива или дополнение​

Вопрос «зачем Stryker если есть NetHunter» задают первым делом. Ответ зависит от сценария.

КритерийStryker v6Kali NetHunter
УстановкаAPK + распаковка chrootКастомное ядро + ROM
Поддержка устройствЛюбой Android 7.0+ с rootОграниченный список моделей
Работа без rootДа (QEMU/UML, ограниченно)NetHunter Rootless (минимум функций)
Размер1–2 ГБ5–15 ГБ
Monitor mode Wi-FiВнешний адаптер + Qualcomm (Penmon)Внешний адаптер (шире поддержка драйверов)
HID-атакиДа (при поддержке ядра)Да (нативно, больше профилей)
GUI инструментовMaterial UI, модульныйKali Desktop через KeX/VNC
СтабильностьБета-качество, «сыровато»Зрелый проект с поддержкой OffSec

Stryker выигрывает при быстром развёртывании на любом рутованном устройстве, на физическом пентесте «на ногах», когда нет возможности прошить кастомный ROM. Или как backup на втором телефоне.

NetHunter выигрывает при серьёзной работе с wireless, когда стабильность критична и устройство выделено под пентест.

На практике я не выбираю одно - я ношу оба.

Ограничения Stryker OS и подводные камни​

Честный разбор того, что не работает или работает через боль - этого раздела нет ни в одном русскоязычном обзоре Stryker OS.

Производительность брутфорса. Хешрейт при переборе WPA2 handshake на стандартном телефоне - около 2000 паролей в секунду. Средняя видеокарта на десктопе выдаёт 200–500 тысяч. Разница в два порядка. Брутфорс handshake на телефоне - proof of concept, не более. Рабочий сценарий: захватить handshake в поле, экспортировать .cap и ломать на десктопе через [URL='https://hashcat.net/hashcat/']hashcat[/URL].

Совместимость Wi-Fi чипсетов. Встроенный monitor mode через Penmon работает только на «новых Qualcomm». Какие конкретно модели - нигде не документировано, что раздражает. На MediaTek и Exynos режим монитора через встроенный адаптер не работает. Без внешнего USB-адаптера Wi-Fi атаки ограничены PixieDust и WPS-сканированием.

Бета-качество кода. Разработчик сам признаёт: «всё довольно сыровато и багавано». Router Scan на 2000 потоков может зависнуть, часть NSE-скриптов nmap падает из-за несовместимости библиотек в chroot. Будьте готовы к сюрпризам.

Android - не стандартный Linux. SELinux-политики, ограничения на создание сетевых интерфейсов, лимиты на количество процессов - всё это влияет на работу инструментов внутри chroot. Stryker решает часть проблем, но далеко не все.

OPSEC-риски. Рутованный телефон с chroot, где лежат Metasploit и Hydra, на физическом пентесте - палка о двух концах. Если устройство изымут, содержимое /data/local/stryker/ расскажет больше, чем хотелось бы. Шифрование chroot-раздела пока не реализовано.

Rootless-режим. QEMU и UML решают проблему отсутствия root, но ценой производительности и потери доступа к железу (USB-устройства, monitor mode, HID). Rootless Stryker пригоден для nmap и Nuclei, но не для wireless-пентеста.

Стоит ли использовать Stryker в реальных проектах? Зависит от задачи. Для быстрого recon в поле, проверки Wi-Fi-сегментации, экспресс-скана портов - вполне. Как единственный инструмент серьёзного пентест-проекта - рано.

Я использую Stryker как третий элемент набора: ноутбук с Kali для основной работы, NetHunter на выделенном Pixel для wireless, Stryker на повседневном телефоне для ситуаций «нужно проверить прямо сейчас». Три инструмента - три сценария, ни один не заменяет остальные.

Главная ошибка обзоров - попытка представить Stryker как замену NetHunter или десктопному Kali. Это не замена, это расширение арсенала. Телефон в кармане, где nmap и Nuclei работают из коробки - не прорыв, но конкретное тактическое преимущество при физическом доступе. Через пару версий, когда UML-движок стабилизируется и rootless-режим получит поддержку USB-passthrough, расклад может измениться серьёзно. Пока ценность Stryker - в скорости развёртывания: пять минут от APK до работающего nmap вместо часа прошивки кастомного ядра. Если хочется от скана дойти до shell на живом стенде без подсказок - на HackerLab такие сценарии разложены по категориям.
Полезно

Комментарии

0