Каждый день появляется все больше хакеров, и более блестящие умы превращаются в хакеров. Безопасность улучшилась, но хакеры тоже.
Майкл Демон Кальс
Введение
Мы живем в эпоху резкого увеличения числа угроз безопасности и преступлений в сфере информационных технологий. Ежедневно появляются все новые записи в банке данных угроз безопасности ФСТЭК России и CVE. Уязвимости в программном обеспечении, аппаратном обеспечении, социальная инженерия - все это механизмы доступные злоумышленникам при атаках на информационные системы. Специалист по защите информации должен быть в тренде современных подходов и методологий проведения атак и понимать возможные вектора с использованием которых хакеры или другие наавторизованные субъекты могут попытаться получить доступ к информации ограниченного распространения. В данной книге сделана попытка обобщить опыт проведения атак и сделать обзор технологий и методов их реализации.
Удаленные сетевые атаки
Введение
Удалённая сетевая атака — информационное разрушающее воздействие на распределённую вычислительную систему (ВС), осуществляемое программно по каналам связи.
Задачи:
— Познакомится с атаками, представленными в списке;
— Реализовать каждую атаку, используя OS Kali Linux и необходимое сетевое оборудование;
Таблица 1 — Виды атак
1 MAC-Spoofing
1.1 Описание
Суть данной атаки заключается в подмене MAC-адреса на сетевой карте компьютера, что позволяет ему перехватывать пакеты, адресованные другому устройству, находящемуся в том же широковещательном домене.
1.2 Реализация
Посмотрим атаку на практике. Использовать будем следующую топологию, построенную в GNS3:
Посмотрим на таблицу MAC-адресов на коммутаторе (рисунок 1.2).
Пусть наш компьютер пытается получить доступ на сервис knastu.ru посредством ICMP-запросов (рисунок 1.3).
В это время злоумышленник подменивает на своем сетевом интерфейсе MAC-адрес на тот, которые совпадает с компьютером жертвы (рисунок 1.4)
Вновь взглянем на CAM-таблицу коммутатора (рисунок 1.5)
В таблице MAC-адресов коммутатора запись с атакованным MAC-адресом соотнесена с интерфейсом, на котором в последний раз был идентифицирован кадр с данным source MAC-адресом. Как результат, до поступления кадра с атакуемого устройства, все данные коммутатор, в соответствии со своей таблицей MAC-адресов, будет пересылать на атакующее устройство.
Теперь, если злоумышленник начнет генерировать трафик, то некоторые пакеты, адресованные жертве, будут приходить на сетевой интерфейс атакующего. Посмотрим, как злоумышленник может перехватывать трафик, адресованный жертве (рисунок 1.6).
Как можно заметь из рисунка 1.6 злоумышленник имеет адрес 192.168.1.101 на сетевом интерфейсе, однако на него все равно приходят пакеты, адресованные 192.168.1.100. Причем, если пакет попал на сетевой интерфейс злоумышленника, то жертва получает сообщение Request timed out.
Теперь вернем MAC-адрес на прежний (рисунок 1.7).
Как можно увидеть данная атака выполняется очень легко, посредством всего двух утилит.
1.3 Защита
Защитится от данной атаки можно так же просто, как и реализовать ее. Для этого на интерфейсе коммутатора достаточно включить port-security. К сожалению, из-за ограничений GNS3 (невозможность работы обычного коммутатора, а замена его на EtherSwitch) команда port-security не может быть продемонстрирована на практике (листинг 1.1).
Листинг 1.1 — Настройка port-security на интерфейсе коммутатора
2 MAC-flooding
2.1 Описание
У таблицы MAC-адресов есть следующие особенности:
— Максимальный размер таблицы ограничен в зависимости от коммутатора и колеблется от нескольких сотен до 100 тысяч записей.
— Для отслеживания старых записей используется специальный таймер. Каждый раз, когда через коммутатор передается пакет с определенным MAC-адресом источника, таймер для соответствующей записи в таблице обнуляется. Если некоторый узел долгое время не передает данные, запись с его MAC-адресом удаляется из таблицы.
Идея атаки MAC-flooding заключается в отправке большого количества ARP-ответов на коммутатор, что приводит к перегрузке CAM-таблицы коммутатора.
2.2 Реализация
Для реализации будем использовать топологию, как и в предыдущем задании. В качестве инструмента отравления CAM-таблицы коммутатора воспользуемся утилитой Kali Linux под названием macof.
Macof заполняет CAM-таблицу менее чем за минуту или около того, поскольку он посылает огромное количество записей MAC примерно 155 000 в минуту, если быть точным.
Использование чрезвычайно просто. Все, что нам нужно сделать, это выполнить команду «macof» из нашего терминала. Этот инструмент уже установлен во всех версиях Kali Linux.
Взглянем на таблицу MAC-адресов коммутатора до атаки (рисунок 2.1).
Теперь воспользуемся утилитой macof и отравим ее (рисунки 2.2 — 2.4).
Как можно увидеть из рисунков выше отравление таблицы происходит путем генерирования большого количества запросов с разными IP- и MAC-адресами, причем количество этих запросов огромно и все MAC-адреса привязываются к интерфейсу, к которому подключен злоумышленник (в нашем случае Fa1/2).
Как только CAM-таблица была заполнена, мы можем открыть Wireshark и начать захват трафика. По умолчанию Wireshark настроен на захват трафика в неразборчивом режиме, однако он нам не нужен, так как коммутатор перешел в режим концентратора, а значит трафик уже неразборчивый.
Следует заметить сходство с атакой ARP-poisoning, ведь при атаке ARP-poisoning, протокол ARP всегда будет доверять тому устройству, от которого исходил ответ. Из-за этого недостатка в дизайне коммутатор никоим образом не может проверить, что ARP-ответ был отправлен с доверенного устройства.
Из-за этого изъяна злоумышленник имеет возможность отправить поддельный ARP-ответ на любой компьютер в сети, чтобы заставить его поверить, что определенный IP-адрес связан с определенным MAC-адресом, тем самым отравляя ARP-кэш коммутатора, который сопоставляет IP-адреса с MAC-адресами.
Таким образом, эти две атаки, то есть ARP-poisoning и MAC-flooding, связаны с протоколом ARP.
Чтобы узнать больше о macof, наберем «macof -h», что покажет все возможные варианты (рисунок 2.5).
Отсюда видно, что, например, с параметром -n можно задать количество генерируемых запросов, а параметром -d можно задать IP-адрес назначения (рисунок 2.6).
Теперь пусть PC-1 попытается пройти аутентификацию на некотором сайте, а злоумышленник — перехватить данные, необходимые для авторизации на ресурсе (рисунки 2.7 — 2.8)
Если аутентификация проходит по открытому протоколу, то используя сниффер можно перехватить учетные данные пользователя.
Как можно увидеть данная атака реализуется даже проще, чем MAC-spoofing, всего 1-й командой. Теперь рассмотрим главные методы защиты от нее.
2.3 Защита
Одними из главных контрмер против атаки типа MAC-flooding являются:
— Port Security — запрещает нескольким MAC-адресам присоединятся к одному порту (установка статического MAC-адреса).
— Реализация протокола 802.1X — позволяет применять правила фильтрации пакетов, выпускаемые централизованным сервером AAA, на основе динамического обучения клиентов.
— Фильтрация MAC — Ограничивает количество MAC-адресов на коммутаторе.
3 ARP-spoofing
3.1 Описание
Протокол ARP
Протокол ARP предназначен для преобразования IP-адресов в MAC-адреса. Познакомиться с протоколом можно в соответствующем RFC.
3.2 Реализация атаки
Для реализации данной атаки воспользуемся сетевой топологией из предыдущего задания и утилитой Ettercap, которая доступна в репозиториях Kali Linux.
Целью данной атаки будет попытка атакующего вклиниться в канал передачи данных от PC-1 до R1. Таким образом атакующий будет иметь доступ ко всему трафику, который получает и отправляет жертва.
Взглянем на ARP-таблицу на PC-1 (рисунок 3.2).
Как можно заметить IP-адрес шлюза закреплен за MAC-адресом роутера. Посмотрим на аналогичную таблицу на маршрутизаторе (рисунок 3.3).
Все данные совпадают с тем, что мы увидели на PC-1. Теперь воспользуемся программой Ettercap и проведем ARP-spoofing атаку. Можно использовать консольный интерфейс, но мы воспользуемся графической оболочкой (рисунки 3.4 — 3.5).
Листинг 3.1 — Открытие графической оболочки ettercap
Запустим сканирование сети, чтобы определить хосты внутри сети (рисунки 3.6 — 3.7).
Как можно увидеть из рисунка 3.6 Ettercap выполняет сканирование сети, путем отправки широковещательных запросов для каждого IP-адреса. Диапазон IP-адресов для запросов вычисляется на основе IP-адреса и маски сети, которые прописаны на выбранном интерфейсе. Однако следует заметить, что в графе отправитель указан MAC-адрес злоумышленника, поэтому, чтобы в настоящей атаке скрыть свое присутствие следует сменить MAC-адрес на используемом интерфейсе утилитой macchanger.
Теперь выберем 2 цели, против которых собираемся проводить атаку ARP-spoofing (рисунок 3.8)
Последовательность выбора на имеет значение. Чтобы проверить, какие цели были выбраны выбираем «Ettercap Menu — Targets — Current Targets» (рисунок 3.9)
Далее в меню «MITM menu» выбираем атаку ARP poisoning… и прослушиваем весь трафик (рисунки 3.10 — 3.11).
Теперь просмотри трафик, сгенерированный Ettercap (рисунок 3.12)
Как можно увидеть компьютер злоумышленника отсылает 2 ARP-пакета. В первом утверждается, что IP-адрес 192.168.1.100 теперь привязан к MAC-адресу злоумышленника. Второй пакет повторяет то же самое с IP-адресом 192.168.1.1.
Посмотрим теперь на ARP-таблицы на PC-1 и R1 (рисунки 3.13 — 3.14).
Атака прошла успешно. Теперь компьютер жертвы верит, что IP-адрес маршрутизатора привязан к MAC-адресу злоумышленника, а маршрутизатор верит, что IP-адрес PC-1 привязан к MAC-адресу злоумышленника.
Теперь злоумышленник прослушивает весь трафик между PC-1 и роутером. Для того, чтобы отобразить текущее соединение в Ettercap откройте «Ettercap Menu — View — Connections» (рисунок 3.15).
Чтобы просмотреть подробнее какой-либо пакет достаточно просто кликнуть по строке 2 раза.
Теперь пусть PC-1 аутентифицируется на некотором сайте, а злоумышленник попытается перехватить данные (рисунки 3.16 — 3.18).
В ettercap так же будут видны данные пользователя при использовании открытых протоколов.
После окончание атаки обязательно нажимайте на кнопку «Stop MITM», чтобы закрыть все атаки и восстановить все отравленные ARP-таблицы до их исходного состояния, чтобы замести следы.
За счет наличия графического интерфейса данная атака выполняется очень легко. Теперь рассмотрим методы для противодействия атаке ARP-spoofing.
4 DHCP-spoofing
4.1 Описание
DHCP позволяет устройствам автоматически получать конфигурацию сети при подключении к сетевому интерфейсу (обычно при загрузке).
Эта конфигурация обычно включает, помимо прочего, IP-адрес, присваиваемый устройству, доменное имя DNS и IP-адрес маршрутизатора по умолчанию, сервера DNS и сервера имен NetBIOS.
4.2 Реализация
В этом задании топология немного изменится по сравнению с предыдущими (рисунок 4.2).
DHCP-сервер сконфигурирован на роутере. Его пул приведен на рисунке. Как и в прошлом задании для проведения атаки воспользуемся утилитой Ettercap.
Посмотрим настройки сетевого интерфейса на PC-1 (рисунок 4.3).
DHCP-сервер выдал нашему компьютеру адрес 192.168.1.102. Теперь атакующий запускает на своем компьютере Ettercap и производить атаку DHCP-spoofing (рисунок 4.4 — 4.6).
Заметим, что мы не выбираем цели для атаки, так как, по сути, мы разворачиваем свой DHCP-сервер, а поэтому у нас нет конкретных целей для атаки.
Рассмотрим поподробнее параметры на рисунке 4.5:
— Пустой диапазон IP-адресов: Ettercap будет подделывать только ACK-сообщения. Если в это поле вписать диапазон адресов, например, 192.168.1.50—192.168.1.99, то Ettercap будет отсылать сообщения OFFER.
— 255.255.255.0: маска сети.
— 192.168.1.1: адрес DNS-сервера (это значение бессмысленно, но этот аргумент обязателен).
Теперь, когда ложный сервер запущен представим ситуацию, что пользователь PC-1 только включил свой компьютер в начале рабочего дня и попытался получить адрес от DHCP-сервера. Посмотрим на трафик в этот момент времени (рисунок 4.7)
Сначала Ettercap обнаружил широковещательное сообщение DISCOVER, но, поскольку мы не указали диапазон IP-адресов, он не реагировал на него.
Затем Ettercap обнаружил широковещательное сообщение REQUEST, содержащее IP-адрес, выделенный законным сервером DHCP, и отреагировало, отправив поддельный ACK клиенту с нашим настроенным адресом маршрутизатора.
В зависимости от удачи, атакующему может потребоваться попытаться второй или даже третий раз, прежде чем преуспеть (в реальной жизни будет несколько компьютеров, загружающихся вместе в начале рабочего дня, поэтому есть много шансов на успешный перехват).
Если по какой-то причине Ettercap систематически проигрывает гонку против DHCP-сервера, перенастройте DHCP-spoofing на отправку OFFER-сообщений.
Теперь вновь попробуем аутентифицироваться на сайте (рисунки 4.10 — 4.12).
Как видно из всего вышесказанного данная атака тоже является достаточно несложной. Теперь рассмотрим методы защиты от нее.
5 DHCP Starvation
5.1 Описание
Для реализации DHCP DISCOVER flood можно воспользоваться функциональностью утилиты Yersinia. Yersinia предлагает функциональность DHCP DISCOVER flood, однако не следует путать эту атаку с фактической атакой DHCP Starvation, поскольку эффект от этой атаки является гораздо более временным (это может быть или не быть преимуществом, в зависимости от того, что вы пытаетесь достичь).
5.2 Реализация
Посмотрим состояние сетевого интерфейса на компьютере PC-1 и состояние пула DHCP до начала атаки (рисунки 5.1 — 5.2).
На интерфейсе PC-1 находится адрес 192.168.1.189, выданный из DHCP-пула INTRANET.
Теперь запустим Yersinia (рисунок 5.3).
По умолчанию в программе включен MAC-spoofing. Чтобы его отключить зайдите в меню «Options».
Первым делом определим адрес DHCP-сервера в сети. Для этого выберем меню «Launch attack — DHCP — sending RAW packet» и подтвердите выбор (рисунок 5.4).
Программа отправила широковещательный DISCOVER запрос и в ответ получила OFFER от DHCP-сервера. Благодаря этому мы узнали адрес DHCP-сервера в сети. В Wireshark ситуация аналогичная (рисунки 5.5 — 5.6).
Обратите внимание на то, что MAC-адрес отправителя благодаря встроенному MAC-spoofing не совпал ни с исходным MAC-адресом злоумышленника, ни с тем, на который мы его сменили.
Хорошо, адрес DHCP-сервера получен, запускаем DHCP DISCOVER flood, чтобы никто не мог получить IP-адрес от легитимного DHCP-сервера (рисунки 5.7 — 5.8).
Заметим, что у каждого пакета уникальный MAC-адрес, благодаря MAC-spoofing.
Воспользуемся топологией, предложенной в предыдущем задании и ОС Kali Linux на машине атакующего.
Посмотрим на пул DHCP на роутере в нашей сети (рисунок 5.9)
Как можно заметить из всего пула занят только 1 адрес. Он принадлежит нашей жертве (рисунок 5.10).
Давайте сымитируем ситуацию, что PC-1 еще не включен, а поэтому он не зарезервировал за собой адрес и проведем атаку DHCP Starvation при помощи DHCPig (рисунки 5.11 — 5.12)
Как можно увидеть генерируется полностью вся DHCP-сессия и каждый раз DHCP-сервер выдает новый адрес устройству.
После нескольких минут атаки посмотрим на DHCP-пул на роутере (рисунок 5.13).
Теперь пусть жертва включает свой компьютер и пытается получить IP-адрес (рисунок 5.14).
Как итог, пользователь не может получить выход в интернет и продолжать свою работу, а значит атака прошла успешно.
Теперь посмотрим на методы защиты от данной атаки.
5.3 Защита
В качестве меры защиты, как и при прошлой атаке, необходимо использовать механизм DHCP snooping.
6 DHCP Starvation и DHCP-spoofing
6.1 Описание
Данное задание является совокупностью двух предыдущих.
Сначала необходимо выполнить DHCP Starvation, а затем развернуть свой поддельный DHCP-сервер.
6.2 Реализация
В данном задании воспользуемся 4-мя утилитами:
— Macchanger — для смены MAC-адреса на компьютере атакующего;
— DHCPig — для атаки DHCP Starvation;
— Metasploit — для разворачивания поддельного DHCP-сервера и выполнения атаки MITM;
— Wireshark — для анализа трафика сети.
Топология остается такая же, как и в предыдущем задании. На компьютере злоумышленника установлена ОС Kali Linux со всеми перечисленными выше утилитами.
Посмотри состояние сетевого интерфейса на компьютере PC-1 и состояние пула DHCP до начала атаки (рисунки 6.1 — 6.2).
На интерфейсе PC-1 находится адрес 192.168.1.189, выданный из DHCP-пула INTRANET.
Утилитой macchanger сменим MAC-адрес на устройстве атакующего (рисунок 6.3).
Не забудьте после окончания атаки вернуть обратно MAC-адрес на интерфейсе.
Сначала нам нужно настроить наш интерфейс, так, чтобы все пакеты, приходящие на него, передавались дальше по сети (рисунки 6.4 — 6.5).
Для этого создадим сетевой интерфейс на компьютере, который будет использоваться в качестве шлюза по умолчанию для маршрутизации наших мошеннических клиентов DHCP. На него необходимо установить IP-адрес, не используемый в сети.
В идеале хотелось бы использовать адрес, который на первый взгляд похож на фактический маршрут по умолчанию, чтобы скрыть изменения для любого, кто может искать. Например, в нашем случае маршрут по умолчанию — 192.168.1.1, то используем 192.168.1.11. Если бы маршрут был похож на — 192.168.1.254, то можно было бы использовать 192.168.1.251.
После этого нужно разрешить пересылку на машину злоумышленника. Необходимо помнить, что подчиненный интерфейс и переадресация IP исчезнут после перезагрузки.
Далее устанавливаем шлюз по умолчанию для подчиненного интерфейса eth0:1. Шлюз по умолчанию должен быть установлен на допустимый сетевой шлюз по умолчанию, в нашем случае 192.168.1.1. В дополнение к тому, что этот шлюз по умолчанию для нашей машины, он также будет функционировать как маршрут по умолчанию для любого маршрутизируемого трафика, поступающего в интерфейс 192.168.1.11. Это означает, что любой хост, для которого в качестве шлюза по умолчанию установлено 192.168.1.11, получит 192.168.1.11, и его трафик будет немедленно перенаправлен на допустимый шлюз 192.168.1.1, что позволит нам прослушивать его при прохождении.
Переадресация всего трафика с нашего маршрутизатора на базе Kali на законный маршрутизатор обеспечивает поддержание потока трафика пользователей, а также того, что мы вклинились в их потоки.
При вводе команды route -n будет выведена таблица маршрутов. Пункт назначения 0.0.0.0 подразумевает, что любой неизвестный трафик должен быть отправлен на шлюз 192.168.1.1. Также отметим, что флаги показывают UG, где G подразумевает шлюз по умолчанию.
Теперь запустим Metasploit (рисунок 6.6).
Развернем DHCP-сервер в Metasploit (рисунки 6.9 — 6.10).
Но не спешите его запускать, сперва нам нужно разобраться со старым DHCP-сервером. У нас есть два варианта, описанные в предыдущем задании. Воспользуемся грубым DHCP Starvation с функцией посылки кадров DHCP RELEASE. Так мы гарантируем, что помимо того, что заполним весь пул адресов, так еще и отключим все хосты, которые брали свои настройки на легальном DHCP-сервере.
Для запуска DHCP Starvation с функцией отправки DHCP RELEASE соседям необходимо запустить DHCPig с параметром -r. Теперь запустим DHCPig и дождемся полного отравления DHCP-пула на сервере DHCP (рисунки 6.11 — 6.12).
После того, как все подготовительные этапы завершены запустим наконец поддельный DHCP Server (рисунок 6.13).
Теперь наш поддельный DHCP-сервер запущен и ожидает жертв. К сожалению, параметр -r не сработал и компьютеры остались в пуле старого DHCP-сервера. Давайте представим, что жертва только включила компьютер, а легитимный DHCP-сервер заполнен (рисунки 6.14 — 6.15)
Как можно заметить, во время запроса IP-адреса даже не было состояния гонки между легитимным и поддельным DHCP-серверами. У легитимного DHCP-сервера пул полностью заполнен, а значит ему нечего предложить клиенту, поэтому DHCP-сервер злоумышленника без проблем берет пользователя к себе.
Теперь мы можем пользоваться любым сниффером трафика на интерфейсе eth0:1 и просматривать трафик всех пользователей, получивших настройки от нашего DHCP-сервера.
6.3 Защита
В качестве меры защиты, необходимо использовать механизм DHCP snooping, который подробно был рассмотрен в задании 4.
7 DNS-spoofing
В ходе данной атаки реализуем DNS-spoofing методом MITM. Для этого нам понадобится:
— Ettercap для отравления DNS-кеша;
— Msfvenom для генерации payload;
— Metasploit для получения сессии с компьютером жертвы;
— Apache для развертывания фиктивного сайта.
Сетевая топология останется такой же, как и в прошлом задании.
Первым делом создадим сайт, который будем показывать жертве. Сейчас много людей в связи с «самоизоляцией» использует Zoom. Поэтому создадим фишинговую страницу, имитирующую страницу загрузки Zoom (рисунки 7.2 — 7.3).
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.