На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

АТАКА ДЕСИНХРОНИЗАЦИИ

Примечание. Перед прочтением этого раздела повторите материал главы 2; там вы найдете специфические значения помещаемых в заголовке пакета кодов.
В главе 2 рассказывалось о том, что для нормальной работы TCP-соединения необходимо синхронизировать обмен пакетами. На самом деле может случиться и такая ситуация: номер последовательности пакета не соответствует ожидаемому значению. В таком случае получатель отбрасывает этот пакет за ненадобностью и ждет пакет с правильным номером. Хакер может легко воспользоваться этой особенностью протокола для перехвата данных.
Для проведения атаки десинхронизации хакер (путем подмены) переводит оба конца соединения в десинхронизированное состояние, когда обе системы не могут обмениваться данными. После этого хакер использует какой-либо хост (другой компьютер, присоединенный к физическому каналу передачи TCP-па­кетов), для того чтобы перехватывать пакеты и создать подходящие подмены пакетов для обеих сторон захваченного соединения. Генерируемые третьей сто­роной (дополнительный хост) пакеты маскируются под настоящие.
постдесннхронизлциош   АТАКА     ПЕРЕХВАТА ПАКЕТОВ
Предположим на мгновение, что хакер может прослушивать любой пакет како­го-либо TCP-соединения. Более того, допустим, что, перехватив каждый па­кет, хакер может подделать любые типы IP-пакетов. Таким образом, злоумыш­ленник может выдавать себя за клиента или сервер (или и за того, и за другого). Если хакер действительно может выполнить все эти операции, то ничто не по­мешает ему заставить проходить пакеты через свою машину.
В следующих разделах я расскажу о некоторых методах десинхронизации TCP-соеди­нения. Предположим, что хакер смог десинхронизировать TCP-сеанс, а клиент отправил сообщение, в заголовке которого содержатся следующие строки:


Первая строка заголовка указывает, что номер последовательности пакета должен равняться следующему определенному клиентом номеру последовательности. (В этой строке seg обозначает data segment- сегмент данных.) Во второй строке устанавливается, что значение подтверждения приема должно равняться следу­ющему значению подтверждения приема. Так как хакер уже десинхронизировал TCP-соединение, то номер последовательности пакета (CLTSEQ) не будет рав­няться посланному ранее сервером значению подтверждения приема (SVR_ACK). Поэтому сервер не сможет принять этот пакет (он его проигнорирует). После этого хакер скопирует отброшенный сервером пакет (5).
настоящий клиент сервер Хакер копирует отброшенный сервером пакет.
После некоторой задержки (во время которой сервер отбрасывает пакет) хакер посылает серверу тот же пакет, но с измененными командами SEG_SEQ и SEG ACK (и соответственно измененной контрольной суммой):
SEG_SKQ = SVR_ACK SEG_ACK = SVR_SEQ
Так как теперь номер последовательности пакета соответствует ожидаемому сер­вером значению (SVR_ACK равняется SEG_SEQ), то сервер примет данные за­головка, а затем и сам пакет. В то же время (2) настоящий отправи­тель пакета (подвергшийся атаке компьютер) будет повторно посылать один и тот же пакет или выдавать подтверждения о приеме (сообщение АСК). На ри­сунке 9.6 показано, как выглядит перехваченное соединение после того, как хакер переслал замаскированный TCP-пакет.
Допустим, переменной CLT_TO_SVR_OFFSET присвоено значение, равное результату вычитания CLT SEQ из SVRACK (т. е. разница между ожидаемым сервером значением последовательности и реальным значением последователь­ности клиента). Если теперь определить переменную SVR_TO_CLT_OFFSET, равную разности значений CLT АСК и SVR_SEQ (другими словами, разницу между ожидаемым клиентом значением последовательности и реальным значени­ем последовательности сервера), то хакер должен будет изменить значения SEGSEQ и SEG ACK следующим образом:
SEG_SEQ = (SEG_SEQ + CLT_TO_SVR_OFFSET) SEG~ACK =   (SEG_ACK - SVR_TO_CLT_OFFSET)
Так как все данные проходят через машину хакера, то он может добавить или удалить из них любое значение. Например, если в соединении используется уда­ленный вход в систему при помощи Telnet, то хакер может включить в передава­емые данные любую команду. Одним из примеров используемых хакерами команд является команда Unix echo. С помощью команды echo jamsa.com Ipj > ~/.rhosts хакер может получить список всех хостов, присоединенных к сети jamsa.com. показано, как злоумышленник может добавить к пересылаемым данным свою команду.
I
сервер
Чтобы клиент не заметил ничего необычного в ответе сервера, хакер должен удалить из него свои данные. показа­но, как хакер перехватывает ответ сервера и удаляет из него свою информацию.
В следующем разделе будет рассказано о шторме ACK. Это явление проис­ходит во время постдесинхронизационной атаки перехвата пакетов. Однако оно не мешает хакеру проводить атаку наблюдения.
ШТОРМ   TCP ACK
У описанной ранее постдесинхронизационной атаки перехвата пакетов есть один существенный недостаток. Дело в том, что во время проведения такого перехва­та генерируется огромное количество АСК-пакетов. Специалисты по сетям на­зывают это явление штормом TCP АСК (storm). Если хост (им может быть и клиент, и сервер) получает неподходящий пакет, то он посылает второй сторо­не пакет, содержащий ожидаемое значение последовательности, и называемый пакетом подтверждения, или пакетом  TCP ACK.
Во время активной атаки первый пакет TCP ACK содержит значение последова­тельности сервера. Клиент не может принять это значение потому, что он не посылал пакет модифицированного запроса. Поэтому он создает свой пакет подтверждения, который заставляет сервер сгенерировать еще один пакет TCP
ACK. В случае идеальной сети (сети без помех) этот процесс был бы бесконе­чен. показано, как происходит шторм TCP ACK.
Так как пакеты подтверждения не переносят никакой полезной информации, отправитель такого пакета не будет повторно посылать его в случае потери. Та­ким образом, если машина потеряет пакет подтверждения, то шторм TCP ACK прекратится. К счастью, IP — это ненадежный сетевой протокол (т. е. прото­кол, не гарантирующий доставки пакетов). А если учесть, что потеря пакета Б сети — это не такое уж редкое явление, то можно с уверенностью сказать, что шторм TCP ACK должен быстро прекратиться. Более того, чем больше пакетов пропадает в сети, тем короче будет шторм. Отмечу, что АСК-цикп является саморегулируемым объектом: чем больше циклов создаст хакер, тем больший трафик будет в сети, и соответственно, больше будет потерь пакетов. А чем больше потерь пакетов, тем быстрее будут прекращаться циклы.
Каждый раз, когда клиент или сервер посылает данные, в TCP-соединении во­зникает новый цикл. Если же обе стороны молчат, то нет и циклов. Допустим, что какая-либо из сторон послала пакет с данными. Если через определенное время эта сторона не получит подтверждения, то она повторно пошлет свой пакет. Как уже говорилось, в случае атаки со стороны хакера каждое повторное отправление пакета образует в TCP-соединении шторм TCP ACK. Вследствие этого обе стороны теряют связь друг с другом — ведь никто из них не получает пакета с нужным номером последовательности. Если хакер пошлет пакет под­тверждения, то в соединении образуется только один шторм. Реально же хакер зачастую и сам теряет пакет с данными. По крайней мере, он должен послать подтверждение первого пакета. Другими словами, каждый пакет хакера порож­дает как минимум один шторм.
АТАКА     РАННЕЙ десинхронизации
В предыдущем разделе рассказывалось о нападении на поздней стадии TCP-со­единения (т. е. атаке, проводимой после того, как будет установлено соединение). Однако существуют атаки, которые уничтожают соединение уже на стадии его создания. Именно к такому типу атак относится атака ранней десинхрониэации. Уничтожение соединения проводится со стороны сервера. После того как со­единение разрушено, хакер создает новое соединение с другим номером после­довательности. Атака ранней десинхронизации работает следующим образом:
1. Хакер прослушивает проходящие по сети сообщения в поисках пакета под­тверждения синхронизированного соединения (SYN/ACK). Напомним (6), что этот пакет посылается сервером клиенту на второй стадии создания соединения. показан посланный сервером па­кет АСК.
Сервер посылает клиенту пакет АСК.
2. Если хакер обнаружит такой пакет, то он пошлет серверу пакет RST (запрос переустановки), а затем - SYN (синхронизированный ответ). У пакета будут те же параметры, что и у посланного сервером пакета SYN/ACK (в частности, эти пакеты будут указывать на один и тот же TCP-порт). Однако у пакета хакера будет другое число последовательности. Назовем этот пакет нулевым пакетом подтверждения нападающего (АТК_АСК_0). показано, как передаются по сети пакеты хакера.
хакер
Хакер посылает два пакета серверу.
3. Получив пакет RST, сервер закрывает первое соединение. Затем он полу­чает от хакера пакет SYN и повторно открывает новое соединение на том же порту. Однако у нового соединения будет новое значение последова­тельности (SVR_SEQ_0). Настоящему клиенту посылается пакет SYN/ACK.
4. Хакер перехватывает пакет SYN/ACK и посылает серверу свой собствен­ный пакет подтверждения (АСК). После этого сервер переключается в со­стояние ESTABLISHED синхронизированного соединения. показано, как хакер перехватывает пакет и устанавливает новое соединение.
сервер
Хакер перехватывает пакет и устанавливает синхронизированное соединение.
Получив от севера первый пакет SYN/ACK, клиент переключился в состояние ESTABLISHED. Успех атаки зависит от того, сумеет ли хакер подобрать пра­вильное значение CLT_TO_SVR_OFFSET. Если он допустит ошибку, то сервер не сможет принять ни пакет клиента, ни пакет хакера. Это может повлечь за собой непредвиденные ситуации, включая разрушение соединения.
АТАКА дЕсинхрошшщ: ПРИ помощи НУЛЕВЫХ ДАННЫХ
В предыдущем разделе уже рассказывалось о том, как хакер может перехватить TCP-соединение на первых стадиях его создания. Однако для десинхронизации TCP-соединения хакер может воспользоваться и атакой десинхронизации при по­мощи нулевых данных. Под термином нулевые данные подразумеваются данные, практически не влияющие на сторону сервера. Эти данные только изменяют значение подтверждения. Для проведения подобной атаки хакер посылает и кли­енту, и серверу огромное количество нулевых данных.
Нулевые данные невидимы для клиента и переводят обе стороны соединения в десинхронизированное состояние. Дело в том, что огромное количество нуле­вых данных мешает нормальной работе соединения.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика