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