安華金和全面適配國(guó)產(chǎn)化操作系統(tǒng)及芯片CPU
數(shù)據(jù)安全治理關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫(kù)脫敏技術(shù)詳解
數(shù)據(jù)安全治理之API監(jiān)測(cè)系統(tǒng) ,解決API接口安全問(wèn)題【安華金和】
新一代數(shù)據(jù)庫(kù)脫敏技術(shù),為敏感數(shù)據(jù)建立保護(hù)盾!
數(shù)據(jù)庫(kù)脫敏系統(tǒng)與金融行業(yè)案例解讀
數(shù)據(jù)安全治理建設(shè)思路的著力點(diǎn)——數(shù)據(jù)安全咨詢(xún)服務(wù)【安華金和】
數(shù)據(jù)庫(kù)防火墻功能有哪些?-數(shù)據(jù)安全-安華金和
數(shù)據(jù)安全關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫(kù)脫敏技術(shù)詳解【安華金和】
中國(guó)數(shù)據(jù)安全治理落地指導(dǎo)書(shū)籍《數(shù)據(jù)安全治理白皮書(shū)5.0》正式發(fā)布(附下載)
各位小伙伴們,今天咱們接著聊Oracle Rootkits的話(huà)題。這是Oracle Rootkits系列文章的第三篇。相信大部分小伙伴已經(jīng)對(duì)數(shù)據(jù)庫(kù)后門(mén)和Rootkits技術(shù)有了一定的認(rèn)識(shí)。上次給大家介紹了Oracle Rootkits第一式“裸奔”,(插入鏈接)文中主要介紹了三種入侵者常用的手法,以及破解方式。第一式主要在存儲(chǔ)過(guò)程、觸發(fā)器組成的Oracle Rootkits中使用廣泛。目標(biāo)就是窮盡一切辦法隱藏不法分子在數(shù)據(jù)庫(kù)中創(chuàng)建的惡意存儲(chǔ)過(guò)程、函數(shù)、觸發(fā)器等。這種方式多用于針對(duì)數(shù)據(jù)庫(kù)的勒索軟件中。
數(shù)據(jù)庫(kù)后門(mén)除了藏在存儲(chǔ)過(guò)程、函數(shù)、觸發(fā)器之中,更常見(jiàn)的是,在數(shù)據(jù)庫(kù)中埋入一組DBA用戶(hù)。不法分子可以利用這組DBA用戶(hù)隨時(shí)“合法”奪取數(shù)據(jù)庫(kù)中的敏感數(shù)據(jù)。要在數(shù)據(jù)庫(kù)中隱藏一個(gè)DBA用戶(hù),通常就會(huì)用到數(shù)據(jù)庫(kù)級(jí)的RootKit技術(shù),我們稱(chēng)其為Oracle Rootkits的第二式“躲貓貓”。
“躲貓貓”主要解決兩個(gè)核心問(wèn)題:
1.躲誰(shuí)?
2怎么躲?
咱們以隱藏一組DBA用戶(hù)HACKER躲避小王(DBA)檢查為例。(這種方法還可以隱藏存儲(chǔ)過(guò)程、函數(shù)、進(jìn)程等)小王利用DBA檢查腳本對(duì)數(shù)據(jù)庫(kù)DBA用戶(hù)進(jìn)行統(tǒng)計(jì),防止DBA用戶(hù)數(shù)量和內(nèi)容發(fā)生變化。檢查DBA的腳本獲取DBA用戶(hù)信息主要來(lái)自視圖DBA_USERS或ALL_USERS。為了簡(jiǎn)化描述,我們就假定訪(fǎng)問(wèn)的是視圖ALL_USERS。至此第一個(gè)問(wèn)題有了答案,為了防止小王發(fā)現(xiàn)黑客加入的新DBA用戶(hù)HACKER,黑客就要想辦法防止ALL_USERS查詢(xún)出HACKER用戶(hù)。
接下來(lái),我們需要解決第二個(gè)問(wèn)題,首先要找出ALL_USERS的結(jié)構(gòu)中哪部分是薄弱點(diǎn),并可能被黑客所利用。ALL_USERS視圖的內(nèi)容如下圖:
整個(gè)視圖就是以基表sys.user$和sys.ts$為基礎(chǔ),在一定條件下進(jìn)行語(yǔ)句查詢(xún)。黑客多從where的判斷條件入手,這樣對(duì)ALL_USERS影響最小,也較難被發(fā)現(xiàn)。于是沿著修改where判斷條件的思路:黑客主要采取兩種辦法:
1. 偷天換日—假冒ALL_USERS
2. 假道伐虞—修改判斷條件
這種思路的核心是在原來(lái)where條件的基礎(chǔ)上添加更多的限制條件,使黑客建立的HACKER用戶(hù)滿(mǎn)足限制條件,從而不被查詢(xún)出來(lái)。例如在判斷條件中添加 and u.name != ‘HACKER’防止查詢(xún)讀出HACKER用戶(hù)。
具體過(guò)程需要黑客利用拿到的數(shù)據(jù)庫(kù)權(quán)限,重建視圖ALL_USERS,并刪除或關(guān)閉審計(jì)記錄。這種偷天換日的方法,可以讓黑客悄無(wú)聲息的將自己改造過(guò)的ALL_USERS替換掉系統(tǒng)真正的ALL_USERS,且該方式在足夠權(quán)限的支持下操作起來(lái)簡(jiǎn)單、便捷,對(duì)技術(shù)要求較低,但同時(shí)被發(fā)現(xiàn)的幾率也略高,即便黑客將操作記錄刪除凈盡,也可能會(huì)被具備查詢(xún)木馬能力的數(shù)據(jù)庫(kù)安全掃描產(chǎn)品揪出其中的問(wèn)題。ALL_USERS的內(nèi)容和大小的改變會(huì)有多種方式發(fā)現(xiàn)ALL_USERS變化和問(wèn)題,于是很多黑客就采用更隱蔽的手法——假道伐虞。
這種思路本質(zhì)也是在where條件上動(dòng)手腳,但方向和“偷天換日”截然不同。 “假道伐虞”是在不改變ALL_USERS的前提下,通過(guò)破壞where判斷條件,來(lái)防止HACKER被查詢(xún)出來(lái)。ALL_USERS的查詢(xún)條件有三條,如果HACKER不滿(mǎn)足三個(gè)條件中的任意一條就不可能被查詢(xún)出來(lái)。
where u.datats# = dts.ts#
and u.tempts# = tts.ts#
and u.type# = 1;
ALL_users中列出的用戶(hù)需要滿(mǎn)足 sys.user$.datats = sys.ts$.ts#。如果該等式不成立,那hacker就顯示不出來(lái)。DATATS#中的數(shù)值一般在0-4之間,使用update語(yǔ)句對(duì)hacker用戶(hù)進(jìn)行調(diào)整,將其DATATS#改為1337,超出0-4的范圍內(nèi),使得sys.user$.datats = sys.ts$.ts#等式無(wú)法成立,從而查詢(xún)不到HACKER,但HACKER依舊存在。下圖紅線(xiàn)部分明顯顯示,雖然HACKER已經(jīng)查詢(xún)不到,但依舊可以用HACKER進(jìn)行登錄。
注意上圖在執(zhí)行“UPDATE SYS.USER$ SET DATATS#=1337 WHERE NAME = 'HACKER' ”之后,再通過(guò)ALL_users已經(jīng)無(wú)法發(fā)現(xiàn)HACKER用戶(hù)了,但如果此時(shí)登錄,HACKER用戶(hù)依舊可以用來(lái)登錄,并且還是DBA用戶(hù)權(quán)限。這種方式比第一種“偷天換日”要隱蔽得多。即便有審計(jì)記錄,如果對(duì)數(shù)據(jù)庫(kù)不是很熟悉,也未必會(huì)把修改數(shù)據(jù)和有用戶(hù)隱藏聯(lián)系起來(lái)。借著SYS.USER$的道巧妙的破壞了ALL_users的查詢(xún)條件,幫助HACKER用戶(hù)實(shí)現(xiàn)隱身。
驗(yàn)證自家數(shù)據(jù)庫(kù)被入侵與否,先別著急去挨個(gè)數(shù)據(jù)庫(kù)翻ALL_users, Oracle中類(lèi)似ALL_users的視圖有不少,例如v$session, gv_$session, flow_sessions, v_$process等都存在類(lèi)似的風(fēng)險(xiǎn),并且第二種方式壓根沒(méi)有修改視圖,翻也翻不出東西。下面安華金和數(shù)據(jù)庫(kù)攻防實(shí)驗(yàn)室的專(zhuān)家給大家支招,告訴你如何檢查自家數(shù)據(jù)庫(kù)是否已經(jīng)被這種方式所入侵。
第一種方式檢查的關(guān)鍵是變化。可以通過(guò)前后hash值比對(duì)來(lái)發(fā)現(xiàn)哪些視圖、存儲(chǔ)過(guò)程、觸發(fā)器等hash值發(fā)生了變化。在排除黑客改動(dòng)后,建議建立一組關(guān)鍵視圖、存儲(chǔ)過(guò)程、觸發(fā)器的hash值列表,一旦hash值發(fā)生變化,就要提高警惕,很可能是黑客所為。
第二種方式的檢查原理是發(fā)現(xiàn)異常用戶(hù)。在不同的基表、視圖中去查詢(xún)用戶(hù),經(jīng)過(guò)相互對(duì)比,如果有的用戶(hù)在有些表中存在,而有些表中不存在,那么,這類(lèi)用戶(hù)很可能就是使用第二種方式隱藏的用戶(hù)。面對(duì)異常用戶(hù),可以用如下語(yǔ)句檢查:
select username from v$pwfile_users where username not in ('INTERNAL')
minus
select name from sys.user$ where type# > 0
尋找數(shù)據(jù)庫(kù)中潛伏的后門(mén)是一種比較復(fù)雜的工作,而且很多部分需要根據(jù)目標(biāo)和環(huán)境采用不同的方式,所以,建議把這項(xiàng)工作交給專(zhuān)業(yè)的公司,使用專(zhuān)業(yè)的產(chǎn)品。在破解上述兩種后門(mén)方面,安華金和的數(shù)據(jù)庫(kù)漏洞掃描產(chǎn)品有過(guò)不少實(shí)踐,幫助破解后門(mén)使用的上述隱身技術(shù),通過(guò)多種獨(dú)有技術(shù)揪出潛伏在數(shù)據(jù)庫(kù)中的安全威脅。
試用申請(qǐng)
在線(xiàn)咨詢(xún)
咨詢(xún)電話(huà)
TOP