- Another android ssl certificate pinning bypass for various methods
- Digital certificate
- Downloading the certificate :
- How ssl works?
- Pining using certificate:
- Pinning the certificate
- Ssl pinning in ios
- Why do you need ssl certificate pinning?
- Безопасность ios-приложений (часть 36) – обход certificate pinning при помощи ssl kill switch
- Реверс apk
- Сбор информации
Another android ssl certificate pinning bypass for various methods
Digital certificate
A certificate is a file that encapsulates information about the server that owns the certificate. It’s similar to an identification card, such as a passport or a driver license. The structure of certificate uses X.509 standards. X.509 is defined by the International Telecommunication Unions’s standardisation sector. A Certificate Authority(CA) can issue a certificate or it can be self-signed
A Digital Certificates holds many informations –
Downloading the certificate :
Go to the web browser and open www.google.co.uk. When you will open this link you will see the lock icon in the top search bar. Just click on this, you will see one popup, click on show certificate. Drag and drop certificate in your desktop. Please chek below images for the same.
Now just change the name of certificate as per your choice. I have named it google.cer an example project(SSLPinning). Just put this in-app bundle.
How ssl works?
- Client machine sends a connection request to server, server listens the request.
- Server gives response including public key and certificate.
- Client checks the certificate and sends a encrypted key to server.
- Server decrypt the key and sends encrypted data back to the client machine.
- Client receives and decrypt the encrypted data.
Pining using certificate:
First of all we will download the certificate for www.google.co.uk.
Pinning the certificate
Now in ViewController just go and write the logic of calling API.
Ssl pinning in ios
There are many popular options to perform SSL pining in iOS. These are- URLSession, AlamoFire, AFNetworking, TrustKit. We can implement Certificate pinning as well as public-key pining using URLSession,AlamoFire, AFNetworking but if you are using TrustKit then you can only do public key pinning.
We will use URLSession for Pining in this tutorial. We will use google.co.uk as URL for pining in example project.
Why do you need ssl certificate pinning?
SSL pinning allows the application to only trust the valid or pre-defined certificate or Public Key. The application developer uses SSL pinning technique as an additional security layer for application traffic. As normally, the application trusts custom certificate and allows the application to intercept the traffic.
Restricting the set of trusted certificates through pinning prevents attackers from analyzing the functionality of the app and the way it communicates with the server.
Безопасность ios-приложений (часть 36) – обход certificate pinning при помощи ssl kill switch
Безопасность IOS-приложений (часть 36) – Обход certificate pinning при помощи SSL Kill Switch
В этой статье мы рассмотрим анализ сетевого трафика у приложений, использующих технологию certificate pinning.
Автор: Prateek Gianchandani
В этой статье мы рассмотрим анализ сетевого трафика у приложений, использующих технологию certificate pinning. Одно из наиболее удачных толкований certificate pinning указано ниже (взято отсюда).
По умолчанию при инициации SSL-соединения клиент проверяет, что сертификат сервера:
- имеет проверяемую цепочку сертификатов до достоверного (корневого) сертификата.
- соответствует имени хоста.
Хотя, клиент не проверяет, является ли текущий сертификат именно тем, который использует сервер.
Проверка на соответствие между сертификатами на устройстве и на удаленном сервере потенциально является брешью в системе безопасности. Все дело в том, что хранилище сертификатов на устройстве может быть легко скомпрометировано; пользователь может установить небезопасные сертификаты, тем самым ставя себя под угрозу стать жертвой атак типа «человек посередине» (man–in–the–middleattacks). Технология certificate pinning позволяет решить эту проблему. Суть метода заключается в том, что сертификат, соответствующий тому, который использует сервер, жестко зашивается в мобильное приложение. Во время инициации SSL-соединения мобильное приложение игнорирует хранилище на устройстве и соединяется только с теми хостами, сертификат у которых соответствует сертификату, зашитому в приложении. Сия технология также помогает нам сделать хост достоверным при помощи самоподписанного сертификат и не устанавливать дополнительные сертификаты на устройстве.
Технология certificate pinning используется многими популярными приложениями: Twitter, Square и т. д. Вопрос заключается в том, как обойти проверку сертификата на стороне клиента? Важно отметить, что все проверки происходят на стороне клиента, и мы можем, используя различные фреймворки (Mobile Substrate и другие), патчить методы и обходить эти проверки.
На конференции Blackhat была представлена экспериментальная утилита SSL Kill Switch, которая позволяет обходить проверку сертификатов. С полной версией презентации можно ознакомиться здесь. Спустя некоторое время у автора получилось отследить трафик приложений, использующих технологию certificate pinning (например, Twitter), но возникли сложности с отслеживанием трафика у приложения App Store. Далее автор пришел к выводу, что для отслеживания трафика у приложения App Store, необходимо пропатчить более низкоуровневые методы и завершить некоторые процессы. На эту тему была написана довольно интересная статья, с которой я рекомендую вам ознакомиться. Кроме того, обратите внимание, что SSL Kill Switch будет способна отключить стандартную проверку SSL-сертификатов, и вам не нужно будет устанавливать корневой достоверный сертификат, что мы обычно делаем для анализа трафика через протоколы HTTP/HTTPS.
Чтобы проверить, что приложение Twitter использует технологию certificate pinning, установите эту программу и направьте весь трафик с устройства через Burp Proxy. Более подробно об инспектировании трафика через HTTP/HTTPS описано в 11-й статье этого цикла. Если вы поработаете с приложением Twitter, трафик не будет перехватываться Burpsuite.
Чтобы проанализировать трафик приложения Twitter, подключитесь к устройству через ssh и загрузите приложение iOS SSL Kill Switch. Кроме того, установите следующие приложения через Cydia:
- dpkg
- MobileSubstrate
- PreferenceLoader
Устанавливаем deb-пакет при помощи команды dpkg –i.

Рисунок 1: Установка приложения SSL Kill Switch
После установки сделайте респринг устройства при помощи команды killall –HUPSpringBoard.
Далее зайдите в настройки SSL Kill Switch и включите опцию Disable certificate validation.

Рисунок 2: Отключение проверки сертификата
Теперь трафик приложения Twitter будет проходить через Burp Proxy.

Рисунок 3: Лог Burp Proxy
Чтобы проверить, что SSL Kill Switch инжектируется в приложение, зайдите в Xcode -> Devices (я использую Xcode 6), найдите ваше устройстве в меню слева и кликните на стрелку, указывающую вверх, в левом нижнем углу. По логам устройства вы увидите, что SSL Kill Switch инжектируется в приложение.

Рисунок 4: Полный лог устройства
Еще одна утилита со схожим функционалом – trustme. Рекомендую вам также ознакомиться с этим приложением.
Реверс apk
Отреверсим приложение, чтобы понять, какие библиотеки используются внутри.
$ apktool d app-debug.apk
Сбор информации
Для начала попробуем запустить приложение. Видим на экране кнопку SEND и текстовое приглашение ее нажать. Нажимаем — надпись меняется сначала на «Wait…», а после отображается «Sorry, not today». Скорее всего, отправляется запрос, который не проходит проверку на стороне сервера. Давай посмотрим, что происходит внутри приложения.

Ciao, posso chiederti di creare l’apk di TikTok senza SSL Pinning? Grazie mille
Hi, may I ask you to create TikTok apk without SSL Pinning? Thanks a lot