Не Flipper Zero единым: хакерский мультитул из старого смартфона

Говорят, что лень — двигатель прогресса. Как по мне, лучше работает конкуренция. Возможность свободного выбора устройств, приложений и информации сейчас — движущая сила, которая мотивирует разработчиков создавать и совершенствовать свои продукты. Сегодня хочу обсудить, какая альтернатива может быть у знаменитого пентестерского тулкита. Присаживайтесь поудобнее — и добро пожаловать под кат.

f5f2cc374263cb66430d740e7f8899d6.png

Почему смартфон?

Сейчас выбор устройств для любого исследователя уязвимостей очень широк: от крохотного, но при этом мощного UMPC, типа GPD Win 4, до одноплатного компьютера вроде Raspberry Pi Zero. Понятно, что по умолчанию такие девайсы не имеют никакого отношения к тестам на проникновение или эксплуатации недокументированных особенностей. Это все удел программного обеспечения — от самописных скриптов до готовых дистрибутивов вроде Kali Linux (в девичестве BackTrack).

Но у каждого такого устройства есть набор интерфейсов для взаимодействия с окружающим миром, и это будет изначально ограничивать его возможности. В большинстве случаев количество интерфейсов можно увеличить за счет добавления условных «модулей» в виде дополнительной сетевой карты, беспроводного интерфейса или какого-нибудь программатора RFID-меток. Это разумный, но сложный путь. Нужно учитывать совместимость устройств и наличие или отсутствие софта под конкретную аппаратную платформу.

У каждого из нас наверняка найдется какой-нибудь слегка устаревший смартфон на Android — это и есть тот самый портативный компьютер с кучей интерфейсов и вполне понятной процедурой подключения дополнительных устройств. Использование смартфона для пентестинга выглядит привлекательным ровно до того момента, пока не приходит пора оценить количество доступных интерфейсов и возможность беспрепятственно получить доступ суперпользователя. Первое еще более-менее легко подобрать, посмотрев на ТТХ конкретного аппарата. А вот со вторым все не так просто. Не каждый смартфон можно легко и непринужденно рутануть. Для каких-то моделей такая возможность вообще не предусмотрена. Первое, что стоит сделать при выборе устройства, — заглянуть на какой-нибудь профильный форум вроде 4pda и убедиться в том, что смартфон можно подвергнуть этой замечательной процедуре.

Ethernet

Теперь пару слов о подключении дополнительных интерфейсов. Тут Android частенько способен удивить. Например, я решил проверить, увидит ли мой старенький смартфон самую простую сетевую карту USB на 100 Мбит/с. Для подключения USB-устройства я воспользуюсь переходником, который с одной стороны имеет Type-C, а на выходе предлагает USB-A, HDMI, VGA и Jack 3.5» до кучи:

USB-C-переходник с подключенной по USB сетевой картой

USB-C-переходник с подключенной по USB сетевой картой

Из закромов родины достаю самый простой USB-сетевой адаптер, собранный в Поднебесной, втыкаю его в переходник и дальше в смартфон. Чисто эксперимента ради отключаю мобильную передачу данных и Wi-Fi. Через секунду в верхней шторке появляется новый значок вида <···> — и вуаля, сеть работает. Теперь я точно знаю, что с подключением почти любого смартфона к обычной проводной сети или сетевому устройству нет никаких проблем. Драйверы в большинстве случаев есть в ядре ОС, и поэтому оно заводится без танцев с бубном.

Huawei P9 Lite, подключенный к сети

Huawei P9 Lite, подключенный к сети

У меня под рукой было всего три старых смартфона, так что я решил проверить, будет ли это действовать со всеми:

  1. Huawei P9 Lite (Android 9) — работает.

  2. Huawei P Smart Z (EMUI 12) — работает.

  3. Blackview P6600 Pro (Android 11) — внезапно не работает, но USB-хаб видит.

