The Official
                           RU.NETHACK  F.A.Q.
                    Revision 0.291 (Russian Edition)

                            by DZh and other











                           Список разделов
                           ~~~~~~~~~~~~~~~

    1     Сети ЭВМ.
    1.1   Internet (TCP/IP сети).
    1.1.1 Общие принципы построения, адресация.
    1.1.2 Доменная система имен (DNS).
    1.1.3 Какие программы нужны для работы в интернет?
    1.1.4 Как получить доступ в Internet?
    1.1.5 Вирус Морриса, классический пример сетевого вируса.
    1.1.6 Сканирование портов.
    1.1.7 Что такое Firewall?
    1.1.8 Что такое Denial of Service?
  * 1.1.9 Общие аспекты Sniff'инга.
    1.1.10 Троянские кони и логические бомбы.
  * 1.1.11 Можно ли зная E-Mail человека, узнать его IP-адрес?
    1.2   X.25 (Сети пакетной коммутации).
    1.2.1 Общие принципы построения.
  * 1.2.2 Терминология.
    1.2.3 Работа с X.25.
    1.2.4 Работа с ПАД.
    1.2.5 Формат адреса при межсетевом соединении.
    1.2.6 Обзор сети SprintNet.
    1.2.7 Обзор сети ROSNET.
    1.2.8 Что такое сканирование X.25?
    1.3   On-Line Services
    1.3.1 Общие принципы работы On-Line услуг.
    1.3.2 Альтернативные методы оплаты за On-Line услуги.

    2     Операционные системы и компьютеры.
    2.1   Классификация методов взлома компьютеров.
    2.1.1 Как определить операционную систему?
    2.1.2 Стандартные пароли в операционных системах.
    2.2   UNIX, основная операционная система в Internet.
    2.2.1 Пароли в UNIX.
    2.2.2 Как узнать пароль в UNIX?
    2.2.3 Некоторые методы взлома UNIX.
    2.2.4 Как научится не оставлять за собой следов в UNIX?
    2.3   Windows NT и Windows 95.
    2.3.1 Как через Internet подключиться к другой win'95 машине?
    2.3.2 Как узнавать различные пароли в Win'95?
  ? 2.4   Novell

    3     Разное
    3.1   Условия распространения.
    3.2   Где найти свежую версию FAQ?
    3.3   Как связаться с авторами?
    3.4   Библиография.
---



                            Предисловие.


                             Warning: Use of this material may shorten
                             your life in the free world !
                                        The Official Phreaker's Manual

                             Если вас поймают, сошлитесь на незнание.
                                    UNIX System Administrator Handbook

    Назначение этого  документа  -  ознакомить  читателей  конференции
RU.NETHACK с обсуждаемыми в ней темами и ответить на основные вопросы,
касающиеся сетевого хака.  Этот  документ  не сделает вас хакерами, но
может быть поможет выбрать направление ...

    Прежде всего хочу избавить вас от  распространенного заблуждения -
сеть,  как таковую, невозможно сломать, ломать там нечего, так как под
понятием 'сеть' подразумевается физическая связь  между  компьютерами,
осуществляющими пересылку пакетов, с единой системой адресации. Ломать
сеть  можно  кусачками  -  например  откусить сетевой кабель :-).  Под
'взломом'  компьютеров  будем понимать получение  несанкционированного
доступа данным и/или машинному времени компьютера  работающего в сети.
Для  удобства  употребляют  выражение  'ломать сеть' когда речь идет о
'взломе' компьютеров в сети.

    Компьютерные сети можно _условно_ разделить  на два вида - On-Line
(время  доставки  пакета  маленькое  -  несколько  секунд)  и Off-Line
(задержки  при  доставке  пакетов могут достигать нескольких часов или
суток).   Примером On-Line сети является Internet; примером Off-Line -
FidoNet.

    F.A.Q.  разделЈн  на  несколько  логических  частей. В  первой  вы
познакомитесь  с  принципами  построения  и  работы двух видов On-Line
сетей,  построенных  по  технологиям TCP/IP и X.25,  а также с On-Line
сервисами.  Вторая часть посвящена операционным системам, используемым
на компьютерах подключенных к сетям.
---

                   Предисловие к второму изданию.

    Прошло четыре месяца  со дня  выпуска  первого варианта RU.NETHACK
Frequently  Asked  Questions.  Первая  версия  выпускалась в некоторой
спешке  посему  был  допущен ряд досадных ошибок, которые, впрочем, не
были  замечены  большинством  читателей  конференции :-)  В  настоящем
издании я постарался их исправить, и надеюсь не внес новых...
    В структуру FAQ внесены некоторые изменения: разделы относящиеся к
сетевым технологиям теперь собраны в первую часть, разделы посвященные
различным  операционным  системам во вторую. Естественно, добавились и
новые  материалы (они  отмечены  в  оглавлении  символом 'Э')  - объЈм 
увеличился почти в два раза.
    Работа продолжается...  Если  вы хотите дополнить FAQ или что-либо
предложить - смотрите пункт 3.3 (Как связаться с авторами).
---

                   Несколько слов к Revision 0.28.

                                 Уж утро близится, а F.A.Q. все нет...

    Коротко:  Добавлены  несколько  новых  "ответов  на предполагаемые
вопросы". Исправлены некоторые неточности. Иногда в тексте упоминается
раздел "Ресурсы", которого пока нет. Надеюсь, что появится в ближайшем
будущем. Как обычно и безрезультатно жду предложений и дополнений...

    Исправленные, дополненные, новые пункты отмечены '*' в оглавлении.
---

                           Благодарности.

    Я  благодарю  всех,  кто  мне  помогал  и помогает составлять этот
документ. Это:
        Anatoly Skoblov, Destructor, Uriah Ben-Iohanan, Andy Mc'Horin,
Werewolf, и другие.

                                              [Editor, Denis Zhitenev]
---


                          Часть 1. Сети ЭВМ.

                      1.1 Internet (TCP/IP сети).

1.1.1 Общие принципы построения, адресация.

    Internet - крупнейшая   компьютерная   сеть  в  мире, объединяющая
множество компьютеров, соединенных самыми разнообразными способами  от
телефонных линий до систем спутниковой  связи. В Internet используется
стек протоколов TCP/IP, который включает в себя:
    IP(Internet Protocol) - межсетевой  протокол, который обеспечивает
транспортировку без дополнительной  обработки данных с одной машины на
другую;
    UDP(User Datagram Protocol) - протокол пользовательских датаграмм,
обеспечивающий транспортировку  отдельных  сообщений  с помощью IP без
проверки ошибок;
    TCP(Transmissin Control Protocol) - протокол управления передачей,
обеспечивающий транспортировку с помощью IP  с проверкой  установления
соединения;

    Каждый компьютер подключаемый к Internet получает  свой уникальный
IP-адрес.

    Internet-адрес  имеет  в длину  четыре  байта  и  состоит  из двух
частей:  сетевой  и машинной. Первая часть означает логическую сеть, к
которой  относится  адрес;  на  основании  этой информации принимаются
решения  о  маршрутизации  ( routing ).  Вторая  часть  идентифицирует
конкретную машину в сети.
По соглашению,  IP-адреса записываются как десятичные числа (по одному
на каждый байт), разделенные точками, например 194.85.31.20

    Каждый IP-адрес принадлежит сети определенного  класса. Класс сети
определяется значением байта адреса:

              0              8          16         24          31
              ц______________е__________а__________а____________ґ
     Класс A  і0| номер сети і            номер узла            і
              ц______________а__________б_______________________ґ
     Класс B  і10|      номер сети      і       номер узла      і
              ц_________________________а__________б____________ґ
     Класс C  і110|          номер сети            і номер узла і
              ц____________________________________а____________ґ
     Класс D  і1110|            групповой адрес                 і
              ц_________________________________________________ґ
     Класс E  і11110|           зарезервировано                 і
              ю_________________________________________________ы

        з_______б___________________б______________б______________ї
        і Класс і Диапазон значений і Возможное    і Возможное    і
        і сети  і  первого байта    і кол-во сетей і кол-во узлов і
        ц_______е___________________е______________е______________ґ
        і   A   і      1 - 126      і     126      і   16777214   і
        і   B   і      128-191      і    16382     і     65534    і
        і   C   і      192-223      і   2097150    і      254     і
        і   D   і      224-239      і      -       і     2**28    і
        і   E   і      240-247      і      -       і     2**27    і
        ю_______а___________________а______________а______________ы

    Каждый пакет, проходящий по сети содержит адрес получателя, и идет
согласно  определенным  правилам  маршрутизации.  Маршрутизация  - это
процесс  направления  пакета  по  лабиринту  сетей,  находящихся между
источником и адресатом.

1.1.2 Доменная система имен (DNS).

    DNS(Domain Name System) - это распределенная база данных,  которая
содержит информацию о компьютерах, включенных в сеть Internet.
Характер данных зависит от конкретной машины, но чаще всего информация
включает имя машины, IP-адрес и данные для маршрутизации почты.
    Для удобства,большинство компьютеров имеют имена. Доменная система
имен выполняет несколько задач, но основная ее работа - преобразование
имЈн компьютеров а IP-адреса и наоборот.
    Пространство имен DNS имеет вид дерева доменов, с полномочиями,
возрастающими по мере приближения к корню дерева. Корень дерева имеет
имя "."; под ним находятся домены верхнего уровня (корневые домены).
    По историческим причинам существует два вида доменов верхнего
уровня. В США домены верхнего уровня отражают организационную
структуру, и как правило имеют трехбуквенные имена:
 .gov - государственные учреждения,
 .mil - военные учреждения,
 .com - коммерческие организации,
 .net - поставщики сетевых услуг,
 .org - бесприбыльные организации,
 .edu - учебные заведения;
   Для доменов вне США, в соответствии с территориальным расположением
используются двухбуквенные коды стран утвержденные ISO. Например:
  www.spm.ru    - в России
  www.berlin.de - а Германии
  www.hotex.nl  - в Нидерландах
и т.д.
---

1.1.3 Какие программы нужны для работы в интернет?

    Обычно программы для работы с Internet входят в состав большинства
современных операционных систем. Вот некоторые из них:

  ping       - позволяет определить время прохождения пакета до хоста.
  traceroute - показывает путь прохождения пакетов по сети. (в Win95 и
               NT - tracert.exe)
  nslookup   - позволяет просматривать содержимое DNS-серверов.
  telnet     - устанавливает соединение с удаленной  машиной (23 порт)
               и позволяет вам работать в режиме удаленного терминала.
  ftp        - позволяет  передавать файлы между машинами по протоколу
               FTP (File Transfer Protocol) (21 порт).
  finger     - показывает  информацию  о  пользователях  находящихся в
               данный момент на какой-либо машине.
  netstat    - позволяет  получить  статистическую информацию о работе
               сети на локальной машине(открытые соединения и т.д.).

    Для работы с WWW (World Wide Web)  используются программы Netscape
Navigator,  Internet  Explorer,  и  некоторые  другие.  Эти  программы
устанавливают  соединение с сервером (80 порт) и работают по протоколу
HTTP.

    Замечание:  для  работы  с ftp,  telnet,  finger и  www необходимо
чтобы на машине, с которой вы устанавливаете  соединение были запущены
соответствующие программы-сервера.
---

1.1.4 Как получить доступ в Internet?

    Это  вероятно  один из самых насущных вопросов для любого читателя
конференции RU.NETHACK.
    Как показывает практика, для того, чтобы начать ломать  компьютеры
в Internet  необходимо уже иметь туда выход, пусть даже временный  или
минимальный.  Не  всЈ так сложно как вы думаете. В наше время получить
доступ в Internet не составляет никаких проблем. Вот некоторые из них:

  - Самый легкий  - если  ваш институт ( если вы работаете на кафедре,
    то  всЈ многократно упрощается ) уже подключен  к Internet, то 
    попытайтесь  договориться о предоставлении вам (или вашей кафедре)
    выхода туда.
  - Если  в  вашем  институте  нет  Internet, то  это  даже лучше - вы
    можете  стать  основателем,  остается только пойти к руководству и
    убедить их  в необходимости подключения [КАК !?! У нашего любимого
    института нет выхода в I-Net ?!?  Нет собственного WWW-сервера ?!?
    Нет даже электронной почты ?!? Да  нас не будут уважать !!! Каждый
    уважающий себя  ВУЗ  ДОЛЖЕН иметь выход в Internet !!! ]. Если Вам
    удалось  убедить  начальство  -  Вы  выиграли  и у вас будет свой,
    _бесплатный_ Internet.
           -----------------------------------------------------------
           - Маленькое отступление.
           -   Прочитав этот абзац, один мой знакомый долго смеялся...
           - однако,  я  оставляю  его  без изменений, если вы всерьЈз 
           - хотите  всем  этим  заниматься, это один из самых простых
           - путей начать. Через некоторое время желание что-то ломать
           - пропадЈт. (;
           -----------------------------------------------------------

  - Если  Вы работаете  в солидной фирме, не имеющей выход в Internet,
    то вышеприведенные рекомендации применимы и в этом случае.

  На этом стоит временно прервать перечисление и заметить:  ЕСЛИ У ВАС
ЕСТЬ  ВОЗМОЖНОСТЬ  ВОСПОЛЬЗОВАТЬСЯ  ВЫШЕПЕРЕЧИСЛЕННЫМИ  СПОСОБАМИ,  НЕ
ЧИТАЙТЕ ДАЛЬШЕ,  а  попытайтесь  воплотить  их  в  жизнь,  и  у Вас не
возникнет  множества  проблем связанных с темой данной конференции.

Для всех остальных - продолжу:
  - Платный доступ к Internet предоставляют находящиеся в вашем городе
    фирмы ( т.н. провайдеры ).  Можно заметить,  что большинству людей
    оплата их услуг пока не по карману, особенно если доступ нужен без
    определенной  цели,  т.е.  вы  не  зарабатываете  денег  используя
    Internet.
  - Кроме  того, услугами  по  предоставлению доступа в Internet могут
    заниматься  фирмы  находящиеся  за  пределами  вашего  города  или
    страны,  используя  в  качестве  транспорта  X.25  сети ( например
    SPRINT ).
---

1.1.5 Вирус Морриса, классический пример сетевого вируса.

    2 ноября 1988  года  Роберт  Моррис  младший,  аспирант факультета
информатики Корнельского Университета с помощью написанного им  вируса
инфицировал   большое  количество  компьютеров,  подключенных  к  сети
Internet.
    Вирус Морриса поражал только компьютеры типа SUN 3 и  VAX, которые
использовали варианты ОС UNIX версии 4 BSD.
    Для своего  распространения  вирус  использовал  некоторые дефекты
стандартной   операционной   системы  UNIX,  установленной  на  многих
системах. Он также использовал механизм,  предназначенный  для доступа
к удаленным компьютерам в локальных сетях.
    Вирус  состоял  из  двух  частей:  главной  программы и программы,
обеспечивающей его распространение. Главная программа после запуска на
очередной машине собирала информацию относительно других машин в сети,
с которыми она имеет связь. Она выполняла эту работу с помощью анализа
конфигурационных  файлов и  путем  запуска  системной утилиты, которая
дает   информацию  о  текущем  состоянии  соединений  в  сети.   Затем
производилась пересылка программы распространения на найденные машины,
затем она запускалась и обеспечивала пересылку и компиляцию  остальной
части вируса. Затем весь процесс повторялся.
    Наиболее заметным эффектом  при  распространении  вируса, была все
же  непрерывно  возраставшая  загрузка  пораженных  вирусом  машин. По
истечении  некоторого  времени  некоторые  машины  оказались настолько
загруженными  распространением  копий  вируса,  что  не  были способны
выполнять никакой полезной работы; некоторые машины исчерпывали память
для   свопинга   или   таблицу  текущих  процессов  и  их  приходилось
перегружать.
---

1.1.6 Сканирование портов. 

           -----------------------------------------------------------
           - Маленькое отступление.
           -    Читателям, не знакомым с принципами работы TCP/IP я
           - рекомендую пропустить эту главу, или ознакомиться с ней
           - прочитав TCP/IP Programming Guide, или что-то подобное.
           -----------------------------------------------------------

    Иногда  у вас может  возникнуть  потребность  узнать какие сервисы
предоставляет  определенный  хост.  Для этого существует ряд различных
программ сканирования портов.

    Простейший  вариант - это программы  типа SATAN (Security Analysis
Tool for Auditing Networks), которые устанавливают соединение с каждым
TCP-портом, открывая полное TCP-соединение. Преимущества  этого метода
заключаются в том,  что пользователю,  занимающемуся сканированием, не
нужно  самому  составлять  ip-пакет,  который  будет  использован  для
сканирования, потому что он использует стандартные системные вызовы, и
ему не нужен доступ администратора ( обычно нужен, чтобы  использовать
SOCK_RAW  или  открывать /dev/bpf, /dev/nit и т.д.). Недостатком этого
метода заключается в том, что его легче обнаружить, причем несколькими
способами,в частности TCP Wrapper'ами by Wietse Venema. Для устранения
этого недостатка были придуманы методы сканирования  без  установления
полного TCP-соединения, т.н. 'полуоткрытое сканирование'.

    Процесс  установки  TCP-соединения  состоит  из трех фаз: сторона,
устанавливающая соединение, сначала посылает TCP-пакет с установленным
флагом  SYN,  после  чего  принимающая  сторона  посылает TCP-пакет  с
установленными  флагами  SYN  и  ACK  в  случае, если порт открыт, или
сбрасывает  соединение с флагом  RST если порт не активен. Третья фаза
происходит когда сторона,устанавливающая соединение,посылает финальный
TCP-пакет с установленным флагом ACK ( само собой все эти пакеты имеют
соответствующие  sequence-  и  ack-номера, и т.д. ). Теперь соединение
установлено.

Сканирования с SYN-флагом.
~~~~~~~~~~~~~~~~~~~~~~~~~~
    SYN-сканер посылает только первый пакет из трех и ждет SYN|ACK или
RST.  Когда  он  получит либо то, либо другое, он будет знать, активен
этот  порт  или  нет. Основное преимущество этого метода заключается в
том,что он не обнаруживается программами типа "SATAN" или TCP Wrappers
by Wietse Venema.  Основные недостатки этого метода:

    Этот метод обнаруживается некоторыми программами,которые проверяют
попытки  коннекта  с  SYN-флагом  ( например  tcplog ),  а  также   он
обнаруживается netstat(1)'ом.

    Сторона,устанавливающая соединение, обычно должна  составлять весь
IP-пакет. Для этого необходимо иметь доступ к SOCK_RAW ( в большинстве
операционных систем: getprotbyname('raw') )  или  /dev/bpf   (Berkeley
Packet Filter),  /dev/nit  (Sun 'Network  Interface  Tap') и т.д.  Для
этого необходимо, как правило, иметь уровень администратора.

Stealth-сканирование.
~~~~~~~~~~~~~~~~~~~~~
    Этот  метод  основан  на некорректном сетевом коде в BSD. Учитывая
то,что в большинстве операционных систем используется BSD'шный сетевой
код или производный от него,этот способ работает на большинстве систем
( наиболее очевидное исключение - маршрутиризаторы Cisco ). Этот метод
трудно  обнаружить.  Даже  зная  сам метод, разработка обнаруживающего
алгоритма весьма проблематична без устранения самой ошибки. Недостатки
этого способа:
    Этот  метод  основан  на ошибках  в сетевом  коде. Это значит, что
возможно, а точнее скорее всего, эти ошибки будут исправлены. Например
в OpenBSD это уже исправлено.
    Нельзя  поручиться,  что  этот  способ  будет  нормально  работать
в конкретной  обстановке.  Результаты могут быть разными в зависимости
от  платформы  и операционной  системы,  т.е.  этот  способ  не вполне
надежен.

    Используются TCP пакеты с установленными ACK и FIN флагами.Их надо
использовать,потому что,если такой пакет послать в порт при неоткрытом
соединении,всегда возвратится пакет с флагом RST. Существуют несколько
методов, использующих этот принцип:

метод #1:

    Послать  FIN-пакет. Если  принимающий  хост возвращает RST, значит
порт неактивен,если RST не возвращается, значит порт активен. Учитывая
тот  факт,  что  этот  метод  работает  на  таком  количестве  хостов,
это - грустное  свидетельство  тому,  какой некорректный сетевой код в
большинстве операционных систем.

метод #2

    Послать  ACK-пакет.  Если TTL  возвращаемых  пакетов меньше, чем в
остальных  полученных  RST-пакетах, или если размер окна больше  нуля,
то скорее всего порт активен.

    Пример  программы  для  разных  видов  сканирования  TCP портов вы
можете найти в приложении 4.
---

1.1.7 Что такое Firewall?

    Firewall  -  один  из эффективных методов защиты внутренних сетей.
Физическая  реализация  этого  сервиса может быть различной, но обычно
это программный  или  программно-аппаратный  комплекс,  обеспечивающий
анализ и обработку проходящего сквозь него сетевого трафика.
    Обработка  может  вестись  в  широких  пределах - от разграничения
доступа  к  различным  адресным  пространствам  сети,   до  прозрачной
шифрации  трафика   с  целью  организации  виртуальных частных сетей в
Internet.
    Наиболее  распространенное  применение  -  организация  доступа  в
Internet  из  закрытых  корпоративных сетей.  В этом случае внутренние
пользователи  получают  полный  или  ограниченный доступ в Internet, а
доступ снаружи во внутреннюю сеть не допускается.
---

1.1.8 Что такое Denial of Service(DoS)?

    Denial of Service  - разновидность атак, приводящая к некорректной
работе  или  выходу из строя установленного на компьютеры программного
обеспечения.  Атаки  подобного  типа  относятся  скорее к электронному
вандализму,  чем  к  реальному  взлому  систем, поэтому подробнее этот
вопрос не будет рассматриваться. Ключевые  слова для поиска информации
в Internet: [win]Nuke, land-attack, syn-flood, teardrop.
---

1.1.9 Общие аспекты Sniff'инга.

Что же такое Sniff'инг, и как это работает.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    В отличие от телефонной  сети,  компьютерные сети используют общие
коммуникационные каналы т.к. достаточно дорого тянуть петлю до каждого
узла.  Совместное использование каналов подразумевает,  что узел может
получать  информацию,  которая  предназначается  не  ему. 'Отлов' этой
информации в сети и называется sniff'ингом.
    Наиболее  простой  способ соединения компьютеров - ethernet. Обмен
данными  по протоколу  Ethernet  подразумевает  посылку  пакетов  всем
абонентам  сети.   Заголовок  пакета  содержит  адрес  узла-приемника.
Предполагается,  что  только  узел  с  соответствующим  адресом  может
принять пакет.  Однако, через каждый узел проходят все пакеты, а затем
сетевой адаптер выбирает из них предназначенные для конкретного узла.
    Так как в обычной сети информация о паролях передается по ethernet
в  виде  текста - нет  ничего  сложного, собирая и анализируя  пакеты,
проходящие по сети, получить информацию о всех компьютерах сети.

Область применения sniff'инга.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Sniff'инг - один  из наиболее популярных видов атаки, используемых
хакерами.  Первый  программный  Sniff'ер  называемый Esniff.c  - очень
маленький,  разработанный  для  работы  на  SunOS,  занимался тем, что
вылавливал  первые  300  байт  telnet,  ftp  и  rlogin  сессий. Он был
опубликован  в  Phrack - одном из наиболее широко известном подпольном
хакерском журнале.

Существует множество ethernet sniffer'ов, здесь лишь некоторые из них:

OS              Sniffer                      Где взять
~~              ~~~~~~~                      ~~~~~~~~~
4.3/4.4 BSD     tcpdump            /* Available via anonymous ftp   */
FreeBSD         tcpdump            /* Available via anonymous ftp
                                      at gatekeeper.dec.com         */
            /* /.0/BSD/FreeBSD/FreeBSD-current/src/contrib/tcpdump/ */
NetBSD          tcpdump            /* Available via anonymous ftp
                                      at gatekeeper.dec.com         */
                     /* /.0/BSD/NetBSD/NetBSD-current/src/usr.sbin/ */
DEC Unix        tcpdump            /* Available via anonymous ftp   */
DEC Ultrix      tcpdump            /* Available via anonymous ftp   */
HP/UX           nettl  (monitor) & netfmt (display)
                nfswatch           /* Available via anonymous ftp   */
Linux           tcpdump            /* at sunsite.unc.edu            */
                           /* /pub/Linux/system/Network/management/ */
SGI Irix        nfswatch           /* Available via anonymous ftp   */
                Etherman
                tcpdump            /* Available via anonymous ftp   */
Solaris         snoop
                tcpdump
SunOS           etherfind
                nfswatch           /* Available via anonymous ftp   */
                tcpdump            /* Available via anonymous ftp   */
DOS             ETHLOAD            /* Available via anonymous ftp   */
                                   /* as ethld104.zip               */
                The Gobbler        /* Available via anonymous ftp   */
                LanPatrol
                LanWatch
                Netmon
                Netwatch
                Netzhack           /* Available via anonymous ftp   */
                        /* at mistress.informatik.unibw-muenchen.de */
                                   /* /pub/netzhack.mac             */
Macintosh       Etherpeek
Win'9X,Win NT   Network Monitor    /* в составе Microsoft SMS       */
                Session Wall       /* www.abirnet.com               */
                LANAlyzer
---

1.1.10 Троянские кони и логические бомбы.

    Вы помните историю про Троянского Коня?  Троянские  программы  это
нечто   похожее.   Это код,   выполняющий   нелегальные  действия  при
определенных условиях,  программы эмулирующие работу других программ с
различными целями. Особенно опасен троянский код,  помещенный в важные
системные программы, например в программы проверки паролей...
    Программы,  эмулирующие  работу  других  программ,  особенно  тех,
которые  взаимодействуют   с  пользователем,  могут  создать  реальную
возможность  для взлома системы. Например программа, которая эмулирует
процедуру  регистрации  пользователя  в  системе  и  после  введенного
пароля говорит что-то вроде Login incorrect, затем инициирует реальную
процедуру регистрации.
    Примером троянца для Win'9x является недавно нашумевшая  программа
"Back Orifice"  инсталлирующаяся  как сервис  и  позволяющая  удаленно
получить доступ к различным ресурсам компьютера.
---

1.1.11 Можно ли зная E-Mail человека, узнать его IP-адрес?

    E-mail  и  IP-адрес  в большинстве случаев не связаны между собой.
Можно  однозначно  узнать адрес сервера отвечающего за доставку E-mail
посмотрев  с  помощью  программы nslookup(dig) на записи типа MX в DNS
для  домена указанного в адресе(см 1.1.2). Если запись MX отсутствует,
то сервером является машина идентифицируемая доменом в E-mail.
---

1.1.12 
Известен логин и пароль по UUPC. Можно ли получить с помощью него



                  1.2  X.25 (Сети пакетной коммутации)

1.2.1  Общие принципы построения.

    Основу  X.25  сетей  составляют  Центры  Коммутации Пакетов (ЦКП),
расположенные во многих городах и обеспечивающие доступ к сети. Обычно
абонент получает доступ к сети, соединяясь с ближайшим ЦКП, т.е. можно
получить доступ к сети из любого места, где есть телефонная связь, без
привязки к конкретному ЦКП.
    Абоненты  сети  подключаются  к  ней  для  того,  чтобы передавать
информацию  или  принимать  ее от других абонентов или хост-машин. Для
этого в  сети  устанавливается  временная логическая связь между этими
абонентами,  называемая  виртуальным  соединением.  После установления
виртуального  соединения  между  абонентами  может  происходить  обмен
данными  одновременно  в двух направлениях (дуплекс),  причем задержка
передачи  пакетов  данных  не  превышает долей или нескольких секунд в
зависимости от загруженности сети.
---

1.2.2 Терминология.

NUA (Network  Users  Address /Сетевой  Адрес  Пользователя/ ) - число,
или мнемоническое имя задающее сетевой адрес пользователя. Подробнее о
формате см. п. 2.1.3.

NUI (Network User Identificator /Идентификатор Сетевого Пользователя/)
- код  доступа и пароль.  Обычно  предоставляется  поставщиком сетевых
ресурсов и используется для определения оплаты за услуги.

DNIC (Data  Network  Identification  Code /Код  идентификации сети/) -
представляет из себя 4 цифры, которые в полном  сетевом  адресе задают
код сети данных. Подробнее в п. 2.1.3 и в приложении 1.

PAD (Packet Assemble Disassembler / Сборщик/разборщик пакетов /) - это
устройство позволяющее с помощью обычного терминала  работать с сетями
коммутации  пакетов,  т.к.  терминальные  программы  передают не блоки
данных, а символы.
---

1.1.3 Работа с X.25

    Для  работы  с  X.25  требуется  терминальная  программа (например
Telemate или Telix). Позвонив модемом на  ближайший узел сети пакетной
коммутации,  вы  подключаетесь  к  ПАД,  который  получает символы для
передачи  по  сети  и  формирует  из  них  пакеты, а также выполняет и
обратную операцию разборки пакетов и передачи символов на терминал.

    Как  уже  говорилось  ранее,  сети  пакетной  коммутации  являются
транспортом,  позволяющим вам работать со многими системами, которые к
нему  подключены.  Для  этого  необходимо знать адрес (NUA) системы, с
которой вы  предполагаете  работать.  Кроме  того,  большинство систем
снабжено  средствами  идентификации  пользователей,  т.е.  требуют для
работы с ними имя пользователя и пароль. Это связано, в первую очередь
с реверсивной  оплатой  сетевых услуг - владельцы подключенной  к сети
системы платят провайдеру за время соединения  пользователей  с ней, а
затем могут брать с пользователей плату за предоставляемые услуги.
---

1.2.4 Работа с ПАД.

    Работа пользователя с  ПАД происходит в двух режимах:  в командном
и передачи данных.  В начале своей работы с ПАД пользователь находится
в командном режиме. При установлении соединения пользователь переходит
в режим  передачи  данных.  В  режиме передачи данных происходит обмен
информацией с удаленным ресурсом. При необходимости  непосредственного
взаимодействия с ПО ПАД пользователь может  перейти в командный режим,
введя  символ  внимания  -  как  правило,  CTRL/P.  В командном режиме
пользователь может использовать следующие команды:

     CON    - установление соединения через сеть Х.25 [*]
     LOC    - установление локального соединения
     CLR    - разрыв соединения [**]
     PAR?   - просмотр текущих значений параметров Х.3 [***]
     SET    - установление новых значений параметров Х.3
     SET?   - установление новых значений параметров Х.3 и их просмотр
     PROF   - установление новых значений совокупности параметров X.3
     INT    - посылка срочных данных
     RESET  - сброс соединения
     STATUS - текущий статус соединения

    В  ответ  на  команды  пользователя  ПАД  выдает  диагностические
сообщения:
     з____________________________________________________________ї
     і Сообщение ПАД               Значение сообщения             і
     ц____________________________________________________________ґ
     і COM              соединение установлено                    і
     і ERR              синтаксическая ошибка в команде           і
     і RESET            возможная потеря данных на пакетном уровнеі
     і FREE             ответ на команду ПАД STATUS,при отсутствииі
     і                  соединения                                і
     і ENGAGED          ответ на команду ПАД STATUS,при установ-  і
     і                  ленном соединении                         і
     і CLR CONF         разъединение выполнено                    і
     і CLR              индикация разъединения по одной из следу- і
     і                  ющих причин:                              і
     і    0 DTE         удаленный DTE разорвал соединение         і
     і    1 OCC         номер занят                               і
     і    3 INV         неправильный запрос средств               і
     і    5 NC          сеть переполнена                          і
     і    9 DER         канал неисправен                          і
     і   11 NS          доступ запрещен                           і
     і   13 NP          нет доступа                               і
     і   17 RPE         удаленная процедурная ошибка              і
     і   19 ERR         местная процедурная ошибка                і
     і   21 PAD         разъединил местный ПАД                    і
     і   25 NRC         нет реверсивной оплаты                    і
     і   33 INC         несовместимый адрес назначения            і
     і   41 NFC         нет быстрой выборки                       і
     і  128 DTE         канал зарезервирован                      і
     і  129 DTE         удаленный DTE не готов                    і
     і  130 DTE         канал является исходящим                  і
     і  131 DTE         DTE работает по протоколу Х.28            і
     і  132 DTE         DTE отсоединено                           і
     і  133 DTE         DTE недоступно                            і
     і  134 DTE         канал не существует                       і
     і  135 DTE         канал рестартован                         і
     і  136 DTE         нет связи по Х.25                         і
     і  137 DTE         адрес удаленного DTE не существует        і
     і  138 DTE         нет виртуального канала                   і
     ю____________________________________________________________ы

[*]   - В некоторых случаях команду 'CON' пропускают или заменяют 'C'.
[**]  - В некоторых случаях заменяется командой BYE.
[***] - Значения параметров X.3 приводятся в приложении 2.
---

1.1.5 Формат адреса при межсетевом соединении.
                                                    з_ 0 -
                                                    ц_ 1 - Океания
                                                    ц_ 2 - Европа
         з_____ признак того,                       ц_ 3 - Америка
         і          что адрес задан в полном виде   ц_ 4 - Азия
         і       DNIC - код сети,где:               ц_ 5 - Австралия
         і з___ код региона 0 - 9 <_________________е_ 6 - Африка
         і і                                        ц_ 7 - Юж. Америка
         і ізб_ код страны (50 - СНГ)               ц_ 8 -
         і ііі                                      ю_ 9 -
         і ііі
         і іііз код национальной сети 1-9 <_________б_ 0 - ROSPAC
         і іііі                                     ц_ 1 - SPRINT
         0 250С XXXX YYYY ZZ                        ц_ 2 - IASNET
                 ііі іііі юа_подадреса абонента,    ц_ 3 - MMTLnet
                 ііі юааа____номер линии на узле,   ц_ 4 - INFOTEL
                 юаа________ номер узла             ц_ 5 - ?
           ю__ы ю__________ы                        ц_ 6 - ROSNET
           DNIC Внутрисетевой адрес                 ц_ 7 - ISTOK-K
                                                    ц_ 8 - TRANSINFORM
                                                    ю_ 9 - LENFINKOM

   В X.25  сетях  в соответствии  с рекомендацией  Х.121  используются
адреса 3-х типов:

 1) полный (международный) сетевой адрес - 0 250 С ХХХХYYYYZZ,
    где (слева направо):
   - 0  - признак того, что адрес задан в полном виде;
   - 2504 - DNIC - код сети, где:
   - 2  - код Европы;
   - 50 - код страны (СССР);
   - С  - код национальной сети (для ИНФОТЕЛ С=4);
   - ХХХХYYYYZZ (до 10 цифр) - уникальный код абонента внутри сети.
 2) внутрисетевой адрес - СХХХХХХХХХХ, где:
   - С  -  последняя цифра DNIC'а, т.е. уникальный код сети внутри
           одной страны;
   - ХХХХХХХХХХ - код абонента.
 3) телефонный номер - 9GNNNNNNNNNNN, где;
   - 9 признак телефонного номера;
   - G - код узла коммутации (города);
   - NNNNNNNNNNN  (до 11 цифр) - телефонный номер внутри города.
---

1.1.6 Обзор сети SprintNet.

    Сеть  "SprintNet" ( далее Sprint ) -  глобальная  сеть  коммутации
пакетов,  одна  из  крупнейших  в  мире в настоящее время. Сеть Sprint
является  непосредственным  развитием  сети Telenet - одной из  первых
общедоступных  сетей  коммутации  пакетов.  Владельцами  сети являются
крупные американские  коммуникационные компании UTI и GTE. Их дочерней
компании  US  Sprint принадлежит крупнейшая в мире сеть оптоволоконных
каналов, составляющая основу Sprint.
    К Sprint подключено около  6000 host-компьютеров  и шлюзов (gates)
других  фирм  и  организаций, предоставляющих разнообразные справочно-
информационные услуги и обеспечивающих  выход  в другие сети.
    Примерно 110 сетей во всЈм мире поддерживают соединения со Sprint.
Подробнее см. http://www.sprintlink.net/
---

1.1.7 Обзор сети ROSNET.

    Сеть  ROSNET  -  одна  из  Российских  X.25 сетей,  имеющая узлы в
большинстве  крупных  городов.  Раньше  эта сеть специализировалась на
передаче  телексных  и  телеграфных сообщений, в настоящее время к ней
подключено небольшое количество систем типа АДОНИС, Rex400,  доступных
без NUI и предоставляющих почтовые и другие услуги пользователям.
    Телефоны входов можно посмотреть на http://www.rosnet.ru/
