丁岳偉, 高 強(qiáng), 何 璐
(1.上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093;2.上海市信息安全綜合管理技術(shù)研究重點(diǎn)實(shí)驗(yàn)室,上海 200030)
隨著信息技術(shù)的快速發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)滲入到社會經(jīng)濟(jì)的各個(gè)角落.網(wǎng)絡(luò)的日趨擴(kuò)大、設(shè)備的日趨復(fù)雜使得網(wǎng)絡(luò)的管理難度越來越大.網(wǎng)絡(luò)管理員就需要盡可能全面地獲得網(wǎng)絡(luò)的各種信息,管理整個(gè)網(wǎng)絡(luò).
本文采用多種協(xié)議互補(bǔ)多線程掃描的方式來設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)局域網(wǎng)環(huán)境下的資產(chǎn)掃描軟件,用于獲取整個(gè)局域網(wǎng)的軟硬件信息.資產(chǎn)包括硬件和軟件資源.本文主要采用Arp協(xié)議、Netbios協(xié)議、Snmp協(xié)議、Wmi和IPC$空連接的方法,并通過對上述幾種協(xié)議的分析,獲得在一般情況下所能得到局域網(wǎng)信息的最大集和最小集.最后通過實(shí)驗(yàn)測試得出,采用多線程方式能夠明顯提高掃描的速度,而多協(xié)議互補(bǔ)的方式也能夠提升信息獲取的成功率.
為了設(shè)計(jì)多協(xié)議互補(bǔ)資產(chǎn)掃描系統(tǒng),先介紹相關(guān)協(xié)議的原理.
地址轉(zhuǎn)換協(xié)議Arp是個(gè)鏈路層協(xié)議.在以太網(wǎng)中,一個(gè)主機(jī)要和另一個(gè)主機(jī)進(jìn)行直接通信,必須要知道目標(biāo)主機(jī)的MAC地址.這個(gè)目標(biāo)MAC地址就是通過地址解析協(xié)議獲得的.地址解析就是主機(jī)在發(fā)送幀前將目標(biāo)IP地址轉(zhuǎn)換成目標(biāo)MAC地址的過程.Arp協(xié)議的基本功能就是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行.
Netbios(網(wǎng)絡(luò)基本輸入/輸出系統(tǒng))協(xié)議是一種在局域網(wǎng)上的程序可以使用的應(yīng)用程序編程接口(API),為程序提供了請求低級服務(wù)的統(tǒng)一的命令集,作用是為了給局域網(wǎng)提供網(wǎng)絡(luò)以及其他特殊功能,幾乎所有的局域網(wǎng)都是在Netbios協(xié)議的基礎(chǔ)上工作的.
Snmp(簡單網(wǎng)絡(luò)管理協(xié)議)是由互聯(lián)網(wǎng)工程任務(wù)組(IETF))定義的一套網(wǎng)絡(luò)管理協(xié)議.該協(xié)議基于簡單網(wǎng)關(guān)監(jiān)視協(xié)議(SGMP).利用Snmp,一個(gè)管理工作站可以遠(yuǎn)程管理所有支持這種協(xié)議的網(wǎng)絡(luò)設(shè)備,包括監(jiān)視網(wǎng)絡(luò)狀態(tài)、修改網(wǎng)絡(luò)設(shè)備配置及接收網(wǎng)絡(luò)事件警告等.
Wmi(Windows管理規(guī)范)是 Microsoft基于Web的企業(yè)管理(WBEM)的實(shí)現(xiàn),同時(shí)也是一種基于標(biāo)準(zhǔn)的系統(tǒng)管理接口.Wmi是一種輕松獲取系統(tǒng)信息的強(qiáng)大工具.在Wmi中有一種查詢語言,類似于SQL語言,這種語言叫WQL(wmi query language).通過這個(gè)查詢語言可以獲取大量的管理信息.
1.5.1 Ping方法
Ping方法目的是為了測試另一臺主機(jī)是否可達(dá).該方法發(fā)送一份ICMP回顯請求報(bào)文給主機(jī),并等待返回ICMP回顯應(yīng)答.Ping程序還能測出到這臺主機(jī)的往返時(shí)間,以表明該主機(jī)與本機(jī)的“距離”.
1.5.2 IPC$空連接方法
IPC$(internet process connection)是共享命名管道的資源,它是為了讓進(jìn)程間通信而開放的命名管道,可以通過驗(yàn)證用戶名和密碼獲得相應(yīng)的權(quán)限,在遠(yuǎn)程管理計(jì)算機(jī)和查看計(jì)算機(jī)的共享資源時(shí)使用.利用IPC$,連接者甚至可以與目標(biāo)主機(jī)建立一個(gè)空的連接而無需用戶名與密碼,而且利用這個(gè)空的連接,連接者還可以得到目標(biāo)主機(jī)上的用戶列表等信息.
各種不同的協(xié)議都有自己的使用環(huán)境,該多協(xié)議資產(chǎn)掃描方法所涉及的多個(gè)協(xié)議也有其各自的限制條件.只有滿足其自身的限制條件,該協(xié)議才能夠正常運(yùn)行.具體分析結(jié)果如表1所示.其中,√表示需要滿足該條件才能運(yùn)行,×表示不需要滿足該條件.
表1 相關(guān)協(xié)議限制條件Tab.1 Chart1 restriction conditions of protocols
如表1所示,所有相關(guān)協(xié)議的共同限制條件為目標(biāo)開機(jī)并且非旁路,這一條件是研究該多協(xié)議互補(bǔ)方法的前提條件.
排除該前提條件限制,分析表1可以得出:當(dāng)且僅當(dāng)限制條件3和4同時(shí)不滿足的時(shí)候,才完全獲取不到任何信息;否則,必然能夠獲取到一定的信息.
假設(shè)在滿足所有協(xié)議、方法的限制條件下,這些方法可以獲得各種信息.
通過Arp協(xié)議,主要可以獲得的信息 InfoArp為:a.給定的IP段中存活的機(jī)器;b.目標(biāo)設(shè)備上與掃描的IP地址對應(yīng)的這塊網(wǎng)卡的MAC地址;c.目標(biāo)設(shè)備的主機(jī)名.
通過Netbios協(xié)議,主要可以獲得的信息InfoNetbios為:a.操作系統(tǒng)信息;b.共享列表信息;c.用戶列表信息;d.本地組列表信息;e.組列表信息;f.特定組內(nèi)的用戶信息;g.傳輸協(xié)議信息;h.會話列表信息.
通過Snmp協(xié)議,主要可以獲得的信息InfoSnmp主要是Mib庫中所包含的信息,包括系統(tǒng)信息、用戶信息、網(wǎng)絡(luò)信息及硬件信息等幾乎所有的管理所需要的信息.
通過Wmi,主要獲得的信息InfoWmi為:a.操作系統(tǒng)信息,包括時(shí)區(qū)、驅(qū)動程序、磁盤分區(qū)、邏輯磁盤、系統(tǒng)服務(wù)及共享等信息;b.硬件信息,包括CPU、物理內(nèi)存、鍵盤、硬盤、主板、串口、并口及網(wǎng)絡(luò)適配器等信息.Wmi也提供了管理員需要的幾乎所有的信息.
通過Ping方法,主要獲得的信息InfoPing為:a.給定的IP段中存活的機(jī)器;b.目標(biāo)主機(jī)的網(wǎng)絡(luò)“距離”.
通過IPC$空連接方法,主要獲得的信息InfoIPC為:a.操作系統(tǒng)信息;b.用戶信息.
圖1用集合的方式顯示了各協(xié)議可獲取的信息集.
圖1 各協(xié)議獲取信息集Fig.1 Information set of protocols
分析各個(gè)協(xié)議方法可獲得的信息集,可以得出如下幾點(diǎn):
a.InfoIpc∪InfoNetbios∪InfoWmi=InfoArp,即Arp所能獲得的信息,Ipc、Netbios和Wmi均能獲得.
b.InfoIpc∪InfoNetbios∪InfoWmi∪InfoArp∈InfoSnmp,即Ipc、Netbios、Wmi和Arp所能獲得的信息集屬于Snmp所能獲得的信息集.
c.InfoPing∪InfoSnmp=?,Ping所能獲得的信息(主機(jī)間延時(shí))是其他所有協(xié)議都不能獲得的.
根據(jù)上述的討論分析可以進(jìn)行更深入的研究,即多協(xié)議互補(bǔ)信息掃描在一般情況、最差情況和最好情況下所能獲得的信息.
首先討論一般情況,局域網(wǎng)中Wmi服務(wù)開啟, IPC$提供,Snmp協(xié)議未安裝,防火墻開放端口,此時(shí),Infou=InfoPing∪InfoArp∪InfoIPC∪InfoNetbios∪Infowmi;
然后討論最差的情況,局域網(wǎng)中Wmi服務(wù)開啟,IPC$提供,Snmp協(xié)議未安裝,防火墻關(guān)閉所有端口,此時(shí),Infomin=InfoArp;
最后討論最好的情況,局域網(wǎng)中Wmi服務(wù)開啟, IPC$提供,Snmp協(xié)議安裝并開啟,防火墻開放所有端口,此時(shí),Infomax=InfoPing∪InfoArp∪InfoIPC∪InfoNetbios∪InfoWmi∪InfoSnmp=InfoSnmp∪InfoPing.
在實(shí)際的應(yīng)用中,可以通過上述的分析來設(shè)計(jì)應(yīng)用流程,可明顯提高程序的運(yùn)行效率.
根據(jù)上述原理實(shí)現(xiàn)了一個(gè)基于多協(xié)議的局域網(wǎng)資產(chǎn)掃描系統(tǒng).該系統(tǒng)通過Arp協(xié)議、Netbios協(xié)議、Snmp協(xié)議、Wmi、Ping方法和IPC$空連接方法來獲取局域網(wǎng)(包括同網(wǎng)段和非同網(wǎng)段)資產(chǎn)的信息,這里獲取的信息主要列舉了網(wǎng)絡(luò)管理的一些信息,如操作系統(tǒng)信息、MAC地址、IP地址、主機(jī)名、設(shè)備類型和操作系統(tǒng)版本.系統(tǒng)獲取到信息后通過XM L的格式顯示出來.在整個(gè)程序中,將主要的獲取信息功能做成動態(tài)鏈接庫文件,然后可以用程序語言VC、Java等方法調(diào)用.
通過分析各個(gè)協(xié)議、方法,可以得出其所能獲得的信息,如圖2所示.
圖2 信息列表Fig.2 Information list
在本程序中,由于Infomax=InfoSnmp,所以,一旦滿足Snmp協(xié)議的限制條件,立即使用Snmp方法來獲取信息;而InfoWmi=InfoIPC,所以,一旦他們其中一個(gè)成功獲取信息,另外一種方法將不執(zhí)行;而InfoPing∈InfoArp∈InfoNetbios,所以,Netbios在這三者中具有最高的優(yōu)先度,只有當(dāng)Arp和Netbios都獲取不到信息時(shí),才用到Ping方法.而只有當(dāng)Netbios獲取不到信息時(shí),才用到Arp協(xié)議.具體功能流程如圖3所示.
圖3 程序流程圖Fig.3 Program flow chart
本系統(tǒng)還采用多線程的方式,關(guān)鍵代碼如下:
通過采用多線程機(jī)制可以明顯改善程序的效率,如表1測試所得.為了測試多線程對程序效率的提高,在測試中為方便比較,其中多線程統(tǒng)一采用64為測試值,在實(shí)際應(yīng)用中可以根據(jù)局域網(wǎng)情況調(diào)整線程數(shù).采用多協(xié)議的資產(chǎn)掃描模型可以最大限度地獲取資產(chǎn)信息.如表1所示,互補(bǔ)率表示在一個(gè)IP上采用多協(xié)議獲取信息的使用率.
如圖4所示,采用多線程機(jī)制可以明顯提升程序的運(yùn)行效率.n這IP個(gè)數(shù),t為掃描時(shí)間.在圖5中,互補(bǔ)率η表示在一個(gè)IP上采用多協(xié)議獲取信息的使用率,實(shí)現(xiàn)結(jié)果很明顯地表明,在一次掃描中,運(yùn)用到多個(gè)協(xié)議來獲取信息的可能性非常高,而且隨著設(shè)備個(gè)數(shù)的增多,運(yùn)用到多協(xié)議互補(bǔ)的可能性更高.
圖4 多線程和單線程測試比較Fig.4 Comparison between multi-thread and single-thread
圖5 協(xié)議互補(bǔ)率測試Fig.5 Protocols complement test
在測試時(shí),程序處于由交換機(jī)、路由器、計(jì)算機(jī)主機(jī)及網(wǎng)絡(luò)打印機(jī)等構(gòu)成的3層架構(gòu)網(wǎng)絡(luò)環(huán)境.并通過編寫VC程序來調(diào)用這個(gè)動態(tài)鏈接庫文件,效果圖如圖6(見下頁)所示.
最終可以獲得如下的XML文件來顯示單個(gè)IP的信息,包括通過多種協(xié)議獲得所有信息、掃描起止時(shí)間和掃描用到的協(xié)議或方法名.
圖6 程序運(yùn)行效果圖Fig.6 Program running result
隨著網(wǎng)絡(luò)規(guī)模的日趨擴(kuò)大,設(shè)備越來越復(fù)雜,網(wǎng)絡(luò)管理的難度越來越大.本文通過分析多種協(xié)議和方法的限制條件以及可獲得信息的集合,設(shè)計(jì)并實(shí)現(xiàn)了多線程多協(xié)議互補(bǔ)方式的資產(chǎn)掃描程序.根據(jù)各種方法所能獲得的信息集,設(shè)計(jì)程序流程,使得該程序盡可能多地獲得網(wǎng)絡(luò)管理所需要的信息.經(jīng)過實(shí)驗(yàn)測試,采用多線程多協(xié)議方式能夠明顯提升系統(tǒng)的運(yùn)行效率和信息獲取量.
致謝:感謝上海市信息安全綜合管理技術(shù)研究重點(diǎn)實(shí)驗(yàn)室開放課題資助.
[1] PLUMMER D C.RFC826-Ethernet Address Resolution Protocol[S].Network Working Group,1982.
[2] 王榮華,王永強(qiáng).局域網(wǎng)監(jiān)控管理技術(shù)[J].信息網(wǎng)絡(luò)安全.2004(1):37-40.
[3] CASE J.RFC1157-Simple Network M anagement Protocol[S].Network Working Group,1990.
[4] 任建基,胡延平,陳俊峰,等.基于WMI技術(shù)的局域網(wǎng)計(jì)算機(jī)設(shè)備的監(jiān)測[J].計(jì)算機(jī)工程與應(yīng)用,2006(25): 134-136.
[5] 何鵬,邱建林,顧翔.基于SNM P的遠(yuǎn)程主機(jī)檢測系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(13):3 303-3 306.