Вы находитесь на странице: 1из 3

Определение DoS атаки типа TCP SYN Flood при помощи Wireshark:

Атаки «отказа в обслуживании» (Denial of Service), печально известные также как


DoS-атаки, достаточно просты в проведении, далеко не всегда очевидны и способны
стать причиной серьезных сбоев в работе вычислительной системы, что неминуемо
приведет к увеличению времени простоя ваших системных ресурсов. При атаке с помощью
переполнения SYN-пакетами (TCP SYN Flood) злоумышленники используют трехстороннее
рукопожатие по протоколу TCP, чтобы вызвать сбои в работе сети и сервисов. Атаки
такого типа могут легко застать вас врасплох, так как зачастую системным
администраторам бывает сложно их быстро идентифицировать. К счастью, такие
инструменты, как Wireshark, упрощают захват и проверку любых подозрительных
активностей, которые могут оказаться DoS-атакой.

Принцип работы атаки TCP SYN Flood:


Когда клиент пытается подключиться к серверу с использованием протокола TCP
(например, при установлении HTTP- или HTTPS-соединения), он сразу должен пройти
процедуру трехстороннего рукопожатия, прежде чем обмен данными между клиентом и
сервером станет возможным. Поскольку инициатором трехстороннего рукопожатия TCP
всегда является клиент, то он первым отправляет пакет с флагом SYN серверу.
Получив такой SYN-пакет, сервер отвечает, подтверждая получение запроса и отправляя
при этом свой собственный запрос SYN — пакет с установленными флагами SYN и ACK.
Клиент, в свою очередь, получив пакет с подтверждением и запросом от сервера,
отправляет серверу пакет с установленным флагом ACK, который подтверждает, что оба
хоста согласны создать соединение. После такого «обмена рукопожатиями» соединение
считается установленным, и данные могут передаваться между хостами.
При проведении TCP SYN Flood атаки злоумышленники интенсивно отправляют серверу
большое количество SYN-пакетов с поддельными IP-адресами. Это заставляет сервер
реагировать, отправляя в ответ на каждый такой ложный запрос пакет SYN-ACK, выделяя
часть ресурсов и оставляя свои порты «полуоткрытыми» в ожидании многочисленных
ответов (пакетов с установленным флагом ACK) от хостов, которых на самом деле не
существует, и подтверждений они, соответственно, отправлять не будут.
При проведении более простой версии атаки TCP SYN Flood (прямой атаки без подмены
IP-адреса) злоумышленники просто используют настройки брандмауэра, чтобы
заблокировать получение обратных пакетов с установленными флагами SYN и ACK от
сервера жертвы еще до того, как эти отправленные в ответ запросы достигнут их
системы. Заваливая свою цель SYN-пакетами и не отвечая на запросы (не отправляя в
ответ пакеты ACK), атакующие могут легко исчерпать ресурсы цели, при этом не
слишком перегружая свои ресурсы. Ведь в это время сервер жертвы «изо всех сил»
пытается справится с резко возросшим трафиком, что, как следствие, серьезно
увеличивает использование ЦП и памяти. В конце концов, это может привести к
исчерпанию всех его ресурсов (ЦП и ОЗУ), и сервер жертвы больше не сможет
обслуживать любые клиентские запросы (в том числе и от добросовестных
пользователей), то есть не предоставлять им доступ к системным ресурсам и сервисам.

Использование Kali Linux & hping3 для моделирования атаки TCP SYN Flood:
Однако, для того, чтобы провести аудит безопасности и проверить, можете ли вы
обнаружить этот тип DoS-атаки, прежде всего вы должны научиться ее сами проводить.
Пожалуй, самый простой способ достижения этой цели базируется на использовании
дистрибутива Kali Linux, а точнее — программы hping3, популярного TCP-инструмента
тестирования проникновения, включенного в набор Kali Linux.

Пользователи Linux в качестве альтернативной возможности могут установить


инструментарий hping3 в свой существующий дистрибутив Linux с помощью следующей
команды:
# sudo apt-get install hping3

Так как в большинстве случаев злоумышленники будут использовать генератор пакетов


hping или другой инструментарий с подобной функциональностью для подмены реальных
IP-адресов случайными, мы также обратим фокус нашего внимания на этот момент.
Следующая строка позволяет нам начать и направить атаку TCP SYN Flood на нашу цель
(192.168.1.159):
«# hping3 -c 15000 -d 120 -S -w 64 -p 80 --flood --rand-source 192.168.1.159»

А теперь давайте детально разберем приведенную чуть выше команду. Мы отправляем


15000 пакетов («-c 15000») размером 120 байт («-d 120») каждый. Мы также указываем,
что флаг SYN («-S») должен быть включен, а размер TCP-окна имеет значение 64 («-w
64»). Чтобы направить атаку на HTTP-веб-сервер нашей жертвы, мы указываем порт 80
(«-p 80») и используем флаг («--flood») для максимально быстрой отправки пакетов.
Как вы, наверное, уже поняли, флаг («--rand-source») используется для генерирования
поддельных IP-адресов, чтобы замаскировать реальный источник и избежать
обнаружения, а также в то же самое время не дать системе злоумышленника получать
ответные пакеты с установленными флагами SYN и ACK от сервера жертвы.

Использование Wireshark для идентификации атаки TCP SYN Flood:

Для лучшего иллюстрирования нашего руководства мы создали тестовую среду, в которой


мы использовали ноутбук с установленным дистрибутивом Kali Linux для проведения
атаки через сетевой коммутатор на стационарный компьютер под управлением ОС Windows
10. Несмотря на то, что подобная структура защищена намного хуже, чем многие
корпоративные сети, для нашего тестового испытания это не имеет значения, так как
злоумышленники могут реализовать подобные атаки после получения
несанкционированного доступа и проникновения в сеть. Также как вы могли видеть из
приведенной выше команды hping3 (детальнее смотрите на рисунке 3), мы использовали
случайные IP-адреса, так как именно этот метод атаки TCP SYN Flood будут
использовать опытные злоумышленники.

Осуществляемую атаку TCP SYN Flood довольно легко обнаружить, если вы знаете, что
ищете. Ее начало администраторы сразу же должны идентифицировать по резко
возросшему потоку TCP-трафика. Как и следовало ожидать, основным признаком именно
этой атаки является огромное количество пакетов с флагом SYN, получаемых атакуемым
сервером (в нашей тестовой демонстрации — ПК с Windows 10). При анализе трафика для
их идентификации нам потребуются определенные фильтры. Так, мы можем отфильтровать
трафик по полученным пакетам с установленным флагом SYN без последующего
подтверждения (получения пакетов с установленным флагом ACK), используя следующий
фильтр:
«tcp.flags.syn == 1 and tcp.flags.ack == 0»

мы обнаружили большое количество TCP-пакетов с установленным флагом SYN без


последующего подтверждения на запрос сервера, полученных с очень малой разницей во
времени. Источники каждого такого SYN-пакета отличаются (все пакеты отправлены с
различных IP-адресов), но все они имеют идентичный порт назначения 80 (HTTP),
идентичную длину (120) и размер TCP окна (64). Если мы зададим фильтр
«tcp.flags.syn == 1 and tcp.flags.ack == 1», то увидим, что количество полученных
пар пакетов от клиентов (сразу с установленным флагом SYN, а затем — с флагом ACK)
относительно небольшое (детальнее на рисунке 5). Это верный признак атаки TCP SYN
Flood на вашу систему.

Мы также можем посмотреть графики Wireshark для визуального представления о росте


трафика. График полученных/отправленных пакетов можно получить с помощью выбора
меню «Statistics —> I/O Graph». Для нашего тестового примера этот график
демонстрирует огромный всплеск количества пакетов от 0 до примерно 2400 пакетов в
секунду

Удалив наш фильтр и открыв статистические данные иерархии протоколов («Protocol


hierarchy statistics»), мы также можем убедиться, что нами был зафиксирован
необычно большой объем TCP-пакетов
Все приведенные нами в рамках данного руководства наблюдения за резким изменением
показателей с большой долей вероятности указывают именно на обнаружение атаки TCP
SYN Flood, оставляя очень мизерные шансы для другой интерпретации. Таким образом,
используя Wireshark, мы можем убедиться в осуществлении противоправных действий с
использованием трехстороннего рукопожатия по протоколу TCP со стороны
злоумышленников против наших сетевых ресурсов, и вовремя принять меры для
исправления ситуации.