1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-lpad-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ch2.md 22 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 08:13 4342e40

Глава 2. Подготовка экспериментальной среды

Автор: Aditya Gupta

Переводчик: Летучий дракон

Протокол: CC BY-NC-SA 4.0

В предыдущей главе мы узнали об основах безопасности Android и его структуре. В этой главе мы узнаем, как создать экспериментальную среду для тестирования на проникновение в Android, включая загрузку и настройку Android SDK и Eclipse. Мы подробно рассмотрим ADB и узнаем, как создавать и настраивать виртуальные устройства Android (AVD).

2.1 Создание среды разработки

Чтобы создать приложение для Android или создать виртуальное устройство Android, нам нужно настроить среду разработки, чтобы запускать эти приложения. Поэтому первое, что нам нужно сделать, это загрузить Java Development Kit (JDK), который включает в себя Java Runtime Environment (JRE):

  1. Чтобы загрузить JDK, нам необходимо перейти на сайт http://www.oracle.com/technetwork/java/javase/downloads/index.html и загрузить JDK 7 в соответствии с нашей платформой.

    Это так же просто, как скачать и запустить исполняемый файл. На следующем скриншоте вы можете увидеть, что у меня установлена Java на моей системе:

  2. Как только мы загрузим и установим JDK, нам нужно установить переменные среды в нашей системе, чтобы мы могли выполнять Java из любого пути.

    Для пользователей Windows нам нужно щёлкнуть правой кнопкой мыши по значку «Мой компьютер» (My Computer) и выбрать «Свойства» (Properties).

  3. Далее нам нужно выбрать «Дополнительные параметры системы» (Advanced system settings) из списка в верхней панели вкладок:

  4. Как только мы войдём в диалоговое окно «Системные свойства» (System Properties), мы можем увидеть опцию «Переменные среды...» (Environment Variables...) в правом нижнем углу. Когда мы нажимаем на неё, мы видим ещё одно окно, содержащее системные переменные и их значения в разделе «Системные переменные» (System variables):

  5. В новом всплывающем диалоговом окне нам нужно нажать на текстовое поле «PATH» под «Variables» и ввести путь к папке установки Java:

    Для Mac OS X нам нужно отредактировать файл /.bash_profile и добавить путь Java к переменной PATH.

    На Linux-машине нам нужно отредактировать файл ./bashrc и добавить строку переменных окружения. Вот команда:

    $ nano ~/.bashrc
    $ export JAVA_HOME=`/usr/libexec/java_home -v 1.6` or export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

    Вы также можете проверить, правильно ли установлена и настроена Java, выполнив следующую команду из терминала:

    $ java --version
  6. После того как мы загрузили и настроили переменные среды Java, следующим шагом будет загрузка пакета Android ADT, предоставленного на сайте http://developer.android.com/sdk/index.html.

    Пакет ADT — это полный пакет, подготовленный командой Android, включающий в себя настроенные плагин ADT, инструменты Android SDK, инструменты платформы Android, последнюю версию платформы Android и образы системы Android для эмулятора. Это значительно упрощает процесс загрузки и настройки Eclipse с помощью Android SDK, поскольку всё уже предварительно настроено.

  7. После загрузки пакета ADT мы можем распаковать его и открыть папку Eclipse.

  8. При запуске пакет ADT попросит нас настроить рабочую область Eclipse. Рабочая область — это место, где будут храниться все проекты разработки приложений для Android и их файлы. В этом случае я сохранил всё по умолчанию и выбрал флажок «Использовать это по умолчанию и не спрашивать меня снова» (Use this as the default and do not ask me again):

  9. Как только он полностью запустится, мы можем продолжить создание виртуальных устройств Android. Виртуальные устройства Android — это конфигурации эмуляторов для определённой версии Android. Эмулятор — это виртуальное устройство, предоставляемое вместе с пакетом программного обеспечения Android SDK, с помощью которого разработчики могут запускать приложения для реальных устройств и взаимодействовать с ними. Это также полезно для разработчиков, которые хотят создавать приложения для Android, но не имеют реального устройства.

Примечание

Здесь стоит отметить интересную особенность: в Android эмулятор работает на ARM, и всё, что он делает, точно такое же, как и на реальном устройстве. Однако в iOS наш эмулятор является лишь имитирующей средой и не имеет всех одинаковых компонентов и платформы.

2.2 Создание виртуальных устройств Android

