摘要:當(dāng)前,有相當(dāng)一部分學(xué)生嚴(yán)重缺乏自主研學(xué)的習(xí)慣和能力,一些學(xué)生只是被動(dòng)地應(yīng)付考試,另一些學(xué)生甚至完全沉溺于游戲當(dāng)中,失去了對(duì)專業(yè)學(xué)習(xí)的興趣。本文通過(guò)一個(gè)具體案例,積極探索如何引導(dǎo)信息安全專業(yè)學(xué)生自主研學(xué),從而有效地提高學(xué)生發(fā)現(xiàn)、理解、分析和解決問題的興趣和能力。
關(guān)鍵詞:自主研學(xué);第三方支付;客戶端安全;瀏覽器劫持
我國(guó)的高等院校信息安全專業(yè)本科的建立和發(fā)展至今尚不足8年。這些年來(lái),有關(guān)專業(yè)人士就如何發(fā)展和完善信息安全專業(yè)建設(shè)進(jìn)行了廣泛的研究和探討,比如,如何結(jié)合學(xué)校特色加強(qiáng)信息安全專業(yè)的建設(shè)、信息安全專業(yè)人才培養(yǎng)存在的若干問題、信息安全專業(yè)人才培養(yǎng)模式的探討、信息安全課程體系和實(shí)驗(yàn)體系的建設(shè)、信息安全專業(yè)應(yīng)用型人才的培養(yǎng),等等[1-2]。國(guó)外大學(xué)關(guān)于信息安全專業(yè)教育方面的研究也不少,特別在信息安全實(shí)驗(yàn)教學(xué)方面有許多很具體的研究和探索[3-4]。北京信息科技大學(xué)信息安全專業(yè)成立于2004年,近些年來(lái),本專業(yè)特別注重結(jié)合學(xué)校具體情況,為培養(yǎng)信息安全應(yīng)用型人才進(jìn)行積極的探索,無(wú)論在專業(yè)建設(shè)和學(xué)科建設(shè)方面都取得了一定成效。筆者在“入侵檢測(cè)技術(shù)”這門課程的實(shí)驗(yàn)教學(xué)方面進(jìn)行過(guò)積極探索[5],采用課內(nèi)實(shí)驗(yàn)與課外實(shí)驗(yàn)相結(jié)合的方式增加學(xué)生動(dòng)手的機(jī)會(huì),使學(xué)生在實(shí)踐中學(xué)習(xí),在實(shí)踐中增強(qiáng)各種能力。但是無(wú)論從學(xué)校方面,還是從教師方面做再多的努力,都難以回避一個(gè)不爭(zhēng)的事實(shí):大多數(shù)學(xué)生玩游戲上癮,自主研學(xué)的習(xí)慣和精神嚴(yán)重缺乏。因此,無(wú)論進(jìn)行什么樣的教學(xué)模式創(chuàng)新與改革,無(wú)論提供什么樣的教學(xué)和實(shí)驗(yàn)環(huán)境,其效果都會(huì)大打折扣。這是我們必須要面對(duì),同時(shí)也要盡快解決的現(xiàn)實(shí)問題。筆者從事多年的信息安全專業(yè)的教學(xué),同時(shí)又長(zhǎng)期兼任信息安全專業(yè)班級(jí)的班主任,即站在專業(yè)教學(xué)的第一線,也站在學(xué)生管理的第一線,有更多的時(shí)間和機(jī)會(huì)在如何引導(dǎo)學(xué)生自主研學(xué)方面進(jìn)行廣泛和深入的探索。
1發(fā)現(xiàn)和提出問題
隨著互聯(lián)網(wǎng)上各種應(yīng)用和服務(wù)不斷增多,信息安全問題越來(lái)越受到人們的關(guān)注。目前,網(wǎng)絡(luò)銀行和第三方支付系統(tǒng)在各種網(wǎng)上應(yīng)用和服務(wù)中扮演極其重要的角色,而它的安全問題一直受到有關(guān)各方的重視,但沒有得到根本上的解決,這將嚴(yán)重影響未來(lái)網(wǎng)上服務(wù)和應(yīng)用的進(jìn)一步發(fā)展。筆者通過(guò)一個(gè)真實(shí)的案例,吸引學(xué)生的興趣,引導(dǎo)他們結(jié)合所學(xué)的知識(shí)去分析問題和解決問題。案例的具體內(nèi)容涉及一個(gè)用戶利用第三方支付系統(tǒng)還房貸而遭受較大的資金損失。筆者在這個(gè)事件發(fā)生后,親歷了此案例的調(diào)查,事件發(fā)生的過(guò)程如下:一個(gè)用戶看到某第三方支付商提供的廣告后,進(jìn)行了信用卡還款操作。圖1是用戶在操作時(shí)輸入的重要信息。
左窗口是要求用戶輸入接收方的信用卡卡號(hào)、用戶名及還款金額;右窗口是付款方的借記卡所屬銀行、個(gè)人電子郵件和手機(jī)號(hào)碼。完成各項(xiàng)填寫后,按確認(rèn)鍵,進(jìn)入所選銀行的付款頁(yè)面,該頁(yè)面顯示商城名稱、訂單號(hào)、訂單金額、商品名稱等提示信息,并要求輸入支付卡的卡號(hào)和口令,接下來(lái)用戶只要插上自己的有效的安全U盾,輸入正確的PIN碼后就可以完成付款。本案例中的用戶共進(jìn)行了二次支付,共計(jì)支付了8萬(wàn)多元錢。過(guò)了幾天,所支付的錢依然沒有到達(dá)接收卡賬戶上。用戶查詢后發(fā)現(xiàn),這二筆錢通過(guò)另一家支付系統(tǒng)分別轉(zhuǎn)入了某地二個(gè)不同的賬戶,而他所選用的第三方支付商根本沒有接受這二筆交易。
筆者將上述真實(shí)的案例告訴學(xué)生,首先是讓他們了解該安全事件的具體表現(xiàn)。接下來(lái)給學(xué)生提出更多的問題,比如:通過(guò)第三方的支付過(guò)程涉及哪些主體?這些主體各自應(yīng)該承擔(dān)的安全責(zé)任和應(yīng)當(dāng)采取的安全機(jī)制是什么?上述案例中存在的安全漏洞到底在哪?這樣的安全漏洞能夠解決嗎?采用什么安全機(jī)制能防范或制止這種安全漏洞?為了讓學(xué)生更快地進(jìn)入角色,筆者給他們提出一些建議:
1) 通過(guò)第三方支付系統(tǒng)完成一次網(wǎng)上的實(shí)際轉(zhuǎn)賬過(guò)程;
2) 上中國(guó)金融認(rèn)證中心網(wǎng)站www.cfca.com,了解網(wǎng)上支付過(guò)程及相關(guān)安全知識(shí);
3) 了解客戶端及IE瀏覽器存在的安全漏洞。
2描述和理解問題
學(xué)生們帶著對(duì)上述案例的興趣及若干問題去查找相關(guān)資料,經(jīng)過(guò)一段時(shí)間的學(xué)習(xí)和討論以后,他們能夠與老師討論這個(gè)案例,并能完成對(duì)相關(guān)問題的描述和理解。
首先,了解到第三方支付系統(tǒng)的支付過(guò)程,涉及支付用戶、收款用戶、第三方支付系統(tǒng)、網(wǎng)上銀行、認(rèn)證中心(CA),以及網(wǎng)上通信。若存在購(gòu)物交易,還應(yīng)包括商家。本案例中用戶的在線支付,不是為了完成購(gòu)物而是為了還款,實(shí)質(zhì)上就是利用第三方支付系統(tǒng)進(jìn)行轉(zhuǎn)賬。這種轉(zhuǎn)賬方式,是在網(wǎng)上銀行與用戶方之間增加了第三方支付商,增加了這樣一個(gè)支付環(huán)節(jié),很有可能會(huì)給用戶帶來(lái)了額外的風(fēng)險(xiǎn)。若從技術(shù)層面上來(lái)考慮,這種支付過(guò)程,涉及到客戶端、第三方支付系統(tǒng)的服務(wù)器端、網(wǎng)銀系統(tǒng)的服務(wù)器端、認(rèn)證系統(tǒng)服務(wù)器、互聯(lián)網(wǎng)通信等多個(gè)方面。一旦出現(xiàn)安全事件,每一個(gè)相關(guān)方面都有可能成為安全事件起因。當(dāng)然,事件的確切原因需要具體問題具體分析。
第二,所涉及到的各方都會(huì)采用相應(yīng)安全機(jī)制來(lái)保證系統(tǒng)的安全,其中認(rèn)證中心、銀行采用的安全機(jī)制最強(qiáng)、在安全方面投入也更高;第三方支付系統(tǒng)相對(duì)弱一些;用戶端存在的安全隱患相對(duì)更多一些。目前,國(guó)內(nèi)銀行的認(rèn)證還是由各銀行自行完成,以后這方面的工作應(yīng)該由中國(guó)金融認(rèn)證中心來(lái)完成。到目前為止有關(guān)網(wǎng)銀安全事件的發(fā)生原因,都與網(wǎng)銀的服務(wù)器端沒有直接原因,主要由于客戶端存在病毒、或用戶操作不當(dāng)造成的。相比較而言,第三方支付系統(tǒng)存在的安全隱患更大,其中包括監(jiān)管和技術(shù)二方面的原因。但是就目前所發(fā)生的有關(guān)安全事件來(lái)看,第三方支付系統(tǒng)的服務(wù)器端出現(xiàn)技術(shù)或人為安全問題的可能性不大,因?yàn)槿羰欠?wù)器端出現(xiàn)問題,其造成資金的損失,一定會(huì)是以億計(jì),而且會(huì)涉及大量的用戶。與其他主體相比,客戶端存在的安全問題相對(duì)比較多,比如,操作系統(tǒng)和IE沒有及時(shí)升級(jí)、沒有安裝殺毒軟件或沒有對(duì)殺毒軟件的病毒庫(kù)及時(shí)更新,等等。本案例中用戶所用的Window系統(tǒng)版本較早且未及時(shí)打補(bǔ)丁,所用IE版本較低。筆者用諾頓殺毒軟件對(duì)案中用戶所用U盤進(jìn)行過(guò)檢測(cè),出現(xiàn)了Spyware.Keylogger報(bào)警。經(jīng)查詢,這是一個(gè)間諜軟件,在2007年2月升級(jí),可以截屏,可以記錄擊鍵信息。該軟件可能來(lái)自網(wǎng)站、電子郵件、即時(shí)消息及直接文件共享連接,此外用戶在接受某個(gè)軟件程序的最終用戶許可協(xié)議時(shí),可能會(huì)在毫無(wú)察覺的情況下收到該間諜軟件。
第三,在網(wǎng)絡(luò)通信方面,目前網(wǎng)上交易大都采用SSL、SET等安全協(xié)議,所用安全協(xié)議的安全功能包括身份認(rèn)證服務(wù)、機(jī)密性保護(hù)服務(wù)、數(shù)據(jù)完整性服務(wù)、不可否認(rèn)性服務(wù)等,從這些年的實(shí)踐上來(lái)看,SSL和SET二個(gè)安全協(xié)議尚未有明顯易攻擊的安全漏洞 [6]。
最終,通過(guò)認(rèn)真分析交易環(huán)節(jié)、上網(wǎng)查詢相似案例的報(bào)道、以及檢查用戶交易所用的筆計(jì)本電腦,確認(rèn)這是一起典型的發(fā)生在客戶端的中間人攻擊事件,利用了客戶端與第三方交易系統(tǒng)存在的漏洞。這里所說(shuō)的第三方交易系統(tǒng)存在安全漏洞,主要是指三方面的內(nèi)容,其一,如圖1所示,當(dāng)用戶在左窗口中輸入賬戶信息時(shí),所輸數(shù)據(jù)極易被鍵盤截獲木馬所截獲;其二,沒有采用適當(dāng)?shù)陌踩丶?,防范一些常見攻擊;其三,第三方支付系統(tǒng)存在更易被利用的弱點(diǎn)。下面重點(diǎn)分析本案例中的客戶端的安全問題,這是目前最常見的,也是難于解決的問題。
圖2是客戶端的涉及IE瀏覽器、鍵盤和安全U盾三個(gè)實(shí)體的數(shù)據(jù)流圖。
就本文所提案例而言,用戶進(jìn)入第三方支付系統(tǒng)A網(wǎng)站后,首先在圖1左端窗口輸入接收卡信息,在右端窗口選擇支付銀行及個(gè)人Email和手機(jī)信息,正常情況下,這些信息通過(guò)IE內(nèi)置SSL模塊,建立SSL連接,將信息安全傳送至第三方支付系統(tǒng)A服務(wù)器端;然后再依據(jù)用戶所選擇的支付銀行,鏈接銀行支付頁(yè)面進(jìn)行支付,支付時(shí)要求輸入用戶銀行卡號(hào)、用戶銀行卡密碼及付款金額,提示用戶插入安全U盾,輸入PIN碼。該過(guò)程用戶所輸入的信息通過(guò)IE傳遞給安全U盾,進(jìn)行簽名和加密運(yùn)算以后,再返回IE傳送至網(wǎng)銀支付網(wǎng)關(guān),網(wǎng)銀系統(tǒng)的服務(wù)器端對(duì)數(shù)據(jù)進(jìn)行認(rèn)證和解密后,將資金從用戶支付卡上轉(zhuǎn)至第三方支付系統(tǒng)。延遲一段時(shí)間后,資金才由第三方支付系統(tǒng)轉(zhuǎn)入用戶所輸入的接收卡中。
在本文的案例中,用戶的資金通過(guò)另一個(gè)第三支付系統(tǒng)B轉(zhuǎn)入非用戶指定的接收卡賬戶。這顯然是一種瀏覽器劫持行為,此行為發(fā)生在調(diào)用網(wǎng)銀支付頁(yè)面以前,它更改了接收卡信息,同時(shí)由另一第三方支付系統(tǒng)B,代替了用戶所選擇的第三方支付系統(tǒng)A,因此網(wǎng)銀支付頁(yè)面是由第三方支付系統(tǒng)B提供的鏈接。在接下來(lái)的支付過(guò)程中,無(wú)論是用戶方、第三方支付系統(tǒng)A、第三方支付系統(tǒng)B,還是銀行方均不會(huì)發(fā)現(xiàn)任何異常情況。
分析了整個(gè)入侵過(guò)程以后,教師自然引入以下幾個(gè)問題:
1) 非法者為何要選擇在此操作環(huán)節(jié)進(jìn)行IE劫持?這種IE劫持是如何實(shí)現(xiàn)的?
2) 非法者為何要選擇第三方支付系統(tǒng)B作為他們的支付平臺(tái)?該平臺(tái)是否有漏洞更容易被利用?
3) 若該用戶直接進(jìn)入網(wǎng)銀界面進(jìn)行類似的轉(zhuǎn)賬操作會(huì)有資金會(huì)發(fā)生資金損失嗎?
4) 能否防范此類IE劫持行為?如何防范?
3分析和實(shí)踐
前面描述了如何引導(dǎo)學(xué)生去發(fā)現(xiàn)和理解問題。接下來(lái)是組織學(xué)生進(jìn)一步分析問題,并著手尋找解決問題的方法和途徑。筆者通過(guò)與學(xué)生們討論,將接下來(lái)所要進(jìn)行的工作分成四大部分。第一、明確和掌握文中所提案例的攻擊原理;第二、通過(guò)分析和模擬攻擊行為,進(jìn)一步理解和掌握相關(guān)攻擊原理和實(shí)現(xiàn)方法;第三、設(shè)計(jì)并實(shí)現(xiàn)新的安全機(jī)制,防范相關(guān)攻擊;第四、驗(yàn)證新的安全防范機(jī)制的有效性。
3.1瀏覽器劫持技術(shù)的原理
從目前的資料來(lái)看,“瀏覽器劫持”攻擊的滲透途徑有很多,其中最常見的方式有通過(guò)BHO DLL插件、Hook技術(shù)達(dá)到對(duì)用戶的瀏覽器進(jìn)行篡改的目的。這些載體可以直接寄生于瀏覽器的模塊里,成為瀏覽器的一部分,進(jìn)而直接操縱瀏覽器的行為。
什么是BHO DLL插件、Hook技術(shù)?它們的作用是什么?它們是如何被合法和不法利用的?“瀏覽器劫持”攻擊是如何利用這些技術(shù)從事了非法或非授權(quán)行為的?
首先了解BHO技術(shù)[7]。BHO是微軟早在1999年推出的作為瀏覽器對(duì)第三方程序員開放交互接口的業(yè)界標(biāo)準(zhǔn)。BHO可以獲知和實(shí)現(xiàn)瀏覽器的大部分事件和功能,也就是說(shuō),它可以利用少量的代碼控制瀏覽器行為。程序員可以設(shè)計(jì)出一個(gè)BHO控制瀏覽器跳轉(zhuǎn)到他想讓用戶去的頁(yè)面,這就所謂的“瀏覽器劫持”——BHO劫持。
其次,引入Hook(鉤子)技術(shù)。Hook[8]是Windows消息處理機(jī)制的一個(gè)平臺(tái),應(yīng)用程序可以在上面設(shè)置子程序以監(jiān)視指定窗口的某種消息,并且當(dāng)消息到達(dá)后,在目標(biāo)窗口處理函數(shù)之前處理它。Hook機(jī)制允許應(yīng)用程序截獲處理Window消息或特定事件。把Hook技術(shù)應(yīng)用到瀏覽器上面,就成了另一種控制瀏覽器行為的方法,稱為IE鉤子。IE鉤子程序載入進(jìn)程后便能獲知所有的消息類型、API和內(nèi)容,一旦發(fā)現(xiàn)某個(gè)符合要求的消息,如IE執(zhí)行了某個(gè)事件,或者用戶輸入了特定內(nèi)容,鉤子的處理代碼就開始工作了,它先攔截系統(tǒng)發(fā)送給IE的消息,然后分析消息內(nèi)容,根據(jù)不同消息內(nèi)容作出修改后再發(fā)給IE,就完成了一次Hook篡改過(guò)程。
接下來(lái)的問題就是:案例中的攻擊者是如何使攻擊得逞的呢?攻擊者能夠得逞需要具備哪些條件?
3.2第三方支付系統(tǒng)的弱點(diǎn)
本案例有一個(gè)值得關(guān)注的地方,就是詐騙者利用了另一家B支付系統(tǒng)將客戶資金進(jìn)行了非法轉(zhuǎn)移。這個(gè)B支付系統(tǒng)有什么更易被利用的弱點(diǎn)嗎?筆者對(duì)B支付系統(tǒng)進(jìn)行考察后發(fā)現(xiàn),該支付系統(tǒng)給商家提供了信用支付功能,通過(guò)該功能,商家可以通過(guò)一個(gè)鏈接讓買家通過(guò)網(wǎng)銀進(jìn)行支付。該支付系統(tǒng)為注冊(cè)商家和非注冊(cè)商家都提供了一個(gè)這樣的功能,也就是說(shuō)任意一個(gè)人,都可以不經(jīng)任何審查過(guò)程,實(shí)現(xiàn)這樣一個(gè)功能。
如圖3所示,要完成信用支付,任何一個(gè)注冊(cè)或非注冊(cè)用戶第一步要做的是輸入工行的信用卡號(hào)及其它相關(guān)信息。輸入完成后,再進(jìn)行確認(rèn)。最后生成一個(gè)支付鏈接。
如圖4所示。所生成的支付鏈接中的最后二項(xiàng),一個(gè)是“money=xxxxx”,另一個(gè)是“payUrl=xxxx”等號(hào)后面的內(nèi)容。前者是支付金額,后者是商品鏈接。等號(hào)后面的內(nèi)容允許商戶根據(jù)需要進(jìn)行修改。正是這個(gè)鏈接為網(wǎng)上開店的商戶完成商品的支付功能,提供了很大方便,但同時(shí),也為攻擊者進(jìn)行網(wǎng)上詐騙大開方便之門。
3.3模擬運(yùn)行環(huán)境及攻擊行為
通過(guò)對(duì)攻擊行為的模擬,可以使學(xué)生更好地理解攻擊行為的原理、作用及局限,同時(shí)也能夠大大增強(qiáng)學(xué)生的編程能力。
第一,利用鉤子技術(shù)實(shí)現(xiàn)對(duì)鍵盤的記錄[9]。由于鍵盤記錄器需要監(jiān)控鍵盤的所有輸入,因此必須安裝為全局的鉤子,該鉤子函數(shù)應(yīng)當(dāng)寫入一個(gè)DLL文件內(nèi)。該DLL由VC編寫,相應(yīng)參考資料很多。
第二,利用BHO技術(shù)實(shí)現(xiàn)URL的攔截[10]。該BHO插件在VC6.0下開發(fā)?;緦?shí)現(xiàn)過(guò)程:①ATL Object到該項(xiàng)目中。②實(shí)現(xiàn)IObjectWithSite的接口方法。③實(shí)現(xiàn)IDispatch接口方法。④修改注冊(cè)表文件,追加BHO的注冊(cè)信息。
第三,網(wǎng)上支付系統(tǒng)[11]保證客戶端資金安全的最核心的機(jī)制是采用安全U盾。為了使學(xué)生充分掌握和了解安全U盾的應(yīng)用,給學(xué)生提供了堅(jiān)石誠(chéng)信科技公司的安全U盾產(chǎn)品ET199,能夠使用MS CryptoAPI接口開發(fā)ET199的應(yīng)用。
3.4建立新的安全防范機(jī)制
分析和模擬的目的是為了能夠有更好的思路和手段來(lái)實(shí)現(xiàn)新的安全防范機(jī)制,避免類似的攻擊案例的發(fā)生。
從對(duì)文中案例的分析情況來(lái)看,第三方支付系統(tǒng)顯然存在弱點(diǎn),需要企業(yè)本身和相關(guān)監(jiān)管部門進(jìn)一步完善業(yè)務(wù)流程和監(jiān)管手段。作為用戶一方,如何保證客戶端不被非法程序所侵害,也應(yīng)引起足夠的重視。目前,所能采取的技術(shù)手段是利用系統(tǒng)監(jiān)控技術(shù),監(jiān)控文件目錄的變動(dòng)、注冊(cè)表的修改、進(jìn)程的創(chuàng)建等[9]。
1) 文件監(jiān)控技術(shù)。Windows SDK提供了兩種API進(jìn)行文件監(jiān)控。FindChange- Notification系列函數(shù)和ReadDirectory- ChangesW()函數(shù)。
2) 注冊(cè)表監(jiān)控技術(shù)。Windows SDK提供了一個(gè)函數(shù):RegNotifyChangeKeyValue(),可以完成對(duì)指定注冊(cè)表路徑項(xiàng)的監(jiān)視。
3) 進(jìn)程監(jiān)控技術(shù)。進(jìn)程監(jiān)控的有多種方法。最好的方法是采用API Hook。API Hook的主要思路是攔截基于操作系統(tǒng)提供的API函數(shù),使其在執(zhí)行這些函數(shù)前首先運(yùn)行自己的代碼,可以使用這種方法來(lái)記錄系統(tǒng)中的一些關(guān)鍵操作。
4結(jié)語(yǔ)
當(dāng)前,學(xué)生自主研學(xué)能力的缺乏具有一定的普遍
性,特別是在與我校同檔次的高校中,情況更為普遍。因此,無(wú)論從學(xué)校層面還是從專業(yè)教學(xué)層面上都在積極采取辦法提高學(xué)生自主研學(xué)能力,如鼓勵(lì)成立學(xué)生社團(tuán)、舉辦課外專業(yè)競(jìng)賽、提供學(xué)校學(xué)生基金項(xiàng)目、創(chuàng)新理論教學(xué)和實(shí)驗(yàn)教學(xué),等等。本文探討了一種新的方法和途徑:以學(xué)生感興趣的應(yīng)用型項(xiàng)目為依托,積極引導(dǎo)學(xué)生自主研學(xué)。只有當(dāng)學(xué)生提高了自主研學(xué)的能力和興趣以后,他們才能夠在大學(xué)所提供的各種教育活動(dòng)中,更有效地提高自身的實(shí)踐能力、溝通能力、團(tuán)隊(duì)合作能力和知識(shí)應(yīng)用能力。
參考文獻(xiàn):
[1]