文/本刊特約編輯 楊望
無線網(wǎng)絡(luò)目前已經(jīng)不僅僅是校園有線網(wǎng)絡(luò)的補充,不斷增加的各類無線終端如手機、Pad讓無線網(wǎng)絡(luò)成為校園內(nèi)越來越重要的通信載體,除了學校搭建的公用無線網(wǎng)絡(luò),各種各樣的個人無線接入點也讓學校的無線網(wǎng)絡(luò)成為一個熱鬧的場地。但在這熱鬧中,也不乏各類惡意或無惡意的人在搜尋著無線網(wǎng)絡(luò)的漏洞,進行著各類的攻擊活動,除了加強個人的無線安全防護意識,部署無線的蜜罐和IDS也是監(jiān)控無線網(wǎng)絡(luò)安全的重要手段,目前商業(yè)的無線硬件產(chǎn)品商大都提供對應的產(chǎn)品,如AirDefence(Motorola)、Cisco等,但價格不菲,其實利用開源的工具我們可以只花費較小的費用就搭建起一個分布式的無線入侵檢測系統(tǒng)。本文將介紹如何利用OpenWRT和Kismet這兩種開源工具在普通商用無線路由器的基礎(chǔ)上來建立無線IDS系統(tǒng)。
有線網(wǎng)絡(luò)中大家最常用的IDS是Snort,但在無線網(wǎng)絡(luò)中我們不能直接使用Snort,這是因為無線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)在物理與鏈路層的不同,讓IDS的需要功能也有不同。傳統(tǒng)的有線網(wǎng)絡(luò)只需要考慮三層(IP層)及其以上的報文,而無線的IDS同時需要考慮物理層和鏈路層的報文內(nèi)容,因為大量的無線攻擊如無線欺騙、無線拒絕服務攻擊都是在這一層發(fā)生的。另一方面,無線的廣播性質(zhì)讓無線IDS可以通過進入無線設(shè)備的Monitor模式收聽到覆蓋范圍內(nèi)所有的無線報文活動,而有線網(wǎng)絡(luò)必須通過端口鏡像或分光等手段才能監(jiān)控到需要的報文。Kismet是無線網(wǎng)絡(luò)應用中重要的一款安全工具,它可以設(shè)置無線設(shè)備的模式進行無線報文的采集,同時可以進行無線鏈路層的攻擊檢測,還可以輸出上層報文給傳統(tǒng)的IDS如Snort進行更高層次的入侵檢測。
Kismet是一款用于無線網(wǎng)絡(luò)(802.11協(xié)議族)的多功能軟件,既可以用于無線網(wǎng)絡(luò)的檢測發(fā)現(xiàn)和報文采集,也可以用于無線的入侵檢測。目前可以在Linux、Windows(需要Cygwin)、
MacOS等多種系統(tǒng)上安裝。Kismet通過將支持無線芯片工作模式設(shè)為Monitor來進行被動的無線報文收集工作,并通過報文的協(xié)議解碼發(fā)現(xiàn)存在的AP、用戶以及他們之間的通訊。Google就曾被曝光使用制作GoogleMap的街景小車在城市漫游過程中使用Kismet收集了大量的無線數(shù)據(jù),從而引發(fā)了用戶隱私泄漏問題。Kismet在收集和解析報文的同時,集成了二層和部分三層的入侵檢測功能,Kismet的檢測通過報文特征檢測和統(tǒng)計檢測兩種方式來實現(xiàn)。常見的警報包括:APSPOOF、DEAUTHFLOOD、DEAUTHCODEINVALID等。具體攻擊的含義可以在專門討論無線網(wǎng)絡(luò)漏洞和攻擊的網(wǎng)站(http://www.wve.org)查到。
Kismet一個重要的特點是客戶機-服務器的工作模式。客戶機模式下的Kismet可以看成一個探針程序,負責監(jiān)聽和收集報文,并將收集到的報文轉(zhuǎn)發(fā)給服務器。服務器模式下的Kismet進行報文的協(xié)議檢測、檢測和其他進一步的處理。這樣我們就可以在低成本的平臺上部署一系列的Kismet客戶端程序,從而確保檢測的范圍可以覆蓋足夠大的區(qū)域,再將每個客戶端的收集的報文統(tǒng)一集中到高性能的服務器進行下一步的處理。服務器端的Kismet還可以再通過虛擬端口將解碼后的無線報文輸出給傳統(tǒng)的IDS,進行高層的入侵檢測。
Kismet檢測無線網(wǎng)絡(luò)界面
無線IDS部署環(huán)境圖
有了入侵檢測系統(tǒng),還需要有好的部署平臺,盡管Kismet可以在電腦的無線網(wǎng)卡上工作,但部署一系列的主機還是成本很高的事情,如果能將Kismet部署到一系列的無線路由器則可以極大的降低成本和部署的難度。要完成這樣的功能就需要另一個重要的開源工具:OpenWRT。
OpenWRT和DDWRT是兩個著名開源的無線路由器固件程序。這兩個程序源自思科一款低端的的無線路由器Linksys WRT54G無線路由器。在這款無線路由器以前,不存在開源的無線路由器固件,而當時有程序員意外的發(fā)現(xiàn)這款無線路由器的固件修改自Linux,按照開源版權(quán)的規(guī)定,思科既然使用了開源程序,就必須公開該路由器的固件程序,自此各類愛好者開始自該固件的基礎(chǔ)上開始設(shè)計自己的無線路由器固件程序,其中最有名的就是DDWRT和OpenWRT,而思科則將該路由器的固件從Linux平臺改到了VxWorks平臺。盡管開始的DDWRT和OpenWRT只針對這款路由器,但隨著程序的發(fā)展這兩款固件對越來越多的無線路由器提供了支持,只要該款路由器有足夠的內(nèi)存和固存(Flash)的空間。目前OpenWRT基本對所有品牌的無線路由器都有支持,具體可以查詢http://wiki.openwrt.org/toh/start。
OpenWRT采用了ipkg作為軟件包的管理程序,所以在OpenWRT上安裝kismet非常簡單。部署時首先需要通過無線路由器的管理界面將OpenWRT的固件刷新到路由器上,然后重啟路由器進入OpenWRT系統(tǒng),在配置好網(wǎng)絡(luò)以后,通過ipkg install kismet_drone wl的命令即可以完成kismet的探針程序的安裝。
有了合適的部署環(huán)境和檢測系統(tǒng),我們就可以開始部署分布式的無線IDS系統(tǒng)。像在下圖部署的環(huán)境中,我們可以在合法的無線接入點附近部署一系列安裝了的Kismet探針程序的無線路由器,由于這些路由器只負責監(jiān)聽工作,所以探針無線路由器的數(shù)量可以遠小于正常工作的無線路由器數(shù)量。探針無線路由器通過有線網(wǎng)絡(luò)和后臺的Kismet服務器相連,將監(jiān)聽的報文傳回,進行具體的檢測工作。系統(tǒng)的管理人員可以通過有線或無線的網(wǎng)絡(luò)通道登陸Kismet服務器進行檢測結(jié)果的檢查和響應工作。限于篇幅,Kismet具體的配置方法和結(jié)果的查看分析方法我們將在后續(xù)的文章中繼續(xù)介紹。