Найти тему

Руководство по установке лаборатории для пентестинга Android и список команд ADB

Оглавление

В этой статье пойдет речь о том, как установить лабораторию для пентестинга Android. Будет также приведен список команд ADB, которые помогут пользователю использовать свой телефон в полную мощь.

Чтобы освоить азы пентестинга Android, была создана среда Android Pentest на компьютере. Следует отметить, что подобную практику можно проводить и на телефоне с включенной функцией отладки USB, но в данной статье будет использоваться именно виртуальная машина Android, также известная как эмулятор Android.

Genymotion – это один из сотни существующих на рынке эмуляторов Android, доступных для скачивания. Его функции могут быть очень полезны для пентестинга Android. Программа проста в настройке, предлагает поддержку команд ADB и Google Apps. Пользователь будет использовать Genymotion, чтобы осуществить все практические действия, описанные в этой статье, но любой другой человек может взять иной эмулятор, который имеет базовый функционал, похожий на Genymotion.

Установка виртуальной среды

Чтобы бесплатно скачать Genymotion, следует перейти по ссылке и загрузить программу. Если у пользователя уже установлен VirtualBox, он может выбрать версию Virtualbox edition. После скачивания необходимо войти в систему на главном экране и принять правила использования программы, чтобы начать свою работу.

-2

Создание виртуальной машины Android (AVM)

После входа в систему пользователь увидит пустой экран с 5 различными опциями на боковой панели и большую кнопку с плюсом. Она и используется для создания виртуальной машины Android. Следует нажать на нее.

-3

После нажатия этой кнопки пользователь увидит следующее окно, на котором его будут ждать различные доступные параметры для настройки спецификаций виртуальной машины. Он может выбрать нужное ему тестовое устройство и Android API, который хочет установить. В данном практическом примере будет использоваться Google Pixel 2 с Android API 28.

-4

Что такое Android API? Android API относится к коллекции программных модулей, имеющих различные версии, которые становятся основой Android SDK. Проще говоря, конкретная версия API будет соответствовать конкретному Android:

-5

Рекомендуется проводить тестирование только на новых API.

Следующий шаг – это настройка количества ядер, оперативной памяти и сетевого режима. Пользователь выбирает 1 ядро, 1 ГБ оперативной памяти и режим NAT для процессинга.

-6

Как только будет нажата кнопка «Установить» («Install»), начнется скачивание соответствующего API, если он еще не доступен в SDK. Только после этого машина будет готова к запуску. Пользователю теперь нужно щелкнуть по ней правой кнопкой мыши и нажать на клавишу «Пуск» («Start»).

-7

Это инициирует запуск виртуального бокса под окном Genymotion. Первое, что нужно сделать, — это запустить сеть на виртуальной машине, щелкнув на значок сигнала.

-8

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

-9

Далее следует установить Google Apps на виртуальную машину. Программа предварительно не загружена в API. Приложение понадобится пользователю в ситуациях, когда необходимо загрузить и протестировать приложение из Play Store или использовать какое-либо другое приложение Google на этой виртуальной машине. Чтобы установить Google Apps, надо нажать на кнопку «Открыть GAPPS».

-10

Далее пользователь принимает лицензионное соглашение, и можно двигаться дальше.

-11

ВАЖНО: Во многих сценариях этот тип установки может завершиться неудачно, что приведет к «архивной ошибке». В таких случаях рекомендуется скачать архив Open GApps с сайта, перейдя по этой ссылке.

Пользователь выбрал архитектуру x86 и Android версии 9.0 со стоковым вариантом.

-12

После загрузки пользователь просто перетаскивает архив в окно программы Genymotion, чтобы установить приложения. После установки и перезагрузки человек видит, что приложения Google были успешно установлены.

-13

Дебаггинг или отладка

Пользователь закончил с настройкой нужной ему виртуальной среды. На предыдущих скриншотах читатели, должно быть, заметили IP-адрес виртуальной машины в строке заголовка. В данном случае это 192.168.52.104. Пришло время попробовать подключиться к этой виртуальной машине с помощью Android Debug Bridge (ADB).

Пользователь открывает Kali и вводит следующую команду:

apt install adb
adb connect 192.168.52.104
adb devices -l

-14

Что такое отладка 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

Последняя команда поможет пользователю просмотреть архитектуру используемого устройства.

-15
  • Установка APK на устройство

Допустим, у пользователя уже есть APK-файл, хранящийся в папке загрузок его системы, который он хочет установить на одно из устройств. Была скачана DIVA по этой ссылке. Можно сделать это в ADB с помощью следующей команды:

cd Downloads/
tar -xvf diva-beta.tar.gz
adb install diva-beta.apk

-16

И, действительно, приложение было установлено на устройство.

-17
  • Просмотр установленных приложений

Все приложения, установленные на устройстве, хранятся в папке /data/data. Итак, пользователь просто перейдет к папке и посмотрит 10 последних установленных приложений.

adb shell
cd data/data/
ls | tail -10

-18
  • Запуск и остановка служб ADB

Это делается очень просто с помощью следующих двух команд:

adb start-server
adb kill-server

-19

Следует обратить внимание, что многие команды в данном практическом примере требуют от пользователя прав Root на устройстве Android. Следовательно, пользователь запускает ADB с нужными разрешениями. Чтобы открыть программу, имея права Root, человеку следует ввести следующую команду:

adb root

Чтобы вернуться обратно и стать пользователем без прав Root, пригодится следующая команда:

adb unroot

-20

Журналы

Для мониторинга журналов устройства пользователь будет использовать инструмент Logcat.

adb logcat

-21

Как читатели могут заметить, теперь видны все типы журналов. Пользователь вводит номер кредитной карты в одно из полей в DIVA. На экране видно, что есть уязвимость в одном из представленных журналов.

-22

Человек может изучить много других фильтров и опций в Logcat. Они находятся под man-страницей. Среди этих дополнительных параметров есть приоритизация журналов, запись журналов, сброс журналов, перемещение файлов журналов.

Возможные действия с файлами

Чтобы скопировать файл из компьютера на Android и наоборот – из Android на ПК, можно использовать команды ADB «Push» и «Pull». К примеру, стоит начать с копирования файла на Android-устройство:

echo "Say my name" > file.txt
adb push file.txt /sdcard/

-23

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

rm file.txt
adb pull /sdcard/file.txt /home/kali/Downloads/new_file.txt
cat new_file.txt

-24

Инструмент PM

  1. Листинг. Управление пакетами в Android относится к управлению всеми установленными пакетами либо приложениями в системе. К примеру, имя пакета приложения DIVA – это jakhar.aseem.diva, как видно на приведенной ниже команде list packages:

adb shell pm list packages | tail -10

-25
  • Список системных приложений. Есть определенные фильтры, которые пользователь может применить для сортировки этих пакетов. Например, отобразить на экране список всех системных приложений:

adb shell pm list packages -s

-26
  • Список сторонних приложений. Аналогично, чтобы просмотреть все сторонние приложения, есть специальная команда:

adb shell pm list packages –3

-27
  • Очистка данных приложений. Этот процесс аналогичен переходу в настройки и удалению там данных приложения. Для этого есть следующая команда:

adb shell pm clear jakhar.aseem.diva

-28
  • Отображение пути установки пакета. Это может быть осуществлено с помощью инструмента PM, к примеру:

adb shell pm path jakhar.aseem.diva

-29

Инструмент Dumpsys

  1. Просмотр запущенных служб в пакете. Пользователь может сделать это с помощью команды Dumpsys в Shell. Dumpsys – это инструмент, который работает на устройствах Android и предоставляет информацию о системных службах. Их можно вызвать из командной строки с помощью команд ADB. Просмотр запущенных служб в пакете возможен, если ввести следующую команду:

adb shell dumpsys activity services jakhar.aseem.diva

Интересный факт: здесь показаны службы, связанные с работой пакета DIVA. Если пользователь введет ту же команду, но без имени пакета, то будут выведены на экран все существующие службы.

-30
  • Извлечение информации о пакете. Пакет будет иметь такие компоненты, как действия, активности, контент-провайдеры. Для просмотра информации о конкретном пакете пользователь использует следующую команду:

adb shell dumpsys package jakhar.aseem.diva

-31
  • Просмотр активности на главном экране. Действия, которые в данный момент осуществляются непосредственно на главном экране, могут быть просмотрены с помощью следующей команды:

adb shell dumpsys activity activities | grep mResumedActivity

-32
  • Информация о действиях в определенном пакете. Чтобы просмотреть подробную информацию о действиях, таких как текущая, но приостановленная активность, история всех осуществлённых операций, следует ввести следующую команду:

adb shell dumpsys activity activities | grep jakhar.aseem.diva

-33
  • Просмотр запущенных служб в пакете. Имя пакета является необязательным в данной команде, так как это откроет запущенные службы, связанные только с ним:

adb shell dumpsys activity services jakhar.aseem.diva

-34
  • Просмотр подробной информации о пакете. Пакет содержит множество деталей, таких как компоненты, информация о разрешениях, имя версии и код. Для просмотра подробной информации о пакете необходимо ввести эту команду:

adb shell dumpsys package jakhar.aseem.diva

-35

Инструмент AM

Любая страница, закодированная в Java, выполняет конкретную задачу. Интересно то, что эти действия также могут быть воспроизведены с помощью команд ADB. Многие из данных функций выполняются с помощью инструмента под названием AM, который установлен в Android для предоставления информации об активности устройства.

  1. Запуск активности. Чтобы выполнить действие, пользователь введет следующую команду:

adb shell am start -n jakhar.aseem.diva/.APICredsActivity
adb shell am start -n jakhar.aseem.diva/.APICreds2Activity