Получается любопытная, но закономерная картина. Если разработчик прошивки не вырезал штатные драйверы таких сетевых USB-адаптеров, все взлетает без проблем. В противном случае — увы, только самостоятельные попытки добавить в ядро нужный драйвер, что получится не всегда. Но дадим Blackview еще шанс и добавим туда один из моих любимых китайских USB-брелков RTL-SDR.

SDR

Но мало его туда подключить: чтобы SDR заработал, нам потребуется соответствующий софт и модифицированный драйвер. Благо, такая программа и драйвер есть в Google Play. Называется она SDR Touch. Это позволяет превратить связку из смартфона и RTL-SDR-брелка в примитивный, но вполне рабочий SDR-приемник. Единственное условие — совместима она только с рутованными телефонами. Ставим вначале приложение SDR Driver, потом SDR Touch и финально за 12 $ покупаем лицензию на этот замечательный софт. Подключаем к BlackView P6600 Pro, который я рутанул еще год назад:

SDR Touch, запущенный на Blackview P6600 Pro

SDR Touch, запущенный на Blackview P6600 Pro

Все прекрасно работает, теперь можно брать такую связку в любое удобное место. Ну, а огромная батарея Blackview может обеспечить длительную работу получившегося SDR-приемника. А вот оба моих Huawei не подойдут — насколько я знаю, там нет возможности легко разблокировать загрузчик. Хитрость в том, что для этого нужен OEM-код, а его компания Huawei предоставляла лишь по запросу и только до 2018 года. А потом все — не будет вам root-прав и плевать мы хотели на ваши претензии. Вроде бы есть платные утилиты, но результат никто не гарантирует. Хотя если кто-то из наших читателей поделится рабочим способом разблокировки, буду очень признателен.

UART

USB-to-UART

USB-to-UART

Дальше я попробовал приконнектить USB-конвертер уровней от FTDI для общения с другими устройствами по UART. Для проверки буду подключаться к Raspberry Pi 3 B+, в котором предварительно был активирован протокол UART на стандартных пинах (enable_uart=1 в config.txt раздела bootfs):

  • RPI Pin 8 / GPIO14 — FTDI TXD;

  • RPI Pin 10 / GPIO15 — FTDI RXD;

  • RPI Pin 6 / Ground — FTDI GND.

Для Android существуют удобные приложения, такие как Serial USB Terminal и UsbTerminal. Они самостоятельно определяют тип устройства и позволяют в пару нажатий получить к нему доступ:

Список автоматически определившихся устройств в UsbTerminal

Список автоматически определившихся устройств в UsbTerminal

Теперь запускаем «малинку» и спустя несколько секунд видим приглашение для входа в консоль устройства:

Успешное соединение с «малинкой» по UART

Успешное соединение с «малинкой» по UART

Вводим логин и пароль пользователя, после чего получаем полный доступ к управлению. Чтобы выполнить простые базовые команды, не нужно подключать монитор и клавиатуру. В этот момент телефон работает лишь устройством ввода-вывода. Тем не менее это дает возможность полноценного управления без необходимости занимать Wi-Fi или Bluetooth, позволяя этим устройствам заниматься более интересными делами.

AndraX

Установка AndraX build 4 (источник изображения)

Переходим к самому интересному. Поскольку Android основан на ядре Linux, на нем можно запускать скрипты, изначально созданные под Linux. Один независимый разработчик решил, что было бы неплохо взять Metasploit Framework, добавить туда Nmap, Aircrack-NG и еще много всякого добра и сделать удобный интерфейс для запуска. Так на свет появился AndraX, позволяющий превратить почти любой смартфон на Android версии 5 и выше в инструмент пентестера.

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

Дело в том, что для успешных атак такого рода Wi-Fi-адаптер должен быть переведен в специальный «неразборчивый» режим (monitor mode). Во-первых, не каждый Wi-Fi-адаптер позволяет проделывать такой трюк. Хотя после некоторых танцев с бубном на определенных моделях смартфонов, например Xiaomi Redmi Note 3, это сработает. Во-вторых, без root-прав такое тоже не получится. Ну, а если подключать внешний Wi-Fi-адаптер, то велика вероятность, что он «из коробки» не заведется и придется патчить ядро, а затем прошивать им телефон. Вариантов что-либо сломать предостаточно.

