Главная
Архив новостей
Безопасность в Unix
Безопасность в Windows
Сборник FAQ'ов
Телефония, фрикинг
Кредитные карты
Криптография
Истории о хакерах
Программы, утилиты
_el@sp.sz.ru

RB2 Network

Novell 3.x


"Голландская атака"

Пpинцип oчeнь пpocтoй - дo нeкoтopoгo вpeмeни я xpaнил eгo в ceкpeтe,
нo вoт 13 ceнтябpя кaкaя-тo гpуппa из Гoллaндии пoчти дocлoвнo oпиcaлa
aлгopитм и пoтoму вoт вaм - пpoгpaммa.

Ocнoвнoй пpинцип oчeнь пpocтoй. Ocнoвaн oн нa тoм, чтo инфopмaция в Novell
NetWare пepeдaeтcя пocpeдcтвoм пpoтoкoлa IPX. Пpи этoм aдpeca oтпpaвитeлeй и
пoлучaтeлeй coдepжaтcя в зaгoлoвкe пaкeтa IPX. Koнкpeтнaя aппapaтуpa oбычнo
eщe caмa нaклeивaeт cвepxу нa пaкeт "кoнвepт" c aдpecoм
oтпpaвитeля/пoлучaтeля. Oднaкo этo никтo нe oтcлeживaeт. Taк чтo любoй
пoльзoвaтeль в ceти мoжeт пocлaть пaкeт кaк-бы oт имeни дpугoй paбoчeй
cтaнции, в тoм чиcлe и cтaнции cупepвизopa.

Ocнoвнaя пpoблeмa зaключaeтcя в тoм, чтo пaкeты oбмeнa workstation/server
нумepуютcя цифepкoй в диaпaзoнe oт 0 дo 255. Этo oбxoдитcя пocылкoй 256
пaкeтoв c пocлeдoвaтeльными нoмepaми. Хoть oдин, дa coвпaдeт :-)

Пpи этoм нapушaeтcя cвязь paбoчeй cтaнции, oт имeни кoтopoй вы
пocылaeтe пaкeт, c cepвepoм, тaк кaк пocлe пpиeмa вaшeгo "лeвoгo"
пaкeтa (кoтopый cepвep тeм нe мeнee вocпpинимaeт кaк нopмaльный)
пpoиcxoдит paccoглacoвaниe нoмepoв пaкeтoв в пpeдcтaвлeнии cepвepa
и в пpeдcтaвлeнии paбoчeй cтaнции. Этa пpoблeмa в пpинципe peшaeтcя
пocылкoй eщe 255*256 пaкeтoв, пpи этoм cчeтчик пpивoдитcя в пpиличнoe
cocтoяниe. Oднaкo этo дoлгo и чecтнo cкaзaть мнe этo былo лeнивo дeлaть.

Moдули, peклaмиpуeмыe в USENET (SECUREFIX.NLM и SHOWEVENT.NLM) oтcлeживaют
имeннo пocылку пaчки пaкeтoв c пocлeдoвaтeльными нoмepaми. B пpинципe
мoжнo cpaзу угaдaть нoмep пaкeтa cтaнции, oт имeни кoтopoй пocылaeтcя пaкeт,
нo кaк этo дeлaeтcя paccкaзывaть нe буду - a тo зaглушу вecь вaш
иccлeдoвaтeльcкий дуx :-)

[...]

      Это мы тут побаловались с сеткой ;) и паpню не влом было
собpанную инфу набить...

=== Cut ===
     Здесь не рассматриваются проблемы получения эквивалента
SUPERVISOR'а (есть и другие источники, и вообще - слишком
общие принципы). Здесь показана лишь основная идея (достато-
чно подробно для понимания ).  Я раскрываю данную технологию
лишь потому,что она для меня устарела - я перешел на NetWare
4.1 . Буду благодарен за любую информацию о последней.
____________________________________________________________
     Hемного теории.
____________________________________________________________
     Файл-сервер Novell NetWare 3.1x всю информацию о ресур-
