
Перехват трафика с помощью ARP-спуфинга
Любой человек, зашедший в кафе и подключившийся к сети Wi-Fi, может перехватывать и просматривать незашифрованный веб-трафик других пользователей, используя метод под названием ARP-спуфинг, который эксплуатирует уязвимость протокола определения адресов (address resolution protocol, ARP). В данной главе мы обсудим принцип работы протокола ARP, рассмотрим этапы проведения ARP-спуфинга, а затем осуществим эту атаку.
Передача данных в интернете
Прежде чем переходить к обсуждению ARP-спуфинга, нам следует поговорить о структуре интернета в целом. В этом разделе описывается процесс передачи данных через иерархическую сеть с помощью пакетов, MAC- и IP-адресов.
Пакеты
Вся информация в интернете передается пакетами, которые можно представить в виде конверта с данными, подлежащими отправке. Как и в случае с обычной почтой, эти пакеты направляются по указанному адресу. На рис. 2.1 продемонстрированы некоторые сходства между почтовыми конвертами и пакетами.

Раздел «От кого» на конверте содержит два важных фрагмента информации: 1) имя отправителя; 2) его адрес. Точно так же у пакетов есть MAC-адрес источника, который представляет отправившую пакет машину, и IP-адрес источника, который указывает, откуда поступил этот пакет. Другие аналогичные поля, называемые заголовками пакета, определяют пункт его назначения.
Для сортировки и пересылки пакетов в интернете используются устройства, называемые маршрутизаторами. Пакеты перемещаются от одного маршрутизатора к другому, подобно тому как письма пересылаются между почтовыми отделениями.
MAC-адреса
Ваш ноутбук оснащен сетевой картой (network interface card, NIC), которая позволяет ему подключаться к маршрутизаторам Wi-Fi. Эта карта имеет уникальный MAC-адрес (media access control, управление доступом к среде), позволяющий идентифицировать ваш компьютер в сети. Перед отправкой информации вашему компьютеру маршрутизатор помечает соответствующий пакет MAC-адресом вашего ноутбука, а затем передает его в виде радиосигнала. Все компьютеры, подключенные к данному маршрутизатору, получают этот радиосигнал и проверяют MAC-адрес пакета, чтобы выяснить, которому из них он предназначен. Как правило, MAC-адреса представляют собой 48-битные значения, записанные в шестнадцатеричном формате (например, 08:00:27:3b:8f:ed).
IP-адреса
Вероятно, вы уже знаете, что IP-адреса также позволяют идентифицировать компьютеры в сети. Зачем же нам еще и MAC-адреса? Дело в том, что сети состоят из иерархических регионов, подобно тому как некоторые страны делятся на штаты, которые, в свою очередь, делятся на города. IP-адреса учитывают структуру, позволяющую им определять место устройства в более крупной сети. Если вы перейдете в другое кафе, то вашему ноутбуку будет назначен новый IP-адрес, отражающий его новое местоположение; но при этом ваш MAC-адрес останется прежним.
IPv4-адрес кодирует информацию о сетевой иерархии в виде 32-битного числа. Обычно оно разделяется точками на четыре раздела (например, 192.168.3.1). Каждый раздел представляет собой восьмибитное двоичное число. Например, 3 в 192.168.3.1 — это восьмибитное двоичное число 00000011.
IP-адреса, принадлежащие одному и тому же региону иерархии, также имеют одинаковые биты верхнего уровня. Например, IPv4-адреса всех компьютеров в кампусе Университета Вирджинии имеют вид 128.143.xxx.xxx. В нотации CIDR (classless interdomain routing, бесклассовая междоменная маршрутизация) IP-адреса записываются в виде 128.143.1.1/16. Это указывает на то, что компьютеры используют одни и те же 16 старших бит или первые два числа. Поскольку IP-адреса имеют определенную структуру, маршрутизаторы могут использовать части IP-адреса, чтобы решить, как переместить пакет по иерархии. На рис. 2.2 показан упрощенный пример иерархии маршрутизаторов.
На рис. 2.2 также показан мультиплексор доступа к цифровой абонентской линии (Digital Subscriber Line Access Multiplexer, DSLAM), позволяющий передавать сигналы, имеющие отношение к интернет-трафику, по проводам, изначально предназначенным для кабельного телевидения. Устройство DSLAM отличает интернет-сигнал от телевизионного, что позволяет подключить телевизор и маршрутизатор к одному и тому же разъему.
Проследим за перемещением пакета по сетевой иерархии на примере кофейни. Представьте, что вы находитесь в кафе в Сан-Франциско и переходите на веб-страницу www.cs.virginia.edu, размещенную на веб-сервере с IP-адресом 128.143.67.11. На первом этапе веб-запрос проходит через сетевую карту вашего ноутбука, которая затем отправляет его на маршрутизатор Wi-Fi, установленный в кафе. Затем маршрутизатор отправляет веб-запрос мультиплексору DSLAM, который перенаправляет этот запрос на маршрутизатор интернет-провайдера (internet service provider, ISP), например, Comcast. Затем маршрутизаторы Comcast сравнивают IP-адрес со списком префиксов в поисках совпадения. Например, он может обнаружить соответствие префиксу 128.xxx.xxx.xxx, указывающему на конкретный раздел иерархии. По мере перемещения запроса по иерархии совпадения становятся более конкретными, например, сначала 128.143.xxx.xxx, а затем 128.143.67.xxx. Как только пакет достигнет самого нижнего уровня иерархии, на котором отсутствуют другие маршрутизаторы, маршрутизатор использует MAC-адрес, содержащийся в пакете, для определения пункта назначения запроса. Самый нижний уровень иерархии называется локальной вычислительной сетью (local area network, LAN), поскольку все компьютеры на этом уровне подключены к интернету через один маршрутизатор.

Теперь, когда мы разобрались с общей структурой интернета, мы можем обсудить атаки, осуществляемые на самом нижнем уровне иерархии.
ARP-таблицы
Мы выяснили, что после того, как пакет достигает заданной LAN, сеть использует MAC-адрес пакета, чтобы определить его пункт назначения. Но как маршрутизатор узнает MAC-адрес компьютера с IP-адресом 128.143.67.11? Для этого используется протокол ARP. Маршрутизатор отправляет сообщение, называемое ARP-запросом, всем компьютерам в сети, предлагая машине с IP-адресом 128.143.67.11 прислать ARP-ответ со своим MAC-адресом. Затем маршрутизатор сохраняет результат сопоставления IP-адреса и MAC-адреса в специальной ARP-таблице, что избавляет его от необходимости повторно отправлять ARP-запросы в ближайшем будущем.
Если вкратце
MAC-адрес идентифицирует ваш компьютер, IP-адрес определяет его местоположение, а ARP-таблицы хранят результаты сопоставления этих фрагментов информации. При проведении ARP-спуфинга мы стремимся выдать себя за кого-то другого.
Атака методом ARP-спуфинга
Атака типа «ARP-спуфинг» (ARP spoofing) проводится в два этапа. На первом этапе злоумышленник отправляет жертве поддельный ARP-ответ с информацией о том, что MAC-адрес злоумышленника соответствует IP-адресу маршрутизатора. Так хакер заставляет жертву поверить в то, что его компьютер является маршрутизатором. На втором этапе компьютер жертвы принимает от него поддельный ARP-пакет и обновляет информацию в ARP-таблице, чтобы отразить соответствие MAC-адреса злоумышленника IP-адресу маршрутизатора. После этого интернет-трафик жертвы будет отправляться не на маршрутизатор, а на компьютер злоумышленника, который сможет проверить эту информацию, прежде чем переслать ее маршрутизатору.
Если хакер также хочет перехватить интернет-трафик, предназначенный для жертвы, то должен аналогичным образом обмануть и маршрутизатор, то есть создать поддельный ARP-пакет, указывающий на соответствие IP-адреса жертвы MAC-адресу злоумышленника. Это позволяет хакеру перехватывать и проверять входящий интернет-трафик, прежде чем перенаправлять его жертве.
Простая схема ARP-спуфинга показана на рис. 2.3. В данном случае Джейн (злоумышленник) обманом заставляет Алису (жертву) отправить ей письмо.

