“免疫杀手” Deep X-RAY
對于人體來說,免疫系統是抵抗病毒的“安全防線”。而對于企業來說,WAF(Web Application Firewal,簡稱WAF)就好比企業安全的免疫系統,它是網絡安全邊界上的第一道防線,幫助企業抵御病毒入侵。
近日,騰訊朱雀實驗室發現了一種全新的攻擊技術,能夠借助機器學習,以黑盒方式探測出WAF后端規則,從而實現完美規避。對于企業來說,這無疑是個“免疫殺手”。新技術的出現,必然會帶來新的影響。唯有不斷探索安全的邊界,提前發現風險,才能促進行業安全水平提升。
朱雀實驗室是TEG安全平臺部下設的安全實驗室,專注于實戰攻防和AI安全研究,通過發掘騰訊業務和前沿技術的安全風險,以攻促防,守護騰訊安全。
一、網絡邊界的免疫系統“WAF”
2019年底出現的新冠病毒“COVID-19”,以迅雷不及掩耳之勢在全球肆虐。在疫苗出現之前,抵抗病毒靠的是自身免疫力,它是人體的一道“防火墻”,抵抗各種病毒細菌的入侵。
WAF(Web Application Firewal,簡稱WAF)就好比企業安全的免疫系統,它是網絡安全邊界上的第一道防線,被廣泛的應用在了電子商務、企業門戶、博客論壇等諸多類型的站點中。類似于人體免疫力抵御病毒的入侵,WAF免疫系統抵擋外部黑客入侵、攻擊、滲透,從而防止商業機密被盜取、用戶數據被泄漏等安全事件的發生。通常WAF系統基于多條規則(我們稱之為正則表達式)來攔截外部攻擊的,這就好比免疫系統中的白細胞殺死侵入人體的病毒細菌。WAF系統中的規則就好比人體的白細胞,而病毒和細菌便是常見的網絡攻擊,例如sql注入攻擊。
二、探測防御系統的X光
當人體免疫系統出問題時,病毒細菌便會趁虛而入,造成疾病的產生。而對于WAF系統也是同樣的道理,當黑客掌握了WAF規則的漏洞的時候,便可繞過防御系統繼續攻擊,危害企業安全。那么如何逆向出規則呢?
我們首先看看安全專家是如何做的,這里以ModSecurity中的一條防護規則為例,updatexml對于做滲透的同學都很熟悉,它常用在報錯注入當中用來獲取數據。
防護規則:(?i)\bupdatexml\W*\(
分解這條規則,如上圖所示,有兩個比較重要的部分,邊界匹配\b和NonWord匹配\W,我們再來看下邊的圖表,以\W為例,它代表非字符集,也就是數字、大小寫字母、下劃線之外的字符。這里我們可以通過輸入不同字符得到的反饋來推測出正則單元,例如輸入a1_得到pass反饋,輸入特殊字符等等得到block反饋,進而通過集合運算知道這里是一個\W規則。
這里以一個例子說明如何得到完整的規則的。當人工看到一條被攔截的payload的時候,首先關注的肯定是某個關鍵字,例如這里的updatexml,基于關鍵字我們通過不斷增加、減少、修改字符來測試規則得到反饋,目的是找出一個臨界點,此時修改或是減少任意一個字符都不在匹配規則,達到了最小匹配,也就是所謂的種子payload:updatexml(。
mark基于種子payload,在關鍵字的邊界構造不同的字符來探測出正則單元,例如判斷大小寫是否敏感,以及使用a1_等word字符匹配關鍵字邊界得到反饋來判斷邊界匹配\b,通過在邊界添加a1_等word字符推測正則單元\W,最終我們合并得到完整規則:(?i)\bupdatexml**\W***\(
總結一下,人工探測工作概括為這四點:
推測最小匹配單元(種子payload)
基于種子payload探測正則單元
合并正則單元得到完整規則
測試規則準確性。
思考整個人工探測的過程,我們發現有很多不足之處,一方面依賴測試人員的水平,經驗不足的人未必能夠完成,另一方面存在大量的重復勞動,而且每個人的經驗也是有限的,很難覆蓋到全部攻擊方法,如何實現自動化是一個迫切需要解決的問題。
三、Deep X-RAY竊取你的防護策略
考慮到機器學習強大的學習能力,當提供足夠量的數據時,算法完全可以學習到這種經驗,將安全專家的安全經驗通過數據驅動的方式沉淀起來,從而自動化的批量規則逆向。
數據驅動的核心任務是使用模型學習數據中包含的規律,因此首要的工作是收集payload數據,payload可看作是一段文本,通常詞向量模型預訓練,生成每個單詞的分布式表示,然后在這些payload中使用注意力機制抽取出種子payload,對種子payload的每個位置通過推薦模型推薦出可能的探測單詞,根據正負反饋反推出該位置的正則單元,經過重復次數探測后處理后得出該種子payload對應的防護策略。
3.1 數據采集
數據決定了效果的上限,而模型只是逼近這個上限。因此,高質量、覆蓋廣的攻擊payload,是本項目的一個關鍵,這里我們選擇了ModSecurity開源WAF作為payload產生器。
具體來說,在ModSecurity開源的規則集中,利用遍歷算法將復雜的正則表達式自動化拆解為單一規則。例如:({'REQUEST_HEADERS'}, '^(?:ht|f)tps?://(.*?)\\/')拆解為http://(.*?)\\/、https://(.*?)\\/等多個獨立規則,然后對規則進行分詞,對縮略形式的規則單元替換成對應的字符,如'\d'替換成0,'\w'替換成a, '.*'替換成a,最終形成諸如http://a/、https://a/、ftp://a/等形式的攻擊payload。
在Python正則表達式庫中,可以對原始正則表達式解析,遍歷這棵樹就能產生很多條被命中的payload,如果修改其中的一部分,會產生不命中的payload,這樣就獲得了原始正負樣本數據。
\bupdatexml\W*\('解析樹
3.2 預訓練詞向量
既然有了數據,那么AI算法可以做哪些事呢?我們首先想到的是將payload中的安全經驗沉淀下來,即單詞之間是怎么搭配的,哪些單詞意思又是相近的,這實際上是一個自動化提取Payload的文本特征的過程。
在機器學習中,有一類預訓練算法,通過自監督的方式去學習特征。在這里,我們應用一種稱為詞向量的技術提取特征。舉個例子,如上圖所示,劃定一個固定大小的窗口,通過黑色的中間詞預測他的鄰居,也就是綠色的單詞,就可以獲得每個單詞的特征表示。在具體實現中,使用一個單隱藏層的淺層網絡來完成,這里獲得的詞向量特征,會應用在后續AI模型任務中。
3.3 種子payload生成
根據前面人工推斷的流程,要解決的第一個問題就是如何從原始payload中產生種子payload,以適應不同WAF產品下的檢測規則變化問題。如下圖所示,這條payload中實際上包含了多個攻擊部分,如果不加處理直接進行探測,會難以確定真正起作用的部分。因此,我們需要使用控制變量法,將其中所有的攻擊子序列提取出來。
這里我們應用深度學習中的注意力機制來解決關鍵詞定位問題。什么是注意力機制呢?我們用一個生活中的例子來講解。當你和你的朋友在酒吧聊天時,盡管環境很嘈雜,但你仍然可以聽清楚他說的每一句話,因為你把環境中無關緊要的背景都忽略了,只關注對話內容,但是,如果服務員突然喊你的名字,你立刻就會有所反應。這個例子說明,注意力就是一種加權機制,能夠動態的調節關注點,對結果有影響的內容會被重點突出來。
注意力機制的核心思想是從關注全局到關注局部,關注那些對最終結果起作用的局部特征,因此通過注意力機制,我們可以得出每個單詞對最終結果的重要性排序。
回到我們的場景中,這里的注意力機制就是計算每個單詞對block和pass這兩種標簽的重要性的反饋,進而縮小搜索空間和嘗試次數。具體到實現上,就是對輸入的payload提取特征后后,給每個單詞一個權值,這個權值在訓練分類模型的過程中不斷優化,最終在預測過程中,只需取出payload中對應的權值,進行排序即可。
3.4 探測單詞推薦
有了種子payload后,探測過程也能自動化嗎?考慮到人工探測過程是基于專家經驗的,在updatexml和(之間,專家會認為可能會優先檢測特殊符號,這種經驗從算法的角度來看是可以自動化建模的:首先依據經驗抽取候選探測集,根據探測結果修正預期,讓模型記住該環境下的習慣性搭配,然后把它應用在新payload探測過程中。
因此,這里我們構建了一個簡單的推薦算法模型,從被block和pass的數據集開始,訓練分類模型,根據預測結果進行線上探測,探測結果作為新的訓練集,如此迭代,最終實現增量學習,讓模型變得越來越準確。從實現的角度來看,也是比較簡單的,在提取的特征基礎上通過池化層降低維度,最后接一層Softmax輸出每個候選單詞的概率,選擇概率最大/最小的,即黑樣本和白樣本,探測數量達到閾值,例如6后,即停止此次探測。
這里給出一張圖描述總體的探測流程,
四、實驗
首先,我們針對AWS WAF進行了攻擊,并針對每一步做了演示圖。
第一步:基于 AWS WAF 對大量攻擊 Payload 的不同響應結果,AI 算法反推并打印 WAF規則。
第二步:我們將打印的規則部署為本地 WAF。
第三步:對比驗證,對于同一Payload集合的表現和 AWS WAF 高度一致,擬合度達到 93.8%。
通過這個測試案例,我們可以看到AI針對云上的服務可以大大提升攻擊效率和攻擊規模,攻擊者可以輕松獲取模型規則,進而實施繞過,獲取敏感數據。
我們還針對Google Cloud和Fortinet的WAF策略進行了測試,這些產品的防護策略與ModSecurity類似,得到的擬合率全部達到95%以上。
五、反思
5.1 場景啟發
除了WAF這種場景外,該竊取方法也可用于風控規則策略,根據線上反饋探測打擊邊界,進而實現繞過。但是這種攻擊也有難以覆蓋的場景,如果WAF使用基線模型分析請求并比較與正常業務的偏離程度,即類似白名單方式,那么是難以窮盡的,此外,如果是基于AI的后端策略,由于考慮上下文,該策略很難以正則表達式的形式顯式輸出來,這類模型也就難以生效。
在實驗的過程中,我們也發現,部分WAF產品會拒絕響應單一IP多次請求,這種場景下可使用秒撥IP方式對抗,一方面防止IP被封,另一方面也可以并行處理,縮短竊取時間。此外,對于語義模型&AI模型能力克隆,學術界也有一些研究,通過構建本地影子模型、合成數據增強等方式,可以以一個黑盒的方式復制原始模型的能力,在安全領域的頂會中,也出現了多篇論文。
5.2 防御措施
從防御的角度看,抵御竊取攻擊最直接的方法是使用偽標簽干擾模型訓練過程,重寫http響應,加深標簽的不確定性。后臺策略在阻斷惡意payload時,返回的響應從403變成200,這樣錯誤的標簽實際上是一種數據投毒,會導致模型無法正確訓練,從而使得竊取攻擊失效。
此外,通過限制單個IP的請求次數、請求速率,多次攻擊時跳出驗證碼驗證等方式,可以大大提升竊取攻擊的工程難度和代價,讓攻擊者望而卻步。
5.3 研究展望
前面我們打印出了WAF防護規則,這些規則定義一個檢測語言,實際上我們可以對這些規則進一步分解,構建如下圖所示的巴克斯范式語法分解樹,遍歷這棵樹,就會生成很多決策邊界的payload,利用遺傳算法進行變異等操作,輔助以排序模型,可以篩選出那些最有可能繞過的payload,實現自動化的bypass。當然,這方面的研究比較前沿,基于GAN/Seq2Seq等生成模型的也有不少,這些都給了我們進一步探索的思路。
六、新的威脅
Deep X-Ray是安平朱雀實驗室在AI安全領域的一次嘗試,它暴露出了目前主流云廠商防御系統存在的問題,云上安全面臨著嚴重的安全挑戰。就像變異的新冠病毒一次次突破人體的免疫系統,威脅著人類的生命健康。
新技術的出現,必然會帶來新的影響。正如AI的成熟,讓生活更加便捷,讓生產更加高效,但也帶來了新的威脅。人工智能的崛起,在一定程度上也讓網絡安全領域,將掀起一次技術變革。當黑客用AI把自己武裝到牙齒的時候,其危害遠遠超過傳統的網絡攻擊手段。因此現在開發的基于 AI 的防御機制在很大程度上也可能用于基于 AI 的攻擊。Deep X-Ray對抗AI版本的門神這樣的場景,會在未來的攻防實踐中拉開序幕,AI vs AI才是安全的終極形態!
總結
以上是生活随笔為你收集整理的“免疫杀手” Deep X-RAY的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式之系统底层原理
- 下一篇: 大牛书单 | 新年聊创新:技术人必备思维