Для создания виртуальных устройств Android нам нужно выполнить следующие шаги:

  1. Перейдите в верхнюю панель Eclipse и нажмите на значок устройства рядом с иконкой Android. Это откроет новое окно диспетчера виртуальных устройств Android (Android Virtual Device Manager), которое содержит список всех виртуальных устройств. Это хороший выбор, и мы можем создать новое виртуальное устройство, нажав кнопку «Создать» (New).

  2. Мы также можем запустить виртуальное устройство Android с помощью команды android и доступа к инструментам, а затем управлять AVD, или мы можем просто указать имя AVD и использовать команду эмулятора -avd [avd-name], чтобы запустить конкретное виртуальное устройство.

    Это откроет новое окно, которое содержит все атрибуты, необходимые для настройки виртуального устройства Android (пока не создано). Мы настроим все опции, как показано на следующем скриншоте:

  3. Как только мы нажмём «ОК» и вернёмся в окно диспетчера AVD, мы увидим наше новое созданное виртуальное устройство AVD.

  4. Теперь мы можем выбрать новое виртуальное устройство и нажать «Запустить...» (Start...), чтобы запустить наше созданное виртуальное устройство.

    Может потребоваться некоторое время для загрузки при первом использовании, так как оно настраивает все аппаратные и программные конфигурации, чтобы дать нам опыт, похожий на настоящий телефон.

  5. Для экономии времени запуска виртуального устройства в предыдущих конфигурациях выбор «Снимок» (Snapshot) также является хорошим выбором.

  6. Как только устройство загрузится, теперь мы можем получить доступ к нашему приглашению командной строки и использовать команду android для проверки конфигурации устройства. Этот двоичный файл находится в папке /sdk/tools в каталоге установки adt-bundle.

  7. Нам также нужно установить расположение папок tools и platform-tools в папке sdk, как мы делали с переменными среды ранее.

  8. Чтобы получить подробную информацию о конфигурации нашего подключённого (или загруженного) устройства, мы можем использовать следующую команду:

    android list avd

    Мы можем видеть в следующем скриншоте, что вывод команды показывает список всех существующих виртуальных устройств Android в нашей системе:

  9. Теперь мы продолжим использовать ADB или Android Debug Bridge, чтобы начать использовать устройство, которое мы видели в предыдущей главе. Мы также можем использовать команду emulator -avd [avdname] в терминале для запуска эмулятора.

2.3 Инструменты для тестирования проникновения в Android

Теперь давайте подробнее рассмотрим некоторые полезные инструменты для тестирования проникновения в Android, такие как Android Debug Bridge (ADB), Burp Suite и APKTool.

Android Debug Bridge

Android Debug Bridge — это клиент-серверное приложение, позволяющее пользователям взаимодействовать с эмулятором или подключенным устройством Android. Он включает в себя клиент (работает на системе), сервер обработки связи (также работает на системе) и сторожевой процесс, работающий как фоновый процесс на эмуляторе и устройстве. Клиент использует порт по умолчанию 5037 для связи ADB, а устройство использует порты от 5555 до 5585.

Давайте продолжим и начнём взаимодействовать с запущенным эмулятором, используя команду adb devices. Она покажет, что эмулятор запущен и работает, и подключено к ADB:

C:\Users\adi0x90\Downloads\adt-bundle\sdk\platform-tools>adb devices
List of devices attached
emulator-5554   device

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

C:\Users\adi0x90\Downloads\adt-bundle\sdk\platform-tools>adb kill-server

C:\Users\adi0x90\Downloads\adt-bundle\sdk\platform-tools>adb start-server
* daemon not running. **Запуск на порту 5037 *daemon успешно запущен*:**

Мы также можем использовать инструмент `pm` (менеджер пакетов) для получения списка всех установленных пакетов программного обеспечения. Это можно сделать в ADB с помощью команды:

adb shell pm list packages


Как показано на скриншоте ниже, мы получим список всех установленных на устройстве пакетов программного обеспечения, что может быть полезно на последующих этапах:

**Изображение 2-3-1.**

Кроме того, мы можем использовать команду `dumpsys meminfo`, а затем `adb shell` для получения списка всех приложений и их текущего использования памяти:

**Изображение 2-3-2.**

Также мы можем получить `logcat` (инструмент для чтения журнала событий Android-устройства) и сохранить его в определённом файле вместо вывода на терминал:

adb logcat -d -f /data/local/logcats.log

Здесь флаг `-d` указывает на сохранение полного файла журнала и выход, а флаг `-f` — на запись в файл вместо вывода на экран. Здесь мы используем местоположение `/data/local`, а не какое-либо другое, потому что это место доступно для записи на большинстве устройств.

Ещё мы можем использовать команду `df` для проверки файловой системы, доступного пространства и размера:

**Изображение 2-3-3.**

В Android SDK есть ещё один замечательный инструмент под названием MonkeyRunner. Этот инструмент используется для автоматизации и тестирования Android-приложений, вплоть до взаимодействия с ними. Например, чтобы использовать 10 автоматизированных касаний, нажатий и событий для тестирования приложения, мы можем выполнить команду `monkey 10` в `adb shell`:

root@generic:/ # monkey 10 monkey 10 Events injected: 10

Network stats: elapsed time=9043ms (0ms mobile, 0ms wifi, 9043ms not connected)

Это некоторые полезные инструменты и команды, которые мы можем использовать в ADB. Теперь мы продолжим загружать другие инструменты, которые нам понадобятся позже.

### Burp Suite

Одним из самых важных инструментов, который мы будем использовать в следующем разделе, является Burp Proxy. Мы будем использовать его для перехвата и анализа сетевого трафика. Многие уязвимости безопасности в приложениях могут быть оценены и обнаружены путём анализа перехваченных данных о трафике. Для этого выполните следующие шаги:

1. Сейчас мы загрузим Burp Proxy с официального сайта `http://portswigger.net/burp/download.html`. После загрузки и установки вам нужно открыть окно Burp, как показано на следующем скриншоте. Вы также можете установить Burp с помощью следующей команды:
    ```
    java –jar burp-suite.jar
    ```
На следующем снимке экрана видно, что мы запустили Burp и отобразили интерфейс по умолчанию:

**Изображение 2-3-4.**

3. В инструменте Burp Suite нам нужно настроить параметры прокси, нажав на вкладку `Proxy` и перейдя на вкладку `Options`.

4. На вкладке `Options` мы видим, что выбраны параметры по умолчанию, то есть `127.0.0.1:8080`. Это означает, что весь трафик, отправляемый с нашего системного порта `8080`, будет перехвачен Burp Suite и показан в его окне.

5. Нам также нужно проверить скрытые параметры прокси, выбрав параметр по умолчанию `127.0.0.1:8080` и нажав кнопку `Edit`.

6. Далее нам нужно перейти на вкладку `Request handling` и установить флажок `Support invisible proxying (enable only if needed)`:

**Изображение 2-3-5.**

7. Наконец, мы запускаем прокси с параметром `invisible`:

**Изображение 2-3-6.**

8. После настройки прокси мы запустим наш эмулятор с недавно настроенным прокси. Мы будем использовать следующую команду эмулятора для использования опции `http-proxy`:

    ```
    emulator -avd [name of the avd] -http-proxy 127.0.0.1:8080
    ```
Ниже вы можете увидеть, как выглядит команда:

**Изображение 2-3-7.**

Таким образом, мы настроили Burp Proxy и эмулятор, в результате чего весь трафик эмулятора теперь проходит через Burp. Здесь вы можете столкнуться с проблемами при доступе к сайтам, использующим SSL, и мы рассмотрим эти проблемы в следующих разделах.

### APKTool

APKTool — это один из наиболее важных инструментов для обратного проектирования Android, предназначенный для сторонних и закрытых двоичных приложений Android. Этот инструмент станет одним из основных в будущих главах, посвящённых обратному проектированию и анализу вредоносного ПО. Чтобы начать использовать APKTool, выполните следующие действия:

1. Чтобы загрузить APKTool, перейдите на сайт `https://code.google.com/p/android-apktool/downloads/list`.

Здесь нам нужно скачать два файла: `apktool1.5.3.tar.bz2`, который содержит основной двоичный файл apktool, и другой файл, зависящий от платформы — Windows, Mac OS X или Linux.

2. После загрузки и настройки для удобства мы также должны добавить APKTool в наши переменные среды. Кроме того, лучше всего установить APKTool как переменную среды или сначала установить его в `/usr/bin`. Затем мы сможем запустить APKTool из терминала, как показано ниже:

**Изображение 2-3-8.**

## Заключение

В этой главе мы использовали Android SDK, ADB, APKTool и Burp Suite для создания среды тестирования на проникновение Android. Это самые важные инструменты, с которыми должен быть знаком тестировщик на проникновение Android.

В следующей главе мы узнаем, как выполнять обратное проектирование и аудит Android-приложений. Мы также будем использовать некоторые инструменты, такие как APKTool, dex2jar, jd-gui и несколько собственных команд.
1
https://api.gitlife.ru/oschina-mirror/wizardforcel-lpad-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-lpad-zh.git
oschina-mirror
wizardforcel-lpad-zh
wizardforcel-lpad-zh
master