Чтение онлайн

ЖАНРЫ

Защита от хакеров корпоративных сетей

авторов Коллектив

Шрифт:

Термин «перехват сеанса» (session hijacking) означает способность атакующего захватывать часть сеанса (часто – сетевой диалог) и вести себя как один из его участников. Перехват сеанса обычно является частью прослушивания сетевого трафика (снифинга), отличаясь от него тем, что снифинг осуществляется пассивно, а перехват сеанса требует активных действий.

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

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

Основные сведения о перехвате сеанса

Лучше

всего объяснить перехват сеанса на примере. Представьте, что злоумышленник случайно или в результате успешной для него атаки получил возможность наблюдать за трафиком между двумя машинами. Одна из машин – сервер, который он пытается взломать. Очевидно, что другая – клиент. В нашем примере злоумышленник перехватывает подключение суперпользователя (root user) к серверу через сервис Telnet и считывает из него пароль, но только для того, чтобы выяснить, является ли украденный им пароль одноразовым паролем s\key. Как можно понять из названия, одноразовые пароли используются один раз, поэтому если кто-нибудь, прослушивая сетевой трафик, завладеет им, то пароль не принесет ему никакой выгоды, поскольку он уже был использован.

Что предпринимает злоумышленник? Он делает очень простые вещи. Злоумышленник посылает пакет с подходящими данными в заголовке пакета, последовательными номерами и данными, выглядящими примерно так:

<cr> echo + + > /.rhosts <cr>

где <cr> – символ возврата каретки. Прежде чем стать полезной для злоумышленника, эта команда предполагает выполнение некоторых дополнительных условий. Но тем не менее она иллюстрирует суть дела. Если доступен какой-нибудь из сервисов Berkeley «r», то эта команда позволит любому передать команды серверу от лица какого-то пользователя (включая суперпользователя). Естественно, атакующий тут же воспользуется этой возможностью для передачи серверу командой rsh серии разрушительных команд, позволяющих полностью контролировать сервер до тех пор, пока его законный владелец не отформатирует диски и не перезагрузится. В настоящее время для осуществления описанной атаки следует преодолеть ряд сложностей, которые будут рассмотрены в этой главе. Достаточно сказать, что последствия описанной атаки станут очевидными для пользователя – законного клиента сервера: он либо получит сообщение о разрыве соединения, либо сможет наблюдать переданные злоумышленником команды серверу, которые в режиме эха будут отображены на его экране.

...

Инструментарий и ловушки

А может быть, Unix?

Не хочется начинать религиозную войну, но если читатель профессионал в области безопасности информационных технологий и до сих пор использовал только Windows, то однажды он обнаружит, что ему просто необходимо поработать с одной из UNIX-систем. Единственная причина этого решения, с которой никто не сможет поспорить, заключается в том, что некоторые инструментальные средства обеспечения безопасности предназначены для работы в Unix или ей подобной операционной системе. В рамках обсуждаемой проблемы будем называть системой UNIX любую из перечисленных операционных систем: Linux, любую из операционных систем семейства BSD или любую из коммерческих UNIX-систем. Официально UNIX является зарегистрированной торговой маркой и ее можно применить только к нескольким операционным системам, разработанным Santa Cruz Operation (SCO), и лицензиям, но при компиляции программ вопросы о торговых марках обычно малоинтересны.

