Требуется вывести таблицу имен netbios локального компьютера

Обновлено: 07.07.2024

NetBIOS (Network Basic Input/Output System, Сетевая Базовая Система Ввода/Вывода) - это интерфейс для работы в локальных сетях, разработанный фирмой Sytek для компании IBM в 1983 году. Как гласит RFC1001: NetBIOS defines a software interface not a protocol. There is no "official" NetBIOS service standard . И всё же NetBIOS, по моему скромному мнению, и интерфейс и протокол, поэтому, с вашего позволения, назовем его стандартом (не смотря на то, что официально он так и не был полностью стандартизован). Довольно часто NetBIOS называют сетевым протоколом, но это не совсем корректно, поскольку NetBIOS реализован в Windows сразу в нескольких компонентах операционной системы :: в виде интерфейса в библиотеках пользовательского режима и режима ядра, и в виде модуля в стеке сетевого протокола. Интерфейс NetBIOS представляет из себя стандартный набор для разработки приложений (API), протокол NetBIOS функционирует на транспортном/сеансовом уровне стека и используется для передачи данных, управления сеансом и прочих нужд.

Для чего же в своё время потребовался NetBIOS? Для осуществления возможности взаимодействия станций в небольших (локальных) сетях. Что включает в себя возможность взаимодействия по сети? Это назначение станции сетевого имени, по которому она будет доступна в сети, это возможность найти станцию в сети по её имени, возможность соединиться с ресурсами станции и начать с обмениваться с ними данными. Это и возможность получить список сетевых станций, которые подключены к сегменту сети и многое другое, что может быть определено термином "сетевое взаимодействие".

Особенностью NetBIOS является возможность работы "поверх" основных сетевых протоколов, таких как IPX , NetBEUI и TCP/IP . В своё время реализация протокола NetBIOS в Windows была существенно переработана и ориентирована на использование протокола TCP/IP (как наиболее перспективного), получив новое название “NetBIOS over TCP/IP” (NetBIOS через TCP/IP). NetBIOS через TCP/IP имеет псевдоним NetBT (NBT). NetBIOS через TCP/IP представляет собой промежуточный уровень между NetBIOS и TCP/IP и создан для того, чтобы приложения на базе NetBIOS могли работать в сетях TCP/IP, то есть предназначен для отображения имен NetBIOS в IP-адреса и, наоборот. Как мы уже упоминали, NetBIOS разрабатывался на заре становления сетевых технологий, и с того времени часто модифицировался, однако параллельно с ним создавались и другие стандарты сетевого взаимодействия, которые существенно опережали NetBIOS по функционалу. На данный момент NetBIOS считается устаревшим стандартом и не рекомендуется к использованию, заместо него, в части организации передачи данных по сети, Microsoft предлагает использовать сокеты (windows sockets), почтовые каналы (mailslots), именованные каналы (named pipes). Для оставшегося функционала, то есть для сервисных целей разработан новый протокол LLMNR (через PNRP):

NetBIOS через TCPIP не поддерживает IPv6. Поэтому для целей организации взаимодействия в локальном сетевом сегменте без участия опорных серверов (DNS/WINS) с использованием IPv4/IPv6 разработан протокол LLMNR/PNRP.

Однако, не смотря на устаревание NetBIOS, поддержка его сохранена и по сей день, код NetBIOS через TCP/IP всё еще присутствует в составе последних версий Windows. Причиной столь огромной популярности стандарта является тот факт, что до определенного времени NetBIOS оставался основным интерфейсом программирования сетевых приложений, и с использованием функций NetBIOS было написано огромное количество разнообразного программного обеспечения.
NetBT является неотъемлемой частью сетевого стека TCP/IP ОС Windows и инсталлируется вместе с протоколом TCP/IP. Части функционала NetBT встречаются в коде библиотек, переменных окружения ( %COMPUTERNAME% , %USERDOMAIN% ), коде некоторых современных антивирусных продуктов, почтовых серверов, баз данных. NetBIOS до сих пор используется в алгоритме добавления рабочей станции в домен, в процедурах работы с сетевым окружением, подключения сетевых дисков. Об исключительном значении протокола NetBIOS через TCP/IP говорит уже и тот факт, что штатными средствами самой ОС протокол NetBIOS может быть только отключен, но никак не удален. Удаление же его возможно только вместе с удалением протокола TCP/IP.

До определенного времени считалось актуальным высказывание “Сеть Windows не живет без NetBIOS”, но начиная с версии Windows 2000, стало возможным избавиться от использования соединений на основе NetBIOS через TCP/IP и перейти исключительно на соединения по протоколу SMB (Server Message Block). Подобные соединения еще называются TCP/IP Direct Hosting (или DirectSMB ). В соединениях на основе SMB отсутствует начальная стадия установки сессии TCP под названием “NetBIOS session setup” и используется единственный порт TCP/445. SMB - это простой протокол удаленной работы с ресурсами (дисками, устройствами) компьютера. Удивительно, но SMB долгое время довольно тесно взаимодействовал с NetBIOS в части именования и разрешения имен, а так же требовал наличия установленной сессии NetBIOS для взаимодействия между узлами (работал поверх NetBIOS). Теперь же SMB представляет собой самостоятельный протокол, получивший дальнейшее развитие в виде стандарта под названием CIFS, полностью независимого от NetBIOS.

Службы NetBIOS

Далее не будет лишним посмотреть, какие же сетевые порты используются сервисами NetBIOS:

NETBIOS-NS (NetBIOS Name Service) - Служба имен NetBIOS . Сервис обеспечивает работу с именами: запрос на регистрацию имени, запрос на регистрацию имени группы, запрос на разрегистрацию (удаление) имени, проверку имени на существование.

NETBIOS-DGM (NetBIOS Datagram Services) - Служба дейтаграмм NetBIOS . Сервис обеспечивает рассылку дэйтаграм: адресную передачу к одной станции, широковещательную рассылку ко всем станциям, многоадресную рассылку к [определенным] станциям (с одним групповым именем).

Подобная структура отражает требование RFC 1001, RFC 1002, регламентирующее наличие трех базовых сервисов, которые реализуют эмуляцию NetBIOS в системе Windows.

Реализация NetBIOS

NetBIOS через TCPIP реализован в качестве драйвера уровня ядра netbt.sys , поддерживающего специализированный интерфейс TDI (общий интерфейс для взаимодействия с драйверами, который позволяет сервисам взаимодействовать с транспортными протоколами). Все сервисы, которые работают с NetBT (рабочая станция, сервер, браузер, сетевой вход в систему) используют TDI напрямую. Пользовательские приложения используют стандартный WinAPI (функции, вызовы), поддерживаемый библиотекой netapi32.dll , которая, в свою очередь, является простой "заглушкой" и перенаправляет вызовы к функциям netbios.dll . Функции библиотеки netbios.dll передают запросы к драйверу уровня ядра под названием NetBIOS-эмулятор ( %SystemRoot%\System32\Drivers\netbios.sys ), который транслирует команды NetBIOS, переданные приложением, в команды TDI-интерфейса.

Использование NetBIOS через TCP/IP

Принципы работы NetBIOS

Собственно, как же работает NetBIOS? Я попытаюсь дать, пока что, собственное объяснение принципов работы стандарта. Все мы понимаем, что для того, чтобы станции могли взаимодействовать по сети, они должны подчиняться определенным правилам, выполнять предписанные действия на различных этапах работы. Этими этапами являются: заявление о себе (регистрация), попытка взаимодействия (обнаружение имен, установление сеанса, управление сеансом), отключение себя (освобождение имени). Поэтому, все узлы, использующие NetBIOS через TCP/IP, применяют регистрацию, обнаружение и освобождение имен, а так же многие другие методы, предоставляемые стандартом. Давайте рассмотрим их детальнее:

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

Имя NetBIOS

Одной из основных целей разработки NetBIOS являлось создание простого интерфейса, который давал бы возможность пользователям назначать станциям символьные имена вида MyComputer . Очевидно, что без подобных имен нам сложно обойтись, поскольку именно легкие имена позволяют человеку "узнать" (однозначно идентифицировать) ресурс, к которому он хочет обратиться по сети. Программам то всё-равно, вместо имен они могут использовать любые идентификаторы, однако человеку удобнее работать именно с фонетическими, понятными и легко запоминающимися маркерами - именами. В качестве имени NetBIOS используется простое одноранговое (“плоское”) имя, без какой-либо иерархической структуры (в противоположность DNS). Подобная простота и отсутствие иерархии имени имеют и оборотную сторону - имена должны быть уникальными.

Первые 15 - собственно имя, 16й - тип ресурса или суффикс (значение в диапазоне 00-FF, шестнадцатеричное представление). NetBIOS имя и имя компьютера ( hostname ) совпадают по первым 15 символам. Хранится это имя в параметре реестра с именем hostname , который располагается в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters .
С развитием сетевых технологий логическая структура сетей усложнялась, и помимо станций появились такие понятия как "рабочая группа" и "домен". Пришло осознание того, что ресурсы бывают разнотипными, а имя может быть присвоено не только станции. Опираясь на новые данные, было введено понятие "тип ресурса", который предназначался для логического разделения ресурсов по назначению, это позволило присваивать одно и то же имя нескольким ресурсам одновременно.

NetBIOS имя закрепляется не за станцией, как многие привыкли думать, а за ресурсом и только за ним.
  • Уникальное (Unique, U) - к этому имени может быть привязан только один адрес IP;
  • Групповое (Group, G) - к этому имени не привязан единственный адрес, имя может содержать множественные IP-адреса; На запрос WINS-клиента об адресе всегда возвращается limited broadcast address 255.255.255.255;
  • Группа Интернет (Internet Group, Special Group, I) - к этому имени может быть привязано до 25 адресов; для каждого адреса хранится свой TTL. Используется для управления именами домена в WinNT;
  • Доменное имя (Domain Name, D) - к этому имени может быть привязано множество адресов;

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

Полный перечень типов общих ресурсов NetBIOS

У имен NetBIOS имеется следующий нюанс - все имена длиной менее 15 символов дополняются пробелами (код символа 20 в шестнадцатеричном представлении), а в некоторых случаях символами BE либо BF . Поскольку к работе над NetBIOS подключались многие разработчики, то и типов общих ресурсов существует великое множество, однако в таблице я привожу только те типы, которые используются Microsoft.

Тип ресурса можно посмотреть командой nbtstat -a <имя_компьютера> :

    Утилита nbtstat.exe имеется в составе всех версий операционных систем семейства Windows и используется для получения информации о подключениях с использованием протокола NETBIOS (Network Basic Input/Output System - базовая сетевая система ввода/вывода) через TCP/IP или NBT ( N etwork B IOS over T CT/IP). Протокол NETBIOS - один из старейших протоколов, разработанный фирмой Sytek Corporation по заказу корпорации IBM в 1983 году. Предназначался для передачи данных в пределах одного логического сегмента сети и, в основном, использовался в сетях IBM (IBM PC LAN), Novell NetWare, Microsoft Windows for Workgroups. Особенностью NetBIOS является возможность его работы поверх разных протоколов, в том числе и протокола TCP , Сам NetBIOS не поддерживает выполнение файловых операций. Эта функция возлагается на протоколы нижележащих уровней, а NetBIOS обеспечивает только связь с этими протоколами и программный интерфейс для прикладного программного обеспечения - NetBIOS API . Для расширения возможностей NetBIOS , компанией MicroSoft для операционной среды Windows, был разработан протокол WINS , предназначенный для обеспечения регистрации и проверки сетевых имен. Определение или изменение NETBIOS-имен может выполняться либо с помощью серверов Windows Internet Name Service ( серверов WINS ), либо с использованием широковещательных рассылок, когда сервер WINS отсутствует. С точки зрения протокола NETBIOS, узлы могут быть следующих типов:

b-node (b) - Использует только широковещательную регистрацию и просмотр имен.

p-node (p) - использует только соединения точка-точка для просмотра и регистрации имен.

Компьютеры под управлением Windows представляют собой узлы h-node или узлы смешанного типа, использующие WINS (NBNS) сервер для регистрации и просмотра имен, и используют широковещательные запросы, если сервер не доступен. Тип узла отображается по команде ipconfig /all как "Гибридный"(Hybrid) :

Настройка протокола IP для Windows
Имя компьютера . . . . . . . . . : WS01
Основной DNS-суффикс . . . . . . :
Тип узла. . . . . . . . . . . . . : Гибридный

Формат командной строки:

NBTSTAT [-a Узел] [-A IP-адрес] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [интервал] ]

Параметры командной строки:

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

-A IPAddress - то же самое, что и в предыдущем случае, но вместо имени удаленного компьютера используется его IP-адрес.

-c - Вывод буфера имен удаленных узлов, включая адреса IP. Отображает кэш имен NetBIOS и соответствующих им IP-адресов.

-r - Вывод имен, определенных с помощью рассылки и WINS. Отображает статистику разрешения NetBIOS-имен. На компьютерах под управлением Windows XP и старше, выдается раздельная статистика о разрешении имен с помощью широковещательной рассылки и с помощью сервера имен WINS.

-RR - Отсылка пакетов освобождения имени (Name Release) на WINS-сервер, а затем запуск обновления (Refresh). Выполняется очистка кэш NetBIOS - имен на локальном компьютере и их повторная регистрация с использованием сервера WINS.

-s - Вывод таблицы сеансов с преобразованием IP-адресов в имена NETBIOS. Отображает статистику NetBIOS - сессий между клиентом и сервером и NetBIOS-имена удаленных узлов.

-S - Вывод таблицы сеансов с IP-адресами. Отображает статистику сессий между клиентом и сервером и IP-адреса удаленных узлов.

Interval - интервал обновления отображаемых данных в секундах. Для прекращения автоматического обновления используется комбинация клавиш CTRL+C

/? - отобразить справку по использованию NBTSTAT.

Пример отображаемой информации:

Беспроводное сетевое соединение 6:
Адрес IP узла: [192.168.1.3] Код области: []

        Локальная таблица NetBIOS-имен

00 - Standard Workstation Service
03 - Messenger Service (WinPopup)
06 - RAS Server Service
1B - Domain Master Browser Service (associated with primary domain controller)
1D -Master Browser name
1F - NetDDE Service
20 - Fileserver (including printer server)
21 - RAS Client Service
BE - Network Monitor Agent
BF - Network Monitor Utility
В данном примере, компьютер WS01 является стандартной рабочей станцией и файловым сервером ( типы 00 и 20).
Для групповых ресурсов также существуют свои типы записей:
00 - Standard Workstation group
1C - Logon Server
1D - Master Browser name
1E - Normal Group name (used in browser elections)
20 - Internet Group name (administrative)
01-__MSBROWSE__ (оповещение о других Master Browser)
В приведенном примере, рабочая станция WS01 является членом стандартной рабочей группы GROUP3 ( тип 00), может участвовать в выборах главного обозревателя компьютеров (тип 1E) и является обозревателем группы ( тип 1D) и главным обозревателем ( тип 01).

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

nbtstat -RR - выполнить очистку и перерегистрацию NetBIOS-имен на локальном компьютере.

Этичный хакинг и тестирование на проникновение, информационная безопасность

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

Это имя компьютера в локальной сети можно использовать как полную альтернативу локальному IP адресу:

  • обращаться к совместным ресурсам (сетевые папки и принтеры)
  • обращаться к запущенным сетевым службам (веб-сервер, FTP и др.)

При этом не требуется какая-либо настройка DNS или файла hosts, поскольку такое распознавание имён обеспечивается NetBIOS. Мы уже сталкивались с NetBIOS, а точнее с одной из трёх его служб — NBT-NS — в статье «Взлом сетевой аутентификации Windows». Это одна из служб, которая эксплуатировалась для выполнения атаки.

То есть, NetBIOS имеет важное значение для Windows, а также для изучения устройства Windows, анализа сетевой активности Windows и в вопросах безопасности локальных сетей и компьютеров с Windows.

Что такое NetBIOS

NetBIOS (Network Basic Input/Output System) — протокол для работы в локальных сетях на персональных ЭВМ типа IBM/PC, разработан в виде интерфейса, который не зависит от фирмы-производителя. Был разработан фирмой Sytek Corporation по заказу IBM в 1983 году. Он включает в себя интерфейс сеансового уровня (англ. NetBIOS interface), в качестве транспортных протоколов использует TCP и UDP.

  • широковещательные («b») узлы;
  • узлы точка-точка («p»);
  • узлы смешанного типа («m»).

IP-адрес может ассоциироваться с одним из указанных типов. B-узлы устанавливают связь со своим партнёром посредством широковещательных запросов. P- и M-узлы для этой цели используют netbios сервер имён (NBNS) и сервер распределения дейтаграмм (NBDD).

  • регистрацию и проверку сетевых имён;
  • установление и разрыв соединений;
  • связь с подтверждением доставки информации;
  • связь без подтверждения доставки информации;
  • поддержку управления и мониторинга драйвера и сетевой карты.

Службы NetBIOS

NetBIOS предоставляет три разных службы:

  • Служба имён (NetBIOS-NS) для регистрации и разрешения имён.
  • Служба рассылки дейтаграмм (NetBIOS-DGM) для связи без установления соединения.
  • Служба сеанса (NetBIOS-SSN) для связи с установлением соединения.

Служба имён (NetBIOS-NS)

Примитивы службы имён, предлагаемые NetBIOS:

  • Add name — регистрирует имя NetBIOS.
  • Add group name — регистрирует NetBIOS-имя группы.
  • Delete name — отменяет регистрацию имени NetBIOS или имени группы.
  • Find name — поиск имени NetBIOS в сети.

Разрешение имён NetBIOS не поддерживается Microsoft для Интернет-протокола версии 6 (IPv6).

Служба рассылки дейтаграмм (NetBIOS-DGM)

Режим датаграммы без установления соединения; Приложение отвечает за обнаружение и восстановление ошибок. В NBT служба дейтаграмм работает на UDP-порту 138.

Примитивы службы дейтаграмм, предлагаемые NetBIOS:

Служба сеанса (NetBIOS-SSN)

Примитивы службы сеанса, предлагаемые NetBIOS:

  • Call — открывает сеанс для удалённого имени NetBIOS.
  • Listen — прослушивание попыток открыть сеанс с именем NetBIOS.
  • Hang Up — закрыть сеанс.
  • Send — отправляет пакет на компьютер на другом конце сеанса.
  • Send No Ack — как Send, но не требует подтверждения.
  • Receive — ожидание поступления пакета от отправки на другом конце сеанса.

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

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

Как соотносится Имя NetBIOS с именем хоста в Интернете

Когда NetBIOS работает в сочетании с интернет-протоколами (например, NBT), каждый компьютер может иметь несколько имён: одно или несколько имён службы имен NetBIOS и одно или несколько имён хостов Интернета.

Имя NetBIOS

Имена NetBIOS представляют собой последовательность буквенно-цифровых символов. Следующие символы явно недопустимы: \/:*?"<>|. Начиная с Windows 2000, имена NetBIOS также должны соответствовать ограничениям на DNS-имена: они не могут состоять исключительно из цифр и дефиса ("-"), а символ точка (".") не могут отображаться в качестве первого или последнего символа. Начиная с Windows 2000, Microsoft не рекомендует включать любые символы точка (".") в имена NetBIOS, так что приложения могут использовать присутствие точки, чтобы отличить доменные имена от имён NetBIOS.

Файл Windows LMHOSTS предоставляет метод разрешения имён NetBIOS, который можно использовать в небольших сетях, в которых не используется сервер WINS. О файле LMHOSTS далее.

Интернет имя хоста

NetBIOS-имя Windows-машины не следует путать с именем хоста компьютера в Интернете (при условии, что компьютер также является хостом Интернета, а не узлом NetBIOS, что не обязательно должно иметь место). Как правило, компьютер, на котором запущены интернет-протоколы (будь то компьютер с Windows или нет), обычно имеет имя хоста (также иногда называемое именем компьютера). Первоначально эти имена хранились в файле hosts и предоставлялись им, но сегодня большинство таких имён являются частью иерархической системы доменных имен (DNS) (смотрите Введение в DNS терминологию, компоненты и концепции).

Обычно имя хоста компьютера Windows основывается на имени NetBIOS плюс первичный DNS-суффикс, которые оба задаются в диалоговом окне «Свойства системы». Также могут существовать суффиксы для конкретного соединения, которые можно просмотреть или изменить на вкладке DNS в Панели управления → Сеть → TCP / IP → Дополнительные свойства. Имена хостов используются такими приложениями, как telnet, ftp, веб-браузеры и т. д. Чтобы подключиться к компьютеру, использующему протокол TCP/IP, используя его имя, имя хоста должно быть преобразовано в IP-адрес, обычно DNS-сервером. (Также возможно работать со многими приложениями на основе TCP/IP, включая три, перечисленные выше, используя только IP-адреса, но это не норма.)

Как обнаружить NetBIOS

Можно запустить обычное сканирование TCP портов в локальной сети с помощью nmap:

И среди результатов можно обнаружить открытый TCP порт 139:


Если нас интересует только службы NetBIOS, то достаточно искать UDP порты 137 и 138 и TCP порты 137 и 139, воспользуемся Рецептами nmap и составим такую команду:

Плюс такого подхода в том, что сканирование происходит намного быстрее и дополнительно найдены открытые порты UDP.


Можно воспользоваться ещё одним рецептом Nmap для сбора банеров служб, для этого добавим опции -sV --script=banner:

Благодаря последней команде мы дополнительно узнали:

  • используемую рабочую группу (WORKGROUP)
  • операционную систему для некоторых устройств (Windows 10)
  • некоторые открытые порты связаны с Samba smbd 3.X - 4.X

Дополнительно можно воспользоваться скриптами Nmap (NSE) — я нашёл 3 скрипта, которые связаны с NetBIOS:

nbd-info

Отображает информацию о протоколах и блочных устройствах с серверов NBD.

nbstat

Пытается получить имена NetBIOS и MAC-адрес цели.

broadcast-netbios-master-browser

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

Для их использования во время сканирования команда примерно следующая:


nbtstat

Программа nbtstat предназначена для отображения статистики протокола NetBIOS и текущих подключений TCP/IP с помощью NBT (NetBIOS через TCP/IP). Программа nbtstat предустановлена в Windows, то есть её не нужно скачивать и устанавливать, но нужно запускать в командной строке. Смотрите «Настройка рабочего окружения PowerShell в Windows и Linux».

Рассмотрим примеры использования nbtstat.

Чтобы по IP адресу узнать имя хоста используйте опцию -A:


Чтобы просмотреть имена компьютеров и их IP, сохранённые в кэше укажите опцию -c:


Чтобы узнать имя текущего компьютера используйте nbtstat с опцией -n:


Для вывода имён, определённых с помощью рассылки и WINS запустите такую команду:


Фильтры Wireshark для выделения NetBIOS трафика

Wireshark поддерживает практически все сетевые протоколы (смотрите «Фильтры Wireshark»), в том числе и протоколы NetBIOS.

Фильтр Wireshark для службы имён (NetBIOS-NS):

Широковещательный запрос, чтобы определить IP адрес по имени компьютера:



Запрос к определённому узлу для получения его имени хоста:



Фильтр Wireshark для службы рассылки дейтаграмм (NetBIOS-DGM):


Фильтр Wireshark для службы сеанса (NetBIOS-SSN):


Для фильтрации всего трафика NetBIOS:

Файл LMHOSTS

Файл LMHOSTS (LAN Manager Hosts) используется для разрешения (преобразования) доменных имён в Windows, когда другие методы, такие как WINS, не работают. Используется совместно с рабочими группами и доменами. Если вы ищете простой, общий механизм для локальной спецификации IP-адресов для определённых имён хостов (имён серверов), используйте файл HOSTS, а не файл LMHOSTS.

Файл, если он существует, читается как файл настроек LMHOSTS. Пример файла (lmhosts.sam) предоставляется. Он содержит документацию для ручной настройки файла.

В Windows NT 4.0, Windows 2000, Windows XP, Vista, 7, 8, 10, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2016+ файл находится в %windir%\system32\drivers\etc\, и там же размещён пример файла (lmhosts.sam). Обратите внимание, что %windir% является переменной окружения, указывающей на папку, куда установлена Windows, обычно это C:\Windows.

Синтаксис файла LMHOSTS такой же, как и у HOSTS, то есть:

Эксплуатация NetBIOS

Программа для аудита безопасности NetBIOS можно разделить на 2 группы:

  • спуфинг NetBIOS для выполнения атак человек-посередине
  • сканирование NetBIOS для сбора информации

Программы для сканирования NetBIOS в большей части заброшены, поскольку практически всю информацию (имя, IP, MAC адрес) можно узнать либо стандартной утилитой Windows, либо сканером Nmap.

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

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

Invoke-Inveigh

Inveigh — это спуфер PowerShell ADIDNS/LLMNR/NBNS/mDNS/DNS и инструмент для атаки «человек посередине», предназначенный для помощи тестировщикам на проникновения/красным тимерам, которые ограничены системой Windows.

Пример запуска наблюдения без атаки:


Responder

nmbscan

nmbscan сканирует сетевые папки SMB/NetBIOS, используя протоколы NMB/SMB/NetBIOS. Это полезно для получения информации о локальной сети для таких целей, как аудит безопасности.

Он может получать такую информацию, как имя хоста NMB/SMB/NetBIOS/Windows, IP-адрес, имя хоста IP, MAC-адрес Ethernet, имя пользователя Windows, имя домена NMB/SMB/NetBIOS/Windows и главный браузер.

Он может обнаружить все узлы NMB/SMB/NetBIOS/Windows в локальной сети, используя списки узлов, поддерживаемые основными браузерами.

Имеется в репозиториях BlackArch:


Для сканирования подсети (очень медленно):

netbios-share-scanner

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


fakenetbios

Семейство инструментов, предназначенное для симуляции хостов Windows (NetBIOS) в LAN (локальной сети).

nbnspoof

Спуфер имён служб NetBIOS.

nbtenum

Утилита для Windows, которая может использоваться для перечисления информации NetBIOS с одного хоста или диапазона хостов. Для запуска на Windows.

nbtool

Несколько инструментов для изучения, атак и связи с NetBIOS и DNS.

nbname

Декодирует и отображает все имена NetBIOS пакетов, полученные на UDP порту 137 и другое! Для запуска на Windows.

nbtscan

NBTscan - это программа для сканирования IP для получения информации об имени NetBIOS.

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Утилита NBTSTAT .

nbtstat[-aRemoteName] [-AIPAddress] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval]

Параметры командной строки:

-a RemoteName - отображает таблицу имен удаленного компьютера. NetBIOS-имена соответствуют перечню NetBIOS-приложений, выполняющихся на удаленном компьютере.

-A IPAddress - то же самое, что и в предыдущем случае, но вместо имени удаленного компьютера используется его IP-адрес

-c - отображает кэш имен NetBIOS и соответствующих им IP-адресов.

-r - отображает статистику разрешения NetBIOS-имен. На компьютерах под управлением Windows XP и старше, выдается раздельная статистика о разрешении имен с помощью широковещетельной рассылки и с помощью сервера имен WINS.

-RR - очистка кэш NetBIOS - имен на локальном компьютере и их повторная регистрация с использованием сервера WINS.

-s - отображает статистику NetBIOS - сессий между клиентом и сервером и NetBIOS-имена удаленных узлов.

-S - отображает статистику сессий между клиентом и сервером и IP-адреса удаленных узлов.

Interval - интервал обновления отображаемых данных в секундах. Для прекращения автоматического обновления используется комбинация клавиш CTRL+C

/? - отобразить справку по использованию NBTSTAT.

nbtstat -RR - выполнить очистку и перерегистрацию NetBIOS-имен на локальном компьютере.

Утилита NETSH.EXE

Утилита сетевой оболочки NETSH (NETwork SHell) - наиболее полное и
функциональное стандартное средство управления сетью с использованием
командной строки в среде Windows XP и старше. Набор внутренних команд сетевой
оболочки пополняется с появлением новых версий операционной системы, что
необходимо учитывать при работе в локальной сети с различными ОС. Так,
например, команда уровня wlan ( netsh wlan - управление беспроводной сетью)
может использоваться на компьютерах под управлением Windows Vista и старше и
отсутствует в Widows XP. Синтаксис используемых команд и параметров также
может различаться в разных операционных системах семейства Windows.

При запуске NETSH.EXE без параметров на экран выводится приглашение к вводу внутренних команд оболочки. Набор команд представляет собой многоуровневую структуру, позволяющую выполнять необходимые действия в выбранном контексте. При вводе знака вопроса ? можно получить краткую справку по доступному перечню команд на данном уровне. Ввод команды данного уровня со знаком вопроса вызовет отображение справки по ее использованию. Аналогичную справку можно получить, введя определенную команду и, после перехода на уровень ее выполнения, ввести знак вопроса. При необходимости, можно выполнить нужное действие без использования интерактивного режима, указав в качестве параметров командной строки последовательный набор внутренних команд NETSH и необходимых параметров. Например:

netsh advfirewall show global последовательно выполняется команда первого уровня advfirewall, в ее контексте, команда следующего уровня show с параметром global

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

NETSH.EXE [-a AliasFile] [-c Context] [-r RemoteMachine]
[-u [DomainName\]UserName] [-p Password | *]
[Command | -f ScriptFile]

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

-c Context - изменить контекст (уровень) команд netsh.

-r RemoteMachine - выполнять команды netsh на удаленном компьютере. В качестве RemoteMachine может использоваться имя или IP-адрес.

[-u DomainName\]UserName - имя пользователя для подключения к удаленному компьютеру. Если не задано, то используется текущее имя пользователя.

-p Password пароль для подключения к удаленному компьютеру.

Command - команда оболочки netsh , которую необходимо выполнить.

-f ScriptFile - аналогично ключу -a, но после выполнения команд файла сценария Scriptfile, работа netsh завершается.

Пример полученной справки об использовании по команде netsh ? или вводе знака вопроса на приглашение при запуске netsh без параметров в среде ОС Windows 7:



Применимы следующие команды:

Команды в этом контексте:

? - Отображение списка команд.

add - Добавление элемента конфигурации в список элементов.

advfirewall - Изменения в контексте 'netsh advfirewall'.

branchcache - Изменения в контексте 'netsh branchcache'.

bridge - Изменения в контексте 'netsh bridge'.

delete - Удаление элемента конфигурации из списка элементов.

dhcpclient - Изменения в контексте 'netsh dhcpclient'.

dnsclient - Изменения в контексте 'netsh dnsclient'.

dump - Отображение сценария конфигурации.

exec - Запуск файла сценария.

firewall - Изменения в контексте 'netsh firewall'.

help - Отображение списка команд.

interface - Изменения в контексте 'netsh interface'.

ipsec - Изменения в контексте 'netsh ipsec'.

lan - Изменения в контексте 'netsh lan'.

mbn - Изменения в контексте 'netsh mbn'.

namespace - Изменения в контексте 'netsh namespace'.

nap - Изменения в контексте 'netsh nap'.

netio - Изменения в контексте 'netsh netio'.

p2p - Изменения в контексте 'netsh p2p'.

ras - Изменения в контексте 'netsh ras'.

rpc - Изменения в контексте 'netsh rpc'.

set - Обновление параметров конфигурации.

show - Отображение информации.

trace - Изменения в контексте 'netsh trace'.

wcn - Изменения в контексте 'netsh wcn'.

wfp - Изменения в контексте 'netsh wfp'.

winsock - Изменения в контексте 'netsh winsock'.

wlan - Изменения в контексте 'netsh wlan'.

Доступны следующие дочерние контексты:

Чтобы получить справку по команде, введите эту команду,
затем пробел и "?"


Примеры практического использования NETSH.

Для примера, нужно получить справку в контексте работы с конфигурацией беспроводной сети wlan .
Последовательно выполняем команды

set file open C:\wlanhelp.txt

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

Для сохранения используется команда:

dump Имя файла сценария

Для восстановления настроек из файла сценария используется команда:

exec Имя файла сценария

В некоторых версиях netsh команда dump с указанием имени файла почему-то не работает. Однако, для сохранения конфигурации можно воспользоваться способом, описанным выше - использовать запись в файл командой set file open C:\mynet.sav .

set file open C:\mynet.sav

Второй способ - использовать netsh с перенаправлением вывода команды dump в файл:

netsh dump > C:\mynet.sav

Для сохранения отдельного контекста конфигурации можно воспользоваться командой dump на соответствующем уровне :

netsh interface dump > C:\myinterf.cnf - сохранить настройки сетевых интерфейсов в виде сценария netsh в файле C:\myinterf.cnf

Для восстановления сетевой конфигурации можно воспользоваться

netsh exec C:\mynet.sav

Обычно, после восстановления сетевых настроек из файла сценария , требуется перезапуск некоторых сетевых служб, а желательнее - выполнить перезагрузку Windows

Иногда требуется выполнить некоторые команды на одном уровне, перейти на другой, и снова вернуться на предыдущий. Для выполнения таких переходов используются команды pushd и popd . Принцип переключения между контекстами основан на обработке очереди в соответствии с правилом "первым вошел - последним вышел" или first-in-last-out (FILO) stack. Команда pushd запоминает текущий уровень (контекст) в стеке, а команда popd извлекает его из стека. Например:

netsh> - приглашение первого уровня команды nesh

pushd - введена команда запоминания контекста в стек

netsh> - приглашении netsh не меняется, контекст прежний.

interface ipv4 - переход на уровень interface и уровень ipv4

netsh interface ipv4> - соответственно, изменилась строка приглашения, отображая текущий контекст выполнения команды netsh

set address local static 192.168.1.9 255.255.255.0 192.168.1.1 1 - команда, меняющая настройки IP протокола.

netsh interface ip> - контекст выполнения команды, отображаемый в приглашении не изменяется.

popd - команда извлечения из стека запомненного контекста.

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

Без использования команд pushd и popd практически невозможно полноценное использование сценариев netsh.

Кроме сохранения и восстановления настроек использование команды dump позволяет получить примеры в виде сценария, соответствующего текущей конфигурации. Например, дамп секции interface дает пример выполнения команд netsh в контексте настроек сетевых интерфейсов.
Пример сценария :

pushd interface ip

set address name=" Подключение по локальной сети " source=static addr=192.168.0.1 mask=255.255.255.0

set dns name="Подключение по локальной сети" source=static addr=192.168.0.2 mask=255.255.255.0

set wins name=" Подключение по локальной сети " source=static addr=192.168.0.9

- Сменить IP-адрес в командной строке:

netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.0.58 mask=255.255.255.0

name - имя сетевого подключения

source - static - статический IP-адрес. Возможно значение DHCP, если адрес назначается автоматически сервером DHCP.

addr - значение IP-адреса

mask - значение маски сети.

Для получения сведений о дополнительных возможностях конфигурирования сетевых интерфейсов можно перейти на соответствующий контекст выполнения netsh, и выполнить интересующую команду с параметром ? . Например:

netch - старт NETSH

interface - перейти в контекст настройки сетевых интерфейсов interface

ip - перейти в контекст настройки протокола IP

set file open C:\setaddr.txt - записывать сессию в файл. Эта команда используется, если нужна справочная информация в виде текстового файла .

set address ? выдать справку по использованию set address

set file close - закрыть файл справки.

quit - завершить работу с netsh

Для Windows Vista / Windows 7 синтаксис будет немного отличаться,
уровню ip будет соответствовать уровень ipv4 :

netch - старт NETSH

interface - перейти в контекст настройки сетевых интерфейсов interface

ipv4 - перейти в контекст настройки протокола IP

set file open C:\setaddr.txt - записывать сессию в файл. Эта команда используется, если нужна справочная информация в виде текстового файла .

set address ? выдать справку по использованию set address

set file close

quit - завершить работу с netsh

Пример синтаксиса для смены адреса DNS-сервера в настройках сетевого подключения
"Подключение по локальной сети 2" на адрес
публичного DNS-сервера Googl в среде Windows 7:

netsh interface ipv4 set dnsservers name="Подключение по локальной сети 2" static 8.8.8.8 primary

