July 28, 2020

Автоматизация 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 от имени администратора и вводим эти две команды:
Код:

msiexec /unreg

msiexec /regserver

10. Проверяем в cmd что Python у нас установился и работает:

Код:

python --version

Устанавливаем Memu

  1. Переходим на сайт https://www.memuplay.com/ и качаем свежую версию.
  2. Устанавливаем себе в удобную папку эмулятор и не забыв нажать Decline когда нам предложат установить антивирус McAfee
  3. Запускает MultiMEmu и создаем новую машину на Android 7.1
  4. В настройках виртуальной машины включаем root

Установка и настройка BURPSuite

  1. Поскольку Burp написан на языке Java, то для запуска нам потребуется виртуальная машина Java, переходим на сайт oracle и скачиваем свежую версию. После этого устанавливаем.
  2. Переходим на TG канал и скачиваем BURPSuite.
  3. Там на канале есть nulled burp, описывать как эго установить не буду, делайте на свой страх и риск, это только в ознакомительных целях. Или используйте Fiddler4, который описывал в прошлой статье. Представим что BURPSuite у вас есть и потому переходим к его самой настройки.

4.Переходим в вкладку Proxy->Options и жмем Add

5.В порт вписывает 8082 и нажимаем галочку на All interfaces

6.Дальше нажимаем Yes.
7.Запускаем эмулятор который мы создали.
8.Устанавливаем приложение, которое мы хотим снять сертификат.
9.В эмуляторе переходим Настройки->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

Java.perform(function() {         

var array_list = Java.use("java.util.ArrayList");
var ApiClient = Java.use('com.android.org.conscrypt.TrustManagerImpl');

ApiClient.checkTrustedRecursive.implementation = function(a1,a2,a3,a4,a5,a6) {
// console.log('Bypassing SSL Pinning');
var k = array_list.$new();
return k;
}

},0);

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 приложений, но тут я заболел и еле себя заставил добить ее ( Если заметите какие-то орфографические ошибки, прошу намекнуть! Надеюсь кому-то будет полезно!