Tech Recipe Book
My Services
  • Book
    • About the author
    • Architect
      • Algorithms
        • DB index algorithms
          • How does database indexing work
        • Neural network optimization
          • Neural Network Optimization
        • Route search
          • Road network in a database to build a route
          • Traveling Salesman Problem (TSP)
      • Architecture Frameworks
        • DODAF
        • TOGAF
        • Enterprise Architecture (EA) Tools Reviews 2023 | Gartner
      • Zero Trust
      • Billing
        • SHM billing system
      • Bots
        • Discord
        • Telegram
          • Chat GPT Telegram bot
          • Получаем статистику Telegram-канала при помощи api и python или свой tgstat с регистрацией и смс
          • Как хостить телеграм-бота (и другие скрипты на Python) на Repl.it бесплатно 24/7
          • Создание Telegram бота на PHP #1: основные понятия для работы с API
          • Создание Telegram бота на PHP #2: создание первого бота для Telegram
          • Создание Telegram бота на PHP #3: примеры отправки сообщений с кнопками в Telegram
          • Создание Telegram бота на PHP #4: отправка файлов и изображений в Telegram
          • Создание Telegram бота на PHP #5: работа с хуками
      • Business intelligence
      • Cloud Storage
        • Ceph
        • Virtual Distributed File System
      • Cryptography
        • Open Source PKI Software
        • OpenPGP
          • Email Encryption
          • Kleopatra
          • Miscellaneous Tools
          • Server side applications
      • Message broker
        • Kafka
          • Kafka UI-tools
          • Kafka streams ksqlDb
        • RabbitMQ
      • DB
        • MySQL
          • Auto sharding
          • MariaDB Zabbix monitoring
          • MySQL and MariaDB replication with Zabbix monitoring
        • Postgres
          • HA PostgreSQL with Patroni, Haproxy, Keepalived
          • Mass parallel requests - Greenplum
          • PostgreSQL cluster for development and testing
        • Vitess - Scalable. Reliable. MySQL-compatible. Cloud-native. Database.
      • Identity and Access Management (IDM)
        • FreeIPA - Identity, Policy, Audit
        • FreeIPA as an Enterprise solution
        • Keycloak
          • Keycloak HA cluster
        • Open Identity Platform
        • SSO
          • Keycloak for Java app
          • OpenAM
          • OpenIG
      • Firewall
        • nftables
      • Infrastructure As a Code
        • Ansible
        • IaC Packer Ansible Teraform
        • Installing Jenkins using terraform in Kubernetes in Yandex Cloud with letsencypt
        • Teraform Crosplan Pulumi
        • Yandex IaC solutions
      • Kubernetes
        • Installation
          • Install Kubernetes cluster
          • Deploying a Kubespray cluster to OpenStack using Terraform
          • Kube deploy in Yandex cloud
        • Frameworks
          • Deckhouse
            • LDAP authentification
            • On premise Install
            • Yandex Cloud Install
          • K3S
          • OpenShift OKD
          • RKE2
          • Rancher
            • Rancher Install
        • Auth
          • Keycloak in k8s
          • LDAP
        • GUI management Lens
        • Monitoring
          • Monitoring with Falco
          • Network monitoring
          • Nginx ingress
          • Prometheus Graphana for sample Nodejs app
          • Rsource monitoring Avito
        • Exposing services
          • Exposing Kubernetes Services
          • Cilium BGP
        • CNCF
        • Helm
          • Repositories
            • Artifact Hub | official
            • Bitnami | vmware
          • Awesome helm charts and resources
          • Essential Services for Modern Organizations
          • Security and Compliance
          • Additional charts
        • Isolation
          • vcluster - Virtual Kubernetes Clusters
          • Kiosk
          • KubeArmor
          • Control Plane Hardening
          • Hierarchical namespaces
        • Security Center
          • Minesweeper
          • NeuVector by SUSE
          • SOAR in Kubernetes
          • Security Сenter for Kubernetes
        • Terraform CI security
          • Terraform plan analysis with Checkov and Bridgecrew
          • Yandex Terraform scan
        • Vulnerability management
          • Aqua
          • Sysdig
          • Kyverno
          • GitLab
          • NeuVector by SUSE
        • Image scanning
          • Snyk
          • Sysdig
          • Harbor
          • Trivy
        • Signature verification
          • Sigstore
        • Control plane security
          • Gatekeeper
            • Applying OPA Gatekeeper
          • Kyverno
            • Policy as a code. Kyverno
        • Runtime Security
          • Osquery
          • Falco
          • ClamAV
        • Network security
          • Cilium
          • Control Plane Hardening (API restriction)
          • Network policy recipes
          • Service mesh
            • Istio HA, LoadBalance, Rate limit
          • mTLS Autocert
        • Honeypot
          • Building honeypot using vcluster and Falco
        • Backup
          • Kasten K10
        • Secrets
          • Vault CSI Driver
      • Load Balance
        • Nginx
        • HAProxy
          • Proxy methods
          • HAProxy for RDP
          • Payment gateway A/B test with HAProxy
          • HAPRoxy for Percona or Galera
      • Monitoring
        • Zabbix
          • Apache Zabbix
          • Disc Quota
          • Nginx Zabbix
          • SSL certificates Zabix
          • Zabbix notifications
        • Nagios
          • Datacenter monitoring
        • Prometheus and Grafana
      • Windows
        • Sysmon enhanced Windows audit
        • Sysmon to Block Unwanted File
      • Linux
        • Rsync
        • Debian based
          • Apt-Cacher NG
          • Unattended Upgrades in Debian / Ubuntu
        • RedHat basede
          • RPM Server
        • Logs analysis
        • Build armhf qemu
      • NGFW
      • CI/CD
        • DevSecOps
          • DAST
            • Burp
              • Dastardly
            • StackHawk
            • ZAP and GitHub Actions
          • SAST
            • Checkmarx
            • OSV by Google
            • Snyk
            • SonarQube
        • GitLab Runner in Yandex Cloud
        • Dynamic Gitlab Runners in Yandex Cloud
        • GitLab runner in Kubernetes with Werf
        • Kubernetes deploy strategies
        • Kubernetes highload deploy. part 1
        • Kubernetes highload deploy. part 2
        • Kubernetes Argo Rollouts
        • Jenkins in Kubernetes
        • Ansible Semaphore
        • Image storage, scaning and signing
        • Install WireGuard with Gitlab and Terraform
        • CI/CD example fror small web app
        • Threat matrix for CI CD Pipeline
      • SIEM / SOC
        • Datadog
        • Splunk
          • Splunk — general description
        • MaxPatrol
          • MaxPatrol 8 and RedCheck Enterprise
        • QRadar IBM
        • Cloud Native Security Platform (CNAPP) - Aqua
        • OSSIM | AT&T
          • AlienVault (OSSIM) install
        • Wazuh
        • EDR
          • Cortex XDR | Palo Alto Networks
          • Cynet
          • FortiEDR | Fortinet
          • Elastic
        • Elastic
          • Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 22.04
          • Setting Up Elastic 8 with Kibana, Fleet, Endpoint Security, and Windows Log Collection
        • Threat Intelligence
          • MISP
          • msticpy Microsoft
          • X-Force | IBM
          • Elastic
      • VPN
        • Full-Mesh VPN fastd, tinc, VpnCloud
        • Wireguard
          • WireGuard for Internet access
          • WireGuard on MikroTik and Keenetic
          • WireGuard site to site
        • SoftEther VPN Project
        • Cisco AnyConnect client
        • OpenConnect
        • SSTP python server
      • OS hardening
        • CIS Benchmarks
      • Cloud Providers
      • OpenNebula
        • OpenNebula Edge Cloud - Open Source Cloud & Edge Computing
        • Discover OpenNebula – Open Source Cloud & Edge Computing Platform
        • OpenNebula Multi-Cloud
        • Kubernetes on OpenNebula
        • The Open Source Alternative to Nutanix
        • The Simple Alternative to OpenStack
        • OpenNebula Partner Ecosystem
      • OpenStack
        • Install manual
        • Install with DevStack
      • VM
        • Create a VHD file from a Linux disk
        • Backup / Migration
          • Coriolis
          • Proxmox Backup Server
        • oVirt
        • VMware vCenter
        • Proxmox
      • Docker
        • Container optimization
        • Ubuntu RDP container
      • LXC
        • LXD on Ubuntu 18.04
        • Install, Create and Manage LXC in Ubuntu/Debian
    • Big Data
      • OLAP data qubes
      • Storage and autoscale in Lerua
    • Machine Learning
      • Yandex YaLM 100B. GPT model
      • Kaggle Community Datasts Models
      • AI in video production
      • Image search
      • Chat bots
        • You.com
        • Chat GPT
          • Implementing GPT in NumPy
        • Jailbreak Chat
      • Coding plugins CodeWhisperer
    • Malware
      • Isiaon/Pitraix: Modern Cross-Platform Peer-to-Peer Botnet over TOR
      • theZoo A repository of LIVE malwares
    • Pentest
      • Red Team
        • MITRE ATT&CK matrix
        • C2 Frameworks
          • Brute Ratel C4
          • Cobalt Strike
          • Covenant
          • Havoc Framework
          • Merlin
          • Metasploit
          • Sillenttrinity
          • Sliver
        • Manage and report
          • Dradis Framework
          • Hexway
        • Underground
      • Social engineering
        • Social Engineer Toolkit setoolkit
      • OSINT
        • OSINT for comapny
        • Instagram fishing
      • Forensics
        • Forensics tools
      • Pentesting Methodology
      • Web
      • CI/CD Methodology
      • Cloud Methodology
        • Hacking The Cloud
      • Kubernetes Pentesting
      • Android
        • SSL Unpinning for Android applications
      • iOS
        • SSL unpinning iOS and macOS applications
      • HackBar tool
      • CyberChef Tools
      • Python virtualenv
      • IppSec - YouTube
      • Hacktricks.xyz
    • Compliance
      • 152 ФЗ. Personal data
      • PCI DSS and ГОСТ Р 57580.1-2017
      • Cloud compliance
      • ГОСТ Р 57580.1-2017 для Kubernetes
      • Kubernets as DevSecOps and NIST compliance
      • NIST SP 800-61 cyberincidece control
      • CIS Kubernetes Benchmark v1.6 - RKE2 v1.20
      • CIS Kubernetes Benchmark v1.23 - RKE2
      • Requirements for Russian Banks
      • Tools
        • Chef InSpec
        • Elastic SIEM
    • Asset management
      • CMDBuild
    • Project management
    • Incident management SRE
    • Risk management
      • IT risk management
      • BSI-Standard 200-3
    • Web Dev
      • Cookie security
      • OWASP Top 10 2021
      • Docker nginx php mysql
      • Docker tor hiddenservice nginx
      • Docker Compose wp nginx php mariadb
      • Dependency Checking
        • Nexus Analyzer
        • OWASP dependency-check
      • Yii skeeks cms
      • YiiStudio
    • Art
      • GTK Themes
      • Themes for Xfce Desktop
      • XFCE / Xubuntu Windows 95
      • Moscow events
      • Photo goods
      • Russian style gifts
    • Cryptocurrency
      • News
      • Arbitrage
      • Stocks
      • Exchange aggregators
      • Where to use
      • Prepaid cards
        • BitFree
        • Pyypl Your Money at Your Fingertips
    • IT magazines
      • WIKI and Writeups tools
        • BookStack
        • GitBook
        • MkDocs
        • Wiki.js
        • DokuWiki
    • Languages
    • Learning
      • (ISC)2
        • CISSP
      • Offensive Security
        • OSCP
        • OSEP
        • OSED
      • DevSecOps
        • Certified DevSecOps Professional (CDP)
        • Certified DevSecOps Expert (CDE)
      • Web Security Academy: PortSwigger
    • Relocation
      • London experience
      • IT visas in 2022
      • Remote work
      • Running business in UAE
    • Freenet
      • Independent online services: the philosophy of a free Internet
      • Tor Project Anonymity Online
      • I2P Anonymous Network
    • Services
      • SMS Registration
        • Registering ChatGPT in Russia
      • Local and regional eSIMs for travellers - Airalo
      • Digital busines cards
      • No KYC services and exchanges
