NetBIOS: что это, как работает и как проверить

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

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

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

Больше пПодробностей смотрите в статье «Имя компьютера Windows: как изменить и использовать».

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

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

Естественно, в лучших в традициях HackWare.ru, в статье будет только необходимая теория и максимум практики — мы будем «щупать» протокол NetBIOS в Wireshark, встроенной утилите Windows и в специализированных инструментах для аудита безопасности. Но начнём всё-таки с теории.

Что такое NetBIOS

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

Приложения могут найти через NETBIOS нужные им ресурсы, установить связь и послать или получить информацию. NETBIOS использует для службы имён порт 137, для службы дейтаграмм — порт 138, а для сессий — порт 139. Любая сессия начинается с NETBIOS-запроса, задания IP-адреса и определения TCP-порта удаленного объекта, далее следует обмен NETBIOS-сообщениями, после чего сессия закрывается. Сессия осуществляет обмен информацией между двумя NETBIOS-приложениями. Длина сообщения лежит в пределах от 0 до 131071 байт. Допустимо одновременное установление нескольких сессий между двумя объектами. При организации IP-транспорта через NETBIOS IP-дейтаграмма вкладывается в NETBIOS-пакет. Информационный обмен происходит в этом случае без установления связи между объектами. Имена NETBIOS должны содержать в себе IP-адреса. Так, часть NETBIOS-адреса может иметь вид IP.**.**.**.**, где IP указывает на тип операции (IP через Netbios), а **.**.**.** — IP-адрес. Система NETBIOS имеет собственную систему команд (call, listen, hang up, send, receive, session status, reset, cancel, adapter status, unlink, remote program load) и примитивов для работы с дейтаграммами (send datagram, send broadcast datagram, receive datagram, receive broadcast datagram). Все оконечные узлы NETBIOS делятся на три типа:

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

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

NetBIOS обеспечивает:

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

Службы NetBIOS

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

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

(Примечание: SMB, верхний уровень, является службой, которая выполняется поверх службы сеансов и службы дейтаграмм, и её не следует считать необходимой и неотъемлемой частью самого NetBIOS. Теперь она может работать поверх TCP с небольшим уровнем адаптации, который добавляет длину пакета к каждому сообщению SMB; это необходимо, потому что TCP предоставляет только услугу потока байтов без понятия «границы пакета».)

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

Чтобы начать сеансы или распространять дейтаграммы, приложение должно зарегистрировать своё имя NetBIOS, используя службу имён. Имена NetBIOS имеют длину 16 октетов и различаются в зависимости от конкретной реализации. Часто 16-й октет, называемый суффиксом NetBIOS, обозначает тип ресурса и может использоваться для сообщения другим приложениям, какой тип услуг предлагает система. В NBT служба имён работает на UDP-порту 137 (TCP-порт 137 также может применяться, но используется редко).

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

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

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

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

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

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

  • Send Datagram — отправить датаграмму на удалённое имя NetBIOS.
  • Send Broadcast Datagram — отправить дейтаграмму всем именам NetBIOS в сети.
  • Receive Datagram — дождаться прибытия пакета из операции отправки датаграммы.
  • Receive Broadcast Datagram — дождаться прибытия пакета из операции отправки широковещательной дейтаграммы.

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

Режим сеанса позволяет двум компьютерам устанавливать соединение, позволяет сообщениям охватывать несколько пакетов и обеспечивает обнаружение и восстановление ошибок. В NBT служба сеанса работает через порт TCP 139.

Примитивы службы сеанса, предлагаемые 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 состоит из 16 символов ASCII, однако Microsoft ограничивает имя хоста 15 символами и резервирует 16-й символ как суффикс NetBIOS. Этот суффикс описывает тип записи службы или имени, такой как запись узла, основная запись браузера или запись контроллера домена или другие службы. Имя хоста (или короткое имя хоста) указывается при установке/настройке сети Windows, зарегистрированные суффиксы определяются отдельными сервисами, предоставляемыми хостом. Чтобы подключиться к компьютеру под управлением TCP/IP через его имя NetBIOS, имя должно быть преобразовано в сетевой адрес. Сегодня это обычно IP-адрес (преобразование имени NetBIOS в IP-адрес часто выполняется с помощью широковещательной рассылки или сервера WINS — сервера имён NetBIOS). NetBIOS-имя компьютера часто совпадает с именем хоста этого компьютера, хотя оно усекается до 15 символов, но оно также может быть и совершенно другим.

