Проблема: MITM (Man-in-the-Middle) — атака «человек посередине»
Злоумышленник перехватывает и модифицирует трафик между двумя легитимными узлами (клиент-сервер, клиент-шлюз). Цель — кража учётных данных, сессионных cookie, подмена данных. Атака невидима для жертвы.
Причины (векторы атаки)
1. ARP-spoofing (отравление ARP-кэша). Злоумышленник в локальной сети привязывает свой MAC-адрес к IP-адресу шлюза. Весь трафик жертвы идёт через атакующего.
2. DNS-spoofing. Подмена DNS-ответов: жертва переходит на фишинговый сайт вместо легитимного. Пример: `bank.ru` → IP-адрес атакующего.
3. Rogue Access Point (фейковая точка доступа). Злоугад устанавливает Wi-Fi-точку с SSID легальной сети (например, `McDonalds_Free`). Жертва подключается к ней, трафик проходит через атакующего.
4. SSL-stripping. Принудительное понижение HTTPS до HTTP на стороне клиента или подмена сертификата при отсутствии проверки (HSTS-защиты).
Решение (защита от MITM-атак)
#### 1. Сетевая защита
- Включить Port Security на коммутаторах (ограничение числа MAC-адресов на порту) — блокирует ARP-spoofing.
- Использовать динамическую проверку ARP (DAI, Dynamic ARP Inspection) на управляемых коммутаторах (Cisco, MikroTik).
- Настроить DNSSEC на DNS-сервере организации — предотвращает DNS-spoofing на стороне провайдера.
#### 2. Транспортный уровень (TLS)
- HSTS (HTTP Strict Transport Security) — установка заголовка `Strict-Transport-Security: max-age=31536000; includeSubDomains` на сервере. Браузер запоминает — всегда использовать HTTPS.
- Certificate Pinning — привязка мобильного приложения к определённому сертификату сервера. Даже если злоумышленник подменит корневой сертификат, соединение будет отклонено.
- Mutual TLS (mTLS) — взаимная аутентификация: клиент и сервер проверяют сертификаты друг друга.
#### 3. Обнаружение атаки человек посередине
- Проверка сертификата в браузере: щёлкнуть на замок → сведения. Если сертификат выдан не вашему домену или CA недоверенный — атака.
- Сканирование ARP на подозрительные дубли:
bash
arp -a
# Пример: один IP, два MAC — подозрительно.
# Утилита arpwatch — лог изменений в ARP-таблице.- Анализ трафика Wireshark:
- Фильтр: `arp.duplicate-address-detected` (включить в настройках).
- Фильтр: `ssl.handshake.type == 11` (Certificate) — проверить цепочку сертификатов на подмену.
#### 4. Клиентские меры
- Использовать VPN (WireGuard, OpenVPN) к доверенному серверу за пределами сети — шифрует трафик до выхода в интернет, MITM бесполезен даже на фейковой Wi-Fi.
- Отключить автоматическое подключение к Wi-Fi.
- Установить браузерное расширение HTTPS Everywhere (форсирует HTTPS).
Практический пример для защиты от ARP-spoofing на Linux-сервере (форензика): настройка статического ARP-правила на шлюз:
bash
arp -s 192.168.1.1 aa:bb:cc:dd:ee:ffИли фильтр на `ebtables` (bridge firewall) — разрешить ARP-ответы только от MAC-адреса шлюза.