---

1.1.8 Сканирование X.25

    Время от времени  у вас  может  возникать потребность узнать какие
системы подключены к X.25 сети.  Так  как провайдеры X.25 не публикуют
списки подключенных к сети систем,  их  поиск осуществляется с помощью
сканирования сети - простым последовательным перебором адресов (NUA).
    Естественно,  делать  это  вручную  непроизводительно - для  этого
используются  разнообразные  программы  или  скрипты ( мини-программы,
написанные на встроенном языке терминала,  например  Telemate). Пример
такого скрипта приведЈн в приложении 3.
---


                      1.3   On-Line Services

1.3.1 Общие принципы работы On-Line услуг.

    В предыдущих  частях  были  описаны  общие  принципы  построения и
работы  самых известных On-Line сетей. Однако следует заметить, что до
последнего  времени  работа  в TCP/IP и X.25 сетях требовала некоторых
профессиональных  знаний  и навыков,  не  всегда доступных для обычных
пользователей компьютеров.  Вероятно поэтому были созданы сервисы, для
работы с  которыми не требуется профессиональных знаний. Пользователь,
заплатив  некоторую  сумму  денег,  получает  доступ к необходимым ему
информационным  ресурсам  с  помощью  некой  программы - оболочки, или
просто, в диалоговом режиме.
    Доступ к разнообразным On-Line услугам осуществляется, в том числе
и по  сетям  пакетной  коммутации (X.25).  Поскольку  сети x.25 широко
распространены  и общедоступны,  то  общение  с  On-Line  сервисами не
представляет  никакого  труда.  В рекламных  целях продавцы этих услуг
помещают программы необходимые для работы в качестве бонуса к модемам,
а также  предоставляют  несколько условно-бесплатных часов работы с их
сервисом.
---

1.3.2 Альтернативные методы оплаты за On-Line услуги.

    Большинство  On-Line  сервисов предоставляют свои услуги на основе
данных  полученных  от  работающих с ними пользователей. Так как часто
при работе через  X.25  местоположение пользователя не проверяется, то
существует возможность указать при регистрации некорректные сведения о
пользователе  и  о  его  финансовых  возможностях.  На  этом  принципе
построены альтернативные методы оплаты за On-Line услуги...
---



                               Часть 2.

                  Операционные системы и компьютеры.

             2.1 Классификация методов взлома компьютеров.

    Итак, вы имеете какой-либо доступ к сети, и хотите  расширить свои
возможности,  путем  проникновения  на  другие  компьютеры или повысив
свои права на машине с которой вы работаете. Поэтому все методы взлома
делятся на  две группы - методы для проникновения на компьютер из сети
и методы повышения своих прав на компьютере.

  В первом случае это :
   - Уже упоминавшийся подбор пароля. Как сказал Maxim Bocharov "Шансы
     - 0% - если не угадали. 100%  -  если  вы  magician  or  телепат.
     Кpитеpий -  время.  Однако   некoтopые  американцы  ТАКИЕ  ТУПЫЕ,
     что.... везет. 8-)))".  Следует  иметь в виду  то,  что обычно на
     большинстве UNIX login  с  удаленного терминала пользователю root
     запрещен. Поэтому обычно подбирают пароли обычных пользователей.
   - Использование ошибок операционных систем для получения информации
     о пользователях на машине (например login & password).
   - Использование сканирования проходящих в сети  пакетов (sniffing),
     для получения информации о пользователе(ях).
   - Есть в UNIX'е такая программка 'sendmail', если ее поковырять, то
     может можно что-нибудь найти ...
   - "Троянские кони"  - программы содержащие в себе некий 'довесок' и
     'подаренные' на атакуемую машину.
   - Один из новых способов : использование ошибок в  WWW-броузерах, и
     возможностей  новых элементов WWW-страниц - JAVA, ActiveX. В этих
     недавно появившихся средствах создания  интерактивных WWW-страниц
     используется технология  перекачки  некого  кода и/или скрипта на
     машину пользователя и затем их автоматический запуск.

  Во втором случае всЈ зависит  от  операционной  системы  компьютера,
на котором вы  хотите добиться повышенных привилегий.  У  каждой  есть
свои дыры, но не ищите их в данном документе - их  описания здесь нет,
про  стандартные не  имеет  смысла рассказывать, разве что, в качестве
классических  примеров,  и  они  уже  давно  заткнуты,  про  остальные
естественно никто не расскажет  -  т.к.  их  тут  же  заткнут, так что
ИЩИТЕ. Это могут быть например:

   - Некорректно написанные программы  (не проверяющие на корректность
     вводимые данные, имеющие недокументированные команды, флаги, etc)
   - Неправильные  права  доступа  к  системным  файлам и директориям.
     ( например  при  инсталляции  QNX  все системные директории имеют
     флаги  rwxrwxrwx  (:,  а  автор  программы mqc  заботливо оставил
     SUID'ный командный файл с такими же атрибутами)

    В  компьютерном  мире  существуют  много организаций, занимающихся
нахождением и  информированием  о  ошибках  и  дырках  в  операционных
системах,  в  целях  их скорейшего нахождения и исправления системными
администраторами,  но  кто  мешает  хакеру  тоже  получать такого рода
информацию ? Обычно, немедленное  использование  полученной информации
дает результаты.  Ссылки на наиболее известные организации приведены в
разделе 'Ресурсы'.

    Далее будут рассмотрены _общие_ аспекты вышеперечисленных  методов
взламывания операционных систем.
---

2.1.1 Как определить операционную систему ?

    Перед  тем,  как  приступить  к  нашим  исследованиям,  необходимо
идентифицировать "подопытную"  операционную  систему.  Обычно,  тип ОС
можно определить  по ее  приглашению перед регистрацией в системе. Для
некоторых  операционных  систем  вы можете найти примеры приглашений в
приложении 5.
    Hекоторые  беззаботные  сисадмины, помещают информацию о типе ОС и
процессора в поле HINFO DNS(1.1.2).
---

2.1.2 Стандартные пароли в операционных системах.

    Как  говорилось ранее, в некоторых случаях возможен подбор пароля,
для входа в  систему.  До  недавнего  времени,  пользователи  выбирали
пароли которые легко запомнить, или даже оставляли те, которые стоят в
системе по умолчанию при инсталляции.  Если у вас не хватает фантазии,
вы можете поэкспериментировать с этим списком:
admin, ann, anon, anonymous/ anonymous, backup, batch, bin, checkfsys,
daemon, demo, diag, field,  ftp, games,  guest/guest, guest/anonymous,
help, install, listen, lp, lpadmin, maint, makefsys,mountfsys,network,
news,nobody, nuucp, nuucpa, operator, powerdown, printer, pub, public,
reboot,rje, rlogin, root, sa, setup, shutdown, startup, sync, sys/sys,
sysadm,sysadmin, sysbin/sysbin, sysbin/bin, sysman, system, tech,test,
trouble,tty, umountfsys, user/user, user1/user1, uucp, uucpa, visitor.

    Также,  очень  часто  пользователи  используют в качестве паролей,
свое имя, фамилию, имя своего бюджета, или вообще его не ставят.
    Hint: Вы уже поменяли свой пароль ? ;-)
---


2.2 UNIX, основная операционная система в Internet.

    На больших ЭВМ, UNIX - одна  из  самых  используемых  операционных
систем. Существуют две основных концепции построения клонов UNIX:

     1. BSD UNIX - от Berkeley Software Distribution
     2. System V - от AT&T

    Также существует SVR4, которая является смесью  этих  двух  типов.
Клоны UNIX  имеют самые различные названия:  Linux,  FreeBSD,  BSD/OS,
Solaris/x86,  NetBSD,  SCO,  UnixWare ( для IBM PC ),   SunOS/Solaris,
NetBSD/Sun  ( для SUN ),  Digital  UNIX, Ultrix, OSF/1 (для DEC'овских
машин), а также HP-UX, AIX, Apollo и другие.

    Некоторые UNIX'ы  свободно  распространяются  вместе  с  исходными
текстами: FreeBSD, Linux, NetBSD.  Более  подробную  информацию  о них
можно получить на:
  FreeBSD: http://www.freebsd.org/
  Linux:   http://www.linux.org/
  NetBSD:  http://www.netbsd.org/
---

2.2.1 Пароли в UNIX.

    В классическом UNIX'е информация о пользователях хранится в  файле
/etc/passwd. Этот файл содержит для каждого пользователя системы, семь
полей, разделенных знаком ':'.
    Пример записи на одного пользователя из /etc/passwd:

 will:5fg63fhD3d5g:9406:12:Will Spencer:/home/fsg/will:/bin/bash

Каждая запись содержит :
 Имя пользователя (login): will
     Зашифрованный пароль: 5fg63fhD3d5g
       Номер пользователя: 9406
             Номер группы: 12
Информация о пользователе: Will Spencer
         Домашний каталог: /home/fsg/will
         Оболочка (Shell): /bin/bash

Важное примечание:
    В современных UNIX'ах зашифрованные пароли не хранятся в доступном
всем /etc/passwd, а хранятся в файле, доступном только администратору:
/etc/master.passwd или /etc/shadow.  В  поле пароля /etc/passwd в этом
случае стоит символ '*'. Что делать? На довольно старых  версиях SunOS
может помочь следующая программа:

#include <pwd.h>
main()
{
struct passwd *p;
while(p = getpwent())
printf("%s:%s:%d:%d:%s:%s:%s\n",  p->pw_name, p->pw_passwd, p->pw_uid,
p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell);
}
---

2.2.2 Как узнать пароль в UNIX ?

    Вопреки  распространенному  мнению,  пароли  в  UNIX не могут быть
расшифрованы. Шифруются не паpоли, а строка пробелов, с использованием
пароля  в  качестве  ключа.  Кроме того для того, чтобы пользователи с
одинаковыми  паролями имели разные выходные строки используется Salt -
это  две  первые  буквы (5f) в  5fg63fhD3d5g - это то, что все считают
шифрованным  паролем  и находится  в passwd во втором поле записи, см.
предыдущий пример.

    Как задается пароль в Unix ?
      a) Система вырабатывает Salt - две случайные буквы.
      б) Запрашивает у пользователя пароль.
      в) Шифрует  строку пробелов по алгоритму DES, используя Salt для
         модификации  алгоритма  шифрования,  пароль  используется как
         ключ. (*)
      г) Записывает Salt, плюс pезультат шифpования в passwd.

(*) В качестве  метода  шифрования  кроме  DES  в  некоторых  системах
используют MD5.
    Идентификация пользователя проходит в два этапа- сначала на запрос
"Login:"  пользователь  вводит  свой login_name, затем программа login
берет Salt, и используя  вышеуказанный  алгоритм преобразует введЈнное
после запроса "Password:" слово. Результат сравнивается с записанной в
passwd строкой.

    К сожалению ;) в настоящее время не имеется _доступной_ аппаратуры