Из информации файла справки следует, что возможно использование
параметров командной строки netsh без указания ключевых слов:

netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.0.58 mask=255.255.255.0 gateway=192.168.0.1 gwmetric=1

Аналогично, без указания ключевых слов:

netsh interface ip set address name="Подключение по локальной сети" static 192.168.0.58 255.255.255.0 192.168.0.1 1

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

netsh interface ip set address name="Подключение по локальной сети" gateway=192.168.0.1 gwmetric=1

При ее выполнении отсутствующие параметры (IP-адрес и маска) будут сброшены. Для правильной смены шлюза по умолчанию команда должна быть следующей:

netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.0.58 mask=255.255.255.0 gateway=192.168.0.1 gwmetric=1

Утилита NETSTAT.EXE

Утилита netstat.exe присутствует во всех версиях Windows, однако, существуют некоторые отличия используемых параметров командной строки и результатов ее выполнения, в зависимости от операционной системы. Используется для отображения TCP и UDP -соединений, слушаемых портов, таблицы маршрутизации, статистических данных для различных протоколов.

netstat[-a] [-e] [-n] [-o] [-pProtocol] [-r] [-s] [Interval]

-a
- отображение всех активных соединений по протоколам TCP и UDP, а также, списка портов, которые ожидают входящие соединения (слушаемых портов).

-b
- отображение всех активных соединений по протоколам TCP и UDP, а также, списка портов, которые ожидают входящие соединения (слушаемых портов) с информацией об именах исполняемых файлов. Данный параметр применим для операционных систем Widows XP и старше.

-e
- отображение статистики Ethernet в виде счетчиков принятых и отправленных байт и пакетов.

-n - отображение номеров портов в виде десятичных чисел.

-o
- отображение соединений, включая идентификатор процесса (PID) для каждого соединения.

отображение соединений для заданного протокола. Протокол может принимать значения
tcp, udp, tcpv6, udpv6 . При использовании совместно с параметром -s в качестве протокола можно задавать tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6, ipv6.

-s -
отображение статистических данных по протоколам TCP, UDP, ICMP, IP , TCP over IPv6, UDP over IPv6, ICMPv6, и IPv6 . Если задан параметр -p , то статистика будет отбражатися только для выбранных протоколов.

-r -
отображение таблицы маршрутов. Эквивалент команды route print

Interval - интервал обновления отображаемой информации в секундах.

-v - отображать подробную информацию.

/? - отобразить справку по использованию netstat

При использовании утилиты netstat.exe удобно пользоваться командами
постраничного вывода (more), перенаправления стандартного вывода в файл ( > )
и поиска текста в результатах (find).

netstat -a | more - отобразить все соединения в постраничном режиме
вывода на экран.

netstat -a > C:\netstatall.txt - отобразить все соединения с
записью результатов в файл C:\netstatall.txt.

netstat -a | find /I "LISTENING" - отобразить все соединения со
статусом LISTENING. Ключ /I в команде find указывает, что при
поиске текста не нужно учитывать регистр символов.

netstat -a | find /I "listening" > C:\listening.txt - отобразить все
соединения со статусом LISTENING с записью результатов в
файл C:\listening.txt.

Пример отображаемой информации:


Активные подключения


Имя Локальный адрес Внешний адрес Состояние


TCP 0.0.0.0:80 0.0.0.0:0 LISTENING

TCP 0.0.0.0:445 0.0.0.0:0 LISTENING

Не удается получить сведения о владельце

TCP 0.0.0.0:5800 0.0.0.0:0 LISTENING

TCP 127.0.0.1:50197 127.0.0.1:50198 ESTABLISHED

Имя - название протокола.

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

Внешний адрес Внешний IP-адрес, участвующий в создании соединения.

Состояние - состояние соединения. Состояние Listening
говорит о том, что строка состояния отображает информацию о сетевой службе,
которая ожидает входящие соединения по соответствующему протоколу на
адрес и порт, отображаемые в колонке "Локальный адрес ". Состояние
ESTABLISHED указывает на активное соединение. В колонке "Состояние"
для соединений по протоколу TCP может отображаться текущий этап TCP-сессии
определяемый по обработке значений флагов в заголовке TCP - пакета (Syn, Ask,
Fin . ). Возможные состояния:

CLOSE_WAIT - ожидание закрытия соединения.

CLOSED - соединение закрыто.

ESTABLISHED - соединение установлено.

LISTENING - ожидается соединение (слушается порт)

TIME_WAIT - превышение времени ответа.

Имя программного модуля, связанного с данным соединением отображается, если
задан параметр -b в командной строке при запуске netstat.exe.

netstat -a -b

netstat -ab - параметры командной строки можно объединять. Параметр -ab эквивалентен -a -b

netstat -a -n -b - отобразить список всех соединений с числовыми номерами портов

netstat -anb - аналогично предыдущей команде.

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

netstat -e - получить статистические данные для Ethernet. Отображается суммарные значения принятых и полученных байт для всех сетевых адаптеров.

netstat -e -v - кроме суммарных статистических данных для Ethernet, отображается статистика для каждого сетевого интерфейса.

netstat -e -s - дополнительно к статистике Ethernet, отображается статистика для протоколов IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP и UDPv6

netstat -s - получить статистику по протоколам IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP и UDPv6

Читайте также: