摘要:近年來,隨著Web應(yīng)用的業(yè)務(wù)復(fù)雜度越來越高,應(yīng)用系統(tǒng)所承載的數(shù)據(jù)越來越重要,目前大多數(shù)的應(yīng)用安全防護(hù)設(shè)備均是針對Web攻擊進(jìn)行防護(hù),對Web應(yīng)用的業(yè)務(wù)異常檢測沒有很好的手段措施。本文通過Hook技術(shù),在Web應(yīng)用運行時代碼調(diào)用過程中,對所使用的類進(jìn)行全面監(jiān)控,從而實現(xiàn)對Web應(yīng)用業(yè)務(wù)中存在的異常問題的檢測。
關(guān)鍵詞:Hook技術(shù);異常檢測;代碼調(diào)用;基線檢查
一、引言
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來越多的業(yè)務(wù)系統(tǒng)選擇以Web應(yīng)用的方式搭建,Web的開放性、多樣性和脆弱性在為用戶帶來便利的同時,也帶來了許多業(yè)務(wù)安全威脅;同時,隨著云計算技術(shù)的成熟以及國家政策的推動,企業(yè)大量業(yè)務(wù)由傳統(tǒng)數(shù)據(jù)中心遷移到云環(huán)境中,造成Web應(yīng)用環(huán)境變得更為復(fù)雜,所以Web應(yīng)用安全也成了信息安全的關(guān)鍵所在。目前,隨著運營商行業(yè)的業(yè)務(wù)不斷增加,也就意味著Web應(yīng)用系統(tǒng)面也隨之增大,因此,運營商行業(yè)也面臨著業(yè)務(wù)安全的極大壓力。
針對業(yè)務(wù)非授權(quán)獲取敏感信息、針對Web應(yīng)用的攻擊(弱口令)、針對移動應(yīng)用的攻擊等攻擊事件和手段越來越常見。攻擊者經(jīng)常利用應(yīng)用程序中的漏洞來竊取數(shù)據(jù)、知識產(chǎn)權(quán)、敏感信息等,這也是大部分入侵檢測系統(tǒng)和WAF等設(shè)備難以應(yīng)對的問題。因此,如果應(yīng)用安全防護(hù)不到位,企業(yè)將面臨重大威脅風(fēng)險,甚至蒙受巨大損失。
同時當(dāng)觸發(fā)業(yè)務(wù)安全的攻擊行為時,其中威脅較大、最難以防守的是基于各種不同維度的業(yè)務(wù)攻擊行為,從當(dāng)前業(yè)務(wù)安全實踐出發(fā),針對業(yè)務(wù)運行時自我保護(hù)安全這塊目前尚未形成統(tǒng)一標(biāo)準(zhǔn),并且缺乏有效的手段進(jìn)行監(jiān)測,一旦發(fā)生異常事件,也無法根據(jù)現(xiàn)有信息進(jìn)行進(jìn)一步的事件排查。
二、防護(hù)弱點
(一)中間件弱口令識別檢測難問題
隨著企業(yè)數(shù)字化轉(zhuǎn)型,推動業(yè)務(wù)系統(tǒng)與互聯(lián)網(wǎng)深度結(jié)合,各企業(yè)也積極進(jìn)行安全建設(shè)工作,盡管不同行業(yè)、不同企業(yè)的安全建設(shè)程度不盡相同,但弱口令卻是一個基礎(chǔ)而典型的基礎(chǔ)性難題。直到今天人們還能經(jīng)常聽某個著名廠商因為存在弱口令問題而導(dǎo)致大量內(nèi)部或外部用戶信息泄露;在日常的滲透測試及網(wǎng)絡(luò)攻防演練過程中,通過弱口令獲取權(quán)限的情況甚至超過90%,一旦企業(yè)用戶的賬號和密碼泄露或被破解,將導(dǎo)致大量內(nèi)部信息的泄露,并造成嚴(yán)重的社會影響和經(jīng)濟(jì)損失。弱口令屢禁不止,危害極大,治理弱口令刻不容緩。將弱口令比方為一臺電腦,里面有大量的重要文件數(shù)據(jù)信息,當(dāng)口令就是打開電腦的鑰匙,當(dāng)別人也有一把同樣的鑰匙時,那么就意味著電腦的重要數(shù)據(jù)泄漏,造成較大影響;隨著技術(shù)的不斷發(fā)展,中間件已成為業(yè)務(wù)運行必不可少的技術(shù)。要實現(xiàn)對中間件弱口令的檢測,首先需要能準(zhǔn)確識別出業(yè)務(wù)所使用的中間件;由于傳統(tǒng)檢測設(shè)備通常部署在網(wǎng)絡(luò)的邊界入口,因此難以識別出業(yè)務(wù)所使用的中間件信息,也就無法有效檢測中間件的弱口令問題。
(二)無法精準(zhǔn)檢測業(yè)務(wù)異常行為問題
目前,在移動應(yīng)用安全防護(hù)方面,主要采用的是傳統(tǒng)的邊界安全檢測設(shè)備,程序與業(yè)務(wù)側(cè)的關(guān)聯(lián)并不緊密,主要針對應(yīng)用層的攻擊進(jìn)行檢測,如SQL注入、跨站腳本攻擊、本地命令執(zhí)行、文件上傳攻擊等類型;但是針對各種不同業(yè)務(wù)環(huán)境的業(yè)務(wù)異常行為檢測率較低,該檢測需與應(yīng)用深入融合,而當(dāng)前的邊界防護(hù)產(chǎn)品在識別應(yīng)用的全部URL和API方面存在一定的困難,難以精確識別所有訪問路徑;該檢測不僅需要一段時間的業(yè)務(wù)學(xué)習(xí),當(dāng)業(yè)務(wù)未觸發(fā)部分業(yè)務(wù)功能時,則無法準(zhǔn)確形成白名單庫,當(dāng)程序進(jìn)行業(yè)務(wù)異常行為檢測時,用戶訪問的請求地址在白名單庫內(nèi)不存在則會觸發(fā)大量的誤報信息,不僅誤報率提高,同時還會增加日常分析告警時長等問題。
三、Web應(yīng)用的業(yè)務(wù)安全檢測防護(hù)研究
基于以上背景,為保障業(yè)務(wù)系統(tǒng)運行時的安全,主要包括業(yè)務(wù)弱口令、業(yè)務(wù)異常調(diào)用行為檢測及攻擊者身份信息捕獲能力進(jìn)行補(bǔ)充防護(hù);該研究主要基于的技術(shù)和管理手段如下:
技術(shù)手段:
主要基于運行時應(yīng)用自我保護(hù)技術(shù),該技術(shù)通過注入自身到開發(fā)語言底層API中,從而實現(xiàn)完全融入于應(yīng)用中,達(dá)到與Web應(yīng)用融為一體的效果;Agent與Web應(yīng)?程序都運?在同?個JVM中,運行時自我保護(hù)技術(shù)能夠監(jiān)控JVM類?件的加載?為,如果被JVM 加載的類符合內(nèi)置的Hook條件,那么基于Hook技術(shù)會修改該類對應(yīng)?法的字節(jié)碼并插?代碼嵌入式檢測邏輯,JVM會加載經(jīng)過該技術(shù)修改后的類字節(jié)碼,當(dāng)該類被運行時應(yīng)用自我保護(hù)技術(shù)Hook的?法被調(diào)?時會調(diào)?具體檢測代碼。
管理手段:
主要由Agent客戶端、統(tǒng)一管理中心兩部分進(jìn)行管理:
Agent客戶端:集成了URL API抓取、中間件適配(MySQL、Redis、SQL Server、Oracle、Tomcat等)以及識別弱口令等模塊,其部署在Java Web應(yīng)用服務(wù)器/容器中,作為防護(hù)引擎為應(yīng)用系統(tǒng)提供攻擊實時防護(hù)能力。安全檢測邏輯以插件形式工作于Agent中,同時支持用戶自由定制監(jiān)測和防御模式,以更好地滿足用戶的安全防護(hù)需求,并能夠根據(jù)需要快速擴(kuò)展防護(hù)能力。
統(tǒng)一管理中心:
作為Agent的集中管理工具,負(fù)責(zé)接收并展示Agent客戶端的相關(guān)檢測日志,并通過加密通信發(fā)送指令,同時支持私有云和公有云部署環(huán)境中部署。管控中心內(nèi)置知識庫(安全規(guī)則庫等)和風(fēng)險分析引擎。
(一)基于中間件基線檢查發(fā)現(xiàn)業(yè)務(wù)弱口令
隨著互聯(lián)網(wǎng)的普及,各行各業(yè)對信息系統(tǒng)的依賴度的不斷增強(qiáng),各政企對安全建設(shè)的極度重視,構(gòu)建保障安全的基線已成為不可或缺的重要環(huán)節(jié)。本章主要研究如何實現(xiàn)安全基線核查,通過設(shè)計安全基線,并采用基于 Agent/Server 架構(gòu)的遠(yuǎn)程安全基線核查系統(tǒng),進(jìn)行系統(tǒng)安全配置設(shè)置的持續(xù)性監(jiān)測,對影響系統(tǒng)安全的脆弱性因素進(jìn)行全面檢查,幫助安全運維人員及時發(fā)現(xiàn)業(yè)務(wù)安全風(fēng)險,全面洞察安全隱患,檢查系統(tǒng)的折中標(biāo)志,并能在任意時刻提供系統(tǒng)的安全狀態(tài)信息。
1.中間件基線檢測實現(xiàn)
借助Java Agent的方式,采用基于 Agent/Server 架構(gòu),通過在服務(wù)器上部署 Agent 程序,與 Server 后臺聯(lián)動來實現(xiàn)對大規(guī)模服務(wù)器中間件、數(shù)據(jù)庫的安全基線核查;Agent 在采集數(shù)據(jù)的同時獲取服務(wù)器系統(tǒng)及進(jìn)程的性能數(shù)據(jù),實時監(jiān)控服務(wù)器狀態(tài),對出現(xiàn)異常的服務(wù)器通過告警的方式通知服務(wù)器系統(tǒng)管理員,使服務(wù)器時刻運行在一個可保障的安全狀態(tài)。通過基線檢查能夠大大提高安全運維人員檢查結(jié)果的合規(guī)性和準(zhǔn)確性,增加了與其他標(biāo)準(zhǔn)工具的互操作性;基于Agent 可實現(xiàn)資產(chǎn)清單自動維護(hù),節(jié)省安全人員的時間成本,讓檢查工作變得快速而簡單;監(jiān)控系統(tǒng)狀態(tài),能實時保證系統(tǒng)處于可接受的安全狀態(tài)。
基于基線檢查標(biāo)準(zhǔn),設(shè)計Windows/Linux操作系統(tǒng)、數(shù)據(jù)庫及中間件的安全基線,以Agent的方式去實現(xiàn)安全基線核查系統(tǒng);Agent獲取資產(chǎn)信息,實現(xiàn)信息資產(chǎn)的安全管理流程。從而使安全基線核查變得更全面、準(zhǔn)確、高效,確保安全服務(wù)器始終保持在安全狀態(tài)。
針對服務(wù)器的安全基線核查,設(shè)計基于 Agent/Server 架構(gòu),通過在用戶服務(wù)器上部署 Agent 程序,并和后臺進(jìn)行聯(lián)動來實現(xiàn)安全基線的管理。
2.檢查標(biāo)準(zhǔn)及檢查內(nèi)容
弱口令:使用非登錄爆破方式檢測是否存在弱口令。以避免登錄爆破方式鎖定賬戶,從而影響業(yè)務(wù)的正常運行。
未授權(quán):設(shè)置未授權(quán)訪問基線,以檢測服務(wù)是否存在未授權(quán)訪問風(fēng)險,避免被入侵或者數(shù)據(jù)泄露。
3.檢測項目:
(1)檢查Weblogic 12c用戶是否存在弱口令風(fēng)險;
(2)檢查Oracle數(shù)據(jù)庫用戶是否存在弱口令風(fēng)險;
(3)Microsoft SQL Server數(shù)據(jù)庫登錄賬號弱口令檢測基線;
(4)MySQL數(shù)據(jù)庫登錄賬號弱口令檢測基線;
(5)Apache Tomcat控制臺登錄弱口令檢查;
(6)Elasticsearch未授權(quán)訪問檢測;
(7)Redis數(shù)據(jù)庫登錄弱口令檢測基線;
(8)Jboss未授權(quán)訪問高危風(fēng)險;
(9)Redis未授權(quán)訪問高危風(fēng)險。
4.基線檢查流程設(shè)計
(10)Hook點會對進(jìn)入的方法進(jìn)行未授權(quán)訪問檢查,假如當(dāng)前服務(wù)使用的為空口令或未設(shè)置口令,記錄該服務(wù)組件的安全基線情況日志,回傳到統(tǒng)一管控中心展示;
(11)進(jìn)行弱口令規(guī)則強(qiáng)度檢測,例如:密碼必須至少6位長度、包含數(shù)字、大小寫字符,如果未滿足規(guī)則要求,則會記錄并回傳日志;
(12)如果以上兩項基線檢查都通過,則會進(jìn)行弱口令字典密碼檢查,如果密碼與弱口令字典中的密碼完整匹配,系統(tǒng)會記錄并回傳日志。
5.數(shù)據(jù)庫基線檢查
數(shù)據(jù)庫基線檢查支持通過 Data Source、JDBC Driver驅(qū)動兩種方式進(jìn)行配置檢查。Data Source支持目前市面主流的Data Source數(shù)據(jù)源,例如:Spring DataSource、Alibaba Druid、C3P0、Apache DBCP等。
6.中間件基線檢查
中間件基線核查對中間件中的相關(guān)方法Hook、來獲取其賬戶、密碼。然后對其密碼進(jìn)行分析。例如:Tomcat中間件通過對Manager Console 控制臺的賬戶密碼Hook,來對其密碼進(jìn)行分析。
(二)基于應(yīng)用URL API抓取識別異常調(diào)用行為檢測
基于應(yīng)用URL API抓取識別異常行為監(jiān)測的解決方案主要通過用戶在使用業(yè)務(wù)系統(tǒng)過程中識別異常行為操作,當(dāng)業(yè)務(wù)系統(tǒng)在安裝安全程序時,自動識別發(fā)現(xiàn)所有的Web API接口地址,將獲取到的URL地址回傳至安全程序統(tǒng)一管控中心,提供統(tǒng)一的URL管控,主要體現(xiàn)以下幾個方面:
1.白名單獲取
白名單地址獲取主要通過主動識別和被動識別兩種方式來實現(xiàn),主動識別是通過設(shè)置定時任務(wù)或者手動開啟業(yè)務(wù)資產(chǎn)盤點,識別當(dāng)前業(yè)務(wù)系統(tǒng)URL路徑,將所有當(dāng)前可訪問到的路徑,添加白名單;被動識別是指客戶端部署在業(yè)務(wù)系統(tǒng)后,通過依賴于底層資產(chǎn)識別引擎,可監(jiān)控到業(yè)務(wù)訪問過程中的數(shù)據(jù)包,針對數(shù)據(jù)包中返回頁面的狀態(tài)碼進(jìn)行白名單識別。
通過自生成攻擊策略白名單的機(jī)制來輔助訪問參數(shù)校驗,從而實現(xiàn)對異常調(diào)用行為的檢測和攻擊回溯,對所有訪問的參數(shù)進(jìn)行校驗,當(dāng)訪問參數(shù)不屬于正常業(yè)務(wù)時,進(jìn)行異常行為告警并在記錄詳細(xì)異常攻擊行為的同時,識別其身份特征并確認(rèn)是否存在登錄錯過的情況,形成事件閉環(huán)。
安全程序會在Web應(yīng)用啟動后開始分析應(yīng)用的API地址,包括但不限于Servlet、Filter、Spring MVC控制器等后端接口服務(wù)所綁定的URL地址,當(dāng)采集完成后Agent會將采集到的所有URL地址和Web應(yīng)用自動綁定,并回傳到統(tǒng)一管控中心,具體的流程如下:
(1)Web應(yīng)用啟動后安全程序開始采集API URL地址;
(2)使用Agent Hook技術(shù)將Agent注入Web Servlet容器中;
(3)從Web容器中讀取所有已注冊的Servlet名稱、URL、處理類信息;
(4)從Web容器中讀取所有已注冊的Filter名稱、URL、處理類信息;
(5)使用Agent Hook技術(shù)將Agent注入Spring MVC框架中;
(6)獲取所有已注冊的Spring MVC控制器映射關(guān)系,記錄URL地址、處理類、參數(shù)等;
(7)使用Agent Hook技術(shù)監(jiān)控Servlet、Filter動態(tài)注冊行為并記錄監(jiān)控到的URL、名稱、處理類信息;
(8)Agent數(shù)據(jù)同步時自動回傳該信息;
(9)統(tǒng)一管控中心接收并存儲URL地址;
(10)統(tǒng)一管控中心提供接口管理能力,包括URL黑白名單管理、URL地址標(biāo)記等。
2.時效性保證
為了保證路徑白名單的時效性,通過三種方式進(jìn)行,實時新增情況檢測,通過實時分析數(shù)據(jù)包中的狀態(tài)碼,與當(dāng)前白名單列表進(jìn)行對比,未存在當(dāng)前列表內(nèi)的路徑,自動添加,并顯示獲取方式及時間;實時減少情況識別:定期輪詢訪問當(dāng)前白名單庫的路徑頁面,針對頁面無法訪問的情況進(jìn)行標(biāo)記,并更新白名單列表;定期設(shè)置掃描任務(wù)以進(jìn)行定時資產(chǎn)盤點,定期針對業(yè)務(wù)系統(tǒng)的白名單路徑進(jìn)行識別,獲取變更情況。
3.異常調(diào)用行為判斷
針對所有業(yè)務(wù)訪問請求進(jìn)行獲取,通過獲取該請求地址進(jìn)行白名單校驗及異常訪問檢測,如當(dāng)前用戶訪問地址是白名單列表外的路徑資產(chǎn),則該行為判定為異常調(diào)用行為,系統(tǒng)將記錄本次詳細(xì)攻擊參數(shù)獲取。
4.攻擊者身份信息獲取
當(dāng)攻擊者觸發(fā)業(yè)務(wù)異常調(diào)用行為,觸發(fā)到攔截界面時,攻擊者訪問的路徑不在白名單庫中的攔截頁面,會觸發(fā)溯源代碼,身份信息獲取通過WebRTC技術(shù)實現(xiàn)真實的源IP地址獲取,進(jìn)一步定位其地理位置。JSONP技術(shù)在安全設(shè)備警告頁面或者業(yè)務(wù)系統(tǒng)不存在的路徑下放置空白頁面,將代碼植入相關(guān)頁面,獲取攻擊者網(wǎng)絡(luò)身份。
5.URL黑白名單動態(tài)管理
根據(jù)不同業(yè)務(wù)需求,可直接針對識別出的URL地址,進(jìn)行黑白動態(tài)管理操作。
(三)傳統(tǒng)邊界檢測設(shè)備與本文研究方案對比
以下根據(jù)業(yè)務(wù)系統(tǒng)采用的傳統(tǒng)邊界安全檢測設(shè)備和本文基于Hook方法實現(xiàn)Web應(yīng)用業(yè)務(wù)異常檢測研究進(jìn)行對比:
1.技術(shù)完全不同,傳統(tǒng)防護(hù)主要是發(fā)現(xiàn)可疑流量,本文研究方案是發(fā)現(xiàn)具有異常的行為;
2.部署位置不同,傳統(tǒng)防護(hù)部署在應(yīng)用邊界,與應(yīng)用是分離的,本文研究方案是可部署在應(yīng)用內(nèi),深度融合于應(yīng)用;
3.不一樣的檢測點,傳統(tǒng)防護(hù)主要用于規(guī)則匹配進(jìn)行檢測,本文研究方案可以通過Hook技術(shù)監(jiān)控特定的類進(jìn)行檢測;
4.可視性,傳統(tǒng)防護(hù)無法提供有關(guān)應(yīng)用程序的詳細(xì)信息,本文研究方案可提供詳細(xì)的應(yīng)用異常信息;
5.網(wǎng)絡(luò)協(xié)議差異,傳統(tǒng)防護(hù)無法精準(zhǔn)解析HTTP/HTTPS協(xié)議,本文研究方案可不受協(xié)議限制,處理各種協(xié)議;
四、結(jié)束語
通過本次基于Hook技術(shù)的Web應(yīng)用業(yè)務(wù)異常檢測研究,主要實現(xiàn)了業(yè)務(wù)異常檢測管理,包括業(yè)務(wù)異常調(diào)用行為的監(jiān)控和告警、攻擊者身份的識別、攻擊行為的聯(lián)動處置、組件信息的識別以及中間件基線的檢測能力,從而識別業(yè)務(wù)存在的異常問題,減少因業(yè)務(wù)異常問題引發(fā)的安全事故;除此之外,為了保證業(yè)務(wù)系統(tǒng)的穩(wěn)定性并減輕業(yè)務(wù)側(cè)工作人員的工作量,可通過防御插件遠(yuǎn)程同步升級和客戶端動態(tài)熱更新方案,遠(yuǎn)程同步防御插件主要用于當(dāng)前防御機(jī)制不足以對某個漏洞的利用行為進(jìn)行檢測和攔截時,進(jìn)行快速補(bǔ)充安全能力,同時無需重啟服務(wù),保證業(yè)務(wù)穩(wěn)定運行。動態(tài)熱更新適用于客戶端程序版本升級時,針對所有存量業(yè)務(wù)系統(tǒng)滿足快速進(jìn)行版本升級。
作者單位:王海光 安志新 盧永頔 聶瀅 劉望
張琳 中移(動)信息技術(shù)有限公司
參考文獻(xiàn)
[1] BELLESSORT R, RUELLAN H, OUEDRAOGO N. Method and device for safely executing a Web application in a Web runtime environment: GB2554697[P]. 2018-04-11.
[2] 基于 Web 應(yīng)用系統(tǒng)脆弱性的攻擊及其防御技術(shù)[J]. 電信科學(xué), 2017, 33(Z1): 108-116.
CHEN W, CHEN L R, XU X T, et al. Attack and defense technology based on Web application system vulnerability [J]. Telecommunications Science, 2017, 33(Z1):108-116.