• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Поиск полезных эндпоинтов для сетевой разведки в мобильных приложениях

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Множество советов и приемов для сбора информации из открытых источников подразумевают исследование веб-страниц, в частности, просмотр их "сырого" содержимого. Вспомните идентификатор пользователя в Facebook или URL изображения, на которое вы не можете нажать. Иметь опыт верстки на HTML, при этом, не обязательно, однако, каждый сетевой разведчик должен уметь просматривать исходный код страниц и искать на них ключевые строки, - это один из ключевых навыков в данной области.

На самом деле, это довольно просто: на компьютерах с Windows, во всех основных браузерах, достаточно нажать сочетание Ctrl+Shift+U, чтобы открыть новую вкладку с необработанным HTML-кодом, а в Mac OS - Cmd+Option+U или Cmd+U для Firefox). Также можно воспользоваться контекстным меню (ПКМ на свободной области).

b63fefef8d5bb4965d30c.jpg

Иногда просмотра исходного кода бывает недостаточно, для таких случаев в браузерах есть инструменты, предназначенные для отладки веб-страниц, которые мы также можем использовать. Например, чтобы обойти защиту в Instagram (когда появляется модальное окно авторизации на всю страницу и отключается прокрутка) при просмотре чужого профиля неавторизировавшись, откройте инструменты разработчика при помощи F12 или горячих клавиш Ctrl+Shift+I, наведите мышь на модальное окно, удалите его кнопкой Delete и уберите свойство с Body "overflow: hidden", чтобы вернулась возможность прокрутки.

49f3bdd21e551386fe61d.jpg

Я не могу здесь описать подробно каждый инструмент разработчика. Не потому, что мне лень, а потому, что я не донца знаю, как использовать их все эффективно. Есть несколько хороших руководств, которые научат вас этому, при этом, скорее всего, вы будете использовать лишь пару описанных в этих статьях трюков (как и я), однако всегда интересно посмотреть, как работает магия осинта на разных страницах. Вы можете начать с OSINT Curious и их краткого экскурса в инструменты разработчика. Затем пойти дальше и перейти к ускоренному курсу по Google Chrome Developer Tools, ну а потом переключиться на Джастина Зейтца и ознакомиться с его видео о расширенном анализа веб-сайтов для OSINT.

Интересно, что вы также можете использовать инструменты разработчика в Chrome для отладки «удаленного» браузера на устройствах, работающих под Android. Все, что вам нужно, это USB-кабель, установленные драйверы Android Debug Bridge (adb) на вашей рабочей машине и Google Chrome на обоих устройствах. Как это все правильно настроить можно найти в официальной документации от Google. Я все еще не уверен, как бы я использовал эту функцию в моей работе и OSINT исследованиях, хотя ...
92dbacf112d3446bb7b4f.jpg

Инструменты разработчика также дают вам возможность эмулировать мобильное устройство и визуализировать веб-сайт в точности, будто он открыт в нем. Эта функция называется «Режим адаптивного дизайна».
4b0310a14574ddad536e0.jpg


«Время стать мобильным»
Люди все меньше времени проводят за работой на ноутбуке и у настольного ПК, и все чаще сидят за мобильными устройствами. Особенно много времени они тратят в приложениях (посмотрите статистику «US Time Spent with Mobile 2019»). Мы еще не пережили смерть компьютерного браузера, и, даже если у многих существующих мобильных приложений существует обычный веб-интерфейс, он не является панацеей, на которой мы можем остановиться. Как правило, приложения хранят в себе множество тайн, которые невозможно найти в их браузерных альтернативах. Стоит также отметить, что некоторые разработчики вообще не создают веб-интерфейс. Это особенно актуально для приложений социальных сетей, таких как Snapchat или TikTok. Приложения, которые чрезвычайно популярны и поэтому чрезвычайно интересны для OSINT-исследователей.

Итак, что мы можем сделать, когда нужно исследовать приложение, которое доступно только на смартфоне (или на ПК, но в виде отдельного клиента)?

Во-первых, загуглить! Сообщество OSINT/Infosec обычно делится обширными знаниями, и если кто-то уже пытался «хакнуть» искомое приложение, вероятно, вы сможете обнаружить новости об этом. Не забудьте проверить анонсы разработчиков. Проверьте, сделали ли они какие - нибудь функции доступными через браузеры, проверьте API, а также бета-версии. Вы также можете прошерстить сабреддиты или темы на форумах.


