Продвинутые методы перехвата трафика iOS-приложений

Продвинутые методы перехвата трафика iOS-приложений

В этой статье мы рассмотрим проксификацию трафика 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. Данная статья состоит из частей:

  1. Сниффинг трафика при помощи Wireshark для нахождения IP-адреса и порта сервера.
  2. Спуфинг DNS и пересылка всего трафика на машину, где установлен прокси.
  3. Перехват трафика при помощи прокси сервера после выполнения DNS-спуфинга.

Ниже показана пошаговая схема для реализации перехвата трафика 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-приложений, передающих его нестандартными способами. 

Домашний Wi-Fi – ваша крепость или картонный домик?

Узнайте, как построить неприступную стену