Перейти к содержанию

Интеграция с Google Play

Интеграция с Google Play осуществляется через mdast_cli.

Сбор необходимых параметров

Примечание

Поскольку передача учётных данных осуществляется в незащищённом виде, для интеграции с Google Play следует использовать специально выделенный для этих целей сервисный Google-аккаунт. Двухфакторная аутентификация для аккаунта должна быть отключена.

Аутентификация в Google Play выполняется с помощью токена. Поддерживаются два варианта:

  • OAuth2 Token (значение вида oauth2_4/…) — используется при первом запуске. По нему скрипт автоматически получает AAS-токен;
  • AAS Token (значение вида aas_et/…) — используется при последующих запусках вместо OAuth2-токена, что позволяет избежать повторной аутентификации.

Внимание

Требуется токен аутентификации Android-устройства в Google, а не OAuth2-токен из Google Cloud Console: значение вида ya29.… из GCP в этом сценарии не подойдёт. Токены OAuth2 Token и AAS Token являются секретами — храните их в защищённом хранилище секретов CI/CD (например, Vault, переменные GitLab CI) и не размещайте в репозитории или в открытых логах пайплайна.

Получение OAuth2-токена. Чтобы получить OAuth2 Token:

  1. В браузере войдите под сервисным Google-аккаунтом, который будет использоваться для интеграции.
  2. Откройте embedded-страницу входа Google: https://accounts.google.com/EmbeddedSetup — и пройдите вход (адрес электронной почты и пароль).
  3. Откройте инструменты разработчика браузера (DevTools), перейдите на вкладку Application и выберите пункт Cookies.
  4. Скопируйте значение cookie oauth_token для домена google.com (значение начинается с oauth2_4/).

Полученное значение передаётся в параметре --google_play_oauth2_token.

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

  • distribution_system — для Google Play указывается значение google_play;
  • google_play_package_name — имя скачиваемого пакета. Чтобы узнать имя пакета приложения, откройте его страницу в Google Play — имя пакета является частью URL (параметр id);

  • google_play_email — адрес электронной почты аккаунта Google;

  • токен аутентификации — google_play_oauth2_token (при первом запуске) или google_play_aas_token (при последующих запусках).

Дополнительно можно указать необязательные параметры:

  • google_play_file_name — имя, с которым будет сохранён скачиваемый файл;
  • google_play_proxy — конфигурация прокси.

Получение AAS-токена. При первом запуске передайте адрес электронной почты и OAuth2-токен в параметре --google_play_oauth2_token. По нему скрипт автоматически получит долгоживущий AAS-токен и выведет его в лог в виде строки AAS token: aas_et/…. Скопируйте это значение — в дальнейшем его следует передавать в параметре --google_play_aas_token вместо OAuth2-токена.

Пример первого запуска (получение AAS-токена по OAuth2-токену).

mdast_cli -d \
    --distribution_system google_play \
    --google_play_package_name org.telegram.messenger \
    --google_play_email ********@gmail.com \
    --google_play_oauth2_token "oauth2_4/********"

Пример запуска скрипта

Примечание

Более подробная информация об остальных параметрах запуска скрипта приведена в разделе «Системы CI/CD/Параметры запуска».

После сбора необходимых параметров можно, запустив скрипт, скачать приложение и начать его ручное сканирование. Для повторных запусков используется сохранённый AAS-токен.

python mdast_cli/mdast_scan.py \
  --profile_id 1337 \
  --architecture_id 1 \
  --distribution_system google_play \
  --url "https://saas.mobile.appsec.world" \
  --company_id 1 \
  --token 5d5f6c98*********487a68ee20d4562d9f \
  --google_play_package_name com.instagram.android \
  --google_play_email ********@gmail.com \
  --google_play_aas_token "aas_et/********" \
  --google_play_file_name best_apk_d0wnl04d3r

В результате приложение будет скачано в папку downloaded_apps под именем best_apk_d0wnl04d3r.apk, а также запустится ручное сканирование.

Примечание

Если приложение опубликовано в формате split apk, будет скачан zip-архив, который также может использоваться для проведения DAST-анализа.

К началу