狠狠撸

狠狠撸Share a Scribd company logo
Tips
for
Building
Third-Party School Service
開發學校雲端服務的奇技淫巧
aaaddress1@gmail.com
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
Sorry, Node.js 要攻佔天下惹
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
例如说本来我标题叫做奇淫技巧
什麼 CoC 原則的啦
什麼不該說的啦
都忘惹吧 O__Q
murmur
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
声控表情
身為?个靠北?程师....
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
各种奇技淫巧
當然以上都是屁話
只是合理化
「想要記錄所有同學密碼」
的需求
HTTP 網?流量分析
HTTP 網?流量分析
你的?目標?
User Application Browser Mobile Apps
HTTP 網?流量分析
User Application Browser Mobile Apps
今天談論的主軸是瀏覽器
HTTP 網?流量分析
Browser
HTTP 網?流量分析
瀏覽器
瀏覽器的作?用?一般來來說:
1. 跟伺服器取得網?頁原始碼
2. 分析原始碼,建立出物件樹
3. 物件佈局位置分析
4. 將每?一個物件樹的物件渲染顯?示在?頁
?面上
5. 主流瀏覽器現在?一般都?自帶有流量量分
析?工具 e.g. Chrome, Firefox, Safari
Browser
分析?手段
1. 閱讀網?頁原始碼(靜態)
2. 監聽網路路流量量,分析
Cookie、Header、Body
…等(動態分析)
HTTP 網?流量分析
瀏覽器
HTTP 網?流量分析
瀏覽器(靜態)
Browser
HTTP Traffic Analytics
Browser (Static)
HTTP 網?流量分析
瀏覽器(靜態)
HTTP 網?流量分析
瀏覽器(靜態)
HTTP 網?流量分析
瀏覽器(動態)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
HTTP 網?流量分析
瀏覽器(動態)
HTTP 網?流量分析
瀏覽器(動態)
1. 學校網?寫得太美我不敢看
2. 不是很通熟網?怎麼撰寫的
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
HTTP 網?流量分析
瀏覽器(動態)
HTTP 網?流量分析
瀏覽器(動態)
?般第三?服務 BOT
(應?程式)
?般第三?服務 BOT
Application
模擬?一般使?用者的瀏覽器?行行為
去對伺服器收發 POST/GET
要求
Application School Server
POST /Login HTTP/1.1?
usr=adr&pass=handsome
HTTP/1.1 200 OK
Set-Cookie: gg=ininder;
…
?般第三?服務 BOT
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
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
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
Application School Server
請求
回應
Cookie: gg=ininder;
?般第三?服務 BOT
Application School Server
Cookie: gg=ininder;
?般第三?服務 BOT
請求
回應
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
Android Windows iOS
Android Windows iOS
App.java App.cpp App.swift
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
如果我們能把這樣功能的機器?人寫成
雲端服務,我們就可以更更多時間去陪
女朋友惹(不對,我沒有女朋友...)
建??個
第三?雲端服務
建??個第三?服務
Application
(User Side)
School Server
Cookie: gg=ininder;
請求
回應
Application
User Side
School Server
請求
回應
Cookie: gg=ininder;
回應
請求
Cookie: gg=ininder;
建??個第三?服務
透過
Node.js + Express
建?服務
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
建?
雲端服務
Application
User Side
Cookie: gg=ininder;
回應
請求
HTTP Basic
POST /?act=InInDer HTTP/1.1
HOST: big.gg.com
girls=will&love=it
HTTP Basic
POST /?act=InInDer HTTP/1.1
HOST: big.gg.com
adr=have&cat=dog
Header
HTTP Basic
POST /?act=InInDer HTTP/1.1
HOST: big.gg.com
adr=have&cat=dog
Query
HTTP Basic
POST /?act=InInDer HTTP/1.1
HOST: big.gg.com
adr=have&cat=dog Body (POST)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
Node.js + Request
模擬使?者瀏覽器?為
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
BOT ?為
School Server
請求
回應
Cookie: gg=ininder;
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
傳遞
使?者的連線身份
連線身份資訊保存
由單?應?程式記憶
Application
(User Side)
School Server
Cookie: gg=ininder;
請求
回應
變成針對不同使?者須使?不同的
連線身份去請求學校伺服器
Application School Server
請求
回應
Cookie: gg=ininder;
回應
請求
Cookie: gg=ininder;
?法?
後端使? Session 的?式
記憶使?者的身份資訊
雲端服務架構
Application School Server
請求
回應
Cookie: gg=ininder;
回應
請求
Cookie: gg=ininder;
雲端服務架構
Application School Server
請求
回應
Cookie: key=9487;
回應
請求
Cookie: gg=SESSION[9487];
SESSION 會把你所有需要的資料
保存在 RAM 裡?面
?一旦同時連線?人數過多、
來來不及釋放、
忘記釋放
然後就...
SESSION 會把你所有需要的資料
保存在 RAM 裡?面
?一旦同時連線?人數過多、
來來不及釋放、
忘記釋放
然後就...
HTTP Status 500
爆炸啦
?法?
使?者登入後把身份資訊存回
使?者瀏覽器的 Cookie 中
?法?
需要時再從使?者 Cookie 中領回
身份資訊並以此向學校伺服器請求
將登入成功的身份資訊
保存入使?者端的 Cookie 中
从使?者瀏览器取出上?次身份资讯
從網?原始碼
取出關鍵資訊
從網?原始碼中取出關鍵資訊
1. JS ?文字處理理函數: substr, split, charAt, slice, …
2. 正規表達法: ^123([d]+)$
3. Cheerio.js
JS ?字處理函數
var Str = ‘<title>Hello world</title>’
> Str = Str.slice(Str.indexOf('>') + 1)
> Str = Str.slice(0, Str.indexOf(‘<'))
> Str.split(' ')[1]
'world'
正規表達法
var Str = ‘<title>Hello world</title>’
> Str.match(/<title>[^x20]+([^<]+)/)[1]
' world'
Cheerio.js
var Str = ‘<title>Hello world</title>’
> Str = require(‘cheerio’).load(Str)('title').text()
> Str.split(‘x20')[1]
'world'
aaaddress1/m00d1e.js
學校電算中?
常玩的檢測機制
請求 Header 分析
表单中按钮的?字
表单中按钮的?字
封包请求时间
CAPTCHA
教育部青年发展协署
教育部青年发展协署
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
CAPTCHA
商?验证码辨识套件
30cm.tw/?p=512
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
aaaddress1/easyChptchaOCR
当然,还有更智障的?法
当然,还有更智障的?法
当然,还有更智障的?法
?
?
?
当然,还有更智障的?法
?
?
?
?
?
当然,还有更智障的?法
?
?
?
?
?
?
?
当然,还有更智障的?法
?
?
?
?
?
?
? ?
感謝被?同?學退學的丹尼同學
提供如此寶貴的建議
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
奇技淫巧(?)
跨域名登入Moodle
Browser
User Side
School Server
請求
回應
Cookie: gg=ininder;
回應
請求
Cookie: gg=ininder;
第三?方服務
Browser
User Side
School Server
請求
Cookie: gg=ininder;
請求
Cookie: gg=ininder;
第三?方服務
Browser
User Side
School Server
請求
Cookie: gg=ininder;
第三?方服務
Cookie: gg=ininder;
Cross-site
request
forgery
Content Security Policy
(CSP)
沒有任何解決辦法?
有ㄛ蒸蚌!
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
isu.30cm.tw/isuMoodle
isu.30cm.tw/isuMoodle
Cross Domain Login Moodle
Browser
User Side
School Server
Cookie: gg=ininder;
第三?方服務
回應
Browser
User Side
Cookie: gg=ininder;
第三?方服務
回應
在使?用者?頁?面上建立起?一個 iframe
在內部寫入 moodle 登入畫?面的帳號密碼欄欄位
最後以 Javascript 模擬點擊登入
IFRAME
User Side
Moodle
請求
USERNAME = usr & PASSWORD = pass
IFRAME
User Side
Moodle
回應
Cookie: gg=ininder;
Browser
User Side
Moodle
回應
Cookie: gg=ininder;
Browser
User Side
Moodle
請求
Cookie: gg=ininder;
回應
github.com/aaaddress1/isuMaster-NodeJS
奇技淫巧(?)
無痕模式下記憶帳密
github.com/Valve/?ngerprintjs
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
github.com/aaaddress1/isuMaster-NodeJS
莫风徵伴侣
QA
aaaddress1@gmail.com

More Related Content

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