Итак, какую же систему использовать? Разумно воспользоваться свободно распространяемой операционной системой для того, чтобы избежать лишних расходов. Скорее всего, исследователь захочет нечто, что запускается на одном из процессоров линейки Intel x86 так, чтобы можно было использовать старый Windows или же выбирать Windows как одну из систем, предлагаемых при загрузке. Linux, вероятно, является самой простой операционной системой с точки зрения экспериментирования с инструментальными средствами обеспечения безопасности. Из-за большого количества пользователей операционной системы Linux большинство подобных инструментальных средств снабжены инструкциями по использованию в Linux. Некоторые инструментальные средства, например как программа Hunt, работают только в Linux. Однако Linux – не самая защищенная UNIX-система, если это, конечно, представляет интерес. Если исследователь пользуется инструментальными средствами обеспечения безопасности, то собранная с их помощью информация о своей сети должна быть надежно защищена. Для специалистов в области компьютерной безопасности более всего подходит операционная система OpenBSD, поскольку она является одной из немногих операционных систем, при проектировании которой особое внимание уделялось обеспечению ее безопасности, и то, насколько это удалось, OpenBSD успешно демонстрирует. Другой чрезвычайно интересной UNIX-системой является Trinux. Фактически Trinux является специально распространяемой версией Linux. Она особенно полезна по двум причинам. Во-первых, она поставляется вместе с набором инструментальных средств обеспечения безопасности, которые уже скомпилированы, сконфигурированы и готовы к работе. Во-вторых, она спроектирована для загрузки с дискеты или CD-диска и считывает необходимое ей программное обеспечение с другого диска или жесткого диска с таблицей размещения файлов FAT, или даже FTP/HTTP-серверов. Это означает отсутствие сегментирования диска. Trinux можно найти по адресу: http://trinux.sourceforge.net.

Перехват сеанса 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) – система обнаружения вторжений, которая просматривает сетевой трафик и отслеживает несанкционированные действия.)

Тем не менее если злоумышленник может при желании уничтожать (блокировать) пакеты, то он может прекрасно справиться с эмуляцией другого конца канала связи для любого хоста. (Теоретически он может прекрасно эмулировать любую из двух сторон, участвующих в соединении. Это зависит от качества программного обеспечения эмуляции TCP-хоста, имеющего в распоряжении злоумышленника. Были проведены исследования в области пассивной идентификации операционной системы. Если эмуляция злоумышленником характерных для операционной системы признаков несовершенна, то при использовании хостом средств пассивного обнаружения операционной системы у него есть шансы выявить изменения в TCP-соединении и сообщить об аномалии.) Имея возможность удалять пакеты, можно устранить перегрузку сети пакетами уведомления об успешном приеме данных ACK (ACK storm), дублирование пакетов и т. д.

В действительности системы, способные осуществлять прием-передачу сетевых данных описанным способом, уже существуют. Их называют прозрачными брандмауэрами ((transparent firewalls). Брандмауэр – аппаратно-программные средства межсетевой защиты. В данном случае прозрачность означает, что клиент не нуждается в специализированных настройках.) Некоторые из подобных средств межсетевой защиты могут осуществлять кэширование файлов, перенаправление портов, дополнительные возможности аутентификации, а также ряд других уловок из арсенала злоумышленника.

Модификация таблиц маршрутизации

Обычно злоумышленник может создать такую ситуацию, в которой он сможет блокировать пакеты. Блокировать пакеты он может тремя способами. Во-первых, модифицируя таблицы маршрутизации таким образом, чтобы поток пакетов проходил через контролируемую им систему (перенаправление на сетевом уровне Layer 3). (Layer 3 – сетевой уровень (network layer) в модели OSI. Сетевой уровень отвечает за адресацию и маршрутизацию при межсетевом обмене.) Во-вторых, изменяя таблицы мостов путем работы с кадрами связующего дерева сети (перенаправление на уровне канала передачи данных Layer 2). И наконец, в-третьих – перекоммутируя физические кабели таким образом, чтобы кадры проходили через систему злоумышленника (перенаправление на физическом уровне Layer 1). (Layer 1 – первый (физический) уровень в модели OSI. Он определяет связь на уровне аппаратуры.) В последнем случае подразумевается физический доступ к системе кабелей жертвы. Возможно, что в этом случае придется столкнуться с гораздо более серьезными проблемами, нежели в случае с перехватом TCP-сеанса.

Поделиться с друзьями: