在计算机网络中, 数据是暴露的, 因为数据包传输是无法隐藏的, 所以让我们来使用 whois,dig,nmcli 和 nmap 这四个工具来嗅探网络吧.
请注意, 不要在不属于自己的网络上运行 nmap , 因为这有可能会被其他人认为恶意攻击.
精简和详细域名信息查询
您可能已经注意到, 之前我们用常用的老式 whois 命令查询域名信息, 但现如今似乎没有提供同过去一样的详细程度. 我们使用该命令查询 linux.com 的域名描述信息:
- $ whois linux.com
- Domain Name: LINUX.COM
- Registry Domain ID: 4245540_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.namecheap.com
- Registrar URL: http://www.namecheap.com
- Updated Date: 2018-01-10T12:26:50Z
- Creation Date: 1994-06-02T04:00:00Z
- Registry Expiry Date: 2018-06-01T04:00:00Z
Registrar: NameCheap Inc.
Registrar IANA ID: 1068
Registrar Abuse Contact Email: abuse@namecheap.com
Registrar Abuse Contact Phone: +1.6613102107
- Domain Status: ok https://icann.org/epp#ok
- Name Server: NS5.DNSMADEEASY.COM
- Name Server: NS6.DNSMADEEASY.COM
- Name Server: NS7.DNSMADEEASY.COM
- DNSSEC: unsigned
- [...]
有很多令人讨厌的法律声明. 但在哪有联系信息呢? 该网站位于 whois.namecheap.com 站点上(见上面输出的第三行):
$ whois -h whois.namecheap.com linux.com
我就不复制出来了, 因为这实在太长了, 包含了注册人, 管理员和技术人员的联系信息. 怎么回事啊, 露西尔?(LCTT 译注:行尸走肉中尼根的棒子)有一些注册库, 比如 .com 和 .net 是精简注册库, 保存了一部分有限的域名信息. 为了获取完整信息请使用 -h 或 --host 参数, 该参数便会从域名的 注册服务机构 中获取.
大部分顶级域名是有详细的注册信息, 如 .info. 试着使用
whois blockchain.info
命令来查看.
想要摆脱这些烦人的法律声明? 使用 -H 参数.
DNS 解析
使用 dig 命令比较从不同的域名服务器返回的查询结果, 去除陈旧的信息. 域名服务器记录缓存各地的解析信息, 并且不同的域名服务器有不同的刷新间隔. 以下是一个简单的用法:
- $ dig linux.com
- <<>> DiG 9.10.3-P4-Ubuntu <<>> linux.com
- ;; global options: +cmd
- ;; Got answer:
- ;; ->>HEADER<<<- opcode: QUERY, status: NOERROR, id: 13694
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
- ;; OPT PSEUDOSECTION:
- ; EDNS: version: 0, flags:; udp: 1440
- ;; QUESTION SECTION:
- ;linux.com. IN A
- ;; ANSWER SECTION:
- linux.com. 10800 IN A 151.101.129.5
- linux.com. 10800 IN A 151.101.65.5
- linux.com. 10800 IN A 151.101.1.5
- linux.com. 10800 IN A 151.101.193.5
;; Query time: 92 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Tue Jan 16 15:17:04 PST 2018
;; MSG SIZE rcvd: 102
注意下靠近末尾的这行信息:
SERVER: 127.0.1.1#53(127.0.1.1)
, 这是您默认的缓存解析器. 当地址是本地时, 就表明您的电脑上安装了 DNS 服务. 在我看来这就是一个 Dnsmasq 工具(LCTT 译注: 是一个小巧且方便地用于配置 DNS 和 DHCP 的工具), 该工具被用作网络管理:
$ ps ax|grep dnsmasq
- 2842 ? S 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground
- --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid
- --listen-address=127.0.1.1
dig 命令默认是返回 A 记录, 也就是域名. IPv6 则有 AAAA 记录:
$ $ dig linux.com AAAA
- [...]
- ;; ANSWER SECTION:
linux.com. 60 IN AAAA 64:ff9b::9765:105
linux.com. 60 IN AAAA 64:ff9b::9765:4105
linux.com. 60 IN AAAA 64:ff9b::9765:8105
linux.com. 60 IN AAAA 64:ff9b::9765:c105
[...]
仔细检查下, 发现 linux.com 有 IPv6 地址. 很好! 如果您的网络服务支持 IPv6 那么您就可以用 IPv6 连接.(令人难过的是, 我的移动宽带则没提供 IPv6)
假设您能对您的域名做一些 DNS 改变, 又或是您使用 dig 查询的结果有误. 试着用一个公共 DNS, 如 OpenNIC:
- $ dig @69.195.152.204 linux.com
- [...]
;; Query time: 231 msec
;; SERVER: 69.195.152.204#53(69.195.152.204)
dig 回应您正在的查询是来自 69.195.152.204. 您可以查询各种服务并且比较结果.
上游域名服务器
我想知道我的上游域名服务器 (LCTT 译注: 此处指解析器) 是谁. 为了查询, 我首先看下 /etc/resolv/conf 的配置信息:
- $ cat /etc/resolv.conf
- # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
- # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
- nameserver 127.0.1.1
好吧, 不过我已经知道了. 您的 Linux 发行版可能配置不同, 您会看到您的上游服务器. 接下来我们来试试网络管理器命令行工具 nmcli:
$ nmcli dev show | grep DNS
IP4.DNS[1]: 192.168.1.1
很好, 现在我们已经知道了, 其实那是我的移动热点, 我能确认. 我能够登录到简易管理面板, 来查询上游服务器. 然而许多用户级互联网网关不会让您看到或改变这些设置, 因此只能尝试其他的方法, 如 我的域名服务器是什么? http://www.whatsmydnsserver.com/
查找在您的网络中 IPv4 地址
您的网络上有哪些 IPv4 地址已启用并正在使用中?
- $ nmap -sn 192.168.1.0/24
- Starting Nmap 7.01 ( https://nmap.org ) at 2018-01-14 14:03 PST
- Nmap scan report for Mobile.Hotspot (192.168.1.1)
Host is up (0.011s latency).
Nmap scan report for studio (192.168.1.2)
Host is up (0.000071s latency).
- Nmap scan report for nellybly (192.168.1.3)
- Host is up (0.015s latency)
- Nmap done: 256 IP addresses (2 hosts up) scanned in 2.23 seconds
每个人都想去扫描自己的局域网中开放的端口. 下面的例子是寻找服务和他们的版本号:
- $ nmap -sV 192.168.1.1/24
- Starting Nmap 7.01 ( https://nmap.org ) at 2018-01-14 16:46 PST
- Nmap scan report for Mobile.Hotspot (192.168.1.1)
Host is up (0.0071s latency).
Not shown: 997 closed ports
- PORT STATE SERVICE VERSION
- 22/tcp filtered ssh
- 53/tcp open domain dnsmasq 2.55
80/tcp open http GoAhead webServer 2.5.0
Nmap scan report for studio (192.168.1.102)
Host is up (0.000087s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
631/tcp open ipp CUPS 2.1
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 256 IP addresses (2 hosts up) scanned in 11.65 seconds
这些是有趣的结果. 让我们尝试从不同的互联网连接进行相同的操作, 以查看这些服务是否暴露于互联网中. 如果您有智能手机, 相当于您有第二个网络. 您可以下载应用程序, 还可以为您的 Linux 电脑提供热点. 从热点控制面板获取广域网 IP 地址, 然后重试:
- $ nmap -sV 12.34.56.78
- Starting Nmap 7.01 ( https://nmap.org ) at 2018-01-14 17:05 PST
- Nmap scan report for 12.34.56.78
Host is up (0.0061s latency).
All 1000 scanned ports on 12.34.56.78 are closed
果然不出所料, 结果和我想象的一样(LCTT 译注: 这些服务和信息没有被暴露在公网上). 可以用手册来查询这些命令, 以便了解更多有趣的嗅探技术.
来源: http://os.51cto.com/art/201805/574942.htm