Try   HackMD

Computer Networking — 1.6 Networks Under Attack

contributed by <kaeteyaruyo>

tags: Computer Networking

網際網路已經變成了許多機構中不可或缺的基礎設施 (mission critical),各種大小型企業、大專院校、政府機關沒有網路這些機構的業務就無法進行。而許多人也都依賴網路來進行他們的工作、社交,或任何個人活動。數十億的「物品」,像是穿戴裝置和家電,近年來也都被連接到網路上。網際網路雖然為我們的生活帶來許多便利,但他的背後卻藏著一個黑暗面:有一群「壞蛋」嘗試著透過網路大肆破壞我們的日常生活,他們破壞我們連接在網路上的電腦、違反我們建立的規則或是阻斷我們生活所需的那些網路服務。

網路安全這門學問,就是在鑽研這些壞蛋是如何破壞電腦網路,以及我們,這些即將要成為電腦網路專家的人,要怎麼防禦這些攻擊,甚至是設計出可以免疫這些攻擊的系統。現有的攻擊已經相當頻繁又變化多端,未來又可能會出現更具破壞性的新型態攻擊,面對這些威脅,網路安全已經變成了電腦網路這個領域中的核心主題。本書的一大特色就是相當著重於網路安全的相關議題。

但我們現在就還不是網路專家 :( ,我們對電腦網路和通訊協定的了解還不夠多,所以我們現在只能先看看有哪些安全問題,是近年來越來越普遍的。這對我們在往後的章節要鑽研其他更深的問題會有所幫助。我們現在僅僅先提出一些簡單的問題:網路是能出什麼問題?電腦網路為什麼會被攻擊?最近有哪些攻擊越來越常見呢?

The Bad Guys Can Put Malware into Your Host Via the Internet

我們之所以要把裝置連接到網路上,是因為我們想要透過網際網路傳送/接收資料。這些資料包含了所有好玩的東西,像是 IG 的貼文、 Google 搜尋結果、串流音樂影片、視訊電話、串流電影等等的。但很不幸的,除了這些好東西外,網路上也漂著一些壞東西——統稱叫作惡意軟體 (malware), 可能會跑進我們的裝置並且感染它。一旦惡意軟體感染了我們的裝置,他就能夠做出任何的惡意行為,像是刪除我們的檔案、安裝間諜軟體來蒐集我們的個人資訊(像是身份證、密碼、按鍵行為等等),並且再透過網路傳回去給散播惡意軟體的壞人們。我們受感染的主機也有可能會被拿去聯合網路上其它上千上萬台同樣被感染的裝置,形成一個殭屍網路 (botnet), 然後被駭客們拿去散播垃圾郵件,或是對某個目標發起分散式阻斷服務攻擊 (Distributed Denial-of-service Attack, DDoS) (這我們稍後會提到)。

現今的許多惡意軟體都是會自我複製 (self-replicating) 的,也就是說,只要他們感染了某一台主機,他們就會在那台主機裏面透過網路尋找其它可以感染的主機;一旦他們又感染了新的主機,他們就會再尋找更多可以感染的機器。用這種方式,可以自我複製的惡意軟體他們的傳播速度就會呈指數成長。

惡意軟體可以依照傳播方式被分成病毒 (virus) 和蠕蟲 (worm) 兩種:

  • 電腦病毒 (virus)
    • 必須要使用者做了某些操作才可以感染電腦
    • 一個經典的例子是透過 e-mail 的附件來夾帶惡意的可執行檔。一旦使用者打開了該附檔,使用者就在不知情的情況下執行了惡意軟體
    • 這種 e-mail 通常都是可以自我複製的,一旦被執行,病毒就會把同樣的信件和附檔寄給這個受害者的所有聯絡人
  • 電腦蠕蟲 (worm)
    • 不需要使用者特別做什麼事就能鑽進一台電腦
    • 例如:使用者可能執行了某個有漏洞的網路應用程式,攻擊者就可以透過該漏洞將惡意程式送進該使用者的電腦。在這種情況下,使用者什麼都沒做,該應用程式就接受了惡意軟體並執行了它,形成一個蠕蟲
    • 在被感染的裝置中,蠕蟲會掃描整個網路,並且尋找下一個同樣執行者有漏洞的應用程式的電腦。一旦他找到下一個有漏洞的主機,他就會把自己複製一份並寄給那些主機

在現代,惡意軟體幾乎無孔不入,要防禦他們的代價非常大。在你閱讀這本課本的過程中,我們鼓勵你去思考這個問題:作為一個電腦網路設計師,我們可以做什麼來避免這些連接在網路上的裝置遭受到惡意軟體攻擊呢?

The Bad Guys Can Attack Servers and Network Infrastructure

另一個資安問題的大宗就是阻斷式服務攻擊 (Denial-of-service Attack, DoS)。 從名字就可以看得出來, DoS 攻擊是透過合法的使用者來造成網路、主機,或是其它網路上的基礎設施無法使用。舉凡 Web 伺服器、 e-mail 主機、 DNS 主機(在第二章會提到),和一些機構的網路,都有可能是 DoS 攻擊的受害者。網際網路上的 DoS 攻擊非常常見,每一年都會發生數千件 [Moore 2001]。 Digital Attack Map 這個網站讓使用者(這裡課本寫成 use, 應該是 user)可以以視覺化的方式看到每天在世界各地發生的最大規模的幾個 DoS 攻擊流量 [DAM 2016]。

大部分的網際網路 DoS 攻擊都可以歸納進以下三個類別之一:

  • 漏洞攻擊 (Vulnerability attack): 攻擊者透過送出少量的幾個精密設計過的訊息,給目標主機上那些有漏洞的應用程式或是作業系統。一旦封包以正確的順序被送到這些有漏洞的應用程式或作業系統中,在那上面運行的服務就會停止,甚至該主機可能會直接死當。
  • 頻寬洪水攻擊 (Bandwidth flooding): 攻擊者透過傳送如洪水般大量的封包給目標主機,導致該目標的存取線路被堵塞,造成合法的封包無法抵達伺服器。
  • 連線洪水攻擊 (Connection flooding): 攻擊者透過與目標主機建立大量的 TCP 半開連線 (TCP half-open connection)或是全開連線(這是啥)(關於 TCP 連線我們在第三章會討論),使得主機因為大量的假連線佔用資源,最後停止接受合法的連線。

讓我來更深入的探討頻寬洪水攻擊。回想一下我們在 1.4.2 的時候討論的延遲和掉包分析,如果說伺服器的 access rate 是 R bps, 那想當然爾,攻擊者就至少需要以差不多 R bps 速度送出封包才能造成傷害。如果 R 非常大,那麼單一個攻擊來源可能沒辦法產生足以傷害到伺服器的龐大流量。再者,如果所有流量都是來自於同一個攻擊來源的話,那麼在上游的路由器老早就會偵測到這是攻擊流量,並且在流量接近伺服器前就先封鎖掉所有來自於那個攻擊來源的流量。

但是在分散式阻斷服務攻擊 (Distributed DoS attack, DDoS) 中,如上圖所示,攻擊者可以控制很多個來源,並且讓每一個來源都往目標發送龐大的流量。透過這個方式,所有來源產生的流量加總起來就可能跟 R 一樣大,伺服器就被塞住了。透過殭屍網路控制數千台受感染的電腦發動 DDoS 攻擊在現代非常常見 [DAM 2016]。 DDoS 攻擊比起來自單個主機的 DoS 攻擊更難以偵測和防禦,

在你閱讀這本課本的過程中,我們鼓勵你去思考這個問題:作為一個電腦網路設計師,我們可以做什麼來抵禦 DoS 攻擊呢?我們之後會發現,針對這三種不同種類的 DoS 攻擊,我們需要採取不同的防禦方式。

The Bad Guys Can Sniff Packets

在現代,有許多使用者會透過無線裝置存取網路,像是用平板連 Wi-Fi, 或是用手機連接蜂巢式網路(這在第七章會詳談)。雖然隨時隨地都可以存取到網路非常地方便,也催生了很多為行動用戶設計的驚奇的應用程式,但這同時也造成了一個很嚴重的資安問題:透過在無線發射器附近擺放一個被動的接收器,該接收器就可以取得所有經過他的封包的副本。這些封包可能包含了所有敏感的資訊,包含密碼、身份證、商業機密,還有私訊內容。這個可以記錄所有經過的封包副本的被動接收器,就叫作封包分析器 (packet sniffer)

分析器也可以被佈署在有線的環境中。在會廣播封包的有線環境,像是許多的乙太網區域網路中,封包嗅探器可以獲得所有廣播到區域網路中的封包。就像我們在 1.2 談到的,第四台網路使用的就是會廣播封包的技術,因此其封包特別容易被監聽。此外,壞人一旦連上了某個機構的存取路由器或是通向網際網路的存取線路,他就可以在那裡種下一個分析器監聽所有往來該組織的封包。這些被偷聽到的封包接著就可以在離線的狀況下被分析,進而取得裡頭的敏感資訊。

這些封包分析軟體是可以在許多網站上免費取得的,但也有一些是商業軟體。一些教網路的教授也會出作業要學生練習寫封包分析器和應用層資料重建程式。確實,這本課本裡就有 Wiresharks 的練習(去查看在本章節最後介紹 Wireshark 的作業)會用到這種封包分析軟體!

由於封包分析器是被動的——也就是說,他們不會送封包到傳輸通道裡——因此他們非常難以偵測。我們必須接受,當我們送封包到無線的傳輸通道時,就是有可能會有壞蛋偷聽我們的封包。你可能有猜到,避免封包被監聽最好的方法跟密碼學有關。我們將會在第八章談到密碼學是怎麼被應用在網路安全上的。

The Bad Guys Can Masquerade as Someone You Trust

要偽造一個封包比遠比你想像中還要來的容易(在你看完這本書之後也會有足夠的知識做到這件事)。我們很輕易的就可以創造一個含有任意來源位址、封包內容,以及目標位址的封包,並且把這個手工製造的封包送到網路上,它還真的會被正確的送到該去的地方。想像有一個毫無戒心的收信端(例如網際網路中的路由器),他收到了這樣一個造假的封包,他會輕易的相信這個假的來源地址是可信任的,並且去執行該封包內容中內嵌的一些指令(像是更改他的 forwarding table 之類的)。這種往網際網路中注入含有虛假來源位址的封包的技術,叫作 IP 位址詐欺 (IP spoofing), 這是眾多網路身份偽造技巧的其中一種。

要解決這個問題,我們就需要進行端點認証 (end-point authentication), 這是一種可以讓我們確認一段訊息真的是從我們認為的源頭送來的一種機制。同樣地,我們依然鼓勵你在閱讀這本課本的過程中去思考,我們可以在設計網路應用程式或是通訊協定的時候做些什麼來解決這個問題。我們會在第八章的時候更深入探究端點認証的機制。

在這個小節的最後,值得我們來思考一個問題:到底為什麼網際網路會變成一個這麼不安全的地方?答案是:網際網路本來就是這樣設計的。網際網路是基於「一群互相信任的使用者連接到一個透明的網路上」這樣的模型被設計出來的 [Blumenthal 2001], 在定義上,本來就不用任何的安全措施。原始的網際網路架構有許多面向都深刻的反映了這個互相信任的概念。例如:使用者可以傳送封包給任意的另一個使用者,是網際網路的預設行為,而不是一個被要求/被賦予的能力;所有人都相信個別使用者自己宣稱的身份,預設是不需要進行任何身份驗證的。

但在現代,網際網路當然不是由「互相信任的使用者」組成的囉。儘管如此,現代的使用者們依然需要在沒有必要相信其它使用者的狀況下和彼此通訊。他們或許希望能匿名通訊、或許需要通過第三方進行間接通訊(例如:網頁快取,在第二章會說明;或 mobility-assisting agents, 在第七章會說明),或許會懷疑他們使用的硬體、軟體,甚至是傳播這些訊息的空氣。我們正面臨著許多資安相關的挑戰,在你閱讀這本書的過程中我們都會一一提到,像是:封包監聽、端點身份偽造、中間人攻擊、 DDoS 攻擊、惡意軟體,等等,都需要我們去尋找防禦手段。我們需要隨時記得,現在互相信任的通訊行為已經是例外,而不是原則了。歡迎來到現代的電腦網路世界!


<< 1.5 Protocol Layers and Their Service Models | 目錄 | 1.7 History of Computer Networking and the Internet >>