Атака посредника
Атака посредника, или атака «человек посередине» (англ. Man in the middle (MITM)) — вид атаки в криптографии и компьютерной безопасности, когда злоумышленник тайно ретранслирует и при необходимости изменяет связь между двумя сторонами, которые считают, что они непосредственно общаются друг с другом. Является методом компрометации канала связи, при котором взломщик, подключившись к каналу между контрагентами, осуществляет вмешательство в протокол передачи, удаляя или искажая информацию.
Одним из примеров атак типа «человек посередине» является активное прослушивание, при котором злоумышленник устанавливает независимые связи с жертвами и передаёт сообщения между ними. Тем самым он заставляет жертв поверить, что они разговаривают непосредственно друг с другом через частную связь, фактически же весь разговор управляется злоумышленником. Злоумышленник должен уметь перехватывать все передаваемые между двумя жертвами сообщения, а также вводить новые. В большинстве случаев это довольно просто: например, злоумышленник может вести себя как «человек посередине» в пределах диапазона приёма беспроводной точки доступа (Wi-Fi)[1].
Данная атака направлена на обход взаимной аутентификации или отсутствие таковой и может увенчаться успехом только тогда, когда злоумышленник имеет возможность выдать себя за каждую конечную точку либо оставаться незамеченным в качестве промежуточного узла. Большинство криптографических протоколов включает в себя некоторую форму аутентификации конечной точки специально для предотвращения MITM-атак. Например, TLS может выполнять проверку подлинности одной или обеих сторон с помощью взаимно доверенного центра сертификации[2].
Принцип атаки
Атака обычно начинается с прослушивания канала связи и заканчивается тем, что криптоаналитик пытается подменить перехваченное сообщение, извлечь из него полезную информацию, перенаправить его на какой-нибудь внешний ресурс.
Предположим, объект A планирует передать объекту B некую информацию. Объект C обладает знаниями о структуре и свойствах используемого метода передачи данных, а также о факте планируемой передачи собственно информации, которую С планирует перехватить. Для совершения атаки С «представляется» объекту А как В, а объекту В — как А. Объект А, ошибочно полагая, что он направляет информацию В, посылает её объекту С. Объект С, получив информацию и совершив с ней некоторые действия (например, скопировав или модифицировав в своих целях), пересылает данные собственно получателю — В; объект В, в свою очередь, считает, что информация была получена им напрямую от А.
Примеры атак
Пример атаки на алгоритмическом языке
Предположим, что Алиса хочет передать Бобу некоторую информацию. Мэлори хочет перехватить сообщение и, возможно, изменить его так, что Боб получит неверную информацию.
Мэлори начинает свою атаку с того, что устанавливает соединение с Бобом и Алисой, при этом они не могут догадаться о том, что кто-то третий присутствует в их канале связи. Все сообщения, которые посылают Боб и Алиса, проходят через Мэлори.
Алиса просит у Боба его открытый ключ. Мэлори представляется Алисе Бобом и отправляет ей свой открытый ключ. Алиса, считая, что это ключ Боба, шифрует им сообщение и отправляет его Бобу. Мэлори получает сообщение, расшифровывает, затем изменяет его, если нужно, шифрует его открытым ключом Боба и отправляет его ему. Боб получает сообщение и думает, что оно пришло от Алисы:
- Алиса отправляет Бобу сообщение, которое перехватывает Мэлори:
- Алиса «Привет, Боб, это Алиса. Пришли мне свой открытый ключ.» → Мэлори Боб
- Мэлори пересылает сообщение Бобу; Боб не может догадаться, что это сообщение не от Алисы:
- Алиса Мэлори «Привет, Боб, это Алиса. Пришли мне свой открытый ключ.» → Боб
- Боб посылает свой ключ:
- Алиса Мэлори ← [ключ Боба] Боб
- Мэлори подменяет ключ Боба своим и пересылает сообщение Алисе:
- Алиса ← [ключ Мэлори] Мэлори Боб
- Алиса шифрует сообщение ключом Мэлори, считая, что это ключ Боба, и только он может расшифровать его:
- Алиса «Встречаемся на автобусной остановке!» [зашифровано ключом Мэлори] → Мэлори Боб
- Мэлори расшифровывает сообщение, читает его, модифицирует его, шифрует ключом Боба и отправляет его:
- Алиса Мэлори «Жди меня у входа в музей в 18:00.» [зашифровано ключом Боба] → Боб
- Боб считает, что это сообщение Алисы.
Этот пример демонстрирует необходимость использования методов для подтверждения того, что обе стороны используют правильные открытые ключи, то есть что у стороны А открытый ключ стороны B, а у стороны B — открытый ключ стороны А. В противном случае, канал может быть подвержен атаке «человек посередине».
Атака на протокол Диффи-Хеллмана
Рассмотрим атаку на протокол выработки общего секрета Диффи-Хеллмана между сторонами A и B. Допустим, криптоаналитик E имеет возможность не только перехватывать сообщения, но и подменять их своими, то есть осуществлять активную атаку:
Перехват и подмена ключей
- Сторона A отправляет сообщение стороне B: [math]\displaystyle{ A\stackrel{E}{\nrightarrow} B:~g^x~~\bmod~p. }[/math]
- Криптоаналитик E перехватывает сообщение стороны A и подменяет его, отправляя стороне B уже другое сообщение : [math]\displaystyle{ E\rightarrow B:~g^z~~\bmod~p. }[/math]
- Сторона B отправляет сообщение стороне A: [math]\displaystyle{ A\stackrel{E}{\nleftarrow} B:~g^y~~\bmod~p. }[/math]
- Криптоаналитик E перехватывает сообщение стороны B и подменяет его, отправляя стороне A какое-то своё сообщение : [math]\displaystyle{ A\leftarrow E:~g^z~~\bmod~p. }[/math]
- Результатом данных действий является образование двух каналов связи криптоаналитика E со сторонами A и B, причем сторона A считает что общается со стороной B при помощи секретного ключа [math]\displaystyle{ K_{AE} }[/math], а сторона B отправляет сообщения при помощи ключа [math]\displaystyle{ K_{BE} }[/math]. При этом стороны A и B не подозревают, что обмен сообщениями происходит не напрямую, а через криптоаналитика E: [math]\displaystyle{ K_{AE} =~g^{xz}~~\bmod~p, }[/math][math]\displaystyle{ K_{BE} =~g^{yz}~~\bmod~p. }[/math]
Подмена сообщений
- Сторона A отправляет сообщение [math]\displaystyle{ m }[/math] стороне B, зашифрованное при помощи ключа [math]\displaystyle{ K_{AE} }[/math]: [math]\displaystyle{ A\stackrel{E}{\nrightarrow} B: E_{K_{AE}}(m). }[/math]
- Криптоаналитик E перехватывает это сообщение, расшифровывает ключом [math]\displaystyle{ K_{AE} }[/math], при необходимости, изменяет его на [math]\displaystyle{ m' }[/math], зашифровывает ключом [math]\displaystyle{ K_{BE} }[/math] и отправляет стороне B: [math]\displaystyle{ K_{AE} }[/math]: [math]\displaystyle{ E \rightarrow B: E_{K_{BE}}(m'). }[/math]
- Аналогичные действия криптоаналитик E предпринимает при передачи сообщений от B к A.
Таким образом, криптоаналитик E получает возможность перехватывать и подменять все сообщения в канале связи. При этом, если содержимое сообщений не позволяет выявить наличие в канале связи третьей стороны, то атака «человек посередине» считается успешной.
Атака посредника на SSL
В данном примере мы рассмотрим атаку на SSL через HTTP, также известного как HTTPS, поскольку это самая распространенная модель реализации протокола SSL и используется практических во всех системах банковских сетевых приложений, службах электронной почты для обеспечения шифрования канала связи. Эта технология призвана обеспечить сохранность данных от перехвата третьими лицами при помощи простого анализатора пакетов.
Рассмотрим процесс коммуникации по HTTPS на примере подключения пользователя к учетной записи на Google. Этот процесс включает в себя несколько отдельных операций:
- Клиентский браузер обращается к http://mail.google.com на порт 80 при помощи HTTP.
- Сервер перенаправляет клиентскую HTTPS-версию этого сайта, используя HTTP code 302 перенаправление.
- Клиент подключается к https://mail.google.com на порт 443.
- Сервер предъявляет клиенту свой сертификат открытых ключей для проверки подлинности сайта.
- Клиент сверяет данный сертификат со своим списком доверенных центров сертификации.
- Создается зашифрованное соединение.
Из всех этих действий наиболее уязвимой видится операция перенаправления на HTTPS через код ответа HTTP 302. Для осуществления атаки на точку перехода от незащищенного к защищенному каналу был создан специальный инструмент SSLStrip. С использованием данного инструмента процесс атаки выглядит следующим образом:
- Перехват трафика между клиентом и веб сервером.
- В момент обнаружения HTTPS URL адреса инструмент SSLstrip подменяет его HTTP-ссылкой, сопоставляя все изменения.
- Атакующая машина предоставляет сертификаты веб-серверу и олицетворяет клиента.
- Трафик принимается с защищенного веб-сайта и предоставляется клиенту.
В результате чего атакующий получает доступ к данным, которые клиент отправляет на сервер. Этими данными могут быть пароли от учетных записей, номера банковских карт или любая другая информация, которая обычно передается в скрытом виде. Потенциальным сигналом проведения данной атаки для клиента может стать отсутствие обозначения защищенного HTTPS-трафика в браузере. Для сервера же такая подмена останется совершенно незамеченной, потому как нет никаких изменений в SSL-трафике.
Отравление кэша ARP
Основой атаки «Отравление кэша ARP» является уязвимость в протоколе ARP. В отличие от таких протоколов как DNS, которые можно настроить на приём только защищенных динамических обновлений, устройства, использующие ARP, будут получать обновления в любое время. Такое свойство ARP-протокола позволяет любому устройству отправлять пакет ARP-ответа на другой узел, чтобы потребовать от него обновления ARP-кэша. Отправка ARP-ответа без генерирования каких-либо запросов называется отправкой самообращённых ARP. Если имеются злоумышленные намерения, результатом удачно направленных самообращенных ARP-пакетов, используемых таким образом, могут стать узлы, считающие, что они взаимодействуют с одним узлом, но в реальности они взаимодействуют с перехватывающим узлом взломщика[3].
Сценарии атаки
Атака на системы с открытым ключом
В случае системы с открытым ключом криптоаналитик может перехватить сообщения обмена открытыми ключами между клиентом и сервером и изменить их, как в примере выше. Для того, чтобы оставаться незамеченным, криптоаналитик должен перехватывать все сообщения между клиентом и сервером и шифровать и расшифровывать их соответствующими ключами. Такие действия могут показаться слишком сложными для проведения атаки, однако они представляют реальную угрозу для небезопасных сетей (электронный бизнес, интернет-банкинг, платёжный шлюз)[4].
Для предотвращения атак «человек с активным криптоаналитиком», который бы подменял открытый ключ получателя во время его передачи будущему отправителю сообщений, используют, как правило, сертификаты открытых ключей.
Внедрение вредоносного кода
Внедрение кода[5] в атаке «человек посередине» главным образом применяется для захвата уже авторизованной сессии, выполнения собственных команд на сервере и отправки ложных ответов клиенту[6].
Атака «человек посередине» позволяет криптоаналитику вставлять свой код в электронные письма, SQL-выражения и веб-страницы (то есть позволяет осуществлять SQL-инъекции, HTML/script-инъекции или XSS-атаки), и даже модифицировать загружаемые пользователем бинарные файлы для того, чтобы получить доступ к учетной записи пользователя или изменить поведение программы, загруженной пользователем из интернета[6].
Downgrade Attack
Термином «Downgrade Attack» называют такую атаку, при которой криптоаналитик вынуждает пользователя использовать менее безопасные функции, протоколы, которые всё ещё поддерживаются из соображений совместимости. Такой вид атаки может быть проведён на протоколы SSH, IPsec и PPTP.
Для защиты от Downgrade Attack небезопасные протоколы должны быть отключены как минимум на одной стороне; просто поддержки и использования по умолчанию безопасных протоколов недостаточно!
- SSH V1 вместо SSH V2
- Атакующий может попытаться изменить параметры соединения между сервером и клиентом при установлении между ними соединения[6]. Согласно докладу, сделанному на конференции Blackhat Conference Europe 2003, криптоаналитик может «заставить» клиента начать сессию SSH1, вместо SSH2 изменив номер версии «1.99» для SSH-сессии на «1.51», что означает использование SSH V1[7]. Протокол SSH-1 имеет уязвимости, которыми может воспользоваться криптоаналитик.
- IPsec
- При таком сценарии атаки криптоаналитик вводит свою жертву в заблуждение, заставляя её думать, что IPsec-сессия не может начаться на другом конце (сервере). Это приводит к тому, что сообщения будут пересылаться в явном виде, в случае если хост-машина работает в rollback-режиме[7].
- PPTP
- На этапе согласования параметров сессии PPTP атакующий может вынудить жертву использовать менее безопасную PAP-аутентификацию, MSCHAP V1 (то есть «откатиться» с MSCHAP V2 до версии 1), либо не использовать шифрование вообще.
- Атакующий может вынудить свою жертву повторить этап согласования параметров PPTP-сессии (послать Terminate-Ack-пакет), выкрасть пароль из существующего туннеля и повторить атаку.
Публичные средства коммуникации
Наиболее распространенные публичные средства коммуникаций — это социальные сети, публичные сервисы электронной почты и системы мгновенного обмена сообщениями. Владелец ресурса, обеспечивающего сервис коммуникаций, имеет полный контроль над информацией, которой обмениваются корреспонденты и, по своему усмотрению, в любой момент времени беспрепятственно может осуществить атаку посредника.
В отличие от предыдущих сценариев, основанных на технических и технологических аспектах средств коммуникаций, в данном случае атака основана на ментальных аспектах, а именно на укоренении в сознании пользователей концепции игнорирования требований информационной безопасности.
Обнаружение MITM-атаки
Проверка задержки по времени может потенциально обнаружить атаку в определённых ситуациях[8]. Например, при длительных вычислениях хеш-функций, которые выполняются в течение десятка секунд. Чтобы выявить потенциальные атаки, стороны проверяют расхождения во времени ответа. Предположим, что две стороны обычно затрачивают определённое количество времени для выполнения конкретной транзакции. Однако, если одна транзакция занимает аномальный период времени для достижения другой стороны, это может свидетельствовать о вмешательстве третьей стороны, вносящей дополнительную задержку в транзакцию.
Для обнаружения атаки «человек посередине» также необходимо проанализировать сетевой трафик. К примеру, для детектирования атаки по SSL следует обратить внимание на следующие параметры[9]:
- IP-адрес сервера
- DNS-сервер
- X.509-сертификат сервера
- Подписан ли сертификат самостоятельно?
- Подписан ли сертификат центром сертификации?
- Был ли сертификат аннулирован?
- Менялся ли сертификат недавно?
- Получали ли другие клиенты в интернете такой же сертификат?
Известные реализации MITM-атак
Известная некриптографическая атака «человек посередине» была совершена беспроводным сетевым маршрутизатором Belkin в 2003 году. Периодически новая модель маршрутизатора выбирала случайное HTTP-соединение и перенаправляла его на рекламную страницу своего производителя. Столь бесцеремонное поведение устройства, разумеется, вызвало бурю негодования среди пользователей, после чего эта «функция» была удалена из более поздних версий прошивки маршрутизатора[10].
В 2011 году нарушение безопасности голландского центра сертификации DigiNotar (англ.) привело к мошеннической выдаче сертификатов. Впоследствии мошеннические сертификаты были использованы для совершения атак «человек посередине».
В 2013 году стало известно, что браузер Xpress Browser (англ.) от Nokia расшифровывает HTTPS-трафик на прокси-серверах Nokia, предоставляя компании четкий текстовый доступ к зашифрованному трафику браузера своих клиентов. На что Nokia заявила, что контент не был сохранен на постоянной основе и что у компании были организационные и технические меры для предотвращения доступа к частной информации[11].
В 2017 году Equifax (англ.) отозвал свои приложения для мобильных телефонов, опасаясь уязвимости «человек посередине».
Другие значимые реализации MITM-атак:
- dsniff — первая публичная реализация MITM-атак на SSL и SSH
- Cain — инструмент для проведения атаки «человек посередине». Имеет графический интерфейс. Поддерживает сниффинг и ARP-spoofing
- Ettercap — инструмент для проведения атак в локальной сети
- Karma — использует атаку злой двойник (Evil Twin) для проведения MITM-атак
- AirJack — программа демонстрирует основанные на стандарте 802.11 MITM-атаки
- SSLStrip (недоступная ссылка) — инструмент для MITM-атаки на SSL
- SSLSniff (недоступная ссылка) — инструмент для MITM-атаки на SSL. Изначально был создан для обнаружения уязвимостей в Internet Explorer[12].
- Mallory — прозрачный прокси-сервер, осуществляющий TCP- и UDP-MITM-атаки. Может быть также использован для атаки на протоколы SSL, SSH и многие другие
- wsniff — инструмент для проведения атак на 802.11 HTTP/HTTPS-протокол
- Fiddler2 (англ.) — инструмент диагностики HTTP(S)
Перечисленные программы могут быть использованы для осуществления атак «человек посередине», а также для их обнаружения и тестирования системы на уязвимости.
Для перенаправления потоков трафика могут использоваться ошибки в настройках межсетевой маршрутизации BGP[13][14].
См. также
- Aspidistra (англ.) — британский радиопередатчик, использовавшийся во время Второй мировой войны «вторжения», вариант MITM-атаки.
- Заговор Бабингтона (англ.) — заговор против Елизаветы I, в ходе которого Уолсингем перехватывал корреспонденцию.
- Другие атаки
- «Человек-в-браузере[англ.]» (Man in the Browser) — вид атаки, при которой злоумышленник получает возможность мгновенно менять параметры транзакции, менять страницы совершенно прозрачно для жертвы.
- «Встреча посередине» (Meet-in-the-middle attack) — криптографическая атака, которая так же, как и атака «дней рождения», использует компромисс между временем и памятью.
- «Потеря посередине[англ.]» (Miss in the middle attack) — эффективный метод так называемого impossible differential cryptanalysis.
- Атака пересылки[англ.] (Relay attack) — вариант MITM-атаки, основанный на пересылке перехваченного сообщения допустимому получателю, но не тому, которому это сообщение предназначалось.
- Руткит — программа, предназначенная для скрытия следов присутствия злоумышленника.
- ARP-spoofing
- TCP hijacking
Литература
- ↑ Tanmay Patange. How to defend yourself against MITM or Man-in-the-middle attack (недоступная ссылка) (10 ноября 2013). Дата обращения: 22 ноября 2017. Архивировано 24 ноября 2013 года.
- ↑ Callegati, Franco; Cerroni, Walter; Ramilli, Marco. IEEE Xplore - Man-in-the-Middle Attack to the HTTPS Protocol (англ.) // ieeexplore.ieee.org : journal. — 2009. — P. 78—81.
- ↑ Understanding Man-in-the-Middle Attacks – ARP Cache Poisoning . Дата обращения: 6 декабря 2017. Архивировано 7 декабря 2017 года.
- ↑ Криптосистема с открытым ключом
- ↑ Techtarget Search Security Channel: Common injection attacks . Архивировано 18 февраля 2012 года.
- ↑ 6,0 6,1 6,2 Alberto Ornaghi, Marco Valleri, "Man In The Middle Attacks," BlackHat Conference Europe 2003 . Архивировано 18 февраля 2012 года.
- ↑ 7,0 7,1 Alberto Ornaghi, Marco Valleri, "Man In The Middle Attacks Demos," BlackHat Conference Europe 2003 . Архивировано 18 февраля 2012 года.
- ↑ Aziz, Benjamin; Hamilton, Geoff. Detecting man-in-the-middle attacks by precise timing. (англ.) // 2009 Third International Conference on Emerging Security Information, Systems and Technologies : journal. — 2009. — P. 81—86. Архивировано 8 апреля 2019 года.
- ↑ Network Forensic Analysis of SSL MITM Attacks . NETRESEC Network Security Blog. Дата обращения: 27 марта 2011. Архивировано 18 февраля 2012 года.
- ↑ Leyden, John. Help! my Belkin router is spamming me, The Register (7 ноября 2003). Архивировано 8 августа 2011 года.
- ↑ Meyer, David Nokia: Yes, we decrypt your HTTPS data, but don’t worry about it . Gigaom, Inc. (10 января 2013). Дата обращения: 22 ноября 2017. Архивировано 8 апреля 2019 года.
- ↑ Goodin, Dan SSL spoof bug still haunts IE, Safari, Chrome; Thanks to Microsoft . The Register.co.uk (1 октября 2009). Архивировано 18 февраля 2012 года.
- ↑ H Birge-Lee, Using BGP to Acquire Bogus TLS Certificates Архивная копия от 21 июля 2017 на Wayback Machine
- ↑ Defending Against BGP Man-In-The-Middle Attacks Архивная копия от 25 ноября 2017 на Wayback Machine // Black Hat DC, February 2009