39973

Классификация причин уязвимости Windows NT

Контрольная

Информатика, кибернетика и программирование

Классификация пользователей Unix Суперпользователь Обычные пользователи Специальные пользователи Псевдопользователи Классификация пользователей Windows Администраторы Обычные пользователи Специальные пользователи Псевдопользователи Анонимный пользователь Уязвимости Unix Наличие демонов Механизм SUID SGIDпроцессов Излишнее доверие Человеческий фактор Уязвимости Windows Серверы Системные процессы Анонимный пользователь Человеческий фактор Совместимость с другими ОС Классификация причин уязвимости Windows...

Русский

2013-10-13

36.89 KB

3 чел.

12. Классификация пользователей и типовых сценариев атак в ОС Windows

Классификация пользователей:

  1.  Администраторы  - их много, они могут обладать разными правами на доступ к файла, процессам и системными правами. Можно настроить работу нескольких администраторов.
  2.  Обычные пользователи  - не имеют особых отличий от юникса, они обладают какими то правами, которых достаточно для выполнения их обязанностей. Отличаются только особенностями самой системы.
  3.  Специальные пользователи – схож с юниксом.
  4.  Псевдопользователи – если есть какие то серверы – они должны предоставлять доступ сторонним пользователям. Схож с юниксом. Но у винды значительно меньшее количество предоставляемых сервисов.
  5.  Анонимный пользователь – он нужен для протокола взаимодействия винды….

Классификация пользователей Unix

  1.  Суперпользователь
  2.  Обычные пользователи
  3.  Специальные пользователи
  4.  Псевдопользователи

Классификация пользователей Windows

  1.  Администраторы
  2.  Обычные пользователи
  3.  Специальные пользователи
  4.  Псевдопользователи
  5.  Анонимный пользователь

Уязвимости  Unix

  1.  Наличие демонов
  2.  Механизм SUID/ SGID-процессов
  3.  Излишнее доверие
  4.  Человеческий фактор

Уязвимости Windows

  1.  Серверы
  2.  Системные процессы
  3.  Анонимный пользователь
  4.  Человеческий фактор
  5.  Совместимость с другими ОС

Классификация причин уязвимости Windows NT

(это параграф из книги "Атака на интернет")

В отличие от описания проблем с безопасностью у UNIX, здесь мы пойдем по обратному пути: сначала классифицируем возможные способы нарушения безопасности Windows NT, а затем будем приводить примеры.

Оказывается, что классификация причин уязвимости Windows NT весьма похожа на рассмотренную аналогичную классификацию для UNIX.

Удаленное выполнение кода

Ясно, что механизм демонов, отвечающих за обработку соединений с тем или иным TCP-портом, должен был остаться и в Windows NT. Действительно, все основные службы, используемые в Internet, – ftp, WWW или e-mail – должны поддерживаться любой ОС, включающей в себя реализацию стека протоколов TCP/IP. Более того, все основные команды для работы с ними также стандартизованы. Пусть в Windows NT эти программы называются не демонами, а серверами, суть от этого не меняется, а именно: как и в случае UNIX-систем, некий неидентифицируемый пользователь (человек, сидящий за своим компьютером по другую сторону океана) тоже может давать некоторые команды серверам, подключившись на соответствующий порт. Отсюда ясно, что от классических проблем с переполнением буфера Windows NT принципиально не может быть защищена.

Получение прав другого пользователя

Естественно, что неудачного механизма SUID/SGID-программ, являющегося основным источником получения привилегированных прав в UNIX, в Windows NT нет. Тем не менее в операционной системе, где одновременно функционируют процессы с разными привилегиями, всегда потенциально можно получить права более привилегированного процесса. Этого нельзя сделать только в том случае, когда система написана так, что не содержит ошибок во внедрении и реализации не только подсистемы разграничения доступа, но и всего ядра ОС, управляющего процессами, файловой системой и т. п. Для современных ОС, объем исходного кода которых исчисляется сотнями тысяч строк (а для Windows NT 5.0 – около 5 миллионов), гарантировать отсутствие ошибок нельзя при любых технологиях написания этого кода и любом мыслимом уровне тестирования.

Windows NT содержит процессы (они называются сервисами), которые запускаются чаще всего от имени system. Это специальное имя не сильно афишируется (по крайней мере, вы не найдете его в списке имен пользователей программы User manager) и обладает полномочиями администратора на локальной машине. Таким образом, запустив программу от имени system, злоумышленник получает возможности, сравнимые с возможностями суперпользователя для UNIX-систем. Такой запуск может быть реализован как классическими методами типа переполнения буфера, так и специфичными для Windows NT способами.

Нелегальное подключение к системе

Как вы помните, в некоторых случаях пользователь может подключаться к UNIX без предъявления пароля. В Windows NT такой механизм отсутствует, однако возможность нелегального (или полулегального) подключения к Windows NT все же остается. Дело в том, что в этой системе существуют некие пользователи и группы со стандартными общеизвестными именами. Один из пользователей – Guest, по умолчанию имеющий пустой пароль, – действительно хорошо известен и хакерам, и администраторам. Именно поэтому он запрещен по умолчанию, что делает его не очень ценной находкой для злоумышленников. Однако существует другой, менее известный (по крайней мере, администраторам) пользователь – анонимный (не путать с анонимным пользователем ftp или http), с пустым именем и паролем (не пытайтесь, однако, при входе в систему оставить пустыми имя и пароль пользователя – это не сработает, для анонимного подключения к компьютеру требуется другая процедура, о которой мы расскажем чуть позже), поэтому он несколько отличается от обычных пользователей, но тем не менее обладает правами, сходными с правами группы Everyone (все).

Итак, классификацию всех пользователей (субъектов) Windows NT аналогично пользователям UNIX можно представить в следующем виде:

1. Администраторы – все права на локальном компьютере или домене. Отличие от UNIX в том, что их может быть много.

2. Обычные пользователи – аналогично UNIX.

3. Специальные пользователи – предопределенные имена, как правило, использующиеся системой. Могут иметь достаточно широкие полномочия.

4. Псевдопользователи – удаленные пользователи, взаимодействующие с сетевыми серверами. Не являются пользователями как таковыми, не проходят регистрацию и не могут подключиться к компьютеру в явной форме – аналогично UNIX.

5. Анонимные пользователи – не имеют пароля, но имеют права, сходные с правами Everyone.

Человеческий фактор

Отметим, что ошибки администрирования, которые были неизбежны в UNIX, в Windows NT, может быть, сделать и сложнее, но здесь есть другая особенность: пусть администратор знает, что ему нужно сделать, но не может – закрытость Windows NT не предоставляет ему таких гибких механизмов настройки, как UNIX.

Совместимость с другими операционными системами

Практически всегда требования совместимости или переносимости противоречат требованиям безопасности. К примеру, несмотря на то что для Windows NT была разработана специальная хэш-функция, она вынуждена поддерживать еще одну, которая берет свое начало от самых первых сетевых приложений Microsoft. Поэтому в криптографическом плане Windows NT часто оказывается слабее UNIX. И еще достаточно часто Windows NT приходится поддерживать решения, которые являются устаревшими с точки зрения безопасности.

Классификация пользователей и типовых сценариев атак в UNIX


Рассмотрим основные пути получения взломщиком несанкционированного доступа на UNIX-компьютере.

Как известно, в UNIX различают два вида пользователей - обычный пользователь, имеющий права на доступ в рамках своего идентификатора (UID, userid) и членства в группе (GID, group ID), и так называемый суперпользователь (root), имеющий неограниченные права (UID и GID у него равны специальному значению 0).

Каждый пользователь UNIX в текущий момент может быть членом только одной группы, поэтому он имеет один UID и один GID.

По мере развития ОС среди обычных пользователей выделились так называемые специальные пользователи. Они, как правило, имеют зарезервированные имена (например, guest, bin, uucp и т.п.) и номера UID и GID (например, меньше 100). Хотя в защите UNIX нет никакого особого механизма, отличающего специального пользователя от обычного, можно сказать, что первый имеет еще меньше прав, чем второй. В частности, специальным пользователям обычно нельзя зайти в систему нормальным образом. Самым интересным для нас примером специального пользователя является анонимный пользовательftp, который так и называется - anonymous, или ftp.

Наконец, условно к категории пользователей можно отнести человека, удаленно подключившегося (обычно по протоколу TELNET) к вашей машине и взаимодействующего с одной из программ-демонов (в современной терминологии такие программы называются серверами). Эти программы обычно стартуют при загрузке машины, чаще всего от имени суперпользователя, и постоянно активны как процессы, что позволяет пользователю в любой момент удаленно подключаться к ним, но при этом он не имеет никаких прав на чтение/запись информации на вашем компьютере и вообще не идентифицируется системой UNIX (команда who). Однако он может исполнять некоторые команды - не программы UNIX, а команды-запросы к тому демону, к которому он подключен. Так, подключившись по протоколу TELNET на 25-й порт, можно вводить команды SMTP-сервера, например mail или ехрn. Последний тип пользователя (назовем его псевдопользователь) оказывается чуть ли не самым важным для нашего рассмотрения, так как, не обладая никакими правами и обязанностями (кстати, от него не требуется аутентификации, учет по нему тоже не ведется), он взаимодействует с демонами, которые практически всегда имеют полномочия суперпользователя.

Итак, условно иерархию пользователей на UNIX-машине можно представить следующим образом:

  1.  Суперпользователь - неограниченные права.
  2.  Обычный пользователь - права с ограничениями, установленными для него суперпользователем.
  3.  Специальный пользователь - права с ограничениями, установленными ему суперпользователем для работы с конкретным приложением.
  4.  Псевдопользователь - нет никаких прав, он вообще не идентифицируется системой.

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

Таким образом, задачей хакера является несанкционированное получение привилегий более высокого уровня. (Заметим, что необязательно конечной целью хакера является получение именно привилегий суперпользователя - вирус Морриса, например, даже и не пытался сделать этого.) Эту задачу он, очевидно, может попытаться решить различными путями: либо получить сразу требуемые привилегии, либо постепенно наращивать их. Рассмотрим далее типовые сценарии получения привилегий и средства UNIX, делающие их возможными.

  1.  "Сразу в дамки" - имея привилегии третьего уровня, хакер получает права суперпользователя. Как уже отмечалось, такой фантастический прыжок возможен благодаря механизму демонов UNIX, отвечающих за обработку удаленных запросов. Так как эти демоны чаще всего выполняются от имени суперпользователя, то все, что нужно псевдопользователю, - это знать существующие "дыры" или ошибки в этих демонах (или найти самому), которые позволят эксплуатировать их нестандартным или запрещенным образом. Обычно это сводится к возможности удаленно выполнить от их имени любую команду на атакуемом хосте, какую конкретно - зависит от намерений и характера хакера. Иногда это может быть создание ошибочной ситуации, приводящей к аварийному завершению демона с выдачей дампа памяти на диск, содержащий весьма полезную для хакера информацию (например, кэшированные пароли). Типичными примерами уязвимых демонов были и остаются sendmail, ftpd, fingerd. Новые демоны (типа httpd или talkd) имеют гораздо меньшую историю эксплуатации, поэтому известно меньшее число их дыр и, соответственно, они перспективнее для поиска новых.

Такой сценарий был очень популярен на заре развития глобальных сетей, им пользовался вирус Морриса (см. в этой главе раздел "Червь"). Сейчас найти дыру такого рода в демонах очень трудно, хотя и можно. Хосты, допускающие атаку по этому сценарию, должны считаться катастрофически незащищенными.

  1.  "Из специального - в обычного, или выше". Этот сценарий очень похож на предыдущий, с тем исключением, что для хакера требуются начальные привилегии второго уровня (иначе говоря - запущен некоторый дополнительный сервис). Для четкого отличия таких атак от первого типа будем считать, что злоумышленник всегда проходит некую (пусть примитивную) идентификацию и, возможно, аутентификацию. Это не очень серьезное допущение, большинство хостов поддерживают некоторый удобный (например, анонимный ftp) или необходимый (типа tftp для удаленной загрузки бездисковых станций) сервис. Привилегии второго уровня могут дать возможность хакеру читать некоторые файлы (например, из ~ftp/pub) и, что самое главное, записывать свои файлы на ваш компьютер (в каталог типа ~ftp/incoming). С другой стороны, так как пользователь регистрируется на вашем компьютере, в его файлах-протоколах остается некоторая информация о подключении.

