云服务供应商归属的侦察工具

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/iknowjason/edge

云边缘

通过查找IP地址,基于云服务供应商发布的JSON数据,找到云提供商和其他详细信息

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

 

ad1a1b7183171655

输入和输出

以下是有关该工具输入和输出方式的几点说明。

云提供商的JSON文件

当工具运行时,它会自动尝试下载并加载三个云提供商的IP地址范围JSON文件到工作目录中。以下是它的工作原理:

默认情况下,除非使用(-nd)标志禁用自动下载,否则它将尝试从下面的URL下载这三个文件。

这三个文件已经包含在此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输出

使用 -dnscrt 模式时,默认情况下将输出以逗号分隔的结果到控制台。这样可以方便使用其他工具解析这些结果。

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输出

使用 -dnscrt 模式时,默认情况下将输出以逗号分隔的结果到控制台。这样可以方便使用其他工具解析这些结果。

objectivec
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地址列表,并可在 prefixptr 模式下使用。当使用 -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前缀查找

php
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 (验证)

 

标签:工具分享, 资产测绘, 扫描工具