19 апреля, 2024

Как перечислить общие ресурсы NetBIOS с помощью NBTScan и Nmap Script Engine

Содержание:

NetBIOS — это сервис, который обеспечивает связь по сети и часто используется для присоединения к домену и устаревшим приложениям. Это довольно старая технология, но она до сих пор используется в некоторых программных окружениях. А поскольку это незащищенный протокол, то довольно часто он может быть отправной точкой для атаки на сеть. Хорошим началом будет просканировать общие ресурсы NetBIOS с помощью NBTScan и Nmap Script Engine.

Чтобы выполнить эту задачу, в качестве нашей целевой машины будем использовать Metasploitable 2 — виртуальную машину с намеренно созданными в ней уязвимостями. Мы будем атаковать ее с помощью Kali Linux — дистрибутива для хакеров и пентестеров.

Обзор NetBIOS

NetBIOS буквально означает «базовая сетевая система ввода/вывода» (Network Basic Input/Output System). Он представляет собой сервис, позволяющий компьютерам взаимодействовать между собой по сети. Однако NetBIOS — это не сетевой протокол, а API. Он работает поверх протоколов TCP/IP по протоколу NBT, что и позволяет ему работать в современных сетях.

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

Основной способ эксплуатации хакерами NetBIOS — это «отравляющие» атаки. Их суть заключается в том, что злоумышленник находясь в сети, маскируется под другую машину, чтобы контролировать и перенаправлять трафик. На этом этапе хакер может также получить хэшированные учетные данные пользователя, чтобы впоследствии их взломать.

Сканирование с помощью NBTScan

NBTScan — это инструмент командной строки, используемый для сканирования сетей с целью получения общих ресурсов NetBIOS и информации об именах. Он может работать как в Unix, так и в Windows и включен в стандартную поставку Kali Linux по умолчанию.

Первое, что мы можем сделать — распечатать справку, которая даст нам представление обо всех вариантах ее использования и несколько примеров для сканирования сетей. Просто введите в терминале nbtscan.

nbtscan
NBTscan version 1.5.1. Copyright (C) 1999-2003 Alla Bezroutchko.
This is a free software and it comes with absolutely no warranty.
You can use, distribute and modify it under terms of GNU GPL.

Usage:
nbtscan [-v] [-d] [-e] [-l] [-t timeout] [-b bandwidth] [-r] [-q] [-s separator] [-m retransmits] (-f filename)|(<scan_range>)
	-v		verbose output. Print all names received
			from each host
	-d		dump packets. Print whole packet contents.
	-e		Format output in /etc/hosts format.
	-l		Format output in lmhosts format.
			Cannot be used with -v, -s or -h options.
	-t timeout	wait timeout milliseconds for response.
			Default 1000.
	-b bandwidth	Output throttling. Slow down output
			so that it uses no more that bandwidth bps.
			Useful on slow links, so that ougoing queries
			don't get dropped.
	-r		use local port 137 for scans. Win95 boxes
			respond to this only.
			You need to be root to use this option on Unix.
	-q		Suppress banners and error messages,
	-s separator	Script-friendly output. Don't print
			column and record headers, separate fields with separator.
	-h		Print human-readable names for services.
			Can only be used with -v option.
	-m retransmits	Number of retransmits. Default 0.
	-f filename	Take IP addresses to scan from file filename.
			-f - makes nbtscan take IP addresses from stdin.
	<scan_range>	what to scan. Can either be single IP
			like 192.168.1.1 or
			range of addresses in one of two forms:
			xxx.xxx.xxx.xxx/xx or xxx.xxx.xxx.xxx-xxx.
Examples:
	nbtscan -r 192.168.1.0/24
		Scans the whole C-class network.
	nbtscan 192.168.1.25-137
		Scans a range from 192.168.1.25 to 192.168.1.137
	nbtscan -v -s : 192.168.1.0/24
		Scans C-class network. Prints results in script-friendly
		format using colon as field separator.
		Produces output like that:
		192.168.0.1:NT_SERVER:00U
		192.168.0.1:MY_DOMAIN:00G
		192.168.0.1:ADMINISTRATOR:03U
		192.168.0.2:OTHER_BOX:00U
		...
	nbtscan -f iplist
		Scans IP addresses specified in file iplist.