Powered by GitBook
On this page
  • Установка стенда
  • Обратите внимание, что для перехвата запросов должна использоваться специально переупакованная версия пакета.
  • //-- установить общесистемный proxy сервер
  • adb shell settings put global http_proxy 10.0.2.2:8080
  • //-- удалить общесистемный proxy сервер
  • adb shell settings put global http_proxy :0
  • Заключение
  • См. также:

Was this helpful?

  1. Book
  2. Pentest
  3. Android

SSL Unpinning for Android applications

Last updated 1 year ago

Was this helpful?

https://habr.com/ru/articles/676618/

Добрый день, меня зовут Дегтярёв Константин, я senior security engineer в Huawei RRI. В этой статье я хотел бы поделиться методами встраивания в трафик мобильных приложений Android.

Во время оценки безопасности мобильных приложений довольно часто возникает необходимость выполнения перехвата веб-запросов. Большинство современных мобильных приложений используют такие компоненты как WebView (webkit), HttpURLConnection, OkHttp, Cronet и другие для связи с бэкенд-сервером. Например, WebView полезен, когда вам нужен расширенный контроль над пользовательским интерфейсом и расширенные параметры настройки, которые позволят вам встраивать веб-страницы в специально разработанную среду для вашего приложения. Эти компоненты используют протоколы HTTP или HTTPS. Если с HTTP все понятно, HTTPS шифруется, поэтому для расшифровки HTTPS-трафика необходима MITM-атака. Для успеха MITM-атаки приложение должно доверять сертификату прокси-сервера MITM. Если сравнивать с аудитом безопасности веб-сайтов, где сертификат MITM прокси-сервера установлен в веб-браузер и все работает гладко, то с мобильным приложением ситуация может быть совершенно иной, потому что большинство современных мобильных приложений не доверяют сертификатам пользователей и даже сертификатам системного уровня Android или IOS.

