Sensor由API處理模塊 - 數(shù)據(jù)庫(kù)自主安全防護(hù)技術(shù)的研究與實(shí)現(xiàn)
?? ?Core通過(guò)攔截對(duì)API的調(diào)用來(lái)實(shí)現(xiàn)定制功能。程序在調(diào)用API函數(shù)之前,首先要把API所在的動(dòng)態(tài)鏈接庫(kù)載入到程序中;然后將API函數(shù)的參數(shù)、返回地址(也就是函數(shù)執(zhí)行完后,下一條語(yǔ)句的地址)、系統(tǒng)當(dāng)前的環(huán)境(主要是一些寄存器的值)壓入系統(tǒng)調(diào)用棧;接著,進(jìn)入到API函數(shù)的入口處開(kāi)始執(zhí)行API函數(shù),執(zhí)行過(guò)程中從系統(tǒng)調(diào)用棧中取出參數(shù),執(zhí)行函數(shù)的功能,返回值存放在EAX寄存器中,最終從堆棧中取出函數(shù)的返回值并返回(參數(shù)壓棧的順序還要受到調(diào)用約定的控制,本文不詳細(xì)介紹)。
?? ?舉例說(shuō)明函數(shù)調(diào)用時(shí)堆棧的情況。假設(shè)調(diào)用約定采用_stdcall,堆棧由高向低遞減,API為Int? func(int a, int b, int c)。系統(tǒng)調(diào)用棧的部分內(nèi)容如表1所示。
??? 攔截主要通過(guò)HOOK API技術(shù)實(shí)現(xiàn),可以攔截的操作包括DOS下的中斷、Windows中的API調(diào)用、中斷服務(wù)、IFS和NDIS過(guò)濾等。目前微軟提供了一個(gè)實(shí)現(xiàn)HOOK的函數(shù)庫(kù)Detours。其實(shí)現(xiàn)原理是:將目標(biāo)函數(shù)的前幾個(gè)字節(jié)改為jmp指令跳轉(zhuǎn)到自己的函數(shù)地址,以此接管對(duì)目標(biāo)函數(shù)的調(diào)用,并插入自己的處理代碼。
HOOK API技術(shù)的實(shí)質(zhì)是改變程序流程。在CPU的指令集中,能夠改變程序流程的指令包括JMP、CALL、INT、RET、RETF、IRET等。理論上只要改變API入口和出口的任何機(jī)器碼,都可以實(shí)現(xiàn)HOOK。但實(shí)際實(shí)現(xiàn)上要復(fù)雜得多,主要需要考慮如何處理好以下問(wèn)題:(1)CPU指令長(zhǎng)度。在32 bit系統(tǒng)中,一條JMP/CALL指令的長(zhǎng)度是5 B,因此只需要替換API中入口處的前5 B的內(nèi)容,否則會(huì)產(chǎn)生不可預(yù)料的后果。(2)參數(shù)。為了訪問(wèn)原API的參數(shù),需要通過(guò)EBP或ESP來(lái)引用參數(shù),因此需要明確HOOK代碼中此時(shí)的EBP/ESP的值。(3)時(shí)機(jī)問(wèn)題。有些HOOK必須在API的開(kāi)頭,如CreateFileA( )。有些必須在API的尾部,如RECV()。(4)程序上下文內(nèi)容的保存。在程序執(zhí)行中會(huì)涉及修改系統(tǒng)棧的內(nèi)容,因此注意保存棧中原有內(nèi)容,以便還原。(5)在HOOK代碼里盡量杜絕全局變量的使用,以降低程序之間的耦合性。通過(guò)以上的分析,整理出如圖4所示的實(shí)現(xiàn)的流程。
DSS與傳統(tǒng)數(shù)據(jù)庫(kù)的安全防護(hù)功能相比,具有以下特點(diǎn):
(1)獨(dú)立于具體的數(shù)據(jù)庫(kù)。這種獨(dú)立性體現(xiàn)在:①DSS只需要數(shù)據(jù)庫(kù)提供其接口信息即可工作。②支持不同標(biāo)準(zhǔn)的SQL語(yǔ)句,通過(guò)數(shù)據(jù)庫(kù)命令映射表可將非標(biāo)準(zhǔn)的SQL語(yǔ)句映射為系統(tǒng)設(shè)置的SQL命令。③系統(tǒng)自身數(shù)據(jù)的物理存儲(chǔ)是獨(dú)立于數(shù)據(jù)庫(kù)的。
?? ?(2)靈活性和針對(duì)性的統(tǒng)一。用戶可以根據(jù)自己的需要配置針對(duì)特定應(yīng)用的相關(guān)規(guī)則。
?? ?(3)完善的自我安全保護(hù)措施。DSS只有數(shù)據(jù)庫(kù)安全管理員和安全審計(jì)員才能訪問(wèn)。安全管理員和安全審計(jì)員是一類特殊的用戶,他們只負(fù)責(zé)安全方面的操作,而不能訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。這與Oracle等的數(shù)據(jù)庫(kù)不同,在這些數(shù)據(jù)庫(kù)中,DBA可以進(jìn)行所有的操作。DSS系統(tǒng)本身具有故障恢復(fù)能力,能使系統(tǒng)出現(xiàn)問(wèn)題時(shí)恢復(fù)到一個(gè)安全的狀態(tài)。
(4)完備的信息查閱和報(bào)警功能。在DSS中,本文提供了便利的設(shè)計(jì)查閱工具,方便用戶對(duì)系統(tǒng)進(jìn)行監(jiān)控。另外,用戶也可以自己定義報(bào)警條件和報(bào)警處理措施,一旦滿足報(bào)警條件,系統(tǒng)就會(huì)自動(dòng)地做出響應(yīng)。
3 實(shí)驗(yàn)及結(jié)果分析
DSS的開(kāi)發(fā)主要采用VS 2005實(shí)現(xiàn),開(kāi)發(fā)完成后在一臺(tái)主頻為2.8 GHz、內(nèi)存2 GB、裝有Windows 2000操作系統(tǒng)的普通 PC機(jī)上對(duì)其進(jìn)行了功能和性能的測(cè)試,使用的數(shù)據(jù)庫(kù)是開(kāi)源的嵌入式數(shù)據(jù)庫(kù)SQLite 3.6。為了搭建測(cè)試環(huán)境,需要在SQLite中添加初始化系統(tǒng)自身的數(shù)據(jù)字典,并開(kāi)發(fā)應(yīng)用程序。測(cè)試內(nèi)容包括:登錄、用戶管理、Sensor、訪問(wèn)控制、日志審計(jì)以及增加DSS前后數(shù)據(jù)庫(kù)系統(tǒng)安全性變化等功能性測(cè)試和增加DSS系統(tǒng)后對(duì)數(shù)據(jù)庫(kù)性能的影響兩方面。其中,性能測(cè)試主要從時(shí)間和資源的增加情況來(lái)說(shuō)明,針對(duì)不同數(shù)據(jù)庫(kù)對(duì)象分別在五個(gè)級(jí)別(20 000、40 000、60 000、80 000、100 000)的數(shù)據(jù)上進(jìn)行了插入和查詢操作測(cè)試。為了做好性能對(duì)比,在SQLite中也添加了相同的訪問(wèn)控制功能,記為Inline Processing。插入操作的測(cè)試結(jié)果如圖5所示,查詢操作的測(cè)試結(jié)果如圖6所示。
??? 從功能測(cè)試結(jié)果可以看出,DSS可以為數(shù)據(jù)庫(kù)系統(tǒng)提供自主防護(hù)。從性能測(cè)試的結(jié)果中看出,查詢操作和插入操作耗時(shí)相差比較大,這主要是SQLite工作方式引起的,在執(zhí)行用戶的插入操作時(shí),數(shù)據(jù)庫(kù)需將內(nèi)存中的數(shù)據(jù)寫(xiě)入磁盤(pán)數(shù)據(jù)庫(kù)文件中,占用了一部分時(shí)間。而查詢時(shí),SQLite會(huì)將數(shù)據(jù)庫(kù)文件部分內(nèi)容緩存起來(lái),加快了查詢的速度。另外,增加DSS會(huì)對(duì)性能有略微的影響,但是它能實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)系統(tǒng)自主保護(hù)。
?? ?本文針對(duì)傳統(tǒng)數(shù)據(jù)庫(kù)安全防護(hù)功能配置不靈活的問(wèn)題,提出了一種基于HOOK技術(shù)的數(shù)據(jù)庫(kù)通用安全防護(hù)系統(tǒng)。該系統(tǒng)的最大優(yōu)點(diǎn)在于,它不受數(shù)據(jù)庫(kù)自身的約束,完全獨(dú)立于數(shù)據(jù)庫(kù)系統(tǒng),為用戶提供一種按需定制的功能,不僅增加了安防配置的靈活性而且提高了通用性,可以用于不同的數(shù)據(jù)庫(kù)系統(tǒng)中。
- 第 1 頁(yè):數(shù)據(jù)庫(kù)自主安全防護(hù)技術(shù)的研究與實(shí)現(xiàn)
- 第 2 頁(yè):Sensor由API處理模塊
本文導(dǎo)航
非常好我支持^.^
(7) 100%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [編程語(yǔ)言及工具] 常用于緩存處理的機(jī)制總結(jié) 如何避免緩存雪崩問(wèn)題? 2023-10-24
- [電子說(shuō)] 觸發(fā)器的基本原理、應(yīng)用場(chǎng)景及優(yōu)缺點(diǎn) 2023-10-23
- [存儲(chǔ)技術(shù)] AI大模型對(duì)數(shù)據(jù)存儲(chǔ)技術(shù)的發(fā)展趨勢(shì) 2023-10-23
- [電子說(shuō)] 訪問(wèn)控制中PIP的典型流程和關(guān)鍵點(diǎn)思考 2023-10-23
- [電子說(shuō)] 物證管理系統(tǒng)|智物證DW-S404是一套成熟系統(tǒng) 2023-10-23
- [電子說(shuō)] Python 梯度計(jì)算模塊如何實(shí)現(xiàn)一個(gè)邏輯回歸模型 2023-10-21
- [電子說(shuō)] TinyDB :一個(gè)純Python編寫(xiě)的輕量級(jí)數(shù)據(jù)庫(kù) 2023-10-21
- [電子說(shuō)] mysql經(jīng)典面試題及答案 2023-10-20
( 發(fā)表人:小蘭 )