999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

擬態(tài)數(shù)據(jù)庫的網(wǎng)絡(luò)攻擊抵御能力評估和實(shí)證

2022-01-28 03:01:06萬仕賢吳承榮
計算機(jī)應(yīng)用與軟件 2022年1期
關(guān)鍵詞:數(shù)據(jù)庫系統(tǒng)

萬仕賢 趙 瑜 吳承榮

(復(fù)旦大學(xué)網(wǎng)絡(luò)信息安全審計與監(jiān)控教育部工程研究中心 上海 200433)

0 引 言

在傳統(tǒng)信息安全漏洞中,漏洞產(chǎn)生的本質(zhì)原因來自于產(chǎn)品實(shí)現(xiàn)的缺陷[1]。通過理論安全證明的產(chǎn)品在具體產(chǎn)品實(shí)現(xiàn)的過程中也會因?yàn)殚_發(fā)者實(shí)現(xiàn)的差異導(dǎo)致不可預(yù)計的后果。在2014年,OpenSSL 1.0.1版本爆出漏洞“心臟滴血”(CVE-2014-0160)[2],攻擊者可以通過構(gòu)造特殊的網(wǎng)絡(luò)請求包,從服務(wù)器內(nèi)存讀取多達(dá)64 KB的數(shù)據(jù)。SSL協(xié)議的理論安全性已經(jīng)獲得行業(yè)內(nèi)的普遍認(rèn)可,但由于開發(fā)人員在具體實(shí)現(xiàn)時考慮不周全,并不能完全保證產(chǎn)品的安全性,因此在現(xiàn)實(shí)中存在漏洞或缺陷是不可避免的。傳統(tǒng)的網(wǎng)絡(luò)空間安全體系中更多的是基于威脅特征感知的精確防御[3]。含有高風(fēng)險漏洞的軟件安全并不是建立在軟件自身的內(nèi)生安全上,軟件安全更多地取決于外在的攻擊者及內(nèi)部防守者所掌握的可利用信息。攻擊方和防守方處于一種信息不對等的環(huán)境中,防守方并不能檢測出應(yīng)用系統(tǒng)中所有的漏洞,只能力求在攻擊方攻擊完成以后盡可能快地修復(fù)受損系統(tǒng),以減少受攻擊而帶來的損失。

1 研究現(xiàn)狀

國外針對主動防御技術(shù)近年來應(yīng)用研究成果之一稱為移動目標(biāo)防御技術(shù)(Moving target denfense,MTD)。MTD技術(shù)主要包括在三個方面的動態(tài)化,包括網(wǎng)絡(luò)層、軟件應(yīng)用層和設(shè)計架構(gòu)層[4]。在MTD Workshop[4]中有提到新的MTD防御思想也正在和許多新的技術(shù)相融合,例如MTD與深度學(xué)習(xí)及一些新數(shù)學(xué)模型的結(jié)合;MTD技術(shù)與傳統(tǒng)通信網(wǎng)絡(luò)相結(jié)合形成的NMTD(Network Moving Target Defense)[5]也為提供通信安全作出了巨大貢獻(xiàn)。MTD技術(shù)正在不斷將其應(yīng)用從學(xué)術(shù)界拓展到工業(yè)界。

隨著基于動態(tài)異構(gòu)冗余體系(Dynamic Het-erogeneous Redundancy,DHR)[6]的發(fā)展,關(guān)于擬態(tài)Web服務(wù)器的整體設(shè)計[1]最早被提出。擬態(tài)Web服務(wù)器中包含了保護(hù)底層數(shù)據(jù)庫的“數(shù)據(jù)庫防御模塊”,該模塊帶有明顯的擬態(tài)數(shù)據(jù)庫的防御特征。隨后,基于動態(tài)異構(gòu)冗余架構(gòu)的路由器防御體系被提出[7],以及關(guān)于擬態(tài)數(shù)據(jù)庫[8]的具體設(shè)計方法被提出,同時針對數(shù)據(jù)庫的同步及表決器表決方法的設(shè)計也有多項(xiàng)經(jīng)典方法被提出。

針對數(shù)據(jù)庫擬態(tài)化應(yīng)用的需要,文獻(xiàn)[8]給出了基于異構(gòu)冗余的擬態(tài)數(shù)據(jù)庫的總體設(shè)計并針對性地給出了防御性能測試,利用異構(gòu)處理方法,將同構(gòu)的SQL操作語句分別異構(gòu)化處理并加以裁決,有效地防御了許多系統(tǒng)設(shè)計不足所帶來的潛在攻擊,使整個數(shù)據(jù)庫系統(tǒng)具有內(nèi)生的安全性,在設(shè)計上完整還原了擬態(tài)防御體系原理。

文獻(xiàn)[9]提出了一種基于大數(shù)表決的數(shù)據(jù)庫離線表決與同步的實(shí)現(xiàn)方案DBOLVS。相較于傳統(tǒng)數(shù)據(jù)庫同步問題,擬態(tài)數(shù)據(jù)庫的子數(shù)據(jù)庫之間是相互對等的關(guān)系,同步方法需要依據(jù)“少數(shù)服從多數(shù)”的原則,根據(jù)所有的子數(shù)據(jù)庫狀態(tài)來同步整體擬態(tài)數(shù)據(jù)庫的狀態(tài)。該方法完善了擬態(tài)數(shù)據(jù)庫服務(wù)的離線數(shù)據(jù)庫表決和同步服務(wù),同時針對一些特定的數(shù)據(jù)庫可以有效屏蔽惡意操作對數(shù)據(jù)庫產(chǎn)生的影響。

文獻(xiàn)[10]在經(jīng)典的基于編輯距離的字符串相似度計算法計算方法之上,提出了一種應(yīng)用于擬態(tài)Web服務(wù)器的基于編輯距離和最長公共子串的相似度求解方法。該方法引入了最長公共子串長度,根據(jù)網(wǎng)頁字符串的特點(diǎn)和惡意的網(wǎng)頁篡改行為重新定義新的相似度計算公式;利用改進(jìn)的雙向跨越比較方法求解最長公共子串。這兩種改進(jìn)策略優(yōu)化了傳統(tǒng)字符串比較方法的時間復(fù)雜度,針對擬態(tài)Web服務(wù)器異構(gòu)多變的特性,使得計算相似度結(jié)果也更加準(zhǔn)確,降低了系統(tǒng)對于正常返回信息的誤判率。但該方法未考慮擬態(tài)防御過程中防御系統(tǒng)為了整體擬態(tài)化的需要可能會修改網(wǎng)頁字符串并導(dǎo)致相似度計算結(jié)果出現(xiàn)差異的問題。

文獻(xiàn)[11]基于文獻(xiàn)[10]的相似度計算方法,提出了一種改進(jìn)的適用于擬態(tài)服務(wù)器響應(yīng)判決的相似度計算方法,針對利用擬態(tài)服務(wù)器進(jìn)行有效擬態(tài)防御時在一定程度上也會影響響應(yīng)輸出的問題,提出了一種利用網(wǎng)頁DOM響應(yīng)樹的判決方法。該方法通過讀取網(wǎng)頁的動態(tài)DOM結(jié)構(gòu)信息,遞歸處理每個DOM樹節(jié)點(diǎn)的字符串計算編輯距離,根據(jù)設(shè)置的響應(yīng)閾值K2、K3來對響應(yīng)信息的合法性進(jìn)行裁決,最終得出合法的響應(yīng)輸出。該方法在響應(yīng)速度和判決精準(zhǔn)度方面相對于傳統(tǒng)基于字符的判決方法都有了顯著的提升。

2 擬態(tài)數(shù)據(jù)庫

2.1 擬態(tài)數(shù)據(jù)庫模型設(shè)計

由文獻(xiàn)[8]可知,擬態(tài)數(shù)據(jù)庫在設(shè)計上由三個主要模塊組成,分別為保留字?jǐn)M態(tài)化模塊、指紋過濾模塊和擬態(tài)中間件模塊,如圖1所示。

圖1 擬態(tài)數(shù)據(jù)庫設(shè)計

2.2 擬態(tài)數(shù)據(jù)庫模塊分析

擬態(tài)數(shù)據(jù)庫設(shè)計架構(gòu)在整體上主要分為兩個部分,一是針對SQL操作指令進(jìn)行預(yù)處理的保留字?jǐn)M態(tài)化模塊和指紋過濾模塊;二是用于對輸出信息進(jìn)行裁決的表決器模塊。

2.2.1保留字?jǐn)M態(tài)化模塊和去指紋化模塊

在該模塊中,針對傳統(tǒng)的數(shù)據(jù)庫入侵方法,對執(zhí)行指令進(jìn)行指紋化預(yù)處理,在指令還未執(zhí)行前,提前過濾掉帶有攻擊意圖的指令,系統(tǒng)結(jié)構(gòu)如圖2[8]所示。

圖2 指令預(yù)處理

由圖2可知,對SQL保留字進(jìn)行指紋擬態(tài)化處理,再通過對帶有指紋特征的保留字進(jìn)行表決,可以在一定程度上抵御傳統(tǒng)的SQL注入攻擊。當(dāng)攻擊者未獲得擬態(tài)化模塊指紋特征時,從客戶端向目標(biāo)系統(tǒng)發(fā)送傳統(tǒng)惡意注入攻擊,在經(jīng)過擬態(tài)指紋特征處理以后,該攻擊語句不帶有系統(tǒng)規(guī)定的指紋特征,被表決器否決。擬態(tài)防御的攻擊任務(wù)成功概率計算公式[6]為:

(1)

式中:qvuli為攻擊者利用vuli異構(gòu)體漏洞完成攻擊的成功率。在異構(gòu)環(huán)境足夠復(fù)雜的情況下,攻擊者要掌握足夠多的指紋特征來完成攻擊的難度是足夠困難的。受不同的異構(gòu)體的影響,越是對環(huán)境依賴度高的攻擊越容易被擬態(tài)防御系統(tǒng)所防御[9]。攻擊者精心構(gòu)造符合采集信息特征的SQL攻擊語句,該語句通過特征處理后加上特征指紋,但其特征與對應(yīng)的執(zhí)行體的指紋特征不相符,因此該執(zhí)行語句仍會被表決器否決,不會向下層執(zhí)行模塊傳遞。

2.2.2表決器模塊

表決器模塊在系統(tǒng)中用于裁決SQL執(zhí)行語句和最終的返回數(shù)據(jù),其表決效果將影響SQL數(shù)據(jù)庫的安全和網(wǎng)站的數(shù)據(jù)安全。系統(tǒng)接受來自n個執(zhí)行體的異構(gòu)語句,通過集中表決的形式,依照“少數(shù)服從多數(shù)”的原則,從多個處理結(jié)果中得到歸一化的輸出結(jié)果,并將結(jié)果交付給數(shù)據(jù)庫執(zhí)行,數(shù)據(jù)庫將執(zhí)行結(jié)果返回給表決器,表決器將多數(shù)據(jù)庫應(yīng)用的返回結(jié)果歸一化表決,最后將表決結(jié)果發(fā)送給客戶端進(jìn)行展示。

3 攻擊實(shí)驗(yàn)思路設(shè)計

DHR理論體系是防御評估系統(tǒng)設(shè)計的基礎(chǔ),在設(shè)計上充分利用了動態(tài)性、隨機(jī)性、多樣性等防御機(jī)制,基于“相對正確”公理,采用異構(gòu)冗余架構(gòu)來搭建在不可信環(huán)境下對未知攻擊的防御。其安全性可由不同層次的安全產(chǎn)品和安全應(yīng)用相互之間的異構(gòu)來保證。由此本文分析得出DHR系統(tǒng)架構(gòu)的安全目的是在每個單獨(dú)的執(zhí)行體自身有漏洞或后門,甚至存在一定的“共謀漏洞”的情況下,實(shí)現(xiàn)針對“未知漏洞”和“未知攻擊”的防御,甚至這些“未知攻擊”的方法和原理對于防御者也是未知的。同理,具體到擬態(tài)數(shù)據(jù)庫中,假定在實(shí)際應(yīng)用中“指紋過濾模塊”也并不能識別和過濾所有的攻擊,無論是對防御者已知的攻擊或者未知的攻擊,仍存在無法完全可知的操作可以到達(dá)數(shù)據(jù)庫服務(wù),并對數(shù)據(jù)庫服務(wù)產(chǎn)生不可估計的影響。所以在這個假定的基礎(chǔ)上,本文將主要討論底層數(shù)據(jù)庫服務(wù)集群和后向的輸出部分,重點(diǎn)分析削弱其安全性的可能性。

本文分析得出任何從理論上論證安全的機(jī)制并不能完全避免具體實(shí)現(xiàn)上的漏洞和缺陷,DHR架構(gòu)的輸入代理、裁決、調(diào)度等功能的實(shí)現(xiàn)也是基于具體的產(chǎn)品和應(yīng)用實(shí)現(xiàn),這些具體應(yīng)用的漏洞威脅將會被放大至針對整個DHR系統(tǒng)的威脅,依然存在會被攻擊者攻破系統(tǒng)的可能。

假設(shè)在理論設(shè)計方面,DHR系統(tǒng)自身在現(xiàn)理論上是不存在可以利用的漏洞,在此基礎(chǔ)上尋找反制DHR框架可能存在的方法。DHR的核心思路是異構(gòu)冗余從“相對正確”公理出發(fā),其前提假設(shè)如下[6]:(1)功能F存在n個功能等價的處理空間,且處理空間之間是異構(gòu)的;(2)問題W存在n個解決算法,且算法間不相同,但解算結(jié)果應(yīng)當(dāng)是一致的;(3)每個處理空間都包含一種算法且得到正確結(jié)果是大概率事件;(4)所有算法都有完全相同的輸入激勵;(5)對各空間算法的輸出向量要做擇多判斷,并以多數(shù)相同的輸出結(jié)果作為正常狀態(tài)的判據(jù)。

在理論條件下這些假設(shè)有效地保證了DHR系統(tǒng)的安全性;而在具體應(yīng)用環(huán)境中,由于系統(tǒng)安全是由具體的安全設(shè)計和服務(wù)來保證的,針對具體應(yīng)用服務(wù)的針對性的滲透攻擊將有效地削弱理論假設(shè)的強(qiáng)度,從而降低DHR系統(tǒng)的現(xiàn)實(shí)安全性。

3.1 指令擬態(tài)化處理分析

本文由擬態(tài)數(shù)據(jù)庫理論設(shè)計分析得知,指紋擬態(tài)化模塊主要完成的功能是對數(shù)據(jù)庫中預(yù)存的保留字添加動態(tài)字符指紋。當(dāng)接收到用戶發(fā)來的請求時,由于攻擊者無法提前預(yù)知并構(gòu)造隨機(jī)指紋,并且多個異構(gòu)冗余體的字符串指紋在滿足不相同的情況下,無法由一條命令同時滿足多個異構(gòu)體的指紋判定,所以攻擊者的惡意指令在到達(dá)異構(gòu)體時不會帶有與異構(gòu)體相匹配的指紋序列,將會被前向表決器否決,其效果不會被后向的數(shù)據(jù)庫所執(zhí)行。

以上是異構(gòu)指紋模塊設(shè)計所要達(dá)到的理論預(yù)期,本文根據(jù)實(shí)際情況給出兩點(diǎn)針對性的分析:(1)關(guān)鍵字本質(zhì)上是一串被數(shù)據(jù)庫賦予特定含義的字符,雖然根據(jù)擬態(tài)數(shù)據(jù)庫安全需要被加上了動態(tài)變化的指紋信息來加以保護(hù),但由于數(shù)據(jù)庫解釋器的多樣性,由原生關(guān)鍵字字符經(jīng)過多種變化組合之后的字符串仍然可以被解釋器有效識別。例如使用大小寫混寫的方式字符“SElecT”在大多數(shù)的數(shù)據(jù)庫應(yīng)用中被等效識別為“select”關(guān)鍵字;在PHP和MySQL的Web組合應(yīng)用中,傳遞字符“/*!%53eLEct*/”也是等效于“select”關(guān)鍵字。同樣地,在數(shù)據(jù)庫應(yīng)用中有可以達(dá)到相同功能的等效替換關(guān)鍵字,例如“l(fā)ike”和“rlike”在模糊查找中就可以完成同樣的功能。這些復(fù)雜的情況都將增加指紋異構(gòu)的復(fù)雜程度,所以必須要對關(guān)鍵字的異構(gòu)指紋進(jìn)行處理而非窮盡所有可被數(shù)據(jù)庫解釋識別的字符串組合。這些變化的字符串在經(jīng)過異構(gòu)指紋模塊時并不會被當(dāng)作關(guān)鍵字進(jìn)行指紋判定和處理,但當(dāng)數(shù)據(jù)庫被執(zhí)行時卻可能產(chǎn)生危害效果。(2)對關(guān)鍵字的異構(gòu)指紋處理會限制影響正常用戶的正常輸入和存儲。因?yàn)閿?shù)據(jù)庫中大多數(shù)關(guān)鍵字是與人類語言語義相吻合的,所以大量的指紋關(guān)鍵字異構(gòu)處理必然會導(dǎo)致用戶的正常日常行為被限制。例如用戶的輸入中將不能帶有“where”“from”這類日常生活普遍使用的字符,這將給用戶的系統(tǒng)體驗(yàn)帶來極大的不便,影響業(yè)務(wù)正常邏輯。

綜上所述,本文指出指紋過濾模塊并不能過濾所有的潛在攻擊,仍存在有特性構(gòu)造可以繞過指紋過濾模塊到達(dá)數(shù)據(jù)庫應(yīng)用并被執(zhí)行。經(jīng)過理論分析,前向的指紋異構(gòu)模塊對經(jīng)過多樣性變化的字符串安全性已被有效降低,隨后的設(shè)計將基于此分析重點(diǎn)假定某個攻擊的payload通過了指紋過濾模塊并進(jìn)入數(shù)據(jù)庫,那么由多個異構(gòu)的數(shù)據(jù)庫構(gòu)成的DHR系統(tǒng)能否顯著提高防御能力的問題。

3.2 數(shù)據(jù)庫語法的差異性

SQL數(shù)據(jù)庫都是基于SQL理論體系設(shè)計的,大部分的數(shù)據(jù)庫系統(tǒng)遵循一套相同的操作語言體系。例如在數(shù)據(jù)庫應(yīng)用中查詢語句大都是采用以下模式進(jìn)行查詢操作:

“SELECT column_name,column_name

FROM

table_name

[WHERE Clause]

[LIMIT N][ OFFSET M]”

而更新操作又以以下模式完成對數(shù)據(jù)的更新:

“UPDATE table_name

SET field1=new-value1,field2=new-value2

[WHERE Clause]”

在符號SQL語句邏輯框架的基礎(chǔ)上,每個數(shù)據(jù)庫服務(wù)又根據(jù)自己的解釋器特性相應(yīng)地具有自己語言體系的特點(diǎn),針對相同的字符符號或者函數(shù)調(diào)用,在不同的數(shù)據(jù)庫應(yīng)用服務(wù)中可能會出現(xiàn)截然不同的反饋。本文發(fā)現(xiàn)這種數(shù)據(jù)庫服務(wù)之間的區(qū)別性處理雖然不是一種漏洞服務(wù),但卻可以被攻擊者利用,從正常的服務(wù)邏輯來完成非預(yù)期攻擊。例如在MySQL數(shù)據(jù)庫中對字母大小寫是非敏感識別的,字符a與字符A被識別相等,但在PostgreSQL數(shù)據(jù)庫中字符a和字符A被判定為不同。利用不同數(shù)據(jù)庫之間語法的特異性可以改造針對表決器輸出的攻擊向量。如下列舉出一些不同數(shù)據(jù)庫間可供攻擊使用的差異處理:

(1)“#”和“--”(末尾有空格)在MySQL中被當(dāng)作注釋符號處理,在PostgreSQL和SQLite3中使用“--”作為注釋符號。

(2)在MySQL和SQLite3中大小寫符號非敏感處理,在PostgreSQL中對大小寫敏感。

(3)在MySQL中可以使用database.table或者table的方法來表示所選擇的數(shù)據(jù)表,在SQLite3和PostgreSQL中僅能通過table的方式來表示數(shù)據(jù)表。

(4)某些函數(shù)調(diào)用不能在不同數(shù)據(jù)庫間執(zhí)行,例如“ifnull”方法支持MySQL數(shù)據(jù)庫和SQLite3數(shù)據(jù)庫,但不支持PostgreSQL數(shù)據(jù)庫。

因此,本文發(fā)現(xiàn)可以利用這種不同數(shù)據(jù)庫間的處理的差異性,使用不同數(shù)據(jù)庫之間的錯誤處理的區(qū)別性來構(gòu)造輸出內(nèi)容的相同性,以此來繞過表決器的相似性表決。

3.3 共有漏洞以及共謀攻擊

根據(jù)對DHR系統(tǒng)的詳細(xì)分析,本文發(fā)現(xiàn)當(dāng)貌似完全異構(gòu)的執(zhí)行體,實(shí)際上具有相同的漏洞,而在某些外界因素的作用下,使得具有相同漏洞的異構(gòu)執(zhí)行體被部署到DHR框架中。這種情況下,針對該漏洞的攻擊將形成多個執(zhí)行體被同時攻破,可能形成相同的輸出。DHR的防御效果取決于相同漏洞/相似漏洞存在的概率,以及關(guān)于該漏洞的l階輸出一致性[6]。

類比到在現(xiàn)實(shí)軟件設(shè)計中,不同開發(fā)團(tuán)隊(duì)所設(shè)計的異構(gòu)系統(tǒng)具有軟件共有故障或者軟件共有漏洞的概率是極低的。由于應(yīng)用服務(wù)體的異構(gòu)化,導(dǎo)致軟件應(yīng)用服務(wù)多種多樣,雖然可能存在理論上一致的漏洞,例如存在緩沖區(qū)溢出、內(nèi)存泄露等問題,但在不同的軟件應(yīng)用中對應(yīng)的內(nèi)存地址是不相同的,會使得同一攻擊并不能在多個異構(gòu)體中發(fā)揮作用。

對于通常意義上的軟件,不同的開發(fā)團(tuán)隊(duì)若同時開發(fā)實(shí)現(xiàn)某個等價功能的異構(gòu)體,事先若不進(jìn)行“同謀”,形成相同漏洞的可能性極低。而當(dāng)前普遍采用的3層結(jié)構(gòu)開發(fā)的業(yè)務(wù)程序不同,不同開發(fā)團(tuán)隊(duì)即使在不共謀的情況下,也很容易達(dá)到“相同漏洞”或“相似漏洞”的效果。(1)中間件大都采用字符腳本方式,腳本相比二進(jìn)制程序?qū)艟哂懈蟮摹皩捜荨碧匦裕l(fā)起攻擊并不一定需要精確知曉某個內(nèi)存地址。不同執(zhí)行在運(yùn)行時的內(nèi)部微觀差異性對攻擊成功概率的影響不敏感。(2)普遍采用的Web-應(yīng)用-數(shù)據(jù)庫的三層結(jié)構(gòu)編程模式,使得最后生成數(shù)據(jù)庫查詢的語句通常由應(yīng)用服務(wù)器程序中的固定部分和由頁面輸入的動態(tài)部分拼接而成并解釋執(zhí)行,這種方式必然會存在腳本語句在解釋環(huán)節(jié)的內(nèi)容字段和操作原語字段的混淆,產(chǎn)生漏洞的本質(zhì)原因是相通的。(3)基本上所有的數(shù)據(jù)庫都遵循SQL語句標(biāo)準(zhǔn)和應(yīng)用習(xí)慣,所以異構(gòu)的數(shù)據(jù)庫的保留字高度重合(如“select”“where”)。數(shù)據(jù)查詢語句是跨數(shù)據(jù)庫通用的(如果數(shù)據(jù)庫表設(shè)計一致的話),所以無論如何觸發(fā)漏洞,只要達(dá)到某條語句被執(zhí)行的目的,這個語句在不同數(shù)據(jù)庫上執(zhí)行的結(jié)果理應(yīng)相同,因此天生就具備漏洞被利用后輸出相同結(jié)果的“潛力”。(4)基本上所有數(shù)據(jù)庫均有定義分隔符、注釋符、轉(zhuǎn)義符,并且不同數(shù)據(jù)庫中對這些符號的定義高度相似,如“‘”被大多數(shù)數(shù)據(jù)庫作為分隔符,而“#”被大多數(shù)數(shù)據(jù)庫作為注釋符,而分隔符、注釋符在諸如SQL注入攻擊中具有至關(guān)重要的意義,這將導(dǎo)致存在通用的漏洞觸發(fā)方法的可能。同時針對字符大小寫的敏感性問題也將成為誘發(fā)攻擊的一個潛在威脅,有很大可能導(dǎo)致針對某個數(shù)據(jù)庫奏效的攻擊串,對另外一個數(shù)據(jù)庫也能奏效。即使沒有“共謀”,依然可能具備較高概率的“漏洞輸出一致性”。

3.4 輸入觸發(fā)漏洞并控制輸出

本文假定針對輸出表決器,攻擊者執(zhí)行以獲取“敏感數(shù)據(jù)信息”為目的的攻擊。在原本的防御系統(tǒng)設(shè)計中,通過注入攻擊向量,不同異構(gòu)體執(zhí)行向量以后將會導(dǎo)致異常輸出,由此被多模表決機(jī)制所否決,不會被輸出。在正常邏輯應(yīng)用中,異構(gòu)執(zhí)行體在執(zhí)行相同輸入激勵的情況下,返回輸出也會有細(xì)微差異,但由于表決器大多代用語義判定的方法,在可預(yù)見的差異范圍內(nèi)返回結(jié)果的可變范圍是可控的。但這同時也可以為攻擊注入提供可能,多模表決機(jī)制下,輸出內(nèi)容的判定是相對的,基于“相對正確”公理,“多數(shù)輸出”被看作相對正確的輸出由此否決“少數(shù)輸出”,在控制惡意輸出的數(shù)量達(dá)到壓制正確輸出的情況下,就可以讓惡意輸出從多模表決機(jī)制下實(shí)現(xiàn)逃逸。

基于上述理論分析,本文構(gòu)造“同一輸入觸發(fā)多個漏洞”假設(shè),考慮以下場景:

(1)假定由3個異構(gòu)等價數(shù)據(jù)庫執(zhí)行體構(gòu)成異構(gòu)防御系統(tǒng),且相互獨(dú)立地執(zhí)行數(shù)據(jù)庫請求指令,并將執(zhí)行結(jié)果統(tǒng)一返回給輸出表決器,輸出表決器采用多模表決原則進(jìn)行表決。

(2)等價執(zhí)行體實(shí)現(xiàn)的是一個基于Web的數(shù)據(jù)庫查詢操作,輸出的是一個HTTP請求“http://example.dhr.com/input/xxx.jsp?var=query_parameter”,其中var是用戶的待查詢參數(shù),這個參數(shù)將用于生成具體的數(shù)據(jù)庫查詢指令。

(3)3個等價執(zhí)行體中分別維護(hù)3個不同的數(shù)據(jù)庫應(yīng)用服務(wù),每個數(shù)據(jù)庫服務(wù)都至少與其他2個數(shù)據(jù)庫服務(wù)存在一個產(chǎn)品實(shí)現(xiàn)上的差異或者漏洞。分別將3個數(shù)據(jù)庫服務(wù)可被利用的缺陷命名為vul1、vul2、vul3。

(4)攻擊者精心構(gòu)造一個Web請求,該Web請求將作為3個異構(gòu)等價執(zhí)行體中數(shù)據(jù)庫服務(wù)的執(zhí)行指令。

(5)數(shù)據(jù)庫應(yīng)用1中的vul1和數(shù)據(jù)庫應(yīng)用2中的vul2被同時觸發(fā),生成返回信息;等價執(zhí)行體3中由于執(zhí)行錯誤,生成消息為空。

(6)假設(shè)攻擊者精心設(shè)計的攻擊代碼可以精確控制輸出,使得數(shù)據(jù)庫應(yīng)用1和數(shù)據(jù)庫應(yīng)用2形成相同的輸出,例如提前存儲的用戶信息或者管理員信息。

(7)多模裁決機(jī)制采用擇多判決的原則,正常的執(zhí)行體由于輸出表決處于少數(shù)派,將被清洗,被攻擊執(zhí)行體的惡意輸出占據(jù)多數(shù)派,將被輸出。

以上例子僅針對HTTP請求中的URL請求參數(shù)進(jìn)行構(gòu)造針對數(shù)據(jù)庫應(yīng)用服務(wù)的攻擊。在完成“同一輸入觸發(fā)多個漏洞”的情況下,即使多個異構(gòu)體之間獨(dú)立完成請求操作仍不能降低“1階輸出一致性”的概率。被攻擊的異構(gòu)執(zhí)行體在輸出表決中占優(yōu)勢地位,將導(dǎo)致正確的異構(gòu)體被清洗,針對新被換入的等價執(zhí)行體,將重復(fù)舊執(zhí)行體的操作,最后達(dá)到完全惡意化輸出表決的目的。

4 評估場景設(shè)定

從擬態(tài)數(shù)據(jù)庫的理論設(shè)計方案中分析得出,表決器的表決結(jié)果將會直接影響底層數(shù)據(jù)庫的執(zhí)行和客戶端返回結(jié)果。前向表決器的輸入數(shù)據(jù)來自各執(zhí)行體異構(gòu)處理的返回語句,其異構(gòu)處理的方式由擬態(tài)化模塊和指紋化模塊決定;后向表決器用于對服務(wù)器返回數(shù)據(jù)結(jié)果進(jìn)行判定,其輸入數(shù)據(jù)來自于底層各提供服務(wù)器的數(shù)據(jù)庫的指令執(zhí)行結(jié)果,輸入數(shù)據(jù)的內(nèi)容直接決定于底層各類型的數(shù)據(jù)庫。據(jù)分析當(dāng)前應(yīng)用環(huán)境下,SQL數(shù)據(jù)庫種類繁多,不同的數(shù)據(jù)庫采用不同的數(shù)據(jù)結(jié)構(gòu)來組織和搭建自己的存儲體系,其執(zhí)行指令均以SQL理論為依據(jù),但不同的數(shù)據(jù)庫產(chǎn)品的執(zhí)行語句之間還是存在差異,相同的語句在不同的數(shù)據(jù)庫產(chǎn)品之間會執(zhí)行不同的操作。

前向的異構(gòu)指紋模塊的測試工作在文獻(xiàn)[7]中已經(jīng)給出比較詳細(xì)的分析,且在上文的反制分析部分已經(jīng)從理論上分析得出降低異構(gòu)指紋模塊安全性的思路,可為后向的表決器攻擊提供繞過基礎(chǔ),所以本文重點(diǎn)將防御評估對象放在后向輸出部分,并在語義分析相似度判決的基礎(chǔ)上使用條件更為苛刻的完全內(nèi)容比較方式,異構(gòu)執(zhí)行體間的輸出將完全按照內(nèi)容比對的方向進(jìn)行輸出裁決,依據(jù)“黑盒測試”原理,若統(tǒng)一將表決器看作程序黑盒,輸入固定的情況下在經(jīng)過表決器裁決以后一定且僅能有唯一恒定輸出。據(jù)此為了簡化評估模型,作如下規(guī)定:

(1)統(tǒng)一將表決器看作程序黑盒,表決器的表決算法和相似度求解方法不會動態(tài)影響表決結(jié)果。

(2)表決器輸出結(jié)果影響因素唯一取決于輸入數(shù)據(jù)。

(3)評估實(shí)驗(yàn)僅針對數(shù)據(jù)庫查詢操作進(jìn)行評估,攻擊向量不涉及修改數(shù)據(jù)庫數(shù)據(jù),即不觸發(fā)擬態(tài)數(shù)據(jù)庫的同步機(jī)制[13]。

(4)在基于歸一化表決的原則下,所有數(shù)據(jù)庫都執(zhí)行相同的操作執(zhí)行。

(5)為了簡化實(shí)驗(yàn)操作,在給出降低安全性操作的理論分析上,此時的評估實(shí)驗(yàn)暫時不考慮指紋異構(gòu)模塊的安全防御效果。

4.1 防御系統(tǒng)抽象設(shè)計

針對評估重心和擬態(tài)數(shù)據(jù)庫的設(shè)計方案,設(shè)計如圖3所示的評估系統(tǒng)用于安全系統(tǒng)評估。

圖3 防御評估系統(tǒng)設(shè)計

該評估系統(tǒng)主要模塊功能如下:

(1)消息轉(zhuǎn)發(fā)模塊。消息轉(zhuǎn)發(fā)模塊作為整個系統(tǒng)的起點(diǎn),首先會接收來自客戶端的HTTP請求,將用戶的請求信息抽離并重新整理以后分別復(fù)制發(fā)往不同的應(yīng)用數(shù)據(jù)庫。

(2)底層數(shù)據(jù)庫群模塊。根據(jù)擬態(tài)化設(shè)計要求,選擇不同的應(yīng)用數(shù)據(jù)庫為用戶請求提供服務(wù),底層數(shù)據(jù)庫群使用同一執(zhí)行指令完成操作并將各操作結(jié)果獨(dú)立地返回給表決器以供裁決。

(3)表決器模塊。表決器模塊接收數(shù)據(jù)庫應(yīng)用的返回結(jié)果,通過歸一化數(shù)據(jù)以后,裁決出唯一表決結(jié)果,并將結(jié)果返回給客戶端展示。

4.2 服務(wù)應(yīng)用選擇

服務(wù)應(yīng)用如表1所示。

表1 應(yīng)用服務(wù)選擇

4.3 系統(tǒng)流程分析

前端服務(wù)器提供一個待查詢頁面,頁面中為用戶提供一個待查信息交互框,用戶將請求填寫在交互框之后,通過交互最終會將操作結(jié)果返回該頁面。用戶請求從客戶端Chrome瀏覽器發(fā)出,轉(zhuǎn)發(fā)代理件在接收到用戶請求以后對請求做安全性分析過濾掉危險操作,然后將通過安全性判定的請求分別復(fù)制轉(zhuǎn)發(fā)底層的應(yīng)用數(shù)據(jù)庫。三組不同的應(yīng)用數(shù)據(jù)庫MySQL、PostgreSQL、SQLite3在接收到操作請求以后,會分別執(zhí)行指令操作然后將執(zhí)行結(jié)果返回給表決器。表決器通過黑盒處理,判決出最終返回結(jié)果并將結(jié)果返回給用戶瀏覽器顯示。整個程序設(shè)計的偽碼算法如下:

輸入:客戶端請求參數(shù)nativeRequest。

begin

if get client requests

//對用戶請求進(jìn)行安全性檢查和處理返回processedRequests

processedRequests=check_input(nativeRequest);

//分別將處理完的請求processedRequests轉(zhuǎn)發(fā)給數(shù)據(jù)庫應(yīng)用

//容器container1、container2、container3

//數(shù)據(jù)庫應(yīng)用操作返回信息為response

response1=send_to_container1(processedRequests);

response2=send_to_container2(processedRequests);

response3=send_to_container3(processedRequests);

//使用表決器對不同數(shù)據(jù)庫應(yīng)用返回的信息進(jìn)行裁決

//生成最終的client端返回信息

clientText=judge(response1,response2,response3);

//將信息發(fā)送client端

send_to_client(clientText);

send

end if

end

5 實(shí) 驗(yàn)

5.1 預(yù)存儲數(shù)據(jù)

三組數(shù)據(jù)庫中的數(shù)據(jù)庫信息及數(shù)據(jù)庫中的表信息、列信息均保持一致,用戶正常信息存儲在student表中,而敏感信息存儲在admin_test表中,判定注入成功的標(biāo)志是輸出admin_test表中的敏感信息。表2為admin_test表和student表中預(yù)存儲的信息。

表2 預(yù)存儲數(shù)據(jù)

5.2 攻擊實(shí)驗(yàn)設(shè)計

SQL注入漏洞均是從與后端數(shù)據(jù)庫進(jìn)行交互的地方觸發(fā),針對后端異構(gòu)的數(shù)據(jù)庫群,分別搭建三組和待測防御系統(tǒng)相同的數(shù)據(jù)庫應(yīng)用,先構(gòu)造針對單一數(shù)據(jù)庫的攻擊向量,然后在三組數(shù)據(jù)庫的單一攻擊向量的基礎(chǔ)上再修改出可針對三組數(shù)據(jù)庫的共性攻擊向量,以達(dá)成可通過表決器輸出的目的。

(1)在單獨(dú)實(shí)驗(yàn)系統(tǒng)中,先后使用SQLMAP、POSTMAN等注入工具分別向MySQL、PostgreSQL、SQLite3三組數(shù)據(jù)庫應(yīng)用進(jìn)行注入攻擊,尋找可供使用的針對三種不同數(shù)據(jù)庫的攻擊向量。

(2)在防御系統(tǒng)中,分別使用上述確定的攻擊向量向防御系統(tǒng)發(fā)出請求,觀察不同數(shù)據(jù)庫的響應(yīng),觀測表決器輸出。

(3)在防御系統(tǒng)中,使用組合攻擊向量向防御系統(tǒng)發(fā)出請求,以尋找不同數(shù)據(jù)庫之間共有的漏洞為切入點(diǎn),嘗試通過以相同的攻擊漏洞來引發(fā)不同數(shù)據(jù)庫的同內(nèi)容輸出,最后繞過表決器的內(nèi)容表決,將敏感信息輸出到客戶端網(wǎng)頁。

5.3 評估流程

1)在單獨(dú)實(shí)驗(yàn)環(huán)境中,針對三種防御較弱的數(shù)據(jù)庫應(yīng)用,基于聯(lián)合查詢的漏洞及不同數(shù)據(jù)庫對特殊字符處理的漏洞,可較為容易地構(gòu)造出針對三種不同數(shù)據(jù)庫的攻擊向量,將三組攻擊向量分別命名為攻擊向量A、攻擊向量B、攻擊向量C,并成功輸出admin_test表中的敏感信息。

例如針對SQLite3數(shù)據(jù)庫使用的攻擊向量A定義如下:“jeack′%0AunionunUNIONion%0AsELECT%0Asel

SELECTect%0A*%0AfrOFROMm%0Aadmin_test;#”;針對MySQL數(shù)據(jù)庫使用的攻擊向量B定義如下:“jeack′

%0AunionunUNIONion%0AsELECT%0AselSELECTect%0A*%0AfrOFROMm%0Atest1.admin_test;%23”;針對PostgreSQL數(shù)據(jù)庫使用的攻擊向量C定義如下:“jeack′%0AunioNunUNIONion%0AsELECT%0AselSELECTect%0A*%0AfrOFROMm%0Aadmin_test;--”。

攻擊向量A、B、C基于相同原理構(gòu)造,以向量A為例解釋構(gòu)造原理。根據(jù)對數(shù)據(jù)庫進(jìn)行模糊測試和信息偵測的結(jié)果可知,用戶數(shù)據(jù)請求輸入部分存在聯(lián)結(jié)注入漏洞,原執(zhí)行語句為大體上滿足“select[column] from [table] where [condition]”的模式,利用“union”和“select”關(guān)鍵字構(gòu)造聯(lián)結(jié)查詢攻擊,攻擊模式大體上滿足“select [column] from [table] where [condition] union select [attack]”模式。針對可能存在漏洞系統(tǒng),使用WAF(Web Application Firewall)過濾數(shù)據(jù)庫“select”和“union”等關(guān)鍵字,并過濾空格符號,所有帶有空格的語句會被連接成一句無空格的字符串。為了避免可能存在的聯(lián)結(jié)注入,同時還針對性地過濾“select union”字符串。針對如上采集的信息,首先利用“雙寫繞過”方法,繞過關(guān)鍵字過濾;利用換行符‘ ’等效替換空格,等效為一種空格符以達(dá)到分割語句的效果,“%0A”經(jīng)過URL編碼之后會轉(zhuǎn)碼為‘ ’;利用多寫原理和大小寫混合的方式,在繞過關(guān)鍵字過濾的基礎(chǔ)上可以繼續(xù)繞過關(guān)鍵字符串過濾;最后針對SQLite3的注釋規(guī)則,使用“#”最后注釋符,截斷原操作指令的末尾語句,保證攻擊指令可以正常執(zhí)行,值得一提的是在MySQL數(shù)據(jù)庫中采用“#”(“%23”經(jīng)過URL編碼以后是“#”)及PostgreSQL數(shù)據(jù)庫采用“--”作為注釋符。圖4給出了注入暴露SQLite3數(shù)據(jù)庫的結(jié)果,MySQL數(shù)據(jù)庫注入和PostgreSQL數(shù)據(jù)庫注入可以達(dá)到相同結(jié)果。

圖4 注入效果1

圖4所示的部分即為管理員敏感信息,構(gòu)造針對單數(shù)據(jù)庫系統(tǒng)的攻擊向量可以成功暴露出SQLite3數(shù)據(jù)庫中的管理員敏感信息。

2)正常用戶邏輯下,用戶提供一個待查詢字符串“l(fā)una”,用于查詢用戶“l(fā)una”的信息,該查詢字符串中沒有包含惡意代碼,三組數(shù)據(jù)庫服務(wù)均正確查詢后將查詢結(jié)果統(tǒng)一返回到表決器表決,表決器根據(jù)“少數(shù)服從多數(shù)”的原則,對查詢內(nèi)容進(jìn)行完全字符比對表決。圖5給出了正常查詢邏輯的結(jié)果。

圖5 正常查詢結(jié)果

3)分別以攻擊向量A、B、C為基礎(chǔ)構(gòu)造攻擊向量,將針對三種不同數(shù)據(jù)庫特性的攻擊ABC重組合為具有兼容攻擊性的攻擊向量。向防御系統(tǒng)發(fā)送請求,三組結(jié)果中相對應(yīng)的數(shù)據(jù)庫下均能爆出敏感信息,但在其他兩組數(shù)據(jù)庫同時執(zhí)行攻擊指令時引發(fā)錯誤異常,返回結(jié)果均為空,在經(jīng)過表決器裁決以后最終返回結(jié)果也為空,此時有效防御了常規(guī)攻擊。例如使用針對MySQL數(shù)據(jù)庫重新定義針對防御系統(tǒng)進(jìn)行攻擊的攻擊向量D。攻擊向量D定義如下:“jeack′%0Aunion

unUNIONion%0AsELECT%0AselSELECTect%0A*%0AfrOFROMm%0Aadmin_test%0AunioNunUNIONion%0AsELECT%0AselSELECTect%0A*%0AfrOFROMm%0Atest1.admin_test;%23”。圖6給出了構(gòu)成攻擊被成功防御的結(jié)果。

圖6 防御效果

4)在過程1)和過程3)的基礎(chǔ)上分別從針對不同數(shù)據(jù)庫的漏洞共性,構(gòu)造符合多組數(shù)據(jù)庫漏洞特性的攻擊向量。根據(jù)數(shù)據(jù)庫應(yīng)用間內(nèi)生定義的函數(shù)名的差異,以及定義使用表名和語法上的差異構(gòu)造攻擊向量E。攻擊向量E定義如下:“ja1ck%27%0AUNIUNIONON%0AALL%0ASELSELECTECT%0AIFNULL(CAST(username%0AAS%0ACHAR),0x20),IFNULL(CAST(passwd%0AAS%0ACHAR),0x20)%0AFFROMROM%0Aadmin_test;--+”。

攻擊向量E中仍采用“雙寫繞過”的方法來攻擊WAF中的關(guān)鍵字過濾;利用不引人注意的關(guān)鍵字“all”和“select”配合,繞過字符串“union select”過濾,降低被系統(tǒng)識別的風(fēng)險,增加注入成功的可能性;使用“%0A”來針對空格過濾;使用“ifnull”方法來執(zhí)行結(jié)果進(jìn)行判定,判定其返回字符串是否為NULL,該方法在PostgreSQL數(shù)據(jù)庫中無效,但在另外兩個數(shù)據(jù)庫中有效,數(shù)據(jù)庫表名的選擇使用table的方式,避免使用database.table的方式,可以有效兼容三種數(shù)據(jù)庫語法;末尾使用“--+”作為截斷注釋符,“+”會被轉(zhuǎn)義為“”(空格),兼容三種數(shù)據(jù)庫的注釋語法。圖7給出了成功繞過表決器輸出的結(jié)果。

圖7 注入效果2

將攻擊向量E作為攻擊請求輸入到防御系統(tǒng),結(jié)果顯示MySQL數(shù)據(jù)庫和SQLite3數(shù)據(jù)庫如預(yù)期執(zhí)行輸出敏感信息,PostgreSQL數(shù)據(jù)庫執(zhí)行異常返回為空,通過表決器裁決以后將敏感信息輸出到客戶端,達(dá)成攻擊訴求。

6 評估結(jié)果和分析

在整個攻擊流程中,將攻擊行為和攻擊結(jié)果整理見表3。

表3 攻擊結(jié)果總結(jié)

在攻擊者掌握較少系統(tǒng)應(yīng)用信息的情況下,構(gòu)造的單一攻擊向量和簡單組合的攻擊向量可以被表決器有效否決,其安全性也符合異構(gòu)擬態(tài)應(yīng)用的設(shè)計預(yù)期;在經(jīng)過長時間的應(yīng)用系統(tǒng)信息收集或者基于共謀的系統(tǒng)信息泄露之后,通過組合利用本身異構(gòu)應(yīng)用系統(tǒng)的應(yīng)用安全缺陷,例如,尋找共性處理環(huán)節(jié),使得惡意代碼(有可能是不同惡意代碼)在不同異構(gòu)體中執(zhí)行,但輸出仍保持一致,實(shí)現(xiàn)繞過表決器輸出敏感信息的目的。

具體應(yīng)用的缺陷設(shè)計也會在一定程度上放大動態(tài)異構(gòu)冗余系統(tǒng)的被攻擊性,在一定程度上降低動態(tài)異構(gòu)冗余系統(tǒng)的理論安全性。同時在了解攻擊手段以后也可以針對性地采用如下措施來增強(qiáng)系統(tǒng)的安全性:(1)在擬態(tài)數(shù)據(jù)庫結(jié)構(gòu)中,可以通過在指紋過濾環(huán)節(jié)對來自頁面的輸入串進(jìn)行嚴(yán)格檢查,過濾掉惡意代碼,以提高安全性。(2)在裁決器進(jìn)一步進(jìn)行嚴(yán)格的檢查,采取更為復(fù)雜的策略(例如一票否決并清洗等),以杜絕此類攻擊的發(fā)生。(3)在設(shè)計異構(gòu)數(shù)據(jù)庫時,采用不同數(shù)據(jù)庫產(chǎn)品并不能帶來足夠的“異構(gòu)性”,真正有意義的異構(gòu)是數(shù)據(jù)庫表的設(shè)計,采用不同的表名、字段名將對攻擊起到良好的抵御效果,當(dāng)然這也將進(jìn)一步增加數(shù)據(jù)庫同步的復(fù)雜性。

7 結(jié) 語

本文基于動態(tài)異構(gòu)冗余的Web數(shù)據(jù)庫設(shè)計,針對異構(gòu)數(shù)據(jù)庫中最關(guān)鍵的表決器部分進(jìn)行安全評估實(shí)驗(yàn),從不利用軟件漏洞的基礎(chǔ)出發(fā),利用多種數(shù)據(jù)庫服務(wù)之間的SQL語言設(shè)計特性,完成將系統(tǒng)設(shè)計預(yù)期之外的數(shù)據(jù)暴露。論證得出擬態(tài)數(shù)據(jù)庫在分析假定保留字指紋異構(gòu)模塊不能完全過濾攻擊請求的基礎(chǔ)上,異構(gòu)體在某些環(huán)節(jié)的處理方法上存在共性,那么系統(tǒng)安全性將會被從應(yīng)用實(shí)現(xiàn)軟件層次上被削弱,將會導(dǎo)致系統(tǒng)設(shè)計預(yù)期之外的信息被暴露,系統(tǒng)設(shè)計的理論安全性降低,同時后端的異構(gòu)數(shù)據(jù)庫的實(shí)現(xiàn)對安全性的提升效果有限。DHR架構(gòu)安全將受實(shí)現(xiàn)應(yīng)用的安全影響,在擬態(tài)數(shù)據(jù)庫應(yīng)用中不同的數(shù)據(jù)庫應(yīng)用服務(wù)將會在應(yīng)用層服務(wù)上降低系統(tǒng)設(shè)計的理論安全性,異構(gòu)體中間層的應(yīng)用服務(wù)選擇對整個異構(gòu)系統(tǒng)的安全性也有著不容忽視的重要作用。

本文在防御模型設(shè)計時重點(diǎn)針對輸出表決器部分進(jìn)行了實(shí)驗(yàn)和評估,未對數(shù)據(jù)操作指令進(jìn)行指紋異構(gòu)處理,如果在數(shù)據(jù)請求入庫前進(jìn)行指紋異構(gòu)化處理,將提升擬態(tài)數(shù)據(jù)庫的防御能力,也將同時增加注入的難度。未來工作將在此評估結(jié)果的基礎(chǔ)上,繼續(xù)完善設(shè)計防御模型,針對增加指紋異構(gòu)化處理模塊和傳統(tǒng)防注入方法的模型進(jìn)行評估和實(shí)驗(yàn),進(jìn)一步完善擬態(tài)數(shù)據(jù)庫的防御設(shè)計架構(gòu)。

猜你喜歡
數(shù)據(jù)庫系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 国产在线视频自拍| 国产精品视频第一专区| 国产99热| 凹凸精品免费精品视频| 亚洲国产精品久久久久秋霞影院| 亚洲丝袜第一页| 亚洲九九视频| 亚洲男人的天堂久久香蕉网 | 国产一二三区在线| m男亚洲一区中文字幕| 久久人体视频| 欧美 国产 人人视频| 久青草网站| 久久婷婷综合色一区二区| 夜夜操天天摸| 丁香五月婷婷激情基地| 免费jjzz在在线播放国产| 国产制服丝袜91在线| 国产AV毛片| 成人国产精品网站在线看| 午夜视频在线观看免费网站| 欧美在线网| 国国产a国产片免费麻豆| 99久久精品美女高潮喷水| 久久免费成人| 精品1区2区3区| 女人毛片a级大学毛片免费| 日本国产精品| 亚洲人成色在线观看| 伊伊人成亚洲综合人网7777| 日韩av资源在线| a级毛片毛片免费观看久潮| 国产99精品久久| 日韩精品亚洲人旧成在线| 国产亚洲欧美在线人成aaaa| 欧美一区日韩一区中文字幕页| 国产第一页第二页| 国产三区二区| 无码专区在线观看| 亚洲福利片无码最新在线播放| 欧美亚洲日韩不卡在线在线观看| 亚洲国产成人自拍| 亚洲美女一区二区三区| 大香网伊人久久综合网2020| 麻豆精品视频在线原创| 国产在线自乱拍播放| 777国产精品永久免费观看| 久久一本日韩精品中文字幕屁孩| 亚洲天堂久久| 91福利免费视频| 欧美国产日韩在线播放| 国产99视频在线| 青青草原国产av福利网站| 搞黄网站免费观看| 91娇喘视频| 97人人模人人爽人人喊小说| 国产激情无码一区二区免费| 99激情网| 久久精品亚洲热综合一区二区| 国产日韩欧美视频| 国产成人AV综合久久| 国产午夜福利在线小视频| 亚洲三级a| 久久久久人妻一区精品| 亚洲综合色区在线播放2019| 国产成人精品三级| 亚洲第一成年人网站| 日本精品中文字幕在线不卡 | 老汉色老汉首页a亚洲| 3344在线观看无码| 天天躁狠狠躁| 8090午夜无码专区| 在线欧美日韩国产| 亚洲区视频在线观看| 久久国产V一级毛多内射| 波多野结衣在线一区二区| 婷婷六月综合| 啪啪国产视频| 在线精品欧美日韩| 国产在线日本| 全午夜免费一级毛片| 免费无码又爽又刺激高|