◆裴志斌 李斌勇 王星程
(成都信息工程大學網絡空間安全學院 四川 610225)
IP及端口掃描體系的邏輯處理設計
◆裴志斌 李斌勇 王星程
(成都信息工程大學網絡空間安全學院 四川 610225)
本文針對檢測網絡安全問題,深入分析了與網絡端口相關的漏洞。圍繞這些漏洞,分析并設計了將IP和端口掃描工具結合起來,實現對計算機安全問題識別技術的完善。在此基礎上實現了利用TCP和UDP端口掃描來識別安全問題。程序通過查詢端口和端口狀態,分析其提供的服務;程序分析運行環境,獲得所在的操作系統版本。安全人員可以通過邏輯處理程序分析得到的結果,對客戶主機可能存在的程序或系統漏洞提供相應解決方案。
端口掃描;TCP/UDP;網絡安全
隨著信息技術的廣泛應用,計算機和網絡的發展已經滲透到各個角落,其開放的性質和網絡的連接性能也在逐漸加強。而其中潛在的網絡安全問題,逐漸引起了社會的廣泛關注。端口掃描器在檢測網絡安全問題時發揮著關鍵性的作用。通過向目的主機的TCP/IP端口發送TCP或UDP探針,進而把檢測對象所做出的反應記錄下來,以此來明確目的主機服務端口的狀態和提供的服務,之后再進行網絡安全問題的分析。相關技術人員通過檢測到的狀態,在黑客發現和利用網絡存在的隱患之前解決問題,防止網絡安全遭到破壞。
在我國目前,已經有一些專門開發相關工具和技術的公司。例如:啟明星辰、綠盟科技等公司。其設計的技術通常將硬件作為主要內容,設計的技術的功能執行速度比較快,不會受主機性能的影響。但是這個特點與軟件不同,簡單、方便使用、功能穩定才是大部分用于主機的端口掃描器所應具備的能力。
未來,由于防火墻的廣泛使用和人們安全意識的提高,端口掃描技術會更加復雜和完善。目前基于主機的掃描技術(一種針對操作系統的掃描技術,采用了被動的、非破壞性的方法對目標的系統進行檢測)將可能不再適用于未來大規模、集成式的網絡環境。而基于網絡的掃描技術(一種采用積極的、非破壞性的方法對系統進行檢測,該技術可發現多個平臺漏洞,同時方便安裝和使用,但是會占用大量帶寬)可能會隨著網絡帶寬的不斷擴大而更顯其優勢。
Winsock是 VC里面本身自帶的極其重要的控件,利用Winsock使用各種Internet協議在VC程序里顯得輕而易舉。控件是設計端口指定掃描工具不可或缺的,利用UDP協議或TCP協議進行信息的相互交換并產生連接。這種做法能夠直截了當地確認目標機器端口是否開啟或是關閉。TCP connect()由 WINSOCK函數中的connect()調用,用于實現和特定對象間的連接,并通過端口的不同狀態模式來連接結果。若要實現connect(),端口必須保持特定的運行狀態,即監聽模式,否則其服務將無法完成。
程序VC在系統中有著極其重要的職能,其中Winsock更是其中一大亮點,對Internet協議而言,它是其有效使用的前提和基礎。另外它的運用還可以實現遠程操控,利用 UDP協議等實現和目標主機的數據傳遞職能。這樣就能確認遠程計算機的端口開放情況。由于TCP協議判斷遠程計算機的信息比UDP協議準確,所以本文使用Winsock控件的TCP協議來開發掃描器。
針對程序的功能和性能需求分析,以及程序總體流程設計,對程序的功能模塊進行了詳細的劃分和設計,程序總體功能模塊劃分細節如圖1所示。

圖1 程序總體功能模塊設計
掃描體系界面簡單明了,操作方便。程序運行后,運行界面上以功能列表的形式,提示用戶工具所含具體功能并按順序進行相關操作。
如圖2所示為具體流程設計關系圖。

圖2 IP及端口掃描體系流程設計
首先是掃描數據設置模塊的設計,用戶根據功能列表,先后對掃描目標 IP地址、開始和結束端口數目、具體超時、線程數和TCP或UDP掃描進行設置。作為端口掃描程序,首先需要完成的功能就是對于系統操作系統的服務端口進行掃描,返回掃描結果。在本模塊中,對掃描所需要的主要數據進行設置,為程序執行掃描指令奠定基礎。設置完成后,程序依據用戶設置的具體數據開始執行,若用戶并未對有關數據進行設置或是設置有誤,程序以默認數據執行。
然后是端口掃描模塊設計,掃描器通過選用遠程 TCP/IP不同的端口的服務,并記錄目標給予的回答,通過這種方法,可以搜集到很多關于目標主機的各種有用的信息。端口掃描模塊被細分為三個子功能模塊,分別為“TCPUDP掃描”子模塊、“端口所對應服務分析”子模塊以及“操作系統判斷”子模塊。掃描器是一種自動檢測遠程或本地主機安全性弱點的程序,通過使用掃描器可以不留痕跡地發現遠程服務器的各種 TCP端口的分配及提供的服務和它們的軟件版本。
“TCP/UDP掃描”子模塊按照用戶最初的設置數據,對目標端口進行掃描,并顯示掃描結果。若用戶最初并未設置掃描數據,那么程序按系統默認數據進行處理;“端口所對應服務分析”子模塊對端口所對應的服務進行分析和判斷,并為用戶分析判斷網絡安全漏洞提供建議;“操作系統判斷”子模塊通過查詢系統自帶資源列表對所掃描的目標IP的主機操作系統版本進行判斷。
在“TCPUDP掃描”子模塊中,用戶對TCP或者UDP掃描進行選擇,用戶選擇完畢后程序首先創建工作線程StartThread,對客戶在掃描數據設計模塊時設置的數據進行判斷,判斷正確則按照設置數據進行下一步操作,判斷錯誤則按照系統默認數據進行下一步操作,通過SetThreadHandleFunc()創建線程,判斷比較用戶設置端口數與系統設置線程數大小,系統默認設置最大線程數為64。若用戶設置端口數小與系統設置線程數,那么程序以一組線程由ThreadHandFunc()進行下一步線程處理操作;若用戶設置端口數大于系統設置線程數,那么程序將其分別創建為N組,由ThreadHandFunc()循環處理,直至最后一組線程處理完畢。程序通過ThreadFunc()進行端口掃描具體過程,并由消息機制 OnGetthreadmessage()更新列表信息,直至創建的工作線程結束,程序顯示最后的掃描結果,掃程序描結束。
在“端口所對應服務分析”模塊中界面線程OnBnCliskedOK2接收由工作線程Startthread發來的THREADINFO結構體中的消息,THREADINFO結構體中主要包含線程句柄、IP地址、端口號、端口狀態等信息,通過查詢系統的列表中端口所對應的相關服務,分析端口所對應的服務類型,并以列表形式顯示結果。
“操作系統判斷”模塊在界面線程OnBnCliskedOK2接收結構體THREADINFO中消息后,通過查詢系統的列表中相關信息,分析判斷目標 IP地址主機操作系統版本,并以列表形式顯示結果。