Типичным примером атаки по данному сценарию является атака, которая по протоколу tftp получает файл паролей /etc/passwd, а затем с его помощью подбираются пароли пользователей. Этот пример показывает, что необязательно желаемые привилегии будут получены немедленно, такие атаки могут лишь создать предпосылки для возможного их получения в дальнейшем.

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

  1.  "Маловато будет: из обычного - в суперпользователи". Этот сценарий, пожалуй, наиболее прост и широко распространен. Подавляющее большинство сообщений о так называемых "дырах" в UNIX относится именно к нему. Для его осуществления злоумышленник должен уже быть обычным пользователем (иногда говорят, что он имеет бюджет, или account) на том компьютере, который он собирается взламывать. Это, с одной стороны, серьезное ограничение на масштабность проникновения, с другой стороны - большинство утечек информации происходит через "своих", через подкупленного сотрудника, который пусть и не имеет больших полномочий, но уж входное имя на секретный компьютер у него есть.

Своей осуществимостью атаки данного рода обязаны очередному недостатку безопасности UNIX, который называется механизмом SUID/SGID-процессов. Не будем сейчас подробно останавливаться на необходимости и причинах появления такого механизма в этой операционной системе, отметим лишь, что многим системным программам (которые могут быть запущены любым, в том числе и непривилегированным пользователем) для правильного функционирования необходимы дополнительные полномочия. Приведем хрестоматийный пример изменения пользователем пароля самому себе. Не вызывает сомнения, что пользователь может иметь право на подобную операцию, однако в терминах UNIX это равносильно наличию права на запись в общий для всех пользователей файл /etc/ passwd, что, очевидно, недопустимо. Поэтому программа, осуществляющая смену пароля пользователя, выполняется не от имени запустившего его пользователя, а от имени суперпользователя (который, естественно, имеет право на запись в файл /etc/passwd). Для этого она обладает специальным атрибутом SUID/SGID, означающим смену идентификатора пользователя и/или группы у запущенного процесса.

Такая особенность UNIX, нарушающая, безусловно, исходную модель разграничения доступа, считалась бы "нехорошей", будь она всего у одной программы passwd. Однако оказывается, что этот атрибут необходим целому множеству программ, порой очень сложных. Отсюда ясно, что злоумышленник, найдя ошибку в одной из программ, обладающих атрибутом SUID root, может от ее (то есть супериользователя) имени произвести некоторые действия. Стандартным приемом считается копирование файла с командным интерпретатором (sh или csh) и установка на него атрибута SUID root. Таким образом, злоумышленник имеет под рукой стандартную программу sh, но все команды в ней он исполняет от имени суперпользователя.

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

Внимательный читатель заметил, что данный сценарий, вообще говоря, не является удаленной атакой по определению (и не будет подробно рассматриваться в примерах), но введен в классификацию из-за масштабности и фундаментальности - механизма SUID/SGID-процессов. Надо также помнить о том, что локальная атака легко становится удаленной, если злоумышленник подключается к компьютеру по протоколу TELNET - в этом смысле UNIX вообще не делает отличия локального пользователя от удаленного.

Поскольку любая система UNIX (использующая этот механизм) является уязвимой, то хосты, которые подвержены атакам такого класса, будем называть потенциально незащищенными.

  1.  "Он слишком многим доверял". Взлом производит обычно псевдопользователь, либо повышая свои полномочия до обычного, либо получая несанкционированный доступ к информации с использованием механизма доверия. Термин "доверие" (одна из важнейших брешей в безопасности UNIX) появился с тех пор, когда компьютерные системы строились на доверии друг другу. "Доверие" употребляется всякий раз, когда возникает ситуация, в которой хост может позволить пользователю (как правило, удаленному) применять локальные ресурсы без аутентификации или с явно недостаточной аутентификацией (без ввода пароля).

В UNIX существует много подсистем, использующих доверие. Наиболее простыми и часто применяемыми (даже против такого мастера, как Шимомура) из них являются так называемые r-службы (remote - удаленные). При наличии файлов .rhosts и hosts.equiv, содержащих имена хостов, доступ с них возможен без указания пароля. Аналогичным образом на механизме доверия построены, например, NFS-серверы, в управляющих (export) файлах которых можно разрешить доступ к некоему каталогу для группы пользователей, при этом удаленный пользователь никак не должен подтверждать свою причастность к данной группе. Как подчеркивал В.Венема в своей статье [22], "любая форма доверия может быть подменена, обманута или разрушена, особенно когда служба, получающая запросы на проверку клиента, расположена вне сервера или когда механизм доверия основан на слабой форме аутентификации".

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

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

Наиболее интересные или известные способы проникновения в UNIX-системы мы опишем далее в хронологическом порядке. 


 

А также другие работы, которые могут Вас заинтересовать

27583. Действие уголовного закона во времени. Обратная сила уголовного закона и её пределы. Действие уголовного закона в пространстве, его принципы (территориальный, гражданства, реальный, универсальный). Выдача лиц, совершивших преступление 42 KB
  Уголовный закон это нормативноправовой акт принимаемый высшими органами государственной власти и состоящий из взаимосвязанных норм определяющих основания и принципы уголовной ответственности а также какие деяния признаются преступлениями порядок назначения наказания за их совершение либо в определенных случаях указывающих условия для освобождения от уголовной ответственности и наказания. Законом усиливающем наказание является закон вводящий в санкцию статьи Особенной части более суровый вид наказания чем был предусмотрен. Усиление...
27585. Заведомо ложные показание, заключение эксперта или неправильный перевод (ст. 307 УК). Заведомо ложный донос (ст. 306 УК) и его отличие от клеветы (ст. 129 УК) 30.5 KB
  Объективная сторона данного преступления выражается в том что названные в ч. Комментируемое деяние становится квалифицированным если оно соединено с обвинением лица в совершении тяжкого или особо тяжкого преступления. Круг субъектов данного преступления определен в самой норме это свидетель потерпевший эксперт специалист и переводчик. Подозреваемый обвиняемый и подсудимый не могут быть привлечены к ответственности Субъективная сторона этого преступления характеризуется только прямым умыслом.
27587. Задачи и функции (охранительная и регулятивная) уголовного права. Принципы уголовного права 29 KB
  Задачи и функции охранительная и регулятивная уголовного права. Принципы уголовного права. Задачи уголовного права сформулированы в ст. Задачи уголовного права реализуются в процессе осуществления основных функций данной отрасли законодательства 1 Предупредительная регулятивная функция заключается в установлении наказания тем самым предупреждая граждан об ответственности в случае совершения преступления.
27589. Задержание лица, совершившего преступление. Основания для задержания и условия правомерности действий по его задержанию. Отличие причинения вреда при задержании преступника от необходимой обороны 29 KB
  Задержание лица совершившего преступление. В соответствии с законом не является преступлением причинение вреда лицу совершившему преступление при его задержании для доставления органам власти и пресечения возможности совершения им новых преступлений если иными средствами задержать такое лицо не представилось возможным и при этом причиненный вред не превысил пределов необходимости. 91 УПК РФ: 1 если лицо застигнуто при совершении преступления или непосредственно после его совершения; 2 потерпевшие или очевидцы укажут на данное лицо как...
27591. Законодательное определение и критерии невменяемости. Уголовная ответственность лиц с психическими расстройствами, не исключающими вменяемости (ограниченная вменяемость) 34.5 KB
  Лицо находящееся в состоянии невменяемости не подлежит уголовной ответственности и не является субъектом преступления ст. Состояние невменяемости устанавливается заключением судебнопсихиатрической экспертизы. Юридический психологический критерий невменяемости имеет два признака: интеллектуальный признак т.