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.

Rootkit 101

6,129 views

Published on

Rootkit for new guy

Published in: Technology
  • Be the first to comment

Rootkit 101

  1. 1. Rootkit 101 - 僅適合新⼿手的 rootkit cmj @ 2015.07.19 1
  2. 2. 適合新⼿手 • 如果你會寫 rootkit - 你可能太晚聽了~ • 如果你沒⽤用過 Linux - 你可能太早聽了~ 2
  3. 3. 內容 - 這次獻給⼤大家的~ ✤ 根據經驗,我所看過的 rootkit ✤ 延伸 rootkit 原本的概念 ✤ 概念性的 rootkit 3
  4. 4. 能不能用,我也不知道 >.^ 4
  5. 5. WARNING 投影⽚片內容可能包含不適合您閱讀的成⼈人⽂文章,請確定擁 有⾜足夠的⼼心智與判斷能⼒力,了解並分析接下來的內容是否 正確與合法。︒。本著作的作者不負擔任何您,因本著作⽽而衍 伸的任何法律問題:包含但不限於因任意⽂文字的排列組合 與圖⽰示造成⼼心智與/或財產的損失。︒。 5
  6. 6. 在開始之前,讓我們欣賞∼ 6
  7. 7. 電影:我是誰 7
  8. 8. 8
  9. 9. 我是誰:沒有絕對安全的系統 德國電影 9
  10. 10. rootkit - wiki Rootkit是指其主要功能為:隱藏其他程式⾏行程的軟體,可 能是⼀一個或⼀一個以上的軟體組合;廣義⽽而⾔言,Rootkit也可 視為⼀一項技術。︒。 10
  11. 11. 竄改 & 隱藏 11
  12. 12. 12
  13. 13. Simple Rootkit Design - lv1 ✤ 簡單的欺騙 User ✤ 替換掉常⽤用的指令 ✤ ls / ps / top / … etc ✤ 你不需要太多程式技巧 13
  14. 14. 欺騙 14
  15. 15. 簡單,好用,萬解 15
  16. 16. Simple Rootkit Design - lv2 ✤ 替換程式 ✤ 需要點程式技巧 ✤ ⽅方法 ✤ 直接替換程式 (直接換掉 binary) ✤ 寫個 wrapper (多疊⼀一層) 16
  17. 17. 隱藏 (替換) 17
  18. 18. 好用,萬解 18
  19. 19. しかし ✤ 除⾮非使⽤用者不跟主機直接互動 ✤ 明顯的操作上差異 ✤ ⽤用起來會怪怪的 19
  20. 20. 回憶一下 20
  21. 21. 是否感到奇怪 21
  22. 22. 排版 / 顏色 / … etc 22
  23. 23. 設計點有點難度的 rootkit 23
  24. 24. Useful Rootkit Design - lv3 ✤ 修改程式底層 ✤ 修改程式的函式庫 ✤ 概念 ✤ strace / dtruss / debuger / … etc 24
  25. 25. 程式設計師的⾃自我修養:連結、載⼊入、程式庫 來點修養吧 ~ 25
  26. 26. C ✤ C 程式執⾏行的時候,可以: ✤ 呼叫⾃自⼰己撰寫的邏輯 (function) ✤ 呼叫現成的邏輯 (Library) ✤ 你會⾃自⼰己寫 open file 嘛 … 26
  27. 27. C ✤ C 程式執⾏行的時候,可以: ✤ 呼叫⾃自⼰己撰寫的邏輯 (function) ✤ 呼叫現成的邏輯 (Library) ✤ 你會⾃自⼰己寫 open function 嘛 … 27
  28. 28. Shared Library Hook using LD_PRELOAD 28
  29. 29. LD_PRELOAD Hook 29
  30. 30. 好用,但不卍解 30
  31. 31. 休息一下 ∼ 31
  32. 32. rootkit 的世界 朕不給你,你不能搶! 32
  33. 33. 基本概念 劫持 ✤ 指令 ✤ 資料 ✤ syscall 33
  34. 34. Other Idea ? 34
  35. 35. 依然是劫持 ls ✤ 如果你看到的資料其實不是你看到的 ✤ FUSE (File system in USEr space) 35
  36. 36. 啊∼ 再深一點∼∼∼ 36
  37. 37. 如果就根本上 (OS) 資料就不存在... 37
  38. 38. Kernel-Level Rootkit 38
  39. 39. Program Bugs User-Space ✤ crash - Segment Fault / Abort ✤ core-dump Kernel-Space ✤ Call-Trace 39
  40. 40. Robust is more important than you expected 40
  41. 41. Kernel Rootkit Design - lv4 1. 開發環境 2. 決定 rootkit 的核⼼心技巧 3. 開發與除錯 41
  42. 42. Kernel Rootkit Design - lv4 1. 開發環境 2. 決定 rootkit 的核⼼心技巧 3. 開發與除錯 42
  43. 43. Hook Syscall 43
  44. 44. Hook Syscall 流程 ✤ 找到 syscall_table ✤ 竄改呼叫的 callback function 44
  45. 45. sys_call_table 1. Easily way 2. Normal way 3. Violent way 45
  46. 46. sys_call_table 1. Easily way - Find it out in System.map 2. Normal way 3. Violent way 46
  47. 47. System.map 47
  48. 48. sys_call_table 1. Easily way - Find it out in System.map 2. Normal way - Dump on /proc/kallsyms 3. Violent way 48
  49. 49. /proc/kallsyms 49
  50. 50. sys_call_table 1. Easily way - Find it out in System.map 2. Normal way - Dump on /proc/kallsyms 3. Violent way - Force search all kernel-level memory 50
  51. 51. Brute-Force Search 51
  52. 52. 假設我們找到 syscall_table 52
  53. 53. syscall_table 實作上 ✤ syscall_table 是⼀一個 function pointer 陣列 ✤ 根據 syscall 編號依序排列 53
  54. 54. Hook getdent64 54
  55. 55. 挫折 ** n 55
  56. 56. 可不可以頂到肺∼ 56
  57. 57. BIOS rootkit design - lv5 57
  58. 58. BIOS rootkit design - lv5 我要很誠實的說:我不會 ⽽而且今天是 rootkit - 101,講 BIOS 就太誇張了~ 58
  59. 59. Q & A Thanks for your attention ~ 59

×