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