GSAN 是一个可以从 HTTPS 服务器直接提取 SSL 证书中的主题备用名称 (SAN) 的工具,这些名称可以提供 DNS 名称(子域名)或虚拟服务器。
它不依赖于证书透明度日志,而是直接连接到服务器并从证书中提取 SAN,这在分析内部服务器或自签名证书时尤其有用。
使用 pip(或推荐用 pipx)以避免用大量依赖项污染系统。
$ pipx install --user gsan
你也可以使用 Docker 安装并运行它。
$ docker run --rm -i francc3sco/gsan <DOMAIN>
基本用法是直接将 HTTPS 服务器的域名传递给工具,它将返回证书中发现的子域名列表。
$ gsan microsoft.com
microsoft.com [126]:
- microsoft.com
- successionplanning.microsoft.com
- explore-security.microsoft.com
...
- wwwbeta.microsoft.com
- gigjam.microsoft.com
- mspartnerira.microsoft.com
...
或者,你可以通过使用 xargs 命令传递包含要扫描的域名列表的文本文件。
$ cat domains.txt | xargs gsan
google.com [93]:
- google.fr
...
- google.com.au
amazon.com [37]:
- uedata.amazon.com
...
- origin-www.amazon.com.au
youtube.com [93]:
- google.fr
...
- google.com.au
如果你使用的是 Docker 化的版本,可以通过以下方式实现相同效果:
$ cat domains.txt | xargs docker run --rm -i francc3sco/gsan
你可以将 gsan 与其他工具(如 shodan)结合使用,以获取域名或 IP 地址列表中发现的 SAN 列表,只要遵循 IP|DOMAIN:PORT 格式。
$ shodan search --fields ip_str,port --separator : --limit 100 https | cut -d : -f 1,2 | xargs gsan --timeout 1
207.21.195.58 [1]:
- orielstat.com
162.159.135.42 [4]:
- temp927.kinsta.cloud
- temp312.kinsta.cloud
34.230.178.151 [2]:
- procareltc.com
- clarest.com
20.62.53.137 [1]:
- budget.lis.virginia.gov
199.60.103.228 [3]:
- hscoscdn40.net
- sites-proxy.hscoscdn40.net
...
你也可以使用 --output 标志将输出保存到文件,这对于将输出传递给其他工具(如 Nmap)非常有用。
$ gsan microsoft.com --output microsoft.txt | nmap -iL microsoft.txt
或者,如果你有一个大的域名列表:
$ cat domains.txt | xargs gsan --output domains.txt | nmap -iL domains.txt
或者,如果你想制造混乱:
$ shodan search --fields ip_str,port --separator : --limit 1000 has_ipv6:false https | \
cut -d : -f 1,2 | \
xargs gsan --timeout 1 --output sans.txt && \
sudo nmap -sS -F -vvv -iL sans.txt -oX import_to_metasploit.xml