吳敏豪 張元和 張廷政 陳茂林
[摘? ? ? ? ? ?要]? 近年來,隨著因特網(wǎng)快速發(fā)展,網(wǎng)頁服務(wù)器成為學(xué)習(xí)、教育、娛樂、信息交換、商業(yè)服務(wù)的重要平臺。提出一個操作系統(tǒng)防止網(wǎng)頁竄改的機(jī)制。攻擊者即使使用網(wǎng)頁服務(wù)器漏洞,如apache網(wǎng)頁服務(wù)器緩沖區(qū)溢出,發(fā)動攻擊,取得服務(wù)器的超級使用者權(quán)限之下仍無法直接竄改網(wǎng)頁,除非攻擊者重新啟動新的操作系統(tǒng),而此動作很可能會引起原有系統(tǒng)管理者的注意。對攻擊者而言,操作系統(tǒng)防止網(wǎng)頁竄改的機(jī)制能準(zhǔn)確地阻擋攻擊者的攻擊。
[關(guān)? ? 鍵? ?詞]? 操作系統(tǒng);網(wǎng)頁保護(hù);網(wǎng)頁竄改
[中圖分類號]? TP393.092? ? ? ? ? ? ?[文獻(xiàn)標(biāo)志碼]? A? ? ? ? ? ? ? ?[文章編號]? 2096-0603(2019)10-0086-02
因特網(wǎng)的快速發(fā)展使網(wǎng)絡(luò)服務(wù)已經(jīng)成為目前應(yīng)用最廣的一種服務(wù)。隨著網(wǎng)頁的重要性與日俱增,網(wǎng)頁竄改已經(jīng)成為網(wǎng)絡(luò)上很普遍的一種攻擊網(wǎng)站的方式。網(wǎng)頁竄改簡單地說就是指未經(jīng)授權(quán)地去修改一個網(wǎng)站的內(nèi)容,是一種明顯改變網(wǎng)頁外觀的攻擊,大多數(shù)是因為企業(yè)的預(yù)算問題與資訊安全專業(yè)人員的不足。網(wǎng)頁被竄改后,大多數(shù)企業(yè)的做法只是單純地將網(wǎng)頁復(fù)原,并沒有增加其他額外的防護(hù)措施,這樣無疑是將網(wǎng)站暴露在危險的環(huán)境中,隨時都有可能再次被攻擊。由于網(wǎng)頁服務(wù)器是電子商務(wù)與大數(shù)據(jù)的重要平臺,發(fā)展一套有效防止網(wǎng)頁竄改攻擊的方法便成為一個相當(dāng)重要的議題。
一、前人研究
Davanzo等提出了一個框架(Goldrake),這一個框架則是使用傳感器和警報來自動監(jiān)控遠(yuǎn)程網(wǎng)頁資源的完整性。但Goldrakes對檢測網(wǎng)站的影響無法估計,因為數(shù)據(jù)集僅測得出11個合法網(wǎng)站和20個攻擊破壞網(wǎng)站。Borgolte等介紹Meerkat是一個網(wǎng)站監(jiān)控系統(tǒng),可自動檢測網(wǎng)站是否已被攻擊破壞,這些功能專門從損傷和合法網(wǎng)站的屏幕截圖中學(xué)習(xí)。Meerkat利用機(jī)器學(xué)習(xí)的最新進(jìn)展,如堆棧自動編碼器和深度神經(jīng)網(wǎng)絡(luò),并將它們與計算器視覺技術(shù)相結(jié)合。Basnet等提出了一種基于信譽(yù)的啟發(fā)式方法,通過從網(wǎng)頁服務(wù)挖掘和提取URL上的元數(shù)據(jù)來自動檢測網(wǎng)絡(luò)釣魚URL。他們將每個單獨的URL編碼為具有14個維度和使用的特征向量Logistic回歸分類器,用于區(qū)分網(wǎng)絡(luò)釣魚和非網(wǎng)絡(luò)釣魚URL。
網(wǎng)頁竄改的攻擊事件在近年來有越來越嚴(yán)重的趨勢,目前大多數(shù)的研究都是著重于網(wǎng)頁內(nèi)容的完整性評估,但是,由于完整性評估系統(tǒng)對實時在線的動態(tài)網(wǎng)頁的處理能力較不好,所以仍然無法完全解決網(wǎng)頁竄改的問題。我們借由觀察操作系統(tǒng)內(nèi)行程(process)之間的親子關(guān)系來判斷行程執(zhí)行修改網(wǎng)頁的動作是否合法,進(jìn)而判斷網(wǎng)頁是否被攻擊者竄改,這種方式不同于其他網(wǎng)頁完整性評估的偵測方式,可以結(jié)合完整性評估的方法來補(bǔ)強(qiáng)系統(tǒng)安全上的強(qiáng)度。
二、操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制
目前,大多數(shù)的網(wǎng)頁服務(wù)器都是以Linux操作系統(tǒng)搭配Apache網(wǎng)頁服務(wù)器軟件來架設(shè)的,所以,本篇論文以Linux操作系統(tǒng)加上Apache網(wǎng)頁服務(wù)器軟件的架構(gòu)來實作。本篇論文所提出的方法適用于Apache網(wǎng)頁服務(wù)器,并且能成功抵擋使用緩沖區(qū)溢出漏洞來竄改網(wǎng)頁的攻擊。
我們觀察Apache網(wǎng)頁服務(wù)器運作時,Linux操作系統(tǒng)內(nèi)行程(process)之間的親子關(guān)系(relationship)來判斷行程執(zhí)行的寫入動作是否合法,如果是非法寫入的動作,我們的系統(tǒng)就會取消執(zhí)行的寫入動作并且返回錯誤訊息;反之,則正常寫入。
本篇論文我們使用Linux操作系統(tǒng)搭配Apache網(wǎng)頁服務(wù)器軟件來架設(shè)網(wǎng)頁服務(wù)器,我們觀察Apache網(wǎng)頁服務(wù)器運作時,Linux操作系統(tǒng)內(nèi)行程之間的親子關(guān)系,Apache網(wǎng)頁服務(wù)器啟動時系統(tǒng)會先產(chǎn)生一個httpd行程,這個httpd行程接著會fork產(chǎn)生其他的httpd子行程,只要有使用者連入Apache網(wǎng)頁服務(wù)器,就會由任意一個httpd子行程來為使用者提供服務(wù)。
Apache網(wǎng)頁服務(wù)器啟動時系統(tǒng)會先產(chǎn)生一個httpd行程,這個httpd行程在啟動時會寫入三個檔案:httpd.pid、error_log、access_log,其中httpd.pid這個檔案會記錄httpd行程的行程ID(PID),error_log檔案會記錄apache執(zhí)行時的一些異常情形,access_log則會記錄用戶存取網(wǎng)頁的記錄,hpptd子行程也會將錯誤訊息及聯(lián)機(jī)記錄寫入error_log、access_log這兩個檔案當(dāng)中。
如果想要調(diào)整httpd子行程的數(shù)量,可以在Apache的httpd.conf配置文件中,修改StartServer參數(shù)就可以自行設(shè)定啟動Apache時所產(chǎn)生的httpd子行程數(shù)量,我們將StartServer參數(shù)設(shè)定為默認(rèn)值5,也就是啟動Apache時會產(chǎn)生5個httpd子行程。
正常的使用者聯(lián)機(jī)進(jìn)入網(wǎng)頁服務(wù)器不會通過httpd這個行程來修改網(wǎng)頁,即使像是PHP動態(tài)網(wǎng)頁在處理網(wǎng)頁數(shù)據(jù)時也不會直接由httpd相關(guān)行程來修改網(wǎng)頁,因為PHP在產(chǎn)生網(wǎng)頁時,只會將所需數(shù)據(jù)從數(shù)據(jù)庫取出然后回傳給client,并不會執(zhí)行寫入網(wǎng)頁的動作。當(dāng)網(wǎng)頁中使用CGI程序時,httpd子行程才會fork出CGI程序來執(zhí)行參數(shù)的處理,CGI程序處理完后會將數(shù)據(jù)回傳給用戶,但是也不會寫入網(wǎng)頁。
三、實驗結(jié)果
操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制 Server架設(shè)于AMD Athlon 3000+ 2.0GHz CPU,1GMB System Memory,操作系統(tǒng)為Linux Fedora core5之機(jī)器上,所修改的Linux核心版本為2.6.18.2,所使用的服務(wù)器軟件是Apache1.3.23。Client架設(shè)于Intel Pentium4 1.6GHz CPU, 512MB System Memory,操作系統(tǒng)為Linux Fedora core5之機(jī)器上,在防御測試項測試中,我們以一個有緩沖區(qū)溢出漏洞的Echo server行程來仿真有漏洞的Apache程序,并且對操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制系統(tǒng)主機(jī)發(fā)起攻擊,攻擊流程如下:(1)對操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制系統(tǒng)發(fā)動緩沖區(qū)溢出攻擊;(2)在服務(wù)器端產(chǎn)生一個shell并且開啟一個通訊端口;(3)攻擊端經(jīng)由開啟的通訊端口聯(lián)機(jī)進(jìn)入服務(wù)器,接著以vi指令嘗試修改網(wǎng)頁。測試結(jié)果為,操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制成功地阻止攻擊者修改網(wǎng)頁,并且在系統(tǒng)輸出錯誤訊息;相反,沒有操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制保護(hù)的網(wǎng)頁服務(wù)器,網(wǎng)頁會被攻擊者修改。在這個實驗中,雖然我們只有針對網(wǎng)頁竄攻擊行為分析中的第一種攻擊來做測試,但是由對服務(wù)器發(fā)動緩沖區(qū)溢出攻擊,開啟一個bin shell,再由shell產(chǎn)生一個子行程(vi/vim)來竄改網(wǎng)頁。只要攻擊者透過緩沖區(qū)溢出漏洞來竄改網(wǎng)頁,那用來修改網(wǎng)頁行程的祖先一定會包含root_httpd這個行程,因為操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制會檢查寫入網(wǎng)頁的行程的祖先是不是包括root_httpd,所以只要攻擊者透過httpd相關(guān)行程來竄改網(wǎng)頁,操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制就可以擋下網(wǎng)頁竄改攻擊。
四、結(jié)論
網(wǎng)頁竄改攻擊目前已經(jīng)對各企業(yè)造成很大的威脅,而且這種攻擊有日益嚴(yán)重的趨勢,但是,現(xiàn)有的解決方法無法完全解決網(wǎng)頁竄改的問題。因此,本篇論文從操作系統(tǒng)核心方面著手,以一種不被一般大眾可以接受的行為方式來偵測攻擊,可以更有效率地防止網(wǎng)頁竄改攻擊,并且降低了誤判(false positive)的情形發(fā)生,而且對系統(tǒng)效能也不會有太大的影響。我們的機(jī)制以不改變網(wǎng)站系統(tǒng)管理者原有的管理網(wǎng)頁的方式,也就是說,我們的機(jī)制對使用者而言是完全透明的、感受不到的,但對攻擊者而言,操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制能準(zhǔn)確地阻擋攻擊者的攻擊。此外,操作系統(tǒng)防止網(wǎng)頁竄改機(jī)制也可以結(jié)合現(xiàn)有的完整性評估方法來提高系統(tǒng)安全上的強(qiáng)度。
參考文獻(xiàn):
[1]Bartoli A, Medvet E. Automatic Integrity Checks for Remote Web Resources[J]. IEEE Internet Computing, 2006,10(6):56- 62.
[2]Borgolte K, Kruegel C, Vigna G. Meerkat: detecting website defacements through image-based object recognition[A].Usenix Confe-rence on Security Symposium[C]. USENIX Association, 2015:595-610.
[3]Basnet R B, Sung A H. Mining Web to Detect Phishing URLs[A]. International Conference on Machine Learning and Ap-plica-tions[C]. IEEE Computer Society, 2012:568-573.
◎編輯 陳鮮艷