利用端口掃描進行終端合規性檢查的一個示例

利用端口掃描進行終端合規性檢查的一個示例

摘要:大型的辦公網絡內往往運行着數量衆多的終端,這些終端的安全又是網絡管理員重點關注的問題,如何對使用人員開展信息安全教育以及採取哪種技術防禦措施是很多文章研究的內容,但是這些防禦措施是否有效?員工是否按規定使用終端呢?本文利用端口掃描技術,針對終端應用程序檢查提供了一個示例,爲網絡管理員對終端進行合規性檢查提供了一個思路。

關鍵字:端口掃描;Nmap;終端合規性

1、背景

現代大型公司往往都有自己的內部辦公網絡,根據公司業務的規模及分佈,有的辦公網絡集中於某個地區,有的則跨省跨國。使用計算機網絡的地方就必須考慮安全問題,這是計算機網絡發展多年以來大家早已達成的共識。面對公司規模龐大、主機衆多的網絡,我們怎麼能夠快速檢查,找到那些存在安全隱患的主機?這是網絡管理員躲避不了的問題。目前人們對於內網安全的研究比較廣泛,總結起來大致是三個方面:1)加強員工安全意識教育;2)提高終端安全管理水平;3)完善終端安全防護措施。【1】筆者認爲除了正面防禦之外,還應考慮檢查手段,不然無法驗證我們的防禦手段是否有效。考慮到完整的***測試未必適用於每個公司,因此本文提出利用端口掃描進行終端合規性檢查的辦法,並舉例說明。希望以點帶面、拋磚引玉,促進網絡管理人員對內網安全的思考。


2、端口及端口掃描

端口只是一種軟件中的抽象概念,用於區分通信信道。 這與IP地址用於識別網絡上的計算機的方式類似,端口用來標識在單個計算機上使用的特定應用程序。例如,你的Web瀏覽器將默認連接到HTTP URLs中的TCP端口80 如果您指定安全的HTTPS協議,瀏覽器將默認嘗試端口443

端口掃描是遠程測試多個端口以確定它們處於什麼狀態的行爲。通常我們最感興趣的狀態是open,這意味着應用程序正在偵聽並接受端口上的連接。 雖然許多端口掃描程序傳統上將所有端口都集中到openclosed狀態,但我們將要使用的工具Nmap更加精細,它將端口劃分爲六個狀態。 這些狀態不是端口本身的固有屬性,而是描述Nmap如何看待它們。例如,來自與目標相同的網絡的Nmap掃描可能會將端口135/tcp顯示爲open,而同時使用來自Internet的相同選項的掃描可能會將該端口顯示爲filtered

3、問題

在真實環境中有時我們會需要從一個網絡中快速找出某個TCP端口開放的主機。【2】例如:在Microsoft IIS的漏洞曝光後,我們很想知道網絡中的這些主機上哪一臺的TCP 80端口是打開的,並且還在運行着該服務;或者,當你發現一臺被攻陷的主機上***留下的後門在端口31337上運行,你會希望快速掃描網絡,找到其它被攻陷的主機,等等。

4、解決辦法

要解決上面的問題,最直接的辦法就是運行下面的命令:

#nmap -Pn -p<portnumber> -oG <logfilename.gnmap> <target network>

這是一個搜索4096IPWeb服務器(端口80打開)的具體示例:

#nmap -Pn -p80 -oG logs/pb-port80scan-%D.gnmap 216.163.128.0/20

文件名中的D”將替換爲掃描運行的數字日期(例如,200791日爲“ 090107”)。儘管此掃描命令有效,但做一些選項上的優化會大大減少掃描時間。

#nmap -T4 -Pn -p80 - -max-rtt-timeout 200ms - -initial-rtt-timeout 150ms - -min-hostgroup 512 -oG logs/pb-port80scan-%D.gnmap 216.163.128.0/20

 我們發現大部分時間都花在了反向DNS解析上。通過在上面的命令行中添加-n來禁止DNS解析,可以大大減少等待的時間。

上面的命令將grepable格式結果存儲在指定的文件中。 然後,我們再用一個簡單的egrep命令將找到端口80打開的機器:

egrep ‘[^0-9]80/open’ logs/pb-port80scan-%D.gnmap

egrep模式前面帶有[^ 0-9],以避免虛假匹配端口(例如3180)。由於我們僅掃描端口80,因此當然不可能發生,但是這在進行多端口掃描時是一種好習慣。 如果只需要IP地址,則使用egrep awk'{print $ 2}’

5、實例演示

有時,故事是理解決策的最佳方法,在實際例子中我們才能更好的理解如何決定在解決方案中使用哪些命令行。例如,在一家公司裏,有大約4096臺終端,這些終端上能夠使用的應用程序公司有明確的要求,其中有一條用戶終端不得提供web服務,但面對數量如此龐大的終端數,網絡管理員不可能進行普查,即便逐臺檢查過,你也無法保證之後會不會有人違規。運行web服務器的主機通常會開放TCP 80端口,儘管理論上此類服務器可以偵聽任何端口,但可能性最大的還是80端口。因此,我們可以通過找到網絡中80端口開放的終端來確定那些違反公司規定的員工。

爲了優化掃描的效果,我們先對網絡延遲進行了測量,平均延遲60毫秒。考慮平均延遲影響之後,我們使用如下選項:- -max-rtt-timeout 200ms - -initial-rtt-timeout 150ms。然後再使用一個更加積極的時間模版-T4

由於我們重視最小化整個掃描的完成時間,而不是最小化返回第一批主機結果之前的時間,因此,可以指定了較大的掃描組大小,選項- -min-hostgroup 512設定每次並行掃描512臺主機。使用精確的子地址塊能夠避免出現低效的掃描子塊,就像本例中的4096臺主機如果用- -min-hostgroup 500,最後就會出現96臺主機的掃描子塊。

由於一次ping需要花費的時間與單端口掃描本身消耗的時間相同,因此無需在先前的ping階段浪費時間。 因此,指定了-Pn以禁用該階段。通過使用-n參數跳過反向DNS解析,可以節省大量時間。否則,在禁用ping掃描的情況下,Nmap會嘗試查找所有4096IP。由於我們是要尋找web服務器,所以將端口設定爲80。當然,這樣的設置會錯過在非標準端口(例如818080)上運行的所有HTTP服務器。也不會找到使用443端口的SSL服務器。你也可以把這些端口加到選項-p之後,但是即使是多加一個端口也會讓掃描時間翻倍,這大致與掃描的端口數成正比。

最後一個選項是-oG,後跟要存儲grepable結果的文件名。Gordon將目標網絡添加到命令的最後,然後按下enter鍵開始掃描。如例6所示:

6: 開始掃描

image.png


 


Nmap會在大約三分鐘內掃描所有4096IP 正常輸出顯示一堆處於過濾狀態的端口。這些IP中的大多數可能不是活動主機(端口僅顯示爲已過濾),因爲Nmap沒有收到對其SYN探針的響應。我們使用egrep命令,從輸出文件中獲得web服務器的列表。如例7所示:

7: egrep命令查詢開放80端口的主機 

image.png


在經過所有努力之後,發現了在4096IP中有兩臺主機的80端口開放。上述例子描述的情況可能已經有很多網絡管理員遇到過,比起一臺主機一臺主機的排查,使用端口掃描的效率明顯更高。當然,如果出現了極端的用戶,例如:故意躲避掃描;修改web服務端口;設置本地防火牆策略等,我們目前使用的辦法效果就會大打折扣,不過有這種技術的用戶本身在公司裏應該就很顯眼吧。

6、總結

終端合規性檢查這個話題的範圍其實挺大,並不僅僅只有應用程序檢查這一個方面。本文以檢查終端TCP 80端口開放的終端爲例,介紹了端口掃描技術在此方面的應用。當然,沒有一種技術能夠單獨解決終端合規性檢查的問題,我們還需要綜合利用其它手段,擴大檢查範圍,提高檢查效率,減輕網絡管理人員的工作負擔。


參考文獻:

[1]羅華屏.大型企業內網計算機終端安全管理探究[J].產業與科技論壇,2020,19(02):36-38.

[2]Gordon Lyon.Nmap Network Scanning[EB/OL].https://nmap.org/book/toc.html,2011.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章