Имена 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:

sudo nmap _gateway/24

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

139/tcp  open  netbios-ssn

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

sudo nmap -p U:137,138,T:137,139 -sU -sS _gateway/24

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

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

sudo nmap -p U:137,138,T:137,139 -sU -sS -sV --script=banner _gateway/24

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

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

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


nbd-info

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

nbstat

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

broadcast-netbios-master-browser

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

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

sudo nmap -p U:137,138,T:137,139 -sU -sS --script nbstat,nbd-info,broadcast-netbios-master-browser _gateway/24

Результаты:

nbtstat

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

Использование:

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

Опции:

  -a  (adapter status) Вывод таблицы имён узла, указанного по имени.
  -A  (Adapter status) Вывод таблицы имён узла, указанного по IP-адресу.
  -c  (cache)          Вывод буфера имён удалённых узлов, включая адреса IP.
  -n  (names)          Вывод локальных имён NetBIOS.
  -r  (resolved)       Вывод имён, определённых с помощью рассылки и WINS.
  -R  (Reload)         Очистка и перезагрузка таблицы удалённого буфера имён.
  -S  (Sessions)       Вывод таблицы сеансов с IP-адресами.
  -s  (sessions)       Вывод таблицы сеансов с преобразованием IP-адресов
                       в имена NETBIOS.
  -RR (ReleaseRefresh) Отсылка пакетов освобождения имени (Name Release)на
                       WINS-сервер, а затем запуск обновления (Refresh)


  Узел         Имя удалённого компьютера.
  IP-адрес     IP-адрес удалённого компьютера.
  интервал     Повторный вывод статистических данных через указанный
               интервал в секундах. Для прекращения вывода нажмите
               клавиши <CTRL>+<C>.

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

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

nbtstat -A 192.168.0.53

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

nbtstat -c

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

nbtstat -n

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

nbtstat -r

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

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

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

nbns

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

Полученный ответ:

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

Полученный ответ:

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

nbdgm

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

nbss

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

nbns or nbdgm or nbss

Файл 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, то есть:

IP_АДРЕС	ИМЯ_ХОСТА

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

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

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

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

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

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

Invoke-Inveigh

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

Для этой программы готовится перевод документации и статьи на HackWare.ru.

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

Import-Module ./Inveigh.psd1
Invoke-Inveigh -Inspect -ConsoleOutput Y

Responder

Responder это инструмент для выполнения атаки человек-посередине в отношении методов аутентификации в Windows. Эта программа включает в себя травитель LLMNR, NBT-NS и MDNS благодаря которому перенаправляется трафик с запросами и хешами аутентификации. Также в программу встроены жульнические серверы аутентификации HTTP/SMB/MSSQL/FTP/LDAP, которые поддерживают такие методы аутентификации как NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP и базовую HTTP аутентификацию, для которых Responder выполняет роль ретранслятора.

Подробная инструкция по использованию Responder «Взлом сетевой аутентификации Windows».

nmbscan

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

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

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

Домашняя страница: http://archive.fo/uN8WJ (оригинальный сайт больше недоступен)

Исходный код можно скачать по этой ссылке: http://nmbscan.g76r.eu/down/nmbscan-1.2.6.tar.gz

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

sudo pacman -S nmbscan

Пример запуска:

nmbscan -h 192.168.0.101 -h 192.168.0.1 -h 192.168.0.53

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

nmbscan -h 192.168.0.{1..255}

netbios-share-scanner

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

Пример запуска:

netbios-share-scanner 192.168.0.1

Ссылка: https://www.secpoint.com/netbios-share-scanner.html

fakenetbios

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

Ссылка: https://github.com/mubix/FakeNetBIOS

nbnspoof

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

Исходный код программы (написана на Python2).

nbtenum

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

Исходный код: http://dl.packetstormsecurity.net/Win/NBTEnum33.zip

nbtool

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

Ссылка: https://wiki.skullsecurity.org/Nbtool

nbname

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

Ссылка: ftp://ftp.mrynet.com/operatingsystems/DEC/vmsone/vmsone.com/~decuslib/vmssig/vmslt01b/net/nbname.exe

nbtscan

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

Ссылка: https://github.com/scallywag/nbtscan

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

Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован.