View
2.549
Download
3
Category
Preview:
Citation preview
HITCON GIRLS 講座
惡意程式分析與密碼學:深⼊入你不可不知的資訊安全
成功⼤大學 2016.4.28 HITCON GIRLS 講座
今⽇日⼤大綱• 蜘⼦子珣 - 惡意程式分析基礎知識
• Turkey - 惡意程式分析實際操作
• 阿⽑毛 - 好親切密碼學
前情提要• 今天是初學者課程
• 很多的專有名詞,都會簡單介紹!
• 但是深⼊入瞭解後你會有⼀一個新世界:P
• 希望這場演講可以讓你感受到
• 「分析惡意程式其實很有趣」
• 「資訊安全並不難」
安安你好
蜘⼦子珣 HITCON GIRLS 副總召 HITCON GIRLS 讀書會惡意程式分析組組⻑⾧長 NISRA 前前前會⻑⾧長
我的資安學習旅途?
⼤大學四年接觸 Network Security
碩⼠士兩年接觸惡意程式分析 順便兼任組合語⾔言助教
Outline• 社群經驗分享
• 資訊安全學習地圖
• HITCON GIRLS 惡意程式分析組
社群經驗分享
社群經驗分享
為什麼要有社群?
社群可以給我什麼?
社群是⼀一個⼈人?還是組織?
為什麼我要花費時間參與社群?
想像⼀一下• 你有沒有曾經對某個名詞感興趣
• 突然覺得有點想知道原理
• 閱讀完之後,發現你掌握了 60%
• 剩下的 20% 你有點困惑、感覺抽象、模模糊糊
• 最後的 20% 你看不懂
想像⼀一下• 在世界遙遠的另外⼀一頭,有個⼈人
• ⼀一樣懂60%,恰好包含你覺得有點模糊的那20%
• 接下來問題來了
1. 你要怎麼認識這個⼈人?
2. 你要怎麼發現他也在研究這項名詞?
為何答案是社群?• 社群的形成就是「想學」的衝勁
• 從學習與討論出發
• 每個社群都有各⾃自的⾵風格
• 社群代表著,這裏有許多⼈人可以成為你的夥伴
為何答案是社群?• 「蛤?我上課已經這麼累了,還要學習?」
• 還記得剛剛假想情境的出發點嗎?
• 「你對某個名詞感興趣」
• 出發點是,你的興趣
為何答案是社群?• 你現在坐在這裡,代表你當初在填科系的時候,做了「抉擇」,這個抉擇可能出發於「你的興趣」
• 什麼時候開始,壓⼒力>>>熱情?
我⾃自⼰己的⼼心路歷程ˊ・_・ˋ• ⾯面對惡意程式分析,我也是初學者
• 曾經對某個名詞感興趣→逆向⼯工程、反組譯
• 讀書會⺫⽬目前在閱讀「逆向⼯工程核⼼心原理」
• 勇敢學習(๑•̀ㅂ•́)و✧
那接下來聊聊 HITCON GIRLS
HITCON GIRLS 資安⼥女孩• 由⼀一群對資安有興趣,想學習更多技術的⼥女孩們所組成。
• 成⽴立於2014年10⽉月
• 2014年12⽉月 Workshop
• 2015年7⽉月讀書會發表
2014年12⽉月 Workshop
2014年12⽉月 Workshop
2015年7⽉月讀書會發表
HITCON GIRLS 讀書會• 讀書會
• 我們分成不同的組別,進⾏行討論、學習和互補,惡意程式分析組針對 Malware 進⾏行分析,內容包含動態⼯工具、反組譯和惡意⾏行為的討論。
• Web PT 組
• Android PT 組
• 網路安全組
• CTF 組
HITCON GIRLS 讀書會• 粉絲團
• https://www.facebook.com/HITCONGirls/
• 公開交流區
• https://www.facebook.com/groups/HITCONGIRLS/
• 歡迎加⼊入交流!
資訊安全學習地圖
資安學習地圖• 資訊收集
Information Gathering
• 網路安全 Network Security
• 網站與網⾴頁應⽤用程式安全 Web Security
• 系統安全 System Security
• 加密與解密 Cryptography
• 惡意程式檢測 Malware Detection
• 逆向⼯工程 Reversing Engineering
• 數位鑑識 Digital Forensics
• ⾏行動裝置 Mobile Devices
資安學習地圖• 資訊收集
Information Gathering
• 網路安全 Network Security
• 網站與網⾴頁應⽤用程式安全 Web Security
• 系統安全 System Security
• 加密與解密 Cryptography
• 惡意程式檢測 Malware Detection
• 逆向⼯工程 Reversing Engineering
• 數位鑑識 Digital Forensics
• ⾏行動裝置 Mobile Devices
資安學習地圖• 資訊收集
Information Gathering
• 網路安全 Network Security
• 網站與網⾴頁應⽤用程式安全 Web Security
• 系統安全 System Security
• 加密與解密 Cryptography
• 惡意程式檢測 Malware Detection
• 逆向⼯工程 Reversing Engineering
• 數位鑑識 Digital Forensics
• ⾏行動裝置 Mobile Devices
資安學習地圖• 「數位鑑識」 Digital Forensics
• 覺得家裡好像有被侵⼊入過,於是做⼀一些檢查。
• 「惡意程式檢測」 Malware Detection
• 地板上發現⼀一顆炸彈,移動到安全環境做檢驗。
• 「逆向⼯工程」 Reversing Engineering
• 理解運作原理、威脅性,反向尋找兇⼿手
HITCON GIRLS 惡意程式分析組
學習框架• 何謂惡意程式?
• 分析惡意程式⼩小撇步
• 從什麼層⾯面著⼿手?
• 逆向⼯工程:靜態與動態⼯工具
第⼀一件事情: 什麼是惡意程式?
何謂惡意程式 Malware• 定義
• 蓄意撰寫來進⾏行惡意⾏行為的程式
• 特性
• 強⾏行安裝、抵制移除、擅⾃自修改設定
• 干擾或佔⽤用系統資源
• ⾮非允許狀況下竊取使⽤用者資料
何謂惡意程式 Malware• 簡單來說,惡意程式就是
• 會干擾你使⽤用電腦的軟體!
• 會暗地從你⾝身上偷⾛走資料、帳密甚⾄至是⾦金錢!
• 嚴重的話甚⾄至間接影響你的⾝身⼼心健康!
Grayware 的存在• 具備下列特徵的應⽤用程式:
• 具有擾⼈人的⾏行為模式
• 其實好像沒損失,但⼜又有點困擾
• 介於「好軟體」與「壞病毒」的灰⾊色地帶
常⾒見的惡意程式種類• 分類⽅方式太多種了!
• 運作⽅方式:⽊木⾺馬、蠕蟲、勒索軟體⋯⋯
• 惡意⺫⽬目的:竊取資料、詐騙、破壞⋯⋯
• 格式:EXE、DLL⋯⋯
• 相關技術:加殼、DLL Injection、API Hook
• 既獨⽴立⼜又可以並存,複雜奔放的⽣生態圈ಠ_ಠ
第⼆二件事情: 我們要在哪裡分析?
惡意程式分析環境• 使⽤用虛擬環境分析
• 避免觸發程式後,因感染造成真實傷害
• 使⽤用 Snapshot
• 記錄乾淨的環境,⽅方便每次分析後還原
• 建⽴立內網連線
第三件事情: 我們要分析什麼?
惡意⾏行為⼊入⾨門• 「⾏行為」泛指程式執⾏行時,具有⺫⽬目的之動作,例如對特定檔案的讀取、新增、修改、刪除
• 對於系統來說,哪些會被當作惡意⾏行為針對⺫⽬目標?
惡意⾏行為⼊入⾨門• 關⼼心下述部分
• Registry Key
• Process
• Network
• File system
惡意⾏行為⼊入⾨門• 關⼼心下述部分
• Registry Key
• Process
• Network
• File system
⼩小知識 - Registry• Registry ⼜又稱登錄檔或註冊表
• ⽤用於儲存系統和應⽤用程式的設計資訊
• C:\Windows\regedit.exe
⼩小知識 - 啟動項• 有些程式每次開機就會⾃自動啟動,這些程式的資訊都必須寫進啟動項!
• Registry 中開機先執⾏行的項⺫⽬目,就是啟動項
• HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
陰魂不散的惡意程式 Σ(・ω・ノ)ノ
惡意⾏行為⼊入⾨門• 關⼼心下述部分
• Registry Key
• Process
• Network
• File system
⼩小知識 - Process• 觸發程式 → 被載⼊入記憶體 → 產⽣生程序了!
• 程序 (process)可以說就是正在運作中的程式
PID
執⾏行者的權限屬性參數
所需程式碼與相關資料
記憶體中程序產⽣生的相關資料
使⽤用者執⾏行
載⼊入記憶體
磁碟中的程式
假設有些程式正在執⾏行, 但你卻看不到,是不是很恐怖?
Σ(・ω・ノ)ノ
惡意⾏行為 - 常⾒見⾏行為懶⼈人包• 修改啟動項 HKLM\…\CurrentVersion\Run
• 有 Process 但你卻看不到執⾏行畫⾯面
• 讀取系統資訊
• 連線⾄至特定的 IP 或 DNS
• ⾃自我刪除、複製檔案
第四件事情: 我們要⽤用什麼去分析?
惡意程式分析⼯工具• Behavior Tool
• Autoruns
• Process Monitor / Process Explorer
• TCP View / TCPLogView
• WireShark
• Online Sandbox
• Virustotal
• Comodo
• ⾃自⾏行架設 Sandbox
• Cuckoo
• CaptureBat
分析⼯工具• 都是免費提供,⼤大家可以下載來玩玩看
• Autoruns
• Process Explorer
• TCP View乾淨狀態
觸發惡意程式
系統時間
會多什麼呢?
污染狀態
分析⼯工具 - Autoruns
分析⼯工具 - Autoruns• 檢查 Registry Key 是否被新增、修改
分析⼯工具 - ProcessExplorer
分析⼯工具 - ProcessExplorer • 檢閱記憶體中在執⾏行的所有程序及其⺫⽬目錄
• 作⽤用類似於⼯工作管理員
• 優點在可顯⽰示動態連結函式庫(DLL)檔、簽章
分析⼯工具 - TCPView• 顯⽰示連線記錄、是由哪⽀支程式造成的
⼩小結• ⺫⽬目前已經解到「惡意⾏行為」跟「可⽤用⼯工具」
• 但我們想要的東⻄西只有了解⾏行為嗎?
第五件事情: 拼湊出惡意程式真⾯面⺫⽬目 等下會有⼈人 Demo!
DEMO !
第六件事情: 我們回頭想想分析只有⼀一種⽅方法嗎?
難道永遠都只能防守?
逆向⼯工程• 逆向⼯工程 Reverse Engineering
• 泛稱對⺫⽬目標進⾏行分析研究,得出其流程、結構
• 反組譯
• 逆向⼯工程應⽤用在軟體裡的其中⼀一種⽅方法
• 把機器碼轉換成組合語⾔言
逆向⼯工程 - 靜態與動態
動態分析 靜態分析
優可知執⾏行時的真實⾏行為
可信度⾼高
分析範圍較⼤大、︑較完整不受特定招數影響不需要運⾏行程式
缺容易被躲避需要運⾏行程式
被混淆的程式碼分析困難無法得知執⾏行時的資訊
動態分析 - ⼯工具 • Immunity Debugger 哈囉!ヽ( ´∀`)ノ
• Olly Dbg 說你好!ヽ( 。∀。)ノ
靜態分析 - ⼯工具 • IDA 安安!ヽ( ´∀`)ノ
• 主打強悍的靜態分析功能
• 好⽤用程度跟價格成正⽐比
補張 IDA 介⾯面圖
初學者靜態分析⼩小撇步• 第⼀一個難關:加殼!
• 第⼆二個難關:從何看起?
• 第三個難關:⼀一堆看不懂的 API !
• 第四個難關:想要了解程式內容!
初學者靜態分析⼩小撇步(1)• 第⼀一個難關:加殼!
• 加殼分成加密殼、壓縮殼
• 為了不讓程式被分析,⽽而⽣生的保護機制
• 如何解?
• 先了解使⽤用的是哪種殼
• 找相對應的脫殼⼯工具 / ⼿手動脫殼
UPX加殼⼩小範例
?
UPX加殼⼩小範例
初學者靜態分析⼩小撇步(2)• 第⼆二個難關:從何看起?
• 發現程式碼很⻑⾧長⋯⋯很⻑⾧長⋯⋯⋯⋯
• 如何解?
• 使⽤用 String Windows 起⼿手!
• 字串⼤大多會明碼留在程式裡!
天啊是字串⼩小範例
初學者靜態分析⼩小撇步(3)• 第三個難關:⼀一堆看不懂的 API !
• 粉紅⾊色的都是 Windows 的API
• 但⋯⋯什麼是API?
• 如何解?
• 就查啊!
什麼是 API ?• API (Application Programming Interface)
• 應⽤用程式開發介⾯面
• 為了⽅方便使⽤用 Function ⽽而⽣生
• 只需要了解參數即呼叫,進⽽而使⽤用該功能
Windows API ⼩小範例
Windows API ⼩小範例
初學者靜態分析⼩小撇步(4) • 第四個難關:想要了解程式內容!
• ⋯⋯
• ⋯⋯
• ⋯⋯
初學者靜態分析⼩小撇步(4) • 第四個難關:想要了解程式內容!
• 你可以選擇
• ⋯⋯訪問惡意程式撰寫者
• ⋯⋯通靈(?)
• ⋯⋯或者是從現在開始學組合語⾔言
我覺得學組合語⾔言 ⽐比較簡單啦
什麼是組合語⾔言?
age = input(‘How old are you?’)
if (age <18):
print ‘No you can’t drink beer.’
mov edx, OFFSET HowOldAreYou;
call WriteString;
call readint;
cmp eax,18d;
jb LessThan18;
LessThan18:
mov edx,OFFSET NoYouCantDrinkBeer;
call WriteString;
Python Assembly Language難讀、難寫
什麼是組合語⾔言?• ⽤用來跟機器溝通的低階語⾔言
• ⽐比機器碼 01010000 好讀
• ⽐比⾼高階語⾔言難讀
• 但是⽐比⾼高階語⾔言執⾏行速度快,佔⽤用記憶體⼩小
• 舉凡 MASM、NASM
為何是組合語⾔言?• 惡意程式通常是執⾏行檔
• 以 .EXE (executable file) 副檔名存在
• 是看不到原始碼的啊啊啊!
• 透過⼯工具反組譯後,看到的正是組合語⾔言
慘了!接下來我好像⋯⋯ 得講組合語⾔言?
才不要呢XD
靜態分析 - ⼩小結• ⼩小撇步是我⾃自⼰己學靜態分析遇到的困境和SOP
• 「想要了解程式內容」是最花時間和經驗的部分
• ⽽而且才是最精華、最難以傳授的
• 通常也會跟⼀一點作業系統、組合語⾔言相關知識
• 沒有騙你真的要好好念書啊
惡意程式分析 - 懶⼈人包第⼀一件事情:什麼是惡意程式?
第⼆二件事情:我們要什麼環境分析?
第三件事情:我們要分析什麼⾏行為?
第四件事情:我們要⽤用什麼⼯工具去分析?
第五件事情:Demo!實作!
第六件事情:分析只有⼀一種⽅方法嗎?
初學者靜態分析⼩小撇步 - 懶⼈人包第⼀一個難關:有沒有加殼?如何解殼?
第⼆二個難關:資訊量很多,從哪個地⽅方起⼿手?
第三個難關:遇到看不懂的 API ,怎麼辦?
第四個難關:如何了解程式內容?
感謝聆聽,問題有嗎? OwO/
Q:Windows 的惡意程式⽐比較多嗎? A:攻擊者投⼊入了⼼心⼒力做惡意程式,就會希望獲得最⼤大收益,依據時代做調整,往往哪個作業系統分佈廣散、漏洞⼜又多,就會被當作⺫⽬目標
Q:有些惡意程式會把 Sandbox 打穿,有遇過嗎? A:還沒有遇到,有樣本的話我會很想分析,不過就得有相對應的分析策略和設置XD
Q:如果我有⼀一個程式,我要怎麼知道他是惡意程式?有沒有除了上述四個之外的⽅方式知道? A:⼀一般⼈人要辨別這是惡意程式⽐比較困難,⽐比較普遍的⽅方法就是把它丟進 VirusTotal 讓防毒軟體公司告訴你
Q:有沒有遇到綁架⾸首⾴頁的惡意程式? A:有,就會有⼀一些瀏覽器的相關設定操作
Recommended