Самым простым (и основным) вариантом запуска этого замечательного инструмента является предоставление ему диапазона IP-адресов. В нашем случае в сети есть только один компьютер, поэтому в качестве примера мы приведем его IP-адрес.

nbtscan 172.16.1.102
IP address       NetBIOS Name     Server    User             MAC address
------------------------------------------------------------------------------
172.16.1.102     METASPLOITABLE   <server>  METASPLOITABLE   00:00:00:00:00:00

Здесь мы видим IP-адрес, отображаемое имя NetBIOS, сервер (если есть), пользователя и MAC-адрес цели. Обратите внимание, что машины с запущенной Samba в ответ на такой запрос иногда возвращают нули в качестве MAC-адреса.

Читать также:  Как установить VPN на маршрутизатор

Мы можем получить немного больше информации, если установим флаг подробного вывода -v.

nbtscan 172.16.1.102 -v
Doing NBT name scan for addresses from 172.16.1.102

NetBIOS Name Table for Host 172.16.1.102:

Incomplete packet, 335 bytes long.
Name             Service          Type
----------------------------------------
METASPLOITABLE   <00>             UNIQUE
METASPLOITABLE   <03>             UNIQUE
METASPLOITABLE   <20>             UNIQUE
METASPLOITABLE   <00>             UNIQUE
METASPLOITABLE   <03>             UNIQUE
METASPLOITABLE   <20>             UNIQUE
__MSBROWSE__  <01>              GROUP
WORKGROUP        <00>              GROUP
WORKGROUP        <1d>             UNIQUE
WORKGROUP        <1e>              GROUP
WORKGROUP        <00>              GROUP
WORKGROUP        <1d>             UNIQUE
WORKGROUP        <1e>              GROUP

Adapter address: 00:00:00:00:00:00
----------------------------------------

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

nbtscan 172.16.1.102 -vh

Doing NBT name scan for addresses from 172.16.1.102

NetBIOS Name Table for Host 172.16.1.102:

Incomplete packet, 335 bytes long.
Name             Service          Type
----------------------------------------
METASPLOITABLE   Workstation Service
METASPLOITABLE   Messenger Service
METASPLOITABLE   File Server Service
METASPLOITABLE   Workstation Service
METASPLOITABLE   Messenger Service
METASPLOITABLE   File Server Service
__MSBROWSE__  Master Browser
WORKGROUP        Domain Name
WORKGROUP        Master Browser
WORKGROUP        Browser Service Elections
WORKGROUP        Domain Name
WORKGROUP        Master Browser
WORKGROUP        Browser Service Elections

Adapter address: 00:00:00:00:00:00
----------------------------------------

Теперь мы видим немного больше информации, которая может оказаться нам полезной. Мы также можем установить флаг -d для дампа (сохранения) содержимого всего пакета.

nbtscan 172.16.1.102 -d
Doing NBT name scan for addresses from 172.16.1.102

Packet dump for Host 172.16.1.102:

