Инвентаризация
Собрав полное "досье" на исследуемую сеть и "прощупав" систему ее защиты, хакер, скорее всего, на этом не остановится. Следующим шагом на пути к проникновению в систему будет получение информации о пользовательских учетных записях или плохо защищенных совместно используемых ресурсах. Для сбора такой информации существует много различных способов, которым дали общее название — инвентаризация (enumeration). В данной главе подробно рассматриваются основные методы, используемые в процессе инвентаризации.
Ключевое различие между ранее описанными методами сбора информации и методами инвентаризации состоит в уровне вмешательства в работу исследуемой сети. Процесс инвентаризации предполагает установку активного соединения с исследуемой системой и генерацию направленных запросов. Такая деятельность может (и должна!) регистрироваться исследуемой системой, поэтому мы покажем, на какие события необходимо обращать внимание, а также как по возможности блокировать попытки проведения инвентаризации вашей сети.
На первый взгляд большая часть информации, которую можно получить при инвентаризации, довольно безобидна. Однако сам факт утечки информации сквозь незакрытую брешь в системе защиты говорит о недостаточном внимании к безопасности со стороны администратора сети, что мы неоднократно проиллюстрируем на протяжении данной главы. Как правило, после получения реального имени пользователя или обнаружения совместно используемого ресурса подбор пароля или выявление изъянов в реализации протокола совместного использования ресурсов — только вопрос времени. Заблокировав все эти "дыры" в системе защиты (тем более, что сделать это несложно), вы сможете значительно снизить вероятность успеха попыток хакера.
Информация, которую взломщики могут получить при инвентаризации, можно разделить на следующие категории.
Сетевые ресурсы, в том числе открытые для совместного доступа.
Пользователи и группы пользователей.
Приложения и идентификационные маркеры (banner).
Методика инвентаризации в значительной степени зависит от операционной системы (именно поэтому так важна информация, полученная на этапе сканирования портов и установления типа и версии операционной системы, о чем шла речь в главе 2). Зная, какая информация может заинтересовать хакера и насколько хорошо ваша система ее скрывает, вы можете предпринять ответные меры, которые позволят защитить самые уязвимые участки.
Данная глава состоит из трех разделов, каждый из которых посвящен конкретной операционной системе — Windows NT/2000, Novell NetWare и UNIX. Мы не уделяем особого внимания системе Win 9x, поскольку рассматриваемые здесь приемы определения учетных записей и открытых совместно используемых ресурсов не имеют непосредственного отношения к ее однопользовательской архитектуре. Однако следует заметить, что все методы, пригодные для инвентаризации Windows NT/2000, прекрасно работают и в случае Win Эх. В каждом разделе приводятся сведения о методах, применяемых для получения перечисленных выше сведений, а также о том, как их выявлять и по возможности защищаться.
За все время своего существования
За все время своего существования 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.
После постановки задачи в целом самое время перейти к изучению средств и приемов, которые при этом могут использоваться.
что может попробовать осуществить удаленныйПервое, что может попробовать осуществить удаленный взломщик после скрупулезного изучения сети, — это получить представление об имеющихся в ней ресурсах. Сначала мы рассмотрим инвентаризацию ресурсов NetBIOS, а затем перейдем к инвентаризации служб TCP/IP, которые в большинстве случаев функционируют в системах NT/2000.
Инвентаризация NetBIOS
Инвентаризация доменов NT/2000 с помощью команды net view
Получение дампа таблицы имен NetBIOS с помощью команд
nbtstat и nbtscan
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, и вы поймете, что именно мы хотели сказать.
Инвентаризация контроллеров доменов
Инвентаризация совместно используемых ресурсов NetBIOS с помощью команды net view и утилит NTRK
Инвентаризация совместно используемых ресурсов NetBIOS с помощью утилиты DumpSec (ранее DumpACL)
Поиск совместно используемых ресурсов с помощью утилит Legion и NAT
Другие средства инвентаризации сети NT/2000
Универсальное средство инвентаризации: утилита
еnum
Инвентаризация NetBIOS: контрмеры Инвентаризация SNMP NT/2000
Рис. 3.3. Утилита IP Network Browser компании Solar Winds позволяет получить подробную информацию о компьютере, на котором запущен агент SNMP. Для этого достаточно правильно указать строку доступа (community string). Б данном примере показана система, использующая заданную по умолчанию строку доступа public
Контрмеры: защита протокола SNMP
Перенос зоны DNS Win 2000
Блокирование переноса зоны DNS Win 2000 |
и совместно используемых ресурсов совсемЗнать имена компьютеров и совместно используемых ресурсов совсем неплохо, однако настоящим праздником для хакера является получение имен пользователей. С того момента, как получено такое имя, можно считать, что 50% работы по взлому учетной записи выполнено. Некоторые специалисты считают, что на самом деле после получения имени пользователя остается затратить гораздо меньше усилий, поскольку распространенной практикой является использование простых паролей (и, вообще говоря, имен учетных записей!).Мы снова попробуем открыть нулевой сеанс (который уже упоминался в этой главе) для получения начального доступа и попробуем воспользоваться различными приемами инвентаризации. Кроме того, вы узнаете, как извлечь информацию о пользователях с использованием службы SNMP и службы активного каталога Windows 2000.
Инвентаризация пользователей через протокол NetBIOS
Идентификация учетных записей с помощью утилит
user2sid/sid2user
Инвентаризация пользователей через протокол NetBIOS: контрмеры
Инвентаризация пользовательских учетных записей с помощью протокола SNMP
Инвентаризация службы активного каталога .'#." Win 2000 с помощью утилиты
ldp
Инвентаризация службы активного каталога: контрмеры
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 перед тем, как перейти на испопьзование спужбы активного катапога. Это позвонит забпокировать возможность случайного просмотра информации об учетных записях. |
Инвентаризация приложений и идентификационных маркеров
Выше были рассмотрены вопросы инвентаризации сети и учетных записей пользователей. При этом для достижения требуемого результата применимы различные средства, встроенные в саму операционную систему. А как насчет получения списка приложений, установленных на компьютере NT/2000? Подобная информация способна значительно расширить знания об исследуемой системе. Процесс подключения к удаленным приложениям и наблюдение за результатами их использования часто называется сбором маркеров (banner grabbing) и может оказаться неожиданно информативным для взломщиков. Если говорить кратко, то в процессе сбора маркеров можно идентифицировать программное обеспечение, запущенное на сервере, и его версию. А этого во многих случаях будет вполне достаточно, чтобы начать поиск уязвимых мест.
Основы процесса сбора маркеров: утилиты telnet и netcat
Испытанным и надежным инструментом инвентаризации идентификационных маркеров и приложений как в мире NT, так и в мире UNIX, является утилита telnet. Установив с ее помощью соединение с известным портом исследуемого сервера, нажмите несколько раз клавишу <Enter> и посмотрите полученный результат.
C:\>telnet www.corleone.com 80 Если вам нужен инструмент для более тщательных исследований, попробуйте "швейцарский армейский нож" протокола 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
НТТР/1.1 400 Bad Request Сбор идентификационных маркеров NT/2000: контрмеры
Защита от такого рода попыток проведения инвентаризации требует от администратора некоторой доли изобретательности. Однако мы не можем определить с достаточной степенью определенности, насколько важна для взломщиков информация о приложениях и службах, работающих в вашей сети.
Инвентаризация системного реестра NT/2000
Другой механизм получения информации о приложениях NT/2000 подразумевает получение копии содержимого системного реестра исследуемого компьютера. Практически все современные приложения, корректно установленные на компьютере NT, оставляют более или менее заметные "следы" в системном реестре. Требуется лишь знать, где производить поиск требуемой информации. Кроме того, злоумышленник, получивший доступ к системному реестру, может почерпнуть из него немало сведений о пользователях и параметрах конфигурации. Запасшись изрядной долей терпения, в лабиринте ульев можно обнаружить сведения, которые позволят получить доступ к нужной информации. К счастью, в системе NT/2000 доступ к системному реестру по умолчанию разрешен лишь администраторам (по меньшей мере в ее версии для сервера). Таким образом, описываемый ниже метод обычно неприменим при использовании анонимных нулевых соединений. Однако из этого правила существует одно исключение, когда в ключе
HKLM\System\Current-ControlSet\Control\SecurePipeServer\ Winreg\AllowedPaths заданы другие параметры, открытые для доступа посредством нулевых сеансов. В этом случае по умолчанию доступ разрешен к ключу HKLM\software\Microsoft\windowsNT\ CurrentVersion.
С:\> regdmp -m \\192.168.202.33
Контрмеры против сбора идентификационных маркеров и инвентаризации системного реестра
Убедитесь, что системный реестр заблокирован и к нему нельзя получить доступ с использованием удаленных соединений. Для этого необходимо проверить возможность удаленного доступа к ключу HKLM\System\CurrentControlSet\SecurePipe Servers \winreg и всем связанным с ним подключам. Если этот ключ присутствует, то по умолчанию удаленный доступ к реестру разрешен лишь администраторам. Этот ключ по умолчанию присутствует только в версии Win NT/2000, предназначенной для сервера, но не для рабочей станции. В дополнительных подключах задаются определенные пути системного реестра, разрешающие доступ независимо от политики обеспечения безопасности, принятой для ключа winreg. Более подробная информация об этом приведена в статье Q155363 базы данных компании Microsoft, которую можно найти по адресу
http://search.support.microsoft.com. Кроме того, воспользуйтесь каким-нибудь хорошим средством, например программой DumpSec, и удостоверьтесь в отсутствии утечки информации.
|
Позвольте сценариям выполнить всю работу
Вы подробно познакомились с ручными методами, которые взломщик может предпринять для инвентаризации сети, пользователей и получения данных о приложениях. Вполне понятно, что многие после прочтения материала, приведенного выше, забеспокоились и сразу же приступили к тестированию своих сетей на предмет поиска уязвимых мест. Однако это может оказаться трудноразрешимой задачей, если ваша сеть большого размера с множеством серверов. К счастью, большинство из описанных в данном разделе средств можно запускать из командной строки и, следовательно, легко автоматизировать их использование с помощью простых командных сценариев или других приемов.
Далее приводится простой пример сценария для команд 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, как описано в главе 5, либо в систему Win 2000, как вы увидите в главе 6.
Инвентаризация Novell
Система Windows NT/2000 не одинока в наличии такого "порока", как нулевой сеанс. У сетевой операционной системы Novell NetWare имеется еще более серьезная проблема. Она состоит в том, что NetWare практически не заботится о защите информации, предоставляя ее кому угодно без какой-либо аутентификации сервером или деревом. Серверы NetWare 3.x и 4.x (с включенным контекстом Bindery (связки)) имеют так называемый изъян "присоединения" (attach), позволяющий любому желающему получить информацию о серверах, деревьях, группах, принтерах и пользовательских именах без регистрации на каком-либо сервере. В данном разделе мы покажем на практике, как это сделать, а затем дадим рекомендации по устранению этих недостатков.
Сетевое окружение
Первый этап инвентаризации сети NetWare состоит в получении данных о соединенных друг с другом серверах и деревьях. Это можно сделать различными способами, однако проще всего воспользоваться средством Network Neighborhood систем Windows 95/98/NT. Эта удобная утилита просмотра сетевых ресурсов обеспечивает возможность опрашивания всех серверов NetWare и деревьев NDS, с которыми имеется физическое соединение (рис. 3.7), хотя необходимо отметить, что вы не сможете просмотреть структуру дерева, не зарегистрировавшись в самом дереве. Конечно, данный факт сам по себе не угрожает информации, однако он показывает, что если каждый шаг можно выполнить столь просто, то и вся дистанция не покажется такой уж сложной.
Рис. 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 позволяет получить информацию о томе
Просмотр дерева с помощью утилиты 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.
Инвентаризация 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
Сейчас в мире 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.
[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
Обнаружить и устранить подобную утечку информации очень просто. Достаточно не запускать демон 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
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)
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
Конечно, самым старым и излюбленным приемом хакеров 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
Инвентаризация приложений и идентификационных маркеров
Как и любой другой сетевой ресурс, приложения должны иметь возможность обмениваться друг с другом информацией по сети. Одним из самых популярных протоколов, разработанных для обеспечения этого процесса, является протокол 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
Утилиту, аналогичную 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
Хотя лучший инструмент 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-серверов, на которых содержится аналогичная информация.
Резюме
Если не считать времени, информация — это наиболее мощное оружие, которое может попасть в распоряжение хакера. К счастью, эта же информация может пригодиться и при обеспечении безопасности. В этой главе вы познакомились с несколькими источниками утечки информации, используемыми хакерами, а также узнали о некоторых способах устранения подобных проблем, вкратце перечисленных ниже.
Фундаментальная архитектура операционных систем. Протоколы .SMB, CIFS и NetBIOS системы Windows NT весьма упрощают задачу получения информации о пользователях, предоставляемых ресурсах файловых систем и приложениях. Ограничьте доступ к TCP-портам с номерами 139 и 445, а также установите значение параметра RestrictAnonymous системного реестра, как описано в начале данной главы. Не забывайте также о том, что в системе Win 2000 устранены далеко не все недостатки. Напротив, в ней появились новые возможности получения ценной информации от службы активного каталога. То же самое относится и к архитектуре системы Novell NetWare. Эта система также позволяет получить подобную информацию любому желающему, так что для обеспечения безопасности нужно прилагать определенные усилия.
SNMP. Этот протокол специально разрабатывался для предоставления как можно более подробной информации и облегчения управления сетями масштаба предприятия. Именно поэтому неправильно настроенный агент SNMP, использующий строки доступа по умолчанию, например public, может выдать несанкционированному пользователю очень много не подлежащих разглашению данных.
Приложения. Утилиты finger и rpcbind являются хорошими примерами программ, которые предоставляют слишком подробную информацию. Кроме того, многие приложения по первому требованию неосмотрительно предъявляют идентификационные маркеры, содержащие номер версии и название компании-разработчика. Запретите использование приложений, подобных finger, используйте защищенную службу RPC, или TCP-оболочки. И наконец, узнайте у разработчика, как отключить режим предоставления идентификационных маркеров!
Брандмауэр. Многие источники утечки информации можно выявить с помощью брандмауэра. Это вовсе не означает, что при наличии в сети брандмауэра можно не уделять внимания вопросам защиты на уровне отдельных компьютеров. Брандмауэр позволяет значительно снизить риск проникновения в сеть лишь при условии комплексного подхода к обеспечению безопасности.