В этой статье мы рассмотрим атаки на Proxy-сервер методом MiTM. Если совсем коротко, то все проблемы с безопасностью ******-серверов восходят к Basic и Digest аутентификации, которая обычно на них и применяется; и HTTPS ****** в этом плане ничуть не безопаснее. MiTM против Proxy:Задача: проверить, насколько ******-сервер подвержен перехвату пароля, а также проверить, насколько HTTPS ****** безопаснее. Проверить возможность понижение подключения через ******-сервер с HTTPS до HTTP. Для этого выполним атаку человек-посередине в отношении тестового компьютера, на котором пользователь использует веб-браузер выполняющий подключения через ******-сервер. Для выполнения атаки человек-посередине будем использовать bettercap: sudo bettercap Сканируем сеть: net.show net.probe on net.show Тестовый компьютер имеет IP адрес 192.168.1.34, запускаем в отношении него атаку ARP-спуфинг, благодаря которой компьютер-жертва будет считать, что теперь шлюзом (роутером) является машина атакующего и обмен трафика теперь будет происходить для компьютера жертвы через компьютер атакующего: set arp.spoof.targets 192.168.1.34 arp.spoof on Настроим сохранение трафика в файл http-proxy.pcap (для последующего анализа) и запустим снифинг: set net.sniff.output /home/mial/http-proxy.pcap net.sniff on Дождёмся, когда на тестовом компьютере будет открыт любой сайт через ****** сервер. Откроем файл http-proxy.pcap в Wireshark и воспользуемся следующим фильтром: http.proxy_authorization Можно увидеть строку, переданную как простой текст: Proxy-Authorization: Basic cHJveHlfdXNlcjpMa2RmTGw1a2o3TGVn\r\n Переданная строка — это имя пользователя и пароль от ****** сервера, закодированные в Base64. Для декодирования используем следующую команду: echo cHJveHlfdXNlcjpMa2RmTGw1a2o3TGVn | base64 -d Вывод: proxy_user:LkdfLl5kj7Leg proxy_user — это имя пользователя, а LkdfLl5kj7Leg — это пароль от ******-сервера. То есть не смотря на сложность пароля, его очень легко перехватить и расшифровать. Теперь на тестовом компьютере в веб-браузере мы удаляем настройки HTTP ****** и включаем HTTPS ******. Идея в том, что HTTPS подразумевает зашифрованные соединения и, возможно, пароль не будет передаваться в открытом виде: Настраиваем сохранять захваченный трафик в файл https-proxy.pcap, для этого перезапускаем сниффинг: net.sniff off set net.sniff.output /home/mial/https-proxy.pcap net.sniff on Откроем файл https-proxy.pcap в Wireshark и вновь воспользуемся фильтром: http.proxy_authorization Как видно по скриншоту, HTTPS-****** также передаёт пароль в виде простого текста: Разница между HTTP и HTTPS ****** есть, но только не в процессе аутентификации — в любом случае пароль передаётся в виде простого текста. Защита: 1. Никогда не используйте Basic аутентификацию; 2. Вместо ******-сервера используйте ***. источник:https://telegra.ph/Vzlom-Proxy-servera-MitM-HTTPHTTPS-09-15