Leprechaun:渗透测试过程中用来将网络拓扑可视化的工具

2022-04-24 09:34:51 浏览数 (2)

在获取组织网络的提升权限后,接下来你想要做什么?我想大多数的答案应该是,获取有价值的数据!如今市面上已有许许多多的工具和方法,可以帮助我们在渗透测试期间提升权限,以及查找有价值的数据。在本文中我想讨论Leprechaun,一款用于协助后渗透利用的新工具 。为什么选择Leprechaun?在我的许多渗透测试任务中,想要获取至少某种级别的提升权限通常只是一个时间

在获取组织网络的提升权限后,接下来你想要做什么?我想大多数的答案应该是,获取有价值的数据!如今市面上已有许许多多的工具和方法,可以帮助我们在渗透测试期间提升权限,以及查找有价值的数据。在本文中我想讨论Leprechaun,一款用于协助后渗透利用的新工具 。

为什么选择Leprechaun?

在我的许多渗透测试任务中,想要获取至少某种级别的提升权限通常只是一个时间问题,从而允许我在内部环境中枚举系统和服务。Bloodhound则是我个人最喜欢使用的工具之一,它可以帮助你快速识别权限提升路径,而且运行的效果也非常的好。但在黑盒渗透中,我们无法获知网络的实际情况,需要进行尽可能多的侦察,来构建网络图,识别有价值的服务器和资源,绘制数据点等。Leprechaun将会协助我们完成这一过程。

Leprechaun如何工作?

使用诸如Josh Stone的routehunter之类的工具,或者可以在多个主机上递归运行netstat的任意其他进程/工具,你可以提供Leprechaun输出并获得环境中数据流(或网络连接)的可视化表示。

使用命令和参数./leprechaun.rb -f results.txt -p all,你可以快速将netstat结果解析为以下图表:

在一个非常大的网络环境中,能够快速地映射出正在发生的事情可以为你节省大量的时间。使用以上的输出,你可以快速(并且非常容易地)推断出位于192.12.70.50的系统是一个非常重要的系统。因此,你需要将你的注意力集中在这个系统上,并确定这里到底发生了什么。

此外,如果你更喜欢文本输出,那么可以使用与上面相同的命令,并获得以下输出结果:

代码语言:javascript复制
[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等,并获得以下输出和图表:

代码语言:javascript复制
[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)           |
 -------------- ----------------------------- ---------------------------------- 

最后,如果你只对“常见”端口感兴趣,你可以使用硬编码端口列表,也可以根据自己的喜好对其进行修改。这是一个查看常见端口的示例。

代码语言:javascript复制
[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):

代码语言:javascript复制
TCP    192.168.19.25:445       192.168.80.115:64216    ESTABLISHED
TCP    192.168.19.25:445       192.168.80.115:64924    ESTABLISHED
TCP    192.168.19.58:445       192.168.80.115:64923    ESTABLISHED
TCP    192.168.81.10:445       192.168.80.115:64933    ESTABLISHED
TCP    192.168.81.31:445       192.168.80.115:64938    ESTABLISHED
TCP    192.168.19.222:49319    192.168.70.15:1688      ESTABLISHED
TCP    192.168.8.176:1433      192.168.70.16:64744     ESTABLISHED
TCP    192.168.18.128:55276    192.168.70.18:443       ESTABLISHED
TCP    192.168.81.31:59387     192.168.70.18:443       ESTABLISHED
TCP    192.168.81.46:50115     192.168.70.40:50958     ESTABLISHED
TCP    192.168.81.47:63280     192.168.70.45:445       ESTABLISHED
TCP    192.168.81.47:63280     192.168.70.45:445       ESTABLISHED
TCP    192.168.81.47:63280     192.168.70.45:445       ESTABLISHED
TCP    192.168.10.177:49154    192.168.70.50:57488     ESTABLISHED
TCP    192.168.10.178:49154    192.168.70.50:57491     ESTABLISHED
TCP    192.168.10.179:49154    192.168.70.50:57489     ESTABLISHED
TCP    192.168.10.181:135      192.168.70.50:57741     ESTABLISHED
TCP    192.168.10.181:49154    192.168.70.50:57490     ESTABLISHED

总结

我想当你在执行渗透任务时,你应该不想花费数小时去搜寻数据,并尝试学习网络。虽然有时你可以向你的主要联系人询问可能有用的信息,但在短时间内快速了解更多关于网络的信息,可能会对你的客户展示出更大的价值。

在过去,我们使用类似的技术来定位重要的数据库管理系统,并最终能够通过定位SQL客户端和服务器来获取其他凭据,例如Microsoft SQL Server服务帐户。这对于识别其他重要资源(如文件服务器、内网、应用程序服务器等)也很有用。

你可以在Github存储库中获取Leprechaun:https://github.com/vonahi-security/leprechaun

 *参考来源:vonahi

0 人点赞