云服务供应商归属的侦察工具
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/iknowjason/edge
云边缘
通过查找IP地址,基于云服务供应商发布的JSON数据,找到云提供商和其他详细信息
云边缘是一个专注于探索云服务提供商的侦察工具。它可用于云归因和取证、渗透测试、漏洞赏金、红队测试或云提供商的一般研发。Edge自动加载云服务提供商(AWS、Azure、GCP)发布的IP地址范围的JSON文件,并根据输入的IP地址进行前缀查找。可用于与其他侦察工具集成。在黑盒网络渗透测试中,edge可以快速发现客户所使用的云服务提供商,或者仅用于双重验证规则的适用范围。三大主要云服务提供商(亚马逊、Azure、GCP)都发布了他们所有IP前缀和/或网络块的列表。在某些情况下,这也包括区域/数据中心和服务名称。这对于侦察很有用,而且这个工具可以快速解析和查找基于IP前缀的信息。

输入和输出
以下是有关该工具输入和输出方式的几点说明。
云提供商的JSON文件
当工具运行时,它会自动尝试下载并加载三个云提供商的IP地址范围JSON文件到工作目录中。以下是它的工作原理:
默认情况下,除非使用(-nd)标志禁用自动下载,否则它将尝试从下面的URL下载这三个文件。
- ip-ranges.json(AWS) --> https://ip-ranges.amazonaws.com/ip-ranges.json
- azure.json(Azure) --> (需要定期更新的URL)
- goog.json(GCP) --> https://www.gstatic.com/ipranges/goog.json
这三个文件已经包含在此GitHub存储库中,因此下载它们将更新任何必要的更改。下载完成后,您可以使用 -nd 标志运行工具,以避免不必要的下载。
如果在工作目录中找到这些文件,所有IP前缀将被加载到内存中。云提供商IP范围的JSON文件总是尝试从工作目录中加载。使用 -prefix 标志启用实际的查找操作。
当启用 -dns 模式时,A记录和CNAME记录的DNS查找将被缓冲,直到所有DNS查询完成。完成查询后,将显示输出。
一个建议是最初运行该工具来下载所有三个文件,并确保它们是最新的。然后,在后续的运行中使用 -nd 来提高性能,并避免每次运行都下载文件。
默认启用 模式
默认情况下,输出显示以 [INF] 开头的信息性消息。可以使用 -silent 标志禁用此功能。输出将如下所示:
./edge -single 140.179.144.130
[INF] Single IP prefix lookup of 140.179.144.130
[INF] Matched IP [140.179.144.130] to Cloud Provider via prefix [AWS:140.179.144.128/25]
[INF] Matched IP [140.179.144.130] to Cloud Service [API_GATEWAY] and Region [cn-north-1]
140.179.144.130,Provider:AWS;Prefix:140.179.144.128/25;Region:cn-north-1;Service:API_GATEWAY
信息性消息会告诉您是否通过DNS的"A"记录、DNS的"CNAME"记录、证书(crt.sh)找到记录,或者是否找到前缀匹配。前缀匹配将告诉您使用匹配前缀检测到的云提供商,以及(如果适用)云服务和区域。目前尚未检测到Azure区域,但可以检测到AWS的区域。
默认的CSV输出
使用 -dns 或 crt 模式时,默认情况下将输出以逗号分隔的结果到控制台。这样可以方便使用其他工具解析这些结果。
FQDN,IP,SOURCE,CNAME,DESCRIPTION
- FQDN: 这是作为FQDN的DNS查找结果。
- IP: 如果找到,这是从A记录返回的IP地址。
- SOURCE: 这是查找的来源,可以是A、CNAME或证书。
- CNAME: 如果请求是CNAME,这将返回CNAME或ALIAS。
- DESCRIPTION: 如果启用了
-prefix,这将返回来自IP地址范围描述的任何结果。
使用 -prefix 模式和 -ip 或 -nmap,默认情况下将输出以逗号分隔的结果到控制台:
IP,DESCRIPTION
默认的CSV输出
使用 -dns 或 crt 模式时,默认情况下将输出以逗号分隔的结果到控制台。这样可以方便使用其他工具解析这些结果。
FQDN,IP,SOURCE,CNAME,DESCRIPTION
- FQDN: 这是作为FQDN的DNS查找结果。
- IP: 如果找到,这是从A记录返回的IP地址。
- SOURCE: 这是查找的来源,可以是A、CNAME或证书。
- CNAME: 如果请求是CNAME,这将返回CNAME或ALIAS。
- DESCRIPTION: 如果启用了
-prefix,这将返回来自IP地址范围描述的任何结果。
使用 -prefix 模式和 -ip 或 -nmap,默认情况下将输出以逗号分隔的结果到控制台:
IP,DESCRIPTION
其中 IP 是IP地址,DESCRIPTION 是从云提供商IP地址范围JSON文件的IP地址范围查找中获取的结果(如果适用)。
使用 -ptr 模式和 -ip 或 -nmap,默认情况下将输出以逗号分隔的结果到控制台:
IP,PTR
其中 IP 是IP地址,PTR 是从DNS PTR查找中获取的结果(如果找到)。
使用 -IP 的IP地址文件
-ip 标志表示迭代处理一个IP地址列表,并可在 prefix 或 ptr 模式下使用。当使用 -ip <hosts.txt> 运行工具时,它会期望每个IP地址在单独的一行中,并会遍历列表进行查找。以下是文件内容的示例:
user@host:~/demo$ cat ip.txt
3.133.110.237
18.117.232.92
18.221.247.211
3.137.199.52
Nmap XML 文件
-nmap 标志表示解析一个Nmap XML文件。它将查找Nmap扫描文件中标记为 "Up" 的任何主机。例如,-nmap scan1.xml 表示工具会解析 scan1.xml 文件,并查找Nmap标记为 Up 的任何主机。然后,您可以使用 -ptr 或 -prefix 运行工具进行IP地址的查找。
使用 -wordlist 的子域名枚举
该工具通过迭代包含主机名的单词列表执行经典的子域名枚举。在 -dns 模式下,可以使用 -wordlist <hosts.txt>。以下是 hosts.txt 文件的示例:
user@host:~/demo$ more subdomains-5k.txt
www
blog
news
blogs
en
online
选项
$ edge -help
用法:edge:
-crt
证书透明度查找模式
-csv string
将结果输出到CSV文件中
-dns
A和CNAME记录查找模式
-domain string
进行猜测的域名。
-ip string
用于IP地址的文本文件
-nd
禁用(nd或no download)自动下载提供商前缀
-nmap string
要使用的Nmap扫描XML文件。
-output
启用输出到CSV
-prefix
IP前缀CSP查找模式
-ptr
PTR查找模式
-resolver string
要使用的DNS服务器。(默认为“8.8.8.8:53”)
-silent
启用静默模式以抑制[INF]
-single string
要进行前缀查找的单个IP地址
-verbose
启用详细输出
-wordlist string
用于猜测的单词列表。
-workers int
要使用的工作线程数。(默认为10)
示例
示例1: 查找单个IP地址
edge -single <ip_address>
描述: 对提供的 <ip_address> 执行单个IP地址的前缀查找,与云提供商的JSON文件进行匹配。
示例输出:
edge -single 140.179.144.130
[INF] Single IP prefix lookup of 140.179.144.130
[INF] Matched IP [140.179.144.130] to Cloud Provider via prefix [AWS:140.179.144.128/25]
[INF] Matched IP [140.179.144.130] to Cloud Service [API_GATEWAY] and Region [cn-north-1]
140.179.144.130,Provider:AWS;Prefix:140.179.144.128/25;Region:cn-north-1;Service:API_GATEWAY
示例2: 查找单个IP地址并抑制信息消息
$ edge -single <ip_address> -silent
描述: 与上述示例相同,但启用了静默模式。这会抑制带有额外信息的 消息。
示例输出:
edge -single 140.179.144.130
140.179.144.130,Provider:AWS;Prefix:140.179.144.128/25;Region:cn-north-1;Service:API_GATEWAY
示例3: 使用本地提供商的JSON文件而不是下载它们。
edge -single <ip_address> -silent -nd
描述: 不尝试下载提供商的JSON文件,而是使用工作目录中的本地文件。
示例4: 使用单词列表进行子域名枚举,并进行证书透明度和前缀查找。
edge -domain <domain> -dns -crt -prefix -wordlist <wordlist.txt>
描述: 对基于 wordlist.txt 的子域名进行枚举,查找所有A和CNAME记录,并进行与域名的证书透明度查找。对于通过证书透明度找到的每个枚举主机,还要进行DNS查找。在三个云服务提供商的IP前缀列表中,对IP地址进行前缀查找。
示例输出:
edge -domain tesla.com -dns -crt -prefix -wordlist subdomains-5k.txt
[INF] Found host via crt.sh [nas-origin.tesla.com]
nas-origin.tesla.com,,Certificate,,
[INF] Found host via crt.sh [eua-origin.tesla.com]
eua-origin.tesla.com,,Certificate,,
[INF] Found host via CNAME [fleetview.prd.na.fn.tesla.com.:fleetview.prd.usw2.fn.tesla.com]
fleetview.prd.na.fn.tesla.com.,,CNAME,fleetview.prd.usw2.fn.tesla.com,
[INF] Found host via CNAME [fleetview.prd.usw2.fn.tesla.com.:a69ff530d53f14d8e8059a3aee44e9ab-1848028946.us-west-2.elb.amazonaws.com]
fleetview.prd.usw2.fn.tesla.com.,,CNAME,a69ff530d53f14d8e8059a3aee44e9ab-1848028946.us-west-2.elb.amazonaws.com,
[INF] Found host via A [a69ff530d53f14d8e8059a3aee44e9ab-1848028946.us-west-2.elb.amazonaws.com:52.39.128.70]
[INF] Matched Cloud Provider via prefix [AWS:52.36.0.0/14]
[INF] Matched IP [52.39.128.70] to Cloud Service [EC2] and Region [us-west-2]
示例5: 仅使用单词列表进行子域名枚举,不进行证书透明度或IP前缀查找。
edge -domain <domain> -dns -wordlist <wordlist.txt>
描述: 仅对基于单词列表的所有A和CNAME记录进行子域名枚举。
示例输出:
edge -domain tesla.com -dns -wordlist subdomains-5k.txt
[INF] Found host via CNAME [fleetview.prd.na.fn.tesla.com.:fleetview.prd.usw2.fn.tesla.com]
fleetview.prd.na.fn.tesla.com.,,CNAME,fleetview.prd.usw2.fn.tesla.com,
[INF] Found host via A [e9056.b.akamaiedge.net:23.2.254.58]
e9056.b.akamaiedge.net,23.2.254.58,A,teslamotors.vanity3.ca1.qualtrics.com,
示例6: 仅使用单词列表进行子域名枚举,不进行证书透明度查找,但对找到的任何IP地址进行IP前缀查找。
edge -domain <domain> -dns -wordlist <wordlist.txt> -prefix
描述: 仅对基于单词列表的所有A和CNAME记录进行子域名枚举。对于找到的每个IP地址,执行IP前缀查找。
示例7: 证书透明度日志查找。
edge -domain <domain> -crt
描述: 使用 https://crt.sh 进行证书透明度日志查找。
示例输出:
edge -domain tesla.com -crt
[INF] Running certificate transparency lookup crt.sh
[INF] Found host via crt.sh [solarbonds.tesla.com]
solarbonds.tesla.com,,Certificate,,
[INF] Found host via crt.sh [energydesk.tesla.com]
energydesk.tesla.com,,Certificate,,
示例8: 证书透明度与DNS查找
edge -domain <domain> -dns -crt
描述: 进行证书透明度查找。对于通过证书透明度找到的每个主机,进行完整的DNS A记录或CNAME记录查找。
示例9: IP前缀查找与IP地址列表
edge -prefix -ip <ip-hosts.txt>
描述: 对云服务提供商IP前缀进行IP地址查找。接受ip-hosts.txt中的IP地址列表,并逐行进行查找。每行一个IP地址。
示例输出:
edge -prefix -ip ip-hosts.txt
[INF] Matched IP [140.179.144.130] to Cloud Provider via prefix [AWS:140.179.144.128/25]
[INF] Matched IP [140.179.144.130] to Cloud Service [API_GATEWAY] and Region [cn-north-1]
140.179.144.130,Provider:AWS;Prefix:140.179.144.128/25;Region:cn-north-1;Service:API_GATEWAY
[INF] Matched IP [18.189.124.22] to Cloud Provider via prefix [AWS:18.189.0.0/16]
[INF] Matched IP [18.189.124.22] to Cloud Service [EC2] and Region [us-east-2]
18.189.124.22,Provider:AWS;Prefix:18.189.0.0/16;Region:us-east-2;Service:EC2
[INF] Matched IP [20.60.128.132] to Cloud Provider via prefix [Azure:20.60.0.0/16]
[INF] Matched IP [20.60.128.132] to Cloud Service [AzureStorage]
20.60.128.132,Provider:Azure;Prefix:20.60.0.0/16;Name:Storage;ID:Storage;Platform:Azure;SystemService:AzureStorage
示例10: DNS PTR查找与IP地址列表
edge -ptr -ip <ip-hosts.txt>
描述: 基于ip-hosts.txt中的每行IP地址进行DNS PTR查找。
示例输出:
edge -ptr -ip ip-hosts.txt
140.179.144.130,ec2-140-179-144-130.cn-north-1.compute.amazonaws.com.cn.
示例
示例11: 解析nmap文件,并对找到的IP地址进行IP前缀查找
edge -prefix -nmap <results.xml>
描述: 解析nmap扫描的XML文件,识别所有的 "Up" 主机。对于nmap XML扫描结果中的每个 "Up" 主机,执行云服务提供商的IP前缀查找。
示例12: 解析nmap文件,并对找到的每个IP地址进行DNS PTR查找
edge -ptr -nmap <results.xml>
描述: 解析nmap扫描的XML文件,并对每个 "Up" 主机执行DNS PTR查找。
示例13: 使用100个工作线程以提高性能
edge -domain <domain> -dns -wordlist <wordlist.txt> -workers 100
示例
示例11: 解析nmap文件,并对找到的IP地址进行IP前缀查找
edge -prefix -nmap <results.xml>
描述: 解析nmap扫描的XML文件,识别所有的 "Up" 主机。对于nmap XML扫描结果中的每个 "Up" 主机,执行云服务提供商的IP前缀查找。
示例12: 解析nmap文件,并对找到的每个IP地址进行DNS PTR查找
edge -ptr -nmap <results.xml>
描述: 解析nmap扫描的XML文件,并对每个 "Up" 主机执行DNS PTR查找。
示例13: 使用100个工作线程以提高性能
edge -domain <domain> -dns -wordlist <wordlist.txt> -workers 100
描述: 使用100个工作线程进行DNS扫描,以提高扫描速度。默认的工作线程数为10。
示例14: 指定DNS解析器
edge -domain <domain> -dns -wordlist <wordlist.txt> -resolver 8.8.4.4:53
描述: 指定DNS解析器为8.8.4.4,端口为53。默认为8.8.8.8。
安装
预编译的可执行文件
您可以获取预编译的可执行文件,或者自行构建。确保您也获取了云提供商的IP前缀JSON文件。
构建
使用 go1.18 进行测试。
$ git clone https://github.com/iknowjason/edge.git
$ cd edge
~/edge$ go build edge.go
~/edge$ ./edge (验证)