hacktricks/network-services-pentesting/137-138-139-pentesting-netbios.md
2023-08-03 19:12:22 +00:00

7.1 KiB
Raw Blame History

137,138,139 - Pentesting NetBios

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

NetBios名称服务

  • 用于名称注册和解析的名称服务端口137/udp和137/tcp
  • 用于无连接通信的数据报分发服务端口138/udp
  • 用于面向连接的通信的会话服务端口139/tcp

名称服务

每台机器在NetBios网络中都应该有一个名称。要请求一个名称机器应该发送一个广播的“名称查询”数据包如果有人回答说它已经在使用该名称机器可以使用该名称。如果有一个名称服务服务器计算机可以询问名称服务服务器是否有人在使用它想要使用的名称。

要发现名称的IP地址PC必须发送一个“名称查询”数据包并等待是否有人回答。如果有一个名称服务服务器PC可以询问它名称的IP地址。

PORT    STATE SERVICE    VERSION
137/udp open  netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)

枚举NetBIOS服务时您可以获取服务器正在使用的名称和服务器的MAC地址。

nmblookup -A <IP>
nbtscan <IP>/30
sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>

数据报分发服务

NetBIOS数据报通过UDP发送。如果数据报被发送到特定的NetBIOS名称则使用“直接唯一”或“直接组”数据包发送如果数据报被发送到网络上的所有NetBIOS名称则使用“广播”数据包发送。

PORT    STATE         SERVICE     VERSION
138/udp open|filtered netbios-dgm

会话服务

会话模式允许两台计算机建立连接进行“对话”,可以处理较大的消息,并提供错误检测和恢复功能。

会话是通过交换数据包来建立的。建立会话的计算机尝试与要建立会话的计算机上的端口139建立TCP连接。如果连接成功建立会话的计算机会通过连接发送一个“会话请求”数据包其中包含建立会话的应用程序的NetBIOS名称和要建立会话的NetBIOS名称。要建立会话的计算机将以“积极会话响应”回复表示可以建立会话或者以“否定会话响应”回复表示无法建立会话可能是因为该计算机没有监听要建立到该名称的会话或者因为没有可用资源来建立到该名称的会话

在已建立的会话中,通过会话消息数据包传输数据。

TCP处理所有会话服务数据包的流量控制和重传并将数据流分割成足够小以适应链路层数据包的IP数据报。

会话通过关闭TCP连接来关闭。

PORT      STATE SERVICE      VERSION
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn

阅读下一页以了解如何枚举此服务:

{% content-ref url="137-138-139-pentesting-netbios.md" %} 137-138-139-pentesting-netbios.md {% endcontent-ref %}

HackTricks自动命令

Protocol_Name: Netbios    #Protocol Abbreviation if there is one.
Port_Number:  137,138,139     #Comma separated if there is more than one.
Protocol_Description: Netbios         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for NetBios
Note: |
Name service for name registration and resolution (ports: 137/udp and 137/tcp).
Datagram distribution service for connectionless communication (port: 138/udp).
Session service for connection-oriented communication (port: 139/tcp).

Every machine should have a name inside the NetBios network. To request a name, a machine should send a "Name Query" packet in broadcast and if anyone answer that it is already using that name, the machine can use that name. If there is a Name Service server, the computer could ask the Name Service server if someone is using the name that it wants to use.

https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios

Entry_2:
Name: Find Names
Description: Three scans to find the names of the server
Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP}
☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