В этой статье мы рассмотрим проксификацию трафика iOS-приложений, использующих native web sockets для взаимодействия с сервером. Статья будет полезна тем пентестерам, которые сталкиваются в своей работе с перехватом конфиденциальной информации, посылаемой iOS-приложениями нестандартными способами.
Автор: Vikram Kulkarni
В этой статье мы рассмотрим проксификацию трафика iOS-приложений, использующих native web sockets для взаимодействия с сервером. Статья будет полезна тем пентестерам, которые сталкиваются в своей работе с перехватом конфиденциальной информации, посылаемой iOS-приложениями нестандартными способами. Эти методы являются актуальными, поскольку использование стандартных настроек прокси сервера на устройстве для перехвата трафика некоторых приложений может оказаться недостаточным.
Недавно, во время очередного пентеста, я столкнулся с приложением, которое отсылало информацию на порт 20хх веб-сервера. Трафик этого приложения не поддавался перехвату путем изменения стандартных настроек (Settings -> Wi-Fi -> HTTP Proxy -> Manual) и перенаправления трафика на прокси. Одна из причин, почему этот метод не работает, - для взаимодействия с сервером используются нативные веб сокеты (native websockets) вместо класса UIWebView. Более подробно о том, как настраиваются веб сокеты, рассказывается в этой статье.
Однако есть обходной маневр для решения этой проблемы. Мы можем реализовать DNS-спуфинг и перенаправить весь HTTP-трафик со всех портов через прокси наподобие Burp. Данная статья состоит из частей:
Ниже показана пошаговая схема для реализации перехвата трафика iOS-приложений, использующих Native Web Socket.
1. Создаем беспроводную точку доступа и подключаем к ней устройство. [Примечание: машина должна быть подключена к Ethernet или любым другим способом подключена к интернету, поскольку Wi-Fi интерфейс будет использоваться для точки доступа. В этой статье рассказывается о том, как настроить точку доступа на Windows-машине]
2. Запускаем сетевой сниффер (например, Wireshark) и ищем трафик, проходящий через нестандартные порты.
a. Фильтруем трафик, оставляя только тот, который идет на нужный нам IP-адрес (ip.dst== ip.ip.ip.ip)
b. Находим номер порта, на который посылается трафик.
Рисунок 1: Нахождение нестандартного порта, на который приложение отсылает трафик
3. Запускаем консоль Metasploit для DNS-спуфинга и вводим следующие команды:
c. set SRVHOST = (IP беспроводной точки доступа)
d. set SRVPORT = 53, set TARGETACTION = BYPASS, set TARGETDOMAIN = www.apple.com (Примечание: выставляя TARGETDOMAIN= www.apple.com, мы будем перехватывать весь трафик, кроме идущего с apple.com).
e. set targethost = (IP беспроводной точки доступа)
Рисунок 2: Настройка DNS сервера при помощи модуля fakedns (в Metasploit)
4. Конфигурируем Burp на прослушивание входящего трафика устройства на определенных портах и перенаправляем его на найденный ранее порт.
a. Заходим в Proxy->Options->Add; устанавливаем в 'bind port' тот порт, на который приложение должно пересылать трафик (примечание: это один из тех нестандартных tcp-портов, который был найден при помощи Wireshark).
b. Слушаем все интерфейсы.
c. Во вкладке Request Handling задаем домен сервера (поле Redirect to host).
d. В той же вкладке выставляем соответствующий номер порта (поле Redirect to port).
e. Если трафик посылается через https, выставляем принудительное использование SSL.
f. Кликаем ок и повторяем все вышеперечисленные операции для всех портов, на которые приложение посылает трафик. Другими словами, для каждого порта нужен отдельно сконфигурированный Proxy listener.
Рисунок 3: Настройка прослушивания и перенаправления трафика
5. Конфигурируем настройки прокси на устройстве:
a. Заходим в раздел Wi-Fi->DHCP и выставляем DNS = IP-адресу точки доступа.
b. В настройках HTTP-прокси ставим IP-адрес точки доступа и соответствующий порт, на который настроен burp (эти настройки используются для проксирования стандартного HTTP-трафика).
Рисунок 4: Конфигурирование IP и DNS forwarding на устройстве
6. Введите в консоли Metasploit «exploit», и вы увидите весь перехваченных трафик с нестандартных портов.
Описанный метод можно использовать для обхода проблем с перехватом трафика iOS-приложений, передающих его нестандартными способами.
Устали от того, что Интернет знает о вас все? Присоединяйтесь к нам и станьте невидимыми!