譯者 | 晶顏
審校 | 重樓
端口掃描用于確定網絡上的端口是否開放以接收來自其他設備的數據包,這有助于網絡安全團隊加強防御。但惡意行為者也可以利用這一過程來尋找易受攻擊的端口。
在深入研究什么是端口掃描攻擊以及如何預防和阻止它們之前,讓我們先看看什么是端口和端口掃描。
什么是端口?
端口是一個通信端點,數據單元(稱為數據包)通過它流動。傳輸層協議使用端口號碼進行通信和交換數據包。最著名的傳輸層協議是傳輸控制協議(TCP)和用戶數據報協議(UDP),前者是一種面向連接的協議,在發送數據之前需要建立連接;后者是一種無連接協議,不需要建立雙向連接即可開始通信。
TCP和UDP使用的每個端口都與一個特定的進程或服務相關聯。端口的取值范圍是0 ~ 65535,在網絡連接的設備之間是標準化的。端口0在TCP/IP網絡中是保留的,不應該在TCP或UDP消息中使用。端口1到1023是眾所周知的端點,用作Internet協議的默認值,由互聯網數字分配機構(IANA)定義。
端口1024 ~ 29151是為在IANA注冊的端口預留的號碼,用于關聯特定協議。49152 ~ 65535范圍內的端口是臨時端口,用于動態連接。
一些最常用的端口包括:
- 用于HTTP協議的TCP 80端口和UDP 80端口;
- 用于HTTPS協議的TCP 443端口和UDP 443端口;
- 用于郵件服務器(如SMTPTCP)的TCP 465端口;
- 用于DNS的TCP 53端口和UDP 53端口。
端口掃描及其用途
端口掃描是由某人發送的一系列消息,以了解給定計算機提供的計算機網絡服務。
端口掃描器是識別連接互聯網的設備上哪些端口和服務打開或關閉的應用程序。端口掃描器可以在所有65,536個端口上向目標計算機發送連接請求,并記錄哪些端口響應以及如何響應。從端口接收到的響應類型表明它們是否在使用中。
企業防火墻一般以以下三種方式響應端口掃描:
- 打開。如果一個端口是打開的,或者正在監聽,它就會響應請求。
- 關閉。一個關閉的端口會用一條消息進行響應,表明它收到了“打開”的請求,但拒絕了它。這樣,當一個真正的系統發送一個“打開”的請求時,它知道請求已被接收,但無需不斷重試。然而,這個響應也揭示了在被掃描的IP地址后面存在一臺計算機。
- 沒有響應,也稱為過濾或丟棄,這既不涉及確認請求也不發送回復。沒有響應向端口掃描器表明防火墻可能過濾了請求數據包,端口被阻塞或沒有端口。例如,如果端口被阻塞或處于隱身模式,則防火墻不會響應端口掃描程序。有趣的是,被封鎖的端口違反了TCP/IP行為規則,因此,防火墻必須抑制計算機關閉端口的回復。安全團隊甚至可能發現公司防火墻并沒有封鎖所有的網絡端口。例如,如果標識協議(Identification Protocol)使用的113端口被完全阻塞,那么與某些遠程Internet服務器(如internet Relay Chat)的連接可能會被延遲或完全拒絕。由于這個原因,許多防火墻規則將端口113設置為關閉,而不是完全阻止它。
端口掃描的一般目標是繪制出系統的操作系統及其運行的應用程序和服務,以便了解其保護措施及可能存在的潛在漏洞。
端口掃描的類型
由于TCP和UDP是最常用的傳輸層協議,因此它們經常用于端口掃描。
根據設計,TCP發送一個確認(ACK)數據包,讓發送方知道是否收到了數據包。如果接收不到信息、被拒絕或接收錯誤,則發送一個否定ACK(negative ACK)報文。另一方面,UDP在接收數據包時不發送ACK;如果沒有收到信息,它只會響應“ICMP(Internet控制消息協議)端口不可達”消息。
具體來說,主要存在以下幾種類型的端口掃描技術:
- Ping掃描或Sweep掃描,掃描幾臺計算機上的相同端口,以查看它們是否處于活動狀態。這包括發送ICMP回顯請求,以查看哪些計算機響應。
- TCP SYN掃描或TCP半開放掃描,是最常見的端口掃描類型之一。它通過發送TCP同步報文來發起通信,但不完成連接。
- TCP連接(也稱為全連接掃描)類似于TCP SYN掃描,因為它發送TCP SYN包來啟動通信,但這種掃描通過發送ACK來完成連接。
- 頻閃(Strobe)掃描是嘗試只連接到選定的端口,通常少于20個。
- UDP掃描查找打開的UDP端口。
- 在FTP bounce掃描中,FTP服務器被用來掃描其他主機。通過FTP服務器進行的掃描嘗試會偽裝端口掃描器的源地址。
- 在分段掃描(fragmented scan)中,TCP標頭被分成幾個包,以防止被防火墻發現。
- 隱形掃描(Stealth scans)包括多種掃描技術,試圖阻止連接請求被記錄。
什么是端口掃描攻擊?
端口掃描并不一定意味著網絡攻擊。了解為什么要收集端口掃描信息以及這些信息的用途非常重要。
作為偵察過程的一部分,端口掃描是惡意行為者常用的一種信息收集方法。攻擊者可以使用通過端口掃描收集的數據來查找設備正在運行的服務,并了解正在使用的操作系統。然后,這些數據可以幫助攻擊者標記易受攻擊的系統,意圖利用它們獲得對網絡的訪問權限。
安全團隊和滲透測試人員還使用端口掃描數據來識別漏洞、網絡上可能需要注意的新設備、潛在的錯誤配置和安全覆蓋中的其他缺口,以加強防御。
當路由器報告多次暴力探測的周期性事件時,它會記錄來自端口掃描器的端口請求。這可能是惡意的,也可能不是,因為大多數面向互聯網的系統每天都會被掃描。
端口掃描的做法與互聯網一樣古老。雖然協議隨著時間的推移而變化,安全工具和系統也隨著時間的推移而發展,但檢測和處理端口掃描警報仍然很重要,特別是當未經授權的惡意行為者掃描自己的系統時。
如何檢測端口掃描攻擊?
端口掃描攻擊需要在檢測到端口掃描攻擊后才能阻止。如果正確安裝和配置,現代安全設備可以通過跟蹤訪問本地網絡中的系統的嘗試來有效地檢測端口掃描。
大多數安全設備都可以鏈接來自同一源的正在進行的重復掃描嘗試,無論它們針對的是單個主機還是多個主機。為了實現效率最大化,端口掃描攻擊可能需要在相對較短的時間內探測許多不同系統上的許多不同端口,這使得攻擊嘗試更容易被檢測到。
為了逃避檢測,一些攻擊者可能會在較長的時間范圍內探測開放端口,在這種情況下,檢測端口掃描攻擊會變得更加困難。然而,對攻擊者來說,這樣做的缺點是可能需要數小時、數天甚至更長時間才能找到一個易受攻擊的系統。
如何防止網絡中的端口掃描?
防止端口掃描是不可能的。任何人都可以選擇一個IP地址并掃描它的開放端口。
為了保護企業網絡,安全團隊應該自行開展內部掃描,以找出攻擊者在其網絡的端口掃描期間會發現什么。但是,請注意,針對許多云托管服務(如AWS)的安全評估和滲透測試需要在掃描之前獲得批準。
一旦安全管理員發現哪些端口響應為打開,他們就可以進一步檢查這些端口是否有必要從公司網絡外部訪問。如果沒有必要,安全管理員應該關閉或阻止它們。如果認為開放端口是必要的,管理員應該開始研究網絡中存在哪些開放的漏洞,并應用適當的補丁來保護網絡。
某些類型的防火墻擁有自適應行為,這意味著如果可疑的IP地址正在探測它們,它們會自動阻止先前打開和關閉的端口。防火墻還可以配置為在管理員檢測到來自單個主機的多個端口的連接請求時向管理員發出警報。然而,攻擊者可以通過在頻閃或隱身模式下進行端口掃描來繞過這種保護機制。
總之,組織可以通過始終配置防火墻和入侵檢測系統,來檢測并阻止不尋常的連接嘗試和請求。例如,在端口掃描完成后,攻擊者可能會發起一些探測攻擊,以驗證先前的研究結果或獲取所需的額外信息,以巧妙地發動主攻。此外,將異常活動輸入SIEM系統可以提供實時反饋并改進對事件的自動響應。
端口掃描工具
組織可以采用以下工具執行端口掃描:
- Advanced Port Scanner
- Angry IP Scanner
- Metasploit
- Netcat
- NetScanTools
- Nmap
- SolarWinds Port Scanner
- Unicornscan
原文標題:Port scan attacks: What they are and how to prevent them,作者:Michael Cobb