Перехват сеанса TCP
Итак, что скрыто за внешним описанием только что рассмотренного примера перехвата сеанса Telnet? Давайте в общих чертах взглянем на то, каким образом происходит перехват TCP-соединения. Пробуя взломать TCP-соединение, хакер должен учесть все нюансы соединения по протоколу TCP. Прежде всего это порядковые номера, заголовки пакетов TCP и пакеты уведомления с установленным битом ACK.
Не будем приводить здесь полного обзора устройства и принципов работы протоколов TCP/IP, но давайте в качестве напоминания вкратце пройдемся по некоторым относящимся к теме моментам. Вспомним, что TCP-соединение начинается со стандартных трех фаз сеанса квитирования (three-way handshake): клиент посылает синхронизирующий пакет SYN, сервер посылает подтверждающий пакет SYN-ACK, и клиент отвечает уведомлением об успешном приеме данных (пакетом ACK), после чего начинает посылать данные или же ожидает их от сервера. Во время обмена информацией счетчики порядковых номеров (sequence counters) увеличиваются с обеих сторон и получение каждого пакета должно быть подтверждено с помощью посылки пакета с установленным битом ACK. Соединение может быть закрыто при помощи обмена завершающими пакетами (FIN-пакетами) подобно началу установки TCP-соединения. Аварийный разрыв соединения происходит при посылке одним участником соединения другому пакетов возврата в исходное состояние (RST-пакетов).
В какой момент обмена пакетами злоумышленник захочет вмешаться? Очевидно, он захочет сделать это до окончания соединения, или в противном случае ему будет нечего захватывать. Чаще всего злоумышленник перехватывает сессию где-нибудь посередине между ее началом и завершением после свершения определенного события. Под событием в данном случае понимается шаг процедуры аутентификации? Что произойдет, если злоумышленник перехватит соединение в начальный период установки соединения или до завершения аутентификации. Что тогда он сможет контролировать? Сервер не будет готов к приему команд до окончания аутентификации. Напав на соединение до завершения процедуры аутентификации, злоумышленник вдруг выяснит, что соединение ждет от него ввода какого-либо пароля. Другими словами, он окажется в точно такой же ситуации, как если бы он только что подсоединился как обычный клиент.
Как уже упоминалось, перехватывают сеанс для кражи важной информации при обмене данными в сети, которая до аутентификации по сети не пересылалась. Существует ряд сервисов, например упоминавшиеся ранее сервисы Berkley «r», которые могут быть сконфигурированы таким образом, чтобы они могли без посторонней помощи идентифицировать IP-адрес. Но в этом случае перехватывать сеанс нет необходимости. Нужные данные можно получить обманным путем, попытавшись подсоединиться с ложным IP-адресом. Если у злоумышленника есть возможность перехватить TCP-соединение, то он с легкостью сможет получить доступ к серверу обманным путем. Заметьте, что когда говорится: «У злоумышленника есть возможность сделать что-то», – то подразумевается полный контроль злоумышленника над машиной-жертвой, который позволяет выполнить на ней любые действия. Так же как и в случае со снифингом, злоумышленнику почти наверняка потребуется установить контроль над машиной, входящий в тот же сегмент сети, что клиент или сервер, на уровне канала передачи данных. (Layer 2 (data link layer) – уровень канала передачи данных в модели OSI. Уровень канала передачи данных отвечает за прием и передачу пакетов, сервис на уровне дэйтаграмм, локальную адресацию и контроль ошибок.) До тех пор, пока у злоумышленника не будет возможности существенно влиять на маршрутизатор, пакеты не «придут» к злоумышленнику – ему самому придется «идти» к ним.
Перехват TCP-сессий при помощи блокировки пакетов
Если злоумышленник в результате перехвата TCP-сессии способен полностью контролировать передачу пакетов между двумя машинами, то из этого он может извлечь для себя большую пользу. Этот сценарий – прямая противоположность сценарию предыдущего раздела, где злоумышленник как бы сидит на совместно используемом с одним из хостов канале передачи данных в сети и может только вставлять пакеты, но не удалять их. Несомненно, существует ряд аномалий в работе сети, которые при соответствующей настройке могут быть обнаружены либо хостом, либо системой обнаружения вторжений IDS. (Intrusion Detection System (IDS) – система обнаружения вторжений, которая просматривает сетевой трафик и отслеживает несанкционированные действия.)