ARP-спуфинг — пример атаки посредника (man in the middle, MITM), поскольку злоумышленник в данном случае оказывается между жертвой и маршрутизатором.
Выполнение ARP-спуфинга
Перед реализацией ARP-спуфинга запустите виртуальные машины pfSense, Kali и Metasploitable. Соответствующие инструкции приведены в главе 1. Теперь установим инструменты, которые нам понадобятся для проведения этой атаки. Откройте терминал виртуальной машины Kali Linux и установите инструмент dsniff. По умолчанию в Kali Linux используется пароль kali. Выполните команду sudo -i, чтобы стать пользователем root. Вам также потребуется обновить менеджер пакетов apt-get, выполнив команду apt-get update.
kali@kali:~$ sudo -i
kali@kali:~$ apt-get update
kali@kali:~$ apt-get install dsniff
Утилита dsniff содержит несколько полезных инструментов для перехвата сетевого трафика, в том числе инструмент arpspoof, который позволяет выполнять ARP-спуфинг.
Чтобы выдать свой компьютер за другие машины в сети, сначала мы должны выяснить их IP-адреса. Запустите инструмент netdiscover, используя следующую команду:
kali@kali:~$ sudo netdiscover
Инструмент netdiscover сканирует сеть, рассылая ARP-запросы по всем IP-адресам в подсети и после получения ответа от подключенного к ней компьютера записывает и отображает его MAC- и IP-адрес. Кроме того, этот инструмент определяет производителя сетевой карты по MAC-адресу. Для обеспечения уникальности всех MAC-адресов Институт инженеров по электротехнике и электронике (Institute of Electrical and Electronics Engineers, IEEE) выдает производителям диапазон MAC-адресов.
В ходе сканирования в сети должны быть обнаружены два компьютера, а его результат должен выглядеть следующим образом:

Фактические IP-адреса будут зависеть от ваших настроек. Как правило, машина с наименьшим IP-адресом является маршрутизатором в локальной сети. В оставшейся части этой главы мы будем называть данный IP-адрес <IP-адрес_маршрутизатора>.
Второй IP-адрес, принадлежащий виртуальной машине Metasploitable (нашей жертве), мы будем называть <IP-адрес_жертвы>. Как только вы обнаружите обе машины, завершите сканирование, нажав сочетание клавиш Ctrl+C.
Теперь вам нужно разрешить машине Kali Linux пересылать пакеты от имени других машин, включив пересылку IP-пакетов. Убедитесь в том, что являетесь пользователем root в машине Kali Linux, а затем включите пересылку IP-пакетов, установив соответствующий флаг:
kali@kali:~$ echo 1 > /proc/sys/net/ipv4/ip_forward
Теперь вам нужно заставить жертву поверить в то, что ваш компьютер является маршрутизатором. Для этого отправьте поддельные ARP-ответы, говорящие о соответствии вашего MAC-адреса IP-адресу маршрутизатора. Схема данного этапа атаки представлена на рис. 2.4.

Вы можете сгенерировать несколько поддельных ответов ARP, выполнив команду:
arpspoof -i eth0 -t <IP-адрес_жертвы> <IP-адрес_маршрутизатора>
Флаг -t обозначает цель, а флаг -i — интерфейс. Ваша сетевая карта поддерживает несколько способов подключения к сети. Например, wlan обозначает беспроводную локальную сеть (соединение Wi-Fi), а eth0 — соединение Ethernet. В нашей виртуальной лаборатории машины связаны через Ethernet, поэтому в качестве интерфейса мы будем использовать eth0. Если бы вы находились в кафе, то в качестве интерфейса выступала бы сеть wlan.
Следующий фрагмент демонстрирует результат выполнения команды arpspoof. Вам потребуется сгенерировать несколько поддельных ARP-ответов, чтобы гарантировать постоянное присутствие в таблице ложной информации. Данный инструмент сгенерирует за вас несколько пакетов, поэтому его достаточно запустить только один раз.
kali@kali:~$ sudo arpspoof -i eth0 -t 192.168.100.101 192.168.100.1
[sudo] password for kali:
8:0:27:1f:30:76 8:0:27:fe:31:e6 0806 42: arp reply 192.168.100.1 is-at 8:0:27:1f:30:76
8:0:27:1f:30:76 8:0:27:fe:31:e6 0806 42: arp reply 192.168.100.1 is-at 8:0:27:1f:30:76
Рассмотрим результат выполнения команды, обратив особое внимание на первую строку. Она представляет собой сводку информации, содержащейся в только что отправленном пакете. Данная сводка состоит из пяти основных фрагментов.
- 8:0:27:1f:30:76 — MAC-адрес машины Kali Linux (компьютер злоумышленника), создавшей пакет.
- 8:0:27:fe:31:e6 — MAC-адрес компьютера (жертвы), который получит этот пакет.
- 0806 — поле типа, указывающее на то, что ARP-пакет содержится в передаваемом Ethernet-кадре.
- 42 — общее количество байтов, содержащихся в Ethernet-кадре.
- Последний фрагмент, arp reply 192.168.100.1 is-at 8:0:27:1f:30:76, представляет собой краткое содержание поддельного ARP-ответа, в котором указано, что IP-адрес маршрутизатора (192.168.100.1) соответствует MAC-адресу машины Kali Linux (8:0:27:1f:30:76).
Для перехвата входящего интернет-трафика от имени жертвы вам также необходимо заставить маршрутизатор поверить в то, что ею являетесь вы. Откройте новое окно терминала и выполните следующую команду. Обратите внимание на то, что <IP-адрес_маршрутизатора> и <IP-адрес_жертвы> поменялись местами. Это связано с тем, что теперь вы генерируете пакеты, чтобы обмануть маршрутизатор, выдав себя за жертву:
kali@kali:~$ arpspoof -i eth0 -t <IP-адрес_маршрутизатора> <IP-адрес_жертвы>
Теперь, когда вы обманули компьютер жертвы и маршрутизатор, проверим перехваченные пакеты и извлечем из них URL. Это позволит нам создать список сайтов, которые посещает жертва. Извлеките URL, выполнив следующую команду в новом окне терминала:
kali@kali:~$ urlsnarf -i eth0
Вы также можете сгенерировать некий интернет-трафик на компьютере жертвы. Аутентифицируйтесь в виртуальной машине Metasploitable, используя msfadmin в качестве имени пользователя и пароля, а затем введите следующую команду, чтобы сгенерировать веб-запрос для google.com:
msfadmin@metasploitable:~$ wget http://www.google.com
На рис. 2.5 схематически показано, что происходит на данном этапе.

Если вы все сделали правильно, то через пару минут в окне терминала отобразится связанный с веб-запросом URL. Проявите терпение; для анализа пакетов требуется время:
kali@kali:~$ sudo urlsnarf -i eth0
urlsnarf: listening on eth0 [tcp port 80 or port 8080 or port 3128]
192.168.100.101 - - "GET http://www.google.com/ HTTP/1.0"
Посмотрите на этот результат. Несмотря на то что здесь показан только URL, компьютер злоумышленника перехватывает все пакеты, которые жертва отправляет и получает из интернета. Это означает, что хакер может просматривать любую незашифрованную информацию, передаваемую жертвой по сети. Кроме того, он может модифицировать пакеты с целью внедрения в систему вредоносного кода.
Достигнув цели, не следует оставлять ARP-таблицы в поврежденном состоянии. Когда злоумышленник покинет кафе, жертва больше не сможет подключиться к интернету и заподозрит неладное. Перед завершением атаки необходимо восстановить исходную конфигурацию ARP-таблиц. К счастью, инструмент arpspoof способен сделать это за нас. Завершите атаку, нажав сочетание клавиш Ctrl+C в обоих терминалах c запущенным arpspoof.
ЗАЩИТА ОТ ARP-СПУФИНГА
Несмотря на то что предотвратить атаку этого типа довольно сложно, шифрование интернет-трафика помогает защитить информацию от кражи и изменения. Любой трафик, отправляемый через HTTPS-соединение, является зашифрованным. Однако проверять URL каждой посещаемой страницы вручную довольно утомительно, поэтому Фонд электронных рубежей (Electronic Frontier Foundation, EFF) (eff.org) создал расширение браузера (для Chrome, Edge, Firefox и Opera) под названием HTTPS Everywhere, которое гарантирует то, что весь ваш сетевой трафик проходит через HTTPS-соединение. Таким образом, установка данного плагина — отличный способ защитить себя.
Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 25% по купону — Hacking