Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
www.cloudsec.com/tw | #CLOUDSEC
從 HITCON 駭客戰隊挑戰美國CGC天網機器人探討自動攻防技術發展(Autonomous Hacking and Patching)
李倫銓
HITCON CTF 領隊
感謝趨勢科技支持台灣資安人才挑戰世界駭客競賽
2016/8/25 Cloudsec 2016 2
• HITCON CTF領隊與競賽負責人• 交大資工所,台大電機所博士候選人,
目前任職 聯發科技 IT 部門。• 專長:網路安全相關技術、惡意程式
與流量分析、雲端服務規劃與研究。
2016/8/25 Cloudsec 2016 3
這場talk是講八月在DEFCON的兩個比賽
1. DARPA 辦的 CGC (第一次辦)2. LegitBS辦的 DEFCON CTF 2016
2016/8/25 Cloudsec 2016 4
DARPA CGC(Cyber Grand Challenge) 2013-2016
2016/8/25 Cloudsec 2016 5
DARPA這個 CGC企劃究竟是什麼?
CGC (Cyber Grand Challenge)歷史上第一次完全由電腦互打的競賽,完全沒有人類參與
2016/8/25 Cloudsec 2016 6
• 2003年1月25日,SQL Slammer蠕蟲短短10分鐘內,感染七萬多台主機。
• 2010 MS LNK漏洞MS10-045,微軟Patch一次還不夠,2015年又被挖出沒修好。
2016/8/25 Cloudsec 2016 7
NSS這張圖顯示了當exploit出現時,大部分的IPS無法偵測
來源: DARPA2016/8/25 Cloudsec 2016 8
FireEYE 2014年這張圖顯示,大量惡意程式生成期越來越短
來源: DARPA2016/8/25 Cloudsec 2016 9
DARPA認為光靠人類是不夠的,只有靠電腦的秒級的速度和有系統的判斷,才能控制威脅。
2016/8/25 Cloudsec 2016 10
我知道你心裡會想到這個
天網要來毀滅人類了2016/8/25 Cloudsec 2016 11
當然 ~ DARPA 也想到了…
2015 CTF 比賽結束的時候,主辦單位對我們說:
“2016 的CTF ,來自全世界的駭客隊伍將一起對抗來自 DARPA 的自動攻擊機器人!”
2016/8/25 Cloudsec 2016 12
+ =
最強人類駭客大賽DEFCON CTF
CGC機器人冠軍
參在一起做成…
然後就
…. 搞死我們了2016/8/25 Cloudsec 2016 13
人類
人類
人類
人類
機器冠軍
DEFCON CTF 2016 的概念
就是一個機器人邀請人類去他家打牌的概念。用的是他的牌、牌桌也是他的。
CGC賽制
2016/8/25 Cloudsec 2016 14
CGC 背景介紹
2016/8/25 Cloudsec 2016 15
DECREE 環境 -
因為真實世界作業系統發展至今,太過複雜而且已經有各種保護機制,但DARPA給了一個簡單的起點
• DECREE上面的程式漏洞沒辦法用在真實世界的作業系統,真實世界的程式漏洞沒辦法用在DECREE裡面
• DECREE是 Opensource
單純性
限制性
2016/8/25 Cloudsec 2016 16
Text vs Code of trivial program
來源: DARPA2016/8/25 Cloudsec 2016 17
Graph of trivial program
既有 OS環境太複雜,導致分析分支太大無法運算
來源: DARPA2016/8/25 Cloudsec 2016 18
Cyber Reasoning System (CRS)
每個隊伍要做出一台CRS(Cyber reasoning System) 網路推理決策系統,來搶第一名 200萬美金
這個CRS要做到• 找出軟體漏洞• 修補軟體問題 (PCB)• 分析攻擊• 設定防火牆• 製作攻擊( POV)
• Intel Xeon 1280 cores
• 16 TB Ram
• 128 TB storage
2016/8/25 Cloudsec 2016 19
CGC 預賽與決賽
2016/8/25 Cloudsec 2016 20
David Brumley, CMU - CTF (PPP)
CTF (shellphish) 前天opensource
Dawn Song, Berkeley
師徒對決
喬治亞理工
2016/8/25 Cloudsec 2016 21
ForallsecureMAYHEM
TechxXANDRA
SHELLPHISHMechnical phish
12 3
2016/8/25 Cloudsec 2016 22
全場動畫呈現 CRS 分析、攻擊、與存活
2016/8/25 Cloudsec 2016 23
CRS 對程式的分析過程可以透過trace呈現出來
2016/8/25 Cloudsec 2016 24
剛剛噴的流量,裡面其實是參雜著存活檢測(Polls) +各隊攻擊封包(POV)
2016/8/25 Cloudsec 2016 25
每一個CB都需要通過數個Poll檢查
服務被打爆就裸出來齒輪代表修補中
2016/8/25 Cloudsec 2016 26
Availability
Security
Evaluation
除了會用不同方法檢查是否符合功能完整性,還會看time, memory usage, and space efficiency,大概共有10-30個檢查例: 12/25
0~1
1 or 2
1~2
X
X
服務有沒有被打下來1 or 2
攻擊可以成功打幾隊?例:4/6 (打下四隊)
Scoring 評分系統有三大指標
X
1002016/8/25 Cloudsec 2016 27
2016/8/25 Cloudsec 2016 28
來源: DARPA2016/8/25 Cloudsec 2016 29
原 Attack defense賽制 CGC賽制
題目量 一場約6個services,外加改版CGC共高達18x個Challenge Binaries
而這次CTF則有9個 CB
題目難度涵蓋X86、ARM等等真實生活的
程式縮小版DECREE版本(7 syscalls)的Binary模擬一
般常見服務漏洞撰寫方式
攻擊流量 提供隊伍下載攻擊流量提供隊伍下載攻擊流量,但不是一般網路流量,反倒是像input/output值
發動攻擊方式
隊伍寫出exploit直接打對方隊伍繳交所謂POV給裁判來統一驗證
POV 有tyep1 type2兩種
存活檢查由主辦方直接檢測隊伍的
services繳交PCB(patched Challenge Binary)給
裁判來統一驗證
修補 不給root只能做binary patch做出PCB繳交給裁判驗證,但是提交
PCB下一回合將會0分,應該是不讓你自動亂修補
其他 不給root不能設防火牆可以繳交防火牆規則,用類似regular
expression來阻擋2016/8/25 Cloudsec 2016 30
要自動化前,讓我們先了解人類如何找漏洞、修復漏洞、寫出exploit
2016/8/25 Cloudsec 2016 31
人類分析binary已經有很多好工具了
2016/8/25 Cloudsec 2016 32
2016/8/25 Cloudsec 2016 33
2016/8/25 Cloudsec 2016 34
再來看,機器如何自動化?
• 如何 Crash binary ?• 動態分析 / Fuzzing
• Symbolic Execution
• 如何自動 Patch? Generic patch?
• 如何自動分析 Network 封包並 Replay?
2016/8/25 Cloudsec 2016 35
如何自動 Patch? Generic patch?
But!! 可能程式中有很多這種區塊,大量的對不確定記憶體存取加上檢查,會有效能問題。而CGC的poll檢查就包括了執行效能!!
來源: forallsecure
假設ecx指向下一個寫入的位置,並在這程式存在out-of-bound read/write, 那我們可以插入一段程式去做檢查來patch掉這個漏洞
2016/8/25 Cloudsec 2016 36
來源: DARPA2016/8/25 Cloudsec 2016 37
CRS 設計 –以ShellPhish為例
來源:shellphish
http://angr.io
2016/8/25 Cloudsec 2016 38
人類 VS 機器 - 獲勝的關鍵 – Binary 複雜度
• 人類• 優勢:
• 人類擅長分析以前沒出現過的pattern
• 可以適應主辦程式寫錯
• 劣勢:• 要睡覺
• 錢給少,心就委屈,然後就會犯錯
•機器• 優勢
• 能處理大量題目
• 速度快、能升級
• 劣勢• 目前難以處理較為複雜的題目
• 沒辦法適應環境變化或錯誤
• 李師父,攻他電路
2016/8/25 Cloudsec 2016 39
辦 CGC比賽還有一個關鍵,就是DATA SET(題目)的完整性
CGC Binary是否足以代表目前幾個重要的漏洞問題?
Buffer overflow?Stack overflow ?Heap overflow?Memory leakage?
2016/8/25 Cloudsec 2016 40
Finalists POV
來源: DARPA題目
2016/8/25 Cloudsec 2016 41
Finalists – POV on bottom, avail on Top
來源: DARPA題目
2016/8/25 Cloudsec 2016 42
Finalists – CWE-120 Buffer Overflow
來源: DARPABO分布2016/8/25 Cloudsec 2016 43
Finalists – CWE-121 Stack Overflow
來源: DARPA2016/8/25 Cloudsec 2016 44
Finalists – CWE-122 Heap Overflow
來源: DARPA2016/8/25 Cloudsec 2016 45
Finalists – CWE-125 Out of Bounds Read
來源: DARPA2016/8/25 Cloudsec 2016 46
Finalists – CWE-787 Out of Bounds Write
來源: DARPA2016/8/25 Cloudsec 2016 47
Finalists – CWE-476 Null point Deref
根據各隊解題狀況的數據顯示,機器非常擅長處理這類漏洞
來源: DARPA2016/8/25 Cloudsec 2016 48
整場 CTF 賽事感想
1. 0day 不值錢,天才都哭了,你會replay就有機會
2. CTF主辦單位題目難度無法提高,因為竟然要考慮到機器的心情
• 美國大駭客 Geohot、韓國天才 Loki 無法發揮人類最高智商,loki 打完生氣到跑回飯店。
3. 難度沒提高也就算了,D1 , D2機器人線還沒接好所以沒發揮機器人優勢
• 也不知道還能不能看到下次機器人發揮的機會
2016/8/25 Cloudsec 2016 49
2002-2016年 DEFCON CTF 前三名國家來看資安人才發展
2016 PPP USA b1o0p CHINA DEFKOR South Korea
Taiwan
Taiwan
台灣CP值真的還不錯,值得繼續投資
2016/8/25 Cloudsec 2016 50
那麼回到大家關注的問題,機器人打得贏人嗎
• 其實這次比賽並不完整,因為線沒接好
• 冠軍Mayhem 斷線兩天,第二天結束還可以打贏美國兩隊(Dragon Sector 和 Samurai ) XDDD
第一天抱怨API
第二天抱怨流量沒進來
2016/8/25 Cloudsec 2016 51
然後~~~~ CTF 最後一天接上完整流量
• Mayhem 竟然 9 個 binary 它找到 7 個exploit,6 個上 patch。
秘辛#1 :機器人冠軍Mayhem在打 CGC聽說打了一半就當機,最後還拿CGC冠軍。
八卦是-> 前面的binary聽說比較簡單2016/8/25 Cloudsec 2016 52
秘辛#2 :• PPP的 Patch 留有後門。賽制中你可以拿其他隊的patch自己用,
所以全場很自然的會去抓第一名隊伍(which is PPP)的patch來用,結果安裝他的patch之後全場都被他打,這招打得全場呱呱叫。據說~~ Mayhem機器人也有這個功能
2016/8/25 Cloudsec 2016 53
Conclusion• DARPA 已經release CGC相關資源,包括初賽題目、計分狀況、比賽規則、
DECREE github 相關code、決賽題目等等。
• 第三名CGC隊伍 Shellphish 前天公開他們的機器人原始碼
• 自動化攻防究竟會不會打敗人類? 電腦會不會統治世界?
• DARPA的成功在於,• 找到一個好理由,讓大家投入自動化挖洞研究• 設計一個好賽制,讓大家自己拼命去爭取那200萬美金• 拉DEFCON CTF下水,讓機器人當一隊,還說是全人類要挑戰電腦,創造議
題
• CGC企劃,成功把產業趨勢、學術研究上最難的dataset驗證、CTF大賽串起來,造成相當的話題,便是給予資安環境相當高的貢獻
• 簡單/固定樣式的洞 -> 交給機器人 。複雜/創新的洞 -> 交給人類
2016/8/25 Cloudsec 2016 54
Script kiddies
以前
已知漏洞
Metasploit
未來
Script kiddies
未知漏洞
Mayham
Take Control ?? 小孩也行
2016/8/25 Cloudsec 2016 55
Any Question? [email protected]