圖3 局域網所有主機掃描流程設計
程序運行后,在運行界面中以功能選項鍵的方式,提示用戶工具含有掃描局域網內所有主機掃描的功能,用戶根據需要選擇使用此功能,點擊功能選項鍵后,程序開始執行用戶指令,并以列表的形式將掃描結果顯示出來,簡潔實用。用戶點擊“局域網內主機掃描”,通過NETRESOURCE結構體返回枚舉網絡資源列表信息,對枚舉網絡資源信息的啟動通過WNETOPENENUM()實現,隨后建立WSAData列表,WsaStart進行判斷,若無相關信息,則遍歷結束,顯示掃描結果,若有相關信息,則獲取計算機名稱及 IP地址,對所獲取的信息進行處理分析,最后以列表的形式將結果顯示。如圖所示3為局域網內主機掃描流程設計圖。
幾秒之后程序彈出窗口提示“掃描結束”,右邊列表中顯示了使用TCP協議的端口號和其他信息。
在最終的運行結果中,程序發現了當前 IP地址的主機,使用TCP協議的端口號有:135、445、443號,分別對應的服務為:遠程過程調用服務、共享服務、網頁瀏覽服務。使用 UDP協議的端口號有:134、139等,其中139號端口為NetBIOS服務。

圖4 分別使用TCP/UDP掃描后的結果
點擊程序主界面的“局域網所有主機掃描”,彈出窗口中點擊“掃描”按鈕。等待一段時間后,程序列表中顯示了當前局域網中,開啟了網絡共享的或者沒有在網絡中隱藏的計算機名和對應的IP地址。掃描結果如圖5所示。

圖 5 局域網內主機掃描結果
程序完成了IP、端口、端口狀態、主機操作系統版本、對應服務、計算機名等的掃描,這些信息為后續的滲透測試奠定了基礎。
端口掃描是掃描的奠基石,也是電腦中毒、黑客攻擊的最基本手段,了解此種掃描技術能夠在一定程度上為計算機安全防范提供參考,通過這種技術也能夠掌握系統的開放端口數量,同時還能夠根據相關的系統反饋數據掌握系統的運行情況。不同操作系統安裝和設置的網絡協議有所差別,因此在不同的系統中進行掃描,結果可能不盡相似。本文主要通過對端口掃描技術原理進行分析,能夠獲得當前主機IP地址和局域網內主機IP地址,能夠通過對這些 IP地址進行端口掃描,獲得對應主機開放的服務端口。經過多次實驗數據顯示,現有的掃描器在局域網中的應用成果顯著,但是對運行不甚穩定的廣域網還無法完全適用,因此應該在下一步著重進行研究,爭取盡早實現穩定、高效的端口掃描技術。
[1]黃友俊,李星,吳建平等.一種端口掃描IP網址活躍度統計系統及方法, CN105471676A[P],2016.
[2]黃煒.詳解端口掃描和物理網絡測試命令[J].課程教育研究,2012.
[3]肖征.基于網絡爬蟲的網絡漏洞掃描檢測系統的設計與實現[D].吉林大學,2014.
[4]陳珊珊.網絡安全掃描系統的設計與實現[D].大連理工大學,2014.
[5]王曉博,張亞東,徐剛.Linux防火墻遠程控制系統的開發[J].鄭州輕工業學院學報自然科學版,2015.
[6]郭雨龍.基于 HTML5應用的 Chrome瀏覽器安全支付插件設計[D].西安電子科技大學,2015.
[7]楊寧.基于 WinPcap的內網監控系統的設計與實現[D].中國人民解放軍信息工程大學, 解放軍信息工程大學,2013.
[8]山蕊,蔣林,孟李林.PTN芯片中IP組播輸出端口掃描電路: CN103838685A[P],2014.
[9]周迪,趙暉.防御端口掃描入侵的方法及裝置:CN105681353A[P],2016.
[10]程光,吳樺.基于自適應的網絡端口快速掃描方法:CN103685279A[P],2014