- Configuring Burp Suite With Android Nougat
- Table of Contents
- Background
- Install Burp CA as a system-level trusted CA
- Mofiying and repackaging an app
- Автоматизация Android на POST\GET с помощью Frida-Server+BURPSuite
- Установка Python в Windows 10
- Устанавливаем Memu
- Установка и настройка BURPSuite
- Устанавливаем Frida
- Заработок
- Разбираемся с рассылками внутри приложения
- Поделиться ссылкой:
- Добавить комментарий Отменить ответ
Configuring Burp Suite With Android Nougat
Table of Contents
This last weekend I started testing a new Android app for fun, and ran into some trouble getting Burp Suite working properly. I burned a whole afternoon troubleshooting the issue, and decided to write up what I found out and two different ways I got it working.
Background
I’ve done quite a bit of Android testing in the past and my setup usually involves a Genymotion VM or my old rooted Nexus Tablet. I run Burp Suite locally, install the User Cert as outlined in Portswigger’s documentation, configure a WiFi proxy and I’m off the races.
This particular app I wanted to test, however, required a minimum API level 24 (Android 7.0 — “Nougat”) and suddenly it wasn’t working. I followed the steps I always do but saw nothing but “connection reset” errors in Burp:
After a few frustrating hours of troubleshooting, I finally figured out the issue lied with the latest versions of Android (API >= 24). Before I go any further, all the information I needed was found in these great write-ups:
Starting with Nougat, Android changed the default behavior of trusting user installed certificates. It’s no longer possible to just install the Burp CA from the sdcard to start intercepting app traffic. Unless otherwise specified, apps will now only trust system level CAs. The failure happens “invisibly” and is responsible for all the alerts I saw in Burp Suite.
There’s two ways to bypass this, and I’ll walk through them both.
- Install the Burp CA as a system-level CA on the device. My recommendation for the easiest solution, but does require a rooted device. Also added benefit of not having to set a lockscreen PIN 🙂
- Modify the manifest and repackage the app. Slightly more work, but doesn’t require root privileges.
Note: I did all this with Burp Suite Pro on my Windows 10 machine and am using an Android 7.1 (API25) Genymotion VM, but the steps should be applicable to any setup.
Install Burp CA as a system-level trusted CA
Since the “traditional” way of installing a user certificate doesn’t work anymore in Nougat and above, for me the easiest solution is to install the Burp CA to the system trusted certificates. You can see all the system CAs that are bundled with an Android device by going to Settings -> Security -> Trusted Credentials and viewing system CAs. You’ll see the similar CAs you’d see in a browser bundle.
Trusted CAs for Android are stored in a special format in /system/etc/security/cacerts . If we have root privileges, it’s possible to write to this location and drop in the Burp CA (after some modification).
Export and convert the Burp CA The first step is to get the Burp CA in the right format. Using Burp Suite, export the CA Certificate in DER format. I saved it as cacert.der
Android wants the certificate to be in PEM format, and to have the filename equal to the subject_hash_old value appended with .0 .
Note: if you are using OpenSSL subject_hash , not the “old” one
Use openssl to convert DER to PEM, then output the subject_hash_old and rename the file:
For example, with my certificate:
Copy the certificate to the device We can use adb to copy the certificate over, but since it has to be copied to the /system filesystem, we have to remount it as writable. As root, this is easy with adb remount .
The just drop into a shell ( adb shell ) and move the file to /system/etc/security/cacerts and chmod it to 644:
Lastly, we have to full reboot the device with either adb reboot or a power cycle.
After the device reboots, browsing to Settings -> Security -> Trusted Credentials should show the new “Portswigger CA” as a system trusted CA.
Now it’s possible to set up the proxy and start intecepting any and all app traffic with Burp 🙂
Mofiying and repackaging an app
If you don’t have root or don’t want to modify the system trusted certificates, you can install the Burp CA as a user cert and then modify the specific APK you want to MitM.
Starting with Nougat, apps will ignore user-installed certificates by default. This is evident by looking at logcat output when launching the app:
Without a network security config, the app will only trust system CAs and will not honor the user installed Burp certificate.
To get around this, it involves:
- Disassembling the APK
- Adding a new XML resource to define a network security profile
- Modifying AndroidManifest.xml
- Repackaging and self-signing the APK
Disassemble and modify the APK Start by using apktool to disassemble the APK
Next, add a new network security config by creating the file network_security_config.xml in the res/xml directory:
The config needs to explicitly state that trusting user certs is acceptable. The entire contents should be:
Finally, we have to define the network security config in AndroidManifest.xml . In the tag, add the android:networkSecurityConfig attribute pointing to the new XML file:
Reassemble and Sign Finally, the APK must now be rebuilt and signed in order to be installed. Using apktool b , a new build will be created in the dist/ directory:
To self-sign the app, use keytool to create a new keystore and key, then jarsigner to sign the new APK:
Lastly, install the new APK with adb :
Now, when we start the application, the logcat output will indicate a new network security config is being used:
With the Burp CA installed to user certificates, we can now MitM the application traffic!
Источник
Автоматизация Android на POST\GET с помощью Frida-Server+BURPSuite
Всем привет!
Ранее уже писал статью на счет автоматизации приложений на Android, с помощью GETPOST запросов, при использовании ZennoPoster. Однако появилась необходимость разобраться подробнее.
Многим было непонятно то, как оно работает и сам пример в статье был слишком простой, в этот раз мне бы хотелось более детально пройтись по всем моментам. Особенно как на этом заработать
Некоторые даже думали что дальнейшей работы шаблона нужен включенный эмулятор. Это не так, ведь самое большое преимущество в запросах, то, что нам не нужно держать включенными кучу копий эмулятора, потому запускать много потоков можно сравнительно на слабом железе.
Когда у меня есть время, то я в основном лью на дейтинг. На данный тип трафика можно лить практически любой трафик, если вы вспомните с прошлой статьи, то оттуда сливался спортивный и он конвертился.
В основном мы начинаем по примитивному использовать приложение, например добавляем фотку красивой девушки, ссылки в профиль и начинаем фолловить пользователей мужского пола. Этот способ имеет право на жизнь! Так каждый день появляется столько новых разных приложений, на любой цвет и вкус.
Но есть еще много разных способов, как использовать. Есть отличная статья про точки касания, переписывать я не буду, просто пройдитесь глазами.
В прошлой статье, я описал возможность работы с эмулятором Nox, но со временем столкнулся с такой проблемой, что он перестал запускаться и все приложения которые я сохранил на будущее для их изучения, они пропали.
Это была не самая приятная ситуация которая заставила меня перейти на MEMU поскольку он оказался более шустрым и стабильным.
Хочется показать, что есть не только тот способ для вскрытия приложения от SSL сертификата. Но еще с помощью Frida-Server и BURPSuite. Про бурп это вообще отдельная тема, советую всем научится с ним работать.
Так что погнали!
Данный пункт вы можете пропустить, если уже установлен Python и он нормально работает на Win10.
Установка Python в Windows 10
1. Переходим на сайт и качаем свежую версию Python https://www.python.org/downloads/
2. После того как скачали файл, запускаем установочный файл.
3. Ставим галочку на Add Python 3.8 to PATH и дальше на Customize Installation
4. На этом шаге смотрим чтобы галочки везде стояли.
5. Тут тоже самое, обращаем внимание чтобы галочка стояла на Add Python to environment variables и меняем папку по умолчанию например на C:Python
6. Ждем пока установщик сделает свое дело.
7. Снимает ограничения на длину имени файла.
8. Далее для того, чтобы Python нормально заработал, переходим в Параметры->Приложения и возможности->Псевдонимы выполнения приложения и снимаем тумблеры
Приложения и возможности->Псевдонимы выполнения приложения и снимаем тумблеры»/>
9. Далее открываем cmd от имени администратора и вводим эти две команды:
Код:
10. Проверяем в cmd что Python у нас установился и работает:
Устанавливаем Memu
- Переходим на сайт https://www.memuplay.com/ и качаем свежую версию.
- Устанавливаем себе в удобную папку эмулятор и не забыв нажать Decline когда нам предложат установить антивирус McAfee
- Запускает MultiMEmu и создаем новую машину на Android 7.1
- В настройках виртуальной машины включаем root
Установка и настройка BURPSuite
- Поскольку Burp написан на языке Java, то для запуска нам потребуется виртуальная машина Java, переходим на сайт oracle и скачиваем свежую версию. После этого устанавливаем.
- Переходим на TG канал и скачиваем BURPSuite.
- Там на канале есть nulled burp, описывать как эго установить не буду, делайте на свой страх и риск, это только в ознакомительных целях. Или используйте Fiddler4, который описывал в прошлой статье. Представим что BURPSuite у вас есть и потому переходим к его самой настройки.
4.Переходим в вкладку Proxy->Options и жмем Add
Options и жмем Add»/>
5.В порт вписывает 8082 и нажимаем галочку на All interfaces
6.Дальше нажимаем Yes.
7.Запускаем эмулятор который мы создали.
8.Устанавливаем приложение, которое мы хотим снять сертификат.
9.В эмуляторе переходим Настройки->wifi->Наша_wifi_сеть->Расширенные настройки и добавляем туда наш прокси 192.168.1.7:8082
wifi->Наша_wifi_сеть->Расширенные настройки и добавляем туда наш прокси 192.168.1.7:8082 «/>
10.Далее в браузере переходим по тому адресу, который мы добавляли 192.168.1.7:8082 и качаем CA Certificate. Скачаются сертификаты на эмулятор.
11.Переходим в файловый менеджер на устройстве и переименовуем с cacert.der на cacert.crt и устанавливаем его.
Устанавливаем Frida
Открываем cmd с правами администратора и вводим:
1. pip install frida
2. pip install objection
3. pip install frida-tools
Пока с этим все
Качаем adbtools и Frida-server+остальное
1.Качаем на сайте свежую версию adbtools тут и распаковываем в удобную папку, в моем случае это C:adb
2.Сохраняем этот скрип под именем fridascript.js в папке adb
3.Переходим в эмулятор Настройки->О планшете и пару раз кликаем на на вкладку «Номер сборки»
О планшете и пару раз кликаем на на вкладку «Номер сборки» «/>
4.Теперь у нас появился пункт в меню настройки «Для разработчиков» переходим туда и включаем тублер «Отладка по USB»
5.Дальше нам нужно подключить устройство к adb, для этого переходим в папку C:Program Files (x86)MicrovirtMEmuMemuHyperv VMsMEmu (у вас путь может отличаться если вы устанавливали не по умолчанию эмулятор, так же если это не первый эмулятор названия похожие, думал принцип потянет)
6.Редактируем блокнотом файл MEmu.memu и находим там строку которая нам нужна, а именно hostip=»127.0.0.1″ hostport=»21503″
7.Открываем cmd в папке с adb (в моем случае это C:adb) и подключаем устройство
adb connect 127.0.0.1:21503
8.После этой команды, мы должны проверить если устройство подключено к adb, вводим еще командую строку adb devices
и видим что наше устройство подключено:
9.Дальше нам надо скачать Frida-server в соответсвии архитектуры нашего устройства, потому для этого впишем в cmd еще одну команду adb shell getprop ro.product.cpu.abi
10.Переходим на сайт https://github.com/frida/frida/releases/ и скачиваем, в моем случае это frida-server-12.9.4-android-x86.xz
11.Распаковываем содержимое архива в папке с adb
12.Внедряем frida-server в наше устройство, для этого запускаем cmd с папки adb и вводим:
adb push C:adbfrida-server-12.9.4-android-x86 /data/local/tmp/
adb shell chmod 777 /data/local/tmp/frida-server-12.9.4-android-x86
13.Теперь нам надо запустить frida-server adb shell /data/local/tmp/frida-server-12.9.4-android-x86 &
14.Никакого вывода этой команды не будет, и не закрывайте это окно cmd, нам нужно поддерживать работу frida-server пока будем перехватывать запросы, теперь попробуем посмотреть все запущенные службы на устройстве, для этого открываем новую командную строку и вводим frida-ps -U
Тут ищем то приложение с которого нам нужно снять сертификат. Отмечено красным.
15.Теперь внедряем код fridascript.js в приложение frida -U -l fridascript.js —no-paus -f com.gametreeapp
16.Получилось Теперь запросы у нас видны, мы сняли сертификат.
Заработок
Теперь нам пора на всем этом добре заработать $$$. Как я уже писал, после того как мы перехватим нужные запросы, нам не нужно держать эмулятор открытым, можно смело закрывать и добавлять проект в ZennoPoster.
Разбираемся с рассылками внутри приложения
Теперь перейдем к тому, как разослать сообщения внутри самого приложения! Случайно наткнулся в PlayMarket’e на VerbApp. Аудитория приложения маленькая, но там для того, чтобы научится, подойдет как-раз. Скачиваем на эмулятор, снимаем любым удобным способом сертификат и делаем шаблон, который будет рассылать по личным сообщением. Как-раз в этом приложении нет никаких ограничений на отправку в ЛС. Но из-за маленькой аудитории, заработать почти не получится. Но нам же главное способ?)
1. Регистрируемся в приложении
2. Заполняем профиль
3. Дальше нам нужно отслеживать запросы, пробуем написать человеку в ЛС и смотрим запросы, нам важны эти два
Делаем GET запрос и тем самым мы получаем id для создания переписки:
Переносим запросы в кубик ProjectMaker:
Пробуем его воспроизвести и видим, что мы получили id
Тоже самое делаем со втором запросом:
Выполняем и видим результат в переменной:
Теперь пишем сообщение человеку и дальше ловим запросы:
Как видим при отправке используется conversation_id который мы парсили первым get кубиком, потому при отправке мы должны это значение подставить:
Опять же переносим это в ProjectMaker и заменяем «Привет» на другое сообщение, подставляем переменную, выполняем и смотрим уже в самом приложении если отправилось:
После выполнения видим, что в эмуляторе оно отправилось.
Теперь нам больше эмулятор не нужен, мы можем обойтись без него с помощью GETPOST запросов.
Конец
Хотел сказать то, что изначально статья должна была быть более полной в плане автоматизации Android приложений, но тут я заболел и еле себя заставил добить ее ( Если заметите какие-то орфографические ошибки, прошу намекнуть! Надеюсь кому-то будет полезно!
Автор статьи — пользователь Fbtwork10 , к сожалению, ссылку на ТГ не нашли.
Не забывайте подписаться на канал и вступить в чат:
Больше годноты на канале — Довольный Арбитражник
Обсудить и задать вопросы в чате — Арбитраж трафика | Довольный
Поделиться ссылкой:
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Источник