Атака посредника, или атака «человек посередине» (англ. Man in the middle (MITM)) – вид атаки в криптографии, когда злоумышленник тайно ретранслирует и при необходимости изменяет связь между двумя сторонами, которые считают, что они непосредственно общаются друг с другом. Является методом компрометации канала связи, при котором взломщик, подключившись к каналу между контрагентами, осуществляет вмешательство в протокол передачи, удаляя или искажая информацию.
Если говорить простым языком, то это такая атака, когда какой-нибудь человек вмешивается в связь между двумя людьми или человеком и интернетом (браузером, программами и т.д.).
Цель такой атаки, как и большинство компьютерных атак – определенная информация и возможность ее подменить в своих целях. Информация может быть самой разной: от истории посещения браузера до паролей от онлайн-банкинга. А подменить можно сообщение в переписке со знакомым, девушкой, начальником и т.д., тем самым поссорить людей и получить секретную информацию в виде ответа на подмененное сообщение.
Также часто используется подмена домена. Простым подслушиванием трафика нельзя перехватить зашифрованный трафик при использовании HTTPS, но можно перенаправить пользователя на фейковый сайт, либо сделать так, чтобы пользователя принудительно направило на версию сайта HTTP (если такая есть параллельно с HTTPS).
Какие могут быть варианты MITM-атаки?
Самые распространенные MITM атаки – атаки с использованием Wi-FI маршрутизатора в качестве инструмента для проведения своей атаки. В этом случае создается фейковый используемый роутер и подменяется сама сеть. Еще могут использоваться ошибки в настройке и/или защиты сети, которые позволяют подключиться к ней и перехватывать трафик.
В первом случае злоумышленник раздает вайфай и называет его так же, как и названа публичная открытая сеть вайфая. При этом он может использовать деаутентификацию пользователей настоящей сети. Грубо говоря, всех выкинуть из той сети, чтобы пользователи переподключились уже к его сети. А дальше уже он спокойно прослушивает трафик и перехватывает то, что ему нужно. Плюс в том, что это проще. Плюс и минус одновременно – много пользователей, чей трафик можно перехватить, но можно запутаться в нем. Минус такого способа в том, что люди не особо доверяют открытым вайфай сетям и редко заходят туда в онлайн-банкинг и подобные вещи.
Во втором случае вскрывается закрытая личная сеть, и производится атака. Также прослушивается и перехватывается весь трафик. Минус в том, что это сложнее. Плюс и минус одновременно – пользователей мало, но зато не запутаешься. Но плюс в том, что чаще всего жертва думает, что она в полной безопасности, поэтому можно долго сидеть и ловить трафик и скорее всего поймать крупную рыбу.
Пример MITM-атаки
Вклиниваться будем между компом пользователя и сервером. При этом пользователь будет верить в то, что мы – это сервер, а сервер в то, что мы – это пользователь.
Для этого понадобится Linux, желательно Kali Linux или BackTrack (старая версия Kali Linux), так как там предустановлены нужные нам инструменты.
Заходим в Linux и открываем три терминала. Также мы должны быть подключены к той сети, в которой находится пользователь.
Далее воспользуемся утилитой Arpspoof. Для начала займемся пользователем. Необходимо поменять MAC-адрес сервера на наш MAC-адрес. Пишем в первом терминале:
arpspoof <ip_клиента> <ip_сервера>
Этой командой мы объявили клиенту, что мы сервер. Теперь во втором терминале мы обманем сервер:
arpspoof <ip_сервера> <ip_клиента>
Важно использовать эти команды именно в такой последовательности!
Теперь, когда мы наебали клиента и сервер, надо настроить передачу трафика на другую машину. Если мы это не сделаем, то все пакеты будут задерживаться у нас. Грубо говоря, интернет будет тупить, пользователь заподозрит неладное и начнет делать те действия, которые нам не нужны (перезагружать роутер и т.д.). Для этой цели нужно изменить статус ip_forward (встроенный ресивер в Linux) на 1 (то есть, просто включим). Пишем это в третьем терминале:
echo 1 > /proc/sys/net/ipv4/ip_forward<ip_клиента>
Теперь мы настроили так, что наш комп передает трафик в обе стороны, при этом перехватывая его. Тем самым, мы стали посредником трафика.
Осталось его проанализировать. Для этого есть множество разных sniffing-инструментов (от английского «sniff» – нюхать), такие как Wireshark, tcpdump, dsniff и другие. Рассмотрим на примере dsniff.
Инструмент обрабатывает информацию, передаваемую в незашифрованном виде (то есть протоколы ftp, telnet, HTTP, SNMP, POP, LDAP и т.д – да; протоколы HTTPS и т.д – нет). Чтобы его запустить, вводим такую команду в третий терминал:
dsniff
Как видим, dsniff начал слушать интерфейс eth0.Приятный итог: