Актуальные методы расшифровки TLS/SSL
Также приглашаем всех желающих смотреть открытый вебинар на тему «NAT — не Firewall». На нем участники вместе с экспертом рассмотрят NAT и его использование, разберут, почему NAT != firewall. Дополнительно рассмотрят различные виды конфигураций для разных ситуаций.
Шифрование — это наиболее популярный способ для защиты сетевого взаимодействия. Статья расскажет об актуальных методах расшифровки данных, которые передаются во время взаимодействия с web-приложениями. Будут рассмотрены примеры расшифровки в зависимости от стартовых условий (наличие ключей шифрования, сертификатов и уязвимостей в схеме передачи информации).
Проблематика и история
Разберемся немного с проблематикой и терминологией. На сегодняшний день наиболее популярными технологиями, которые применяются для шифрования данных, передаваемых по сети, являются SSL и TLS. Последняя сейчас является стандартом дефакто для взаимодействия по протоколу HTTPS. Кстати, именно в расшифровке этого протокола и будет заключаться практическая часть данной статьи. Для понимания процесса расшифровки данных мы должны знать такие понятия как:
- Симметричная криптография
- Ассиметричная криптография
- Сертификат
- Хранилище сертификатов
- HSTS — или Strict Transport Security технология, которая включена в современных браузерах для контроля над обязательным использованием HTTPS для взаимодействия с сервером.
Описание каждого из пунктов, указанных выше, выходит за тематику данной статьи — поэтому если вы никогда не сталкивались с этими понятиями, то самое время их найти в Wiki и продолжить изучение статьи.
Практика
Практику будем проводить с использованием виртуальной лаборатории. Состав лаборатории:
- Virtual Box;
- Windows 8.1;
- Ubuntu Server 20.04
Также для тестирования способов расшифровки трафика будем использовать устройство iPhonе SE.
Все машины должны быть подключены к сети «NAT Network». Именно этот тип подключения позволяет моделировать близкую к реальной топологию сети. В схеме есть хосты, которые могут взаимодействовать друг с другом, и есть хост, который используется как точка доступа в сеть Интернет. Приступим к практике.
Расшифровка трафика с использованием SQUID
Squid — программное обеспечение, которая эмулирует функцию кэширующего сервера. Может быть использована для распределения нагрузки и логирования действий пользователей по протоколу HTTP в сети, кстати, и с HTTPS это ПО работать тоже умеет. Воспользуемся этой его функцией. К сожалению, использовать squid из репозитория не получится, необходимо собрать его самостоятельно:
```sh wget http://www.squid-cache.org/Versions/v4/squid-4.5.tar.gz tar -xvzf squid-4.5.tar.gz cd squid-4.5 ./configure --with-openssl --enable-ssl-crtd --prefix=/usr/local/squid make make all make install ```
Самый действенный способ расшифровки взаимодействия между сервером и клиентом на сегодня — это добавление доверенного корневого сертификата, поэтому перед началом расшифровки нужно его сгенерировать:
```sh cd /etc/squid mkdir ssl_cert chown squid:squid -R ssl_cert chmod 700 ssl_cert cd ssl_cert openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem openssl x509 -in myCA.pem -outform DER -out myCA.der ```
Файл сертификата myCA.der можно использовать для браузера. Устанавливаем его в локальное хранилище и прописываем в качестве прокси сервер squid.
Настроим ссылку на вновь скомпилированный файл squid:
```sh ln -s /usr/local/squid/sbin/squid /usr/local/bin/squid ```
Проинициализируем директорию для кэша:
``` /usr/local/squid/libexec/security_file_certgen -c -s /var/lib/ssl_db -M 4MB chown squid:squid -R /var/lib/ssl_db ```
```sh nano /usr/local/squid/etc/squid.conf ```
Должен получить следующий листинг:
```sh acl SSL_ports port 443 acl CONNECT method CONNECT acl manager proto cache_object http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localnet http_access allow localhost http_access deny all http_port 3128 cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 coredump_dir /usr/local/squid/var/cache/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no-cache ignore-no-store ignore-private refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tiff)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private refresh_pattern -i \.index.(html|htm)$ 0 40% 10080 refresh_pattern -i \.(html|htm|css|js)$ 1440 40% 40320 refresh_pattern -i youtube.com/.* 10080 90% 43200 refresh_pattern (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 http_port 3128 ssl-bump \ cert=/etc/squid/ssl_cert/myCA.pem \ generate-host-certificates=on dynamic_cert_mem_cache_size=4MB sslcrtd_program /usr/local/squid/libexec/security_file_certgen -s /var/lib/ssl_db -M 4MB acl step1 at_step SslBump1 ssl_bump peek all ssl_bump stare all ssl_bump bump all cache allow all access_log stdio:/usr/local/squid/var/logs/access.log combined cache_store_log stdio:/usr/local/squid/var/logs/store.log cache_log stdio:/usr/local/squid/var/logs/cache.log ```
```sh squid -d 10 && tail -f /usr/local/squid/var/logs/access.log ```

Расшифровка взаимодействия с использованием CharlesProxy
В этом эксперименте будем использовать настоящую WiFi сеть с подключенным к нему устройством iPhone SE. Для расшифровки сетевого взаимодействия будем использовать специализированные программные продукты. Например charlesProxy. Продукт платный, но предоставляет бесплатный период использования. После запуска нужно выбрать опцию «Proxy > Start SSL Proxying»:

После этого станет доступна ссылка на корневой сертификат для браузера или другого сетевого устройства. Установим сертификат на устройство:

После установки в в качестве доверенного в браузере или на устройстве, можно увидеть следующий результат:

Вывод
Расшифровка трафика это достаточно простой процесс, если есть правильный набор инструментов. Приведенные примеры можно использовать для анализа сетевых взаимодействий внутри сети. А так же можно применять эти методы для исследования тех данных, которые отправляются браузером или другим ПО в Интернет.
Как расшифровать трафик HTTPS
В этой статье я покажу, как расшифровать трафик HTTPS с помощью Wireshark.
Как работает HTTPS
При использовании HTTPS (HTTP через SSL/TLS) данные отправляются с помощью механизма шифрования. HTTPS использует гибридный механизм шифрования, асимметричное шифрование для отправки ключа сеанса и использование симметричного шифрования для передачи данных.

Схема показывает, что ключ сессии передавался с использованием асимметричного шифрования (закрытый и открытый ключи), затем данные шифровались сессионным ключом.
Как расшифровать трафик HTTPS
Допустим у нас есть удаленный или прямой доступ к целевой машине, тогда можно добавить переменную пользовательской среды и перехватить трафик с помощью Wireshark или tcpdump.
Шаг 1: Для захвата ключа сеанса, добавьте SSLKEYLOGFILE в переменную среду.

Шаг 2: Перезапустите Chrome и простая проверка sslkeylog.log должна выглядеть примерно так, как показано ниже.
Шаг 3: Попробуйте открыть сайт и убедитесь, что sslkeylog.log существует и в нем есть какие-то данные.

Шаг 4: Включите Wireshark или tcpdump и прослушайте сетевой трафик. Я использую Wireshark просто для пользовательского интерфейса.
Шаг 5: Полученный файл pcap импортируйте в Wireshark.
Шаг 6: Для более удобн0ого просмотра можете использовать следующие настройки столбцов Wireshark.

Шаг 7: Перейдите в Preference —> Protocols —> TLS —> (Pre)-Master-Secret и добавьте файл sslkeylog.log.

Шаг 8: Теперь весь HTTPS-трафик будет расшифровываться.


Я попробовал открыть сайт https://wireshark.com/, и вот результат.

