Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

開發學校雲端服務的奇技淫巧(Tips for Building Third-Party School Service)

3 900 vues

Publié le

想替自己學校開發雲端服務卻無從上手起嗎?議程教學如何在學校電算中心未開放任何 API 下實作出屬於自己的學校雲端服務。本議程將演示一個義守大學廣獲好評第三方熱門服務,並解釋如何實作同步學生當天課程、Moodle 課程、Moodle作業狀況,並且在前端即可實作跨域名繞過 CSP 瀏覽器安全限制替學校 Moodle 登入,議程末將釋出整份專案開源於 Github 上。
議程內容涉及外掛開發、資訊安全相關領域的技術內容、電算中心防外掛偵測點與應對技術。

Publié dans : Logiciels
  • Soyez le premier à commenter

開發學校雲端服務的奇技淫巧(Tips for Building Third-Party School Service)

  1. 1. Tips for Building Third-Party School Service 開發學校雲端服務的奇技淫巧 aaaddress1@gmail.com
  2. 2. Ma Sheng-Hao (aaaddress1, aka adr) TDOHacker 資安社群核⼼心成員 Debug Guy Speaker ‣ TDOHConf 2016 議程組長 ‣ HITCON CMT 2015 ‣ SITCON 2016 ‣ HITCON CMT 2016 Lightning Talk ‣ 台灣科技⼤大學新型態資安實務課程 ‣ BSidesLV ‣ ICNC ‣ MC2015 ‣ 全國資安會議 C/C++, C#, VB, MASM, Python, Swift, Node.js, Java 專研於 Windows 上平台特性與程式弱點與逆向⼯工程分析 知名作品涉及楓之⾕谷外掛, 神魔之塔外掛, 義守管家, cuteRansomware, Adr'sFB
  3. 3. Sorry, Node.js 要攻佔天下惹
  4. 4. 例如說本來我標題叫做奇淫技巧
  5. 5. 什麼 CoC 原則的啦 什麼不該說的啦 都忘惹吧 O__Q
  6. 6. murmur
  7. 7. 聲控表情
  8. 8. 身為⼀個靠北⼯程師....
  9. 9. 各種奇技淫巧
  10. 10. 當然以上都是屁話 只是合理化 「想要記錄所有同學密碼」 的需求
  11. 11. HTTP 網⾴流量分析
  12. 12. HTTP 網⾴流量分析 你的⽬目標?
  13. 13. User Application Browser Mobile Apps HTTP 網⾴流量分析
  14. 14. User Application Browser Mobile Apps 今天談論的主軸是瀏覽器 HTTP 網⾴流量分析
  15. 15. Browser HTTP 網⾴流量分析 瀏覽器 瀏覽器的作⽤用⼀一般來來說: 1. 跟伺服器取得網⾴頁原始碼 2. 分析原始碼,建立出物件樹 3. 物件佈局位置分析 4. 將每⼀一個物件樹的物件渲染顯⽰示在⾴頁 ⾯面上 5. 主流瀏覽器現在⼀一般都⾃自帶有流量量分 析⼯工具 e.g. Chrome, Firefox, Safari
  16. 16. Browser 分析⼿手段 1. 閱讀網⾴頁原始碼(靜態) 2. 監聽網路路流量量,分析 Cookie、Header、Body …等(動態分析) HTTP 網⾴流量分析 瀏覽器
  17. 17. HTTP 網⾴流量分析 瀏覽器(靜態)
  18. 18. Browser HTTP Traffic Analytics Browser (Static)
  19. 19. HTTP 網⾴流量分析 瀏覽器(靜態)
  20. 20. HTTP 網⾴流量分析 瀏覽器(靜態)
  21. 21. HTTP 網⾴流量分析 瀏覽器(動態)
  22. 22. HTTP 網⾴流量分析 瀏覽器(動態)
  23. 23. HTTP 網⾴流量分析 瀏覽器(動態)
  24. 24. 1. 學校網⾴寫得太美我不敢看 2. 不是很通熟網⾴怎麼撰寫的
  25. 25. HTTP 網⾴流量分析 瀏覽器(動態)
  26. 26. HTTP 網⾴流量分析 瀏覽器(動態)
  27. 27. ⼀般第三⽅服務 BOT (應⽤程式)
  28. 28. ⼀般第三⽅服務 BOT Application 模擬⼀一般使⽤用者的瀏覽器⾏行行為 去對伺服器收發 POST/GET 要求
  29. 29. Application School Server POST /Login HTTP/1.1
 usr=adr&pass=handsome HTTP/1.1 200 OK Set-Cookie: gg=ininder; … ⼀般第三⽅服務 BOT
  30. 30. Application School Server GET /helloWorld HTTP/1.1 Cookie: gg=ininder;
 HTTP/1.1 200 OK <p>hello world! adr<p> Cookie: gg=ininder; (⾝身份資訊) ⼀般第三⽅服務 BOT
  31. 31. Application School Server GET /helloWorld HTTP/1.1 Cookie: gg=ininder;
 HTTP/1.1 200 OK <p>hello world! adr<p> Cookie: gg=ininder; 收到伺服器回應的網⾴頁原始碼, 分析並更更新 UI 顯⽰示給使⽤用者 ⼀般第三⽅服務 BOT
  32. 32. Application School Server GET /timeTable HTTP/1.1 Cookie: gg=ininder;
 HTTP/1.1 200 OK <table><tr><td>english</td> … Cookie: gg=ininder; 收到伺服器回應課表原始碼, 分析課程內容並顯⽰示 ⼀般第三⽅服務 BOT
  33. 33. Application School Server 請求 回應 Cookie: gg=ininder; ⼀般第三⽅服務 BOT
  34. 34. Application School Server Cookie: gg=ininder; ⼀般第三⽅服務 BOT 請求 回應
  35. 35. Android Windows iOS
  36. 36. Android Windows iOS App.java App.cpp App.swift
  37. 37. 如果我們能把這樣功能的機器⼈人寫成 雲端服務,我們就可以更更多時間去陪 女朋友惹(不對,我沒有女朋友...)
  38. 38. 建⽴⼀個 第三⽅雲端服務
  39. 39. 建⽴⼀個第三⽅服務 Application (User Side) School Server Cookie: gg=ininder; 請求 回應
  40. 40. Application User Side School Server 請求 回應 Cookie: gg=ininder; 回應 請求 Cookie: gg=ininder; 建⽴⼀個第三⽅服務
  41. 41. 透過 Node.js + Express 建⽴服務
  42. 42. 建⽴ 雲端服務 Application User Side Cookie: gg=ininder; 回應 請求
  43. 43. HTTP Basic POST /?act=InInDer HTTP/1.1 HOST: big.gg.com girls=will&love=it
  44. 44. HTTP Basic POST /?act=InInDer HTTP/1.1 HOST: big.gg.com adr=have&cat=dog Header
  45. 45. HTTP Basic POST /?act=InInDer HTTP/1.1 HOST: big.gg.com adr=have&cat=dog Query
  46. 46. HTTP Basic POST /?act=InInDer HTTP/1.1 HOST: big.gg.com adr=have&cat=dog Body (POST)
  47. 47. Node.js + Request 模擬使⽤者瀏覽器⾏為
  48. 48. BOT ⾏為 School Server 請求 回應 Cookie: gg=ininder;
  49. 49. 傳遞 使⽤者的連線身份
  50. 50. 連線身份資訊保存 由單⼀應⽤程式記憶 Application (User Side) School Server Cookie: gg=ininder; 請求 回應
  51. 51. 變成針對不同使⽤者須使⽤不同的 連線身份去請求學校伺服器 Application School Server 請求 回應 Cookie: gg=ininder; 回應 請求 Cookie: gg=ininder;
  52. 52. ⽅法⼀ 後端使⽤ Session 的⽅式 記憶使⽤者的身份資訊
  53. 53. 雲端服務架構 Application School Server 請求 回應 Cookie: gg=ininder; 回應 請求 Cookie: gg=ininder;
  54. 54. 雲端服務架構 Application School Server 請求 回應 Cookie: key=9487; 回應 請求 Cookie: gg=SESSION[9487];
  55. 55. SESSION 會把你所有需要的資料 保存在 RAM 裡⾯面 ⼀一旦同時連線⼈人數過多、 來來不及釋放、 忘記釋放 然後就...
  56. 56. SESSION 會把你所有需要的資料 保存在 RAM 裡⾯面 ⼀一旦同時連線⼈人數過多、 來來不及釋放、 忘記釋放 然後就... HTTP Status 500 爆炸啦
  57. 57. ⽅法⼆ 使⽤者登入後把身份資訊存回 使⽤者瀏覽器的 Cookie 中
  58. 58. ⽅法⼆ 需要時再從使⽤者 Cookie 中領回 身份資訊並以此向學校伺服器請求
  59. 59. 將登入成功的身份資訊 保存入使⽤者端的 Cookie 中
  60. 60. 從使⽤者瀏覽器取出上⼀次身份資訊
  61. 61. 從網⾴原始碼 取出關鍵資訊
  62. 62. 從網⾴原始碼中取出關鍵資訊 1. JS ⽂文字處理理函數: substr, split, charAt, slice, … 2. 正規表達法: ^123([d]+)$ 3. Cheerio.js
  63. 63. JS ⽂字處理函數 var Str = ‘<title>Hello world</title>’ > Str = Str.slice(Str.indexOf('>') + 1) > Str = Str.slice(0, Str.indexOf(‘<')) > Str.split(' ')[1] 'world'
  64. 64. 正規表達法 var Str = ‘<title>Hello world</title>’ > Str.match(/<title>[^x20]+([^<]+)/)[1] ' world'
  65. 65. Cheerio.js var Str = ‘<title>Hello world</title>’ > Str = require(‘cheerio’).load(Str)('title').text() > Str.split(‘x20')[1] 'world'
  66. 66. aaaddress1/m00d1e.js
  67. 67. 學校電算中⼼ 常玩的檢測機制
  68. 68. 請求 Header 分析
  69. 69. 表單中按鈕的⽂字
  70. 70. 表單中按鈕的⽂字
  71. 71. 封包請求時間
  72. 72. CAPTCHA
  73. 73. 教育部青年發展協署
  74. 74. 教育部青年發展協署
  75. 75. CAPTCHA
  76. 76. 商⽤驗證碼辨識套件
  77. 77. 30cm.tw/?p=512
  78. 78. CAPTCHA
  79. 79. CAPTCHA
  80. 80. CAPTCHA
  81. 81. CAPTCHA
  82. 82. CAPTCHA
  83. 83. CAPTCHA
  84. 84. CAPTCHA
  85. 85. CAPTCHA
  86. 86. aaaddress1/easyChptchaOCR
  87. 87. 當然,還有更智障的⽅法
  88. 88. 當然,還有更智障的⽅法
  89. 89. 當然,還有更智障的⽅法 ✖ ✖ ✖
  90. 90. 當然,還有更智障的⽅法 ✖ ✖ ✖ ✖ ✖
  91. 91. 當然,還有更智障的⽅法 ✖ ✖ ✖ ✖ ✖ ✖ ✖
  92. 92. 當然,還有更智障的⽅法 ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖
  93. 93. 感謝被⼤同⼤學退學的丹尼同學 提供如此寶貴的建議
  94. 94. 奇技淫巧(⼀) 跨域名登入Moodle
  95. 95. Browser User Side School Server 請求 回應 Cookie: gg=ininder; 回應 請求 Cookie: gg=ininder; 第三⽅方服務
  96. 96. Browser User Side School Server 請求 Cookie: gg=ininder; 請求 Cookie: gg=ininder; 第三⽅方服務
  97. 97. Browser User Side School Server 請求 Cookie: gg=ininder; 第三⽅方服務 Cookie: gg=ininder; Cross-site request forgery
  98. 98. Content Security Policy (CSP)
  99. 99. 沒有任何解決辦法? 有ㄛ蒸蚌!
  100. 100. isu.30cm.tw/isuMoodle
  101. 101. isu.30cm.tw/isuMoodle
  102. 102. Cross Domain Login Moodle
  103. 103. Browser User Side School Server Cookie: gg=ininder; 第三⽅方服務 回應
  104. 104. Browser User Side Cookie: gg=ininder; 第三⽅方服務 回應 在使⽤用者⾴頁⾯面上建立起⼀一個 iframe 在內部寫入 moodle 登入畫⾯面的帳號密碼欄欄位 最後以 Javascript 模擬點擊登入
  105. 105. IFRAME User Side Moodle 請求 USERNAME = usr & PASSWORD = pass
  106. 106. IFRAME User Side Moodle 回應 Cookie: gg=ininder;
  107. 107. Browser User Side Moodle 回應 Cookie: gg=ininder;
  108. 108. Browser User Side Moodle 請求 Cookie: gg=ininder; 回應
  109. 109. github.com/aaaddress1/isuMaster-NodeJS
  110. 110. 奇技淫巧(⼆) 無痕模式下記憶帳密
  111. 111. github.com/Valve/fingerprintjs
  112. 112. github.com/aaaddress1/isuMaster-NodeJS
  113. 113. 莫風徵伴侶
  114. 114. QA aaaddress1@gmail.com

×