如何在 Linux 上使用 nmap 查看网络上的所有设备

您是否認為自己對家庭網路連接的設備瞭如指掌? 實際情況可能讓你大吃一驚。 本文將介紹如何在 Linux 系統上使用 nmap 工具進行掃描,探索所有連接到你網路的設備。

你或許認為你的家庭網路架構很簡單,沒什麼值得深入研究的。也許你是對的,但你很可能會發現一些你之前不知道的事。隨著物聯網設備、智慧型手機、平板電腦等移動裝置,以及智慧家居設備的普及,除了寬頻路由器、筆記型電腦和桌上型電腦等「常見」網路裝置外,還有許多裝置連接著你的網路,這可能會讓你大開眼界。

安裝 nmap(如果需要)

我們將使用 nmap 命令。根據你的電腦上安裝的其他軟體包,你的系統可能已經安裝了 nmap。

如果你的系統沒有安裝 nmap,以下是在 Ubuntu 中安裝它的方法:

sudo apt-get install nmap

以下是在 Fedora 上安裝 nmap 的方法:

sudo dnf install nmap

以下是在 Manjaro 上安裝 nmap 的方法:

sudo pacman -Syu nmap

你也可以使用其他 Linux 發行版的套件管理器來安裝 nmap。

找出你的 IP 位址

第一個任務是找出你的 Linux 電腦的 IP 位址。你的網路可使用的 IP 位址範圍有一個最小值和最大值。這是你的網路的 IP 位址範圍。我們需要將 IP 位址或 IP 位址範圍提供給 nmap,所以需要先找出這些數值。

Linux 提供了一個方便的指令 ip 和一個稱為 addr (address) 的選項。輸入 ip、空格、addr,然後按下 Enter 鍵。

ip addr

在輸出的底部,你會找到你的 IP 位址。它前面會有標籤「inet」。

這台電腦的 IP 位址是「192.168.4.25」。 「/24」表示子網路遮罩中有三個連續的八個 1 群組(並且 3 x 8 = 24)。

在二進制中,子網路遮罩是:

11111111.11111111.11111111.00000000

十進制則為 255.255.255.0。

子網路遮罩和 IP 位址用於表示 IP 位址的哪個部分識別網路,哪個部分識別裝置。這個子網路遮罩通知硬體,IP 位址的前三個數字將識別網路,IP 位址的最後一部分識別各個裝置。由於 8 位二進制數中可以容納的最大數字是 255,因此該網路的 IP 位址範圍將是 192.168.4.0 到 192.168.4.255。

所有這些都封裝在「/24」中。令人高興的是,nmap 使用這種表示法,因此我們有了開始使用 nmap 所需的資訊。

開始使用 nmap

nmap 是一個網路掃描工具。它的工作原理是向我們提供的範圍內的 IP 位址傳送各種網路訊息。它可以透過判斷和解釋它得到的響應類型來推斷它正在探測的裝置。

讓我們使用 nmap 執行一個簡單的掃描。我們將使用 -sn (不掃描端口) 選項。這告訴 nmap 暫時不要探測裝置上的端口。它將進行輕量級、快速的掃描。

即便如此,執行 nmap 可能需要一點時間。當然,網路上裝置越多,所需的時間就越長。它首先進行所有的探測和偵察工作,然後在第一階段完成後展示其發現。當一分鐘左右沒有任何可見的事情發生時,請不要感到驚訝。

我們將使用的 IP 位址是我們之前使用 ip 命令取得的 IP 位址,但最後一個數字設定為零。這是該網路上第一個可能的 IP 位址。 「/24」告訴 nmap 掃描這個網路的整個範圍。參數「192.168.4.0/24」轉換為「從 IP 位址 192.168.4.0 開始,一直到包括 192.168.4.255 在內的所有 IP 位址」。

請注意,我們使用的是 sudo。

sudo nmap -sn 192.168.4.0/24

稍等片刻後,輸出將寫入終端視窗。

你可以在不使用 sudo 的情況下執行此掃描,但使用 sudo 可確保它可以提取儘可能多的資訊。例如,如果沒有 sudo,此掃描將不會傳回製造商資訊。

使用 -sn 選項以及進行快速輕量級掃描的優勢在於它為你提供了一個簡潔的即時 IP 位址列表。換句話說,我們有一個連接到網路的裝置列表,以及它們的 IP 位址。在可能的情況下,nmap 已經識別了製造商。這對於初次嘗試來說還不錯。

這是列表的底部。

我們已經建立起一個連線到網路的裝置列表,因此我們知道有多少裝置連線。有 15 台裝置已開啟並連線到網路。我們知道其中一些的製造商。或者,正如我們將看到的,我們盡其所能擁有 nmap 作為製造商所報告的內容。

當你查看結果時,你可能會看到你認得的裝置。很可能有些你不知道。這些是我們需要進一步調查的。

我很清楚其中一些裝置是什麼。Raspberry Pi Foundation 不言自明。Amazon Technologies 裝置會是我的 Echo Dot。我唯一擁有的三星裝置是雷射印表機,因此縮小了範圍。列表中有一些由戴爾製造的裝置。這些很簡單,是 PC 和筆記型電腦。Avaya 裝置是 IP 語音電話,它為我提供了總部電話系統的分機。它讓他們在家裡更容易找到我,所以我很清楚那個裝置。

但我仍然有疑問。

有幾種裝置的名稱對我來說毫無意義。例如,Liteon 技術和 Elitegroup 電腦系統。

我擁有的樹莓派不只一個。有多少個連線到網路總是不確定,因為它們在重新映像和重新使用時會不斷地換入和下班。但絕對應該不只出現一個。

有幾個裝置標記為未知。顯然,他們需要調查。

執行更深入的掃描

如果我們移除 -sn 選項,nmap 也會嘗試探測裝置上的端口。端口是裝置上網路連線的編號端點。把它想像成一棟公寓大樓。所有公寓都有相同的街道地址(相當於 IP 位址),但每個公寓都有自己的編號(相當於端口)。

裝置中的每個程式或服務都有一個端口號。網路流量會傳遞到 IP 位址和端口,而不僅僅是 IP 位址。一些端口號是預先分配或保留的。它們始終用於承載特定類型的網路流量。例如,端口 22,為 SSH 連線保留;端口 80 保留用於 HTTP Web 流量。

我們將使用 nmap 掃描每個裝置上的端口並判斷哪些端口是開啟的。

nmap 192.168.4.0/24

這次我們將獲得每個裝置的更詳細摘要。我們被告知網路上有 13 個活動裝置。等一下,剛才我們有 15 個裝置。

當你執行這些掃描時,裝置的數量可能會有所不同。這可能是由於移動裝置到達和離開場所,或者裝置被開啟和關閉。另外,請注意,當你開啟已關閉電源的裝置時,它的 IP 位址可能與上次使用時的 IP 位址不同。它可能,但它不一定會這樣。

有很多輸出。讓我們再次這樣做並將其擷取到一個檔案中。

nmap 192.168.4.0/24 > nmap-list.txt

現在我們可以通過 less 命令列出檔案,而且如果我們願意,可以搜尋它。

less nmap-list.txt

當你滾動瀏覽 nmap 報告時,你正在尋找無法解釋或看起來不尋常的任何內容。查看列表時,記下你希望進一步調查的任何裝置的 IP 位址。

根據我們之前產生的列表,192.168.4.10 是一個樹莓派。它將執行某種 Linux 發行版。那麼什麼是使用端口 445 呢?它被描述為「microsoft-ds」。Microsoft,在執行 Linux 的 Pi 上?我們肯定會調查一下。

192.168.4.11 在之前的掃描中被標記為「未知」。它有很多端口開啟;我們需要知道那是什麼。

192.168.4.18 也被識別為 Raspberry Pi。但是那個 Pi 和裝置 192.168.4.21 都開啟了 8888 端口,被描述為被「sun-answerbook」使用。 Sun AnswerBook 是一個已經停止多年的文件檢索系統。不用說,我沒有在任何地方安裝它。那需要了解一下。

裝置 192.168.4.22 之前被識別為三星印表機,此處通過「印表機」標籤進行驗證。引起我注意的是 HTTP 端口 80 的存在和開啟。此端口保留用於網站流量。我的印表機是否包含網站?

據報導,裝置 192.168.4.31 由一家名為 Elitegroup Computer Systems 的公司製造。我從來沒有聽說過它們,而且該裝置有很多端口開啟,所以我們會調查一下。

裝置開啟的端口越多,網路犯罪分子進入它的機會就越大—如果它直接暴露在網際網路上的話。這就像一間房子。你擁有的門窗越多,竊賊的潛在進入點就越多。

我們已經鎖定嫌疑犯;讓他們說話

裝置 192.168.4.10 是一個開啟端口 445 的 Raspberry Pi,它被描述為「microsoft-ds」。快速上網搜尋一下,發現端口 445 通常與 Samba 相關聯。Samba 是一個自由軟體實現 Microsoft 的伺服器訊息區塊協定 (SMB)。 SMB 是一種通過網路共享資料夾和檔案的方法。

這是有道理的;我將那個特定的 Pi 用作迷你網路附加儲存裝置 (NAS)。它使用 Samba,因此我可以從網路上的任何電腦連線到它。好的,這很容易。一個解決了,還有幾個要處理。

具有許多開啟端口的未知裝置

IP 位址為 192.168.4.11 的裝置的製造商未知,並且開啟了許多端口。

我們可以更積極地使用 nmap 來嘗試從裝置中提取更多資訊。 -A(積極掃描)選項會強制 nmap 使用作業系統偵測、版本偵測、腳本掃描和追蹤路由偵測。

-T(計時範本)選項允許我們指定一個從 0 到 5 的值。這設定了一種計時模式。計時模式有很多名稱:偏執(0)、偷偷摸摸(1)、禮貌(2)、正常(3)、激進(4)和瘋狂(5)。數字越小,nmap 對頻寬和其他網路使用者的影響就越小。

請注意,我們沒有為 nmap 提供 IP 範圍。我們將 nmap 集中在單個 IP 位址上,即相關裝置的 IP 位址。

sudo nmap -A -T4 192.168.4.11

在用於研究本文的機器上,nmap 執行該命令需要 9 分鐘。如果你必須等待一段時間才能看到任何輸出,請不要感到驚訝。

不幸的是,在這種情況下,輸出沒有給我們希望的簡單答案。

我們學到的另一件事是它正在執行某個 Linux 版本。在我的網路上,這並不奇怪,但是這個版本的 Linux 很奇怪。它似乎很老舊。幾乎所有的物聯網裝置都使用 Linux,所以這可能是一個線索。

在 nmap 輸出的下方給了我們該裝置的媒體存取控制位址 (MAC 位址)。這是分配給網路介面的唯一引用。

MAC 位址的前三個位元組稱為組織唯一識別碼 (OUI)。這可用於識別網路介面的供應商或製造商。如果你剛好是一個把 35,909 個資料庫放在一起的極客,那就是。

我的工具程式說它屬於 Google。先前關於特殊 Linux 版本的問題以及它可能是物聯網裝置的懷疑,將矛頭指向我的 Google Home 迷你智慧型揚聲器。

你可以使用Wireshark 製造商查找頁面在線上執行相同類型的 OUI 查找。

令人欣慰的是,這與我的結果一致。

確定裝置 ID 的一種方法是執行掃描,關閉裝置並再次掃描。第二組結果中現在缺少的 IP 位址將是你剛剛關閉電源的裝置。

Sun AnswerBook?

下一個謎團是 IP 位址為 192.168.4.18 的 Raspberry Pi 的「sun-answerbook」描述。相同的「sun-answerbook」描述出現在 192.168.4.21 的裝置上。裝置 192.168.4.21 是一台 Linux 桌上型電腦。

nmap 從已知的軟體關聯列表中對端口的使用進行最佳猜測。當然,如果這些端口關聯中的任何一個不再適用—也許該軟體不再使用並且已經達到生命週期結束—你可能會在掃描結果中得到誤導性的端口描述。這裡很可能就是這種情況,Sun AnswerBook 系統可以追溯到 1990 年代初期,對於那些甚至聽說過它的人來說,它不過是一段遙遠的記憶。

所以,如果它不是一些古老的太陽微系統軟體,那麼這兩個裝置,樹莓派和桌上型電腦,有什麼共同點呢?

網際網路搜尋沒有傳回任何有用的結果。有很多點擊。似乎任何帶有不想使用端口 80 的 Web 介面的東西似乎都選擇端口 8888 作為後備。因此,下一個合乎邏輯的步驟是嘗試使用瀏覽器連線到該端口。

我在瀏覽器中使用 192.168.4.18:8888 作為位址。這是在瀏覽器中指定 IP 位址和端口的格式。使用冒號 : 將 IP 位址與端口號分開。

確實開啟了一個網站。

它是任何正在執行Resilio Sync的裝置的管理入口網站。

我總是使用命令列,所以我完全忘記了這個工具。因此,Sun AnswerBook 條目列表完全是虛假的線索,端口 8888 後面的服務已識別出來。

隱藏的 Web 伺服器

我記錄下來要檢視的下一個問題是我的印表機上的 HTTP 端口 80。同樣,我從 nmap 結果中取得了 IP 位址,並將其用作瀏覽器中的位址。我不需要提供端口;瀏覽器預設使用 80 端口。

瞧!我的印表機確實有一個嵌入式 Web 伺服器。

現在,我可以檢視瀏覽過的頁數、碳粉量和其他有用或有趣的信息。

另一個未知裝置

192.168.4.24 的裝置尚未向我們迄今為止嘗試的任何 nmap 掃描顯示任何資訊。

我新增了 -Pn (無 ping) 選項。這會導致 nmap 假設目標裝置已啟動並繼續執行其他掃描。這對於沒有按預期做出回應並使 nmap 誤以為它們處於離線狀態的裝置很有用。

sudo nmap -A -T4 -Pn 192.168.4.24

這確實擷取了資訊轉儲,但沒有任何東西可以識別該裝置。

據報導,它正在執行 Mandriva Linux 的 Linux 核心。 Mandriva Linux 是一個早在 2011 年就停止維護的發行版。它在一個支持它的新社群的支持下繼續存在,因為OpenMandriva

可能是另一個物聯網裝置?可能不是—我只有兩個,而且他們都已經列入清單。

逐個房間的檢查和實體裝置計數對我沒有幫助。讓我們找出 MAC 位址。

所以,原來是我的手機。

請記住,你可以使用Wireshark 製造商查找頁面

Elitegroup 電腦系統

我遇到的最後兩個問題是關於我不認識製造商名稱的兩種裝置,即 Liteon 和 Elitegroup Computer Systems。

讓我們改變策略。另一個有助於確定網路上裝置身份的指令是 arp。 arp 用於處理 Linux 電腦中的位址解析協定表。它用於從<a href=”https://en.wikipedia.org/wiki/Address_Resolution_Protocol