Загрузка...

Article How to properly reverse Instagram/Facebook traffic? Pitfalls, secrets. Part 1.

Thread in Reversing / Assembler created by AdrianRoss Nov 8, 2024. 886 views

  1. AdrianRoss
    AdrianRoss Topic starter Nov 8, 2024 15 Nov 6, 2024


    Создаем исследовательский стенд


    Первым делом нужен андроид эмулятор. Качаем Android Studio, затем в AVD менеджере создаем новый девайс, ОБЯЗАТЕЛЬНО без гугл сервисов (они в дальнейшем помешают рутировать устройство) Запускаем эмуль, затем надо рутирвоать телефон. https://github.com/newbit1/rootAVD После успешного рута должен появиться Magisk на телефоне. Вот можете видеть он сверху по центру у меня.
    [IMG]

    Качаем Frida, ставим https://frida.re она нам нужна будет чтобы произвести SSL Unpinning, чтобы траф мы видили потом. В терминале должны быть доступны следующие утилиты:
    [IMG]

    Затем нужен Frida-server, чтобы под рутом работал на самом телефоне, качаем отсюда https://github.com/frida/frida/releases в зависимости от архитектуры эмулятора. У меня это android-x86
    [IMG]

    Скаченный файл мы по adb перекидываем на телефон в директорию /data/local/tmp. Теперь надо запустить исполняемый файл на телефоне
    Сначала заходим под рутом в shell
    adb root ; adb shell
    Далее запускаем сервер
    cd /data/local/tmp/ ; ./frida-server-... &
    [IMG]

    Проверим, работает ли фрида frida-ps -U
    [IMG]
    Показывает список всех процессов на телефоне

    Дело за малым, нам надо пустить трафик.

    Устанавливаем BurpSuite на комп, и экспортируем сертификат
    [IMG]
    Теперь конвертируем его в PEM формат (На новых андроидах не получится напрямую установить DER)
    openssl x509 -inform der -in cacert.der -out burp.pem

    Скидываем на эмулятор pem файл куда-нибудь на sdcard например и устанавливаем на самом телефоне сертификат https://www.youtube.com/watch?time_continue=85&v=BCA63bMYD7U&embeds_referring_euri=https%3A%2F%2Fwww.google.com%2F&source_ve_path=Mjg2NjY

    В Burp настраиваем ****** вот так
    [IMG]

    На телефоне прописываем так
    [IMG]

    Теперь можете попробовать зайти в браузер, траф должен пойти
    [IMG]

    Теперь непосредственно к иснтаграму. Качаем этот файл https://github.com/Eltion/Instagram-SSL-Pinning-Bypass/blob/main/instagram-ssl-pinning-bypass.js и обязательно раскоментируем //disableHTTP3();

    Теперь запускаем фриду с этим скриптом.
    frida -U -l ./instagram-ssl-pinning-bypass.js -f com.instagram.android

    Сразу скажу, если в терминале выдает [*][+] Deleting config files to disable HTTP3. Restart App. то просто перезапускаем команду Ctrl-C, ну и заново просто.
    [IMG]
    На телефоне открылась Инста и трафик пошел
    [IMG]
    Все, стенд готов, вот вам вспомогательные команды!
    1. Запуска эмулятора без открытия андроид студии. emulator -avd Pixel_6_Pro_API_28 -no-snapshot-load Надо заранее прописать env-ы чтобы emulator утилита была доступна
    2. Запуск рут-шета и frida-server adb root ; adb shell и cd /data/local/tmp/ ; ./frida-server-16.5.2-android-x86
    3. Запуск скрипта frida -U -l ./instagram-ssl-pinning-bypass.js -f com.instagram.android


    Специфика Инстаграма / Фейсбука

    Теперь поговорим о специфики самого Инстаграма и как повторять трафик.
    Весь API приложения делится на две составляющие:
    1. Обычный Api / GraphQl api - обычный привычный апи, который воспроизвести легко
    2. Bloks api - пропиетарное решение для динамической отрисовки UI

    Сразу про Bloks и что это такое. Bloks - это проприетарный фреймворк фейсбук сервисов, который динамически отрисовывает интерфейс в приложении. Нечто вроде Html, но проприетарный закрытый. Касаемо Инсты, то часть интерфейса (Логин / Регистрация / Окно блокировок / Двухфакторок / Настройка фб-аккаунта, профилей) работает именно через Bloks!

    Конкретный пример. Вот приложуха запускается, сразу запрос на /api/v1/bloks/apps/com.bloks.www.bloks.caa.login.process_client_data_and_redirect/
    [IMG]
    Результат выполнения - отрисовка вот этой логин формы
    [IMG]

    Не вдаваясь в детали, response Bloks запроса содержит в себе: а) верству (сравним с CSS) б) определенные переменные, функции, поведение кнопок, форм и прочего (сравним в javascript сниппетами)

    Как я рекомендую с ним работать?
    Есть два путя:
    а) написать свой интерпритатор, который будет обрабатывать проприетарный байт код и давать результат. Вот пример о каком коде идет речь:
    (bk.action.core.TakeLast, (bk.action.qpl.MarkerStartV2, (bk.action.core.GetArg, 0), (bk.action.core.GetArg, 1), (bk.action.tree.Make, 13704)), (bk.action.qpl.MarkerAnnotate, (bk.action.core.GetArg, 0), (bk.action.core.GetArg, 1), (bk.action.mins.CallRuntime, 6, \"app_id\", (bk.action.core.GetArg, 2))), (bk.action.bloks.AsyncActionWithDataManifestV2, (bk.action.core.GetArg, 2), (bk.action.mins.CallRuntime, 6, \"params\", (bk.action.string.JsonEncode, (bk.action.map.Make, (bk.action.array.Make, \"server_params\", \"client_input_params\"), (bk.action.array.Make, (bk.action.map.Merge, (bk.action.map.Make, (bk.action.array.Make, \"INTERNAL__latency_qpl_marker_id\", \"INTERNAL__latency_qpl_instance_id\"), ...
    Да,это именно исполняемый код, который приложении исты выполняет, там прописан свой интерпритатор на это. Но честно сказать, это очень сложно воспроизвести, поэтому предложу альтернативный вариант
    б) поиск нужный переменных regexp-ами. Че то типо такого:
    [IMG]
    Это фрагмент кода функционала Login в моем сервисе. Тут регулярками мы забираем нужные нам занчения.

    Итого скажу, все что надо обрабатывать в Bloks делаем регулярками, остальные запросы просто прописывам через привычные Api
    [IMG]
    Тут мы получаем нормальный Json с которого можем без проблем забрать всю нужную инфу.

    Двухфакторки и челенжи

    Двухфакторка в моем понимании - это сразу вылетающее окно после логина, но до входа в сам аккаунт.
    Пока мною было открыто и проработано два типа:
    [IMG]

    Челенжы чем-то похоже на двухфакторку, но их гораздо больше, и вылетают они чаще. Челендж - это вылетающее окно, требующее выполнения ключегого действия уже после входа в аккаунт и прогрузки ленты.
    Вот ключевые:
    [IMG]

    Метод обхождения фродов

    Для этого необходимо полностью воспроизводить трафик, в том числе и действия логгирования!

    Покажу пример, как обошли один из банов.
    Вот как было дело. Писал автоскрол ленты рилсов. Постоянно на 167-ом рилсе вылетал логаут.
    Решено было так, был воспроизведен запрос post-auth flow /api/v1/push/register/
    Чтобы воспроизвести данный запрос советую в Jadx + Chatgpt, найти соответствующий метод, генерирующий криптографические ключи и все это дело повторить, в целом не сложно.

    И аналогично надо воспроизводить все-все ключевые запросы!


    Заключение и приглашаю в проект кодера-реверсера!

    С тех точки зрения я рассказал что и как делать. Но у вас возникнет вопрос - а для чего? чем я таким занимаюсь? Но сперва поговорим про вас)

    Будучи реверсером, вы, по моему мнению, являетесь просто элитой всей айти индустрии, так как возиться вот с этим всем - мало навыка. Нужно непреодолимое желание, терпение, мозги. У 99% людей это отсутствует, но только не у вас. Однако данное ремесло очень специфическое, зачастую применяется в вирусологии. Если вы в данный момент свободны от работы, то у меня есть деловое предложение. Я, будучи предпринимателем, знаю, как конвертировать все навыки нашей команды в полезное для людей дело, а в последствие и в очень огромные доходы для каждого.

    Приглашаю вступить в команду, которая впервые в истории автоматизирует нишу вертикального контента (Тикток, Шортс, Рилс)! Ведь это не просто цифровая наркота, а целый рынок контента, приносящий своим креатором доходы. Мы освободим креаторов от рутины (монтаж ролика, выгрузка, мультиаккинг, менеджинг), за что будем получать вознаграждение.

    Если говорить за навыки, то нужен следующий кандидат:
    Всех, кто заинтересован, пишем в телеграм https://t.me/ENGINEER812 Все подробности расскажу

     
  2. BebiDjan
    BebiDjan Jan 4, 2025 2 Jan 25, 2024
    пиздец.

    почему люди такие умные
     
  3. Окулист
    Окулист Apr 21, 2025 Мы вас пока лечим 247 Nov 18, 2022
    А зачем это
     
  4. sklifosowsky
    Спасибо большое, отличная статья
     
  5. Johny_Catswill
    Johny_Catswill Jun 17, 2025 Banned 23 Jan 31, 2022
    А-ХУ-ЕТЬ
     
  6. hyperhide
    hyperhide Jun 19, 2025 22 Jun 17, 2024
    хайпово выглядит
     
Loading...
Top