Netz可以帮助我们实现以下任务:
- 大规模的内网和外网扫描;
- 扩展我们的渗透测试工具箱,可直接通过命令行接口工具访问;
- 安装简单;
- 专为红队和蓝队研究人员设计;
本文概述
在这篇文章中,我们将研究互联网中的宏错误配置问题,并学习如何使用Netz来帮助我们了解相关问题。Netz是一款开源工具,正好适合我们的研究。
扫描的常用方式
检测公开暴露在互联网上的网络资产的最快方法是使用搜索引擎服务,如Shodan、Censys或Zoomeye,并使用查询语言查看广泛的互联网组件。如果您想手动执行,而不是使用在线服务,或者如果您想在内部网络上执行扫描,同样有多种方法可以执行。不同类型的扫描是在小型网络和大型网络之间进行的,而大型网络可以扩展到整个互联网。
对于小规模的扫描,可以使用流行的命令nmap(在最高级的渗透测试发行版OS-Kali Linux中提供)。对于更大规模的网络,最流行的是使用ZMap和masscan。
我该如何做呢?
假设我们现在要进行一项研究,比如说你想扫描整个互联网(或者其中的一些),你打算如何使用这些工具?好问题!
如果你想用ZMap或masscan从自己的电脑上扫描整个互联网,你对结果很好奇,而且不能离开电脑,那你应该准备好一些吃的并做好长时间战斗的准备,因为这可能需要好几个礼拜,而且你的带宽资源估计也够呛。为什么呢?因为这些工具的设计是很有攻击性和侵略性的,能够在最短的时间内扫描整个互联网,你可以控制那些工具使用的带宽容量,并减少它的攻击性,但是你需要更多的食物…
减少等待时间
如果你不想等那么久的话,你可以使用一个开放云设备,但即使是这样,基础设备的网络接口控制器(NIC)也会对每秒处理的数据包数量(PPS)进行一个限制。
那你能做什么呢?你可以使用一个更强大的机器,一个更强大的网卡和更多的PPS,然后它会更快。能快多少?这取决于机器类型和网卡类型-时间越短越好,但即使这样也可能需要数小时到数天。问题是,如果你想在最短的时间内做很多测试,即使是最强大的机器和最好的网卡类型也是有限的,那么现在呢?我们可以使用两种不同的方法来分配工作负载:
- 将扫描任务分发到多台机器,每台机器扫描一个专用的CIDR子网,因此我们可以将0.0.0/0拆分为4个子网,这样每台机器将扫描自己的子网,然后合并结果。
- 使用一台具有多个NIC的强大计算机,并让该计算机使用整个子网。
到目前为止,我们一直在讨论网络扫描,但正如我前面提到的,如果您想做的不仅仅是知道有哪些开放端口和元数据,并且希望在扫描时对这些端口执行应用程序操作,那么您需要一个应用程序扫描工具,其中最流行的就是ZGrab2。
计划执行
下面是我们计划想要实现的工作流:
- 尽可能快地扫描某个子网;
- 将这些IP/端口元组通过管道传输到应用程序扫描工具,以测试这些端口中的各种安全问题;
- 无尽地等待...
下面给出的是应用程序安全扫描的几个例子:
- 你想要测试一个Elasticsearch服务器是否没有配置管理员访问,我们可以通过向`/_cat/indices`发送一个HTTP调用请求,如果返回的是200 OK,则说明存在问题。
- 你想要测试一台Web服务器中的‘.git’目录是否存在错误配置,我们可以向`/.git`发送一个HTTP调用,如果返回的是200 OK,则说明存在问题。
- 你想要测试Redis / Memcached / PostgreSQL / MySQL是否被配置为不需要凭证即可访问,我们同样可以使用ZGrab2进行测试。
在任何需要添加的协议或技术堆栈缺失的情况下,ZGrab2都是可扩展的,因此您只需在Golang中编写一个小函数,就可以轻松地扩展工具功能。
我为什么要去寻找互联网范围的错误配置?
如果我告诉你你的家庭路由器对互联网开放供内部访问,你会有什么感觉?听起来有点吓人,但你脑海中浮现的第一件事是:我有什么需要保护的吗?大多数时候答案都是-不,没什么特别的。对于那些回答不了的人,我将用黑客攻破婴儿监视器的著名故事来提醒你,我将让你想象接下来会发生什么!
现在是一个新的挑战:如果我告诉你,你公司的内部数据,或者更糟的是,你公司的客户数据,是对互联网开放的,你会有什么感觉?如果你感觉心跳开始加快-恭喜你!你成功通过了挑战!你现在可以继续阅读了。
我们怎么解决这个问题?
这个世界已经变了,我们正处在第五次科技浪潮中,和往常一样,软件的世界在向前发展,而网络空间的解决方案却只能紧随其后。为了保持竞争力,组织正在以前所未有的速度前进,在不同领域增加了软件自动化,所有团队都采用了不同的工具和系统。由于公共云的兴起和“一切皆是服务”的爆炸式增长,以及在任何地方,一切都由软件自动化控制的事实,公司都在快速发展。
脚踏实地
今天,世界上几乎所有的公司都在使用不同的第三方SAAS、PAAS和IAAS。在这些“As-A-Service”解决方案之上,还安装了数据管道工具、数据科学框架、不同的开源项目以及DevOps基础设施和可观察性工具。所有这些不同的解决方案都使用不同的配置&机密/凭据,包括数据库连接字符串、API密钥、非对称密钥、令牌、用户名/密码组合、管理、安全和隐私设置等等。即使是今天的基础设施也不是以前的样子——基础设施是由代码控制的,而代码又包含了很多配置类型,因此变得更加复杂。在一些组织中,在多个公共云供应商的多个基础设施中,复杂性甚至更高。
具有讽刺意味的是,这些尖端技术让我们能够越来越快地走向一个更好的地方,但同时也带来了网络空间的风险。如此强大的权力带来了巨大的责任:你如何确保你公司的所有资产都得到保障?
那我们该怎么办?
既然我们站在同一个立场上,而且复杂性非常明显,那么就很容易理解对供应链任何关键部分的错误配置或错误处理是如何导致严重后果的了。错误的大小与损失不成比例,一个相对较小的错误可能导致公司在“最佳情况”下损失数百万美元,或在最坏情况下停业。