Введение
Сетевой протокол NetBIOS over TCP/IP (NBT, или иногда NetBT) — это сетевой протокол, позволяющий использовать устаревшие компьютерные приложения, полагающиеся на API NetBIOS, в современных сетях TCP/IP. NetBIOS была разработана в начале 1980-х годов для небольших сетей (примерно из десятка компьютеров). Некоторые приложения по-прежнему используют NetBIOS и плохо масштабируются в современных сетях, насчитывающих сотни компьютеров, при работе NetBIOS поверх NBF. При правильной настройке NBT позволяет этим приложениям работать в крупных сетях TCP/IP (включая весь Интернет, хотя это может повлечь за собой проблемы безопасности) без изменений. NBT определена в стандартах RFC 1001 и RFC 1002.
NetBIOS over TCP/IP (NBT, or sometimes NetBT) is a networking protocol that allows legacy computer applications relying on the NetBIOS API to be used on modern TCP/IP networks. NetBIOS was developed in the early 1980s, targeting very small networks (about a dozen computers). Some applications still use NetBIOS, and do not scale well in today's networks of hundreds of computers when NetBIOS is run over NBF. When properly configured, NBT allows those applications to be run on large TCP/IP networks (including the whole Internet, although that is likely to be subject to security problems) without change. NBT is defined by the RFC 1001 and RFC 1002 standard documents.
Служба имен
В NetBIOS каждый участник должен зарегистрироваться в сети, используя уникальное имя длиной не более 15 символов. В устаревших сетях, когда новое приложение хотело зарегистрировать имя, оно отправляло широковещательное сообщение с вопросом: "Не использует ли кто-нибудь уже это имя?" и ожидало ответа. Если ответа не поступало, считалось, что имя свободно. Однако время ожидания составляло несколько секунд, что делало регистрацию имени очень длительным процессом, поскольку единственным способом узнать, что имя не зарегистрировано, было отсутствие ответа. NBT может реализовать центральный репозиторий, или Службу имен, которая ведет учет всех регистраций имен. Приложение, желающее зарегистрировать имя, обращалось бы к серверу имен (имеющему известный сетевой адрес) и запрашивало, зарегистрировано ли имя, используя пакет "Запрос имени". Это гораздо быстрее, поскольку сервер имен немедленно возвращает отрицательный ответ, если имени нет в базе данных, то есть оно доступно. Служба имен, согласно RFC 1001 и 1002, называется NetBIOS Naming Service или NBNS. Microsoft WINS является реализацией NBNS. Стоит отметить, что из-за постоянного развития механизмов обработки конфликтов и слияний в Службе имен, "групповые имена" могут различаться у разных производителей и даже в разных версиях, например, с выходом пакета обновлений. Форматы пакетов Службы имен идентичны DNS. Ключевые отличия заключаются в добавлении запроса "Статус узла" NetBIOS, динамической регистрации и пакетов для обозначения конфликтов. Они инкапсулированы в UDP. В более поздних реализациях была добавлена необязательная часть Scope в имя, что делает имена NetBIOS иерархическими, как в DNS, но это используется редко. Кроме того, для установления сеанса или отправки датаграммы конкретному хосту, а не широковещательной рассылки, NBT должен определить IP-адрес хоста с заданным именем NetBIOS; это делается путем отправки широковещательного "Запроса имени" и/или отправки его на сервер имен NetBIOS. Ответ содержит IP-адрес хоста с этим именем. NBNS – одна из первых полноценных динамических распределенных служб регистрации имен типа "одноранговая сеть". Протокол NBNS был подвергнут критике со стороны Microsoft: он получил плохую репутацию из-за своей "болтливости", перегружая сети динамическим регистрационным трафиком по нескольким протоколам (IPX/SPX, NBF и TCP/IP) из-за неправильной конфигурации машин и сетей. Принципы, реализованные в NBNS, многократно переносились в другие системы, такие как zeroconf и MobileIP.
Служба распространения датграмм
Режим датаграмм является "без установления соединения"; датаграммы NetBIOS отправляются по протоколу UDP. Датаграмма отправляется в пакете "Direct Unique" или "Direct Group", если она предназначена для конкретного имени NetBIOS, или в пакете "Broadcast", если она предназначена для всех имен NetBIOS в сети.
Служба сеансов
Режим сеанса позволяет двум компьютерам установить соединение для обмена данными, обрабатывать большие сообщения, а также обнаруживать и восстанавливать ошибки. Сеансы устанавливаются путем обмена пакетами. Компьютер, инициирующий сеанс, пытается установить TCP-соединение с портом 139 на компьютере, с которым необходимо установить сеанс. Если соединение установлено, инициирующий компьютер отправляет по этому соединению пакет "Запрос сеанса", содержащий имена NetBIOS приложения, инициирующего сеанс, и имя NetBIOS, к которому устанавливается сеанс. Компьютер, с которым устанавливается сеанс, отвечает пакетом "Положительный ответ сеанса", указывающим на возможность установления сеанса, или пакетом "Отрицательный ответ сеанса", указывающим на невозможность установления сеанса (либо потому, что компьютер не ожидает сеансов с таким именем, либо из-за нехватки ресурсов для установления сеанса с этим именем). В течение установленного сеанса данные передаются пакетами "Сообщение сеанса". TCP обеспечивает управление потоком данных и повторную передачу всех пакетов сеансовых служб, а также разделяет поток данных, по которому передаются пакеты, на IP-датаграммы, достаточно малые для передачи по каналам связи. Сеансы закрываются путем разрыва TCP-соединения.
Слабые места в системе безопасности
NBT раскрывает информацию и интерфейсы, которые часто уместны для локальной сети под административным контролем организации, но не подходят для менее доверенной сети, такой как Интернет. Например, служба имён NetBIOS (NBNS), работающая через порты UDP или TCP 137, позволяет любому компьютеру регистрировать своё имя хоста для других компьютеров. Злоумышленник может обратиться к любому хосту и выдать себя за определённую службу, с которой этот хост обычно взаимодействует, например, файловый сервер. Это может привести к атаке «человек посередине» на принимающие соединения хосты и, в конечном итоге, к компрометации учётных данных, используемых этими хостами для доступа к сетевым службам через NBT. Для осуществления этой атаки могут использоваться такие инструменты, как NBNSpoof. Размещение NBT в Интернете также на практике раскрывает тот факт, что хост, отвечающий на портах NBT, работает под управлением Windows. Эту информацию можно использовать для более точного нацеливания вредоносной активности, специфичной для данной операционной системы.
Снижение значимости в сетях клиент-сервер после NT
В отношении сетей клиент-сервер на базе MS Windows 2000 / NT и более поздних версий, протокол NetBIOS фактически становится устаревшим. NetBIOS также разрабатывался для локальных сетей, не поддерживающих маршрутизацию. В большинстве сетей, созданных после 2000 года и работающих под управлением Windows 2000 или более поздних версий, NetBIOS обеспечивает обратную совместимость с сетевыми устройствами, которые не поддерживают DNS. Основная функция NetBIOS в сетях клиент-сервер (а также в сетях с периферийным оборудованием, не поддерживающим DNS) – разрешение имен компьютеров и сетевых устройств. Кроме того, он позволяет получать доступ к сетевому оборудованию и обмениваться данными, а также просматривать сетевые папки, общие ресурсы и общие принтеры, факсы и т.п. В своей основной роли NetBIOS выступает как протокол сеансового уровня, передаваемый по протоколу TCP/IP для разрешения имен компьютеров и общих папок. В связи с этим, сетям клиент-сервер на базе Windows 2000 и более поздних версий не требуется это небезопасное средство разрешения имен, адресации и навигации по сетевым ресурсам.
НБТСТАТ
Команда nbtstat — это диагностический инструмент для NetBIOS поверх TCP/IP. Она предназначена в первую очередь для диагностики проблем с разрешением имен NetBIOS. Команда входит в состав нескольких версий Microsoft Windows. Существует несколько команд, связанных с nbtstat, которые предоставляют различные опции, такие как: поиск в локальном кэше, запрос к серверу WINS, широковещательная рассылка, поиск в LMHOSTS и поиск в файле Hosts. Она не предназначена для запроса DNS-сервера. При нормальной работе сети NetBIOS поверх TCP/IP (NetBT) преобразует имена NetBIOS в IP-адреса. Это происходит посредством различных методов разрешения имен NetBIOS, включая поиск в локальном кэше, запрос к серверу WINS, широковещательную рассылку, поиск в LMHOSTS, поиск в файле Hosts и запрос к DNS-серверу. Команда удаляет и обновляет предварительно загруженные записи с помощью ряда регистрозависимых ключей. Команда nbtstat -a <имя> выполняет запрос статуса адаптера NetBIOS для компьютера с указанным именем <имя>. Запрос статуса адаптера возвращает локальную таблицу имен NetBIOS для этого компьютера, а также MAC-адрес сетевой карты. Команда nbtstat -A <IP-адрес> выполняет ту же функцию, используя целевой IP-адрес вместо имени.