В этой статье пойдет речь о том, как установить лабораторию для пентестинга Android. Будет также приведен список команд ADB, которые помогут пользователю использовать свой телефон в полную мощь.
Чтобы освоить азы пентестинга Android, была создана среда Android Pentest на компьютере. Следует отметить, что подобную практику можно проводить и на телефоне с включенной функцией отладки USB, но в данной статье будет использоваться именно виртуальная машина Android, также известная как эмулятор Android.
Genymotion – это один из сотни существующих на рынке эмуляторов Android, доступных для скачивания. Его функции могут быть очень полезны для пентестинга Android. Программа проста в настройке, предлагает поддержку команд ADB и Google Apps. Пользователь будет использовать Genymotion, чтобы осуществить все практические действия, описанные в этой статье, но любой другой человек может взять иной эмулятор, который имеет базовый функционал, похожий на Genymotion.
Установка виртуальной среды
Чтобы бесплатно скачать Genymotion, следует перейти по ссылке и загрузить программу. Если у пользователя уже установлен VirtualBox, он может выбрать версию Virtualbox edition. После скачивания необходимо войти в систему на главном экране и принять правила использования программы, чтобы начать свою работу.
Создание виртуальной машины Android (AVM)
После входа в систему пользователь увидит пустой экран с 5 различными опциями на боковой панели и большую кнопку с плюсом. Она и используется для создания виртуальной машины Android. Следует нажать на нее.
После нажатия этой кнопки пользователь увидит следующее окно, на котором его будут ждать различные доступные параметры для настройки спецификаций виртуальной машины. Он может выбрать нужное ему тестовое устройство и Android API, который хочет установить. В данном практическом примере будет использоваться Google Pixel 2 с Android API 28.
Что такое Android API? Android API относится к коллекции программных модулей, имеющих различные версии, которые становятся основой Android SDK. Проще говоря, конкретная версия API будет соответствовать конкретному Android:
Рекомендуется проводить тестирование только на новых API.
Следующий шаг – это настройка количества ядер, оперативной памяти и сетевого режима. Пользователь выбирает 1 ядро, 1 ГБ оперативной памяти и режим NAT для процессинга.
Как только будет нажата кнопка «Установить» («Install»), начнется скачивание соответствующего API, если он еще не доступен в SDK. Только после этого машина будет готова к запуску. Пользователю теперь нужно щелкнуть по ней правой кнопкой мыши и нажать на клавишу «Пуск» («Start»).
Это инициирует запуск виртуального бокса под окном Genymotion. Первое, что нужно сделать, — это запустить сеть на виртуальной машине, щелкнув на значок сигнала.
Далее необходимо включить переключатель и выбрать соответствующий сетевой адаптер, который пользователь хочет использовать. В данном практическом примере соединение Wi-Fi активно, поэтому человек будет выбирать его для виртуальной машины.
Далее следует установить Google Apps на виртуальную машину. Программа предварительно не загружена в API. Приложение понадобится пользователю в ситуациях, когда необходимо загрузить и протестировать приложение из Play Store или использовать какое-либо другое приложение Google на этой виртуальной машине. Чтобы установить Google Apps, надо нажать на кнопку «Открыть GAPPS».
Далее пользователь принимает лицензионное соглашение, и можно двигаться дальше.
ВАЖНО: Во многих сценариях этот тип установки может завершиться неудачно, что приведет к «архивной ошибке». В таких случаях рекомендуется скачать архив Open GApps с сайта, перейдя по этой ссылке.
Пользователь выбрал архитектуру x86 и Android версии 9.0 со стоковым вариантом.
После загрузки пользователь просто перетаскивает архив в окно программы Genymotion, чтобы установить приложения. После установки и перезагрузки человек видит, что приложения Google были успешно установлены.
Дебаггинг или отладка
Пользователь закончил с настройкой нужной ему виртуальной среды. На предыдущих скриншотах читатели, должно быть, заметили IP-адрес виртуальной машины в строке заголовка. В данном случае это 192.168.52.104. Пришло время попробовать подключиться к этой виртуальной машине с помощью Android Debug Bridge (ADB).
Пользователь открывает Kali и вводит следующую команду:
apt install adb
adb connect 192.168.52.104
adb devices -l
Что такое отладка USB? Отладка – это способ взаимодействия Android-устройства с Android SDK через USB-соединение. Она позволяет Android-устройству получать команды и файлы с ПК. Отладка также дает возможность самому компьютеру извлекать важную информацию, такую как файлы журналов, из Android-устройства.
Что такое ADB? Android Debug Bridge – это утилита, которая предоставляет функции отладки для устройств Android. ADB можно использовать для проведения отладки как по USB, так и по TCP. Подробнее об ADB читатели узнают в следующих разделах.
Список команд ADB
Основы
- Shell – как известно, Android имеет ядро Linux. Чтобы создать Shell в подключенном устройстве с помощью ADB, следует использовать команду:
adb connect 192.168.52.104
adb shell
getprop | grep abi
Последняя команда поможет пользователю просмотреть архитектуру используемого устройства.
- Установка APK на устройство
Допустим, у пользователя уже есть APK-файл, хранящийся в папке загрузок его системы, который он хочет установить на одно из устройств. Была скачана DIVA по этой ссылке. Можно сделать это в ADB с помощью следующей команды:
cd Downloads/
tar -xvf diva-beta.tar.gz
adb install diva-beta.apk
И, действительно, приложение было установлено на устройство.
- Просмотр установленных приложений
Все приложения, установленные на устройстве, хранятся в папке /data/data. Итак, пользователь просто перейдет к папке и посмотрит 10 последних установленных приложений.
adb shell
cd data/data/
ls | tail -10
- Запуск и остановка служб ADB
Это делается очень просто с помощью следующих двух команд:
adb start-server
adb kill-server
Следует обратить внимание, что многие команды в данном практическом примере требуют от пользователя прав Root на устройстве Android. Следовательно, пользователь запускает ADB с нужными разрешениями. Чтобы открыть программу, имея права Root, человеку следует ввести следующую команду:
adb root
Чтобы вернуться обратно и стать пользователем без прав Root, пригодится следующая команда:
adb unroot
Журналы
Для мониторинга журналов устройства пользователь будет использовать инструмент Logcat.
adb logcat
Как читатели могут заметить, теперь видны все типы журналов. Пользователь вводит номер кредитной карты в одно из полей в DIVA. На экране видно, что есть уязвимость в одном из представленных журналов.
Человек может изучить много других фильтров и опций в Logcat. Они находятся под man-страницей. Среди этих дополнительных параметров есть приоритизация журналов, запись журналов, сброс журналов, перемещение файлов журналов.
Возможные действия с файлами
Чтобы скопировать файл из компьютера на Android и наоборот – из Android на ПК, можно использовать команды ADB «Push» и «Pull». К примеру, стоит начать с копирования файла на Android-устройство:
echo "Say my name" > file.txt
adb push file.txt /sdcard/
Чтобы убедиться, что файл был перенесен в папку /sdcard/, пользователь удаляет исходный файл, предварительно скопировав его, и получает к нему доступ в другой папке.
rm file.txt
adb pull /sdcard/file.txt /home/kali/Downloads/new_file.txt
cat new_file.txt
Инструмент PM
- Листинг. Управление пакетами в Android относится к управлению всеми установленными пакетами либо приложениями в системе. К примеру, имя пакета приложения DIVA – это jakhar.aseem.diva, как видно на приведенной ниже команде list packages:
adb shell pm list packages | tail -10
- Список системных приложений. Есть определенные фильтры, которые пользователь может применить для сортировки этих пакетов. Например, отобразить на экране список всех системных приложений:
adb shell pm list packages -s
- Список сторонних приложений. Аналогично, чтобы просмотреть все сторонние приложения, есть специальная команда:
adb shell pm list packages –3
- Очистка данных приложений. Этот процесс аналогичен переходу в настройки и удалению там данных приложения. Для этого есть следующая команда:
adb shell pm clear jakhar.aseem.diva
- Отображение пути установки пакета. Это может быть осуществлено с помощью инструмента PM, к примеру:
adb shell pm path jakhar.aseem.diva
Инструмент Dumpsys
- Просмотр запущенных служб в пакете. Пользователь может сделать это с помощью команды Dumpsys в Shell. Dumpsys – это инструмент, который работает на устройствах Android и предоставляет информацию о системных службах. Их можно вызвать из командной строки с помощью команд ADB. Просмотр запущенных служб в пакете возможен, если ввести следующую команду:
adb shell dumpsys activity services jakhar.aseem.diva
Интересный факт: здесь показаны службы, связанные с работой пакета DIVA. Если пользователь введет ту же команду, но без имени пакета, то будут выведены на экран все существующие службы.
- Извлечение информации о пакете. Пакет будет иметь такие компоненты, как действия, активности, контент-провайдеры. Для просмотра информации о конкретном пакете пользователь использует следующую команду:
adb shell dumpsys package jakhar.aseem.diva
- Просмотр активности на главном экране. Действия, которые в данный момент осуществляются непосредственно на главном экране, могут быть просмотрены с помощью следующей команды:
adb shell dumpsys activity activities | grep mResumedActivity
- Информация о действиях в определенном пакете. Чтобы просмотреть подробную информацию о действиях, таких как текущая, но приостановленная активность, история всех осуществлённых операций, следует ввести следующую команду:
adb shell dumpsys activity activities | grep jakhar.aseem.diva
- Просмотр запущенных служб в пакете. Имя пакета является необязательным в данной команде, так как это откроет запущенные службы, связанные только с ним:
adb shell dumpsys activity services jakhar.aseem.diva
- Просмотр подробной информации о пакете. Пакет содержит множество деталей, таких как компоненты, информация о разрешениях, имя версии и код. Для просмотра подробной информации о пакете необходимо ввести эту команду:
adb shell dumpsys package jakhar.aseem.diva
Инструмент AM
Любая страница, закодированная в Java, выполняет конкретную задачу. Интересно то, что эти действия также могут быть воспроизведены с помощью команд ADB. Многие из данных функций выполняются с помощью инструмента под названием AM, который установлен в Android для предоставления информации об активности устройства.
- Запуск активности. Чтобы выполнить действие, пользователь введет следующую команду:
adb shell am start -n jakhar.aseem.diva/.APICredsActivity
adb shell am start -n jakhar.aseem.diva/.APICreds2Activity
Это запускает такую активность, как APICredsActivity:
И еще одну активность тоже:
- Остановка работы определенной службы. Чтобы прекратить работу нужной службы, пользователь использует следующую команду:
adb shell am stopservice -n com.android.systemui/.SystemUIService
Эта команда остановит работу пользовательского интерфейса системы. Человек будет видеть пустой экран, пока он не запустит эту службу снова с помощью данной команды:
adb shell am startservice -n com.android.systemui/.SystemUIService
Другие команды
- Захват скриншота. Screencap – это удобный инструмент, установленный в Android для создания скриншотов. Этот инструмент может быть вызван с помощью команд ADB:
adb shell screencap /sdcard/ss_2.png
Пользователь также может настроить локальный путь, где будет храниться скриншот. В данном практическом примере был добавлен sdcard/ в качестве пути. Пользователь открывает эту папку, чтобы найти там файл «ss_2.png»:
- Запись экрана. Точно так же, как можно сделать скриншоты, запись экрана возможна с помощью инструмента Screenrecord в Android. Нужно воспользоваться следующей командой:
adb shell screenrecord /sdcard/demo.mp4 --size 400x400 --bit-rate 200000 --time-limit 5 --rotate --verbose
- /sdcard/demo.mp4 – путь, по которому сохранится видео;
- size – размер в формате «высота на ширину» в пикселях, в котором будет записываться видео;
- bit-rate – установление битрейта видео;
- time-limit – максимальное время, которое выделяется для записи экрана;
- rotate – определяет ориентацию видео по умолчанию, может быть настроена запись видео под определенным углом.
Пользователь увидит записанное видео примерно вот так:
- Просмотр идентификатора процесса в пакете. С точки зрения пентестера важно знать идентификатор процесса пакета приложения. Данную информацию можно получить с помощью команды:
adb shell pidof jakhar.aseem.diva
Например, пользователь должен проверить журналы этого пакета. Он может отфильтровать его с помощью GREP и PID:
adb logcat | grep 7399
- Просмотр характеристик батареи устройства. Вся информация, от напряжения до уровня заряда телефона, может быть получена пользователем с помощью команды:
adb shell dumpsys battery
Пользователь также может «поиграть» с уровнем заряда батареи с помощью следующей команды:
adb shell dumpsys battery set level 0
Конечно же, стоит взглянуть, как теперь себя чувствует батарея телефона:
- Ключевые события Android. Каждый ключ в Android описывается последовательностью ключевых событий:
Стоит попробовать команду «keyevent 3». Вот страница с открывшейся случайной активностью:
Теперь используется команда для отправки ключевого события номер 3:
adb shell input keyevent 3
После выполнения команды пользователь нажал на кнопку «Домой». Экран его устройства выглядит следующим образом:
- Просмотр журналов ядра. Чтобы просмотреть журналы ядра в целях тестирования, можно ввести следующую команду:
adb shell dmesg
Список будет слишком длинным, поэтому показаны первые 20 журналов:
adb shell dmesg | head -20
- Перечисление устройства
Чтобы узнать модель телефона, к которому подключен пользователь, можно использовать инструмент Getprop в Android:
adb shell getprop ro.product.model
Инструмент WM в Android предоставляет информацию о Windows. Чтобы узнать разрешение окна программы, используется следующая команда:
Чтобы получить информацию о дисплее, например DPI, идентификационный номер дисплея, пользователь введет следующую команду:
adb shell dumpsys window displays
Человек также может изменить разрешение экрана с помощью инструмента WM, используя следующую команду:
adb shell wm size 480x1024
adb reboot
- Размер устанавливается в пикселях
После перезагрузки окно будет выглядеть следующим образом:
- Номер Secure Android ID и IMEI. Secure Android ID – это 64-битный номер, который генерируется при первой загрузке устройства. Он также доступен в настройках телефона и остается неизменным. IMEI же – это уникальный телефонный номер. Их можно просмотреть с помощью следующих команд:
adb shell settings get secure android_id
adb shell dumpsys iphonesubinfo
Заключение
В этой статье читатели узнали, как настроить среду для пентестинга на их ПК с помощью эмулятора Android Genymotion. В нем можно выполнять различные задачи с помощью инструмента ADB, который был установлен в Kali. Теперь с легкостью можно протестировать свое устройство, определив его слабые и сильные стороны, а также изменив настройки в соответствии с имеющимися потребностями.
Автор переведенной статьи: Harshit Rajpal.
ЧИТАТЬ ВСЕ СТАТЬИ НА САЙТЕ | ПОДПИСЫВАЙТЕСЬ НА НАШ TELEGRAM КАНАЛ