我们前面的文章既然已经涵盖了许多绕过防火墙规则的单独手艺,那么现在就可以将它们放到真实的***测试方案中了。这一切都始于平安专家M在SecurityFocus***测试列表中的帖子。他和他的同事D正在对一家大公司的内部网络举行***测试,而且刚刚绕过了旨在防止一个VLAN接见另一个VLAN的防火墙规则。我很喜悦地看到他们使用Nmap完成了这次扫描,而且为整个故事留下了纪录。 它很有启发性,由于它纵然在最常见的破绽行使失败后,也能证实锲而不舍和实验种种已知手艺的价值。不要让防火墙击败你!
故事始于M和D执行Nmap扫描,显示它们被卡在经由严酷过滤的网络上。它们可以到达某些公司服务器,但不能到达网络上某处必须存在的客户端计算机(可能易受***的)。他们可能位于受限的会议室或大厅网络中,或者可能是为公司来宾设置的无线接见点。例1显示了一些已经被发现的主机和网络。由于机密性,此故事中的一些细节(例如IP地址)已更改。 我将目的公司称为Megacorp。
例1: Megacorp公司中的一些主机和网络


为了确定是否在10.10.10.0/24网络上隐藏任何主机的目的,D首先使用ICMP回显请求查询(-PE)举行简朴的ping扫描。 效果如实行例2所示。
例2: Ping扫描目的网络

Ping扫描无法找到任何响应主机。D感应很失望,这可以明白,然则至少它使本节加倍有趣和具有启发性。也许网络确实是空的,但也可能挤满了易受***的机械,但D被阻止接见。他需要进一步深入。在示例3中,D选择该网络上的一个IP并执行ping扫描。他指定了数据包跟踪(—packet-trace)和分外的详细水平(-vv)选项,以确定数据包级别发生了什么。只选择一个IP的缘故原由是为了制止混淆数百个数据包。
例3: 单个IP的数据包跟踪

D收到了ICMP不能达的信息。路由器通常在主机不能用时执行此操作,因此它们无法确定MAC地址。这也可能是由于数据包被过滤了。D又扫描了网络中的其他主机,它们的回应都是一样的。也有可能只是ICMP数据包被过滤了,因此D决议实验TCP SYN扫描。他运行下令nmap -vv -n -sS -T4 -Pn --reason 10.10.10.0/24。所有端口均显示为已过滤,而且--reason选项的效果归咎于某些主机无法接见的新闻和某些无响应的端口。无响应端口可能是由于路由器发送的主机不能达新闻的速率限制。许多路由器每几秒钟只会发送其中一个。D可以通过再次运行扫描并查看主机不能达新闻是否来自完全相同的端口集来验证速率限制是否是缘故原由。若是端口相同,则可能是基于端口的特定过滤器。 若是Nmap每次都收到差别端口的主机不能接见新闻,则可能是速率限制。
若是过滤器引起了问题,则它可能是简朴的无状态防火墙,如路由器和交流机上普遍使用的防火墙。如前几章所述,这些无状态的防火墙有时会允许TCP ACK数据包不受滋扰的通过。D重复扫描,但这回使用的是选项-sA指定的ACK扫描,而不是选项-sS。扫描发现的任何unfiltered的端口都将解释ACK数据包通过了防火墙,并从目的主机引起了TCP RST响应。不幸的是,在这种情况下,所有效果都被过滤,就像SYN扫描一样。
D决议实验更高级的器械。他已经从其最初的Nmap扫描中知道端口445在Windows机械上的10.10.6.30(files2.megacorp.com)上是打开的。只管D不能直接到达10.10.10.0/24网络,但也许files2(作为公司的主要文件服务器)可以接见该IP局限。D决议实验使用IPID Idel扫描从files2反弹其扫描。首先,他想通过针对10.10.6.60(端口25打开的已知响应机械)举行测试来确保file2充当僵尸。 该测试的效果示于实行例4中。
例4: 举行一次Idle扫描测试

看起来将10.10.6.30用作空闲僵尸并不能很好地解决问题。若是问题是由于通讯忙碌,他可以在深夜再次实验。--packet-trace选项与对“ TCP Idle扫描(-sI)”一章的详细阅读相结合,可以辅助确定10.10.6.30为什么不充当僵尸。 D实验了他在网络上找到的少数其他主机,但没有一个能够充当僵尸。
D最先忧郁他是否能够突入10.10.10.0/24网络。幸运的是,他在这方面是内行,于是另辟蹊径:IP源路由。在Internet的早期(甚至在使用IPv6的今天),源路由是一项主要且普遍使用的网络诊断功效。它使你可以指定数据包到达目的的路径,而不必依赖通例的路由规则。使用严酷的源路由,必须指定每个跃点。 松散源路由允许你填充要害的IP航路点,而通俗Internet路由则可以填充这些航路点之间的跃点详细信息。
很久以前,网络社区就杀青共识,即源路由带来的贫苦(特别是出于平安性思量)比其价值更大。许多(若是不是大多数的话)路由器都设置为抛弃源路由的IPv4数据包,因此有人以为这个问题在90年代就已经被解决了。然而,源路由,像SYN泛洪和Telnet密码嗅探,仍然是一种罕有但潜在的风险。D通过使用通过10.10.6.60邮件服务器举行源路由的数据包ping扫描文件2(10.10.6.30)来测试此***。扫描效果如例5所示:
例5: 测试源路由扫描

D对此测试感应惊讶和喜悦。 他立即将注意力转向真正的目的网络,并通过一个附加选项重复举行初始ping扫描:--ip-options“ L 10.10.6.60”。这次,Nmap讲述位于10.10.10.7的计算机正在响应。 D知道以前是无法接见的,由于10.10.10.0/24和10.10.5.0/24子网位于差别的路由器VLAN上,设置为防止它们相互通讯。
例6: 最终的乐成

Demetris在此初始扫描中省略了OS检测和版本检测,然则从打开的端口设置文件中看起来像Windows计算机。只要D使用诸如Ncat之类的提供源路由选项的工具,他就可以毗邻并接见这些端口。 我不知道故事接下来会发生什么,然则我预测这涉及D完全***网络,然后辅助公司更平安地重新设计它。