使用NetworkRecon.ps1识别网络漏洞
David Fletcher //
每当有机会时,我喜欢在测试中进行约五分钟的数据包收集,以便分析结果并寻找基于网络的攻击机会。然而,在许多任务中,我发现没有机会检查网络流量。这是因为要么不想安装第三方软件,要么技术控制阻止了安装,要么测试范围不包括此类操作。在本文中,我介绍NetworkRecon.ps1,这是一个脚本,允许您执行快速分析,以识别Windows客户端系统可见的潜在易受攻击协议。
最初,我尝试构建一个工具,收集和分析流量,提供类似于PowerUp.ps1中Invoke-AllChecks的输出,如下所示。PowerUp用于提供非常简洁的反馈,指示操作系统的配置可能允许权限提升的地方。此脚本的意图是对网络协议滥用做同样的事情。
在调查可用选项时,我发现使用PowerShell(特别是Windows 7及更旧的操作系统)进行数据包捕获和分析的功能在所有情况下都不是创建此输出的最佳选择。幸运的是,我已经熟悉了Kevin Robertson编写的Invoke-Inveigh,并包含在其他几个利用框架中。在遇到收集和分析工作流的问题后,我采用了在此工具和其他工具中观察到的数据包嗅探功能作为替代方案。
该脚本包括三个功能:Invoke-NeighborAnalysis、Invoke-TraceCollect和Invoke-LiveAnalysis。这些功能提供不同的检测能力,以识别CDP、DTP、VTP、LLDP、mDNS、NBNS、LLMNR、HSRP、OSPF和VRRP协议,这些协议可用于信息收集或指示攻击漏洞。此外,脚本分析DHCP响应,寻找指示支持网络启动的选项。
Invoke-NeighborCacheAnalysis
Invoke-NeighborAnalysis尝试检测OSI模型第2层中上述协议的存在。此功能使用“arp -a”或基于支持的PowerShell版本的Get-NetNeighbor的输出。分析输出以查找相应的多播第2层和第3层地址,指示协议可能正在使用并从终端主机可见。数据包嗅探器使用原始套接字,不收集以太网帧。因此,这是目前检测CDP、DTP、VTP和LLDP的唯一方法。我对使用PowerShell收集以太网帧进行了一些研究,但一无所获。Invoke-NeighborCacheAnalysis的输出如下所示。
Invoke-TraceCollect
Invoke-TraceCollect完全按照其名称执行。它简单地将网络流量记录在跟踪文件中,用户指定时间段(默认为5分钟),以便用户可以将流量移出并使用其他工具进行分析。此功能将输出“.cap”文件或“.etl”文件,具体取决于操作系统功能。Windows 8.1及更新版本默认支持协议工程框架(PEF)PowerShell命令集。此框架允许直接以数据包捕获格式保存网络跟踪。旧版本的Windows支持事件跟踪日志(ETL)格式,该格式以XML和二进制格式记录数据包。ETL格式也可以转换为数据包捕获。但是,使用Microsoft消息分析器(额外的Microsoft软件包)来执行此操作。此功能的输出仅指示使用哪种格式以及跟踪文件的写入位置。要运行此功能,您必须在目标计算机上具有管理员权限。
Invoke-LiveAnalysis
Invoke-LiveAnalysis使用原始IP套接字从线路上拾取流量并执行分析。此方法使用第3层多播地址和知名端口来识别感兴趣协议的存在。当观察到mDNS、NBNS、LLMNR、HSRP、OSPF或VRRP数据包时,用户会收到通知。通知包括从观察到的流量中解析的详细信息,例如身份验证方法、使用的密码或哈希,以及观察到的查询的主机名。上述几种协议的输出可以在下面的屏幕截图中看到。
选择上述协议是因为每种协议都存在攻击和可用工具。协议及其相关漏洞如下所述。
- CDP和LLDP可能向攻击者暴露有价值的信息,例如第2层设备名称和固件版本。
- DTP和VTP可能允许攻击者通过VLAN跳跃攻击访问网络的受保护区域。
- mDNS、NBNS和LLMNR可能允许攻击者向多播名称解析请求发送中毒响应。这些攻击由Invoke-Inveigh和Responder等工具执行,可能导致凭据泄露或通过将请求主机定向到攻击者控制的计算机进行直接利用。
- HSRP和VRRP可能允许攻击者通过在冗余配置中选择攻击计算机作为活动路由器来成为中间人(MitM)。
- OSPF可能允许攻击者通过操纵OSPF路由表来成为MitM。
- 发现DHCP启动选项可能允许攻击者启动授权操作系统或下载和分析启动映像以获取有效凭据。
此工具的最终目标是为上述所有第3层协议包括情报收集和攻击能力。将继续调查第2层协议,以确定是否可以使用本机PowerShell接口进行第2层攻击。
您可以在https://bitbucket.org/Super68/networkrecon/找到完整脚本,并在https://www.sans.org/reading-room/whitepapers/access/identifying-vulnerable-network-protocols-powershell-37722找到每个功能的扩展说明。
请提供反馈,并告诉我们此工具在实际中的工作效果!