Nmap實用專題系列(二)利用端口掃描進行終端合規性檢查的一個示例

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

二、端口及端口掃描
端口只是一種軟件中的抽象概念,用於區分通訊信道。 這與IP地址用於識別網絡上的計算機的方式相似,端口用來標識在單個計算機上使用的特定應用程序。例如,你的Web瀏覽器將默認鏈接到HTTP URLs中的TCP端口80。 若是您指定安全的HTTPS協議,瀏覽器將默認嘗試端口443。
端口掃描是遠程測試多個端口以肯定它們處於什麼狀態的行爲。一般咱們最感興趣的狀態是open,這意味着應用程序正在偵聽並接受端口上的鏈接。 雖然許多端口掃描程序傳統上將全部端口都集中到open或closed狀態,但咱們將要使用的工具Nmap更加精細,它將端口劃分爲六個狀態。 這些狀態不是端口自己的固有屬性,而是描述Nmap如何看待它們。例如,來自與目標相同的網絡的Nmap掃描可能會將端口135/tcp顯示爲open,而同時使用來自Internet的相同選項的掃描可能會將該端口顯示爲filtered。
三、問題
在真實環境中有時咱們會須要從一個網絡中快速找出某個TCP端口開放的主機。例如:在Microsoft IIS的漏洞曝光後,咱們很想知道網絡中的這些主機上哪一臺的TCP 80端口是打開的,而且還在運行着該服務;或者,當你發現一臺被攻陷的主機上***留下的後門在端口31337上運行,你會但願快速掃描網絡,找到其它被攻陷的主機,等等。
四、解決辦法
要解決上面的問題,最直接的辦法就是運行下面的命令:
#nmap -Pn -p<portnumber> -oG <logfilename.gnmap> <target network>
這是一個搜索4096個IP的Web服務器(端口80打開)的具體示例:
#nmap -Pn -p80 -oG logs/pb-port80scan-%D.gnmap 216.163.128.0/20
文件名中的「%D」將替換爲掃描運行的數字日期(例如,2007年9月1日爲「 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
Nmap實用專題系列(二)利用端口掃描進行終端合規性檢查的一個示例
 咱們發現大部分時間都花在了反向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}’。
五、實例演示
有時,故事是理解決策的最佳方法,在實際例子中咱們才能更好的理解如何決定在解決方案中使用哪些命令行。例如,在一家公司裏,有大約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會嘗試查找全部4096個IP。因爲咱們是要尋找web服務器,因此將端口設定爲80。固然,這樣的設置會錯過在非標準端口(例如81或8080)上運行的全部HTTP服務器。也不會找到使用443端口的SSL服務器。你也能夠把這些端口加到選項-p以後,可是即便是多加一個端口也會讓掃描時間翻倍,這大體與掃描的端口數成正比。
最後一個選項是-oG,後跟要存儲grepable結果的文件名。Gordon將目標網絡添加到命令的最後,而後按下enter鍵開始掃描。如例6所示:
例1: 開始掃描
Nmap實用專題系列(二)利用端口掃描進行終端合規性檢查的一個示例瀏覽器

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

Nmap實用專題系列(二)利用端口掃描進行終端合規性檢查的一個示例

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

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

相關文章
相關標籤/搜索