Приемы профессиональной работы в UNIX

         

ВХОДЫ В СИСТЕМУ


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

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

Пробить систему защиты UNIX можно с помощью "исполняемых регистрационных имен". Это имена, которые запускают программу, а не просто предоставляют вам shell, что является обычным способом начала сеанса работы пользователя в системе. Это может выглядеть примерно так:

date::100:50:Print the date:/bin:/bin/date

who::101:50:Print all logged on users:/bin:/bin/who Это может запустить любой, кто имеет доступ к терминалу или модемному порту. Иногда это правильные имена, например date, who или sync. Хотя для администратора может быть удобным наличие программ, запускаемых при входе в систему, они часто становятся лазейками, через которые кто-нибудь может проникнуть в систему и обнаружить много информации о системе.

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


break::102:50::/:/usr/bin/break

Такая запись позволила бы кому угодно набрать имя "break" в ответ на регистрационную подсказку, в результате чего выполнился бы файл /usr/ bin/break. Когда break отработает, снова поступает регистрационная подсказка, и в системе появляется новая лазейка. Почему? Потому что командный файл break может содержать команды для редактора, которые отредактировали бы парольный файл и добавили несанкционированные записи. Это становится возможным по той причине, что процесс getty (печатающий регистрационную подсказку) запускается процессом init, а владельцем файла init является суперпользователь. Такая привилегия передается командному файлу, так как он запущен в момент регистрации в системе, а программам, запускаемым при входе в систему, обычно требуется суперпользовательский доступ для выполнения необходимых инициализаций. В данном случае, однако, он позволяет редактору читать файл /etc/passwd и писать в него. Таким образом, как только нарушитель ОДИН РАЗ получает доступ на запись в /etc/passwd (аналогично "диверсионным программам"), он может установить постоянный доступ, часто даже через несколько точек входа.

И еще. В старых версиях UNIX попадаются некоторые ошибки, предоставляющие суперпользовательские возможности. Например, если в пользовательской записи парольного файла не указан номер пользовательского идентификатора, то по умолчанию он считается нулевым, т.е. суперпользовательским. В эту лазейку очень легко проникнуть. Пример такой записи:

rt::::The Super User:/:/bin/sh

Вот некоторые другие проблемы, за которыми должен следить администратор. Если первая строка парольного файла пустая, то пользователь может зарегистрироваться как корневой без пароля. Проверьте также запись "bin" в парольном файле, которая обычно запускает системные программы. Если запись bin не содержит пароля, как в приведенном выше примере, кто-то может войти в систему в качестве bin и отредактировать файл crontab, чтобы применить к парольному файлу команду chmod (change permission mode, изменение прав доступа) и обеспечить себе доступ к нему. Пользователь bin может также отредактировать файл /etc /rc, чтобы сменить парольный файл. Файл rc используется для конфигурирования системы в момент ее старта путем автоматического запуска ряда программ. Все, что нужно для успешного вторжения,- подождать, когда администратор перегрузит систему (поскольку именно в этот момент файл запускается). После перезагрузки нарушитель может войти в систему как обычный пользователь, отредактировать парольный файл, записать его, а потом в любой момент входить в систему в качестве суперпользователя. Это всего лишь несколько способов, которыми можно добиться несанкционированного входа в систему. К сожалению, каждый день выдумывают новые способы.


Содержание раздела