焦東杰,王貞化
(1.漯河醫學高等專科學校,河南 漯河 462002;2.河南師范大學,河南 新鄉 453007)
網絡密碼認證安全研究
焦東杰1,王貞化2
(1.漯河醫學高等專科學校,河南 漯河 462002;2.河南師范大學,河南 新鄉 453007)
針對網絡密碼認證中存在的風險,提出一種基于瀏覽器的密碼安全認證方法。該方法利用Windows消息傳遞機制和瀏覽器插件的特點并引入鉤子技術、散列函數,從而保護用戶密碼認證安全,并為每一個站點生成惟一的認證密碼。
瀏覽器插件;密碼認證;鉤子技術;散列函數;網絡釣魚
隨著網絡的快速發展,各種各樣的黑客攻擊層出不窮,對用戶和網絡造成巨大的安全風險。由于絕大多數網站采用表單提交密碼的方式認證用戶身份,進而為之提供個性化服務,一旦黑客通過某些技術竊取用戶密碼等重要信息,那么黑客便可以用戶合法的身份登錄竊取用戶信息等資料。密碼認證安全的研究有2個方向,一是基于客戶端,二是有服務器端參與。目前,國內基于客戶端的研究較少,研究領域集中在交互協議方面來保護認證密碼安全,如一次性密碼認證協議[1];國外在密碼認證安全領域的研究有 PwdHash[2]、Spoofgard[3]和 Spyblock[4]等。在服務器的參與下,引進交互認證協議可以較好地保護用戶認證密碼的安全,但實際中各服務站點不可能全部支持該協議。為此,本文分析國外幾種基于客戶端研究的優、缺點,提出一種瀏覽器插件形式的客戶端密碼認證安全方法。
面對眾多的Web服務網站,用戶為了便于記憶,通常對不同網站設置易記且相同的密碼,由于網站安全等級參差不齊,所以當用戶在某網站的認證密碼被竊取后,在其他網站的信息安全也可能遭到威脅。認證密碼的復雜度在一定程度上影響用戶在該網站的信息安全,甚至是其他網站的信息安全,雖然一些網站在用戶登錄認證時,用MD5對用戶的密碼進行散列處理,但通過離線的字典攻擊,用戶的明文密碼仍能被破解。
為了竊取用戶的密碼等信息,運行在用戶主機上的惡意程序利用掛鉤監控原理都具備鍵盤記錄功能,其能夠記錄用戶按鍵信息或瀏覽器頁面密碼欄中的數據,直接或間接發送給黑客,從而使得黑客竊取用戶的密碼等重要信息。以木馬攻擊為例,它是目前最常見的鍵盤記錄的載體,能夠控制對方的鼠標、鍵盤等,能夠監視屏幕顯示信息、文件傳遞信息,控制對方信息的發送和接收等。
在文檔對象模型(DOM)和其他瀏覽器的幫助下,Java Script能夠完善客戶端功能和網頁的外觀,使網頁更具有吸引力、互動性和較快響應速度。但是Java Script超強的能力也會給用戶帶來許多不便及安全威脅。一方面,它能降低用戶上網體驗,如彈出廣告窗口和篡改瀏覽器配置;另一方面,它又能被黑客利用竊取用戶的敏感信息,例如釣魚攻擊[5]。特別是在釣魚攻擊中,它常被用來偽裝釣魚網站迷惑用戶,從而使黑客能夠成功誘騙用戶密碼等敏感信息。用此種攻擊的方式有鍵盤監視、竊取表單域、“域重寫”等。
網絡釣魚通常利用含有虛假鏈接的電子郵件引誘用戶訪問一些和真實站點外觀幾乎一樣的Web站點來進行網絡詐騙,意圖引誘受騙者泄露自己的私人資料,如信用卡號、銀行卡密碼、身份證號等內容[5]。釣魚網站為了增強自身的可信度通常采用一些腳本技術隱藏容易暴露的線索,例如,修改URL、制作虛假的SSL、修改狀態欄等。另一種形式的釣魚攻擊(Spear Phishing)能夠向特定的組織或其內部員工發送電子郵件,這種攻擊效率更高,且不易被反釣魚工具捕獲。當黑客“控制”了用戶訪問網站的習慣后,使得用戶增強了對網站的信任,那么釣魚攻擊的成功率就會大大提升。
網絡中還有其他攻擊,如嗅探攻擊、會話劫持、“域中毒”、ARP欺騙攻擊等,這些攻擊需要服務器的參與。
越來越多的服務商選擇B/S架構,通過用戶密碼識別用戶身份,為用戶提供個性化服務。由于用戶密碼是用戶身份識別的惟一標識,擁有該密碼就意味著擁有該賬戶的合法身份,因此用戶密碼成為黑客攻擊的首要目標。
瀏覽器插件BHO是微軟公司推出的作為瀏覽器對第三方程序員開放交互接口的業界標準,是實現特定接口的COM組件。借助于BHO,可以編寫一個進程內COM對象,注冊于注冊表中Browser Helper Object鍵下,這個對象在每次啟動時都會加載該對象,這樣該對象就會在與之相同的上下文中運行,并對可用的窗口和模塊進行任何行動,其通常以工具欄的形式出現在瀏覽器中。在Browser Helper Object鍵下列出的每一個CLSID,IE都會在相同的進程空間,比如在瀏覽器中,調用Co Create Instance來啟動一個新的BHO實例。如果這個BHO已經注冊了自己的CLSID并且實現了IObjectwithSite接口,那么這個被IE啟動的BHO就傳遞了一個指針給IE瀏覽器的IWebBrowser2接口。
通過這個接口,BHO可以控制并收到來自IE瀏覽器的事件及行為,比如“后退”“前進”“刷新”等。利用BeforeNavigate2事件獲取IE當前加載的URL,提交的Data,并且可以控制是否繼續刷新頁面。程序員也可以用代碼控制瀏覽器行為及當前頁面DOM的數據,比如用戶在表單欄中的數據。此外,BHO還能夠安裝鉤子以監控一些消息和動作。本文就是利用BHO這個特性安裝鉤子程序,進而抵御鍵盤記錄等惡意軟件對用戶密碼的攻擊。
鉤子(Hook)是Windows平臺上的一種Windows消息處理機制,它可以設置子程監視指定窗口的某種消息。當特定的消息發出,在沒有到達目的窗口前,鉤子程序就先捕獲該消息,即鉤子函數先得到控制權。這時鉤子函數既可以加工處理(改變)該消息,也可以不作處理而繼續傳遞該消息,還可以強制結束消息的傳遞或發送一個其他消息到目的地。根據鉤子對消息監視范圍的不同,分為系統鉤子和線程鉤子2類,且線程鉤子的優先級別高于系統鉤子,線程鉤子只能監視本進程中某個指定線程的事件或消息,系統鉤子監視系統中所有線程的事件或消息。鉤子子程是一個應用程序定義的回調函數,編寫好相應的功能函數后,利用Set Windows Hook Ex()函數便可以指定鉤子、監控事件及鉤子類型等。為了不影響用戶獲取鍵盤消息,本文采用線程鉤子,也就是線程鉤子只監視瀏覽器頁面內的擊鍵消息。
散列算法就是把任意長度的輸入通過一個不可逆的散列算法,變換成固定長度的輸出。由于Hash算法是單向的,一旦數據被轉換,就無法再以確定的方法獲得其原始值,因此,除了應用于數字簽名外,也廣泛應用于加密和解密技術,典型的算法如MD5和SHA-1。理論上無法從散列值恢復出原文信息,但黑客通常使用“跑字典”的方式來破解散列值,其成功率較高。為此,本文采用帶密鑰的散列函數hmac_md5(pwd,key)對用戶密碼進行散列,從而提高抵抗“跑字典”攻擊的能力。密鑰key選擇了當前站點域名作為哈希密鑰。在釣魚頁面中,輸入的密碼將會和釣魚頁面的域名進行哈希運算,而在合法頁面中的密碼和合法頁面的域名哈希,由于二者域名不同,因此哈希值也不同,結合密碼指示燈便可更直觀地警示用戶輸入密碼時是否安全。
其由一個繼承IObjectWithSite的COM組件、一個作為IE工具欄加載的接口以及其他幾個響應工具欄組件的模塊組成,2個窗口類實現CWindowImpl的接口來定義工具欄的外觀和用戶交互的界面,見圖1。
圖1 密碼助手指示燈
Warn Bar,當用戶提交表單時檢查表單action的值是否改變,如果改變則向用戶提示;Reflection Wnd,CWindowImpl類實現了一個透明窗口,用來將用戶消息傳遞到彈出的警示窗口;Pwd Tool Bar,CWindowImpl類定義了密碼助手在工具欄中出現的形式,用戶的預置信息便保存在其中,最后存儲在注冊表中。Warn Bar需要Pwd Tool Bar的信息來決定密碼指示燈的顏色。
當IE瀏覽器啟動后,它調用IObjectWithSite接口中的Set-Site方法初始化密碼助手,密碼助手收到一個指向網頁瀏覽器對象的指針,并通過ReflectionWnd和Pwd Tool Bar使密碼助手不斷檢查內容瀏覽器事件。IE的DWebBrowserEvents2類導出BeforeNavigate2和Document Complete事件處理程序。因為BeforeNavigate2事件發生在navigate事件之前,這就使得Warn Bar在瀏覽器跳轉之前獲取表單的URL并有機會取消跳轉頁面。當鍵盤鉤子偵測到密碼鍵或密碼前綴時,密碼助手判定當前活動元件是否是密碼型控件,若不是,則警告用戶;若是,則密碼助手截取所有鍵盤輸入的可打印字符,直到焦點離開該密碼型元件域。鍵入的字符將會存放在密碼助手指定的內存中,當偵測到焦點離開密碼型元件域后,然后結合預置信息對用戶鍵入的密碼進行散列加密運算,并放在該地址的內存中。這樣也允許用戶在密碼欄中回退、刪除密碼,而不會導致數據出錯,也不會影響用戶上網體驗。
在用戶提交表單之前,密碼欄中一直存放的是鍵盤鉤子返回的偽字符串(并不是用戶在該網站的真實認證密碼)。當用戶提交表單時,密碼助手便可利用BeforeNavigate2處理程序攔截提交事件。由于IE瀏覽器不允許密碼助手在BeforeNavigate2處理程序中直接編輯表單數據,因此就需要撤銷原始Before-Navigate2事件,并創建一個含有用戶真實密碼數據的新BeforeNavigate2事件。密碼助手包含這么一個數據結構,即用于識別BeforeNavigate2事件是被密碼助手撤銷,還是被用戶撤銷,避免密碼助手重復轉換表單中的數據,使之進入死循環。
在IE瀏覽器6.0上安裝密碼助手后,經測試,鍵盤記錄軟件、腳本捕獲的是偽字符串。在釣魚攻擊中,假定http://localhost/Tlogin.aspx為真實網站,http://localhost/Flogin.aspx為釣魚網站,輸入相同的認證密碼登陸后,發現數據庫中存放了2個不同的散列值,結果符合開發初的構想。將國外2個同類軟件與密碼助手對比分析可以得出,密碼助手優于其他2個軟件(見表1)。
表1 密碼助手功能對比分析表
總之,本文旨在研究一種基于客戶端的密碼認證安全的方法,利用底層鉤子優先捕獲擊鍵事件,而瀏覽器插件最后捕獲頁面事件的特性,設計了一種能夠有效保護用戶認證密碼,使其不受本地鍵盤記錄、網頁腳本、網絡釣魚等攻擊的插件。鑒于Web服務的不確定性,本文的設計未與服務器進行信息交互,所以其還不能抵御網絡嗅探、會話劫持、“域中毒”等攻擊,這也是本課題以后要研究的內容。
[1]Bin Li,Shaohai Hu.A practical one-time password authentication implement on Internet[C].Hangzhou,2006.
[2]Blake Ross Collin,Jackson Nick,Miyake.Stronger Password Authentication Using Browser Extensions[EB/OL].http://crypto.stanford.edu/Pwd-Hash,2008-12-20.
[3]Neil Chou,Robert Ledesma.Client-side defense against web-based identity theft webspoof[EB/OL].http://crypto.stanford.edu/webspoof,2008-03-25.
[4]Collin Jackson,Dan Boneh,John Mitchell.Spyware Resistant Web Authentication Using Virtual Machines spyblock[EB/OL].http://crypto.stanford.edu/spyblock/spyblock-2.pdf,2008-12-30.
[5]Legon,Jeordan.“Phishing”scams reel in your identity[EB/OL].http://www3.cnn.com/2003/TECH/internet/07/21/phishing.scam,2009-01-10.
TP311
A
1671-1246(2010)15-0155-03
國家自然科學基金項目(60873208)工程信息中心小世界效應研究