Есть презентация по использованию SSLStrip+ и dns2proxy, а также несколько видео от энтузиастов по данному вопросу, но полной пошаговой инструкции, как и что делать я не нашёл. Поэтому эта заметка восполняет пробел, здесь я попытался максимально полно и пошагово описать запуск SSLStrip+ и dns2proxy. Я делал тестирование на BlackArch, но характер команд таков, что они должны также работать, например, на Kali Linux.
В процессе тестов мне удалось заменить протоколы HTTPS на HTTP для таких сайтов как google.com, yandex.ru, vk.com, не удалось для facebook.com, mail.ru (другие не пробовал).
Установим необходимые нам пакеты:
sudo pacman -S python2-service-identity ettercap-gtk
Обратите внимание, я не стал ставить из репозиториев ни SSLStrip, ни dns2proxy. Поскольку dns2proxy в репозиториях BlackArch отсутствует, а SSLStrip представлена в своей обычной версии (не SSLStrip+).
Все последующие команды я выполнял залогинившись под рутом.
Переключите вашу машину в режим пересылки (форвардинга).
sudo echo "1" > /proc/sys/net/ipv4/ip_forward
Настройте iptables для редиректа HTTP трафика:
sudo iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 2000 sudo iptables -t nat -A PREROUTING -p udp --destination-port 53 -j REDIRECT --to-port 53
Скачиваем и запускаем SSLStrip+.
git clone https://github.com/singe/sslstrip2.git cd sslstrip2/ sudo python2 ./sslstrip.py -l 2000
Скачиваем и запускаем dns2proxy:
git clone https://github.com/singe/dns2proxy.git cd dns2proxy/ sudo python2 dns2proxy.py
Далее меня постигли неудачи с arpspoof и LANs. В BlackArch, кстати, arpspoof называется smikims-arpspoof. У меня по каким-то причинам команда не сработала.
С LANs я делал так. Искал IP жертвы:
sudo nmap -sn 192.168.1.0/24
И запускал программу со следующими аргументами:
sudo lans -u -p -d -ip 192.168.1.33 -i enp0s3
В принципе, спуфинг и сниффинг шёл, поскольку с помощью Net-Creds я могу видеть перехваченные логины и пароли, но всё это шло в обход SSLStrip+ и dns2proxy:
sudo net-creds -i enp0s3
Кстати, при выходе LANs делает очистку, т.е. может ещё раз понадобиться включить форвардинг и правила файервола.
Тогда для спуфинга я решил использовать Ettercap. Делал по классической схеме:
Запускаем графический интерфейс (-G):
sudo ettercap -G
В меню выбираем Sniff, далее Unified, выбираем желаемый интерфейс:
Теперь выбираем Hosts, в нём подпункт Scan for hosts. После окончания сканирования выберите Hosts list.
В качестве Цели1 выберите роутер (Add to Target 1), в качестве Цели2 выберите устройство, которое будете атаковать (Add to Target 2).
Теперь переходим к пункту меню Mitm. Там выберите ARP poisoning… Поставьте галочку на Sniff remote connections.
На этом я остановился, поскольку SSLStrip+ и dns2proxy заработали. Хоть SSLStrip+ явно работала (понижала протокол до HTTP), но в окне программы постоянно появлялись ошибки – возможно, это нормальное поведение.
Интересно, а это можно применить при атаке dns hijacking? С тем же Router Scan by Stas?
Или в таком случае мало привилегий в "контроле трафика" и ничего не выйдет?
Автор, можете ответить? Развернуто желательно) Интересует как подменить запрос dns (гугла например) чтобы загрузить beef на "аналитику" , по https конечно же)))
Если есть доступ к настройкам роутера, то алгоритм примерно следующий:
Здесь я описывал это, приводил настройки для виртуальных хостов веб-сервера и для DNS прокси.
Через HTTPS и HSTS вряд ли это можно сделать в современных браузерах. Но для некоторых сайтов можно обойти HSTS и понизить HTTPS до HTTP.
Описанная выше схема хорошо подходит, например, для кражи учётных данных через созданные клоны сайтов (в статье, на которую дана ссылка, это и описывается).
Если нужно подцепить на BeEF, то алгоритм примерно соответствует вышеописанному. Многие сайты используют jQuery, при этом библиотека размещена не на самом сайте, а делается ссылка на CDN, например:
На вашем сервере поднимается виртуальный хост code.jquery.com и подменяются DNS ответы для code.jquery.com. На своём веб-сервере вы размещаете библиотеку jQuery (чтобы сайты продолжали работать), но в файл к оригинальной библиотеке добавляете код для подцепления на BeEF.
Спасибо за такой развернутый ответ!
Это зависит от сайта или от браузера? В одной из статей тут я читал что удалось понизить https на http для гугла, ссылока на статью и меня конкретно интересует возможность на сервисах гугла или яндекса с условием что есть возможность контроля только DNS.
В чем принципиальное отличие dns2proxy, DNSchef ну и коробочного dnsmasq для этих целей?
HSTS и HTTPS – это не одно и то же. При HSTS сайт включён в браузере в статический список сайтов (HSTS preload list). Суть в том, что если сайт не включён в этот список, то злоумышленник может перехватить первое подключение по протоколу http. После такого перехвата злоумышленник может вырезать из ответов сервера заголовки Strict-Transport-Security или перенаправлять на свой мошеннический сервер, который также будет отправлять ответы без этих заголовков. Т.е. при этом HSTS полностью нивелируется.
У современных браузеров есть этот список сайтов с HSTS, и если злоумышленник понижает протокол до HTTP или использует невалидный сертификат, то браузер просто прекращает это соединение и пишет сообщение об ошибке.
Т.е. дело и в браузере и сайте.
Для SSLStrip+ нужен именно dns2proxy (если есть намерения обходить HSTS). Поскольку суть обхода заключается в том, что адрес сайта (тот, который в адресной строке браузера) меняется на заведомо отсутствующий в HSTS preload list, чтобы это сработало, нужен специальный DNS прокси (dns2proxy). А для DNS спуфинга (DNS hijacking) любая из этих программ подходит. Только у dnsmasq стопятьсот опций – возможно, кому-то её будет труднее настроить. Вообще можно поднять обычный сервер имён (DNS) и использовать его для этого – разницы никакой нет. Смысл dns2proxy и DNSchef в том, что их легче настраивать.
Ещё в этой заметке я в качестве примеров понижал HTTPS до HTTP для Google и YouTube – на момент написания это срабатывало - там есть скриншоты, обратите внимание на название субдоменов (Bettercap также использует связку dns2proxy и SSLStrip+).
Очень интересно, я вижу что упустил многие основы, вы прекрасно все разъяснили!
Возможно у вас есть теоретически материал чтобы я мог пройти все с нуля? )
Я заметил что в рунете мало действительно крутой информации, многие вещи приходиться делать по зарубежным инструкциям или по материалам конференций и если практический результата часто позитивный то теория почти всегда хромает)
Я учусь по англоязычным инструкциям и документации. И практика идёт впереди теории – сначала осваиваю инструменты, а потом разбираюсь с принципами их работы.
Доброго времени суток, отличная документация. Хотел бы больше прояснить по поводу прдуепления beef. Он как я понимаю может выполнять все действия только если человек на сайте подложного домена. Просто уходит в оффлайн и больше ни чего не выйдет сделать если он не посетит ещё раз эту страницу?
Да, если пользователь уходит со страницы, на которой размещён JavaScript BeEF, то он теряется для атакующего.
Спасибо за ответ!!! А если в такой связке как вы писали ранее про библиотеку jquery , будет ли работать- я делаю хост jquery.com и там подцепляю код beef. После чего вижу как появился браузер и нажимаю загрузка флеш например. То я как понимаю на том сайте где у него подружаются эти библиотеки постоянно будет выдавать обновления? Мне по сути нужно в учебных целях в сетях научиться внедрению бэкдоров через dns. С beef это самый лучший способ? Можете посоветовать другие какие то действенные методы с помощью dns. Если говорить про связку dns2proxy то у меня не получилось понизить протокол до htttp. В режиме мониторинга конечно можно это сделать и найти сайт http, но мне важна информация для таких ресурсов как Гугл. Спасибо вам большое за ответы, с уважением
Всем привет, нигде не нашел, по-этому спрошу здесь. Можно ли настроить sslstrip для срабатывания только на определенном списке сайтов?
Привет, как можно доделать с помощью ettercap?