Введение
SSL stripping — это тип атаки "человек посередине" (Man-in-the-Middle, MITM), которая заставляет веб-браузер подключаться к веб-сайту через незашифрованное HTTP-соединение, даже если пользователь намеревался подключиться безопасно через HTTPS. Это позволяет злоумышленнику перехватывать и читать весь трафик между пользователем и веб-сайтом.
В этой лабораторной работе вы будете использовать инструмент Wifiphisher для выполнения атаки SSL stripping. В частности, вы изучите опцию "Without a spoofer" (Без спуфера), которая полагается на перехват и модификацию трафика без использования поддельного SSL-сертификата. Это практическое упражнение поможет вам понять механику этой атаки в контролируемой и безопасной среде.
Запуск атаки с использованием captive portal
На этом шаге вы запустите инструмент Wifiphisher для создания поддельной точки доступа (AP) и инициирования атаки с использованием captive portal. Поскольку виртуальная среда LabEx не имеет физической беспроводной карты, мы будем использовать специальные опции для симуляции атаки.
Сначала откройте терминал. Мы запустим wifiphisher с помощью sudo, поскольку ему требуются повышенные привилегии для управления сетевыми интерфейсами и службами. Мы будем использовать опцию --nojamming, чтобы предотвратить попытки глушения реальных WiFi-сетей, и --essid "Free WiFi", чтобы назвать нашу поддельную сеть. Нам также необходимо указать сценарий captive portal; мы будем использовать firmware-upgrade.
Выполните следующую команду в вашем терминале:
sudo wifiphisher --nojamming --essid "Free WiFi" -p firmware-upgrade
После выполнения команды Wifiphisher запустится. Он автоматически обнаружит ваши сетевые интерфейсы. Вам может быть предложено выбрать интерфейс для AP и интерфейс для NAT. Для обоих запросов вы обычно можете нажать Enter, чтобы принять выбор по умолчанию, который обычно является eth0.
Вы увидите вывод, похожий на этот, по мере инициализации инструмента:
[*] Starting Wifiphisher 1.4GIT ( https://wifiphisher.org ) at 2023-10-27 10:00
[+] Timezone detected. Setting channel hopping to the appropriate regulatory domain.
[+] Selecting eth0 for the AP interface.
[+] Selecting eth0 for the Internet-connected interface.
...
При запросе SSL выберите опцию "Without a spoofer"
На этом шаге вы настроите метод SSL stripping для атаки. После первоначальной настройки Wifiphisher спросит вас, как вы хотите обрабатывать трафик, защищенный SSL/TLS. Это критически важный выбор, который определяет характер атаки "человек посередине".
Wifiphisher предложит вам два основных варианта:
- With a spoofer (С использованием спуфера): Этот метод генерирует поддельный SSL-сертификат "на лету" и предъявляет его клиенту. Это часто вызывает предупреждение безопасности в браузере клиента.
- Without a spoofer (Без спуфера): Этот метод пытается понизить соединение до обычного HTTP без использования какого-либо сертификата. Он полагается на то, что браузер клиента не будет принудительно устанавливать безопасное соединение.
В вашем терминале вы увидите запрос, подобный этому:
[?] How do you want to handle SSL/TLS-protected traffic?
1. With a spoofer (Generate a fake cert on the fly and spoof the domain)
2. Without a spoofer (Downgrade to HTTP)
[1/2]:
Для этой лабораторной работы мы изучаем второй вариант. Введите 2 и нажмите Enter.
2
После вашего выбора Wifiphisher завершит настройку поддельной точки доступа и captive portal. Затем он будет готов принимать подключения клиентов. В терминале будут отображаться сообщения о том, что HTTP и HTTPS прокси-серверы запущены.
[*] Starting the HTTP and HTTPS proxy servers...
[*] Starting AP...
Понимание того, что это зависит от уязвимостей браузера клиента
На этом шаге мы обсудим механизм, лежащий в основе опции SSL stripping "Without a spoofer". Здесь нет команд для выполнения; этот раздел предназначен для вашего концептуального понимания.
Метод "Without a spoofer" является более тонкой формой атаки. Вот как он работает:
- Первоначальный запрос: Жертва подключается к вашей поддельной сети "Free WiFi". Она открывает браузер и пытается перейти на безопасный сайт, например,
https://example.com. - Перехват: Wifiphisher, выступая в роли шлюза, перехватывает этот запрос до того, как он достигнет интернета.
- Понижение уровня: Вместо того чтобы пытаться выдать себя за
example.comс помощью поддельного сертификата, Wifiphisher делает кое-что другое. Он перенаправляет запрос пользователя на реальныйhttps://example.com, но возвращает контент жертве через обычное соединениеhttp://. - Перезапись контента: Важно отметить, что Wifiphisher сканирует HTML-контент, полученный от реального сервера, и переписывает все ссылки. Любая ссылка, которая была
https://..., изменяется наhttp://.... Это позволяет пользователю как можно дольше оставаться в незашифрованном сеансе.
Успех этой атаки зависит от двух основных факторов:
- Пользователь не замечает отсутствия значка замка в браузере.
- Целевой веб-сайт не использует HTTP Strict Transport Security (HSTS). HSTS — это политика безопасности, которую веб-серверы могут использовать, чтобы сообщить браузерам, что с ними следует взаимодействовать только через HTTPS. Если браузер ранее получал заголовок HSTS от сайта, он откажется подключаться через HTTP, что сделает эту атаку неэффективной.
Подключение клиента и попытка перехода на сайт HTTPS
На этом шаге вы смоделируете подключение клиента к поддельной точке доступа и попытку доступа к безопасному веб-сайту. В реальном сценарии жертва подключила бы свое устройство к сети "Free WiFi". Здесь мы смоделируем это с помощью команды curl в новом терминале.
Сначала откройте новую вкладку терминала. Вы можете сделать это, нажав значок + на панели терминала. Этот новый терминал будет действовать как наш "клиент-жертва".
В этом новом терминале мы будем использовать curl для попытки доступа к сайту HTTPS. Мы будем использовать httpforever.com, сайт, предназначенный для тестирования, который не применяет HSTS. Флаг -v (verbose) покажет нам подробную информацию о процессе подключения.
Выполните следующую команду в новом терминале:
curl -v https://httpforever.com
Поскольку Wifiphisher контролирует сеть, этот запрос будет перехвачен. Вместо того чтобы достичь реального http://httpforever.com, он будет обработан нашим инструментом атаки.
Наблюдение за понижением уровня соединения до HTTP
На этом шаге вы будете наблюдать результаты атаки как в терминале клиента, так и в терминале атакующего, чтобы подтвердить успешное понижение уровня соединения.
Сначала посмотрите на вывод в вашем терминале клиента (где вы запускали curl). Подробный вывод покажет, что ваш запрос к https://httpforever.com привел к перенаправлению. Вы увидите код состояния 302 Found и заголовок Location, указывающий на адрес HTTP, который является страницей captive portal.
Вывод будет выглядеть примерно так:
* Trying 10.0.0.1:443...
* Connected to httpforever.com (10.0.0.1) port 443 (#0)
...
< HTTP/1.1 302 Found
< Location: http://10.0.0.2:8080/
< Content-Length: 0
< Date: Fri, 27 Oct 2023 10:05:00 GMT
< Server: Python/3.10 aiohttp/3.8.5
...
Обратите внимание, что заголовок Location перенаправляет вас на адрес http://. Это подтверждает понижение уровня.
Затем вернитесь к вашему первому терминалу, где запущен wifiphisher. Вы увидите новые записи в журнале, показывающие, что клиент подключился и что его запросы обрабатываются. Он зарегистрирует HTTP GET-запрос от симулированного клиента.
[+] 192.168.1.100 victim-device connected to Free WiFi
[*] Sent a captive portal page to 192.168.1.100
[+] GET 192.168.1.100: http://httpforever.com/
Это подтверждает, что атакующий успешно перехватывает трафик в открытом виде.
Чтобы завершить лабораторную работу, остановите инструмент Wifiphisher, переключившись на его терминал и нажав Ctrl+C.
Резюме
В этой лабораторной работе вы успешно продемонстрировали атаку SSL stripping, используя опцию 'Without a spoofer' (Без спуфера) в Wifiphisher.
Вы узнали, как:
- Запустить Wifiphisher для создания поддельной точки доступа для атаки с использованием captive portal.
- Выбрать метод SSL stripping 'Without a spoofer'.
- Смоделировать подключение клиента с помощью
curlв отдельном терминале. - Наблюдать за свидетельствами понижения уровня соединения с HTTPS до HTTP, анализируя вывод как от клиента, так и от инструмента атакующего.
Это упражнение подчеркивает важность механизмов безопасности, таких как HSTS, для защиты от подобных атак понижения уровня. Поздравляем с завершением этой лабораторной работы!
