Читаем Защита от хакеров корпоративных сетей полностью

Повторные передачи и дублирующие пакеты не являются чем-то необычным в обычных сетях, но в большинстве случаев содержимое пакетов должно быть одинаковым. Для рассмотренных примеров работы протоколов ARP и службы DNS вполне возможно написать программу, которая наблюдала бы за ответами, вычисляла бы кэш-величину пакета, а затем сохраняла бы эти данные в течение определенного периода времени. Поступление другого пакета с согласованными подходящим образом характеристиками, но с различными кэш-величинами свидетельствовало бы о возможных сетевых проблемах. (Следует очень внимательно отнестись к игнорированию частей пакета, которые нельзя на 100 % считать подозрительными до подсчета кэш-величины, как, например, время жизни пересылаемого пакета TTL). В основном это принцип систем обнаружения вторжения IDS со всеми их преимуществами и недостатками.

Перегрузка сети уведомлениями ACK (ACK Storms)

Ранее в этой главе был кратко рассмотрен пример перехвата Telnet-сессии. Цель перехвата заключалась в выполнении команды на сервере. Для этого примера автор сознательно выбрал короткую команду, в выводе результатов выполнения которой не было необходимости. На то были причины. Протокол TCP может идеально подойти для перехвата сессии. Если злоумышленник попытается контролировать оба конца соединения или удержать затянувшееся перехваченное соединение, то он может столкнуться с некоторыми трудностями. Давайте выясним, почему.

Напомним, что протокол TCP является надежным средством доставки сетевых пакетов данных. Так как TCP находится выше обслуживаемого протоколом IP ненадежного уровня, на котором пакеты иногда теряются, искажаются или принимаются вне очереди, то протокол TCP вынужден взять на себя ответственность за решение этих проблем. Существенным является то, что протокол TCP в случае необходимости решает подобные проблемы путем повторной передачи пакетов. Реализующее протокол TCP программное обеспечение сохраняет на каждом хосте копию всех ранее посланных данных до тех пор, пока не будет получено уведомление (ACK-пакет) об успешном приеме данных, генерируемое получателем пакетов на другом конце соединения. Данные удаляются только после подтверждения приема. Если в поддерживаемой программным обеспечением очереди на отправку данных имеются данные, на которые в течение определенного промежутка времени не получено уведомление об их приеме, то они посылаются повторно, предполагая, что ранее эти данные потерялись при передаче.

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

Хост, который только что получил пакет злоумышленника, собирается отметить пакет как полученный, подтвердить его посылкой уведомления (ACK-пакета) и в большинстве случаев сдвинуть пакет в потоке данных дальше. Когда хост получит второй пакет с теми же самыми последовательными номерами, он предположит, что получил дублирующий пакет. Дублирующие пакеты не редкость. Поэтому установленное на хостах программное обеспечение протокола TCP написано таким образом, чтобы игнорировать любые пакеты с данными, похожими на уже полученные. При этом оно не заботится о точном соответствии данных в полученных пакетах, как должно быть в случае с истинными дубликатами.

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

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже