Категория > Новости > Киберфон. Превращаем телефон на Android в инструмент хакера - «Новости»
Киберфон. Превращаем телефон на Android в инструмент хакера - «Новости»2-06-2023, 00:00. Автор: Wood |
KARMAгеддон. Атакуем клиентские устройства с помощью Karma».warningСтатья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону. Сейчас у каждого есть телефон, зачастую даже не один. Так что злоумышленник с мобильником выглядит куда менее подозрительно, чем с ноутбуком. Более того, телефон часто разрешают проносить туда, где ноутбуки запрещены. Телефоны редко рассматриваются как источник угрозы. У телефона настолько большой потенциал, что с его помощью можно реализовать практически любые физические атаки. Несмотря на то что он работает на мобильном процессоре (ARM), на нем можно запустить почти любой десктопный софт. Все благодаря тому, что Linux — это open source. Все многообразие ПО под него уже давно кросс‑скомпилировано и портировано под множество других архитектур, включая и ARM, да еще и в форме удобных пакетов. Читайте также - Официальный сайт Гизбо Казино - это лицензионные игровые автоматы, слоты, ставки на спорт, а также выгодные предложения. Начинай играть в игровые автоматы на лучших официальных casino online с бонусом. Теперь предлагаю взглянуть на телефон глазами хакера. Сколько атак можно провести с его помощью? Все атаки, что продемонстрированы на Pineapple, можно реализовать и с телефона. Более того, перечень таких атак куда шире. Можно выделить ключевое отличие телефона от Pineapple или любого одноплатника — наличие устройств ввода‑вывода информации. Поскольку у телефона есть экран и клавиатура, атакующий может проводить интерактивные атаки. То есть он в состоянии совмещать автоматизацию типовых действий и ручной ввод дополнительных команд, благодаря чему атаки становятся более таргетированными. Интерактивность — главное преимущество телефона перед автономными устройствами типа Pineapple. Конечно, это не значит, что ноутбук не годится для физических и околофизических атак. Но вблизи объектов, где много наблюдателей, охраны и везде натыканы камеры, злоумышленник с легкостью может заменить ноутбук телефоном. Для проведения большинства атак с телефона атакующему, как правило, требуются внешние адаптеры и драйверы для них. Однако некоторые атаки можно провести и без дополнительных устройств, что снижает сложность затеи. B итоге хакерский телефон вполне можно использовать для следующих атак:
Давай детально рассмотрим, чем может быть опасен потенциальный злоумышленник с телефоном. Настройка GNU-окруженияТак уж исторически сложилось, что большая часть хакерского софта обитает в мире Unix. Конечно, под Android тоже существуют аналоги, но крайне неразумно переписывать весь софт под очередную платформу. Куда проще и правильнее организовать слой совместимости и портировать все это для нужной среды. И благодаря тому, что под капотом Android прячется ядро Linux, это действительно просто. Далее продемонстрирован открытый подход, позволяющий сделать хакерским практически любой Android-телефон. Вопреки общему мнению, чтобы телефон стал хакерским, необязательно использовать специализированную ОС вроде Kali NetHunter. Эти слегка кастомизированные версии Android идут с ядром под соответствующее железо, а значит, перечень поддерживаемых устройств сильно ограничен. Но что делать, если такого мобильника нет в наличии? Ты можешь реализовать все нужное самостоятельно: в этом случае потребуется любой Android-телефон, который должен соответствовать только нескольким простым критериям. Во‑первых (это самое главное), телефон должен иметь root-права. Без них большая часть атак не работает. Чтобы получить права root, загрузчик телефона должен поддерживать разблокировку. Тогда с его помощью можно перезаписать recovery (небольшая ОС для восстановления данных). А уже затем можно полноценно изменять файлы основной ОС Android. Во‑вторых, крайне желательно, чтобы телефон имел ядро с поддержкой modprobe для загрузки дополнительных драйверов и поддержки внешних устройств. Часто modprobe может быть доступен даже на стоковом ядре. Но лучше убедиться, что для твоей модели мобильника существуют кастомные ядра, устанавливают которые тоже через recovery. На самом деле хакеру вовсе не нужно собирать какое‑то особенное ядро, заранее добавляя в него все необходимое и каждый раз часами пересобирая его. Напротив, благодаря модульности ядра Linux можно дособрать любой драйвер для любой железки прямо на текущем ядре, да еще и не на точной версии исходных кодов. И это куда проще и безопаснее, ведь так не теряется набор функций стокового ядра и, скажем, не отваливается камера. Также обязательно необходим какой‑нибудь терминал, например популярный Termux. Termux весьма удобен, так как имеет встроенный менеджер пакетов. Впрочем, можно легко обойтись и без него. Поскольку хакеру нужно работать с терминалом, удобнее использовать настоящую полноразмерную клавиатуру, например org.pocketworkstation.pckeyboard (Hackers Keyboard). Наконец, вся хакерская начинка может быть представлена в файле‑образе Linux-дистрибутива, который можно использовать в режиме обычного chroot. Сначала немного информации о создании chroot-окружения — начальной файловой системы Linux-образа. Фактически это база для хакерского программного инструментария на телефоне. Для этого на Linux-десктопе нужно подготовить файл (будущий образ), на нем создать файловую систему и смонтировать ее: truncate -s10G linux.img mkfs.ext4 linux.img mount -oloop linux.img /mnt/iso Теперь перед хакером чистый лист, который необходимо наполнить системными файлами, то есть установить настоящий Linux. Сделать это можно одной командой, например stable /mnt/iso/http://http.us.debian.org/debian Программа Затем образ Любую современную ОС можно представить как совокупность как совокупность user mode и kernel mode, то есть пользовательские компоненты и ядро с драйверами. Образ # Подключение Linux-диска mount -oloop linux.img /data/linux # Подключение системных каталогов к Linux-образу mount -tproc none /data/linux/proc mount -tsysfs none /data/linux/sys mount -o bind/dev /data/linux/dev mount -tdevpts none /data/linux/dev/pts # Вход в Linux-контейнер chroot/data/linux /bin/bash Последняя команда Чтобы удобнее передавать файлы между chroot-контейнером и Android-приложениями, можно подмонтировать пользовательскую папку mount -oloop /sdcard/ /data/linux/sdcard/ Это может быть удобно, когда необходимо, например, посмотреть HTML-отчет от какой‑нибудь хакерской тулзы привычным браузером телефона. С этого момента начинается полноценный GNU/Linux в обычном мобильнике на Android. И дальше все происходящее напоминает больше классическое администрирование Linux-десктопа или сервера. Использование Linux в форме образа и проще, и правильнее. Так сохраняется в «чистоте» файловая система Android, упрощается резервное копирование, ведь физически это один файл, и такая система становится портативной. Можно просто скопировать такой заранее настроенный образ на новый девайс без необходимости все настраивать с нуля после каждой замены телефона. Графический интерфейсНесмотря на то что большинство хакерских инструментов консольные, может потребоваться запуск и графических инструментов. Android лишен привычного X-сервера, отрисовывающего графику. Но используя VNC Server, можно легко устранить этот недочет: gui.sh #!/bin/bash cat <<E> ~/.vnc/config securitytypes=none geometry=1083x500 localhost E vncserver :0 VNC Server — это тот же самый графический X-сервер, только с удобным интерфейсом под VNC-клиент, которых, благодаря открытости протокола, предостаточно даже в виде мобильных приложений. Чтобы рабочий стол содержал привычные элементы, нужно установить соответствующую среду, например для легковесности можно использовать LXDE: apt install lxde Теперь, используя любой мобильный VNC-клиент (например, com.iiordanov.freebVNC), можно получить Linux GUI прямо на телефоне. Linux стирает грань между компьютером и телефоном При наличии привычного рабочего стола телефон отличается от ноутбука только отсутствием клавиатуры. VNC Server имеет еще одну удобную и очевидную особенность — к нему можно удаленно подключаться с других устройств. Это дает возможность дистанционно управлять телефоном в оконном режиме. Звук в chroot-окруженииВ некоторых случаях Linux-программам на телефоне может требоваться полноценный вывод звука. Добиться этого тоже достаточно просто: apt install pulseaudio pulseaudio --start pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=auto_null.monitor record=true port=8000 listen=127.0.0.1 Теперь весь звук из chroot-окружения выводится на локальный порт 8000/tcp. В окружении Android нужно запустить приложение Simple Procotol Player (com.kaytat.simpleprotocolplayer), которое воспроизводит получаемый звук. GNU-Android bridgeТак как работа ведется все же на Android, пусть и из chroot-окружения, может потребоваться доступ к его функциям и датчикам. К сожалению, на Android нельзя получить доступ к некоторому оборудованию через привычные символьные устройства или системные вызовы, так как эта ОС использует сильно модифицированное ядро Linux. Самый простой способ — использовать Termux-API. Он состоит из двух компонентов. Первый компонент — Android-приложение com.termux.api, которое с помощью Java-библиотек получает штатный доступ к камере, диктофону, датчикам и прочим компонентам телефона. Второй компонент — пакет Termux-API, который содержит уже консольные программы, принимающие данные от первого компонента. Для установки консольных компонентов в Termux нужно выполнить следующую команду: pkg install termux-api Благодаря Termux-API можно получить доступ к начинке телефона из GNU-окружения — привычной командной строки. Это позволяет запрограммировать что угодно крайне простым образом через командную оболочку Bash. Приложения Termux-API доступны только из окружения консоли Termux, но пока не chroot-образа. Доступ к консоли Termux из консоли chroot-окружения проще всего получить по SSH. Для этого в консоли Termux нужно настроить SSH-сервер: ssh-keygen cat.ssh/id_rsa.pub >.ssh/authorized_keys sshd Приватный ключ android/msg_notification.sh ssh -i~/id_rsa -p8022 localhost "termux-notification -t '$title' -c '$text'" Уведомления удобно использовать для различных атакующих скриптов. К тому же уведомления позволяют задействовать и умные часы или, например, прочитать вывод команды вслух, используя речевой синтезатор телефона: android/speak.sh ssh -i~/id_rsa -p8022 localhost "termux-tts-speak $text" Что касается датчиков, чтобы получить информацию с акселерометра, можно использовать такой скрипт: android/sensors/accelerometer.sh #!/bin/bash ssh -i~/id_rsa -p8022 localhost "termux-sensor -s 'icm4x6xx Accelerometer' -n 1" | sed -n4,6p Информация с такого датчика позволит использовать пространственное положение телефона в качестве триггера для какого‑либо действия. Вообще, у Termux-API достаточно много датчиков и возможностей. Интерфейс под палецУправлять всем через терминал, конечно, хорошо и удобно для автоматизации, но требует от атакующего набирать кучу команд. Современные телефоны лишены удобной физической клавиатуры, а сенсорные виртуальные клавиатуры мало пригодны для комфортной работы в командной строке. Однако интерфейс атакующих скриптов можно упростить. Termux переводит нажатия на сенсорный экран телефона в события мыши. Некоторые консольные файловые менеджеры, например Midnight Commander, поддерживают работу с файлами, в частности запуск скриптов, обрабатывая такие события. Поэтому этот файловый менеджер может стать простым графическим интерфейсом для управления хакерскими скриптами: apt install mc Все атакующие скрипты можно организовать в виде структуры файлов и папок, логически сгруппированных по типу атак. Благодаря этому навигация нажатиями пальца становится почти такой же удобной, как в обычном мобильном приложении. Запуск атакующих сценариев одной левой, пальцем и без клавиатуры Удобно, что Termux поддерживает быстрое изменение масштаба консоли с помощью мультитач‑жеста. Чтобы скрипты могли работать в интерактивном режиме, можно придать им единый стиль интерфейса, позволяющий принять параметры как через опции командной строки, так и через интерактивный запрос того или иного параметра: [[ $# -ge 1 ]] && arg1="$1" || read -p 'arg1: 'arg1 Таким образом, любой скрипт можно запустить простым нажатием, а если ему что‑то нужно, то он это запросит в интерактивном режиме. Разнообразные хакерские утилиты пишутся разными людьми, и интерфейсы этих программ тоже разные. Но использование простых Bash-скриптов в качестве оберток позволяет придать им единый стиль, узко заточенный под каждую конкретную атаку. С помощью таких скриптов весь хакерский набор функций можно настраивать самостоятельно на свой вкус, придавая ему максимальную гибкость. А использование для этого командной оболочки Bash практически не требует серьезного программирования. Тем не менее интерфейс голой консоли всегда можно обернуть простым веб‑интерфейсом, который вызывает те или иные сценарии и возвращает результат обратно на веб‑страницу. Как известно, веб — это самый простой и переносимый GUI. Подключение хакерских девайсов к телефонуВместо того чтобы использовать встроенные Wi-Fi, Bluetooth или etc-карточки, хакеру проще задействовать внешние решения. На рисунке ниже представлены миниатюрные устройства, имеющие скрытый хакерский потенциал (внизу слева направо):
А также самый миниатюрный OTG (в верхней части рисунка), в зависимости от телефона Type-C/MicroUSB. Он настолько мал, что его можно оставлять прямо в любом из представленных адаптеров. Маленькие хакерские игрушки Такие внешние решения имеют явные преимущества. Во‑первых, их можно использовать и на ноутбуке, и на телефоне. Во‑вторых, атакующий не привязан к аппаратной части телефона или ноутбука. Это снова дает автономность, но уже для аппаратной составляющей — при замене телефона не будет утрачен хакерский арсенал. Стоит отметить, что эти адаптеры имеют аналоги мощнее, но уже в крупном корпусе, более подходящем к работе с ноутбука. Однако ноутбук — это инструмент для атак из надежного укрытия, а телефон можно использовать в полевых условиях. Поэтому потенциальному злоумышленнику куда важнее не привлекать к себе внимание. А меньшая мощность сигнала может быть легко компенсирована возможностью подойти максимально близко к целям атак. Для использования большинства внешних девайсов атакующему требуется собрать соответствующий драйвер. Чтобы подготовить драйверы под то или иное устройство, вовсе необязательно иметь исходные коды точной версии текущего ядра Linux, на котором работает телефон. Вполне достаточно скачать исходники близкой версии ( mount -oloop kernel.img /data/linux/usr/src/linux Как только определен драйвер, который нужно собрать, необходимо запустить компиляцию только одного выбранного модуля (плюс его возможных зависимостей): make menuconfig make modules M=path/to/component make modules_install Заметь, тут не происходит компиляции всех модулей и уж тем более не перекомпилируется все ядро. В этом случае собирается только один необходимый модуль и его возможные зависимости. Итак, вот примерный универсальный алгоритм сборки драйвера. На ноутбуке с Linux запускается команда udevadm monitor Далее в ноутбук нужно вставить наш девайс, и по реакции системы можно увидеть загрузку нужного драйвера, управляющего устройством. Программа udevadm в режиме реального времени показывает, как система реагирует на изменение аппаратной части компьютера. И где‑то в ее выводе можно увидеть подгрузку требуемых драйверов. Реакция ОС на подключение устройства На рисунке видно, какие драйверы подхватывают внешнюю Wi-Fi-карту. Далее на телефоне нужно перейти в режим интерактивного конфигурирования дерева исходных кодов ядра: cd/usr/src/linux sudo make menuconfig Для поиска нужного модуля по имени нажать /. Результатом будет Теперь требуется собрать только выбранный драйвер, указав его make modules M=path/to/component sudo make modules_install SUBDIRS=path/to/component После чего можно подключать девайс в телефон, предварительно загрузив драйвер: sudo modprobe somemodule sudo insmod /lib/modules/`uname -r`/extra/somemodule.ko Чаще всего этого хватает, но иногда, особенно когда речь идет о сетевых картах, простой загрузки драйвера через modprobe может быть недостаточно. Могут потребоваться дополнительные действия, связанные с постобработкой. Эту задачу автоматически выполняет udev. Система udev мониторит изменение конфигурации аппаратной части через sysfs и реагирует на это тем или иным образом, включая подгрузку требуемых драйверов и выполняя по необходимости дополнительные действия. Требуется лишь предварительно запустить систему udev перед подключением устройства: sudo/lib/systemd/systemd-udevd –debug Примерно таким образом можно подружить телефон практически с любым внешним устройством. Ведь современный телефон — не просто телефон, а настоящий карманный компьютер. MousejackТему атак с телефона мне хотелось бы начать, пожалуй, с самой опасной беспроводной физической уязвимости — Mousejack. Эта атака просто идеально подходит под эксплуатацию со смартфона. А ее импакт… Если бы я только мог сказать, сколько крупных компаний было пробито подобным образом просто с улицы… Mousejack — это атака на беспроводные периферийные устройства, а точнее, на их адаптеры. Эта атака во всей ее мощи описана в статье «Мегадрон. Строим хакерский беспилотник — дальнобойный и с защитой от глушилок». Эксплуатация сильно похожа на BadUSB-флешки, с той лишь разницей, что атаку совершают на расстоянии. Реальная успешность напрямую зависит от количества обнаруженных беспроводных мышек и клавиатур, ведь не все они могут быть уязвимы. Поэтому ее нужно проводить максимально подвижно, например с дрона. Но такая атака может быть достаточно шумной, использование же телефона делает ее практически невидимой. В таком исполнении не потребуется даже собирать никаких специальных драйверов, нужен только root. На стенде, изображенном на рисунке ниже, телефон напечатал слово test на компьютере, используя радиоканал и адаптер беспроводной мышки. Телефон на расстоянии нажимает клавиши на ноутбуке с беспроводной мышью Перейти обратно к новости |