Установка стенда

Существует два основных подхода при аудите или разработке мобильных приложений. Первый, использовать реальное устройство, второй, использовать эмулятор. В этом случае будет использоваться Android эмулятор от Android Studio.

  1. Установите Android Studio. Дистрибутив можно загрузить с официального сайта здесь.

  2. В Android Studio создайте пустой проект.

  3. Нажмите Сервис → Диспетчер устройств и создайте новое виртуальное устройство Android.

Предлагается следующая конфигурация. Phone → Pixel 3a → Release name - Q, API level 29, x86 ABI. Важное примечание. Эта конфигурация поставляется с Play Store, это означает, что виртуальное устройство Android не будет иметь прав root по умолчанию, но это дает преимущество полноценной версии Android с Play Store. В качестве альтернативы можно выбрать модель устройства, такую как Pixel 3a XL, он не будет поставляться с Play Store, но будет иметь root доступ изначально.

  1. Запустите созданное виртуальное устройство Android.

В этот момент AVD (Android virtual device) готово и тестируемое приложение может быть установлено. Существует два основных метода перехвата HTTPS-трафика приложения:

  1. Установить пользовательский CA сертификат (MITM-сервера) на AVD. Если исследуемое приложение доверяет пользовательским сертификатам или сертификатам системного уровня, это сработает.

  2. Пропатчить запущенное приложение прямо в памяти – выполнить SSL Unpinning.