В какой-то момент создатель AndraX решил хайпануть: он удалил официальную группу и репозитории проекта, а дальше пустил слух о том, что якобы разработчика убили. Однако спустя пару недель он триумфально вернулся в сеть, разбавив свое «I«m back, m*****f*******». Дальше был выпущен очередной релиз. История тогда наделала много шума, обсуждение можно найти на 4pda.

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

Kali NetHunter

Интерфейс Kali NetHunter на смартфоне Nexus (источник изображения)

Теперь давайте посмотрим на еще один любопытный проект по превращению Android-смартфона в инструмент пентестера. Kali NetHunter — отдельная ветка проекта Kali Linux. Разработчики решили не мелочиться и сделали свой набор инструментов в трех возможных вариантах:

  1. NetHunter Rootless для смартфонов без root-прав.

  2. NetHunter Lite для рутованных устройств с кастомным рекавери.

  3. NetHunter для рутованных телефонов определенных моделей, для которых разработчики создали отдельное ядро.

Последний вариант позволяет развернуться на полную катушку, ведь переделанное ядро дает возможность проделывать все те трюки, на которые стоковое ядро не способно. К тому же тут предусмотрели возможность подключить обычный монитор по HDMI и получить полноценный десктоп с базовыми инструментами. Удивляет то, что есть даже пара образов под умные часы на WearOS (TicWatch Pro/Pro 4G/LTE/Pro 2020 и TicWatch Pro 3 GPS/Pro 3 LTE/Pro 3 Ultra GPS/Pro 3 Ultra LTE).

Сразу хочется отметить, что, в отличие от AndraX, проект Kali NetHunter жив и регулярно обновляется. В качестве замены стандартной прошивки рекомендуется использовать чистый AOSP или LineageOS (бывший CyanogenMod). Вместо штатного рекавери следует поставить TWRP, а для получения прав суперпользователя — Magisk. Эта связка даст вам полный контроль над системой, разумеется, на собственный страх и риск.

В наборе Kali NetHunter присутствует большое количество разных инструментов, в том числе позволяющих телефону прикидываться различными USB-устройствами: от клавиатуры, нажатия клавиш которой можно заранее запрограммировать, до USB-кармана, подключающего любой ISO/IMG-образ. К тому же если ваш смартфон отсутствует в списке рекомендуемых, вы можете попробовать собрать кастомный образ под вашу конкретную модель при помощи Kernel builder.

Проект отличается хорошей документацией, которая более-менее регулярно обновляется и дополняется. Можно задать свой вопрос в Discord или IRC (#kali-linux на сервере irc.oftc.net), плюс почитать форумы и обсуждения выложенных образов на XDA.

Что в итоге

Превратить смартфон в удобный и функциональный инструмент пентестера однозначно можно. Главное — правильно выбрать модель. Проще всего, на мой взгляд, ориентироваться на список доступных образов Kali NetHunter и приобрести нужный аппарат на вторичном рынке, предложений более чем достаточно. Но даже в этом случае будьте готовы к тому, что придется потратить немало часов на то, чтобы все корректно заработало.

Что же касается сравнения с Flipper Zero, тут все будет зависеть от поставленной задачи. Если вам важно портативное устройство, которое способно общаться по UART, с этим справится почти любой рутованный телефон вместе с соответствующим конвертером уровней. Для большей гибкости можно вообще взять Arduino Mega и получить полный фарш по работе с GPIO.

Портирование того же Kali NetHunter на свое устройство — отличная задача не на один вечер. Это даже может стать отдельным хобби для тех, кто любит изучать операционные системы и собирать собственные ядра. Здесь есть прекрасный простор для творчества, а успешным результатом можно будет по праву гордиться.

А вы пробовали превращать смартфон на Android в инструмент для пентестера? Рассказывайте в комментариях.

© Habrahabr.ru