Заключение
Как видите, HTTPS не такой и безопасный. Если используете общедоступную сеть, дополнительная защита, такая, как туннелирование соединения, будет полезной.
- Анализ трафика при помощи ZUI
- Как перехватить пароли с помощью WireShark
- Перехват трафика в локальной сети по проводу
Расшифровка HTTPS, SSL, TLS
Применяемые в программе технологии позволяют расшифровывать (декодировать) HTTPS трафик по протоколам TLS и SSL. Эти функции реализует отдельный модуль – HTTP/HTTPS прокси-сервер – IAdmin Proxy.
IAdmin Proxy является классическим прокси сервером, и интернет браузеры клиентов должны быть перенастроены для работы с ним.
По протоколу HTTPS прокси-сервер работает как прослойка между клиентом и сервером. Он сам генерирует сертификаты для сайтов и устанавливает шифрованное подключение с клиентом. Таким образом, данные, полученные через IAdmin Proxy, становятся открытыми (расшифрованными). Далее устанавливается шифрованное подключение к веб серверу и с ним идет обмен данными от имени клиента.
Для подписания SSL/TLS сертификатов для каждого сайта используется собственный сертификат Центра сертификации (Root Certification Authority), который вы можете создать самостоятельно. Добавление этого сертификата на компьютеры пользователей в раздел Доверенных корневых центров сертификации полностью позволит избежать предупреждений в интернет браузерах о недействительности сертификатов. При этом IAdmin Proxy не будет устанавливать соединения с веб сайтами, у которых имеется недействительный сертификат.
Используя IAdmin Proxy, вы сможете видеть и ограничивать отдельные запросы пользователей к любому зашифрованному сайту: вы сможете ограничить доступ к отдельным группам ВКонтакте, сможете увидеть, что ищут пользователи в Google, и т.д.
IAdmin Proxy использует самые современные серверные технологии Microsoft, поэтому один сервер способен перерабатывать огромное количество запросов и обслуживать сотни клиентов. Общая производительность будет определяться числом процессоров и объемом оперативной памяти на севере. IAdmin Proxy не использует кеширование на диске и дисковые операции вообще — все данные обрабатываются только в оперативной памяти, что несомненно исключает торможения в трафике.
keyboard_arrow_up
Наши решения помогают ограничить доступ к сайтам для взрослых, вирусам, фишингу, новостям, музыке, видео и другим развлечениям на работе!
Как расшифровать https?
Можно ли производить аттаку «man in the middle» в протоколе https? Если можно, то чем? Или как еще можно расшифровать https траффик?
- Вопрос задан более трёх лет назад
- 15673 просмотра
Комментировать
Решения вопроса 3

Можно, либо получаете доступ к инфраструктуре сервиса и ковыряете трафик еще до отправки клиенту, либо ставите на клиента поддельный корневой сертификат, и можете пускать трафик через себя. Посмотрите как делает Fiddler на локальной машине, чтобы перехватывать HTTPS трафик. Если вы сможете установить липовый сертификат, то сможете и перешифровывать на middle-стороне трафик, создавая иллюзию нормального HTTPS соединения.
Ответ написан более трёх лет назад
Комментировать
Нравится 5 Комментировать

СадоМазо Админ, флудер, троль.
гуглите sslstrip
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

Системный администратор
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 3

Системный администратор со стажем.
Теоретически взломать невозможно. Ибо MitM легко обнаруживается по сертификату.
Практически ломается, т.к среднестатистическому пользователю на сертификаты наплевать.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

Армянское Радио @gbg Куратор тега Компьютерные сети
Любые ответы на любые вопросы
Протокол на то и ориентирован, что MiTM в нем реализовать практически сложна, без доступа к одной из сторон соединения.
Ответ написан более трёх лет назад

Руслан Федосеев @martin74ua Куратор тега Компьютерные сети
ага. или к каналу связи между сторонами

Руслан Федосеев я думаю критичен доступ именно к одной из сторон, если бы доступа к каналу было достаточно, не вижу вообще смысла в TLS

Руслан Федосеев @martin74ua Куратор тега Компьютерные сети
подмена днс, получаем точку соединения у себя, дальше подмена сертификата.
так работают корпоративные системы фильтрации https трафика, провайдерская фильтрация https возможна только так..
Кстати подмена dns не обязательно, достаточно просто перенаправить трафик на свой сервер

Руслан Федосеев присоединяюсь к комменту OnYourLips . Если пользователь это сообщение игнорит — это его проблема и это есть собственноручный отказ от безопасности. Опять таки, зачем нам эти сертификаты за хорошие кстати деньги), если б так все просто было.

Руслан Федосеев @martin74ua Куратор тега Компьютерные сети
😉 но ведь подавляющее большинство игнорирует это предупреждение. А насчет есть ли такая возможность на провайдерах. Возможность есть, просто выбирается минимальное зло — блокируется целиком сайт по https, при попадании урла в реестр.

RazorBlade @RazorBlade
Если есть возможность подсунуть сертификат в доверенные корневые центры, например в организации с помощью GPO, то на основе этого сертификата, большинство межсетевых экранов могут инспектировать HTTPS траффик и пользователь этого не заметит, если только не посмотрит цепочку сертификатов, т.к. браузер не будет ругаться на валидность сертификата.
Ниже скриншот в случае выхода через MS TMG в нашей организации.