Описанное здесь не является воплощением теоретических рассуждений в практику. Наоборот, происшедшие события стоили автору нескольких седых волос, а анализ ситуации привел к выводу о существовании одной достаточно эффективной атаки на отказ NetWare, кстати, осмелюсь предположить, не особенно сильно описанной. (Если это не так, приношу свои извинения.) Аналог данной атаки, правда приближённый, существует с TCP/IP.
Внешние признаки
В день Х юзеры пришли на работу и включили компьютеры. Примерно у двух десятков из них отказался загрузиться Windows9х. Подождав минут пять они стали нажимать кнопочки reset. После энных попыток загрузиться, юзеры, вздохнув с облегчением, повыключали свои аппараты и начали заниматься личными делами. Но один из них, чей компьютер находился рядом с моим, включив его с утра, куда-то ушёл. Комп "светил" черным экраном минут десять, потом вышел на запрос пароля NetWare. Придя на место, товарищ ввёл пароль, но не вошёл в сеть и, естественно, стал использовать комп в качестве простой пишущей машинки Правда и там у него всё шло через пень-колоду.
Первый день всё было тихо, однако в последующем атмосфера начала накаляться...
Начало анализа ситуации
Происходило в промежутках между ответами на постоянно поступавшие злобные телефонные звонки
Почти сразу стало понятно, что "залипуха" носит сетевой характер, т.к. выдернутый из сети комп загружался в момент. Также выяснилось, что страдальцами являются юзеры, использующие сервис именно одного конкретного, из многих Новелловских серверов. Облазил его, родимого снизу доверху - ну всё при нём, всё хорошо, режимы разные перепробовал, а коннект на него ну не идёт.
Завершение анализа ситуации (или зачем Админу, и не только , бывает полезен сниффер)
Юзера уже несколько дней ходят - "груши околачивают", а мне что - осталось только снести систему и ставить с нуля!? Не хочется, да и нет уверенности что поможет.
Всё! Решил. Лезу вглуПь. Фильтр в NetXray (сниффер такой:)) на клиентский комп настроил, "гляжу" через фильтр, как комп свой черный экран демонстрирует, потом, минут через 10, выходит на логин и не входит в сеть. Трассочку (обмен пакетами) собрал. Посмотрел на неё, ничего не понял, и собрал трассу с компа, который нормально заходит в сеть.
Что же я увидел при сравнении? Забегая вперёд - то, что мой родной сервачок абсолютно не причём, а присутствует в сети некий атакующий его объект. С этого момента описание пойдёт с использованием Новелловской конкретики.
Процесс входа в сеть NetWare при загрузке компьютера
Описанное здесь происходит ещё до выхода на запрос логина.
Вот нормальный вход компа в сеть. Проинициализировав сетевую карту, он прежде всего выдал два широковещательных SAP пакета, попросив откликнуться все ближайшие сервера. Видим, как SAP пакетами ему ответили с десяток Новелловских серверов. Каждый из них, в своем пакете сообщил своё имя и свой НОМЕР ВНУТРЕННЕЙ СЕТИ (заметим, он должен быть уникальным, на этом строится Новелловская маршрутизация). Дальше коннектящийся комп на основе этой информации и информации, хранящейся в самом компе, сообразил, к какому серверу он прежде всего пойдёт (т.е. по сути это preferred server, либо возможно сервер, где у нашего компа размещены некие сетевые ресурсы - см. примечание в конце статьи). Теперь для него встал вопрос выбора маршрута (сеть ведь может быть многосегментной). Он решает проблему так. Даёт широковещательный RIP запрос - хочу маршрут на сервер с номером сети N (конкретное число). Ну ему серверки RIP'ами отвечают - есть такой объект, только вот от меня до него 4 тика... (кто-то отвечает - 5 тиков, кто-то - 3 тика). В данном примере нужный ему сервер ответил - а у меня 2 тика (понятно, сам то я стою в том же сегменте, то есть до моей сетевой карты тик, и внутрь меня тик). То есть это я и есть Ну а дальше просто, маршрут до меня вообще тривиальный, устанавливай соединение через обмен NCP пакетами, затем проверим твой логин/пароль и всё ОК.....
А вот трасса с "несчастного" компа.
Залетает он в сеть, говорит - ближайшие, откликнитесь.
Новелловские серверы ему SAP'ами - вот мы. Комп даёт широковещательный RIP - мне бы маршрут до сервера с внутренней сетью N. Они ему RIP'ы типа: от меня до него 3 тика..., 5 тиков и.т.п. И наш серверок тоже отвечает - а у меня 2 тика! И вдруг...! Пакет RIP с некого объекта: а у меня тоже 2 тика, да и номер сетки моей - тоже N!
При анализе последовавшего за этим в голове возникает образ ослика (клиент NetWare), который стоит меж двух копен сена и издаёт лишь жалобное периодическое мычание (пакеты WDOG, WDOG, WDOG...). И заметьте, ни одного NCP для установления коннекции. В общем то его можно в чём то и понять, из двух одинаковых объектов надо однозначно выбрать один, а в Новелле его этому не учили
Через несколько минут опять - ближайшие, откликнитесь. Тот же ответ. И окончательно отчаявшись он начинает тыкаться через NCP во все подряд (кроме нужного) серверы. Типа - NCP, NCP... ну создай же service connection... На каждый сервер больше десятка NCP с солидными паузами. А время идёт...
Перебрав все соображает - баста, нет такого сервера И выходит на запрос логина уже со съехавшей крышей.
А теперь вопрос: кто был тот, кто послал битый RIP? Опущу детали дальнейшего вычисления типа объекта (он был сделан через анализ SAP пакетов) и вычисление конкретного компа через перехват его траффика. Короче, им оказался обычный НТ-ёвый сервер с поднятым IPX, админ которого (УУУХХХХ.......!!!) по чистой случайности присвоил его внутренней сети тот же номер N. Естественно, что НТ не откликался на новелловский SAP но откликался на RIP, сбивая маршрутизацию.
В заключение
Данная ситуация создала сбои в работе сети благодаря тому, что в средствах диагностики и на консолях ни одного из Новелловских серверов не было сообщений об ошибке. Эту ситуацию я потом моделировал в том числе и с самыми последними Новелловскими клиентами (путём подпихивания атакующего НТ - сервера) - она остаётся. Описанная ситуация возникла случайным образом, однако, кто поручится, что подобный сбой маршрутизации не использует кто-то в деструктивных целях.
На всякий случай имейте господа сниффер под рукой и выбирайте номер сетки поэкзотичнее
Примечание. Если компьютеру при загрузке не надо идти на атакуемый сервер, то он загрузится нормально, но при попытке логина на этот сервер, он туда не попадет.