Атака TCP Reset
Атака TCP Reset (англ. TCP reset attack, подделка TCP reset или спуфинг TCP reset) — способ принудительного завершения TCP-соединения путём отправки поддельного пакета с TCP-флагом сброса (RST). Эта техника вмешательства может использоваться как межсетевым экраном, так и злоумышленником с целью разрыва интернет-соединения.
По состоянию на 2025 год широко известно, что Великий фаервол Китая, цензоры интернета в Иране, а также система TKPPSE в Индонезии применяют атаки TCP Reset для вмешательства в соединения и их блокировки как один из основных методов интернет-цензуры[1].
Предпосылки
Интернет — это система для обмена электронными сообщениями или пакетами данных между отдельными компьютерами. В её состав входят аппаратные компоненты для передачи сообщений (например, медные и оптические кабели), а также формализованные протоколы для форматирования сообщений. Базовым протоколом сети является Интернет-протокол (IP), обычно используемый совместно с такими протоколами, как TCP (англ. Transmission Control Protocol[2]) или UDP (англ. User Datagram Protocol). Набор протоколов TCP/IP применяется, в частности, для электронной почты и веб-браузинга. Каждый протокол добавляет к передаваемому пакету информационный заголовок, который содержит сведения об отправителе, получателе, размере пакета и другие параметры.
Протокол TCP часто используется вместе с IP для установления двунаправленного виртуального соединения между двумя компьютерами. Как протокол с установлением соединения, TCP требует создания логического канала между двумя процессами до начала передачи данных. Это отличает его от UDP, который не требует установления соединения. TCP/IP-сокеты позволяют компьютерам (например, между рабочей станцией с браузером и веб-сервером) обмениваться потоками пакетов данных. Благодаря TCP-соединениям возможно передавать крупные фрагменты данных, превышающие размер одного пакета (например, видеоролики, вложения электронной почты или музыкальные файлы). Хотя некоторые веб-страницы помещаются в один пакет, их, как правило, также передают по TCP для повышения надёжности и контроля ошибок.
Сброс TCP
В каждом пакете, проходящем по соединению TCP, содержится TCP-заголовок. В каждом из этих заголовков присутствует бит, называемый флагом «сброс» (RST)[3]. Обычно этот бит установлен в 0 и не оказывает влияния, однако если он выставлен в 1, получающий компьютер немедленно прекращает использовать данное соединение — не отправляет новых пакетов и отвергает последующие пакеты с идентификаторами этого соединения (порты). Получив такой сигнал, система мгновенно завершает TCP-соединение.
Этот механизм играет важную роль в управлении TCP-соединениями. Например, если компьютер А аварийно завершает работу в момент активного соединения, другой конец соединения — компьютер Б — остаётся неосведомлённым об этом и продолжает отправлять пакеты. После перезапуска компьютер А получает эти «зависшие» пакеты, но не может их корректно обработать из-за утраты контекста соединения и, как правило, возвращает TCP-сброс в адрес компьютера Б. Это информирует Б о разрыве соединения, позволяя пользователю либо попытаться подключиться заново, либо предпринять другие действия.
В вышеописанном случае бит сброса был отправлен одним из участников соединения. Однако возможно, чтобы третья сторона, отслеживая пакеты на линии связи, отправила поддельный пакет с флагом RST одному или обоим адресатам соединения. Заголовки поддельного пакета искусственно имитируют один из реальных концов соединения, копируя их IP-адреса и номера портов. Все поля IP- и TCP-заголовков должны быть подобраны так, чтобы подделка выглядела как реальный пакет; только в этом случае удаётся «обмануть» адресата и заставить его закрыть соединение. Корректно оформленные поддельные TCP-сбросы эффективны для прерывания любого прослушиваемого злоумышленником TCP-соединения.
Законное использование
Одним из применений подделки TCP-сброса может быть злонамеренное разрушение соединения без ведома сторон. Однако также существуют и легитимные решения для сетевой безопасности, использующие поддельные TCP-сбросы. В 1995 году был продемонстрирован прототип ПО «Buster», отправляющий поддельные сбросы для TCP-соединений с определёнными портами. В 2000 году волонтёры Linux предложили использовать схожий подход в межсетевых экранах Linux[3], а к 2003 году открытое ПО, такое как Snort, стало применять TCP-сбросы для разрыва подозрительных соединений[4].
Конфликт вокруг Comcast
К концу 2007 года компания Comcast начала использовать поддельные TCP-сбросы для ограничения работы пиринговых сетей и ряда групповых приложений у своих абонентов[5]. Это вызвало бурные споры и привело к созданию организацией Лорен Вайнштейн, Винтом Серфом, Дэвидом Фарбером, Крейгом Ньюмарком и другими сторонниками сетевой открытости группы Network Neutrality Squad (NNSquad)[6]. В 2008 году участниками NNSquad был выпущен программный агент NNSquad Network Measurement Agent для Windows (автор — Джон Бартас), способный выявлять фальшивые TCP-сбросы Comcast и отличать их от обычных сбросов, генерируемых оконечными точками. Технологии обнаружения фальшивых сбросов были унаследованы от предыдущего открытого суперконтроля «Buster», в прошлом использовавшего TCP-сбросы для блокировки вредоносного ПО и рекламы в веб-страницах.
В январе 2008 года ФКС (FCC) объявила о начале расследования использования поддельных сбросов Comcast, а 21 августа 2008 года издала предписание прекратить подобную практику[7].
Противодействие
В сочетании с TLS, зашифровка Server Name Indication (SNI) посредством зашифрованного приветствия клиента вынуждает атакующего блокировать целого провайдера ECH-услуг, что обычно приводит к побочному ущербу.
Обфускация сигнатур трафика позволяет обходить правила фильтрации[8][9]. Такой подход подразумевает работу компонента-посредника (man-in-the-middle), который перехватывает, перепаковывает или дополняет пакеты «на лету», после чего DPI-система уже неспособна распознать запрещённый тип трафика (будь то прокси, VPN, HTTPS, SNI, ECH и пр.).
Примечания
Литература
- Clayton, Richard; Murdoch, Steven J.; Watson, Robert N. M. (2006). Danezis, George; Golle, Philippe, eds. Ignoring the Great Firewall of China (PDF). Privacy Enhancing Technologies. Lecture Notes in Computer Science [англ.]. 4258. Кембридж (Великобритания): Springer Berlin. pp. 20—35. DOI:10.1007/11957454_2. ISBN 978-3-540-68793-1.