黃君陽,莫永華
(桂林電子科技大學(xué)信息科技學(xué)院,桂林 541004)
互聯(lián)網(wǎng)飛速發(fā)展的同時,信息化安全與國家安全緊密相連,培養(yǎng)網(wǎng)絡(luò)安全技術(shù)優(yōu)秀人才,滿足互聯(lián)網(wǎng)發(fā)展需要。在網(wǎng)絡(luò)安全人才培養(yǎng)方面,單靠理論學(xué)習(xí)不能滿足實踐應(yīng)用的需要,一種奪旗賽的實踐形式適應(yīng)了專業(yè)培養(yǎng)網(wǎng)絡(luò)安全人才發(fā)展。CTF(Capture The Flag)網(wǎng)絡(luò)攻防競賽在網(wǎng)絡(luò)安全領(lǐng)域中是網(wǎng)絡(luò)安全技術(shù)人員之間進行技術(shù)競技的一種比賽形式。其比賽大致流程是,參賽團隊之間通過進行攻防對抗、程序分析等形式,率先從主辦方給出的比賽環(huán)境中得到一串具有一定格式的字符串或其他內(nèi)容,并將其提交給主辦方,從而奪得分?jǐn)?shù)?,F(xiàn)在CTF比賽培養(yǎng)網(wǎng)絡(luò)安全人才的方式漸漸在國內(nèi)發(fā)展起來了,此類比賽能夠發(fā)掘網(wǎng)絡(luò)安全優(yōu)秀人才,并幫助其迅速提高安全技能。
國外目前對于CTF競賽平臺的主流研究采取攻防(Attack-Defense)的賽制,這種賽制已經(jīng)日漸成熟,很多國際比賽都采用這樣的賽制,在比賽日程內(nèi)讓參賽選手相互進行漏洞挖掘及利用,采取攻擊來奪取對方靶機的Flag并贏得相應(yīng)的積分,同時還要采取不違反比賽規(guī)則的各種手段對自己的靶機進行防御,防止對方奪取到己方的Flag。國內(nèi)許多CTF線下賽平臺被各大安全服務(wù)產(chǎn)商用于商業(yè)意義及人才儲備計劃所開發(fā),雖然已有較為穩(wěn)定的技術(shù),但他們?nèi)杂胁蛔愕姆矫妫?/p>
(1)價格普遍過高;
(2)平臺復(fù)雜程度不利于后期變動及維護;
(3)漏洞靶機不便于還原及維護。
針對以上這些問題,本文主要任務(wù)有:
(1)控制開發(fā)成本,基于網(wǎng)頁來開發(fā)整個平臺;
(2)簡化平臺復(fù)雜程度,提高平臺運行能力且方便后期管理及維護;
(3)漏洞靶機采用Docker這類虛擬化技術(shù),使得靶機在崩潰的情況下方便及時采取還原措施。根據(jù)需求設(shè)計網(wǎng)絡(luò)攻防競賽需求具體如下圖:
功能需求說明如下:
登錄模塊:常規(guī)的登錄功能;
參賽選手操作模塊:用于參賽選手登陸之后的相關(guān)操作頁面;
管理員操作模塊:用于管理員登陸之后的相關(guān)操作頁面;
Flag提交模塊:用于參賽選手提交Flag獲取積分;
團隊管理模塊:用于管理員對參賽團隊進行相關(guān)操作;
公告板板模塊:用于管理員在比賽中發(fā)表相關(guān)信息;
積分榜模塊:用于參賽選手在比賽中查看當(dāng)前積分榜;
展示模塊:用于展示頁面向大眾展示信息。
圖1 系統(tǒng)功能需求
(1)服務(wù)器端環(huán)境:能夠運行VMware等虛擬化程序,且在上面安裝能夠運行PHP解析程序及支持平臺系統(tǒng)的Web服務(wù)器軟件的相應(yīng)的服務(wù)器系統(tǒng)的計算機或服務(wù)器。
(2)靶機環(huán)境:對于靶機環(huán)境,能夠使用Docker等虛擬化程序及支持其軟件的計算機或服務(wù)器。
(3)參賽選手環(huán)境:對于參賽選手的環(huán)境沒有限制,由選手自行選擇。
在服務(wù)器端主要采用PHP語言及其中的Laravel框架來編寫相應(yīng)功能模塊,結(jié)合前端HTML5+CSS3技術(shù),引用了JavaScript和其中的jQuery框架,使本系統(tǒng)實現(xiàn)了一個良好美觀的操作界面及展示界面。
功能模塊的設(shè)計主要分為三個模塊,1.參賽選手相關(guān)操作模塊;2.管理員相關(guān)操作模塊;3.無需登錄即可使用的展示模塊。
(1)在參賽選手相關(guān)操作模塊中,包含以下功能:
a.查看當(dāng)前輪次得失積分;
b.提交Flag獲取積分;
c.查看己隊靶機信息
(2)在管理員相關(guān)操作模塊中,包含以下功能:
a.管理團隊:添加新團隊;刪除一個團隊;修改團隊密碼;團隊加分減分
b.發(fā)布公告:發(fā)布扣除違規(guī)團隊相應(yīng)積分信息;發(fā)布Tips等公告信息
(3)在展示模塊中,包含以下功能:
a.實時積分榜,實時更新參賽團隊積分變化
b.顯示當(dāng)前時間及當(dāng)前輪次
c.實時顯示攻擊信息
數(shù)據(jù)庫設(shè)計遵循命名規(guī)范化和數(shù)據(jù)標(biāo)準(zhǔn)化的原則。
本課題中,一共有announce,users,points,check,dockers,flags六個數(shù)據(jù)庫表。下面主要介紹核心4個表。
(1)公告表(Announce)
它主要存儲id標(biāo)識、公告的標(biāo)題(title)、公告內(nèi)容(body)、創(chuàng)建時間(created_at)。
表1 Announce表
(2)用戶表(users)
它主要存儲id標(biāo)識、用戶名(name)、參賽團隊密碼(password)、管理員標(biāo)識(isAdmin)。
表2 Users表
(3)團隊積分表(points)
它主要存儲 id標(biāo)識、團隊 id(team_id)、分?jǐn)?shù)(points)信息。
表3 Points表
(4)flags表
它主要存儲 id標(biāo)識,靶機 id(docker_id)、flag信息。
表4 Flags表
系統(tǒng)有兩大部分組成:前臺部分用戶操作模塊和后臺部分管理模塊。
(1)登錄模塊
團隊賬號由管理員添加,在平臺主界面右上角可以看到Login登錄按鈕。管理員與團隊使用同一個登錄模塊,在用戶登錄之后,用戶表(users)中有isAdmin標(biāo)識,若isAdmin為1,此用戶為管理員,可進入后臺管理頁面進行管理的相關(guān)操作;反之,參賽團隊用戶只能進行查看隊伍信息、公告板、積分板及提交flag操作。
(2)參賽選手登陸后信息模塊
參賽選手用戶登陸后,頁面將跳轉(zhuǎn)到信息頁面,此頁面將輸出己方團隊的總分,包括加分及減分;還有在當(dāng)前輪次中,己方團隊的總分,包括加分及減分;還輸出己方團隊所擁有的靶機ip、用戶名、密碼信息;最后此頁面還有提交flag的功能。
(3)公告板頁面
競賽進行過程中,若出現(xiàn)參賽團隊進行了違規(guī)的相關(guān)操作,或是遇到需要比賽主辦方發(fā)表相應(yīng)提示或其他相關(guān)信息的情況,則管理員將會通過公告板,向參賽選手發(fā)布通知等信息。
管理員輸入公告標(biāo)題(title),內(nèi)容(body),點擊確認(rèn)發(fā)送后,后端獲取當(dāng)前服務(wù)器時間信息與公告標(biāo)題、公告內(nèi)容一起寫入數(shù)據(jù)庫Announcement表中,最后在公告板頁面按最新更新時間排序后輸出。
(4)積分板模塊
積分板模塊是讓參賽選手在比賽進行過程中方便在本機查看所有參賽團隊積分的同時,還能夠進行別的操作。
積分板將取出當(dāng)前數(shù)據(jù)庫中分?jǐn)?shù)(points)表的數(shù)據(jù),并在后端進行排序后輸出給前端與用戶交互。
圖2 參賽選手登錄頁面
圖3 選手登錄后信息頁面
圖4 參賽團隊積分展示
由于整個PHP后端使用了Laravel框架,雖然使得開發(fā)效率大大提高,難度降低,但同時也使得一些模塊的功能代碼嵌入在框架中,較難去閱讀或是修改。
后臺模塊包括:團隊管理模塊、提交Flag系統(tǒng)自動統(tǒng)計模塊、公告發(fā)布模塊。下面主要介紹團隊管理模塊。
管理員登錄之后,可以在管理頁面對參賽團隊進行管理操作。管理頁面首先將讀取數(shù)據(jù)庫分?jǐn)?shù)表中參賽團隊的分?jǐn)?shù),并定義了一個teamIndex()函數(shù),用來顯示所有參賽團隊當(dāng)前的總分。以及給每個參賽隊設(shè)立了更改密碼及刪除團隊的按鈕。更改團隊賬號密碼,定義了一個 teamChpw(Request$request)函數(shù),并且由于基本的安全性考慮,限定方法只能為POST方法。同樣,添加新團隊,刪除某個團隊也是限定POST方法。點擊某支團隊的更改密碼按鈕,將會直接要求輸入新密碼,函數(shù)先將新密碼Hash后對數(shù)據(jù)庫用戶表里的password字段進行update更新操作,最后將在管理頁面輸出修改成功的信息。添加一支新團隊,管理頁面將彈出輸入界面,要求輸入團隊用戶名及密碼,輸入之后,函數(shù)teamAdd(Request$request)將團隊名及密碼寫入數(shù)據(jù)庫users表中存儲,最后在管理頁面同樣會顯示添加成功的信息。以下給出添加團隊功能核心代碼:
漏洞靶機采用Docker虛擬化技術(shù),使得靶機在崩潰的情況下方便及時采取還原措施。網(wǎng)絡(luò)攻防競賽系統(tǒng)開發(fā)基于網(wǎng)頁實現(xiàn)整個平臺功能,簡化平臺復(fù)雜程度,提高平臺運行能力且方便后期管理及維護,這樣的輕型網(wǎng)絡(luò)安全技術(shù)人才培養(yǎng)平臺,滿足網(wǎng)絡(luò)安全技術(shù)訓(xùn)練與比賽。
[1]李秋香.國外網(wǎng)絡(luò)靶場技術(shù)現(xiàn)狀及啟示[A].第29次全國計算機安全學(xué)術(shù)交流會論文集[C],2014.
[2]曾金龍等著.Docker開發(fā)實踐[M].人民郵電出版社,2015-07-01.
[3]Bartosz Porebski等著.PHP框架高級編程[M].清華大學(xué)出版社,2012-2.