-36

Это запускает такую активность, как APICredsActivity:

-37

И еще одну активность тоже:

-38
  • Остановка работы определенной службы. Чтобы прекратить работу нужной службы, пользователь использует следующую команду:

adb shell am stopservice -n com.android.systemui/.SystemUIService

Эта команда остановит работу пользовательского интерфейса системы. Человек будет видеть пустой экран, пока он не запустит эту службу снова с помощью данной команды:

adb shell am startservice -n com.android.systemui/.SystemUIService

-39

Другие команды

  1. Захват скриншота. Screencap – это удобный инструмент, установленный в Android для создания скриншотов. Этот инструмент может быть вызван с помощью команд ADB:

adb shell screencap /sdcard/ss_2.png

-40

Пользователь также может настроить локальный путь, где будет храниться скриншот. В данном практическом примере был добавлен sdcard/ в качестве пути. Пользователь открывает эту папку, чтобы найти там файл «ss_2.png»:

-41
  • Запись экрана. Точно так же, как можно сделать скриншоты, запись экрана возможна с помощью инструмента Screenrecord в Android. Нужно воспользоваться следующей командой:

adb shell screenrecord /sdcard/demo.mp4 --size 400x400 --bit-rate 200000 --time-limit 5 --rotate --verbose

-42
  • /sdcard/demo.mp4 – путь, по которому сохранится видео;
  • size – размер в формате «высота на ширину» в пикселях, в котором будет записываться видео;
  • bit-rate – установление битрейта видео;
  • time-limit – максимальное время, которое выделяется для записи экрана;
  • rotate – определяет ориентацию видео по умолчанию, может быть настроена запись видео под определенным углом.

Пользователь увидит записанное видео примерно вот так:

-43
  • Просмотр идентификатора процесса в пакете. С точки зрения пентестера важно знать идентификатор процесса пакета приложения. Данную информацию можно получить с помощью команды:

adb shell pidof jakhar.aseem.diva

Например, пользователь должен проверить журналы этого пакета. Он может отфильтровать его с помощью GREP и PID:

adb logcat | grep 7399

-44
  • Просмотр характеристик батареи устройства. Вся информация, от напряжения до уровня заряда телефона, может быть получена пользователем с помощью команды:

adb shell dumpsys battery

Пользователь также может «поиграть» с уровнем заряда батареи с помощью следующей команды:

adb shell dumpsys battery set level 0

-45

Конечно же, стоит взглянуть, как теперь себя чувствует батарея телефона:

-46
  • Ключевые события Android. Каждый ключ в Android описывается последовательностью ключевых событий:
-47

Стоит попробовать команду «keyevent 3». Вот страница с открывшейся случайной активностью:

-48

Теперь используется команда для отправки ключевого события номер 3:

adb shell input keyevent 3

-49

После выполнения команды пользователь нажал на кнопку «Домой». Экран его устройства выглядит следующим образом:

-50
  • Просмотр журналов ядра. Чтобы просмотреть журналы ядра в целях тестирования, можно ввести следующую команду:

adb shell dmesg

Список будет слишком длинным, поэтому показаны первые 20 журналов:

adb shell dmesg | head -20

-51
  • Перечисление устройства

Чтобы узнать модель телефона, к которому подключен пользователь, можно использовать инструмент Getprop в Android:

adb shell getprop ro.product.model

Инструмент WM в Android предоставляет информацию о Windows. Чтобы узнать разрешение окна программы, используется следующая команда:

Чтобы получить информацию о дисплее, например DPI, идентификационный номер дисплея, пользователь введет следующую команду:

adb shell dumpsys window displays

-52

Человек также может изменить разрешение экрана с помощью инструмента WM, используя следующую команду:

adb shell wm size 480x1024
adb reboot

  • Размер устанавливается в пикселях
-53

После перезагрузки окно будет выглядеть следующим образом:

-54
  • Номер Secure Android ID и IMEI. Secure Android ID – это 64-битный номер, который генерируется при первой загрузке устройства. Он также доступен в настройках телефона и остается неизменным. IMEI же – это уникальный телефонный номер. Их можно просмотреть с помощью следующих команд:

adb shell settings get secure android_id
adb shell dumpsys iphonesubinfo

-55

Заключение

В этой статье читатели узнали, как настроить среду для пентестинга на их ПК с помощью эмулятора Android Genymotion. В нем можно выполнять различные задачи с помощью инструмента ADB, который был установлен в Kali. Теперь с легкостью можно протестировать свое устройство, определив его слабые и сильные стороны, а также изменив настройки в соответствии с имеющимися потребностями.

Автор переведенной статьи: Harshit Rajpal.

ЧИТАТЬ ВСЕ СТАТЬИ НА САЙТЕ | ПОДПИСЫВАЙТЕСЬ НА НАШ TELEGRAM КАНАЛ