Пару слов о перехвате HTTP/HTTPS трафика iOS приложений

  • Tutorial
В этой статье я расскажу о простом методе заработка в сети перехвата HTTP/HTTPS трафика iOS приложений, включая трафик приложений использующих certificate pinning (а это например Twitter, Facebook и куча других приложений). От прочих методов, где бедным людям рекомендуют в командной строке руками генерировать какие-то сертификаты и куда-то их запихивать, этот метод отличается (относительной) безгеморройностью, хотя кое-какие телодвижения сделать конечно прийдется.

Нам понадобится:

  • iOS 7.0-7.0.4 девайс c evasi0n jailbreak и установленным OpenSSH
  • PC с Windows 7 и установленной последней версией Fiddler2
  • iOS девайс и PC должны быть подключены к одной Wi-Fi сети

Возможно на других версиях iOS и/или Windows тоже будет работать, я не пробовал. В любом случае какая бы конфигурация ОС/железок у вас не была, все дальнейшие действия вы делаете на свой страх и риск! Автор не несет ответственность за возможный вред, бла-бла-бла... Ну стандартное предупреждение, вы поняли.

Инструкция по настройке Fiddler2 довольно простая: откройте “Tools” → “Fiddler Options” и настройте как на картинке:





Закройте настройки, затем щелкните мышкой на значке в правом верхнем углу главного окна Fiddler2 и запомните адрес вашего PC в Wi-Fi сети. Будет что-то типа такого:



Теперь инструкция по настройке iOS девайса. Она чуть сложнее, но тоже не rocket science. К тому же это нужно сделать всего один раз, а потом просто пользоваться:

  1. Через Cydia установите MobileSubstrate и PreferenceLoader, если еще не установлено (оба пакета есть в дефолтных репозиториях)
  2. С https://github.com/iSECPartners/ios-ssl-kill-switch/releases скачайте пакет com.isecpartners.nabla.sslkillswitch_v0.6-iOS_7.0.deb в какую-нибудь папку на вашем PC, а потом из это папки по ftps скопируйте пакет в корень вашего iOS устройства с помощью любого ftp-менеджера который это умеет (под Windows лично я предпочитаю WinSCP, но дело вкуса конечно)
  3. Залогиньтесь на ваше iOS устройство по SSH как root и выполните следующие команды:
    # dpkg -i /com.isecpartners.nabla.sslkillswitch_v0.6-iOS_7.0.deb
    # killall -HUP SpringBoard
    # rm /com.isecpartners.nabla.sslkillswitch_v0.6-iOS_7.0.deb
    
    В процессе на вашем девайсе перезагрузится SpringBoard («рабочий стол») — не пугайтесь, так и должно быть.
  4. На iOS устройстве, зайдите в “Settings” и найдите там раздел “SSL Kill Switch” (да, его там раньше не было, но если на предыдущем шаге все прошло успешно — он там появился) и включите настройку “Disable Certificate Validation”
  5. Перезагрузите свой iOS девайс (руками или скомандуйте reboot через SSH)
  6. Зайдите в настройки Wi-Fi сети, к которой подключен ваш iOS девайс, установите HTTP прокси в “Manual” и поставте
    • Server: IP адрес вашего PC (ага! вы его забыли!)
    • Port: 8888
    • Authentification: off

Теперь, если все прошло успешно, через Fiddler2 побежит HTTP/HTTPS трафик с вашего iOS девайса. Причем будет видно даже трафик тех приложений, которые используют certificate pinning: благодаря патчу com.isecpartners.nabla.sslkillswitch_v0.6-iOS_7.0.deb, который мы установили на наш iOS девайс, у 99% процентов iOS приложений проверка сертификата заканчивается успехом какой бы сертификат приложению не подсунули (в нашем случае Fiddler2 подсовывает приложению свой).

