为什么选择Leprechaun?
在我的许多渗透测试任务中,想要获取至少某种级别的提升权限通常只是一个时间问题,从而允许我在内部环境中枚举系统和服务。Bloodhound则是我个人最喜欢使用的工具之一,它可以帮助你快速识别权限提升路径,而且运行的效果也非常的好。但在黑盒渗透中,我们无法获知网络的实际情况,需要进行尽可能多的侦察,来构建网络图,识别有价值的服务器和资源,绘制数据点等。Leprechaun将会协助我们完成这一过程。
Leprechaun如何工作?
使用诸如Josh Stone的routehunter之类的工具,或者可以在多个主机上递归运行netstat的任意其他进程/工具,你可以提供Leprechaun输出并获得环境中数据流(或网络连接)的可视化表示。
使用命令和参数./leprechaun.rb -f results.txt -p all,你可以快速将netstat结果解析为以下图表:
在一个非常大的网络环境中,能够快速地映射出正在发生的事情可以为你节省大量的时间。使用以上的输出,你可以快速(并且非常容易地)推断出位于192.12.70.50的系统是一个非常重要的系统。因此,你需要将你的注意力集中在这个系统上,并确定这里到底发生了什么。
此外,如果你更喜欢文本输出,那么可以使用与上面相同的命令,并获得以下输出结果:
[root:vonahisec-kali:~/test]# ./leprechaun.rb -f results.txt -p all [*] Completed! Graph output file located at: ./network_diagram.png+---------------+-----------------------------+----------------------------------+| Server | Number of connected clients | Highest traffic destination port |+---------------+-----------------------------+----------------------------------+| 192.12.70.50 | 21 | 57488/tcp (1 clients) || 192.12.80.115 | 5 | 64216/tcp (1 clients) || 192.12.70.71 | 4 | 80/tcp (4 clients) || 192.12.206.48 | 3 | 5555/tcp (3 clients) || 192.12.71.90 | 2 | 50471/tcp (1 clients) || 192.12.70.18 | 2 | 443/tcp (2 clients) || 192.12.70.45 | 1 | 445/tcp (1 clients) || 192.12.70.40 | 1 | 50958/tcp (1 clients) || 192.12.70.16 | 1 | 64744/tcp (1 clients) || 192.12.70.15 | 1 | 1688/tcp (1 clients) |+---------------+-----------------------------+----------------------------------+
在某些情况下,这可能会变得非常复杂,具体取决于网络的大小和环境中已建立连接的数量。它可能看起来会像下面这样:
因此,如果你只想要一个特定的端口,请将上述参数中的all替换为特定端口,例如80,甚至80,443,8080等,并获得以下输出和图表:
[root:vonahisec-kali:~/test]# ./leprechaun.rb -f results.txt -p 80 [*] Completed! Graph output file located at: ./network_diagram.png+--------------+-----------------------------+----------------------------------+| Server | Number of connected clients | Highest traffic destination port |+--------------+-----------------------------+----------------------------------+| 192.12.70.71 | 4 | 80/tcp (4 clients) |+--------------+-----------------------------+----------------------------------+
最后,如果你只对“常见”端口感兴趣,你可以使用硬编码端口列表,也可以根据自己的喜好对其进行修改。这是一个查看常见端口的示例。
[root:vonahisec-kali:~/Downloads/test]# ./leprechaun.rb -f netstat.txt -p common [*] Completed! Graph output file located at: ./network_diagram.png+--------------+-----------------------------+----------------------------------+| Server | Number of connected clients | Highest traffic destination port |+--------------+-----------------------------+----------------------------------+| 192.12.70.71 | 4 | 80/tcp (4 clients) || 192.12.70.18 | 2 | 443/tcp (2 clients) || 192.12.70.45 | 1 | 445/tcp (1 clients) |+--------------+-----------------------------+----------------------------------+
如果你对将要解析的示例netstat文件感到好奇,它可能是几行包含你从netstat获得的正常格式,如下所示(仅限IPv4):
TCP 192.168.19.25:445 192.168.80.115:64216 ESTABLISHEDTCP 192.168.19.25:445 192.168.80.115:64924 ESTABLISHEDTCP 192.168.19.58:445 192.168.80.115:64923 ESTABLISHEDTCP 192.168.81.10:445 192.168.80.115:64933 ESTABLISHEDTCP 192.168.81.31:445 192.168.80.115:64938 ESTABLISHEDTCP 192.168.19.222:49319 192.168.70.15:1688 ESTABLISHEDTCP 192.168.8.176:1433 192.168.70.16:64744 ESTABLISHEDTCP 192.168.18.128:55276 192.168.70.18:443 ESTABLISHEDTCP 192.168.81.31:59387 192.168.70.18:443 ESTABLISHEDTCP 192.168.81.46:50115 192.168.70.40:50958 ESTABLISHEDTCP 192.168.81.47:63280 192.168.70.45:445 ESTABLISHEDTCP 192.168.81.47:63280 192.168.70.45:445 ESTABLISHEDTCP 192.168.81.47:63280 192.168.70.45:445 ESTABLISHEDTCP 192.168.10.177:49154 192.168.70.50:57488 ESTABLISHEDTCP 192.168.10.178:49154 192.168.70.50:57491 ESTABLISHEDTCP 192.168.10.179:49154 192.168.70.50:57489 ESTABLISHEDTCP 192.168.10.181:135 192.168.70.50:57741 ESTABLISHEDTCP 192.168.10.181:49154 192.168.70.50:57490 ESTABLISHED
总结
我想当你在执行渗透任务时,你应该不想花费数小时去搜寻数据,并尝试学习网络。虽然有时你可以向你的主要联系人询问可能有用的信息,但在短时间内快速了解更多关于网络的信息,可能会对你的客户展示出更大的价值。
在过去,我们使用类似的技术来定位重要的数据库管理系统,并最终能够通过定位SQL客户端和服务器来获取其他凭据,例如Microsoft SQL Server服务帐户。这对于识别其他重要资源(如文件服务器、内网、应用程序服务器等)也很有用。