Атака посредника
Атака посредника, или атака «человек посередине», наиболее известная как MITM-атака, — это вид атаки в криптографии и компьютерной безопасности, при котором злоумышленник тайно ретранслирует и при необходимости изменяет соединение между двумя сторонами, которые ошибочно считают, что обмениваются данными напрямую друг с другом. Это метод компрометации канала связи, когда злоумышленник, подключаясь к каналу между участниками, вмешивается в протокол передачи данных, удаляя или искажая информацию.
Один из примеров данного вида атаки — активное прослушивание, при котором злоумышленник устанавливает независимые соединения с жертвами и пересылает сообщения между ними, заставляя жертв считать, что они общаются напрямую, хотя весь обмен управляется злоумышленником. Для этого необходим перехват всех сообщений между сторонами и возможность вставки новых. На практике это нередко просто: например, злоумышленник может выступать как «человек посередине» в зоне действия беспроводной точки доступа (Wi-Fi)[1].
Атака посредника направлена на обход взаимной аутентификации или получение преимуществ при её отсутствии; злоумышленник может добиться успеха только если сможет выдать себя за каждое из взаимодействующих лиц или оставаться незаметным в роли промежуточного узла. Большинство криптографических протоколов предусматривает механизмы аутентификации конечных точек для предотвращения MITM-атак. Например, TLS поддерживает проверку подлинности пользователей через доверенный центр сертификации[2].
Принцип атаки
Обычно атака посредника начинается с прослушивания канала связи и завершается попыткой изменить перехваченное сообщение, извлечь из него полезные сведения или переадресовать его на внешний ресурс.
Рассмотрим ситуацию: объект A намерен отправить информацию объекту B, а объект C располагает сведениями о структуре протокола и намерениях сторон. Для атаки C прикидывается объекту A как объект B и, наоборот, объекту B представляет себя как A. A, считая, что общается с B, отправляет данные C; C, получив сообщение, обрабатывает его (копирует или изменяет) и пересылает B, который думает, что получил сообщение напрямую от A.
Примеры атак
Пусть Алиса хочет передать информацию Бобу, а Мэлори намерен перехватить или изменить пересылаемые данные.
Мэлори устанавливает соединение и с Бобом, и с Алисой, оставаясь незамеченным. Все сообщения между Алисой и Бобом проходят через Мэлори.
Алиса просит Боба прислать открытый ключ. Мэлори представляется Бобом и высылает Алисе свой ключ. Алиса, считая его принадлежащим Бобу, шифрует сообщение и отправляет его. Мэлори расшифровывает послание, при необходимости изменяет его, шифрует настоящим ключом Боба и пересылает ему — Боб уверен, что получил сообщение от Алисы.
1. Алиса отправляет Бобу запрос, который перехватывает Мэлори:
- Алиса «Привет, Боб, это Алиса. Пришли мне свой открытый ключ.» → Мэлори Боб
2. Мэлори пересылает это же сообщение Бобу:
- Алиса Мэлори «Привет, Боб, это Алиса. Пришли мне свой открытый ключ.» → Боб
3. Боб посылает свой ключ:
- Алиса Мэлори ← [ключ Боба] Боб
4. Мэлори подменяет ключ Боба своим и отправляет его Алисе:
- Алиса ← [ключ Мэлори] Мэлори Боб
5. Алиса шифрует сообщение ключом Мэлори, считая, что это ключ Боба:
- Алиса «Встречаемся на автобусной остановке!» [зашифровано ключом Мэлори] → Мэлори Боб
6. Мэлори расшифровывает, модифицирует, шифрует ключом Боба:
- Алиса Мэлори «Жди меня у входа в музей в 18:00.» [зашифровано ключом Боба] → Боб
7. Боб считает, что получил сообщение от Алисы.
Данный пример показывает необходимость подтверждения правильности используемых открытых ключей обеими сторонами, иначе канал связи становится уязвимым к атаке посредника.
Рассмотрим MITM-атаку на протокол установления общего секрета Диффи—Хеллмана между сторонами A и B. Криптоаналитик E способен перехватывать и подменять сообщения, осуществляя активную атаку:
Перехват и подмена ключей
- A отправляет сообщение B:
- E перехватывает и подменяет сообщение, отправляя B:
- B отправляет сообщение A:
- E перехватывает и подменяет сообщение, отправляя A:
- В итоге формируется два секретных ключа: у A, у B, тогда как они уверены, что общаются напрямую.
Подмена сообщений
- A отправляет сообщение для B, зашифрованное ключом :
- E расшифровывает его, изменяет при необходимости на , шифрует ключом и отправляет B:
- Аналогично перехватываются сообщения от B к A.
В результате E может читать и подменять любые сообщения; атака считается успешной, если факт её наличия незаметен по структуре сообщений.
Рассмотрим атаку на SSL поверх HTTP (то есть атака HTTPS), применяемую для обхода защищённого канала, например, в банковских системах или электронных почтовых службах.
Процесс установки HTTPS-соединения, например для Google, включает:
- Браузер обращается к http://mail.google.com (порт 80, HTTP).
- Сервер делает перенаправление на HTTPS-версию через HTTP 302 Moved Temporarily.
- Браузер подключается к https://mail.google.com (порт 443).
- Сервер передаёт сертификат открытого ключа.
- Клиент проверяет сертификат через доверенный центр сертификации.
- Устанавливается защищённое соединение.
Наиболее уязвима операция перенаправления на HTTPS через HTTP-код 302. Специальная программа SSLStrip заменяет HTTPS-ссылки на HTTP, подставляет нужные сертификаты, передаёт защищённый трафик серверу и расшифрованные данные клиенту. В результате атакующий получает доступ к передаваемой информации (пароли, номера карт и пр.). Признаком атаки может стать отсутствие обозначения HTTPS в браузере. Для сервера такая подмена незаметна, так как исходящий SSL-трафик корректен.
Современные браузеры используют защиту HSTS (HTTP Strict Transport Security), блокирующую переход на незащищённый канал даже в случае атаки.
В основе «отравления кэша ARP» лежит уязвимость протокола ARP: устройства принимают неограниченное количество обновлений кэша в любое время. Это позволяет злоумышленнику отправлять самообращённые ARP-ответы, вынуждая другие узлы считать себя связанными с ним. Если ARP-пакеты сконструированы злонамеренно, конечные устройства будут посылать свои пакеты атакующему[3].
Сценарии атаки
В системах с открытым ключом злоумышленник может перехватить и подменить сообщения обмена ключами между клиентом и сервером, как описано выше. Для сокрытия атаки необходимо перехватывать и шифровать/расшифровывать весь трафик. Хотя задача сложна, угрозу для незашищённых сетей (электронный бизнес, интернет-банкинг, платёжный шлюз) она представляет[4].
Обычной мерой защиты служит применение сертификатов открытых ключей.
Внедрение кода[5] посредством MITM-атаки часто применяется для захвата авторизованных сессий, выполнения вредоносных команд на сервере и отправки поддельных ответов клиенту[6].
MITM-атака позволяет вставлять злонамеренный код в электронные письма, SQL-запросы и веб-страницы (а также осуществлять SQL-инъекции, HTML/script-инъекции, XSS-атаки), модифицировать скачиваемые бинарные файлы и тем самым получить неавторизованный доступ[6].
Downgrade Attack — атака, при которой злоумышленник вынуждает использовать менее защищённую версию протокола ради совместимости. Подвержены протоколы SSH, IPsec, PPTP.
Для предотвращения подобных атак уязвимые протоколы должны быть полностью отключены на хотя бы одной стороне.
- SSH V1 вместо SSH V2
- Атакующий может изменить параметры соединения между сервером и клиентом — например, подменить номер версии SSH-сессии на «1.51», заставляя использовать уязвимый SSH V1[7].
- IPsec
- Здесь злоумышленник убеждает клиента, что IPsec-сессия невозможна на сервере, что приводит к отправке сообщений в незашифрованном виде при rollback-режиме[7].
- PPTP
- На этапе согласования PPTP сеанса атакующий заставляет жертву использовать менее защищённую PAP-аутентификацию, MSCHAP V1 или вовсе отключить шифрование; также может вынудить повторить согласование или воспользоваться туннелем для кражи паролей.
К типичным публичным средствам коммуникаций относятся социальные сети, сервисы электронной почты и системы мгновенного обмена сообщениями. Администратор сервиса имеет полный контроль над содержанием и может в любой момент провести атаку посредника.
В отличие от технических атак здесь важен психологический компонент: атака основывается на небрежности пользователей к требованиям информационной безопасности.
Обнаружение MITM-атаки
Проверка задержек может позволить выявить атаку в отдельных случаях[8]. Например, при вычислении хеш-функций, если ответ задерживается аномально долго, это может свидетельствовать о промежуточном вмешательстве.
Для обнаружения MITM-атаки рекомендуется анализировать сетевой трафик. Например, проверяя параметры SSL-соединения[9]:
- IP-адрес сервера;
- DNS-сервер;
- X.509-сертификат сервера:
- Самоподписан ли сертификат?
- Подписан ли центром сертификации?
- Был ли сертификат аннулирован?
- Менялся ли недавно?
- Соответствует ли сертификат у других пользователей?
Известные реализации MITM-атак
В 2003 году реализованная маршрутизатором Belkin атака типа «человек посередине»: устройство перехватывало случайные HTTP-соединения и подменяло их рекламным контентом. После негативной реакции «функция» была удалена из новых версий прошивки[10].
В 2011 году в голландском центре сертификации DigiNotar была скомпрометирована выдача сертификатов, и мошеннические сертификаты были использованы для MITM-атак.
В 2013 году выяснилось, что браузер Xpress Browser от Nokia расшифровывает HTTPS-трафик на прокси-серверах компании, что обеспечивало доступ к содержимому трафика пользователей. По заявлению Nokia, контент не сохранялся, а были приняты меры для предотвращения доступа к приватным данным[11].
В 2017 году Equifax отозвал свои мобильные приложения из-за опасности атак типа «человек посередине».
Среди других значимых инструментов для реализации и обнаружения MITM-атак:
- dsniff — первая публичная реализация MITM-атак на SSL и SSH
- Cain — инструмент с графическим интерфейсом для проведения MITM, сниффинга и ARP-spoofing
- Ettercap — инструмент для MITM-атак в локальных сетях
- Karma — средство для атак «злой двойник» (Evil Twin)
- AirJack — реализация MITM-атак на 802.11
- SSLStrip — инструмент для MITM-атаки на SSL
- SSLSniff — инструмент для MITM-атаки на SSL
- Mallory — прозрачный прокси для TCP- и UDP-MITM, атак на SSL, SSH и др.
- wsniff — инструмент для атак на 802.11 HTTP(S)
- Fiddler2 — инструмент диагностики HTTP(S)
Данные программы могут использоваться как для осуществления, так и для поиска атак посредника и тестирования уязвимостей.
Для перенаправления трафика могут использоваться ошибки в настройках BGP-маршрутизации[12][13].