Incomplete packet, 335 bytes long.
Transaction ID: 0x00a0 (160)
Flags: 0x8400 (33792)
Question count: 0x0000 (0)
Answer count: 0x0001 (1)
Name service count: 0x0000 (0)
Additional record count: 0x0000 (0)
Question name:  CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Question type: 0x0021 (33)
Question class: 0x0001 (1)
Time to live: 0x00000000 (0)
Rdata length: 0x0119 (281)
Number of names: 0x0d (13)
Names received:
METASPLOITABLE    Service: 0x00 Flags: 0x0004
METASPLOITABLE    Service: 0x03 Flags: 0x0004
METASPLOITABLE    Service: 0x20 Flags: 0x0004
METASPLOITABLE    Service: 0x00 Flags: 0x0004
METASPLOITABLE    Service: 0x03 Flags: 0x0004
METASPLOITABLE    Service: 0x20 Flags: 0x0004
__MSBROWSE__   Service: 0x01 Flags: 0x0084
WORKGROUP         Service: 0x00 Flags: 0x0084
WORKGROUP         Service: 0x1d Flags: 0x0004
WORKGROUP         Service: 0x1e Flags: 0x0084
WORKGROUP         Service: 0x00 Flags: 0x0084
WORKGROUP         Service: 0x1d Flags: 0x0004
WORKGROUP         Service: 0x1e Flags: 0x0084

...

Эта команда выдает нам пакетные данные, которые были использованы в этом запросе. Обратите внимание, что этот параметр нельзя использовать с опциями -v или -h.

Читать также:  Как удаленно сохранять пароли из браузера Firefox

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

nbtscan -f addresses.txt

Doing NBT name scan for addresses from addresses.txt

IP address       NetBIOS Name     Server    User             MAC address
------------------------------------------------------------------------------
172.16.1.102     METASPLOITABLE   <server>  METASPLOITABLE   00:00:00:00:00:00

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

nbtscan 172.16.1.102 > scan.txt

Сканирование с помощью Nmap Scripting Engine

У Nmap в составе скриптового движка Nmap есть один очень удобный небольшой скрипт, который мы точно также можем использовать для обнаружения общих ресурсов NetBIOS. Этот способ имеет небольшое преимущество перед предыдущим — его можно запускать с другими скриптами NSE (Nmap Scripting Engine), что в конечном итоге сэкономит время при выводе множества разных вещей в сети.

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

nmap -sV 172.16.1.102 --script nbstat.nse -v
Starting Nmap 7.70 ( https://nmap.org ) at 2019-02-14 14:12 CST
NSE: Loaded 44 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 14:12
Completed NSE at 14:12, 0.00s elapsed
Initiating NSE at 14:12
Completed NSE at 14:12, 0.00s elapsed
Initiating ARP Ping Scan at 14:12
Scanning 172.16.1.102 [1 port]
Completed ARP Ping Scan at 14:12, 0.05s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 14:12
Completed Parallel DNS resolution of 1 host. at 14:12, 13.00s elapsed
Initiating SYN Stealth Scan at 14:12
Scanning 172.16.1.102 [1000 ports]

...

Host script results:
| nbstat: NetBIOS name: METASPLOITABLE, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| Names:
|   METASPLOITABLE<00>   Flags: <unique><active>
|   METASPLOITABLE<03>   Flags: <unique><active>
|   METASPLOITABLE<20>   Flags: <unique><active>
|   \x01\x02__MSBROWSE__\x02<01>  Flags: <group><active>
|   WORKGROUP<00>        Flags: <group><active>
|   WORKGROUP<1d>        Flags: <unique><active>
|_  WORKGROUP<1e>        Flags: <group><active>

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

Читать также:  Как сделать неуловимую полезную нагрузку. Часть 2. Скрытие полезной нагрузки

Как предотвратить сканирование общих ресурсов NetBIOS

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

Если вам абсолютно необходимо иметь NetBIOS, то остерегайтесь использовать имена по умолчанию. В некоторых версиях Windows C$ или ADMIN$ являются общеизвестными именами, и по возможности следует их избегать.

Заключение

В этом уроке мы узнали о службе NetBIOS и о том, как ее можно использовать для атаки. С помощью NBTScan — простого консольного инструмента, мы выполнили сканирование и перечислили общие ресурсы, а затем выяснили, как использовать скрипт Nmap для тех же целей. Может NetBIOS и устаревшая технология, но она все еще встречается в корпоративных средах. И зачастую, после проведения разведки, его эксплуатация может быть хорошей отправной точкой для начала, поэтому полезно знать, как ее можно идентифицировать.

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