VPN для обычных пользователей. Реальная необходимость или бесполезная опция?
Jun 04, 2013 11:23
В сети много статей про виртуальные частные сети (VPN): руководства по самостоятельной настройке, обзор технологии, примеры использования. Все они в той или иной степени рассчитаны на продвинутых пользователей, которые прекрасно осознают угрозы в современном информационном пространстве и целенаправленно выбирают тот или иной способ защиты. Как же быть обычным пользователям? Что им угрожает? Нужен ли им вообще VPN?
Для ответа на эти вопросы достаточно собрать простейший тестовый стенд с точкой доступа Wi-Fi и анализатором трафика. Результат окажется очень занимательным.
Статья техническая, так что многим детали могут быть непонятны. Но выводы в конце статьи должны быть понятны всем :-) В качестве хакерского оружия берем обычный компьютер со встроенным Wi-Fi адаптером. Включаем точку доступа, я использовал hostapd и dhcp3. Описаний по установке и настройке очень много (раз, два, три). Настраиваем шлюз в интернет. После этого устанавливаем Wireshark, запускаем захват трафика на беспроводном интерфейсе. К точке доступа подключаем мобильное устройство, в моем случае iPad. Эмулируем бесплатную точку доступа в кафе и расслабленного посетителя с мобильным устройством.
В данной статье мы не будем использовать подмену сертификатов и проксирование HTTPS трафика, а рассмотрим простейшие случаи прослушки HTTP. Все персональные данные в нижеприведенных дампах изменены. Начнем со всеми «любимого» ВКонтактика (vk.com). Смотрим трафик пользователя при подключении:
GET / HTTP/1.1 Host: m.vk.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Referer: http://m.vk.com/login?role=fast&to=&s=1&m=1&email=mail%40yandex.ru User-Agent: Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/26.0.1410.53 Mobile/10B329 Safari/8536.25 Accept-Encoding: gzip,deflate,sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3 Cookie: remixlang=0; remixmdevice=768/1024/2/!!!!!!; remixstid=267699470; remixmid=; remixsid6=; remixgid=; remixemail=; remixpass=; remixapi_sid=; remixpermit=; remixsslsid=; remixsid=c04f7b5995b3b54405205a4306d6511c6cd9558f33249c004121c; remixtemp_sid=
Этого достаточно, чтобы зайти «хакеру» под логином этого пользователя. Берем любой плагин для установки cookie (я использовал Cookies Manager+ для FF), прописываем remixlang, remixstid, remixsid из последнего дампа для сайта vk.com, переходим по ссылке https://vk.com/login?role=fast&to=&s=1&__q_hash=bd8b2282f344a97ebe12b0c485952a6f и все - вы в ленте пользователя.
Может быть приложение «ВКонтакте» для iPhone/iPad использует защищенное соединение? Нет, это не так. Анализатор трафика показывает HTTP POST запросы к API:
Параметр access_token - это то, что можно использовать для авторизации под чужим именем.
Получается, что поклонникам «ВКонтакте» разумно подключаться только по HTTPS, но принудительное перенаправление с HTTP на HTTPS на серверах «ВКонтакте» не активировано. Так же приложение для Apple iOS использует HTTP, тут угроза постоянна. Без VPN подключаться к неизвестным сетям очень рискованно.
Смотрим дальше. «Живой Журнал» очень популярен среди творческой интеллигенции, дизайнеров и оппозиционеров. Для некоторых ведение блога в ЖЖ является основным средством заработка. Заходим на сайт ЖЖ с мобильного устройства под своим аккаунтом, смотрим трафик на нашем «хакерском» шлюзе. [Содержимое запроса]
GET / HTTP/1.1 Host: www.livejournal.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/26.0.1410.53 Mobile/10B329 Safari/8536.25 Accept-Encoding: gzip,deflate,sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3 Cookie: ljuniq=EQwqgJzEJVk0mqr%3A1370276381%3Apgstats0; ljmastersession=v2:u12213803:s119:a68UFciy4PP:g398155211a6adc80bc47746a28dbcb9146b6a257//1; ljloggedin=v2:u12213003:s119:t1370286730:gb4fd54e13950d47f0940aa78f3de73582ebd4c64; BMLschemepref=horizon; langpref=ru/1370272950; ljsession=v1:u12213803:s119:t1370275200:gf1c7f737342bcb5759c70a257cbf97acc9512731//1; PRUM_EPISODES=s=1370747384764&r=http%3A//www.livejournal.com/; __utma=48425145.515596637.1370276682.1370276682.1370281850.2; __utmb=48425145.1.10.1370281850; __utmc=48425145; __utmz=48425145.1370276682.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Вот и все, все данные для несанкционированного подключения у нас есть. Достаточно прописать в браузере cookies для ljuniq, ljmastersession, ljloggedin и ljsession. После этого смело заходим на http://livejournal.com и пишем пост от имени жертвы.
И так практически для всех сервисов, использующих HTTP во время процесса авторизации пользователя.
Facebook, Twitter, Github, LinkedIn - молодцы, на их ресурсах авторизация только через HTTPS. То же самое касается почтовых систем Gmail и Yandex. Серьезные компании начинают всерьез задумываться о безопасности данных своих пользователей.
GET /registered HTTP/1.1 Host: partner.yandex.ru Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/26.0.1410.53 Mobile/10B329 Safari/8536.25 Accept-Encoding: gzip,deflate,sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3 Cookie: yandexuid=9257588111370282489; _ym_visorc=b; ys=udn.bXRzLZ1heA%3D%3D; yp=1685643738.udn.bXRzLW1heA%3D%3D; yandex_login=mail; my=YzYBSQA=; L=X3MKVQFiRwt/Ql9afF5hfnZBbwBCeHkXUypkHiQcHkwyOwFcRjh9JnMzKT0GXD0NSDVcdEMCUUB4XyEDqhpbNQ==.1620283888.9752.254668.6b58de4c285c135c1273a411170dba5c; Session_id=2:1685643738.-875.0.1121887.8:1370283888922:1422936785:15.0.1.1.0.73736.1393.a9075755a24d0d44ef3f216256625665
Ну и далее все печально, прописываем yandexuid, ys, yp,yandex_login, my, L, Session_id, заходим на http://partner.yandex.ru/registered и видим консоль администратора партнерской программы. Все остальные сервисы Яндекса тоже доступны, включая почту.
Для таких случаев оптимальным вариантом является использование VPN на мобильных устройствах. Крайне желательно выбирать решения с автоматическим подключением к VPN при любом исходящем трафике. Для iOS устройств такая технология называется VPN-on-Demand, для Android устройств - Always-on VPN.
Дополнительным преимуществом VPN является сокрытие адресов, которые посещал пользователь. Для прослушивающей стороны любая информация, даже просто история посещений, может быть полезна для дальнейшей атаки на пользователя. Если соединение идет через VPN, то подобная информация недоступна.
Администраторам серверов желательно все формы авторизации размещать на HTTPS страницах. Дополнительно рекомендуется добавлять заголовок Strict-Transport-Security с длительным сроком действия в ответы сервера. Это позволит избежать ситуации, описанной выше для partner.yandex.ru.
Получается, что самым обычным пользователям совершенно необходимы решения на базе VPN.
С моей точки зрения, наиболее удобно и оправдано использование решений на базе OpenVPN или IPSec. OpenVPN работает практически на всех платформах, но требует установки стороннего приложения на мобильное устройство. Поддержка IPSec встроена в базовую функциональность наиболее популярных мобильных платформ. В Apple iOS есть поддержка конфигурационных профилей, настройка VPN сводится к установке профиля на устройство. Об этом я писал в статье на Хабре.
Мой проект ruVPN.net был специально создан для защиты от описанных выше угроз. С июня началась коммерческая эксплуатация инфраструктуры VPN для Apple iOS устройств (iPhone, iPad) с поддержкой автоматического подключения (VPN-on-Demand). Подключайтесь, приглашайте друзей. Не пренебрегайте безопасностью ваших данных!