<gh_stars>0
\documentclass[../thesis.tex]{subfiles}

\begin{document}

\chapter{Угрозы безопасности ПКС} \label{chapter:classification}

В данной главе приведено описание атак, которые злоумышленник может производить при помощи скомпрометированного ПКС коммутатора.
При описании используется предположение о том, что атакующий может добавлять, удалять и модифицировать сущности в таблице потоков скомпрометированного коммутатора.

\section{Атаки на контур передачи данных}

Злоумышленник может использовать подконтрольные ему коммутаторы для проведения атак как на пользовательский трафик, так и на другие коммутаторы в сети.

\subsection{Атаки на канал передачи данных}

\subsubsection{Сброс пакетов}

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

\subsubsection{Изменение заголовков пакетов}

Скомпрометированный коммутатор может использовать возможности протокола OpenFlow по изменению заголовков проходящих через него пакетов.
Изменение заголовков пакетов может повлиять на логику обработки конкретного пакета коммутаторами, которые неподконтрольны атакующему.
Например, некоторый набор пакетов может быть направлен по другому пути, создавая тем самым перегрузки на некоторых участках сети.

\subsubsection{Некорректная маршрутизация пакетов}

Скомпрометированный коммутатор может перенаправлять или дублировать входящие в него пакеты на порт, выбранный злоумышленником.
Одним из возможных применений данной атаки является дублирование некоторого трафика на сервера, контролируемые атакующим, для дальнейшего анализа.

\subsubsection{Модификация пакетов}

Скомпрометированный коммутатор способен модифицировать содержимое пакетов, проходящих через него.
Такая возможность позволяет атакующему производить \textit{Man-in-the-Middle} атаки \cite{desmedt2011man} в сети.

\subsubsection{Нарушение порядка пакетов}

Скомпрометированный коммутатор может изменить порядок проходящих через него пакетов, что приведет к падению пропускной способности транспортных соединений или к отказу в обслуживании.

\subsubsection{Искусственные задержки}

Скомпрометированный коммутатор может искусственно задерживать трафик.
Также, как и нарушение порядка пакетов, искусственные задержки ведут к снижению пропускной способности сети.

\subsubsection{Подделка пакетов}

Скомпрометированный коммутатор может генерировать пакеты и внедрять их в существующий поток трафика, либо создавать новые потоки трафика.
Данная атака может быть использована для проведения широкого спектра атак внутри ПКС сети, например, \textit{DDoS} атак \cite{mirkovic2004taxonomy} на другие устройства ПКС сети или компрометацию других коммутаторов.

\subsection{Атаки на коммутаторы}

\subsubsection{Искажение значений счетчиков}

Спецификация протокола OpenFlow \cite{openflow15} описывает наличие счетчиков, установленных на правилах маршрутизации, на групповых правилах и на портах коммутатора.
Такие счетчики описывают количество пакетов, обработанных коммутатором.

OpenFlow не предполагает наличия уведомления контроллера в случае переполнения некоторого счетчика и метода, с помощью которого контроллер может проверить факт переполнения счетчика.
Следовательно, появляется возможность производить атаку на переполнение счетчика на некотором коммутаторе без обнаружения этой атаки контроллером.

Атаки подобного типа потребуют значительного времени, так как размеры счетчиков в спецификации OpenFlow равны $64$ битам.

\subsubsection{Перенаправление потока на другой порт}

При использовании механизма агрегации правил, контроллер может объединять несколько пересекающихся правил в одно правило (например, одинаковые адреса назначения и источника).
Если контроллер использует протоколы ARP \cite{plummer1982ethernet}, LLDP \cite{congdon2002link} или другие протоколы для определения адресов канального уровня, уязвимых к подмене адресов, то атакующий может произвести атаку перенаправления трафика.
Атака состоит в следующем:
\begin{enumerate}
\item Атакующий создает некоторый вредоносный сервер и подключает его к атакуемой сети.
\item Атакующий генерирует множество пакетов с поддельными адресами источника, которые направляет на вредоносный сервер.
\item Контроллер устанавливает правила для каждого потока, идущего на вредоносный сервер.
\end{enumerate}

Цель атаки состоит в том, чтобы контроллер произвел объединение правил, направляющих потоки на вредоносный сервер, и установил в адрес источника целую подсеть.
Тем самым трафик, который будет проходить в данной подсети, будет перенаправлен на вредоносный сервер.
Периодическая генерация подобных пакетов не позволит правилам превысить период бездействия и удалиться.

Помимо атак на протоколы ARP и LLDP, атакующий может использовать MAC адрес существующего сервера системы.
Например, если контроллер не хранит отображение \textit{MAC} адресов \cite{hornig1984standard} на порты коммутатора, то существует возможность перенаправления трафика к вредоносному серверу с тем же \textit{MAC} адресом, так как контроллер будет считать, что оригинальный сервер был подключен к другому порту.
Данная атака предполагает, что правила, направляющие потоки на атакуемый сервер, были удалены по истечению времени.
В таком случае, атакующий начнет генерировать поддельный трафик, который установит правила, направляющие последующий трафик на вредоносный сервер.

\subsubsection{Проверка существования правил}

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

Эта атака позволяет злоумышленнику определить, установлены ли на коммутаторе правила для некоторых потоков.
Целью подобных атак является проверка статуса сети --- какие именно хосты активны, и какие действия они производят.

\subsubsection{Определение реакции контроллера}

Целью данной атаки является поиск пакетов, в ответ на которые контроллер создает правила на коммутаторах.
Данная атака представляет собой интерес для злоумышленника, так как она позволяет понять в какой сети работает злоумышленник: традиционной или ПКС.
Атакующий отправляет два пакета из одного и того же потока на коммутатор в короткий промежуток времени, позволяя контроллеру установить потоковое правило, если это необходимо.
Если потоковое правило было создано, то время ответа на второй пакет будет меньше, чем на первый.

\subsubsection{Переполнение таблицы потоков}

Для того чтобы провести атаку на таблицу потоков коммутатора, необходимо заставить контроллер генерировать множество новых потоковых правил за короткий промежуток времени.
Предполагается, что для каждого нового пакета контроллер устанавливает новое правило.
Следует обратить внимание на то, что успешность атаки зависит от стратегии, используемой контроллером: реактивной или проактивной.
Проактивная стратегия создает правила, которые действуют на большое количество потоков, в то время как реактивная стратегия создает потоковые правила для каждого потока отдельно.
Реактивная стратегия позволяет атакующему переполнить таблицу потоков.

\subsubsection{Переполнение входного буфера}

Вместо переполнения таблицы потоков, атакующий может произвести атаку на переполнение входного буфера коммутатора.
Следуя семантике протокола OpenFlow \cite{openflow15}, если буфер коммутатора переполнен, то на анализ контроллеру будут отправляться не заголовки пакетов, а пакеты целиком.
Данный факт делает возможным произведение атаки отказа в обслуживании на контроллер.
Предполагая, что коммутатор не сбрасывает пакеты самостоятельно, а всегда отправляет их на контроллер, имеем следующий критерий переполнения входного буфера коммутатора.

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

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

Стоит отметить, что на успешность атаки влияет реакция самого коммутатора на переполнение буфера.
Коммутатор может сбрасывать пакеты самостоятельно в силу некоторых причин (таких как \textit{QoS} \cite{xiao1999internet}).

\subsubsection{Компрометация коммутатора}

Злоумышленник может использовать захваченный им коммутатор для эксплуатации уязвимостей на других коммутаторах и для распространения вредоносного программного обеспечения.
В статье \cite{thimmaraju2016reins} был описан вирус-червь \textit{Rein-worm}, который способен полностью захватить сеть, состоящую из коммутаторов \textit{Open vSwitch} \cite{pfaff2015design}, за $100$ секунд.

\section{Атаки на контур управления}

Злоумышленник может использовать подконтрольные ему коммутаторы для проведения атак на управляющий трафик и на контроллер, управляющий ПКС сетью.

\subsection{Атаки на канал управления}

Концепция ПКС предполагает использование двух типов управляющих каналов: \textit{out-of-band} и \textit{in-band} \cite{kim2015band}.
При \textit{out-of-band} каждый коммутатор\linebreak имеет выделенную физическую линию для связи с контроллером.
При \textit{in-band} часть коммутаторов использует промежуточные коммутаторы для связи с контроллером.
Таким образом, при \textit{in-band} управлении, часть маршрутов управляющих каналов может проходить через скомпрометированный\linebreak коммутатор.

Успешность атак на канал управления зависит от методов защиты, используемых для защиты управляющего трафика.
Протокол OpenFlow предполагает защиту управляющего трафика при помощи протокола TLS \cite{turner2014transport}.
Использование TLS необходимо для того, чтобы злоумышленник мог не перехватывать и изменять управляющий трафик.
Несмотря на то, что использование протокола TLS описано в спецификации протокола OpenFlow \cite{openflow15}, этот пункт не является опциональным.
Это приводит к возможности появления в сети ошибок, когда защита не была включена администратором, и злоумышленник имеет доступ к управляющему трафику.

\subsubsection{Сброс управляющего трафика}

Злоумышленник может сбрасывать управляющий трафик, идущий между другими коммутаторами и контроллером.
Вследствие этой атаки коммутаторы становятся неспособны реагировать на изменения в сети и на подключение новых клиентов.
Это происходит потому, что по протоколу OpenFlow коммутаторы не могут самостоятельно устанавливать правила маршрутизации.
Таким образом, производится атака отказа в обслуживании.

\subsubsection{Перехват управляющего канала}

Если в сети не используется протокол TLS для защиты управляющего трафика, то злоумышленник имеет возможность произвольно изменять сообщения, пересылаемые между коммутаторами в сети и контроллером.

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

Злоумышленник также может изменять информацию о сети, передаваемую коммутаторами контроллеру.
Таким образом, контроллер будет хранить некорректные сведения о состоянии сети.

\subsection{Атаки на контроллер}

\subsubsection{Атака на отказ в обслуживании}

\textit{DoS} атака против контроллера может быть проведена при помощи массовой отправки поддельных \textit{packet-in} сообщений.
В зависимости от реализации логики контроллера, обработка специально созданных для целей атаки пакетов может занимать значительное количество процессорного времени.

Отказ в обслуживании контроллера может привести к угрозе отказа в обслуживании всей сети, потому что контроллер не сможет устанавливать новые правила маршрутизации на коммутаторы.

\subsubsection{Подделка состояния коммутатора}

Злоумышленник может передавать контроллеру некорректные данные о состоянии захваченного коммутатора.
Вся информация, которую контроллер имеет о сети, предоставляется ему коммутаторами.
И если коммутатор предоставляет некорректные данные, у контроллера нет возможности их проверить.

Злоумышленник может передавать контроллеру некорректную информацию о характеристиках коммутатора, текущей загрузке физических линий связи и статистики по потокам пользовательского трафика.
Из-за некорректных данных, контроллер может неправильно реализовывать логику работы сети.
Например, будет производиться некорректная балансировка нагрузки, либо для коммутации будут выбираться перегруженные порты коммутатора.

Злоумышленник также может использовать такую атаку для сокрытия своих действий от контроллера.

\subsubsection{Подделка состояния сети}

Если в сети не используется протокол TLS или он используется только для аутентификации контроллера, то злоумышленник может создавать поддельные виртуальные коммутаторы в данной сети.
Эта атака может быть использована для изменения сетевой топологии, которая хранится у контроллера.

Создавая поддельные коммутаторы, атакующий может влиять на процесс выбора маршрута для потоков в сети.
Например, если в сети используется маршрутизация по кратчайшему пути, злоумышленник может создать набор поддельных виртуальных коммутаторов на протяжении набора маршрутов для того, чтобы заставить контроллер выбирать для трафика один маршрут.
Выбор одинакового маршрута для всех пакетов в сети может привести к перегрузке на этом маршруте и к потере пользовательского трафика.
Также эта атака может быть использована для создания зарезервированной полосы пропускания для других целей злоумышленника.
\\

Злоумышленник также может передавать контроллеру некорректные данные о топологии сети.
Например, он может создавать виртуальные физические линии, исходящие из скомпрометированного коммутатора.
Трафик, направленный на такие линии, будет сброшен коммутаторами без уведомления контроллера.
Также злоумышленник может создавать виртуальные линии между двумя скомпрометированными коммутаторами для того, чтобы получить доступ к большему количеству трафика в сети.
Например, созданная виртуальная линия может создать новый кратчайший маршрут в сети, что приведет к выбору этого маршрута для различных потоков пользовательского трафика.

\subsubsection{Компрометация контроллера}

Злоумышленник может использовать компрометацию коммутатора как шаг в достижении цели захвата контроллера.
Захват коммутатора необходим потому, что у злоумышленника не может быть доступа к контроллеру из произвольной точки в сети, так как контроллер соединен только с коммутаторами.

Компрометация контроллера позволяет атакующему получить полный контроль над атакуемой сетью.
Так как в сети может использоваться несколько контроллеров, единственной атакой, которая может быть проведена атакующим после компрометации контроллера, является атака на повышение привилегий.
Атака заключается в том, что скомпрометированный контроллер перехватывает управление коммутаторами у других контроллеров.
Данная атака целиком зависит от логики приложений, реализующих переключение коммутаторов между контроллерами.

\section{Вывод}

Большой спектр атак, которые злоумышленник может проводить при помощи скомпрометированного коммутатора, показывает серьезность угрозы захвата коммутатора.
Таким образом, необходимо разрабатывать средства для обнаружения скомпрометированных коммутаторов и обнаружения атак, проводимых при помощи таких коммутаторов.

\end{document}