Вот и все. Никаких генераций сертификатов вручную, впихивания их в iOS (что, как правило, все равно не помогает против certificate pinning) и прочего геморроя. Правда есть одно «но»… если после ваших экспериментов вы оставите настройку “Disable Certificate Validation” включенной, приложения на вашем iOS девайсе могут стать уязвимы для MITM атак — ведь благодаря патчу они принимают любые сертификаты, помните? Поэтому если для своих экспериментов вы используете свой личный iPhone, выключайте “Disable Certificate Validation” выходя из дома после этих самых экспериментов.

Happy sniffing!
Поделиться публикацией

Комментарии 17

    +1
    а в случае если нет на железке джейла, то можно сделать вот так
      +3
      По вашей ссылке предлагается:
      — либо засунуть на девайс левый сертификат (но против certificate pinning не поможет)
      — либо изменить код приложения (ну это если у вас есть этот самый код)
      Таким образом если у нас нету кода приложения и приложение юзает cert. pinning — мы скорее всего в пролете. Метод в статье позволяет обойти это ограничение.
      –4
      Есть же официальная документация [Capture Traffic from iOS Device](http://docs.telerik.com/fiddler/configure-fiddler/tasks/configureforios) без всяких сторонних утилит. Всего-то сертификат локальный нужно установить.
        +2
        Попробуйте увидеть таким способом трафик от Twitter например? Я почему-то уверен что не получится. Если приложение использует certificate pinning, оно не поверит вашему локальному сертификату. Ему вообще будет плевать какие сертификаты установлены в системе.
          +1
          Ок, понял. Помню, что мне интересно было посмотреть как-то одно приложение — работало без проблем, но о certificate pinning не слышал.
            +1
            Сейчас многие приложения используют cert. pinning — это одна из рекомендаций OWASP если я не ошибаюсь. Раньше такого действительно поменьше было, еще года два назад этой ерундой страдали считанные приложения. Сейчас такое попадается все чаще и чаще, и надо с этим как-то бороться :) Ну вот в статье как раз один из способов. Есть и другие, но они более геморные или требуют спецподготовки (вроде умения загнать чужое приложение без исходников под отладку и перехватить вызовы некоторых функций).
        +1
        Отлично. То что было нужно, и без всяких sslstrip извращений на роутере
        ios 6.1.4
          0
          Спасибо за ваш отзыв ) Только учтите что для iOS 6.1 нужна другая версия патча: github.com/iSECPartners/ios-ssl-kill-switch/releases/tag/release-0.5
            +1
            нифига подобного… завелась на этом
            там даже в релизноут написано мол «добавлена ios 7» — про исключение 6ой нет ничего.
            работает
              0
              Вон оно как :) Спасибо за информацию, теперь буду знать что последняя версия патча совместим и с 6ой iOS тоже.
          0
          PC с Windows 7 и установленной последней версией Fiddler2

          Fiddler вроде как портирован и на мак. Я например месяц назад без проблем снифил.
            0
            На маке оно тоже вроде как работает, но ИМХО фидлер на маке в смысле интерфейса выглядит как говно — ну чисто на мой вкус конечно ) Поэтому я и рекомендовал Windows.
            0
            Использую CharlesProxy для iOS/Android, 50$ не жалко за отличный инструмент, который меня не раз спасал
              +1
              Слышал много хорошего об этом инструменте, но как-то уже привык к Fiddler2. Ну там удобно смотреть запросы, есть скриптование и все такое. Хотя на Mac фидлер выглядит страшновато (ИМХО, в смысле интерфейса)
              0
              в Charles тоже есть, не так удобно подмена сделана, но ненамного. Если что-то хитрое подменять надо, всегда программисты помогают :) У меня Fiddler вроде не падал особо, но не скажу что я прям активно им пользовался
                0
                Аплоад картинки в инстаграм сквозь фиддлер не проходит. В инстаграме пишется Failed, в фиддлере на всех запросах в ответе идет 502 Bad Gateway и HTTPS-запросы подсвечены красным.
                  0
                  К сожалению приведенный в статье метод не идеален и в некоторых частных случаях может не работать как нужно. Я пока не знаю 100% универсального метода ловить трафик. Если вы знаете — делитесь, думаю многим будет интересно )

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

                Самое читаемое