Опыт показывает, что переупаковка исследуемого приложения, с изменением определений доверенности сертификатов приложения и установкой корневого сертификата сервера MITM (метод 1) не гарантирует успешного перехвата трафика MITM сервером. С другой стороны, SSL Unpinning (метод 2) показал свою высокую надежность и эффективность.

Далее в разделах 6-9 будет описано, как реализовать модификацию определений доверенности сертификатов приложения и как произвести установку корневого сертификата сервера MITM (метод 1).

SSL Unpinning (метод 2) описан в разделе 11 ниже.

  1. Перепаковка Android APK.

6.1 Скачать и установить Portable APK Easy Tool

6.2 В этом примере будет использовано почтовое клиентское приложение Mail.ru (Mail.ru - крупнейший российский почтовый провайдер). Андроид приложение, APK файл, можно скачать с apkmirror.com.

Запустите APK Easy Tool, выберите APK файл приложения ru.mail.mailapp.apk и нажмите кнопку Декомпилировать (Decomple).

6.3 Откройте папку с декомпилированным APK, внутри нее перейдите в папки "res" → "xml".

6.4 Внутри папки xml отредактируйте или создайте файл network_security_config.xml

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

Определите конфигурацию сетевой безопасности в файле AndroidManifest.xml в базовой папке декомпилированного приложения. В теге добавьте атрибут android:networkSecurityConfig, указывающий на новый XML-файл:

Файл AndroidManifest.xml

<application android:allowBackup="true" android:networkSecurityConfig="@xml/network_security_config" ...etc...>

6.5 В APK Easy Tool нажмите кнопку Компилировать (Compile), чтобы восстановить и подписать исправленное приложение и создать новый файл ru.mail.mailapp.apk APK.

  1. Откройте в верхнем меню Вид → Окна Инструментов→ Проводник файлов устройства (View → Tool Windows → Device File Explorer). Выберите подходящую папку на виртуальном устройстве, такую как Downloads, и загрузите в нее перепаеованный APK файл ru.mail.mailapp.apk.

  1. На виртуальном Android-устройстве откройте проводник файлов, найдите загруженный файл APK ru.mail.mailapp.apk и нажмите на него, чтобы установить приложение. Также подтвердите установку из ненадежного источника.

Обратите внимание, что для перехвата запросов должна использоваться специально переупакованная версия пакета.

Далее, пользовательский клоневой сертификат CA с прокси-сервера MITM должен быть установлен на AVD.

  1. Установите сертификат пользователя на устройство Android, чтобы иметь возможность просматривать и перехватывать HTTP/HTTPS трафик исследуемого приложения.

9.1 Экспорт сертификата RootCA из перехватывающего прокси-приложения, например Burp.

9.2 Переименуйте файл сертификата в cacert.crt

9.3 Загрузите сертификат в SDCARD эмулированного устройства.

9.4 В эмулированном устройстве перейдите к: Настройки → Безопасность Шифрование и учетные данные → Установка с SD-карты (Settings → Security → Encryption & Credentials → Install from SD Card). Выберите и установите загруженный файл сертификата casert.crt

9.5 Рекомендуется также установить корневой сертификат CA прокси-сервера MITM на уровне SYSTEM. Для этого используйте модуль Magisk Trust User Certs. Этот модуль копирует все сертификаты уровня USER на уровень SYSTEM.

Для работы этого модуля необходимы root права на AVD с установленным приложением Magisk. Существует приложение rootAVD, которое позволяет легко получить root права на AVD.

  1. Для модификации и перехвата HTTP/HTTPS запросов установите настройки прокси для эмулированного Android-устройства.

Запустите adb.exe и введите следующую команду:

adb shell settings put global http_proxy <адрес>:<порт>

//-- установить общесистемный proxy сервер

adb shell settings put global http_proxy 10.0.2.2:8080

//-- удалить общесистемный proxy сервер

adb shell settings put global http_proxy :0

где <address>:<port> - ip и порт прокси сервера, например Burp.

Каждый экземпляр эмулятора работает за виртуальным роутером/брандмауэром, который изолирует его от сетевых интерфейсов вашего хоста, а также от Интернета. Эмулированное устройство не может видеть ваш хост или другие экземпляры эмулятора в сети. Вместо этого он видит только то, что он подключен через Ethernet к маршрутизатору/брандмауэру.

Виртуальный маршрутизатор для каждого экземпляра управляет адресным пространством сети 10.0.2/24 — все адреса, управляемые маршрутизатором, имеют форму 10.0.2.xx, где xx — число. Адреса внутри этого пространства предварительно распределяются эмулятором/маршрутизатором следующим образом:

