探测内网存活主机
/0x00 前言
本部分和内网渗透的探测域内存活主机相似,某些工具命令的具体使用可查询该篇文章。
参考Micro8系列第十二课:https://micro8.gitbook.io/micro8/contents-1/11-20/12-ji-yu-udp-fa-xian-nei-wang-cun-huo-zhu-ji
参考Micro8系列第十三课:https://micro8.gitbook.io/micro8/contents-1/11-20/13-ji-yu-arp-fa-xian-nei-wang-cun-huo-zhu-ji
参考Micro8系列第十九课:https://micro8.gitbook.io/micro8/contents-1/11-20/19-ji-yu-netbios-fa-xian-nei-wang-cun-huo-zhu-ji
参考Micro8系列第二十课:https://micro8.gitbook.io/micro8/contents-1/11-20/20-ji-yu-snmp-fa-xian-nei-wang-cun-huo-zhu-ji
参考Micro8系列第二十一课:https://micro8.gitbook.io/micro8/contents-1/21-30/21-ji-yu-icmp-fa-xian-nei-wang-cun-huo-zhu-ji
参考Micro8系列第二十二课:https://micro8.gitbook.io/micro8/contents-1/21-30/22-ji-yu-smb-fa-xian-nei-wang-cun-huo-zhu-ji
0x01 基于UDP的探测
UDP简介
UDP(User Datagram Protocol)用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP具有以下特点:
- 无连接:UDP客户端和服务端之间不必存在长期的关系。大多数的UDP实现中都选择忽略源站抑制差错,在网络拥塞时,目的端无法接收到大量的UDP数据报;
- 缺乏可靠性:UDP本身不提供确认,超时重传等机制。UDP数据报可能在网络中被复制,被重新排序,也不保证每个数据报只到达一次;
- UDP数据报是有长度的:每个UDP数据报都有长度,如果一个数据报正确地到达目的地,那么该数据报的长度将随数据一起传递给接收方。而TCP是一个字节流协议,没有任何(协议上的)记录边界;
- 支持多播和广播;
Nmap扫描
1 | nmap -sU -T5 -sV --max-retries 1 192.168.1.100 -p 500 |
比较慢。
MSF模块扫描
模块1:
1 | msf > use auxiliary/scanner/discovery/udp_probe |
模块2:
1 | msf > use auxiliary/scanner/discovery/udp_sweep |
unicornscan扫描
Linux下推荐使用:
1 | unicornscan -mU 192.168.1.100 |
ScanLine扫描
ScanLine是一个同时支持TCP和UDP端口扫描的体积小的端口扫描工具,可以在所有版本的Windows上使用:
1 | sl -h -t 22,80-89,110,389,445,3389,1099,1433,2049,6379,7001,8080,1521,3306,3389,5432 -u 53,161,137,139 -O c:\windows\temp\sl_res.txt -p 192.168.1.1-254 /b |
在线基于Nmap的UDP扫描
https://pentest-tools.com/network-vulnerability-scanning/udp-port-scanner-online-nmap
0x02 基于ARP的探测
ARP简介
ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
Nmap扫描
1 | nmap -sn -PR 192.168.1.1/24 |
MSF模块扫描
1 | msf > use auxiliary/scanner/discovery/arp_sweep |
netdiscover扫描
1 | netdiscover -r 192.168.1.0/24 -i wlan0 |
arp-scan扫描
Linux推荐: https://linux.die.net/man/1/arp-scan
在Kali中有自带的。
Windows推荐(非官方):https://github.com/QbsuranAlang/arp-scan-windows-/tree/master/arp-scan
1 | arp-scan.exe -t 192.168.1.1/24 |
PowerShell脚本扫描
1 | powershell.exe -exec bypass -Command "Import-Module .\arpscan.ps1;Invoke-ARPScan -CIDR 192.168.1.0/24" |
可用Nishang中的Invoke-ARPScan.ps1脚本。
arp scannet扫描
项目地址: https://sourceforge.net/projects/arpscannet/files/arpscannet/arpscannet 0.4/
arp-ping.exe扫描
1 | arp-ping.exe 192.168.1.100 |
0x03 基于NetBIOS的探测
NetBIOS简介
NetBIOS,为网上基本输入输出系统(Network Basic Input/Output System)的缩写,它提供了OSI模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据。严格来说,NetBIOS不是一种网上协议,而是应用程序接口(API)。较古老的操作系统,使用IEEE 802.2与IPX/SPX协议,可以使用NetBIOS Frames协议或NetBIOS over IPX/SPX协议来运作。现代操作系统,多数都使用TCP/IP协议,则可透过NetBIOS over TCP/IP协议来相互通信。
几乎所有的局域网都是基于NetBIOS基础上进行工作的,NetBIOS的工作流程就是正常的机器名解析查询应答过程,因此在内网探测域内存活主机时优先使用NetBIOS进行探测。
IBM公司开发,主要用于数十台计算机的小型局域网。该协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的同一的命令集,作用是为了给局域网提供网络以及其他特殊功能。
系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名-——特指基于NETBIOS协议获得计算机名称——解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享。
Nmap扫描
1 | nmap -sU --script nbstat.nse -p137 192.168.1.0/24 -T4 |
MSF模块扫描
1 | msf > use auxiliary/scanner/netbios/nbname |
nbtscan扫描
nbtscan是一个命令行工具,用于扫描本地或远程TCP/IP网络上的开放NetBIOS名称服务器。其有Windows版本和Linux版本,体积很小,且不需要特殊的库或DLL,使用简单,无参输入nbtscan.exe
即可查看帮助文档。
Windows版: http://www.unixwiz.net/tools/nbtscan.html
1 | nbtscan.exe 192.168.1.0/24 |
它是基于标准的Windows工具nbtstat来实现的,推荐命令:
1 | nbtstat -n |
Linux版:https://github.com/scallywag/nbtscan
其中Kali中是自带的。
NetBScanner扫描
项目地址: https://www.nirsoft.net/utils/netbios_scanner.html
0x04 基于SNMP的探测
SNMP简介
SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。
Nmap扫描
1 | nmap -sU --script snmp-brute 192.168.1.0/24 -T4 |
MSF模块扫描
1 | msf > use auxiliary/scanner/snmp/snmp_enum |
其他SNMP相关模块:
1 | use auxiliary/scanner/snmp/aix_version use auxiliary/scanner/snmp/snmp_enum |
NetCrunch扫描
项目地址: https://www.adremsoft.com/demo/
NetCrunch是一款内网安全审计工具,包含了DNS审计、ping扫描、端口、网络服务等。
SNMP Perl脚本扫描
项目地址: https://github.com/dheiland-r7/snmp
如果出现这个问题:Can’t locate NetAddr/IP
1 | wget http://www.cpan.org/modules/by-module/NetAddr/NetAddr-IP-4.078.tar.gz |
SNMP Scanner扫描
项目地址:https://www.solarwinds.com/topics/snmp-scanner
NetScanTools Pro SNMP扫描
项目地址:https://www.netscantools.com/nstpro_snmp.html
0x05 基于ICMP的探测
ICMP简介
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
Nmap扫描
1 | nmap ‐sP ‐PI 192.168.1.0/24 ‐T4 |
CMD下扫描
1 | for /L %P in (1,1,254) DO @ping ‐w 1 ‐n 1 192.168.1.%P | findstr "TTL =" |
PowerShell脚本扫描
1 | powershell.exe ‐exec bypass ‐Command "Import‐Module ./Invoke‐TSPingSweep.ps1 |
脚本地址:https://github.com/sirrushoo/Powershell-Tools/blob/master/Invoke-TSPingSweep.ps1
tcping.exe扫描
1 | tcping.exe ‐n 1 192.168.1.0 80 |
0x06 基于SMB探测
SMB简介
SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统。
Nmap script扫描
1 | root@John:~# nmap ‐sU ‐sS ‐‐script smb‐enum‐shares.nse ‐p 445 192.168.1.119 |
MSF模块扫描
1 | msf auxiliary(scanner/smb/smb_version) > show options |
CMD下扫描
1 | for /l %a in (1,1,254) do start /min /low telnet 192.168.1.%a 445 |
PowerShell脚本扫描
一句话扫描,单个IP:
1 | 445 | %{ echo ((new‐object Net.Sockets.TcpClient).Connect("192.168.1.119",$_)) "$_ is open"} 2>$null |
多个IP:
1 | 1..5 | % { $a = $_; 445 | % {echo ((new‐object Net.Sockets.TcpClient).Connect("192.168.1.$a",$_)) "Port $_ is open"} 2>$null} |
多个端口和IP:
1 | 118..119 | % { $a = $_; write‐host "‐‐‐‐‐‐"; write‐host "192.168.1.$a"; 80,445 | % {echo ((new‐object Net.Sockets.TcpClient).Connect("192.168.1.$a",$_)) "Port $_ is open"} 2>$null} |
CME扫描
CrackMapExec(CME)是一款后渗透利用工具,可帮助自动化大型活动目录(AD)网络安全评估任务。其缔造者@byt3bl33d3r称,该工具的生存概念是,“利用AD内置功能/协议达成其功能,并规避大多数终端防护/IDS/IPS解决方案。”
1 | root@John:~# cme smb 192.168.1.0/24 |
0x07 基于MSF探测
由于篇幅原因,放到下一篇中。