Man In The Middle(Человек по середине). Или чем опасны публичные сети.

Давайте пофантазируем и представим что мы в Макдаке, юзаем халявный WiFi. А почему бы заодно не посмотреть чем заняты другие пользователи этого WiFi.

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

Часть первая.

Что же такое атака Man In The Middle (человек посередине).

Фактически мы встраиваемся между клиентом и сервером и перехватываем данные для чтения, изменения, дальнейшей передачи и т.д. Например можем внедрить вредоносный (условно) javascript код в HTML страницу жертвы. Это по сути и есть Атака MITM. Что же нам надо сделать что бы перехватывать  трафик жертвы ?

Мы будем использовать ARPspoofing

ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения (MAC-адреса, имея IP-адрес) другого компьютера. По сути когда компьютеру надо отправить пакет на IP 0.0.0.0 ему нужно еще знать MAC адрес компьютера с IP 0.0.0.0. Он посылает широковещательный запрос ARP. Компьютер с нужным IP отвечает — О это Я, MAC такой то. Протокол ARP является уязвимым — он не проверяет подлинности ARP-запросов и ARP-ответов. А так как сетевые интерфейсы на компьютерах поддерживают самопроизвольный ARP (ARP-ответ присылается на интерфейс устройства без необходимости), то как раз в таком случае возможна атака ARP-spoofing.

То есть мы фактически заспамим жертву информацией что МАС шлюза на самом деле является нашим( МАС нашего компьютера), а шлюз  скажем что МАС жертвы так же является нашим(MAC нашего компьютера). Теперь все пакеты между этими узлами пойдут через наш узел.

Окей, пакеты идут. А как же теперь нам посмотреть их и изменить ? Да фактически только запусти программу для мониторинга например http трафика.

От теории к практике.

Для реализации всего задуманного мы будем использовать операционную систему  Kali Linux, в ней уже предустановленно много пакетов для тестирования безопасности.

Задача первая — найти  и определить IP жертвы.

Что может быть проще. Запускаем в терминале программу netdiscover (Инструмент активной/пассивной разведки адресов)

-i интерфейс (устройство сканирования)
-r диапазон (диапазон сканирования, например 192.168.0.0/24, 192.168.0.0/16 и т.д.)
-p (пассивный режим, в котором netdiscover только слушает и не посылает пакеты)

Теперь нам надо настроить  ip_forwarding и IPTABLES, чтобы конвертировать компьютер атакующего(хакера)  в прокси:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080

Задача номер два — произвести ARP-спуфинг. Воспользуемся одноименным пакетом arpspoof .

arpspoof -i eth0 -t 192.168.0.1(шлюз) 192.168.0.15(жертва)
arpspoof -i eth0 -t 192.168.0.15 192.168.0.1

Этап номер три — mitmproxy  .Это инструмент, который позволяет нам анализировать трафик,
идущий через хоста, и дает возможность менять этот трафик. Прокси для HTTP и HTTPS с консольным интерфейсом. Запустим его в режиме прозрачного прокси

mitmproxy --mode transparent --showhost

—showhost аргумент говорит mitmproxy использовать значение заголовка узла для отображения URL.

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

Mitmproxy can decrypt encrypted traffic on the fly, as long as the client trusts its built-in certificate authority. Usually this means that the mitmproxy CA certificates have to be installed on the client device.

В следующей статье мы продолжим и поговорим о mitmdump , являющимся спутником mitmproxy. Он обеспечивает tcpdump -подобная функциональность позволяет просматривать, записывать и программно преобразование HTTP-трафика. Собственно им мы и будем вставить код в страницу которую получает жертва.