關(guān)于門禁控制器安全漏洞的探討
一、引言
本文引用地址:http://m.butianyuan.cn/article/90225.htm門禁系統(tǒng)是安防系統(tǒng)中最重要的子系統(tǒng)之一,而門禁控制器又是門禁系統(tǒng)的核心。許多生產(chǎn)安防設(shè)備的大廠都有自己品牌的門禁控制器,而且其中不乏國外的產(chǎn)品。這些產(chǎn)品除了擁有我們所需要的穩(wěn)定性、可靠性之外,會不會也附帶一些安全上的隱患呢?這點(diǎn)需要我們給予充分的關(guān)注。
二、門禁控制系統(tǒng)概況
門禁控制器按照結(jié)構(gòu)區(qū)分,基本分成兩大類。一類是門禁控制一體機(jī),另一類是獨(dú)立的門禁控制器。門禁控制一體機(jī)是一種安全性相對比較低的結(jié)構(gòu)類型,因?yàn)檫@類門禁控制器將門禁系統(tǒng)的身份識別部分和處理控制部分集成在一個(gè)設(shè)備里。這樣在安裝設(shè)備時(shí),必然將整機(jī)安裝在門外,無形中增加了設(shè)備被破壞的可能。而單獨(dú)的門禁控制器是通過信號線與身份識別部分進(jìn)行連接,通過信號線傳遞識別信息,完成開門操作。這樣在安裝設(shè)備時(shí),可將控制器安裝在門內(nèi),增加了設(shè)備的安全性。在這里我們主要討論獨(dú)立的門禁控制器的安全問題。
獨(dú)立的門禁控制器與前端識別設(shè)備之間需要進(jìn)行通訊,現(xiàn)在使用的通訊方式基本上為兩種,一種是使用RS485總線進(jìn)行通訊,另一種使用韋根線進(jìn)行通訊。
RS485通訊使用雙絞線進(jìn)行半雙工通訊,采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力,傳輸距離可以達(dá)到數(shù)公里,可實(shí)現(xiàn)高速的信息傳送。RS485通訊采用總線式的連接方式,可保證多臺設(shè)備正常工作,而且它是串行通訊,所以每臺拄接在總線上的設(shè)備有自己的ID地址,進(jìn)行數(shù)據(jù)通訊時(shí),系統(tǒng)保證總線上只有一臺設(shè)備發(fā)送數(shù)據(jù),其它設(shè)備處于接收數(shù)據(jù)狀態(tài);設(shè)備之間采用自定義的協(xié)議傳輸數(shù)據(jù)。
采用RS485方式進(jìn)行通訊的門禁控制器可掛接多個(gè)讀卡器,傳輸數(shù)據(jù)的過程如圖1。每一個(gè)讀卡器和門禁控制器都有自己的ID地址,RS485網(wǎng)絡(luò)上傳遞的數(shù)據(jù)都包含地址信息,在網(wǎng)絡(luò)上只有一個(gè)設(shè)備發(fā)送數(shù)據(jù),其它設(shè)備都會接收數(shù)據(jù),對于目的是自己的數(shù)據(jù),設(shè)備會進(jìn)行相應(yīng)的處理,而不是以自己為目的的命令將被拋棄。在這樣的門禁系統(tǒng)中,門禁控制器通過輪巡的方式,完成一個(gè)門禁控制器管理多個(gè)讀卡器的功能。
圖1數(shù)據(jù)傳輸過程
韋根通訊是一種經(jīng)常在安防系統(tǒng)中使用、通過兩芯線進(jìn)行點(diǎn)對點(diǎn)近距離通訊的通用通訊協(xié)議,最常用的格式有Weigand26,它通過DATA 0和DATA 1兩條數(shù)據(jù)線分別傳送數(shù)據(jù)“0”和“1” ,每幀傳輸?shù)臄?shù)據(jù)為26Bit。它利用在兩條通訊數(shù)據(jù)線上分別產(chǎn)生的脈沖生成數(shù)據(jù)序列,通訊距離大約10米左右。
三、安全問題提出
比較兩種常用的通訊模式。RS485總線通訊采用廠家自己定義的協(xié)議,而韋根采用通用協(xié)議。自定義協(xié)議會有更多的設(shè)計(jì)空間,這里我們主要針對這種通訊模式進(jìn)行研究和探討。由于在門禁系統(tǒng)中,門禁控制器多數(shù)是通過RS485總線連接感應(yīng)讀卡器、鍵盤、磁卡讀卡器、指紋讀卡器等前端設(shè)備,而使用RS485串行總線進(jìn)行通訊的設(shè)備需要依照自定義的通訊協(xié)議進(jìn)行數(shù)據(jù)交換,因此。生產(chǎn)門禁控制器的生產(chǎn)廠家都會生產(chǎn)與之配套的前端設(shè)備。這樣就會出現(xiàn)在門禁系統(tǒng)中門禁控制器、前端設(shè)備以及它們之間的通訊協(xié)議是由一個(gè)生產(chǎn)廠家設(shè)計(jì)生產(chǎn)的情況。在這種情況下,就不能夠排除門禁控制器“后門卡”存在的可能性。這里所說的“后門卡”是指門禁控制器生產(chǎn)廠為了某些目的,在門禁控制器上預(yù)留后門,當(dāng)使用某些特定的卡片或是結(jié)合某些特定的操作之后,使用這些未被注冊的卡片就可以啟動(dòng)門禁控制器打開門鎖。如果門禁系統(tǒng)遭到“后門卡”的攻擊,我們的門禁系統(tǒng)就會在瞬間被輕易攻破,同時(shí)也意味著為加固周界所做的努力瞬間便付之東流。雖然這只是一種推測。但從技術(shù)層面來講,實(shí)現(xiàn)這種“后門卡”功能完全是可能的。這也正是我們的用戶,特別是對安全有著特殊要求的用戶,所擔(dān)心的一個(gè)問題。
四、解決方案
1.門禁控制器工作原理
為了阻斷“后門卡” 的通路。我們必須首先熟悉門禁系統(tǒng)各個(gè)設(shè)備的工作原理,了解各個(gè)設(shè)備是如何協(xié)調(diào)工作的,掌握其運(yùn)行的機(jī)制,這樣就可以找到解決問題的辦法。為了說明問題,我們可以構(gòu)建一個(gè)簡化的門禁系統(tǒng)模型。在這個(gè)模型中,使用一個(gè)門禁控制器控制管理一個(gè)感應(yīng)讀卡器,設(shè)備之間通過RS485進(jìn)行數(shù)據(jù)通訊。系統(tǒng)的工作流程如圖
圖2 門禁系統(tǒng)工作流程
門禁控制器工作在兩種模式之下。一種是巡檢模式,另一種是識別模式。在巡檢模式下,控制器不斷向讀卡器發(fā)送查詢代碼,并接收讀卡器的回復(fù)命令。這種模式會一直保持下去,直至讀卡器感應(yīng)到卡片。當(dāng)讀卡器感應(yīng)到卡片后,讀卡器對控制器的巡檢命令產(chǎn)生不同的回復(fù),在這個(gè)回復(fù)命令中,讀卡器將讀到的感應(yīng)卡內(nèi)碼數(shù)據(jù)傳送到門禁控制器,使門禁控制器進(jìn)入到識別模式。
在門禁控制器的識別模式下,門禁控制器分析感應(yīng)卡內(nèi)碼,同設(shè)備內(nèi)存儲的卡片數(shù)據(jù)進(jìn)行比對,并實(shí)施后續(xù)動(dòng)作。門禁控制器完成接收數(shù)據(jù)的動(dòng)作后,會發(fā)送命令回復(fù)讀卡器,使讀卡器恢復(fù)狀態(tài),同時(shí),門禁控制器重新回到巡檢模式。
2.?dāng)?shù)據(jù)篩選器的工作原理
通過上面門禁控制器和讀卡器的工作流程,可以看出要實(shí)現(xiàn)開門,需要經(jīng)過以下幾個(gè)步驟:
1)感應(yīng)讀卡器讀取感應(yīng)卡信息,獲取感應(yīng)卡內(nèi)碼;
2)感應(yīng)讀卡器將感應(yīng)卡信息傳遞到門禁控制器;
3)門禁控制器對讀取的感應(yīng)卡數(shù)據(jù)和系統(tǒng)內(nèi)部存儲信息進(jìn)行比對;
4)門禁控制器根據(jù)判斷結(jié)果,控制電路實(shí)現(xiàn)開門。
其中步驟1在讀卡器內(nèi)部完成,步驟3、4在門禁控制器中完成,它們已經(jīng)固化到設(shè)備 當(dāng)中,無法改變。而第2步是通過連接兩個(gè)設(shè)備的RS485通訊線完成的,這為我們從根本上阻止“后門卡”創(chuàng)造了條件。
我們設(shè)計(jì)一個(gè)稱為數(shù)據(jù)篩選器的設(shè)備,該設(shè)備串行安裝在數(shù)據(jù)通訊的通道上,對所有刷卡的內(nèi)碼先行經(jīng)過該設(shè)備的比對,對認(rèn)可的數(shù)據(jù),將卡片內(nèi)碼數(shù)據(jù)發(fā)送到門禁控制器進(jìn)行后續(xù)操作;對不被認(rèn)可的數(shù)據(jù),直接將數(shù)據(jù)丟棄;這就使得那些“后門卡” 的數(shù)據(jù)根本無法發(fā)送到門禁控制器,從而從根本上截?cái)嗔?ldquo;后門卡”信息的通路。以下就是數(shù)據(jù)篩選器的工作框圖。
圖3數(shù)據(jù)篩選器的工作框圖
數(shù)據(jù)篩選器如同門禁控制器一樣,一般工作在巡檢模式下,它不斷向感應(yīng)讀卡器發(fā)送巡檢數(shù)據(jù),并且等待獲取感應(yīng)卡內(nèi)碼數(shù)據(jù)。在這個(gè)過程中,感應(yīng)讀卡器已經(jīng)完全和門禁控制器分離,門禁控制器對它的巡檢命令完全由數(shù)據(jù)篩選器完成。只有當(dāng)數(shù)據(jù)篩選器獲取到卡信息并通過自身驗(yàn)證之后,才將數(shù)據(jù)送到門禁控制器。建立起感應(yīng)讀卡器和門禁控制器的聯(lián)系。數(shù)據(jù)篩選器進(jìn)行自身驗(yàn)證的數(shù)據(jù)源是經(jīng)可靠途徑獲取的卡片內(nèi)碼數(shù)據(jù)。“后門卡”的內(nèi)碼不可能被傳遞到數(shù)據(jù)篩選器中,從而阻止了“后門卡”的攻擊。
3.?dāng)?shù)據(jù)篩選器的硬件實(shí)現(xiàn)
根據(jù)以上思路,可使用單片機(jī)實(shí)現(xiàn)硬件電路設(shè)計(jì),硬件框圖如圖4所示。單片機(jī)的~個(gè)串口,同門禁控制器以及讀卡器進(jìn)行通訊,這個(gè)串口通過切換電路來保證在一個(gè)時(shí)間點(diǎn)上只能和兩種設(shè)備之一進(jìn)行通訊,所有傳送到門禁控制器的命令全部是經(jīng)過單片機(jī)程序確認(rèn)的合法命令,這樣就可實(shí)現(xiàn)數(shù)據(jù)的篩選和隔離。同時(shí),單片機(jī)還要通過另一個(gè)串口,監(jiān)聽門禁控制器與控制計(jì)算機(jī)之間的通訊,通過解析通訊內(nèi)容,來獲取合法的感應(yīng)卡內(nèi)碼數(shù)據(jù),并將數(shù)據(jù)存儲在一個(gè)大容量E PROM中,作為數(shù)據(jù)比對的依據(jù)。
4.?dāng)?shù)據(jù)篩選器軟件流程
串口是聯(lián)系門禁控制器和感應(yīng)讀卡器的通訊端口。在巡檢模式下,數(shù)據(jù)篩選器通過串口,模擬門禁控制器。向感應(yīng)讀卡器發(fā)送查詢命令;感應(yīng)讀卡器沒有被刷卡,發(fā)送沒有感應(yīng)卡的回復(fù)命令;數(shù)據(jù)篩選器進(jìn)行下一輪查詢。
當(dāng)感應(yīng)讀卡器有刷卡后,卡片數(shù)據(jù)會傳送到數(shù)據(jù)篩選器。數(shù)據(jù)篩選器進(jìn)入到識別模式,將卡片數(shù)據(jù)與本地存儲的標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行比對,如果數(shù)據(jù)不存在。則將數(shù)據(jù)丟棄,并回復(fù)感應(yīng)讀卡器數(shù)據(jù)已經(jīng)接收。數(shù)據(jù)篩選器返回到巡檢模式并開始下一輪查詢。
如果數(shù)據(jù)在存儲器中被找到,說明這張卡是一張合法卡,則應(yīng)該將數(shù)據(jù)發(fā)送到門禁控制器。此時(shí),設(shè)備首先進(jìn)行串口的切換,使單片機(jī)和門禁控制器進(jìn)行通訊。將從感應(yīng)讀卡器接收的數(shù)據(jù)原樣發(fā)送到門禁控制器。并等待接收門禁控制器的回復(fù);收到回復(fù)后。再次將串口切換回同感應(yīng)讀卡器進(jìn)行通訊,轉(zhuǎn)發(fā)門禁控制器的回復(fù)命令;完成數(shù)據(jù)的傳送之后,數(shù)據(jù)篩選器回到巡檢狀態(tài),進(jìn)行下一輪查詢。具體的比對流程如圖5所示。
數(shù)據(jù)篩選器通過實(shí)時(shí)監(jiān)聽門禁控制器與控制計(jì)算機(jī)之間的通訊,從中獲取合法的感應(yīng)卡內(nèi)碼數(shù)據(jù),并存儲在數(shù)據(jù)篩選器的E PROM中,作為將來進(jìn)行數(shù)據(jù)比對的依據(jù)。其工作流程如下:數(shù)據(jù)篩選器監(jiān)聽計(jì)算機(jī)發(fā)送給門禁控制器的所有命令,通過解析,獲取所有對卡片進(jìn)行增、刪、改的內(nèi)部操作命令,根據(jù)命令,相應(yīng)地將E2pROM中存儲的感應(yīng)卡內(nèi)碼數(shù)據(jù)進(jìn)行增、刪、改,保證數(shù)據(jù)篩選器內(nèi)存儲的數(shù)據(jù)與門禁控制器的合法數(shù)據(jù)保持一致。具體操作流程如圖6所示:
在現(xiàn)實(shí)中,由于門禁控制器、前端設(shè)備以及它們之間的通訊協(xié)議均由同一生產(chǎn)廠商生產(chǎn),因此可能存在“后門卡” 的安全隱患。對于特殊部門、要害部門來說,他們對安全有著特殊的要求,在使用門禁系統(tǒng)保護(hù)安全的同時(shí),也關(guān)心設(shè)備自身的安全性、可靠性。筆者在文中提出的數(shù)據(jù)篩選器構(gòu)想可以有效的防止“后門卡”對門禁系統(tǒng)的攻擊,保障門禁系統(tǒng)自身的安全。
評論