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