1. «Сразу в дамки» – имея привилегии третьего уровня, хакер получает права суперпользователя. Как уже отмечалось, такой фантастический прыжок возможен благодаря механизму демонов UNIX, отвечающих за обработку удаленных запросов. Так как эти демоны чаще всего выполняются от имени суперпользователя, то все, что нужно псевдопользователю, – это знать существующие «дыры» или ошибки в этих демонах (или найти самому), которые позволят эксплуатировать их нестандартным или запрещенным образом. Обычно это сводится к возможности удаленно выполнить от их имени любую команду на атакуемом хосте, какую конкретно – зависит от намерений и характера хакера. Иногда это может быть создание ошибочной ситуации, приводящей к аварийному завершению демона с выдачей дампа памяти на диск, содержащий весьма полезную для хакера информацию (например, кэшированные пароли). Типичными примерами уязвимых демонов были и остаются sendmail, ftpd, fingerd. Новые демоны (типа httpd или talkd) имеют гораздо меньшую историю эксплуатации, поэтому известно меньшее число их дыр и, соответственно, они перспективнее для поиска новых.
Такой сценарий был очень популярен на заре развития глобальных сетей, им пользовался вирус Морриса (см. в этой главе раздел «Червь»). Сейчас найти дыру такого рода в демонах очень трудно, хотя и можно. Хосты, допускающие атаку по этому сценарию, должны считаться катастрофически незащищенными.
2. «Из специального – в обычного, или выше». Этот сценарий очень похож на предыдущий, с тем исключением, что для хакера требуются начальные привилегии второго уровня (иначе говоря – запущен некоторый дополнительный сервис). Для четкого отличия таких атак от первого типа будем считать, что злоумышленник всегда проходит некую (пусть примитивную) идентификацию и, возможно, аутентификацию. Это не очень серьезное допущение, большинство хостов поддерживают некоторый удобный (например, анонимный ftp) или необходимый (типа tftp для удаленной загрузки бездисковых станций) сервис. Привилегии второго уровня могут дать возможность хакеру читать некоторые файлы (например, из ~ftp/pub) и, что самое главное, записывать свои файлы на ваш компьютер (в каталог типа ~ftp/incoming). С другой стороны, так как пользователь регистрируется на вашем компьютере, в его файлах-протоколах остается некоторая информация о подключении.
Типичным примером атаки по данному сценарию является атака, которая по протоколу tftp получает файл паролей /etc/passwd, а затем с его помощью подбираются пароли пользователей. Этот пример показывает, что необязательно желаемые привилегии будут получены немедленно, такие атаки могут лишь создать предпосылки для возможного их получения в дальнейшем.
Хосты, допускающие подобные атаки, также должны считаться катастрофически незащищенными в случае, если используемый в них сервис нельзя отключить без ущерба функционированию системы.
3. « Маловато будет: из обычного – в суперпользователи». Этот сценарий, пожалуй, наиболее прост и широко распространен. Подавляющее большинство сообщений о так называемых «дырах» в UNIX относится именно к нему. Для его осуществления злоумышленник должен уже быть обычным пользователем (иногда говорят, что он имеет бюджет, или account) на том компьютере, который он собирается взламывать. Это, с одной стороны, серьезное ограничение на масштабность проникновения, с другой стороны – большинство утечек информации происходит через «своих», через подкупленного сотрудника, который пусть и не имеет больших полномочий, но уж входное имя на секретный компьютер у него есть.
Своей осуществимостью атаки данного рода обязаны очередному недостатку безопасности UNIX, который называется механизмом SUID/ SGID-процессов. Не будем сейчас подробно останавливаться на необходимости и причинах появления такого механизма в этой операционной системе, отметим лишь, что многим системным программам (которые могут быть запущены любым, в том числе и непривилегированным пользователем) для правильного функционирования необходимы дополнительные полномочия. Приведем хрестоматийный пример изменения пользователем пароля самому себе. Не вызывает сомнения, что пользователь может иметь право на подобную операцию, однако в терминах UNIX это равносильно наличию права на запись в общий для всех пользователей файл /etc/ passwd, что, очевидно, недопустимо. Поэтому программа, осуществляющая смену пароля пользователя, выполняется не от имени запустившего его пользователя, а от имени суперпользователя (который, естественно, имеет право на запись в файл /etc/passwd). Для этого она обладает специальным атрибутом SUID/SGID, означающим смену идентификатора пользователя и/или группы у запущенного процесса.