для  подбора  пароля  методом  полного  перебора  за приемлемое время.
Поэтому программы ломания  паролей  используют  словари ( wordlists ).
Каждое  слово  из  словаря  используется в качестве ключа для шифровки
Salt и результат сравнивается с содержимым passwd.
    Ссылки  на  программы,  подбирающие  пароли по словарям или полным
перебором смотрите в разделе 'Ресурсы'.
---

2.2.3 Некоторые методы взлома UNIX.

%PATH%
~~~~~~
    Если ваш администратор забыл убрать из переменной окружения %PATH%
"."(текущий каталог),  то этим можно воспользоваться положив в каталог
программу-троянца(2.1.4) с  именем какой-либо наиболее употребительной
команды  системы  (например  ls).  Тогда  при  попытке  администратора
просмотреть содержимое этого каталога может запустится ваша программа,
делающая свое черное дело :-).
    Вообще, в  некоторых  системах  стоит  внимательнее  посмотреть на
порядок перечисления каталогов в переменной PATH, а также расположение
часто запускаемых из командной строки программ.

UID SHELLS.
~~~~~~~~~~~
    Когда бит  'UID'  поставлен  у  программы - оболочки ( shell ), ее
выполнение изменяет ваш user id на user id владельца  этой  программы,
и вы будете использовать полученный acccount  пока не выйдите  из этой
вторичной  оболочки. Это дает вам возможность исполнять любые  команды
под user id полученного account'a. Это  лучше,  чем  знание пароля для
account'a, вы можете пользоваться account'ом пока существует этот файл
в системе,  даже  если  владелец сменит пароль. Обычно, когда получают
доступ к account'у, делают копию shell в какой-то директорий, и ставят
UID и GID биты. Теперь если доступ к этому account'у потерян, можно из
другого запустить UID-shell и получить необходимый доступ.
    UID и GID биты ставятся программой chmod. Например:

chmod 6555 /tmp/sh

Изменение UID программ.
~~~~~~~~~~~~~~~~~~~~~~~
    Если вы имеете доступ по_записи(write access) к UID файлу,то можно
легко превратить его в оболочку. Скопируйте файл, затем наберите:

cat /bin/sh > [uid файл]

    Это  заменит  его содержимое на содержимое shell, но UID останется
прежним. Теперь запустите заменЈнную программу,  сделайте  скрытый UID
shell, и  верните  UID  файл в прежнее состояние из копии. В настоящее
время  в  последних  версиях  UNIX-систем  при попытке записи в файл с
установленным битом 's', этот бит сбрасывается, что делает невозможным
применение данного метода.
    Как найти рутовские файлы с suid ? Попробуйте:

find / -user root -perm -6000 -print

Срыв стека.
~~~~~~~~~~~
    Самая новомодная методика взлома UNIX. В программах  написанных на
языке С,под массивы отводится место в стеке программы. Если при работе
с таким  массивом  происходит  запись  в массив  за его  границей, это
приводит к разрушению стека программы  и непредсказуемым  результатам.
Например при выходе из модуля происходит переход по случайному адресу.
    Переполнения стека приводит к изменению адреса возврата из функции
и может быть использовано для изменения  нормального  хода  выполнения
программы. Логично  было бы  заставить  программу  выполнить  какие-то
незапланированные действия, например, запустить(spawn) shell.  Но если
в программе не содержится необходимого кода? Как поместить необходимый
код в адресное пространство инструкций? Необходимо  поместить  код для
выполнения в  переполняемый буфер и переписать адрес возврата на точку
внутри этого  буфера. Код, при выполнении  которого  происходит запуск
shell, получил название  'Shell  Code'.  Если  программа,  из  которой
происходит запуск shell проинсталлирована как suid root, то получается
root shell.
    Пример программы, реализующей вышеописанные действия  приводится в
приложении 6.

Поиск программ с возможностью срыва стека.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Как  было  сказано  выше,  переполнения  буфера  происходят  из-за
помещения в него большего количества  информации,  чем предполагалось.
Так как Язык C не  имеет  каких-либо  встроенных  средств для проверки
границ массивов данных,  переполнения  часто  встречаются. Стандартная
библиотека С  предоставляет ряд функций для копирования и конкатенации
строк, и эти функции  не имеют  проверок границ. Вот некоторые из этих
функций:  strcat(),  strcpy(),  sprintf() и  vsprintf().  Эти  функции
используют  строки  заканчивающиеся  символом '\0' и  не  проверяют на
переполнение при обработке принимаемой строки.  gets() - это  функция,
которая считывает строку со стандартного ввода (stdin) в буфер  до тех
пор,  пока  не  встретит  символ  новой строки или EOF. Эта функция не
производит  проверки  на переполнение буфера.  С  семейством   функций
scanf()  может  возникнуть  такая  же  ситуация, если в строке формата
используется  "%s"  и  принимающая  строка  недостаточно  велика. Если
принимающий  массив  какой-нибудь  из  этих функций представляет собой
буфер  постоянной  длины  и данные, его заполняющие каким-либо образом
зависят  от ввода  или другой  информации,  зависящий от пользователя,
то скорее всего вы можете вызвать ситуацию переполнения буфера.
    Другая, часто использующаяся при программировании конструкция, это
цикл посимвольного ввода из stdin или другого  файла в  буфер   до тех
пор, пока не будет  встречен  символ  конца  строки (EOL), конца файла
(EOF) или другой разделитель. В такой конструкции обычно  используются
функции getc(), fgetc(), или getchar(). Если при этом нет  проверок на
переполнение, то в таком коде тоже легко  можно  вызвать  переполнение
буфера.
    Программа grep играет значительную роль в поиске таких слабых мест
в программах.  Исходные тексты свободно  распространяемых операционных
систем  вполне доступны.  И этот  факт становится  весьма  интересным,
учитывая то,  что многие  коммерческие операционные системы базируются
на исходных текстах свободно распространяемых систем. В общем,изучайте
исходные тексты UNIX !
---

2.2.4 Как научится не оставлять за собой следов ?

Файлы протоколов работы (log-files).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    UNIX хранит системные протоколы в следующих файлах:

/var/log/utmp (/etc/utmp)     - запись о вашем  текущем  присутствии в
                                cистеме.  Используется программой who.
/var/log/wtmp (/usr/adm/wtmp) - протокол всех вхождений в систему.
                                Используется программой last.
/var/log/lastlog (/usr/adm/lastlog) - Дата последнего  входа в систему
                               каждого пользователя. Выдается на экран
                               программой login.

    Это  не  текстовые  файлы  и  отредактировать  их  в vi  руками не
получится.  Для  того,  чтобы стереть информацию о своЈм  присутствии,
надо  использовать  специальную программу, написанную для  этих целей.
    Пример такой программы приведЈн в приложении 7.

    Часто информация о входах пользователей и о некоторых их действиях
(например запуск su) выдается на консоль администратору  и в системный
лог, который может называться /var/log/messages. Для модификации этого
файла можно воспользоваться редактором ed или vi.

Программа CRON.
~~~~~~~~~~~~~~~
    Cron - программа,  которая  запускает  другие  задачи  с некоторой
периодичностью. Описание этих задач и времени  их  запуска  хранятся в
файлах в двух директориях: /usr/lib и /usr/spool/cron.

    Файл crontab в директории /etc или  /usr/lib  описывает  системные
задачи, которые надо запускать с  определЈнной  периодичностью. Формат
этого файла:

минуты часы день_месяца месяц_года день_недели коммандная_строка
[0-59] [0-23] [1-31]      [1-12]     [1-7]     [путь, аргументы]

    Пример строки из crontab:
0 1 * * *  /bin/sync

Это значит, что надо запускать команду sync, содержащуюся в директории
/bin  в час  ночи каждый день. Команды выполняемые из /usr/lib/crontab
получают привилегии root (UID = 0).
    В  каталоге  /usr/spool/crontabs,  содержатся  файлы имеющих имена
