Чарльз - великолепное приложение MITM HTTPS/SSL аудита трафика компьютерного или мобильного приложения. С помощью него вы можете увидеть 100% передаваемой информации между конкретным устройством и внешними узлами, даже если эта информация зашифрована.
Итак, начнем с установки. В арче обнаружился в AUR:
yaourt -A charles
Если у вас не Arch/Manjaro, зайдите на офсайт и скачайте оттуда: там есть винда, мак и линух, 32-бит и 64-бит версии.
Чарльз условно-бесплатный. Каждые 10 минут он выводит свой баннер на несколько секунд, а раз в пол часа вам придётся запускать его повторно, если вы не успели :) Однако это не уменьшает его удобства!
Запустите чарльза из системного меню или файла. Давайте настроим проксификацию телефона или веб-браузера через Чарльз (для проксификации ПК всё даже проще, и есть даже готовый плагин для Firefox).
Чтобы проксировать трафик, нам нужно узнать IP-адрес ПК, на котором в данный момент работает Чарльз. В любом линуксе просто сделайте ifconfig
и найдите ваш адрес (обычно 192.168.1.х). Телефон или ПК, график которых вы собираетесь слушать, должен быть в этой же сети (например, телефон подключен по WiFi, а ПК кабелем к тому же роутеру). Запомнили IP адрес компьютера с Чарльзом? Хорошо!
Для того, чтобы видеть весь HTTPS/SSL трафик, вам нужно установить на устройство, трафик которого хотите снифить, сертификат Чарльза. Давайте просимулируем ситуацию с тем, что нам надо посмотреть, что за трафик отправлят мобильное приложение Android. Зайдите в настройки WiFi подключения телефона и введите IP адрес вашего ПК, в качесте порта Чарльз по-умолчанию использует 8888, если вы не меняли - введите IP компьютера и этот порт. Сохраните настройки и для верности выключите\включите WiFi.
Теперь весь трафик телефона "ходит" в интернет через ПК. Вот только проблема - HTTPS трафик пока мы не видим, т.к. ещё не установили подложный сертификат. Для этого перейдите с телефона (любым браузером) по адресу http://chls.pro/ssl, отмечайте ДА на установку сертификата, все 4 флажка, и ОК.
Теперь остался последний шаг - добавление желаемых SSL/HTTPS доменов в список отслеживаемых, делается это в самом Чарльзе. Есть два способа, сделать это заранее, или пост-фактум. Заранее: меню Proxy -> SSL Proxifying Settings -> SSL Proxifying -> кнопка Add внизу -> в Host впишите адрес сайта, HTTPS трафик которого ходите увидеть, остальные поля можно не сохранять.
Пост фактум: перейдите с телефона на нужный HTTPS-сайт, затем в Чарльзе слева увидите запрос доступа к нужному адресу. Нажмите правой кнопкой на нужный сайт и клацните на Enable SSL Proxy. Готово.
в самом Чарльзе есть хорошая помощь по настройке SSL проксификации на разных устройствах
Теперь вы можете полностью изучить, как мобильное приложение общается с внешним миром. Можно ставить трафик на паузу или замедлять его для более удобного аудита.
Для чего это?
При помощи приложения Чарльз, я, к примеру, отыскал API-ключ приложения в андроиде, которое позволило получить мне безлимитный доступ к API одного публичного сервиса. При этом, если бы я захотел полноценный доступ к такому API, мне пришлось бы заплатить примерно 3000$ за доступ к API на год. Если мой телефон (через приложение) может делать бесплатно эти запросы - почему я с ПК не могу делать такие же? :)
Удачи в аудите приложений, анализе их уязвимостей и поисках систем трекинга в приложениях. Чарльз очень удобный инструмент, который можно бы и купить, кстати. :)
Пишите о вашем опыте работы с Чарльзом и другими MITM-прокси снифферами.
С вами, как всегда :)
айтишник-линуксоид, аудитор безопасности систем и приложений,
Den Ivanov aka SXIII