
Whis for the Cloud: クラウドプロバイダー属性特定のための偵察ツール。対応: AWS、Azure、Google、Cloudflare、Digital Ocean。
IPを検索して、プロバイダが公開しているJSON、CSV、テキストデータに基づいてクラウドプロバイダやその他の詳細を見つける
Cloud edgeは、クラウドサービスプロバイダの探索に焦点を当てたリコンツールです。クラウドの帰属やフォレンジック、ペネトレーションテスト、バグバウンティ、レッドチーム、あるいはクラウドプロバイダの一般的なR&Dに使用できます。Edgeは、Cloud Service Provider(CSP)が公開しているIPアドレス範囲(AWS、Azure、GCP、Cloudflare、Digital Ocean)のファイルを自動的に読み込み、入力されたIPアドレスに基づいてプレフィックス検索を実行します。他のリコンツールとの統合にも利用できます。ブラックボックスのネットワークペネトレーションテストでは、edgeは顧客がどのクラウドCSPでホスティングされているかを迅速に発見したり、ルール・オブ・エンゲージメントのスコープを再確認したりするのに役立ちます。これらのCSPはそれぞれ、すべてのIPプレフィックスやネットブロックのリストを公開しています。AzureとAWSの場合、これにはリージョン/データセンターとサービス名が追加されます。これは脅威インテリジェンスにとって優れたエンリッチメントであり、IPアドレスを物理的なデータセンターやクラウドサービスにマッピングできるようになります。Cloud Edgeは、リコンナスワークフローにおいて「何を扱っているのか」を迅速に把握するのに役立ちます。IPプレフィックスに基づいて迅速に解析し、検索を実行します。

ツールの入力と出力に関するいくつかの注意点です。
Cloud Edgeを実行すると、サポートされているすべてのクラウドプロバイダファイルが自動的にダウンロードされます。ワーキングディレクトリにファイルが存在しない場合、ダウンロードされます:
% ./edge
[INF] Starting Cloud Edge version 0.2.4
[INF] File cloud.json has been downloaded and created
[INF] File aws.json has been downloaded and created
[INF] File cloudflare-ipv4.txt has been downloaded and created
[INF] File cloudflare-ipv6.txt has been downloaded and created
[INF] File digitalocean.csv has been downloaded and created
[INF] File azure.json has been downloaded and created
オフラインでダウンロードできない場合は、このリポジトリのcsp-filesディレクトリを確認してください。それらをワーキングディレクトリにコピーしてください。
ツールが初めて実行されると、自動的に6つのクラウドプロバイダのIPアドレス範囲のJSON、テキスト、CSVファイルをワーキングディレクトリにダウンロードして読み込もうとします。仕組みは次のとおりです:
デフォルトでは、以下のURLから6つのファイルをダウンロードしようとしますが、ファイルがすでにワーキングディレクトリにある場合はダウンロードしません。
Cloud Edgeはダウンロード前に各ファイルの存在を確認します。そのため、ファイルがすでに存在する場合は、削除しない限り再ダウンロードされません。
これら6つのファイルは、このgithubリポジトリのcsp-filesディレクトリに含まれています。クラウドプロバイダは頻繁にリストを更新するため、ワーキングディレクトリからファイル(aws.json, azure.json, cloud.json, cloudflare-ipv4.txt, cloudflare-ipv6.txt, digitalocean.csv)を削除して最新のファイルを入手してください。
ワーキングディレクトリに見つかった場合、すべてのIPプレフィックスがメモリに読み込まれます。クラウドプロバイダのIP範囲ファイルは常にワーキングディレクトリから読み込もうとします。実際の検索を有効にするには、-prefixフラグを使用します。
-dnsモードが有効な場合、AレコードとCNAMEレコードの両方のDNSルックアップは、すべてのDNSクエリが完了するまでバッファリングされ、表示されません。クエリが完了した後、出力が表示されます。
デフォルトでは、[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のものは検出されます。
-dnsまたはcrtモードでは、出力はデフォルトでカンマ区切りの結果としてコンソールに送信されます。これにより、他のツールでこれらの結果を解析しやすくなります。
FQDN,IP,SOURCE,CNAME,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アドレスのリストを反復処理することを示し、prefixまたはptrモードで使用できます。ツールを-ip <hosts.txt>で実行すると、各行に1つのIPアドレスがあることを想定し、リストを反復処理してルックアップを実行します。ファイル内容の例を次に示します:
user@host:~/demo$ cat ip.txt
3.133.110.237
18.117.232.92
18.221.247.211
3.137.199.52
-nmapフラグは、nmap XMLファイルを解析することを示します。nmapスキャンファイル内で「Up」とマークされたホストを探します。例えば、-nmap scan1.xmlは、ツールにscan1.xmlファイルを解析し、nmapによってUpとマークされたホストを探すよう指示します。その後、-ptrまたは-prefixと一緒に実行してIPのルックアップを行います。
ツールは、ホスト名を1行に1つずつ含むワードリストを反復処理して、古典的なサブドメイン列挙を実行します。これは-dnsモードで-wordlist <hosts.txt>と共に使用されます。hosts.txtファイルの例は次のようになります:
user@host:~/demo$ more subdomains-5k.txt
www
blog
news
blogs
en
online
$ edge -help
Usage of edge:
-crt
Certificate transparency lookup mode
-csv string
Output results to CSV file
-dns
A and CNAME record lookup mode
-domain string
The domain to perform guessing against.
-ip string
The text file to use with IP addresses
-nmap string
Nmap scan xml file to use.
-output
Enable output to CSV
-prefix
IP Prefix CSP lookup mode
-ptr
PTR lookup mode
-resolver string
The DNS server to use. (default "8.8.8.8:53")
-silent
Enable silent mode to suppress [INF]
-single string
Single IP address to do a prefix lookup
-verbose
Enable verbose output
-wordlist string
The wordlist to use for guessing.
-workers int
The amount of workers to use. (default 10)
例1: 単一のIPアドレスを検索する
edge -single <ip_address>
説明: クラウドプロバイダのJSONファイルに対して、<ip_addr>で指定された単一のIPアドレスのプレフィックス検索を実行します。
出力例:
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
説明: 上記と同じですが、サイレントモードを有効にします。これにより、余分な情報を含む[INF]メッセージが抑制されます。
出力例:
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レコードのワードリストサブドメイン列挙を実行します。Cert透過性で見つかった各ホストについて、DNSルックアップも実行します。3つのクラウドサービスプロバイダすべてが公開しているIPプレフィックスリストに対して、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アドレスに対してプレフィックス検索を実行します。
例7: 証明書透過性ログの検索。
edge -domain <domain> -crt
説明: https://crt.sh を使用してCertificate Transparencyログ検索を実行します。
出力例:
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
説明: Certificate Transparencyルックアップを実行します。Cert Transparencyで発見された各ホストについて、完全なDNS AまたはCNAMEルックアップを実行します。
例9: IPアドレスリストによるIPプレフィックス検索
edge -prefix -ip <ip-hosts.txt>
説明: クラウドサービスプロバイダのIPプレフィックスに対してIPアドレスを検索します。ip-hosts.txt内のIPアドレスのリストを受け取り、それらを調べてルックアップを実行します。1行に1つの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: IPアドレスリストによるDNS PTR検索
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アドレスのプレフィックス検索を実行する
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」ホストの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ファイルも必ず入手してください。
go 1.25でテストおよびビルドされています。
$ git clone https://github.com/iknowjason/edge.git
$ cd edge
~/edge$ go build edge.go
~/edge$ ./edge (Verify it)
@mosesrenegade ツールのインスピレーションに感謝
@0xdabbad00 一般的なAWSツールとインスピレーションに感謝
このツールは、dnsreconやgobusterを含む多くの他のツールや作者からインスピレーションを受けました。そう、わかっています。ここには新しいものはあまりありません - ただの別のサブドメイン列挙ツールです。ただ本当にGolangを学びたかったのです :-)
「Black Hat Go」の本
| Provider | ローカルファイル | リモートURL |
|---|
| AWS | aws.json | https://ip-ranges.amazonaws.com/ip-ranges.json |
| Azure | azure.json | https://azservicetags.azurewebsites.net/ |
| GCP | cloud.json | https://www.gstatic.com/ipranges/cloud.json |
| Cloudflare | cloudflare-ipv4.txt | https://www.cloudflare.com/ips-v4/# |
| Cloudflare | cloudflare-ipv6.txt | https://www.cloudflare.com/ips-v6/# |
| Digital Ocean | digitalocean.csv | https://digitalocean.com/geo/google.csv |