Сетевой адрес
Описание

10.0.2.1

Адрес маршрутизатора/шлюза

10.0.2.2

Специальный псевдоним для интерфейса обратной связи хоста (т.е. 127.0.0.1 на вашей машине разработки)

10.0.2.3

Первый DNS-сервер

10.0.2.4 / 10.0.2.5 / 10.0.2.6

Опциональный второй, третий и четвертый DNS-сервер (если есть)

10.0.2.15

Эмуляция сетевого/ethernet-интерфейса устройства

127.0.0.1

Эмулируемый интерфейс шлейфа устройства

  1. Установка сервера Frida

11.1 Загрузите сервер Frida для Android с GitHub.

Версия Frida должна выглядеть как frida-server-$VERSION-android-$ARCH.xz, для последней $VERSION, где $ARCH - это архитектура вашего устройства. Для эмуляторов, это x86 или x86_64, для физических устройств это, вероятно, arm64 (или, возможно, arm, для старых устройств). Извлеките бинарный файл из архива *.xz. Это не распространенный формат сжатия, поэтому вам может понадобиться 7-Zip (Windows) или The Unarchiver (Mac), если у вас их еще нет. Затем скопируйте бинарный файл на устройство, сделайте его исполняемым и запустите сервер от пользователя root.

Если ваша установка AVD без продакшен версии Android (не имеет приложения Goole Play Store), установите Frida с помощью следующих команд:

В случае использования AVD с продакшен версией Android (имеется приложение Goole Play Store) вам нужно сначала запустить скрипт RootAVD. Затем запустите сервер Frida, используя следующие команды:

Запуск сервера Frida на продакшен версиях Android

adb shell # Запуск оболочки на AVD

su # получить права root

setenforce 0 # Отключить selinux

/data/local/tmp/frida-server & # Запуск сервера Frida на устройстве AVD

11.2 Установите Frida на свой компьютер

Установите инструменты интерфейса командной строки Frida на свой компьютер. Требуется установить Python.

Pip install frida-tools

Проверьте установку, запустив frida-ps -U.

11.3 Отключение SSL Pinning с помощью Frida

Получить имя пакета нужного приложения. В этом случае имя пакета - ru.mail.mailapp

Скачать скрипт unpinning frida-ssl-unpinning-script.js

Запустите необходимое приложение, в данном случае Mail.RU – Email APP.

Запуститe frida-script

frida --no-break -U -l./frida-script.js -f ru.mail.mailapp

Это перезапустит приложение на вашем AVD и напечатает ряд библиотек, где была предпринята попытка выполнить SSL Unpinning, с символом [+] для библиотек, которые были успешно исправлены (пропатчены), и [ ] для библиотек, которые не были (как правило, потому что приложение не использует эти библиотеки).

При последующем вызове пропатченных методов вы также увидите сообщение --> Bypassing [pinning method], чтобы узнать, какие API использует это приложение.

  1. Запуск почтового клиентского приложения mail.ru и вход в учетную запись пользователя.

  1. Убедитесь, что перехватывающий прокси (в данном случае Burp) получает HTTP/HTTPS трафик из исследуемого приложения.

Еще один пример из ZAP proxy.

На этом этапе HTTPS-трафик приложения может быть перехвачен и изменён.

Заключение

Мы рассмотрели методы встраивания в HTTPS трафик Android приложений. Метод SSL Unpinning является наиболее надежным, хотя и более сложным в реализации. При помощи SSL Unpinning можно встроиться в трафик любых мобильных приложений будь-то Сбер Банк, HSBC или Facebook.

For contacts and feedback: konstantin.degtiarev5@gmail.com or https://konstantinsecurity.com/

См. также:

  1. Настройка Burp Suite с Android Nougat

  2. Root AVD и установить Magisk

  3. Пользовательские сертификаты модуля Magisk

  4. Рамки, касающиеся возражений

  5. Шпаргалка ADB