发现内网存活主机
可通过,ICMP,NetBOIOS,UDP,ARP,SNMP,SMB等多种协议。

1.基于ICMP发现存活主机
ICMP为TCP/IP协议簇的子协议,用于网络层通讯,及IP主机与路由器之间传递控制信息,提供可能发生在通信环境中的各种错误反馈,管理员可以通过反馈的信息对发生的问题进行诊断。

通过循环对某个网段中所有IP进行ping(ICMP协议)操作。能够ping通的IP及存活主机。
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.0.%I | findstr "TTL="

2.基于NetBIOS (网络基本输入/输出系统)协议探测主机(应用层)
windows中默认安装TCP/IP后自动安装NetBIOS,139端口。

NetBIOS提供OSI/RM的会话层(在tcp/ip中包含在应用层中)服务,让不同计算机上运行的不同程序可以在局域网中相互连接和共享数据。
严格来说NetBIOS不是一种协议,而是一种应用程序接口(API)几乎所有局域网都是在NetBIOS协议基上工作。 操作系统可以利用WINS服务, 广播, Lmhost文件等模式将NetBIOS名解析为相应的IP地址。
NetBIOS工作流程就是正常的机器名解析,查询,应答。

使用nbtscan
https://github.com/lifenjoiner/nbtscan/releases/tag/nbtscan-v1.5.2-2394b4
nbtscan.exe 10.10.10.1/24

3.基于SMB协议探测主机(应用层)
SMB网络文件共享系统协议,是一种应用层传输协议。主要功能使网络上的机器能够共享计算机文件,打印机,串行端口和通信等资源。
CIFS信息一般使用NetBIOS或TCP发生,分别使用139或445。

kali使用crackmapexec工具。crackmapexec也可进行winrm攻击,枚举登用户录。
crackmapexec smb 192.168.159.0/24

4.基于UDP发现主机(传输层)
UDP传输层无连接传输协议,为应用程序提供一种不用连接即可发送封装IP数据包的方法。
在实际利用中可以发送一个空的UDP报文发送到目标主机的特定端口。UDP探测就马上得到一个ICMP端口无法到达的回应报文,这说明该主机正在正常运行。如果探测到一个开放端口,大部分服务将忽略此空报文不做任何回应。
kali unicornscan (不是很准)
unicornscan -mU 192.168.159.0/24

5.基于ARP发现存活主机(网络层)
ARP(地址解析协议)解析网络层地址来寻找数据链路层的网络传输协议。
主机发送信息时将包含目标IP地址的ARP请求广播到局域网上的所有主机,并接收返回信息,以此来确定目标的物理地址。收到返回信息后,将该IP地址与物理地址存入本机ARP缓存,并保留一定时间,下次请求直接查询ARP缓存。

(1)ARP-Scan的利用

arp-scan.exe -t 192.168.159.0/24

(2)PowerShell
设置权限
Set-ExecutionPolicy RemoteSigned
加载模块
Import-Module C:\Users\Administrator\Desktop\Invoke-ARPScan.ps1
Import-Module .\Invoke-ARPScan.ps1
使用模块
Invoke-ARPScan -CIDR 192.168.52.1/24

6.基于msf

meterpreter > background    # 后台挂起Session

msf5 exploit(multi/handler) > use auxiliary/scanner/netbios/nbname 
msf5 auxiliary(scanner/netbios/nbname) > set rhosts 192.168.52.0/24
msf5 auxiliary(scanner/netbios/nbname) > run