andofbased on
0 引言
隨著信息技術(shù)的發(fā)展,信息安全問(wèn)題也愈演愈烈,漏洞的存在可以使攻擊者在未授權(quán)的情況下訪問(wèn)或破壞系統(tǒng)[1] 。每天都會(huì)有新的漏洞被挖掘出來(lái),研究這些漏洞的成因或利用方法是安全人員必須完成的工作之一[2] ?,F(xiàn)階段的漏洞種類繁多,按照產(chǎn)生漏洞的程序分類,包括Web漏洞、系統(tǒng)漏洞、應(yīng)用程序漏洞、Web中間件漏洞等[3] 。按照漏洞利用方式分類,包括遠(yuǎn)程利用漏洞、本地利用漏洞,再往下細(xì)分又可以分為命令執(zhí)行、溢出、提權(quán)等漏洞[4] 。不同的漏洞所依靠的運(yùn)行環(huán)境也不相同,有些漏洞甚至需要多個(gè)軟件或系統(tǒng)的組合才能順利復(fù)現(xiàn)成功[5] 。為簡(jiǎn)化漏洞復(fù)現(xiàn)過(guò)程 , 本文研究了使用容器技術(shù)來(lái)進(jìn)行漏洞場(chǎng)景的打包和發(fā)布技術(shù),并且通過(guò)漏洞驗(yàn)證模塊來(lái)驗(yàn)證此漏洞場(chǎng)景 。
關(guān)于漏洞驗(yàn)證程序的編寫(xiě)格式,現(xiàn)階段已經(jīng)有數(shù)個(gè)漏洞驗(yàn)證框架:、、、等 。是由眾多安全研究人員所共同維護(hù)的一個(gè)規(guī)范化觀點(diǎn)證明(Proof of ,POC)/漏洞利用(,EXP)平臺(tái),安全研究人員可以在互聯(lián)網(wǎng)上獲取漏洞信息 , 然后按照BB2開(kāi)發(fā)標(biāo)準(zhǔn)編寫(xiě)出相應(yīng)的POC或EXP提交到平臺(tái) 。是由知道創(chuàng)宇安全研究團(tuán)隊(duì)打造的一款開(kāi)源的遠(yuǎn)程漏洞測(cè)試框架 。是西安四葉草信息技術(shù)有限公司旗下社區(qū)出品的國(guó)內(nèi)首款基于社區(qū)的分布式漏洞掃描框架 。是一款在線安全漏洞檢測(cè)服務(wù),一個(gè)由眾多安全研究人員維護(hù)的企業(yè)在線安全體檢平臺(tái) 。上述框架都擁有一套自己的驗(yàn)證程序腳本的編寫(xiě)規(guī)范 。對(duì)此,文中也研究了將這些不同的編寫(xiě)規(guī)范相兼容的方法 , 以達(dá)到快速編寫(xiě)驗(yàn)證程序的目的 。
1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)整體結(jié)構(gòu)分為管理模塊、POC驗(yàn)證模塊和數(shù)據(jù)庫(kù) 。
如圖1所示 , 管理模塊分為容器、鏡像、倉(cāng)庫(kù)三個(gè)部分[6] 。容器模塊負(fù)責(zé)本地容器的創(chuàng)建、運(yùn)行、終止和刪除 。鏡像模塊負(fù)責(zé)從倉(cāng)庫(kù)中獲取鏡像、添加標(biāo)簽、上傳鏡像和刪除鏡像 。倉(cāng)庫(kù)模塊負(fù)責(zé)存儲(chǔ)制作好的鏡像和提供鏡像的下載服務(wù) 。驗(yàn)證模塊分為執(zhí)行、框架和庫(kù)三個(gè)部分,執(zhí)行模塊是驗(yàn)證過(guò)程的入口,所有的驗(yàn)證程序都由執(zhí)行模塊執(zhí)行,為了兼容不同類型的POC,執(zhí)行模塊會(huì)根據(jù)不同類型的POC來(lái)調(diào)取相應(yīng)的框架來(lái)解析執(zhí)行,具體的驗(yàn)證代碼則是存放在POC庫(kù)中 。最后如果驗(yàn)證通過(guò),證明漏洞存在并且POC有效,就會(huì)將相應(yīng)的鏡像、容器啟動(dòng)的參數(shù)、倉(cāng)庫(kù)的地址和驗(yàn)證代碼等具體信息存放到數(shù)據(jù)庫(kù)中[7] 。
系統(tǒng)的使用者需要提供給系統(tǒng)所需的資源來(lái)啟動(dòng)處理過(guò)程,包括搭建環(huán)境所需要的鏡像、漏洞的詳細(xì)信息、漏洞利用程序等資源 。
如圖2所示,系統(tǒng)首先會(huì)加載漏洞所需要的資源 , 一個(gè)完整的漏洞資源包括鏡像或、漏洞的詳細(xì)信息、漏洞的種類、漏洞的危害程度、漏洞的評(píng)分、漏洞的利用程序等資源 。
判斷資源完整性后,如果資源完整 , 說(shuō)明可以產(chǎn)生一個(gè)容器,并且提供了相應(yīng)的驗(yàn)證程序 。接下來(lái)docker可以圖形化嗎,框架會(huì)根據(jù)提供的驗(yàn)證程序信息調(diào)用不同的驗(yàn)證框架來(lái)嘗試驗(yàn)證容器中運(yùn)行的有漏洞的程序 。在驗(yàn)證程序驗(yàn)證完成后,系統(tǒng)會(huì)根據(jù)驗(yàn)證的結(jié)果來(lái)判斷漏洞提交者所提交的資源是否有效,若有效,則將相關(guān)的信息存入數(shù)據(jù)庫(kù)中;否則終止驗(yàn)證過(guò)程 , 重新調(diào)整資源 。
【基于Docker的漏洞驗(yàn)證框架的設(shè)計(jì)與實(shí)現(xiàn)-AET】2 容器虛擬化技術(shù)
是PaaS提供商開(kāi)源的一個(gè)基于LXC(Linux )的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以將應(yīng)用程序、依賴的運(yùn)行庫(kù)文件打包并移植到一個(gè)新的容器中,然后發(fā)布到任何系統(tǒng)為L(zhǎng)inux的機(jī)器上 , 也可以實(shí)現(xiàn)虛擬化解決方案[8] 。
的三大核心概念是鏡像、容器和倉(cāng)庫(kù) 。鏡像類似于虛擬機(jī)鏡像,可以理解為創(chuàng)建容器的模板 , 它是創(chuàng)建容器的基礎(chǔ) 。鏡像是必須向此漏洞驗(yàn)證系統(tǒng)所提交的資源之一 。
容器是完全沙箱機(jī)制的實(shí)現(xiàn)方式,任意容器之間不會(huì)有任何接口,具有安全訪問(wèn)資源的特性,而且容器的運(yùn)行資源開(kāi)銷小,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行 。容器是從鏡像創(chuàng)建的應(yīng)用運(yùn)行實(shí)例 , 可以將其啟動(dòng)、開(kāi)始、停止、刪除[9] 。
倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所,倉(cāng)庫(kù)可以分為共有倉(cāng)庫(kù)和私有倉(cāng)庫(kù)兩種形式 。漏洞驗(yàn)證框架驗(yàn)證后的鏡像就會(huì)存放在私有倉(cāng)庫(kù)中 。
如圖3所示 , 鏡像是容器的前提,鏡像可以通過(guò)Pull操作從倉(cāng)庫(kù)中下載,完整制作的鏡像也可以通過(guò)Push操作向倉(cāng)庫(kù)中推送 。下載鏡像到本地后,就可以使用鏡像來(lái)創(chuàng)建容器了,容器不同于鏡像,容器擁有運(yùn)行時(shí)需要的可讀寫(xiě)層,而鏡像只是靜態(tài)的只讀文件 。通過(guò)run命令啟動(dòng)的容器處于運(yùn)行狀態(tài),對(duì)于運(yùn)行狀態(tài)的容器可以使用stop來(lái)終止,終止?fàn)顟B(tài)的容器并沒(méi)有消失,可以使用start操作來(lái)重新啟動(dòng) 。如果希望容器暫停工作一段時(shí)間,可以使用pause操作將容器切換到暫停狀態(tài),處于暫停狀態(tài)的容器不會(huì)占用CPU資源,直到通過(guò)操作恢復(fù)運(yùn)行 。
2.1 容器與傳統(tǒng)虛擬化的不同
傳統(tǒng)的服務(wù)器虛擬化解決的核心問(wèn)題是計(jì)算資源的調(diào)配 , 而容器解決的核心問(wèn)題是應(yīng)用開(kāi)發(fā)、測(cè)試和部署 。如圖4所示,虛擬機(jī)技術(shù)通過(guò)層抽象底層基礎(chǔ)設(shè)施資源提供相互隔離的虛擬機(jī) , 通過(guò)統(tǒng)一配置、統(tǒng)一管理,計(jì)算資源的可運(yùn)維性,資源利用率能夠得到有效的提升 。同時(shí),虛擬機(jī)提供客戶機(jī)操作系統(tǒng),客戶機(jī)變化不會(huì)影響宿主機(jī),能夠提供可控的測(cè)試環(huán)境 , 更能夠屏蔽底層硬件甚至基礎(chǔ)軟件的差異性,讓?xiě)?yīng)用做到廣泛兼容 。然而虛擬化技術(shù)因?yàn)橐嗄M出一層操作系統(tǒng),都不可避免地出現(xiàn)計(jì)算、IO、網(wǎng)絡(luò)性能的損失[10] 。而容器技術(shù)嚴(yán)格來(lái)說(shuō)并不是虛擬化,沒(méi)有客戶機(jī)操作系統(tǒng),是共享內(nèi)核的 。容器可以視為軟件供應(yīng)鏈的集裝箱,能夠把應(yīng)用需要的運(yùn)行環(huán)境、緩存環(huán)境、數(shù)據(jù)庫(kù)環(huán)境等封裝起來(lái),以最簡(jiǎn)潔的方式支持應(yīng)用運(yùn)行,輕裝上陣,性能更佳[11] 。
鏡像特性則讓這種方式簡(jiǎn)單易行 。當(dāng)然,因?yàn)楣蚕韮?nèi)核的特性,所以容器隔離性沒(méi)有虛擬機(jī)那么好[12] 。
2.2 獲取鏡像
鏡像可以通過(guò)pull操作直接從倉(cāng)庫(kù)中下載 , 也可以通過(guò)來(lái)創(chuàng)建 。
是由一系列命令和參數(shù)構(gòu)成的腳本,這些命令應(yīng)用于基礎(chǔ)鏡像并最終創(chuàng)建一個(gè)新的鏡像 。它們簡(jiǎn)化了從頭到尾的流程并極大地簡(jiǎn)化了部署工作 。
如圖5所示,從FROM命令開(kāi)始,緊接著跟隨者各種方法、命令和參數(shù) , 其產(chǎn)出為一個(gè)新的可以用于創(chuàng)建容器的鏡像 。
3 POC驗(yàn)證模塊
為了提高驗(yàn)證模塊的兼容度、降低驗(yàn)證程序編寫(xiě)的學(xué)習(xí)成本,此系統(tǒng)采用插件式的驗(yàn)證框架設(shè)計(jì),驗(yàn)證過(guò)程由驗(yàn)證引擎啟動(dòng),根據(jù)驗(yàn)證程序的類型說(shuō)明,由分類器來(lái)決定輸入的參數(shù)和使用哪種框架來(lái)執(zhí)行程序[13],容器的啟動(dòng)所產(chǎn)生的屬于漏洞環(huán)境的IP地址將作為參數(shù)輸入到驗(yàn)證系統(tǒng)中[14] , 在經(jīng)過(guò)相應(yīng)的框架執(zhí)行完成后,不同的框架會(huì)產(chǎn)生不同的返回值,甚至返回一個(gè)布爾值 , 這些返回值都將交給結(jié)果處理器來(lái)匯總處理 。在驗(yàn)證程序驗(yàn)證成功后,在數(shù)據(jù)庫(kù)中就會(huì)將相應(yīng)的漏洞信息標(biāo)記為有效 。
4 框架測(cè)試
測(cè)試漏洞為已經(jīng)公布的數(shù)據(jù)庫(kù)漏洞 , 漏洞編號(hào)為CVE-2017-12635,漏洞于2017年11月15日被披露,任意用戶通過(guò)此漏洞可以創(chuàng)建管理員賬戶,造成垂直權(quán)限提升 。向此系統(tǒng)提交漏洞的相關(guān)信息,提交的主要內(nèi)容為:(1)從鏡像庫(kù)中以系統(tǒng)來(lái)作為基礎(chǔ)鏡像;(2)獲得相關(guān)的運(yùn)行腳本;(3)更新軟件源中的所有軟件列表;(4)從軟件源中安裝cURL軟件;(5)運(yùn)行從第二步獲得的腳本,設(shè)置參數(shù)來(lái)添加普通權(quán)限用戶;(6)運(yùn)行服務(wù) 。
在以生成的鏡像的基礎(chǔ)上啟動(dòng)容器,啟動(dòng)容器時(shí)設(shè)置相關(guān)的端口映射使容器中的服務(wù)端口映射到本地主機(jī)上 。
在容器啟動(dòng)后 , 就可以調(diào)用相關(guān)的驗(yàn)證程序進(jìn)行驗(yàn)證 。編寫(xiě)驗(yàn)證程序時(shí) , 可以使用任何一種驗(yàn)證框架來(lái)實(shí)現(xiàn) 。此漏洞的驗(yàn)證程序的內(nèi)容為發(fā)送一個(gè)經(jīng)過(guò)特殊構(gòu)造的HTTP請(qǐng)求包 , 目的是創(chuàng)建一個(gè)管理員賬戶 。請(qǐng)求包中包含JSON數(shù)據(jù) , 而此漏洞的形成原因就是由于和對(duì)JSON解析方式的不同 , 使得語(yǔ)句執(zhí)行產(chǎn)生差異性導(dǎo)致的 。在數(shù)據(jù)包發(fā)送之后 , 驗(yàn)證程序會(huì)自動(dòng)以剛剛創(chuàng)建的管理員賬戶進(jìn)行登錄,如果登錄成功,就會(huì)返回漏洞存在的結(jié)果 。確認(rèn)返回結(jié)果后,系統(tǒng)將相關(guān)的漏洞信息存放到了數(shù)據(jù)庫(kù)中,并關(guān)閉了容器,漏洞驗(yàn)證完畢 。
5 結(jié)論
本文通過(guò)對(duì)系統(tǒng)和漏洞驗(yàn)證系統(tǒng)的研究和設(shè)計(jì),利用容器和多框架的漏洞驗(yàn)證系統(tǒng),設(shè)計(jì)了一種提供文件或者鏡像后,可以快速地對(duì)漏洞環(huán)境進(jìn)行驗(yàn)證的漏洞驗(yàn)證框架 。通過(guò)向系統(tǒng)提供具體的漏洞和驗(yàn)證程序的測(cè)試,結(jié)果表明,本框架大大簡(jiǎn)化了漏洞環(huán)境的搭建過(guò)程 , 同時(shí)也提升了漏洞驗(yàn)證的速度 。綜上所述,本框架為需要頻繁驗(yàn)證不同的漏洞提供了較有參考價(jià)值的解決方案 。
參考文獻(xiàn)
[1] 陳春玲,張凡,余瀚.Web應(yīng)用程序漏洞檢測(cè)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2017,27(8):101-105.
[2] 陳峰,羅養(yǎng)霞,陳曉江,等.網(wǎng)絡(luò)攻擊技術(shù)研究進(jìn)展[J].西北大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,37(2):208-212.
[3] 羅玉斌.網(wǎng)絡(luò)安全漏洞掃描系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2007.
[4] 趙智勇.網(wǎng)絡(luò)攻擊過(guò)程剖析[J].計(jì)算機(jī)與現(xiàn)代化,2012,8(8):55-56.
[5] 竇文超.網(wǎng)絡(luò)攻擊模擬器及其關(guān)鍵技術(shù)研究[D].天津:天津理工大學(xué) , 2011.
[6] 董博 , 王雪docker可以圖形化嗎,索菲,等.基于的虛擬化技術(shù)研究[J].遼寧大學(xué)學(xué)報(bào)(自然科學(xué)版),2016 , 43(4):327-330.
[7] 肖小芳,宋建新.網(wǎng)絡(luò)通信研究與實(shí)現(xiàn)[J].通訊世界,2017(22):1-2.
[8] 鐘良侃.技術(shù)在Web服務(wù)系統(tǒng)中的應(yīng)用研究[J].電腦知識(shí)與技術(shù) , 2016,12(26):123-126.
[9] 鄒保平,黃文思,張文晉,等.基于的應(yīng)用部署管理平臺(tái)研究[J].電子設(shè)計(jì)工程,2017 , 25(12):41-44,48.
[10] 陳清金,陳存香,張巖.技術(shù)實(shí)現(xiàn)分析[J].信息通信技術(shù) , 2015(2):37-40.
[11] 張遙,王森林.安全性研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(8):32-33.
[12] 伍陽(yáng).基于的虛擬化技術(shù)研究[J].信息技術(shù),2016(1):121-123.
[13] 吳倩倩.綜合型漏洞掃描系統(tǒng)的研究與設(shè)計(jì)[D].北京:華北電力大學(xué)(北京),2015.
[14] 王良.基于插件技術(shù)的漏洞掃描系統(tǒng)設(shè)計(jì)與應(yīng)用[D].上海:上海交通大學(xué),2012.
作者信息:
陳一鳴,寇小強(qiáng),王永利
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京)
本文到此結(jié)束,希望對(duì)大家有所幫助 。
- 一、Java集合的整體介紹
- 有吸毒史可以去單位上班嗎 ?吸毒的人什么樣
- ?一個(gè)人缺愛(ài)的表現(xiàn),一個(gè)人缺愛(ài)的六種表現(xiàn)
- 描寫(xiě)贊美老師的成語(yǔ) ?關(guān)于老師的描寫(xiě)贊頌
- ?健胸瑜伽有用嗎還有關(guān)鍵的好處需要了解
- 植物護(hù)膚品和草本護(hù)膚品哪個(gè)好 ?草本和植物護(hù)膚的區(qū)別
- 不主動(dòng)聯(lián)系的男人就一定是不愛(ài)了嗎? ?不聯(lián)系就是不愛(ài)了嗎
- 秋天風(fēng)景攝影作品欣賞 ?關(guān)于秋天的攝影作品
- 心情好做什么都是開(kāi)心的 ?不開(kāi)心時(shí)做什么事能讓心情變好?
- ?藏族男孩丁真怎么火的
