Netz:喝咖啡时发现互联网的错误配置

2021-03-24 00:45:17

该项目的目的是发现Web服务器/数据库/缓存服务等网络组件的互联网范围错误配置,以及此类错误配置的基本用例 - 在没有凭证的情况下公开暴露在世界的服务\ \ _(ツ)_ /

您可能熟悉Shodan,Censys,Zoomeye等工具查询如此广泛的互联网组件,但在这里我们将以一种有趣的方式做到这一点::掌握:D.

我们将使用的工具是Masscan,ZgraB2来自ZMAP项目。对于端口扫描的第一阶段,我们将使用MassCan,然后用于第二阶段,我们将运行zgrab2来检查这些端口的应用程序。

ZMAP也是互联网范围的扫描仪,所以为什么MassCan而不是ZMAP ...... ZMAP基本上在过去支持它,但现在ZMAP与最新的PF_RING ZC(零拷贝)兼容。

请注意,PF_Ring ZC(零拷贝)需要每Mac / NIC许可证(您可以在演示之前运行5分钟,然后才能杀死流量),并且您需要一个特殊的NIC来自英特尔(Don' t担心,公共云有这样的)所以你可以在没有这个模块的情况下去,并按时按时等待结果。

使用Netz Cloud Runner工具 - 此工具自动化完整的管道,包括AWS顶部的基础架构

如果您想了解更多关于它的信息,您可以在此处找到:饮用咖啡时扫描整个互联网

从步骤1到zgrab2的管道IP列表(可以为任何Elasticsearch API端点的zgrab2_endpoint环境变量更改,例如:/ _cat / indices

该测试流程展示了弹性研究扫描。您可以通过zgrab2模块在您希望的任何端口(服务端口)和任何受支持的协议上运行此类扫描。环境变量可以修改更多控制:port_to_scan子网_to_scan zgrab2_endpoint

如果您希望添加缺少的协议,则可以通过添加新协议来扩展zgrab2

我们将通过设置更快,更快地(减少等待时间)。

这是最简单的选项,因为它在弹性容器服务(ECS)顶部的AWS中自动化的所有选项。它能做什么:

$ go build github.com/spectralops/netz$ netzname:netz - netz cloud runnersage:netz [选项]命令:help,h显示一个commandglobal选项的命令或帮助列表:--debug显示调试信息(默认值:false ) - 在JSON或YAML - CLUST值中的文件值任务定义文件ECS群集名称(默认值:" netz")--log-group值cloudwatch log组名称要将日志写入日志(默认值:&# 34; netz-runner")--security-group值安全组启动任务。可以指定多次 - subnet值子网来启动任务。 - Region Value AWS区域 - Number-of-Nic Value Numply Interachets以创建和附加到实例。 (默认值:0) - 在静态值实例类型中。 - 密钥名称值实例键名为ssh。 - netz的role名称值角色名称。 (默认:" netzrole") - netz的roly-policy-name值角色策略名称。 (默认:" netzpolicy")--instance-profile-name值实例配置文件名称以附加到实例。 (默认:" netzinstanceprofile") - task-timeout值任务超时(以分钟为单位),在此之后停止所有内容。 (默认值:120) - 完成后,会删除云资源的跳过销毁。 (默认值:false)--help,-h显示帮助(默认值:false)所需的标志"文件,安全组,子网,区域,nic编号,实例类型,instance-key-key-key&# 34;

$ netz --file taskdefinition.json --security-group sg-xxxxxxxxxxxxxxxxxx --subnet子网-xxxxxxxx --region美斯-1 - nubug-nic 5 - Instance-type C4.8xlarge - -Instance-key-name xxxxxxxxx

⚠️由于Masscan熔点网络,SSH主要是不可用,也会延迟CloudWatch日志,因此用户终端中的尾部日志将花一些时间。

请注意,TaskDefinition.json与使用AWS ECS自动化方式与运行有关。在该文件中,您将能够更改子网&端口扫描,也是应用端点。在此文件中,您还可以控制CPU和amp; RAM你分配给任务。此测试假定C4.8xlarge,因此配置为60 x CPU和36 GB RAM。

在AWS上用C4.8xlarge,6 x NIC〜2.9m〜3.5m PPS =>花了25分钟

$ git克隆https://github.com/spectralops/netz$ cd netz $ docker build -t netz。$ docker run -e port_to_scan =' 9200' -e subnet_to_scan =' 0.0.0.0/0' -e zgrab2_endpoint =' /' -e task_definition =' Docker' -v / tmp /:/ opt / out --network = host -it netz

用简单的硬件刮掉整个互联网的时间,简单的互联网骨干可能需要数天

在云上运行与多个10gbps nic(例如在aws c4.8xlarge 10Gbps NIC中)

网络:2以太网:ENS3:DHCP4:TRUE匹配:MacAddress:03:XX:XX:XX:XX:XX Set-name:eSEN3 ens4:DHCP4:True匹配:Macaddress:04:XX:XX:XX:XX :XX Set-name:ens4 ens5:dhcp4:true匹配:macaddress:05:xx:xx:xx:xx:xx set-name:ens5 ens6:dhcp4:true匹配:macaddress:06:xx:xx:xx:xx :XX Set-name:ens6 ens7:dhcp4:true匹配:macaddress:07:xx:xx:xx:xx:xx set-name:ens7

请注意,现在使用多个NIC,将在Docker运行中创建的MassCan配置将包含所有NIC:

适配器[0] = Ens3Router-Mac [0] = 06:xx:xx:xx:xx:xxadapter-ip [0] = 172.31.8.167Adapter-Mac [0] = 06:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YYAPLER [1] = Ens4Router-Mac [1] = 06:xx:xx:xx:xx:xxadapter-ip [1] = 172.31.8.76Adapter-Mac [1] = 06:YY:YY:YY:YY:YY:YY:YY:YY:YYADAPLER [ 2] = Ens5Router-Mac [2] = 06:xx:xx:xx:xx:xxadapter-ip [2] = 172.31.1.233Adapter-Mac [2] = 06:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY

在AWS上用C4.8xlarge,6 x NIC〜2.9m〜3.5m PPS =>花了35分钟

如果您希望使用PF_RING ZC(零拷贝)在几分钟内刮互联网,您需要运行一台支持内核设备驱动程序的计算机和具有10Gbps NIC的计算机。

因为PF_RING ZC(零拷贝)绕过TCP堆栈,所以如果您只有一个NIC ENS3并且您将使用ZC:ENC3打开它,您将丢失SSH访问权限。如果您仍然希望SSH访问权限,则需要另一个NIC,例如, ENS4,然后使用ZC打开ENS4,因此它将是ZC:ENS4,因此ENS3将继续作为SSH的管理NIC。

如果你用1Gbps NIC运行一台机器,它仍然会很快,但它将需要x10更多的时间\ \ _(ツ)_ /

您不必像C4.8xlarge这样的机器运行这样的机器,可以运行支持IXGBEVF的每台计算机:增强网络与英特尔82599 VF接口

您可以从命令中获取Adapter-IP和Adapter-Mac:ifconfig您可以从命令中获取Adapter-Mac:ARP -A $ sudo pf_ringcfg --list-interfacesName:ens3驱动程序:ixgbevf [由zc]名称 ixgbevf [zc支持] $ sudo pf_ringcfg --list-interfacesName:ens3驱动程序:ixgbevf ZC] 在使用C4.8xlarge的AWS上,4 x NIC〜10.5m〜12m PPS => 花了10分钟 我们生活中的主要动力是使世界变得更美好,更安全。 如果您想使用此信息来伤害某人,您就是对面,并以自己的风险。