Системные средства с открытым программным кодом: основы
Nmblookup
Мы говорили о необходимости знать NetBIOS-имена. Эта утилита поможет нам найти требуемую информацию.
Реализация. Посмотрим, что произойдет, если мы запустим nmblookup для 192.168.1.101
[jdoe@originix ~]$ nmblookup -A 192.168.1.101 Sending queries to 192.168.1.255 Looking up status of 192.168.1.101 received 8 names BADMAN <00> B <ACTIVE> MYWORKGROUP <00> <GROUP> B <ACTIVE> BADMAN <03> B <ACTIVE> BADMAN <20> B <ACTIVE> MYWORKGROUP <1e> <GROUP> B <ACTIVE> JOEUSER <03> B <ACTIVE> MYWORKGROUP <1e> <GROUP> B <ACTIVE> ..__MSBROWSE__. <01> <GROUP> B <ACTIVE> num_good_sends=0 num_good_receives=0
Не совсем то, на что мы надеялись. У нас есть несколько имен, но как определить, что есть что. В данном примере достаточно просто понять, что имя хоста, который нам нужен, это BADMAN. Вывод этой команды практически идентичен выводу команды nbtstat -A. Несколько позже мы поговорим о смысле каждого конкретного имени в разделе "NBTSTAT".
Если нам нужен другой способ поиска IP-адреса NetBIOS-имени, мы можем сделать следующее.
[jdoe@originix ~]$ nmblookup badman Sending queries to 192.168.1.255 192.168.1.101badman<00>
Если мы добавим флаг -S, nmblookup добавит туже самую информацию, которую выводил с использованием опции -A.
Nmblookup использует несколько разных методов в попытке установить соответствие между именами (в соответствии с конфигурацией smb.conf ). Доступны методы WINS или lmhosts, DNS или hosts, или широковещательный запрос ( broadcast ) (который требует, чтобы цель находилась в той же подсети)
Автоматизация процесса
Понятно, что можно многое сделать с общим ресурсом, который вы однажды обнаружили. Есть доступные программы-сканеры "smbscan", как для Windows, так и для Unix, которые просматривают заданные интервалы IP-адресов с целью поиска общих ресурсов и попыток соединения с ними. Эти утилиты просто используют рассмотренный выше метод в большем масштабе. Мы поговорим еще об этих утилитах в лекции ""Средства ревизии Windows"" .
NBTSTAT
Мы сделали обзор некоторых средств, с помощью которых можно соединиться с Windows-компьютерами или общими SMB-ресурсами. Но с точки зрения взломщика, ему необходимо собирать информацию о нахождении исследуемых систем и получать сведения о полномочиях для доступа. NBTSTAT может в этом помочь.
NBTSTAT - Windows-утилита, работающая из командной строки, которая может быть использована для отображения информации о NetBIOS-соединениях и таблицах имен. NBTSTAT может собирать такую информацию, как MAC-адреса, имена NetBIOS, доменные имена, и о других активных пользователях. Эта утилита разработана, как средство для системных администраторов; однако, как и многие сетевые утилиты, она может быть использована для темных целей, как мы скоро сможем убедиться.
Реализация
Набрав в командной строке Windows nbtstat, мы увидим информацию об использовании этой утилиты.
C:\WINDOWS\Desktop>nbstat Displays protocol statistics and current TCP/IP connections using NBT (NetBIOS over TCP/IP). NBTSTAT [-a RemoteName] [-A IP address] [-c] [-n] [-r] [-R] [-s] [S] [interval] ] -a (adapter status) выдает список таблицы имен удаленной машине по ее имени. -A (Adapter status) выдает список таблицы имен удаленной машине по ее IP-адресу. -c (cache) список содержимого кэша удаленной машины, включая ее IP-адрес. -n (names) список локальных NetBIOS-имен. -r (resolved) список имен, найденных через широковещательный запрос и WINS. -R (Reload) сбрасывает и перезагружает удаленную таблицу имен. -S (Sessions) выводит таблицу сессий, установленных с заданным IP-адресом. -s (sessions) выводит таблицу сессий, преобразуя заданные IP-адреса в имена хостов на основе содержимого файла hosts. -RR (ReleaseRefresh) отсылает на WINs пакеты Release names, а затем выполняет обновление. RemoteName имя удаленной машины. IP-address десятичное представление IP адреса. Interval обновление выведенной статистики. Промежуток в секундах между обновлением информации. Нажмите Ctrl-C для завершения обновления. C:\WINDOWS\Desktop>2.1.
Если мы работаем на локальной машине, то можем использовать NBTSTAT для мониторинга информации о нашей локальной сессии, проверять и сбрасывать кэш WINS-имен, делая все это в режиме реального времени, задав интервал (в секундах) в конце командной строки. Например, команда nbtstat -S 2 позволит осуществлять мониторинг текущих открытых NetBIOS-сессий, установленных между локальной системой и другими машинами в сети, и будет обновлять эту информацию каждые две секунды.
C:\WINDOWS\Desktop>nbtstat -S 2 NetBIOS Connections Table LocalName State In/Out Remote Host Input Output -------------------------------------------------------------- WINBOX <03> Listening WINBOX Connected in 192.168.1.102 10Kb 208Kb WINBOX Listening WINBOX <03> Listening
В этой таблице показано, что кто-то соединился с одним из наших общих ресурсов с адреса 192.168.1.102. Теперь мы можем отслеживать эти действия.
Более сильная сторона NBTSTAT, тем не менее, проявляется, когда его используют с опциями -a и -A для конкретного хоста. Посмотрим, какую информацию мы можем получить о нашем друге с адресом 192.168.1.102.
C:\WINDOWS\Desktop>nbtstat -A 192.168.1.102 NetBIOS Remote Machine Name Table Name Type Status ---------------------------------------------------------- MYCOMPUTER <00> UNIQUE Registered MYDOMAIN <00> GROUP Registered MYCOMPUTER <03> UNIQUE Registered MYCOMPUTER <20> UNIQUE Registered MYDOMAIN <1E> GROUP Registered MYUSER <03> UNIQUE Registered MYDOMAIN <1D> GROUP Registered ..__MSBROUSE__. <01> GROUP Registered MAC Address = 00-50-DA-E9-87-5F C:\WINDOWS\Desktop>
NBTSTAT вернул таблицу имен, содержащую список активных NetBIOS служб конкретного хоста. Однако прежде чем мы сможем извлечь что-нибудь полезное из этой таблицы, нам необходимо немного познакомится с протоколом NetBIOS.
Мы должны понять смысл имен, приведенных в списке, и рассмотреть комбинацию символов кодов NetBIOS (<##>) и значений типов. Во-первых, мы видим комбинацию <00> UNIQUE. Это NetBIOS-код означает, что служба выполняется и отображает список системных имен NetBIOS. Таким образом, мы можем понять, что имя системы - MYCOMPUTER.
В следующей строке стоит последовательность <00> GROUP. Это означает, что данная строка относится к рабочей группе или домену. В нашем случае запись относится к домену MYDOMAIN.
Третья строка содержит код <03>, который используется для обозначения службы передачи сообщений. И вновь в этой строке присутствует имя компьютера. Но если мы видим код <03> вместе с именем компьютера, это означает, что нам должен повстречаться этот код в нижней части таблицы в сопровождении другого имени. Как и предполагалось, в седьмой строке мы видим имя MYUSER. Это означает, что код NetBIOS <03> в таблице всегда встречается попарно (сопровождая как NetBIOS-имя компьютера, так и имя работающего пользователя). Вы можете действовать методом исключения, чтобы понять какое имя к чему относится.
Изучение значений NetBIOS -кодов в этой книге не предусмотрено, поэтому в таблице 2.2 приведено несколько наиболее общих кодов. За более подробной информацией можете обратиться по адресу: http://jcifs.samba.org/src/docs/nbtcodes.html.
Мы использовали NBTSTAT для получения некоторой весьма полезной информации. Мы знаем имя домена, к которому принадлежит машина, а также имя пользователя в системе. Все, что нам еще нужно - это пароль.
В отличие от немаршрутизируемого протокола NetBIOS, NBT - маршрутизируемый протокол. Воспользовавшись флагом -A, мы можем запустить NBTSTAT для анализа любой машины, имеющей выход в интернет и получить доступ к ее NBT-трафику, который пересылается через порты 137, 138, и 139.
Получение MAC-адресов
Еще одна разновидность информации, которую можно получит с помощью NBTSTAT - это аппаратные Ethernet-адреса (или MAC-адреса). В нашем случае IP-адресу 192.168.1.102 соответствует MAC-адрес 00-50-DA-E9-87-5F. MAC-адрес состоит из 48 бит информации и включает в себя 12 шестнадцатеричных чисел или шесть октетов. Первые (считая слева) 6 цифр (три октета) представляют собой серийный номер интерфейса конкретного поставщика оборудования. Первые шесть цифр считаются уникальным идентификатором производителя (Organizationally Unique Index OUI).
Ниже приведены несколько примеров наиболее распространенных кодов OUI.
- SUN MICROSYSTEMS INC. (08-00-20)
- The Linksys Group, Inc. (00-06-25)
- 3COM CORPORATION (00-50-DA)
- VMWARE, Inc. (00-50-56)
В нашем примере, система имела MAC-адрес 00-50-DA-E9-87-5F. Это означает, что производителем сетевого интерфейса была фирма 3COM (00-50-DA). MAC-адрес 08-00-20-00-07-E1 означает, что производителем сетевого интерфейса была компания Sun Microsystems (08-00-20), а MAC-адрес 00-06-25-51-CC-77 свидетельствует, что интерфейс сделан фирмой Linksys.
Выполненная в системе команда nbtstat показывает следующее.
C:\>nbtstat -A 192.168.1.47 NetBIOS Remote Machine Name Table Name Type Status ------------------------------------------------------ NT4SERVER <00> UNIQUE Registered Inet~Services <1C> GROUP Registered IS~NT4SERVER... <00> UNIQUE Registered NT4SERVER <20> UNIQUE Registered WORKGROUP <00> GROUP Registered NT4SERVER <03> UNIQUE Registered WORKGROUP <1E> GROUP Registered WORKGROUP <1D> UNIQUE Registered ..__MCBROUSE__. <01> GROUP Registered ADMINISTRATOR <03> UNIQUE Registered MAC Address = 00-50-56-40-4C-23
Эта машина называется NT4SERVER и имеет MAC-адрес 00-50-56-40-4C-23. По значению OUI (00-50-56) можно определить, что производителем сетевого интерфейса является компания VMware, Inc. VMware производит программное обеспечение, реализующее виртуальные машины для серверов и настольных компьютеров (см. лекцию ""VMware"" ), что говорит о том, что система, с которой мы общаемся, возможно, виртуальный NT-Сервер, запущенный под управлением другой операционной системы на хосте.
Поскольку Windows-машины передают эту информацию без ограничений в процессе работы в сети, они не фиксируют в системном журнале попытки получения этих данных. Брандмауэры и системы обнаружения вторжений настраиваются только на обнаружение и блокировку передачи этого трафика вовне.