分享四個 Linux 上的網路資訊嗅探工具
在計算機網路中,資料是暴露的,因為資料包傳輸是無法隱藏的,所以讓我們來使用 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: [email protected] 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[neiqian] 站點上(見上面輸出的第三行):
$ whois -h whois.namecheap.com linux.com
我就不復製出來了,因為這實在太長了,包含了註冊人,管理員和技術人員的聯絡資訊。怎麼回事啊,露西爾?(LCTT 譯註:《行屍走肉》中尼根的棒子)有一些註冊庫,比如 .com 和 .net 是精簡註冊庫,儲存了一部分有限的域名資訊。為了獲取完整資訊請使用-h 或 --host 引數,該引數便會從域名的註冊服務機構中獲取。
大部分頂級域名是有詳細的註冊資訊,如 .info。試著使用 [neiqian]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
很好,現在我們已經知道了,其實那是我的移動熱點,我能確認。我能夠登入到簡易管理面板,來查詢上游伺服器。然而許多使用者級網際網路閘道器不會讓您看到或改變這些設定,因此只能嘗試其他的方法。
查詢在您的網路中 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 譯註:這些服務和資訊沒有被暴露在公網上)。可以用手冊來查詢這些命令,以便了解更多有趣的嗅探技術。