Использование VPN не позволяет надежно защитить публичную сеть Wi-Fi. Подключение к Интернет через публичные точки доступа Wi-Fi прямой путь к потере ваших логинов и приватных данных! Как это вообще возможно

03.04.2019

Подключаясь к Интеренету через бесплатную точку Wi-Fi доступа Вы рискуете лишиться всех ваших паролей и приватных данных, т.к. весь ваш трафик может быть отслежен как через "эфир" так и на роутере (компьютере через который вы подключаетесь в Интернет). Т.е. все ваши логины, пароли, номера кредитных карт, ваша переписка и места веб-серфинга могут стать достоянием хакеров или не добросовестных администраторов точки доступа.

Black Hat: хотспоты гарантируют кражу приватных данных

Хотспоты – точки общего доступа к Wi-Fi – практически все представляют угрозу утечки реквизитов, заявил на конференции Black Hat в Лас-Вегасе Роб Грэм (Rob Gram), исполнительный директор Errata Security.

Для кражи реквизитов достаточно использовать простейший снифер – программу для записи сетевого трафика, проходящего через сетевой интерфейс. Грэм показал собравшимся куки к учётной записи Gmail одного из присутствующих, «пойманные» снифером. Куки используются почтовыми сайтами для хранения идентификатора сессии, выдаваемого после ввода верных реквизитов доступа. Используя этот идентификатор, атакующий может выдать себя за другого пользователя. «Веб 2.0 взломан у основания», - заключил Грэм, подразумевая, что любой сетевой снифер в Wi-Fi-сети может получить все требуемые реквизиты.

До сих пор считалось, что доступа по шифрованному протоколу SSL (URL с приставкой https://) достаточно, чтобы посторонние не смогли «подсмотреть» трафик. Однако популярные почтовые сервисы по умолчанию шифруют трафик не на всех этапах. Что же касается времени доступа с использованием похищенных куки, то некоторые действительны годами. Единственный способ защиты, по мнению Грэма, – настроить доступ к веб-сервисам так, чтобы связь с сервером шифровалась полностью.

Наши комментарии по безопасности использования Wi-Fi

Все описанные опасности абсолютно реальны, но все эти проблемы решаются простым использованием шифрованного VPN соединения, работающего поверх Wi-Fi . Поэтому мы настоятельно рекомендуем вам использовать только шифрованный VPN доступ для работы с в Интерет через бесплатные и даже платные Wi-Fi точка доступа.

Если вы планируете при поездке на отдых или в командировку использовать Wi-Fi интернет, мы рекомендуем вам предварительно купить у нас и настроить доступ к VPN сервису. Это гарантирует вам безопасность ваших логинов, паролей и данных во время путешествий, а значит хорошее настроение и сэкономленные нервные клетки.

Для «прослушивания» и перехвата незашифрованного или плохо зашифрованного трафика злоумышленникам достаточно находиться рядом с точками доступа. Дальнейший анализ пакетов позволяет перехватить все конфиденциальные данные, которые пользователь вводит в это время. В первую очередь это логины и пароли от соцсетей или почты: тут достаточно даже простого смартфона с установленной на него программой DroidSheep.

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

Хакер легко входит в чужую учетную запись и может от имени жертвы сделать все, что угодно - хоть спам друзьям разослать, хоть вообще удалить аккаунт.

А если вы будете оплачивать что-то с помощью банковской карты, то у вас могут украсть ее данные, включая CVC-код. Обычно платежные операции производятся по защищенному протоколу HTTPS, однако он относительно легко взламывается, например, с помощью подмены ключей.

Фото: Nana B Agyei / Flickr / CC BY 2.0

Опасность №2: фейковые сети

Злоумышленнику достаточно установить в общественном месте ноутбук с запущенной на нем точкой доступа с распространенным именем. Например, «Free Wi-Fi»: к ней наверняка многие захотят подключиться.

Также часто используются названия популярных бесплатных сетей в том или ином городе. Так, например, если в Москве назвать сеть «Beeline_WiFi_Free» или «Mosmetro_free», к ним тут же начнут подключаться все заинтересованные в бесплатном интернете прохожие. Они сразу полезут в почту и соцсети, а значит, все логины и пароли автоматически окажутся в руках вероятного противника.

Кроме того, фейковая сеть - просто рай для любителей фишинга, ведь в ней можно «поднять» DNS-сервер, который будет переадресовывать всех подключившихся к ней на подставные сайты банков и прочих сервисов, а значит, выудить персональные данные будет очень просто.

Все это, естественно, происходит автоматически при помощи специальным образом настроенного ПО: на выходе получается удобная база данных с логинами, паролями, номерами и т.п.

Как это вообще возможно

Как правило, бесплатные точки доступа Wi-Fi не используют шифрование - то есть, они не запароленные. Даже если какая-то авторизация используется в дальнейшем (например, вам нужно вводить пароль на лендинг-странице, открывающейся в браузере, или подтверждать свой номер телефона (без этого, кстати, в России нельзя), то данные между вашим смартфоном, планшетом или ноутбуком и точкой доступа передаются без какого-либо шифрования, в открытом виде, а это является излюбленной мишенью для хакеров.

Чаще всего они орудуют в местах скопления большого количества потенциальных жертв - например, возле популярных достопримечательностей или в общественном транспорте, включая аэропорты и вокзалы. Жертвами обычно становятся туристы: дорогой data-роуминг вынуждает их искать бесплатные точки. Ну, а в местах с плохим покрытием сотовых сетей, например, в метро, атакуют и местных.

Если точка доступа не зашифрована, то киберпреступник с легкостью может получить доступ к данным, передаваемым по этим сетям. По данным «Лаборатории Касперского», в Москве таких точек 16%.

Решение проблемы

Некоторые «специалисты», конечно, советуют вообще не пользоваться открытыми сетями Wi-Fi. На самом деле решение есть – это VPN: «виртуальная частная сеть», туннель до надежного узла со стойким шифрованием. Перехватить и расшифровать трафик при его использовании практически невозможно. Любой современный гаджет поддерживает VPN, нужно только его настроить.

Продвинутый пользователь, имеющий дома внешний IP-адрес (эта услуга у разных провайдеров, в зависимости от тарифа, предоставляется бесплатно или стоит не дороже 150-300 рублей в месяц) и не самый старый роутер (например, у Asus функция есть даже в самых дешевых моделях), может включить VPN и пользоваться им без каких-либо ограничений по скорости и трафику. В роутере задается логин и пароль, а в мобильном устройстве - логин, пароль и домашний IP-адрес.

Если вы пользуетесь общественным Wi-Fi редко, подойдут и бесплатные сервисы. Например, Cloud VPN существует в виде приложения для смартфона, чтобы не надо было ничего настраивать, а Browsec - это не только приложение, но еще и плагины для популярных браузеров.

Мне приходится подключаться к публичным Wi-Fi-сетям, но в таких случаях я обязательно использую виртуальную частную сеть (VPN). Это отличный способ обезопасить себя, который я смело могу рекомендовать. Но и VPN не гарантирует 100% защиты, поэтому необходимо использовать качественное антивирусное ПО и своевременно обновлять все установленные программы.

Евгений Касперский

Срочно понадобился интернет в пути? Бесплатная общественная сеть Wi-Fi является одним из тех маленьких элементов роскоши, которые могут облегчить путешествие, но вы должны проявлять осторожность в том, как вы его используете.


Вот несколько советов о том, на что нужно обратить внимание при использовании общественного Wi-Fi, используете ли ноутбук, смартфон или планшет.

Выбирайте сеть осознанно.

Испытываете искушение подключиться к открытой точке с названием "Бесплатный Wi-Fi"? Стоит проделать нектороую подготовительную работу, прежде чем выбрать любую не знакомую вам сеть. Например, если вы находитесь в кафе или кинотеатре проверьте имя сети или обратите внимание на обозначении перед подключением.

Для тех, кто хочет перехватить ваши данные атакой по методу человек-в-середине, довольно легко создать сеть под названием "Бесплатный Wi-Fi", или как-то похоже, имя так же может содержать наименование места вашего нахождения, чтобы заставить вас думать, что это легальный источник.

При подключении с помощью Windows, выключите общий доступ к файлам и пометьте сеть Wi-Fi как публичную сеть. Вы можете найти эту опцию в настройках "Панель управления > Центр управления сетями и общим доступом > Изменить дополнительные параметры общего доступа". Под заголовком "Общий", отключите общий доступ к файлам. Вы также можете включить брандмауэр Windows при подключении к сети общего пользования, если он ещё не активирован. Эти параметры также находятся в "Панель управления> Брандмауэр Windows".



На Маке откройте Системные настройки и выберите значок "Общий доступ". Здесь снимите галочку рядом с общим доступом к файлам.

Используйте VPN.

Создание виртуальной частной сети (VPN) является одним из лучших способов сохранить свой сеанс просмотра в тайне. Клиент VPN шифрует трафик между вашим устройством и сервером VPN, а значит, гораздо сложнее для потенциального нарушителя узнать ваши данные.

Если вы ещё не настроили VPN через своего работодателя или на рабочем месте, есть и другие варианты. Бесплатная версия SecurityKISS предлагает свободный от рекламы доступ VPN с ограничением по объёму передачи данных до 300МБ/день. Этого достаточно для проверки электронной почты, просмотра карты и другого простого использования Wi-Fi.

Существует специальный клиент для Windows, но для устройств на iOS и Андроиде, вы можете зарегистрировать бесплатный аккаунт, который будет генерировать уникальное имя пользователя и пароль. Вам будет отправлен список серверов, адреса которых можно ввести вручную в устройстве, чтобы правильно настроить VPN.

Подробные инструкции о том, как настроить VPN на устройстве iOS и на Андроиде .



Есть много других доступных сервисов VPN, в том числе платных и бесплатных. Вам стоит самому провести некоторое исследование, чтобы выяснить, какие из них лучше подходят для ваших потребностей, особенно если вы часто используете интернет.

Disconnect.me помогает защитить от "кражи сессии" через расширения браузера для Хром, Опера и Сафари, но он также предлагает автономное Андроид-приложение под названием Secure Wireless с предустановленным VPN, который автоматически обнаруживает незащищённый Wi-Fi и активирует VPN, где это необходимо.

Проверьте HTTPS.

Как говорится в старой поговорке, проверьте замок в вашем браузере, чтобы убедиться в безопасности. Один из способов заставить ваш браузер использовать HTTPS - через расширения, такие как HTTPS Everywhere. Эта функция доступна для Хрома, Фаерфокса, Фаерфокса для Андроида и Оперы.

Важно отметить, что HTTPS Everywhere работает методом активации шифрования на всех поддерживаемых разделах сайта. Как указано в его FAQ:
"HTTPS Everywhere полностью зависит от функций безопасности отдельных веб-сайтов, которые вы используете. Он активирует эти функции безопасности, но он не может создать их сам, если их не существует. Если вы используете сайт не поддерживающий HTTPS Everywhere или сайт, который предоставляет информацию в небезопасном виде, HTTPS Everywhere не может обеспечить дополнительную защиту по использованию этого сайта".

Проверьте свои приложения на актуальные заплатки (патчи) безопасности.

Пора приступить к формированию хороших привычек ставить патчи. Держите ваш браузер и интернет-устройства в постоянном обновлении, но делайте это в доверенной домашней или рабочей сети, а не в общественной сети Wi-Fi.

Были случаи, когда пользователя застигали врасплох при подключении к общественной или гостиничной сети Wi-Fi и обманом вынуждали их обновить программное обеспечение. И если пользователь соглашался, на компьютер устанавливалась вредоносная программа.

Кроме того, если вы выходите в сеть с мобильного устройства, не думайте, что ваши приложения автоматически безопасны или с используют HTTPS. Если это явно не указано разработчиком приложений, лучше предположить, что приложение не соблюдает режим безопасности. В этом случае, вы должны использовать свой браузер, чтобы войти на сервис и проверить, статус HTTPS в строке состояния.

Включение двухфакторной аутентификации.

Хорошей практикой является включение двухфакторной аутентификации на различных сервисах, которые её поддерживают, это: Гмаил, Твиттер и Фейсбук. Таким образом, даже если кто-то всё же смог вынюхать пароль, когда вы были подключены к общественной сети Wi-Fi, у вас есть дополнительный уровень защиты.

Что касается паролей, старайтесь не использовать один и тот же пароль на нескольких сервисах. Есть много менеджеров паролей, чтобы упростить работу с ними.

Удаляйте сети.

После того как вы сделали всё нужное на своей веб-странице, убедитесь, что вы вышли из любых сервиов, в которые только-что входили. Затем, заставьте ваше устройство "забыть" сеть. Это означает, что ваш телефон или ПК в следующий раз не будет подключаться к сети автоматически, если вы находитесь в зоне её действия.

В Windows, вы можете убрать галочку с "Подключиться автоматически" рядом с названием сети или перейти в "Панель управления> Центр управления сетями и общим доступом" и нажать на название сети. Нажмите на "Управление беспроводными сетями", а затем снимите галочку "Подключаться автоматически, если сеть в радиусе действия".

На Маке войдите в Системные настройки, выберите "Сеть" и в разделе Wi-Fi нажмите кнопку "Дополнительно". Тут снимите галочку "Помнить сети, к которым подключался этот компьютер". Вы можете также по отдельности удалять сети, выбирая их имя и нажимая кнопку минус.



В Андроиде, вы можете сделать это, войдя в список сетей Wi-Fi, нажать и удерживать на имени сети и выберать "Удалить эту сеть". В iOS войдите в настройки, выберите Wi-Fi сети, имя сети и выберите "Удалить эту сеть". В качестве дополнительной меры предосторожности, вы можете также включить параметр "Подтверждать подключение", который также находится в меню Wi-Fi сетей.

Наконец, будьте очень осторожны с тем, что вы делаете в общественной небезопасной сети Wi-Fi. Сессию интернет-банка лучше сохранить до того времени, когда вы сможете подключиться через сотовый интернет или в защищённой сети.

Первое, что приходит в голову при упоминании VPN, - это анонимность и защищенность передаваемых данных. Так ли это на самом деле? Давай разберемся.

Когда необходимо получить доступ к корпоративной сети, безопасно передать важную информацию по открытым каналам связи, скрыть свой трафик от бдительного взора провайдера, скрыть свое реальное местоположение при проведении каких-либо не совсем законных (или совсем не законных) действий, обычно прибегают к использованию VPN. Но стоит ли слепо полагаться на VPN, ставя на кон безопасность своих данных и собственную безопасность? Однозначно - нет. Почему? Давай разбираться.

WARNING

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.

VPN нам нужен!

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

Утечка VPN-трафика

Первая проблема, связанная с виртуальными частными сетями, - это утечка трафика. То есть тот трафик, который должен быть передан через VPN-соединение в зашифрованном виде, попадает в сеть в открытом виде. Данный сценарий не является следствием ошибки в VPN-сервере или клиенте. Здесь все гораздо интереснее. Самый простой вариант - внезапный разрыв VPN-соединения. Ты решил просканировать хост или подсеть с помощью Nmap, запустил сканер, отошел на несколько минут от монитора, и тут VPN-соединение внезапно отвалилось. Но сканер при этом продолжает работать. И сканирование идет уже с твоего адреса. Вот такая неприятная ситуация. Но есть сценарии и интересней. Например, утечка VPN-трафика широко распространена в сетях (на хостах), поддерживающих обе версии протокола IP (так называемые dual-stacked сети/хосты).

Корень зла

Сосуществование двух протоколов - IPv4 и IPv6 - имеет множество интересных и тонких аспектов, которые могут приводить к неожиданным последствиям. Несмотря на то что шестая версия протокола IP не имеет обратной совместимости с четвертой версией, обе эти версии как бы «склеены» вместе системой доменных имен (DNS). Чтобы было понятней, о чем идет речь, давай рассмотрим простенький пример. Например, возьмем сайт (скажем, www.example.com), который имеет поддержку IPv4 и IPv6. Соответствующее ему доменное имя (www.example.com в нашем случае) будет содержать DNS-записи обоих типов: А и АААА. Каждая А-запись содержит один IPv4-адрес, а каждая АААА-запись содержит один IPv6-адрес. Причем для одного доменного имени может быть по несколько записей обоих типов. Таким образом, когда приложение, поддерживающее оба протокола, захочет взаимодействовать с сайтом, оно может запросить любой из доступных адресов. Предпочитаемое семейство адресов (IPv4 или IPv6) и конечный адрес, который будет использоваться приложением (учитывая, что их существует несколько для четвертой и шестой версий), будет отличаться от одной реализации протокола к другой.

Это сосуществование протоколов означает, что, когда клиент, поддерживающий оба стека, собирается взаимодействовать с другой системой, наличие А- и АААА-записей будет оказывать влияние на то, какой протокол будет использоваться для связи с этой системой.

VPN и двойной стек протоколов

Многие реализации VPN не поддерживают или, что еще хуже, полностью игнорируют протокол IPv6. При установке соединения программное обеспечение VPN берет на себя заботу по транспортировке IPv4-трафика - добавляет дефолтный маршрут для IPv4-пакетов, обеспечивая тем самым, чтобы весь IPv4-трафик отправлялся через VPN-соединение (вместо того чтобы он отправлялся в открытом виде через локальный роутер). Однако, если IPv6 не поддерживается (или полностью игнорируется), каждый пакет, в заголовке которого указан IPv6-адрес получателя, будет отправлен в открытом виде через локальный IPv6-роутер.

Основная причина проблемы кроется в том, что, хотя IPv4 и IPv6 - два разных протокола, несовместимых друг с другом, они тесно используются в системе доменных имен. Таким образом, для системы, поддерживающей оба стека протоколов, невозможно обеспечить безопасность соединения с другой системой, не обеспечив безопасность обоих протоколов (IPv6 и IPv4).

Легитимный сценарий утечки VPN-трафика

Рассмотрим хост, который поддерживает оба стека протоколов, использует VPN-клиент (работающий только с IPv4-трафиком) для подключения к VPN-серверу и подключен к dual-stacked сети. Если какому-то приложению на хосте нужно взаимодействовать с dual-stacked узлом, клиент обычно запрашивает и А-, и АААА-DNS-записи. Так как хост поддерживает оба протокола, а удаленный узел будет иметь оба типа DNS-записей (А и АААА), то одним из вероятных вариантов развития событий будет использование для связи между ними IPv6-протокола. А так как VPN-клиент не поддерживает шестую версию протокола, то IPv6-трафик не будет отправляться через VPN-соединение, а будет отправляться в открытом виде через локальную сеть.

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

Преднамеренно вызываем утечку VPN-трафика

Атакующий может преднамеренно вызвать подключение по протоколу IPv6 на компьютере жертвы, посылая поддельные ICMPv6 Router Advertisement сообщения. Подобные пакеты можно рассылать при помощи таких утилит, как rtadvd , SI6 Networks’ IPv6 Toolkit или THC-IPv6 . Как только соединение по протоколу IPv6 установлено, «общение» с системой, поддерживающей оба стека протоколов, может вылиться, как рассмотрено выше, в утечку VPN-трафика.

И хотя данная атака может быть достаточно плодотворной (из-за растущего числа сайтов, поддерживающих IPv6), она приведет к утечке трафика, только когда получатель поддерживает обе версии протокола IP. Однако для злоумышленника не составит труда вызвать утечки трафика и для любого получателя (dual-stacked или нет). Рассылая поддельные Router Advertisement сообщения, содержащие соответствующую RDNSS-опцию, атакующий может прикинуться локальным рекурсивным DNS-сервером, затем провести DNS-спуфинг, чтобы осуществить атаку man-in-the-middle и перехватить соответствующий трафик. Как и в предыдущем случае, такие инструменты, как SI6-Toolkit и THC-IPv6, могут легко провернуть такой трюк.

Совсем не дело, если трафик, не предназначенный для чужих глаз, попадет в открытом виде в сеть. Как же обезопаситься в таких ситуациях? Вот несколько полезных рецептов:

  1. Если VPN-клиент сконфигурирован таким образом, чтобы отправлять весь IPv4-трафик через VPN-соединение, то:
  • если IPv6 VPN-клиентом не поддерживается - отключить поддержку шестой версии протокола IP на всех сетевых интерфейсах. Таким образом, у приложений, запущенных на компьютере, не будет другого выбора, как использовать IPv4;
  • если IPv6 поддерживается - убедиться, что весь IPv6-трафик также отправляется через VPN.
  1. Чтобы избежать утечки трафика, в случае если VPN-соединение внезапно отвалится и все пакеты будут отправляться через default gateway, можно:
  2. принудительно заставить весь трафик идти через VPN route delete 0.0.0.0 192.168.1.1 // удаляем default gateway route add 83.170.76.128 mask 255.255.255.255 192.168.1.1 metric 1
  • воспользоваться утилитой VPNetMon , которая отслеживает состояние VPN-соединения и, как только оно пропадает, мгновенно завершает указанные пользователем приложения (например, торрент-клиенты, веб-браузеры, сканеры);
  • или утилитой VPNCheck , которая в зависимости от выбора пользователя может либо полностью отключить сетевую карту, либо просто завершить указанные приложения.
  1. Проверить, уязвима ли твоя машина к утечке DNS-трафика, можно на сайте , после чего применить советы, как пофиксить утечку, описанные .

Расшифровка VPN-трафика

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

Ахиллесова пята

При VPN-соединениях на базе протокола PPTP (Point-to-Point Tunneling Protocol) аутентификация пользователей проводится по протоколу MS-CHAPv2, разработанному компанией Microsoft. Несмотря на то что MS-CHAPv2 устарел и очень часто становится предметом критики, его продолжают активно использовать. Чтобы окончательно отправить его на свалку истории, за дело взялся известный исследователь Мокси Марлинспайк, который на двадцатой конференции DEF CON отчитался, что поставленная цель достигнута - протокол взломан. Надо сказать, что безопасностью этого протокола озадачивались и ранее, но столь долгое использование MS-CHAPv2, возможно, связано с тем, что многие исследователи концентрировались только на его уязвимости к атакам по словарю. Ограниченность исследований и широкое число поддерживаемых клиентов, встроенная поддержка операционными системами - все это обеспечило протоколу MS-CHAPv2 широкое распространение. Для нас же проблема кроется в том, что MS-CHAPv2 применяется в протоколе PPTP, который используется многими VPN-сервисами (например, такими крупными, как анонимный VPN-сервис IPredator и The Pirate Bay’s VPN).

Если обратиться к истории, то уже в 1999 году в своем исследовании протокола PPTP Брюс Шнайер указал, что «Microsoft улучшил PPTP, исправив основные изъяны безопасности. Однако фундаментальная слабость аутентификации и шифрования протокола в том, что он безопасен настолько, насколько безопасен выбранный пользователем пароль». Это почему-то заставило провайдеров поверить, что ничего страшного в PPTP нет и если требовать от пользователя придумывать сложные пароли, то передаваемые данные будут в безопасности. Сервис Riseup.net настолько проникся этой идеей, что решил самостоятельно генерировать для пользователей пароли длиной в 21 символ, не давая им возможности установить свои. Но даже такая жесткая мера не спасает от расшифровки трафика. Чтобы понять почему, давай поближе познакомимся с протоколом MS-CHAPv2 и посмотрим, как же Мокси Марлинспайк сумел его взломать.

Протокол MS-CHAPv2

Как уже было сказано, MSCHAPv2 применяется для аутентификации пользователей. Происходит она в несколько этапов:

  • клиент посылает запрос на аутентификацию серверу, открыто передавая свой login;
  • сервер возвращает клиенту 16-байтовый случайный отклик (Authenticator Challenge);
  • клиент генерирует 16-байтовый PAC (Peer Authenticator Challenge - равный отклик аутентификации);
  • клиент объединяет PAC, отклик сервера и свое user name в одну строку;
  • с полученной строки снимается 8-байтовый хеш по алгоритму SHA-1 и посылается серверу;
  • сервер извлекает из своей базы хеш данного клиента и расшифровывает его ответ;
  • если результат расшифровки совпадет с исходным откликом, все ОK, и наоборот;
  • впоследствии сервер берет PAC клиента и на основе хеша генерирует 20-байтовый AR (Authenticator Response - аутентификационный ответ), передавая его клиенту;
  • клиент проделывает ту же самую операцию и сравнивает полученный AR с ответом сервера;
  • если все совпадает, клиент аутентифицируется сервером. На рисунке представлена наглядная схема работы протокола.

На первый взгляд протокол кажется излишне сложным - куча хешей, шифрование, случайные challenge. На самом деле все не так уж и сложно. Если присмотреться внимательней, то можно заметить, что во всем протоколе остается неизвестной только одна вещь - MD4-хеш пароля пользователя, на основании которого строятся три DES-ключа. Остальные же параметры либо передаются в открытом виде, либо могут быть получены из того, что передается в открытом виде.


Так как почти все параметры известны, то мы можем их не рассматривать, а остановить свое пристальное внимание на том, что неизвестно, и выяснить, что это нам дает.

Итак, что мы имеем: неизвестный пароль, неизвестный MD4-хеш этого пароля, известный открытый текст и известный шифртекст. При более детальном рассмотрении можно заметить, что пароль пользователя нам не важен, а важен его хеш, так как на сервере проверяется именно он. Таким образом, для успешной аутентификации от имени пользователя, а также для расшифровки его трафика нам необходимо знать всего лишь хеш его пароля.

Имея на руках перехваченный трафик, можно попробовать его расшифровать. Есть несколько инструментов (например, asleap), которые позволяют подобрать пароль пользователя через атаку по словарю. Недостаток этих инструментов в том, что они не дают стопроцентной гарантии результата, а успех напрямую зависит от выбранного словаря. Подбирать же пароль простым брутфорсом тоже не очень эффективно - например, в случае с PPTP VPN сервисом riseup.net, который принудительно устанавливает пароли длиной в 21 символ, придется перебирать 96 вариантов символа для каждого из 21 символов. Это в результате дает 96^21 вариантов, что чуть больше, чем 2^138. Иными словами, надо подобрать 138-битный ключ. В ситуации же, когда длина пароля неизвестна, имеет смысл подбирать MD4-хеш пароля. Учитывая, что его длина равна 128 бит, получаем 2^128 вариантов - на данный момент это просто нереально вычислить.

Разделяй и властвуй

MD4-хеш пароля используется в качестве входных данных для трех DES-операций. DES-ключи имеют длину 7 байт, так что каждая DES-операция использует 7-байтовый фрагмент MD4-хеша. Все это оставляет возможность для классической атаки divide and conquer. Вместо того чтобы полностью брутить MD4-хеш (а это, как ты помнишь, 2^128 вариантов), мы можем подбирать его по частям в 7 байт. Так как используются три DES-операции и каждая DES-операция абсолютно независима от других, это дает общую сложность подбора, равную 2^56 + 2^56 + 2^56, или 2^57.59. Это уже значительно лучше, чем 2^138 и 2^128, но все еще слишком большое число вариантов. Хотя, как ты мог заметить, в эти вычисления закралась ошибка. В алгоритме используются три DES-ключа, каждый размером в 7 байт, то есть всего 21 байт. Эти ключи берутся из MD4-хеша пароля, длина которого всего 16 байт.

То есть не хватает 5 байт для построения третьего DES-ключа. В Microsoft решили эту задачу просто, тупо заполнив недостающие байты нулями и фактически сведя эффективность третьего ключа к двум байтам.

Так как третий ключ имеет эффективную длину всего лишь два байта, то есть 2^16 вариантов, его подбор занимает считаные секунды, доказывая эффективность атаки divide and conquer. Итак, можно считать, что последние два байта хеша известны, остается подобрать оставшиеся 14. Также разделив их на две части по 7 байт, имеем общее число вариантов для перебора, равное 2^56 + 2^56 = 2^57. Все еще слишком много, но уже значительно лучше. Обрати внимание, что оставшиеся DES-операции шифруют один и тот же текст, только при помощи разных ключей. Можно записать алгоритм перебора следующим образом:

Но так как текст шифруется один и тот же, то правильнее сделать вот так:

То есть получается 2^56 вариантов ключей для перебора. А это значит, что безопасность MS-CHAPv2 может быть сведена к стойкости одного DES-шифрования.

Взлом DES

Теперь, когда диапазон подбора ключа известен, для успешного завершения атаки дело остается только за вычислительными мощностями. В 1998 году Electronic Frontier Foundation построила машину Deep Crack, которая стоила 250 тысяч долларов и позволяла взламывать DES-ключ в среднем за четыре с половиной дня. В настоящее время Pico Computing, специализирующаяся на построении FPGA-оборудования для криптографических приложений, построила FPGA-устройство (DES cracking box), которое реализует DES как конвейер с одной DES-операцией на каждый тактовый цикл. Обладая 40 ядрами по 450 МГц, оно позволяет перебирать 18 миллиардов ключей в секунду. Обладая такой скоростью перебора, DES cracking box в худшем случае взламывает ключ DES за 23 часа, а в среднем за полдня. Данная чудо-машина доступна через коммерческий веб-сервис loudcracker.com . Так что теперь можно взломать любой MS-CHAPv2 handshake меньше, чем за день. А имея на руках хеш пароля, можно аутентифицироваться от имени этого пользователя на VPN-сервисе или просто расшифровывать его трафик.

Для автоматизации работы с сервисом и обработки перехваченного трафика Мокси выложил в открытый доступ утилиту chapcrack. Она парсит перехваченный сетевой трафик, ища MS-CHAPv2 handshake’и. Для каждого найденного «рукопожатия» она выводит имя пользователя, известный открытый текст, два известных шифртекста и взламывает третий DES-ключ. Кроме этого, она генерирует токен для CloudCracker, в котором закодированы три параметра, необходимые, чтобы сервис взломал оставшиеся ключи.

CloudCracker & Chapcrack

На случай, если тебе понадобится взломать DES-ключи из перехваченного пользовательского трафика, приведу небольшую пошаговую инструкцию.

  1. Скачиваем библиотеку Passlib , реализующую более 30 различных алгоритмов хеширования для языка Python, распаковываем и устанавливаем: python setup.py install
  2. Устанавливаем python-m2crypto - обертку OpenSSL для Python: sudo apt-get install python-m2crypto
  3. Скачиваем саму утилиту chapcrack , распаковываем и устанавливаем: python setup.py install
  4. Chapcrack установлена, можно приступать к парсингу перехваченного трафика. Утилита принимает на вход cap-файл, ищет в нем MS-CHAPv2 handshake’и, из которых извлекает необходимую для взлома информацию. chapcrack parse -i tests/pptp
  5. Из выводимых утилитой chapcrack данных копируем значение строки CloudCracker Submission и сохраняем в файл (например, output.txt)
  6. Идем на cloudcracker.com, на панели «Start Cracking» выбираем File Type, равный «MS-CHAPv2 (PPTP/WPA-E)», выбираем предварительно подготовленный на предыдущем шаге файл output.txt, нажимаем Next -> Next и указываем свой e-mail, на который придет сообщение по окончании взлома.

К небольшому сожалению, сервис CloudCracker платный. К счастью, за взлом ключиков придется отдать не так уж много - всего 20 баксов.

Что делать?

Хоть Microsoft и пишет на своем сайте, что на данный момент не располагает сведениями об активных атаках с использованием chapcrack, а также о последствиях таких атак для пользовательских систем, но это еще не значит, что все в порядке. Мокси рекомендует всем пользователям и провайдерам PPTP VPN решений начинать миграцию на другой VPN-протокол. А PPTP-трафик считать незашифрованным. Как видишь, налицо еще одна ситуация, когда VPN может нас серьезно подвести.

Заключение

Так сложилось, что VPN ассоциируется с анонимностью и безопасностью. Люди прибегают к использованию VPN, когда хотят скрыть свой трафик от бдительных глаз провайдера, подменить свое реальное географическое положение и так далее. На деле получается, что трафик может «протечь» в сеть в открытом виде, а если и не в открытом, то зашифрованный трафик могут достаточно быстро расшифровать. Все это еще раз напоминает, что нельзя слепо полагаться на громкие обещания полной безопасности и анонимности. Как говорится, доверяй, но проверяй. Так что будь начеку и следи за тем, чтобы твое VPN-соединение было по-настоящему безопасным и анонимным.