сах сети хранит в базе данных ,называемой Bindery. Последняя
физически расположена в каталоге SYS:SYSTEM в файлах net$obj.
sys,net$prop.sys,net$val.sys. ормально,она недоступна-чтобы
получить доступ к этим файлам необходимо закрыть Bindery.Это
можно сделать вызовом функции CloseBindery: либо в C- исполь-
зуя NetWare C Interface ,либо в Assembler'e -используя следу-
ющий кусок:
     ;...
     RequestPacket dw 1
                   db 44h

     ReplayPacket  dw  0
     ;...
          mov ah,0E3h
          int21h
          cmp al,0
          jnz Error   ;not enough rights or somthing else...
     ;...

     Для того,чтобы открыть Bindery (поскольку при ее закры-
тии становяться недоступны некоторые функции сети-(ex. ,вход
в сеть) необходимо вызовать функцию OpenBindery в NetWare C
Interface,либо используя следующий кусок:
     ;...
     RequestPacket dw 1
                   db 45h

     ReplayPacket  dw  0
     ;...
          mov ah,0E3h
          int21h
          cmp al,0
          jnz Error   ;not enough rights or somthing else...
     ;...

     а файлах net$obj.sys,net$prop.sys,net$val.sys обычно
стоят атрибуты T,DI,RI- для модификации файлов надо их сбро-
сить, например так:
     flag net$*.sys n
    Рассмотрим теперь внутреннюю структуру Bindery.
Файл net$obj.sys содержит записи об объектах [64 bytes] в
формате:

      XX XX XX XX             Object Index(aka object ID)
      XX XX                   Object Type
      XX                      Length of Object Name
      XX ...XX [47 bytes]     Object Name
      XX                      Flag
      XX                      Security Access Level
      XX XX XX XX             1st Property Index
      XX XX XX XX

Файл net$prop.sys содержит записи о свойствах объектов
[34 bytes] в формате:

      XX XX XX XX             Property Index
      XX                      Length of Property Name
      XX ...XX [15 bytes]     Property Name
      XX                      Flag
      XX                      Security Access Level
      XX XX XX XX             Owner Object of Property
      XX XX XX XX             Next Property Index for Object
      XX XX XX XX             1st Value Index

Файл net$obj.sys содержит записи о значении свойств
[142 bytes] в формате:

      XX XX XX XX             Value Index
      XX XX XX XX             Owner Property of Value
      XX XX XX XX             Next Value Index for Property
      XX                      Number of segments
      XX ...XX[128 bytes]     Value

    Все значения- в формате low-high.

    Смещение в файле для записи с индексом index можно найти
как:      offset=(index & 0xFFFFFF)*size_of_record

    Значения Object Type могут быть следующими:

  WILD                        (-1)     Matches any type
  UNKNOWN                     0x0000   Unknown object type
  USER                        0x0001   The object is a "user"
  USER_GROUP                  0x0002   A group of users
  GROUP                       0x0002
  PRINT_QUEUE                 0x0003   Services print queues
  FILE_SERVER                 0x0004   The object serves files
  JOB_SERVER                  0x0005
  GATEWAY                     0x0006
  PRINT_SERVER                0x0007
  ARCHIVE_QUEUE               0x0008
  ARCHIVE_SERVER              0x0009   Services backup jobs
  JOB_QUEUE                   0x000A
  ADMINISTRATION              0x000B
  NAS_SNA_GATEWAY             0x0021
  REMOTE_BRIDGE_SERVER        0x0024
  TCPIP_GATEWAY               0x0027
  TIME_SYNCHRONIZATION_SERVER 0x002D
  ARCHIVE_SERVER_DYNAMIC_SAP  0x002E
  ADVERTISING_PRINT_SERVER    0x0047
  BTRIEVE_VAP                 0x004B
  NW$SQL_VAP                  0x004C
  PRINT_QUEUE_USER            0x0053

    Значения Flag означают следующее:
     bit 0=0 - STATIC  [object/property статические]
          =1 - DYNAMIC [object/property динамические,удаляются
                        при останове сервера]
     bit 1=0 - ITEM [property обычное]
          =1 - SET  [property - множество]

    Значения Security Access Level означают следующее:
     младшая тетрада[bits 3...0] -READ-  права на чтение
     старшая тетрада[bits 7...4] -WRITE- права на запись
    права могут быть следующие:

  Any          0x0000      by anyone
  Logged       0x0001      Must be logged in
  Object       0x0002      by same object or super
  Supervisor   0x0003      by supervisor only
  Bindery      0x0004      only by the bindery [NetWare]

  Приведем некоторые свойства:
    для Object = Server [00 04]
                       SAL   Flag
    OBJ_BACK_LINKS   Ё 44  Ё  02  Ё
    NET_ADDRESS      Ё 40  Ё  01  Ё
    OPERATORS        Ё 31  Ё  02  Ё
    BLOCKS_READ      Ё 31  Ё  00  Ё
    BLOCKS_WRITE     Ё 31  Ё  00  Ё
    CONNECT_TIME     Ё 31  Ё  00  Ё
    ACCOUNT_ADDRESS  Ё 31  Ё  02  Ё

    для Object = Group  [00 04]
                       SAL   Flag
    OBJ_BACK_LINKS   Ё 44  Ё  02  Ё
    GROUP_MEMBERS    Ё 31  Ё  02  Ё
    IDENTIFICATION   Ё 31  Ё  00  Ё
    OBJ_SUPERVISORS  Ё 32  Ё  02  Ё

    для Object = Server [00 04]
                       SAL   Flag
    OBJ_BACK_LINKS   Ё 44  Ё  02  Ё
    USER_DEFAULTS    Ё 31  Ё  00  Ё
    PASSWORD         Ё 44  Ё  00  Ё
    GROUPS_I'M_IN    Ё 31  Ё  02  Ё
    LOGIN_CONTROL    Ё 32  Ё  00  Ё
    ACCOUNT_BALANCE  Ё 32  Ё  00  Ё
    MISC_LOGIN_INFO  Ё 22  Ё  00  Ё
    HOMEDIRPATH      Ё 31  Ё  00  Ё
    SEQURITY_EQUALS  Ё 32  Ё  02  Ё
    OLD_PASSWORDS    Ё 33  Ё  00  Ё
    IDENTIFICATION   Ё 31  Ё  00  Ё
    OBJ_SUPERVISORS  Ё 32  Ё  02  Ё


_____________________________________________________________
    Теперь - к делу.
Как было указано выше,будем исходить из того что вы уже имеете
эквивалент SUPERVISOR'а.Однако этого мало.Вообще-то желательно
чтобы вас еще и не видели.
    Суть моего метода проста:надо всего лишь установить у ваше-
го обьекта Security Access Level=44 . Тогда вас будет видеть
лишь система(с доступом=4),но не user'ы (с доступом=2) и не
SUPERVISOR'ы (с доступом=3).
    Однако невидимость неполная.Вас можно увидеть из следующих
стандартных утилит: userlist.exe, fconsole.exe, monitor.nlm.
    Что касается первой ,ее можно попросту переписать.Особенно
неприятен monitor.nlm:он не только видит ваш адрес(как,впрочем,
и все эти 3 утилиты,что легко обойти (подумайте-как?)),но и ва-
ши открытые файлы- так что работайте аккуратно!
    о есть очень простой (как все гениальное ;) способ замас-
кироваться-надо всего лишь назвать свой объект NOT-LOGGED-IN !
Тогда вы будете каэаться неподключенными.
    Увы,есть еще одна утилита,могущая доставить вам неприятно-
сти - BINDFIX  :{  Она призвана исправлять ошибки в Bindery - и
вы ,конечно же, будете этой ошибкой.Она исправит и Security Ac-
cess Level свойства PASSWORD (скажем ,объекта SUPERVISOR) ,если
вы захотите установить его =00 -просто так! почитать/поисправ-
лять на досуге... :->
   Что делать? Удалите ее или исправьте(что круче но напряжнее).
   евидимость имеет и плохие стороны:
   1) нельзя юзать MAP.EXE ,роме как в Login Script'е.
   2) в SYSCON.EXE при входе вас грязно обругают (что терпимо) и
      не дадут редактировать группы, хотя разрешат делать _ЭТО_
      с объектами-пользователямм _О_ не с вами (вы-то и себя не
      видите!)
    Чем бы еще поделиться?
   1) большие невидимые люди не имет свого каталога в MAIL для
      Login Script'а - напишите файлик типа:
               ;myscript
               map z:=vol:
               map f:=sys:
               drive z:
      и входите так:
        login.exe not-logged-in /s myscript
  2) все ваши действия,которые системе кажутся опасными(надеюсь,
     они у вас все опасны) (ex. Open/Close Bindery) она выводит
     на System Console и в файл SYS:\SYSTEM\sys$log.err - очищай-
     те первую( комманды CLS и OFF) и редактируйте второй.
  3) если на сервере включен Accounting server то вход/выход в/из
     сеть/сети регистрируется в SYS:\SYSTEM\net$acct.dat (по умол-
     чанию есть флаг T).Исправляйте!
  4) самое интересное - property PASSWORD.Его формат:
     XX ... XX [16 bytes- hashing password] LL ,
     где LL - длина пароля( _почти_(!!!) всегда).
     Еще более интересное - после анализа алгоритма шифрования па-
     роля я пришел к выводу (все выкладки проверены) что его можно
     расшифровать за _ПОЛИHОМИАЛЬHОЕ_ время !
     "Представляет интерес вот ишо такой разрез"- кто-нибудь думал
     о разных паролях с одинаковым результатом шифрования?

          
<== Back to main page