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