Ничего не нашли? Да начнется веселье!
Большинство мобильных приложений используют протокол HTTP(S), чтобы общаться с серверами. TikTok использует HTTP, Snapchat использует HTTPS, Tinder использует смесь HTTPS и HTTP. Вы поняли мою мысль.

HTTP - это протокол, с которым достаточно просто работать, при этом, используя прокси. Прокси-сервер - «это промежуточный сервер в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером. Когда компьютер отправляет запросы на сайты и службы в Интернете, прокси-сервер перехватывает эти запросы и затем связывается с веб-серверами, как посредник» (источник: https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/)

На компьютере можно использовать множество прокси-серверов: WinGate или FreeProxy в Windows, SquidMan в MacOS. Но есть и другое решение, которое объединяет мощь прокси-сервера и инструментов разработчика: Fiddler, «бесплатный прокси-сервер для отладки веб-страниц для любого браузера, системы или платформы», созданный в 2003 году Эриком Лоуренсом.

fc2204d23772e3455b2c0.jpg


Fiddler
Перво-наперво: установите Fiddler на компьютер, который вы хотите использовать при анализе. Затем возьмите смартфон или запустите виртуальную машину, которую вы будете использовать для манипуляций с приложениями. Обе системы должны быть в одной сети.

Моя настройка проста: я использую смартфон на Android с 4G-подключением, параллельно синхронизируя его с ноутбуком, на котором установлен Fiddler, через WiFi.

4abbc3e705bf8e9f7f900.jpg

Следующий шаг - найти IP-адрес компьютера, который будет служить прокси-сервером. Для этого, в командной строке Windows введите ipconfig. В терминале MacOS / Linux: ifconfig. Затем, запишите или сфотографируйте его.

После этого запустите Fiddler, перейдите в «Инструменты», «Параметры…» и остановитесь на вкладке «Подключения». Установите флажок «Разрешить подключение удаленным компьютерам». Обратите внимание, что после сохранения настроек, Fiddler будет прослушивать порт 8888.

40e44f4a202f4be8b216b.jpg

Далее мы должны настроить свой телефон / виртуальную машину для использования прокси. На моем старом Samsung я открываю настройки, нажимаю «Wi-Fi», удерживаю соединение, которое используется в данный момент и выбираю «Изменить настройки сети», после этого ставлю галочку «Показать дополнительные параметры», перехожу чуть ниже и выбираю «Вручную» в разделе «Прокси». Здесь я вписываю IP-адрес, найденный ранее, на компьютере. И указываю порт 8888.

Остался последний шаг. Его необходимо выполнить, чтобы можно было работать с HTTPS трафиком. Вернитесь к Fiddler и посмотрите в левый нижний угол - черное поле ввода с зеленым текстом. Это поле «QuickExec». Введите в этом поле следующую команду и нажмите «Enter».
Код:
about:config

ac3fb24126ac741421159.jpg

На правой панели появится список переменных. Добавьте в этот список:
Код:
fiddler.certmaker.ValidDays
и присвойте значение 820. Это изменит дату истечения срока действия сертификата, который мы установим далее. Мы делаем это, чтобы в дальнейшем избежать ошибок на Android.

22b47cf2faaea13bd9030.jpg

Теперь давайте установим сертификат на смартфон. Запустите на нем браузер и откройте http://ipv4.fiddler:8888.
4692859278cc7417e0aff.jpg

Загрузите и установите сертификат FiddlerRoot. Настройка окончена, теперь весь HTTP (S) трафик с вашего телефона будет проходить через Fiddler.

Проверьте настройки, посерфив какие-нибудь веб-сайты на телефоне.

Теперь, когда прокси работает, давайте настроим Fiddler, чтобы скрыть тот трафик, который мы не хотим видеть. Перейдите на вкладку «Фильтры» и в раскрывающемся списке «Нет фильтра хоста» выберите «Скрыть следующие хосты». Введите IP-адрес прокси, установите флажок «Использовать фильтры» и в «Действиях» выберите «Запустить набор фильтров сейчас».

de46fba13368859f3e1f8.jpg

Опять же, я не являюсь веб-разработчиком или тестировщиком приложений, поэтому идея в том, чтобы упростить действия, как будто это низкоуровневый реверс. Очистите сессии, которые Fiddler собрал, нажав «X» в строке меню.

