是什麼阻止資料包直接發送到私人 IP(針對駭客/病毒/惡意軟體)?

是什麼阻止資料包直接發送到私人 IP(針對駭客/病毒/惡意軟體)?

我是網路新手,已經掌握了許多基礎知識,但我不明白網路如何無法與區域網路上的裝置直接聯繫。

我知道路由器和 NAT 允許您的所有設備擁有相同的網路 IP,並且它將請求路由到網路並返回到請求它的客戶端,但我的問題是:

假設我想破解某人的計算機,並且我知道他的家庭網路(路由器)IP。難道我不能只將資料傳輸到該 IP,並將資料編碼到一些最常見的私有位址(例如 192.168.1.1-80)並實際將資料傳送到「私有」裝置嗎?

IP 通常直接向發出請求的設備獲取數據或從發出請求的設備獲取數據,因此,如果我知道路由器 IP 並正確猜測私有 IP,那麼什麼可以阻止我侵入該設備?

我假設還有另一種方法可以將資料路由到路由器/NAT 中發生的正確客戶端,而不僅僅是 IP,但我不確定這是如何完成的。

或者只是您可以透過這種方式發送惡意數據,但是如果所有軟體都不對數據執行任何操作(沒有發送請求),那麼就沒有任何好處。

我找到的任何資訊通常只是談論私有 IP 如何允許較少的公共 IP 被整體使用,而從未真正提及是什麼切斷了私有 IP 用戶端對外部世界的存取。

誰可以給我解釋一下這個?

答案1

我不明白網路如何無法與您區域網路上的裝置直接聯繫。

IP 通常直接向發出請求的裝置取得資料或從發出請求的裝置取得數據

請記住,互聯網的最初設計是事物應該如此運作 - 互聯網應該是“端到端”的,IP 地址應該是真正的全球性 - 無論在哪裡世界上有一個給定的IP地址,我可以與它交談,它也可以與我交談。

問題是我們用完了 IPv4 位址,因此必須使用 NAT 等方案。

NAT 並不是事情應該的工作方式,雖然它有安全方面的副作用,但它打破了互聯網的端到端原則,並鼓勵只充當中間人的服務 - 有利於安全/租金收藏,不利於自由/窮人。

我知道路由器和 NAT 允許您的所有設備擁有相同的網路 IP

它僅在您的網路之外以這種方式出現。

在您的網路後面,每個系統都有一個唯一的 IP - 來自私有 IP 範圍之一。

NAT 在路由器上管理這種錯覺,以便路由器後面的系統可以存取其他 IP,並且如果連接埠轉送正確,IP 可以與路由器後面的系統通訊。

難道我不能將資料傳輸到該 IP,並將資料編碼到一些最常見的私人位址(例如 192.168.1.1-80)並實際將資料傳送到「私有」設備

沒有。

192.168.1.80 在 Internet 上不存在。它只存在於 NAT 路由器後面。您首先需要位於 NAT 路由器後方。唯一的方法是先與 NAT 路由器的公共 IP 進行通訊。

事實上 - 如果 IP 192.168.1.80 和您自己的 IP 在同一子網中,將會發生的情況是流量甚至不會離開您的網路 - 您的系統將嘗試從本地 NIC 到達 192.168.1.80它甚至不會到達你的路由器。

因此,如果我知道路由器 IP 並且猜對了私人 IP,那麼什麼可以阻止我侵入該設備?

NAT 路由器監視並追蹤傳入連線。

如果一個新的 TCP 連線嘗試連接到轉送的端口,那麼只有那時它們才會將資料轉送到路由器後面的系統。

UDP 是無連線的,因此 NAT 路由器如果正常運作,就不會將一段時間沒有見過的 UDP 流量轉送到其後面的系統。由於 UDP 的無連接特性,可以使用 UDP 欺騙 NAT 路由器,但前提是您首先可以讓其背後的系統在該連接埠上發送某些內容,並讓 NAT 路由器相信傳入流量可能會返回。有一些協定依賴類似的東西,例如 STUN。

答案2

僅僅因為您知道路由器公用 IP 位址以及內部位址,並不會自動使內部位址成為可公開尋址的。

IP 允許您連接到公共位址,它不會自動暗示該公共位址後面有位址,或提供任何轉送資料的方法(即使有)。

地址是“轉到這台機器和這個端口”,而不是“轉到這台機器和端口,然後轉發到另一台機器和端口,然後從那裡其他地址和連接埠”

將其視為有人寄給您一封信。郵局不關心世界衛生組織就在地址上,只是他們把郵件放在正確的位置。如果他是透過投遞口郵寄的,那麼該地址的某人必須查看這封信並找出這封信需要寄給誰。

同樣的情況也發生在網路中,但 NAT 不允許「Jim」作為永久內部位址,當網路內部的某些內容到達網路請求連線時,就會發生內部到外部的對應。此時,它有效地創建了一個郵箱“jimTmp12345@PublicIP”,該郵箱將一直使用,直到連接關閉,此時該地址無效,並且發送到該地址的任何內容都會被丟棄在本地垃圾掩埋場中。

答案3

大多數 NATing 路由器也將被設定為充當防火牆,而不僅僅是路由器。

考慮以下網路:

範例網路


如果沒有 NAT,設備必須直接通訊:

  • 192.168.1.2想要交談192.168.0.2
    • 它的預設路由是192.168.1.1(路由器A)
    • 路由器 A 知道192.168.0.0/24可以透過198.51.100.2 (路由器 B)到達
    • RouterB直連192.168.0.0/24並投遞報文
  • 192.168.0.2想回覆192.168.1.2
    • 其預設路由為192.168.0.1(Router B)
    • 路由器 B 知道192.168.1.0/24可以透過以下方式到達198.51.100.1
    • RouterA直連192.168.1.0/24並投遞報文

在路由器 A 上使用 NAT,但是不是路由器 B,情況略有變化:

  • 192.168.1.2想要交談192.168.0.2
    • 它的預設路由是192.168.1.1(路由器A)
    • 路由器 A 設定為“IP偽裝",因此將來源位址重寫為192.51.100.1(它是外部介面)
    • 路由器 A 知道192.168.0.0/24可以透過198.51.100.2(路由器 B)到達
    • RouterB直連192.168.0.0/24並投遞報文
  • 192.168.0.1想回覆198.51.100.1
    • 其預設路由為192.168.0.1(Router B)
    • RouterB直連198.51.100.0/24並投遞報文
    • 路由器 A 檢查其轉換表,並將目的地重寫為192.168.1.1
    • RouterA直連192.168.1.0/24並投遞報文

此時,有沒有什麼阻止主機192.51.100.1用作路由器,並要求其將封包轉送到192.168.1.2...沒有什麼。回應可能會偽裝,因此溝通可能會有點“具有挑戰性的”,但溝通就是溝通。

將其擴展為“網際網路“可能會改變我的”沒有什麼可以阻止...「有點聲明。我沒有支援材料,但如果互聯網路由器實際上被配置為轉發針對專用網路位址的流量,我會感到非常驚訝。相反,它們可能只會丟棄此類數據包。結果是嘗試這樣做即使路由器配置不當,網路也不太可能運作。

除此之外,由於路由的工作方式(即:如果主機不在本地網路上,則 MAC 位址以路由器為目標,而 IP 位址以最終主機為目標),沒有辦法使用作為192.51.100.1路由器,除非A) 您已連接到它;或 B) 現有路線會將您的交通推向其方向。


為了防止其他主機簡單地用作198.51.100.1簡單路由器,需要防火牆規則。

一種方法是在路由器 A 的外部介面 ( 198.51.100.1) 處拒絕(或丟棄)未明確針對其位址的傳入封包。

這也將解決弱宿主模型Linux 實現的(例如:路由器 B 可以透過它的外部的接口,使用分配給的位址內部的介面).

答案4

[NAT] 將請求路由到網路並返回到請求它的客戶端

是的,但需要澄清其工作原理:NAT 會使您的私人 IP 位址看起來像公用 IP 位址,通常是在流量離開您的網路之前。因此,網路不會將流量路由回您的私人 IP 位址。網路將流量傳回您所在的公用 IP 位址。

問題 1:

我認為如果您詳細了解 NAT 的工作原理,這將有助於回答您的一些問題。我見過的最典型的實現是 NAPT(基於“網路位址連接埠”的轉換)。當您從私人位址傳送資料時,路由器會取得該私人位址並將該資訊新增至路由器記憶體中的圖表/表格。路由器還選擇 TCP 或 UDP 連接埠號碼(可能是隨機選擇的),並在同一個圖表/表格中對其進行追蹤。然後,路由器使用公共 IP 位址將資訊傳送到互聯網,並將「來源連接埠」號碼識別為它選擇的號碼。 (TCP 和 UDP 都使用兩個連接埠號碼:「來源」號碼和「目標」號碼。)當目標(例如,偵聽 TCP 連接埠 443 的 Web 伺服器)注意到流向 TCP 連接埠 443 並來自不同的TCP 連接埠(例如,TCP 連接埠53874),該伺服器可以透過將流量傳送回同一TCP 連接埠(例如,TCP 連接埠53874)上的始發路由器的公共IP 位址來回應。然後,路由器在其表/圖表中尋找訊息,並知道將訊息發送到哪個私人 IP 位址。

如果您只是隨機選擇一個私人 IP 位址,則路由器的表/圖表中不應包含該私人 IP 位址,因此這是行不通的。

我假設還有另一種方法可以將資料路由到路由器/NAT 中發生的正確客戶端,而不僅僅是 IP,但我不確定這是如何完成的。

不。

我的意思是,嗯,是的,有。還可能發生其他一些路由,因此我會快速確認這一點。使用 802.1q“VLAN”標記和其他技術可用於某些資料/訊號雲,並可能影響流量最終如何透過網路傳輸。然而,這些額外的路由方法通常是出於速度、安全性或相容性的目的而部署的(主要是針對非 IP 網絡,例如電話公司內部的一些舊網絡)。您實際上不需要認為這些高級專業級網路技術將引入了解基本路由如何運作的新的且必要的部分,因為基本的簡單 IP 路由可用於解釋您所詢問的內容。

問題#2:路由器的內部防禦

現在,讓我們假裝路由器沒有執行 NAPT,因此我們將忽略將公共 TCP/UDP 連接埠號碼與專用位址相符的整個表/圖表。讓我們假設您位於客戶的 ISP 處,想要透過路由器惡意將封包傳送到客戶的私人 IP 位址。

大多數路由器在執行一些非常基本的類似防火牆的操作時,都會注意到傳入流量到達標記為「WAN」(代表「廣域網路」)的連接埠。為了提供某種保護,路由器將認識到該網路連接埠上的傳入流量應使用路由器的公共 IP 位址,而不是任何常見的「私有」IP 位址範圍。

因此,路由器將透過丟棄資料包來保護網路。

問題 3:ISP 更好地保護我們

任何 ISP 的標準是不允許任何流量進出私人 IP 位址範圍(這是在IETF RFC 1918 第 3 節對於 IPv4,或以“fd”開頭的 IPv6 位址)。

因此,如果您嘗試從家中發送流量,通過您的 ISP,然後通過 ISP 的主要互聯網主幹網的其餘部分,然後通過受害者的 ISP,然後通過受害者的路由器,最後到達“私有 IP”你選擇的地址,那你應該失敗。這是因為 ISP 通常遵循阻止涉及私人 IP 位址的流量的慣例。 (ISP 不這麼做就太瘋狂了。)

在上述場景中,目標受害者的 ISP 不提供保護。當然,目標受害者的 ISP 可能會設定為丟棄資料包,從而保護目標受害者的路由器。但是,您的 ISP 也可能會丟棄資料包,因此資料包甚至不會到達目標受害者的 ISP。

問題 4:ISP 動機

為什麼 ISP 會瘋狂地允許涉及私人 IP 的流量?

請記住,所有組織都可以將私人 IP 位址用於自己的內部網路。其中包括 ISP。您的 ISP 可能正在對 ISP 的某些本地設備使用專用尋址。您不應該能夠注意到/檢測他們是否正在這樣做。

ISP 路由流量的方式是依賴「路由表」來決定流量下一步該流向何處。這些「路由表」並未指定哪個其他 ISP 會樂意接收以私人位址為目的地的流量。 ISP 將無處可發送流量,除了自己的某些內部設備。由於涉及私有 IP 位址的大量流量可能是惡意的或存在其他問題(可能涉及來自設定不正確的設備的流量),ISP 當然不希望此類流量發送到其自己的內部設備(並可能給ISP 帶來問題)。因此,ISP 會想要封鎖發送到私人位址的封包立即地,然後才允許流量進一步通過 ISP 的網路。

如果 ISP 違反了這些規則,則 ISP 可能會邀請惡意流量,這些流量可能不會產生任何影響(除了使用頻寬),但如果有任何影響,則可能對 ISP 不利。

問題 5:到底會發生什麼

到目前為止,我已經解釋了為什麼網路會阻塞流量。但讓我們看看到底會發生什麼事。

如果您坐在電腦上,決定向私人 IP 位址發送惡意資料包,會發生什麼事?

如果流量到達您的本地 ISP,該本地 ISP 將立即阻止流量,如前所述。

然而,真正可能發生的情況是流量無法到達您當地的 ISP。相反,您的本機路由器會弄清楚如何處理該流量。

如果您自己沒有使用相同的「私有」IP 位址,那麼您自己的路由器可能不知道如何處理流量,因此流量將被丟棄。

否則,如果您自己使用相同的「私人 IP」位址,那麼您可能會攻擊您所在網路上的裝置。如果您是該網路的管理員,那麼您就會攻擊自己的網路!

無論如何,您的路由器不太可能(使用常見的預設配置時)透過網路傳遞流量。

審查:

所有這些問題都是關於為什麼互聯網不允許您對私人 IP 位址進行攻擊。如果您實際上與目標位於同一本地網路上,您甚至可能不需要通過路由器,因此這些防禦措施都不會妨礙您。然而,如果您位於網路上的其他地方,這些防禦措施可能會阻礙此類攻擊的嘗試。

儘管您可能會使用您能夠控制的(至少某些類型的)路由器違反某些標準規則,但其他組織也可能會阻止私人 IP 位址,從而有效防止對遠端系統的攻擊。

相關內容