системных account'ов. Эти файлы содержат поля, сходные с содержащимися
в  файле /usr/lib/crontab, но команды из этих  полей  выполняются с ID
пользователя с именем, соответствующим имени этого файла. Формат полей
аналогичен.

    Обычно с помощью утилиты cron  запускаются  программы, проверяющие
целостность  системы:  проверяются  длинна  и/или  контрольные   суммы
файлов,  наличие  в  системе  пользователей  с  UID = 0, и т.д. О всех
подозрительных явлениях пишется письмо root'у.  При модификации файлов
cron пишется протокол в файл /usr/adm/cronlog.
    В некоторых  системах,  например  во  FreeBSD существуют командные
файлы /etc/daily,  /etc/weekly  и /etc/monthly. /etc/daily запускается
cron'ом  ежедневно  в  2:00am  и  сравнивает  информацию выдаваемую по
команде ls -laT для всех  suid'ных  файлов  с информацией  предыдущего
дня.   Иными  словами  /etc/daily  сравнивает  /var/log/setuid.today и
/var/log/setuid.yesterday.     О  всех  изменениях  посылаются  письмо
администратору. Так что, если вы изменили  или  добавили  какой-нибудь
SUID'ный файл, не забудьте  сделать  соответствующие  изменения в этих
двух файлах.
---

2.3 Windows NT и Windows95.

    Достаточно  большое  количество  машин  в интернете  находятся под
управлением операционных систем Windows 95 или Windows NT. Эти системы
отличаются  от  UNIX-систем  дружественным, для простых пользователей,
графическим  интерфейсом.   Особенно  большое распространение получила
система  Windows95.  Еще  одно  важное отличие  этих систем в том, что
_начальная_  концепция  защиты  в них формулируется следующим образом:
"Что на запрещено, то разрешено", в отличие от UNIX-систем, где законы
несколько другие: "Что не разрешено, то запрещено".
    Стоит  заметить,  что  в Windows-подобных  системах  в стандартной
поставке  отсутствует  такой сервис, как удаленный терминальный доступ
(telnet) и удаленное использование машинного времени не предусмотрено.
---

2.3.1 Как через Internet подключиться к другой Win'95 машине?

    Многие  пользователи,  работающие  в Internet  из  своих локальных
сетей  открывают  доступ  к  своим  дискам,  например для товарищей по
работе или  каких-либо других  целей. Если  такая  локальная  сеть  не
защищена  Firewall'ом (1.1.7),  то  информация  этих компьютеров может
стать доступной из Internet по протоколу Netbios-via-TCP/IP.
    Для подключения дисков удаленной машины через Internet достаточно
внести IP-адрес  и  имя  машины в файл %WinDir%\hosts на вашей машине,
затем  подключить  удаленный  диск воспользовавшись командой "NET USE"
или с помощью меню "Сетевое окружение\Найти компьютер". Обычно все это
работает  если  между вашей и удаленной машиной есть устойчивая связь.
Время  прохождения пакетов можно проверить воспользовавшись программой
ping,  а доступность портов - установив telnet-соединение c 139 портом
удаленной машины.
    Пару  слов  о nbtstat.  Эта  полезная программа, входящая в состав
Windows95 и Windows NT показывающая информацию о удаленном компьютере,
например пользователей, работающих на машине.
---

2.3.2 Как узнавать различные пароли в Win'95?

    Windows 95 хранит свои пароли в двух местах - в registry и в *.PWL
файлах.  Пароли к ScreenSaver'у и к Общим (shared) ресурсам хранятся в
registry.  Пароли  пользователей  на  вход  в  машину - в файлах типа:
%WinDir%\"имя_пользователя".PWL

    В  отличии  от UNIX, пароли пользователей могут быть восстановлены
с наименьшей  затратой  сил.  Windows API имеет мало документированные
функции  (WNetEnumCachedPasswords)  для  получения  паролей _текущего_
пользователя, этим пользуется программа PWLVIEW by Vitas Ramanchauskas
Программа glide самостоятельно расшифровывает информацию в PWL-файлах,
но с связи с этим работает не на всех версиях Windows 95.
    Программа w95rv by Hard Wisdom показывает пароли к общим ресурсам,
хранящимся в registry:
H_K_L_M\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\...

Программу glide.c можно найти на любом поисковом сервере.
---

                               Часть 3.

                               Разное.

3.1 Условия распространения.

    Данный документ может свободно распространяться в электронном виде
при условии сохранения его целостности. Вы можете свободно  передавать
и применять его если это не связано с получением прибыли. Коммерческое
использование запрещено, штраф $10.000(десять тысяч долларов США).
    ПPEДOCТEPEЖEHИE  издaтeлям  гaзeт, жypнaлoв, бpoшюp, книг и пpочей
коммерческой пeчaтнoй пpoдyкции:
  - КAТEГOPИЧECКИ  зaпpeщeнa  пepeпeчaткa нa твepдыx нocитeляx дaннoгo
фaйлa,  пoлнocтью  или  чacтичнo  бeз  пpедвapитeльнoгo coглacoвaния c
peдaктopoм.
---

3.2 Где найти свежую версию FAQ ?

BBS:
   ____  _____/\  _________ ____  _____________
  / __ \/ __ /  \/  /  ___/  _  \/  __ /_   __/  Every Night 23:59-09:01
 _//_/ / __ /      /___  /  //  /  __ / /  /   Phone  +7-(812)-395-3264
/____ /____/__/\  /\____/\_____/__/    /__/
                \/       _____________/\ _____________ ____  /\  ___
  FidoNet: 2:5030/493   /  ___/_   __/  \ ___   __/  /  _  \/  \/  /
 ASCNet: 111:3000/10   /__   / /  / / \  \  /  / /  /  //  /      /
ABCNet: 123:1000/30    \____/ /__/ /_/ \__\/__/ /__/\_____/__/\  /
                                                               \/
   FREQ: NETHACK

FTP:
   ftp://proxy.etu.spb.ru/pub/texts/neth_faq.zip

HTTP:
   http://www.nether.net/~dzh/neth_faq.zip (временно недоступен)
---

3.3 Как связаться с авторами ?

    Связаться  с редактором  этого  документа  можно написав письмо по
одному из адресов:

  FidoNet: 2:5030/493@fidonet.org
  E-Mail : dzh@nether.net (временно недоступен)
           dzh@tomcat.ru

    Вы  можете принять  участие в работе  над следующими  версиями FAQ
в качестве:
 - соавтора
 - консультанта
 - beta-тестера
---

3.4 Библиография.

1.  Farmer D., Venema W., Improving  the  Security  of  Your  Site  by
    Breaking Into it, Eindhoven University of Technology.
2.  TCP port Stealth Scanning by Uriel Maimon, PHRACK #49, November 08,
    1996
3.  Smashing  The  Stack  For  Fun And Profit   by Aleph1, PHRACK #49,
    November 08, 1996.
4.  The alt.2600/#Hack FAQ by Voyager, A TNO Communications Production
5.  Unix Use and Security, From The Ground Up, by The Prophet.
6.  Безруков Н.Н., Компьютерная Вирусология. - Киев: КHИГА, 1989.
7.  Сеть РОСПАК. Руководство пользователя.
8.  Ю. Блэк. Сети ЭВМ: Протоколы, стандарты, интерфейсы: Пер. с англ.-
    М.: Мир, 1990.
9.  Мартин Дж. Вычислительные сети и распределЈнная обработка данных.
    Пер. с англ. - М.: Финансы и статистика, 1985.
10. Эви Немт,  Гарт Снайдер,  Скотт Сиббас,  Трент Р. Хейн.      UNIX:
    руководство системного администратора: Пер. с англ.-К.: BHV, 1996.
11. Building Internet Firewalls by D.Brent Charman and
    Elizabeth D. Zwicky. Copyright (c) 1995 O'Relly & Associates, Inc.
---


======================================================================
                 Copyright (c) 1996-98 Denis Zhitenev
                         All Rights Reserved

Time: 22:51:57   Date: 10/27/1998