Запустите приложение, которое вы хотите исследовать. Давайте начнем с TikTok в качестве примера. При запуске приложения отображается несколько подключений к api2–16-h2.musical.ly и другим поддоменам в домене music.ly. Выберите вкладку «Инспекторы» и перейдите в «TextView». Когда вы выбираете сеанс, Fiddler декодирует и показывает его как текстовый объект.

Советую начинать с любого известного вам профиля: любая учетная запись, о которой вы знаете какую-либо информацию, которая может быть скрыта. К примеру, давайте поищем аккаунт «Лорен Грей» или «самый успешный аккаунт за пределами Китая». При любой активности, Fiddler будет заполняться "звонками" с разных URL-адресов.

Так как запросов множество, из этого множества нам нужно найти только те, которые будут относиться к искомой учетной записи. Один из простых способов сделать это - переключиться на «ImageView» и перемещаться вверх и вниз до тех пор, пока не найдете нужные изображения, относящиеся к актуальной информации.

e0139f32838d747f5fb1e.jpg

Мне потребовалось просмотреть 6 запросов, чтобы найти "тот самый". Информация поступила с поддомена api2–16-h2.musical.ly, - это краткая сводка о «Лорен Грей». Уже неплохо, а еще лучше то, что она отформатирована в формате JSON (вы также можете переключиться на вкладку «JSON» для более удобного просмотра) и содержит интересные поля, такие как:
Код:
user
    uid=934514
    unique_id=lorengray    

    avatar_larger
      url_list
        http://p16.muscdn.com/img/musically-maliva-obj/1660343861335046~c5_1080x1080.jpeg

    video_icon
      url_list
        http://p16.muscdn.com/img/musically-maliva-obj/1660344574058502~tpl-1_q65.webp

    youtube_channel_id=UCRYe4G08okte96rmocFNU1g
    youtube_channel_title=Loren Gray
Как можно заметить, мы получили ссылку на YouTube-канал, URL аватарки в высоком разрешении и URL-адрес видео. Некоторые из этих элементов не были доступны при просмотре страницы профиля в приложении, да и в веб-интерфейсе (да, у TikTok есть веб-интерфейс!). И этот JSON дает нам данные, не доступные обычному пользователю.

2b0272edfc36f86beb615.jpg

Следующий запрос в списке - это еще один JSON-ответ, но на этот раз, гораздо больше. Он содержит поле aweme_list с описанием каждого видео.

Теперь вы знаете, что приложение TikTok отправляет запросы к api2–16-h2.musical.ly для получения ответов в формате JSON. Вы знаете, что за имя пользователя отвечает параметр unique_id и что изображения хранятся по адресу http://p16.muscdn.com/img в формате jpeg od webp.

Вечеринка окончена
Теперь давайте посмотрим на то, как работает Snapchat.

Сначала я выйду из TikTok, дождусь, пока запросы к его серверам TikTok прекратятся, и очищу сеансы, нажав «X» и выбрав «Удалить все». Когда все будет готово, можно запускать Snapchat.

Snapchat делает много запросов к * .snapchat.com HTTP (S) серверам. Я буду действовать точно также, как и раньше, и перейду к панели поиска. На этот раз я постараюсь найти «Короля Snapchat», DJ Khaled. Но у меня не получится это сделать. Приложение пытается подключиться к http://aws.api.snapchat.com:443, но не получает ответа. Что-то мешает ему получить доступ к серверам: Fiddler.

Snapchat и многие другие приложения используют систему для защиты пользователя от перехвата и дешифрования «посредником», certificate pinning.

Таким образом, приложение доверяет только определенным сертификатам. Добавление ненадежного сертификата в систему, такого как тот, который поставляется с Fiddler, не работает, приложение не сможет установить соединение.

Можно ли обойти эту защиту? Да, такие инструменты, как Frida, помогут это сделать, но это выходит за рамки данной статьи.

Плохая новость заключается в том, что во многих приложениях реализована система работы только с доверенными сертификатами, чтобы прокси-сервер не работал с HTTPS-трафиком.

Хорошая новость заключается в том, что certificate pinning не позволяет белым хакерам и исследователям находить ошибки в приложениях (и это плохо). Поэтому разработчики приложений ввели дополнительные «Настройки для Whitehat», чтобы разрешить перехват и расшифровку трафика HTTPS.

Facebook применил эти настройки для приложений Facebook, Messenger и Instagram.

da77a862d786c5c7d83fd.jpg


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

оригинал этого материала на английском можно здесь.
автор перевода Moody
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх