

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