我可以使用哪些方法来识别公司的公共网络地址范围?
如何识别公司的公网地址范围?
这取决于一些因素。当它是一家大公司并且他们拥有完整的子网时,这些信息将存储在whois 记录中。您可以使用商业工具来搜索公司的 whois 记录转储,也可以查找该公司的所有公开可用主机名。您通常会从 Web、邮件和 dns 服务器的地址开始。
对于中小型公司,在大多数情况下,只有单个主机可供公众访问。在大多数情况下,这些地址和服务器是租用的,甚至是共享的托管地址。您可以通过对该地址执行反向查找来轻松解决这个问题。
要查找分配给域的更多主机,您可以从censys.io(以前在 scans.io 上可用)下载最新的dns 转储,然后使用 grep 查找域以查找子域。然后,您还可以通过将常用主机名添加到目标域名来执行dns“暴力破解”。例如,这可以通过 dnsrecon 来完成。
此外,在某些情况下,子网被分配给托管公司,但该范围包含该公司的多个网站。要在 IP 范围内查找该公司的网站,您可以使用 EyeWittness 之类的工具,该工具将创建该范围内每个网站的屏幕截图。要说:当您使用该网络服务器的 IP 地址作为地址时,这不适用于虚拟主机。
没有简单的方法。该公司可能有一个网站,但它可能托管在场所以及其他地方。即使它在他们的场所,它也可能与网络的其他部分具有不同的 IP 范围。
例如Microsoft.com
的IP地址是104.43.195.251
,在范围内104.40.0.0 - 104.47.255.255
。但是,如果您查找bing.com
,它有 IP 地址204.79.197.200
,它在范围内204.79.195.0 - 204.79.197.255
。
可以使用以下命令找到上述范围:whois $(dig +short microsoft.com | head -1)
用人类术语来说,基本上是:“从 microsoft.com 获取一个 IP 地址并在其上运行 whois”。
whois 信息还包含OrgName: Microsoft Corporation
,如果您查找来自 Microsoft 的每个 IP 范围怎么办?我不知道该怎么做(我必须查一下),但这样的事情可能适用于像微软这样的大公司。
然而,并不是每家公司都拥有自己的 IP 范围。随便找一家附近的小企业,他们可能会有一个由托管公司托管的网站,这与他们在办公室的 ISP 不同。在这种情况下,如果他们没有设置 RDNS,就不可能找到他们的 IP 地址(或范围),而使用 RDNS,您仍然需要反向查找数百万个地址。
您可以对每个实体执行以下命令。RIPE、ARIN 等……以亚太地区为例。
您将获得数据库中存在的包含您放置的字符串的所有内容的返回。
它是最便宜、最快的,您可以构建自己的代码。
whois -h whois.apnic.net COMPANYNAME
例子:
whois -h whois.apnic.net Microsoft
或者如果您希望得到更集中的回应
whois -h whois.apnic.net microsoft | grep inetnum
输出:
% Abuse contact for '58.246.69.164 - 58.246.69.167' is 'hqs-ipabuse@chinaunicom.cn'
inetnum: 58.246.69.164 - 58.246.69.167
netname: Microsoft
country: cn
descr: Microsoft (China) Co., Ltd.
admin-c: YR194-AP
tech-c: YR194-AP
status: ASSIGNED NON-PORTABLE
mnt-by: MAINT-CNCGROUP-SH
last-modified: 2008-12-13T14:48:23Z
source: APNIC
有不同的方法可以做到这一点。普遍接受的方法是使用 WHOIS 数据库中的“netblock”信息。
对于给定的公司,流程如下:
- 通过 DNS 查找公司网站之一的 IP 地址
- 对该地址发出 whois 查询,以识别该地址所属的“网络块”(如果网站由亚马逊等第三方托管,则无法使用)
例如,我们尝试查找 GitHub 运营的 IP 地址:
我们将从查找 GitHub Pages 网站的 IP 地址开始。
$ host -t a github.io
github.io has address 185.199.109.153
github.io has address 185.199.108.153
github.io has address 185.199.111.153
github.io has address 185.199.110.153
然后选择其中一条记录并发出 Whois 查询以找出整个网络块:
$ whois 185.199.109.153
[...]
inetnum: 185.199.108.0 - 185.199.111.255
netname: US-GITHUB-20170413
country: US
org: ORG-GI58-RIPE
admin-c: GA9828-RIPE
tech-c: NO1444-RIPE
status: ALLOCATED PA
mnt-by: RIPE-NCC-HM-MNT
mnt-by: us-github-1-mnt
created: 2017-04-13T15:36:35Z
last-modified: 2018-12-14T10:48:39Z
source: RIPE
[...]
我们现在有一个更大的 IP 地址范围,其中至少包含 github.io 的主 Web 服务器。
要找到其他范围,需要找到更多由它们运营的网站/服务器并重复使用相同的技术,或者获取完整 Whois 数据库的副本,并查找对 GitHub 的所有引用。
NetworksDB.io 是一项在线服务(免责声明:我是所有者/开发者。)
在线工具可以免费使用,并且有免费的 API 可用于测试。例如,您可以在此页面上查看 Github 拥有的所有公网和 IP 地址:https ://networksdb.io/ip-addresses-of/github-inc
更好的是,通过命令行获取结果:
$ curl -s https://networksdb.io/ip-addresses-of/github-inc | grep 'IP Range' | awk '{print $3" - "$5}' | sort
140.82.112.0 - 140.82.127.255
148.62.46.150 - 148.62.46.151
148.62.46.192 - 148.62.46.199
174.143.3.100 - 174.143.3.103
185.199.108.0 - 185.199.111.255
192.30.252.0 - 192.30.255.255
74.205.116.224 - 74.205.116.239