Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

HITCON GIRLS 成大講座 基礎知識(蜘子珣)

HITCON GIRLS 成大講座:惡意程式分析與密碼學
惡意程式分析基礎知識

  • Login to see the comments

HITCON GIRLS 成大講座 基礎知識(蜘子珣)

  1. 1. HITCON GIRLS 講座 惡意程式分析與密碼學:
 深⼊入你不可不知的資訊安全 成功⼤大學 2016.4.28 HITCON GIRLS 講座
  2. 2. 今⽇日⼤大綱 • 蜘⼦子珣 - 惡意程式分析基礎知識 • Turkey - 惡意程式分析實際操作 • 阿⽑毛 - 好親切密碼學
  3. 3. 前情提要 • 今天是初學者課程 • 很多的專有名詞,都會簡單介紹! • 但是深⼊入瞭解後你會有⼀一個新世界:P • 希望這場演講可以讓你感受到 • 「分析惡意程式其實很有趣」 • 「資訊安全並不難」
  4. 4. 安安你好 蜘⼦子珣 HITCON GIRLS 副總召 HITCON GIRLS 讀書會
 惡意程式分析組組⻑⾧長 NISRA 前前前會⻑⾧長
  5. 5. 我的資安學習旅途? ⼤大學四年接觸 Network Security 碩⼠士兩年接觸惡意程式分析 順便兼任組合語⾔言助教
  6. 6. Outline • 社群經驗分享 • 資訊安全學習地圖 • HITCON GIRLS 惡意程式分析組
  7. 7. 社群經驗分享
  8. 8. 社群經驗分享 為什麼要有社群? 社群可以給我 什麼? 社群是⼀一個⼈人? 還是組織? 為什麼我要花費時 間參與社群?
  9. 9. 想像⼀一下 • 你有沒有曾經對某個名詞感興趣 • 突然覺得有點想知道原理 • 閱讀完之後,發現你掌握了 60% • 剩下的 20% 你有點困惑、感覺抽象、模模糊糊 • 最後的 20% 你看不懂
  10. 10. 想像⼀一下 • 在世界遙遠的另外⼀一頭,有個⼈人 • ⼀一樣懂60%,恰好包含你覺得有點模糊的那20% • 接下來問題來了 1. 你要怎麼認識這個⼈人? 2. 你要怎麼發現他也在研究這項名詞?
  11. 11. 為何答案是社群? • 社群的形成就是「想學」的衝勁 • 從學習與討論出發 • 每個社群都有各⾃自的⾵風格 • 社群代表著,這裏有許多⼈人可以成為你的夥伴
  12. 12. 為何答案是社群? • 「蛤?我上課已經這麼累了,還要學習?」 • 還記得剛剛假想情境的出發點嗎? • 「你對某個名詞感興趣」 • 出發點是,你的興趣
  13. 13. 為何答案是社群? • 你現在坐在這裡,代表你當初在填科系的時候, 做了「抉擇」,這個抉擇可能出發於「你的興趣」 • 什麼時候開始,壓⼒力>>>熱情?
  14. 14. 我⾃自⼰己的⼼心路歷程ˊ・_・ˋ • ⾯面對惡意程式分析,我也是初學者 • 曾經對某個名詞感興趣→逆向⼯工程、反組譯 • 讀書會⺫⽬目前在閱讀「逆向⼯工程核⼼心原理」 • 勇敢學習(๑•̀ㅂ•́)‫✧و‬
  15. 15. 那接下來聊聊 HITCON GIRLS
  16. 16. HITCON GIRLS 資安⼥女孩 • 由⼀一群對資安有興趣,想學習更多技術的⼥女孩們 所組成。 • 成⽴立於2014年10⽉月 • 2014年12⽉月 Workshop • 2015年7⽉月讀書會發表
  17. 17. 2014年12⽉月 Workshop
  18. 18. 2014年12⽉月 Workshop
  19. 19. 2015年7⽉月讀書會發表
  20. 20. HITCON GIRLS 讀書會 • 讀書會 • 我們分成不同的組別,進⾏行討論、學習和互補,惡意程 式分析組針對 Malware 進⾏行分析,內容包含動態⼯工 具、反組譯和惡意⾏行為的討論。 • Web PT 組 • Android PT 組 • 網路安全組 • CTF 組
  21. 21. HITCON GIRLS 讀書會 • 粉絲團 • https://www.facebook.com/HITCONGirls/ • 公開交流區 • https://www.facebook.com/groups/ HITCONGIRLS/ • 歡迎加⼊入交流!
  22. 22. 資訊安全學習地圖
  23. 23. 資安學習地圖 • 資訊收集 
 Information Gathering • 網路安全 
 Network Security • 網站與網⾴頁應⽤用程式安全 
 Web Security • 系統安全 
 System Security • 加密與解密 
 Cryptography • 惡意程式檢測 
 Malware Detection • 逆向⼯工程 
 Reversing Engineering • 數位鑑識 
 Digital Forensics • ⾏行動裝置 
 Mobile Devices
  24. 24. 資安學習地圖 • 資訊收集 
 Information Gathering • 網路安全 
 Network Security • 網站與網⾴頁應⽤用程式安全 
 Web Security • 系統安全 
 System Security • 加密與解密 
 Cryptography • 惡意程式檢測 
 Malware Detection • 逆向⼯工程 
 Reversing Engineering • 數位鑑識 
 Digital Forensics • ⾏行動裝置 
 Mobile Devices
  25. 25. 資安學習地圖 • 資訊收集 
 Information Gathering • 網路安全 
 Network Security • 網站與網⾴頁應⽤用程式安全 
 Web Security • 系統安全 
 System Security • 加密與解密 
 Cryptography • 惡意程式檢測 
 Malware Detection • 逆向⼯工程 
 Reversing Engineering • 數位鑑識 
 Digital Forensics • ⾏行動裝置 
 Mobile Devices
  26. 26. 資安學習地圖 • 「數位鑑識」 Digital Forensics • 覺得家裡好像有被侵⼊入過,於是做⼀一些檢查。 • 「惡意程式檢測」 Malware Detection • 地板上發現⼀一顆炸彈,移動到安全環境做檢驗。 • 「逆向⼯工程」 Reversing Engineering • 理解運作原理、威脅性,反向尋找兇⼿手
  27. 27. HITCON GIRLS 惡意程式分析組
  28. 28. 學習框架 • 何謂惡意程式? • 分析惡意程式⼩小撇步 • 從什麼層⾯面著⼿手? • 逆向⼯工程:靜態與動態⼯工具
  29. 29. 第⼀一件事情: 什麼是惡意程式?
  30. 30. 何謂惡意程式 Malware • 定義 • 蓄意撰寫來進⾏行惡意⾏行為的程式 • 特性 • 強⾏行安裝、抵制移除、擅⾃自修改設定 • 干擾或佔⽤用系統資源 • ⾮非允許狀況下竊取使⽤用者資料
  31. 31. 何謂惡意程式 Malware • 簡單來說,惡意程式就是 • 會干擾你使⽤用電腦的軟體! • 會暗地從你⾝身上偷⾛走資料、帳密甚⾄至是⾦金錢! • 嚴重的話甚⾄至間接影響你的⾝身⼼心健康!
  32. 32. Grayware 的存在 • 具備下列特徵的應⽤用程式: • 具有擾⼈人的⾏行為模式 • 其實好像沒損失,但⼜又有點困擾 • 介於「好軟體」與「壞病毒」的灰⾊色地帶
  33. 33. 常⾒見的惡意程式種類 • 分類⽅方式太多種了! • 運作⽅方式:⽊木⾺馬、蠕蟲、勒索軟體⋯⋯ • 惡意⺫⽬目的:竊取資料、詐騙、破壞⋯⋯ • 格式:EXE、DLL⋯⋯ • 相關技術:加殼、DLL Injection、API Hook • 既獨⽴立⼜又可以並存,複雜奔放的⽣生態圈ಠ_ಠ
  34. 34. 第⼆二件事情: 我們要在哪裡分析?
  35. 35. 惡意程式分析環境 • 使⽤用虛擬環境分析 • 避免觸發程式後,因感染造成真實傷害
 • 使⽤用 Snapshot • 記錄乾淨的環境,⽅方便每次分析後還原
 • 建⽴立內網連線
  36. 36. 第三件事情: 我們要分析什麼?
  37. 37. 惡意⾏行為⼊入⾨門 • 「⾏行為」泛指程式執⾏行時,具有⺫⽬目的之動作,例 如對特定檔案的讀取、新增、修改、刪除
 • 對於系統來說,哪些會被當作惡意⾏行為針對⺫⽬目標?
  38. 38. 惡意⾏行為⼊入⾨門 • 關⼼心下述部分 • Registry Key • Process • Network • File system
  39. 39. 惡意⾏行為⼊入⾨門 • 關⼼心下述部分 • Registry Key • Process • Network • File system
  40. 40. ⼩小知識 - Registry • Registry ⼜又稱登錄檔或註冊表 • ⽤用於儲存系統和應⽤用程式的設計資訊 • C:Windowsregedit.exe
  41. 41. ⼩小知識 - 啟動項 • 有些程式每次開機就會⾃自動啟動,這些程式的資 訊都必須寫進啟動項! • Registry 中開機先執⾏行的項⺫⽬目,就是啟動項 • HKLMSOFTWAREMicrosoftWindows CurrentVersionRun
  42. 42. 陰魂不散的惡意程式 Σ(・ω・ノ)ノ
  43. 43. 惡意⾏行為⼊入⾨門 • 關⼼心下述部分 • Registry Key • Process • Network • File system
  44. 44. ⼩小知識 - Process • 觸發程式 → 被載⼊入記憶體 → 產⽣生程序了! • 程序 (process)可以說就是正在運作中的程式 PID 執⾏行者的權限 屬性參數 所需程式碼與 相關資料 記憶體中程序產⽣生的相關資料 使⽤用者 執 ⾏行 載⼊入記憶體 磁碟中的程式
  45. 45. 假設有些程式正在執⾏行, 但你卻看不到,是不是很恐怖?
 Σ(・ω・ノ)ノ
  46. 46. 惡意⾏行為 - 常⾒見⾏行為懶⼈人包 • 修改啟動項 HKLM…CurrentVersionRun • 有 Process 但你卻看不到執⾏行畫⾯面 • 讀取系統資訊 • 連線⾄至特定的 IP 或 DNS • ⾃自我刪除、複製檔案
  47. 47. 第四件事情: 我們要⽤用什麼去分析?
  48. 48. 惡意程式分析⼯工具 • Behavior Tool • Autoruns • Process Monitor / Process Explorer • TCP View / TCPLogView • WireShark • Online Sandbox • Virustotal • Comodo • ⾃自⾏行架設 Sandbox • Cuckoo • CaptureBat
  49. 49. 分析⼯工具 • 都是免費提供,⼤大家可以下載來玩玩看 • Autoruns • Process Explorer • TCP View 乾淨狀態 觸發惡意程式 系統時間 會多什麼呢? 污染狀態
  50. 50. 分析⼯工具 - Autoruns
  51. 51. 分析⼯工具 - Autoruns • 檢查 Registry Key 是否被新增、修改
  52. 52. 分析⼯工具 - ProcessExplorer
  53. 53. 分析⼯工具 - ProcessExplorer • 檢閱記憶體中在執⾏行的所有程序及其⺫⽬目錄 • 作⽤用類似於⼯工作管理員 • 優點在可顯⽰示動態連結函式庫(DLL)檔、簽章
  54. 54. 分析⼯工具 - TCPView • 顯⽰示連線記錄、是由哪⽀支程式造成的
  55. 55. ⼩小結 • ⺫⽬目前已經解到「惡意⾏行為」跟「可⽤用⼯工具」 • 但我們想要的東⻄西只有了解⾏行為嗎?
  56. 56. 第五件事情: 拼湊出惡意程式真⾯面⺫⽬目 等下會有⼈人 Demo! DEMO !
  57. 57. 第六件事情: 我們回頭想想分析只有 ⼀一種⽅方法嗎?
  58. 58. 難道永遠都只能防守?
  59. 59. 逆向⼯工程 • 逆向⼯工程 Reverse Engineering • 泛稱對⺫⽬目標進⾏行分析研究,得出其流程、結構 • 反組譯 • 逆向⼯工程應⽤用在軟體裡的其中⼀一種⽅方法 • 把機器碼轉換成組合語⾔言
  60. 60. 逆向⼯工程 - 靜態與動態    動態分析 靜態分析 優 可知執⾏行時的真實⾏行為 可信度⾼高 分析範圍較⼤大、︑較完整 不受特定招數影響 不需要運⾏行程式 缺 容易被躲避 需要運⾏行程式 被混淆的程式碼分析困難 無法得知執⾏行時的資訊
  61. 61. 動態分析 - ⼯工具 • Immunity Debugger 哈囉!ヽ( ´∀`)ノ • Olly Dbg 說你好!ヽ( 。 。)ノ
  62. 62. 靜態分析 - ⼯工具 • IDA 安安!ヽ( ´∀`)ノ • 主打強悍的靜態分析功能
 • 好⽤用程度跟價格成正⽐比
  63. 63. 補張 IDA 介⾯面圖
  64. 64. 初學者靜態分析⼩小撇步 • 第⼀一個難關:加殼! • 第⼆二個難關:從何看起? • 第三個難關:⼀一堆看不懂的 API ! • 第四個難關:想要了解程式內容!
  65. 65. 初學者靜態分析⼩小撇步(1) • 第⼀一個難關:加殼! • 加殼分成加密殼、壓縮殼 • 為了不讓程式被分析,⽽而⽣生的保護機制 • 如何解? • 先了解使⽤用的是哪種殼 • 找相對應的脫殼⼯工具 / ⼿手動脫殼
  66. 66. UPX加殼⼩小範例 ?
  67. 67. UPX加殼⼩小範例
  68. 68. 初學者靜態分析⼩小撇步(2) • 第⼆二個難關:從何看起? • 發現程式碼很⻑⾧長⋯⋯很⻑⾧長⋯⋯⋯⋯
 • 如何解? • 使⽤用 String Windows 起⼿手! • 字串⼤大多會明碼留在程式裡!
  69. 69. 天啊是字串⼩小範例
  70. 70. 初學者靜態分析⼩小撇步(3) • 第三個難關:⼀一堆看不懂的 API ! • 粉紅⾊色的都是 Windows 的API • 但⋯⋯什麼是API? • 如何解? • 就查啊!

  71. 71. 什麼是 API ? • API (Application Programming Interface) • 應⽤用程式開發介⾯面 • 為了⽅方便使⽤用 Function ⽽而⽣生 • 只需要了解參數即呼叫,進⽽而使⽤用該功能
  72. 72. Windows API ⼩小範例
  73. 73. Windows API ⼩小範例
  74. 74. 初學者靜態分析⼩小撇步(4) • 第四個難關:想要了解程式內容! • ⋯⋯ • ⋯⋯ • ⋯⋯
  75. 75. 初學者靜態分析⼩小撇步(4) • 第四個難關:想要了解程式內容! • 你可以選擇 • ⋯⋯訪問惡意程式撰寫者 • ⋯⋯通靈(?) • ⋯⋯或者是從現在開始學組合語⾔言
  76. 76. 我覺得學組合語⾔言 ⽐比較簡單啦
  77. 77. 什麼是組合語⾔言? 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 難讀、難寫
  78. 78. 什麼是組合語⾔言? • ⽤用來跟機器溝通的低階語⾔言 • ⽐比機器碼 01010000 好讀 • ⽐比⾼高階語⾔言難讀 • 但是⽐比⾼高階語⾔言執⾏行速度快,佔⽤用記憶體⼩小 • 舉凡 MASM、NASM
  79. 79. 為何是組合語⾔言? • 惡意程式通常是執⾏行檔 • 以 .EXE (executable file) 副檔名存在 • 是看不到原始碼的啊啊啊! • 透過⼯工具反組譯後,看到的正是組合語⾔言
  80. 80. 慘了!接下來我好像⋯⋯ 得講組合語⾔言?
  81. 81. 才不要呢XD
  82. 82. 靜態分析 - ⼩小結 • ⼩小撇步是我⾃自⼰己學靜態分析遇到的困境和SOP • 「想要了解程式內容」是最花時間和經驗的部分 • ⽽而且才是最精華、最難以傳授的
 • 通常也會跟⼀一點作業系統、組合語⾔言相關知識 • 沒有騙你真的要好好念書啊
  83. 83. 惡意程式分析 - 懶⼈人包 第⼀一件事情:什麼是惡意程式? 第⼆二件事情:我們要什麼環境分析? 第三件事情:我們要分析什麼⾏行為? 第四件事情:我們要⽤用什麼⼯工具去分析? 第五件事情:Demo!實作! 第六件事情:分析只有⼀一種⽅方法嗎?
  84. 84. 初學者靜態分析⼩小撇步 - 懶⼈人包 第⼀一個難關:有沒有加殼?如何解殼? 第⼆二個難關:資訊量很多,從哪個地⽅方起⼿手? 第三個難關:遇到看不懂的 API ,怎麼辦? 第四個難關:如何了解程式內容?
  85. 85. 感謝聆聽,問題有嗎? OwO/
  86. 86. Q:Windows 的惡意程式⽐比較多嗎? A:攻擊者投⼊入了⼼心⼒力做惡意程式,就會希望獲得最⼤大收 益,依據時代做調整,往往哪個作業系統分佈廣散、漏洞⼜又 多,就會被當作⺫⽬目標 Q:有些惡意程式會把 Sandbox 打穿,有遇過嗎? A:還沒有遇到,有樣本的話我會很想分析,不過就得有相 對應的分析策略和設置XD Q:如果我有⼀一個程式,我要怎麼知道他是惡意程式?有沒 有除了上述四個之外的⽅方式知道? A:⼀一般⼈人要辨別這是惡意程式⽐比較困難,⽐比較普遍的⽅方法 就是把它丟進 VirusTotal 讓防毒軟體公司告訴你 Q:有沒有遇到綁架⾸首⾴頁的惡意程式? A:有,就會有⼀一些瀏覽器的相關設定操作

×