SlideShare una empresa de Scribd logo
1 de 140
Descargar para leer sin conexión
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 要攻佔天下惹
例如說本來我標題叫做奇淫技巧
什麼 CoC 原則的啦
什麼不該說的啦
都忘惹吧 O__Q
murmur
聲控表情
身為⼀個靠北⼯程師....
各種奇技淫巧
當然以上都是屁話
只是合理化
「想要記錄所有同學密碼」
的需求
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 網⾴流量分析
瀏覽器(動態)
HTTP 網⾴流量分析
瀏覽器(動態)
HTTP 網⾴流量分析
瀏覽器(動態)
1. 學校網⾴寫得太美我不敢看
2. 不是很通熟網⾴怎麼撰寫的
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
請求
回應
Android Windows iOS
Android Windows iOS
App.java App.cpp App.swift
如果我們能把這樣功能的機器⼈人寫成
雲端服務,我們就可以更更多時間去陪
女朋友惹(不對,我沒有女朋友...)
建⽴⼀個
第三⽅雲端服務
建⽴⼀個第三⽅服務
Application
(User Side)
School Server
Cookie: gg=ininder;
請求
回應
Application
User Side
School Server
請求
回應
Cookie: gg=ininder;
回應
請求
Cookie: gg=ininder;
建⽴⼀個第三⽅服務
透過
Node.js + Express
建⽴服務
建⽴
雲端服務
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)
Node.js + Request
模擬使⽤者瀏覽器⾏為
BOT ⾏為
School Server
請求
回應
Cookie: gg=ininder;
傳遞
使⽤者的連線身份
連線身份資訊保存
由單⼀應⽤程式記憶
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
教育部青年發展協署
教育部青年發展協署
CAPTCHA
商⽤驗證碼辨識套件
30cm.tw/?p=512
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
CAPTCHA
aaaddress1/easyChptchaOCR
當然,還有更智障的⽅法
當然,還有更智障的⽅法
當然,還有更智障的⽅法
✖
✖
✖
當然,還有更智障的⽅法
✖
✖
✖
✖
✖
當然,還有更智障的⽅法
✖
✖
✖
✖
✖
✖
✖
當然,還有更智障的⽅法
✖
✖
✖
✖
✖
✖
✖ ✖
感謝被⼤同⼤學退學的丹尼同學
提供如此寶貴的建議
奇技淫巧(⼀)
跨域名登入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)
沒有任何解決辦法?
有ㄛ蒸蚌!
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/fingerprintjs
github.com/aaaddress1/isuMaster-NodeJS
莫風徵伴侶
QA
aaaddress1@gmail.com

Más contenido relacionado

Destacado

TDOH 南區 WorkShop 2016 Reversing on Windows
TDOH 南區 WorkShop 2016 Reversing on WindowsTDOH 南區 WorkShop 2016 Reversing on Windows
TDOH 南區 WorkShop 2016 Reversing on WindowsSheng-Hao Ma
 
第一次做光劍就上手
第一次做光劍就上手第一次做光劍就上手
第一次做光劍就上手杰 杜
 
防毒擋不住?勒索病毒猖獗與實作
防毒擋不住?勒索病毒猖獗與實作防毒擋不住?勒索病毒猖獗與實作
防毒擋不住?勒索病毒猖獗與實作Sheng-Hao Ma
 
NTUSTxTDOH 資訊安全基礎工作坊 基礎逆向教育訓練
NTUSTxTDOH 資訊安全基礎工作坊 基礎逆向教育訓練NTUSTxTDOH 資訊安全基礎工作坊 基礎逆向教育訓練
NTUSTxTDOH 資訊安全基礎工作坊 基礎逆向教育訓練Sheng-Hao Ma
 
Cybersecurity and Internet Governance
Cybersecurity and Internet GovernanceCybersecurity and Internet Governance
Cybersecurity and Internet GovernanceKenny Huang Ph.D.
 
NTUSTxTDOH - Pwn基礎 2015/12/27
NTUSTxTDOH - Pwn基礎 2015/12/27NTUSTxTDOH - Pwn基礎 2015/12/27
NTUSTxTDOH - Pwn基礎 2015/12/27Sheng-Hao Ma
 
SITCON2016, 防毒擋不住?勒索軟體猖獗與實作
SITCON2016, 防毒擋不住?勒索軟體猖獗與實作SITCON2016, 防毒擋不住?勒索軟體猖獗與實作
SITCON2016, 防毒擋不住?勒索軟體猖獗與實作Sheng-Hao Ma
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
Презентація:Додавання і віднімання дробів з однаковими знаменниками
Презентація:Додавання і віднімання дробів з однаковими знаменникамиПрезентація:Додавання і віднімання дробів з однаковими знаменниками
Презентація:Додавання і віднімання дробів з однаковими знаменникамиsveta7940
 
Sumanleo mushroom
Sumanleo mushroomSumanleo mushroom
Sumanleo mushroomSuman Shaw
 
NESTLE AFTER MAGGI FIASCO ( IN KOCHI)
NESTLE AFTER MAGGI FIASCO ( IN KOCHI)NESTLE AFTER MAGGI FIASCO ( IN KOCHI)
NESTLE AFTER MAGGI FIASCO ( IN KOCHI)Pranav R Pai
 
台科逆向簡報
台科逆向簡報台科逆向簡報
台科逆向簡報耀德 蔡
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 
Singarayakonda - Analysis
Singarayakonda - AnalysisSingarayakonda - Analysis
Singarayakonda - AnalysisVasudevan KR
 
逆向工程入門
逆向工程入門逆向工程入門
逆向工程入門耀德 蔡
 
新手無痛入門Apk逆向
新手無痛入門Apk逆向新手無痛入門Apk逆向
新手無痛入門Apk逆向hackstuff
 
Презентація:Задачі про природу
Презентація:Задачі про природу Презентація:Задачі про природу
Презентація:Задачі про природу sveta7940
 
Build Dynamic DNS server from scratch in C (Part1)
Build Dynamic DNS server from scratch in C (Part1)Build Dynamic DNS server from scratch in C (Part1)
Build Dynamic DNS server from scratch in C (Part1)Yen-Kuan Wu
 

Destacado (20)

TDOH 南區 WorkShop 2016 Reversing on Windows
TDOH 南區 WorkShop 2016 Reversing on WindowsTDOH 南區 WorkShop 2016 Reversing on Windows
TDOH 南區 WorkShop 2016 Reversing on Windows
 
第一次做光劍就上手
第一次做光劍就上手第一次做光劍就上手
第一次做光劍就上手
 
防毒擋不住?勒索病毒猖獗與實作
防毒擋不住?勒索病毒猖獗與實作防毒擋不住?勒索病毒猖獗與實作
防毒擋不住?勒索病毒猖獗與實作
 
NTUSTxTDOH 資訊安全基礎工作坊 基礎逆向教育訓練
NTUSTxTDOH 資訊安全基礎工作坊 基礎逆向教育訓練NTUSTxTDOH 資訊安全基礎工作坊 基礎逆向教育訓練
NTUSTxTDOH 資訊安全基礎工作坊 基礎逆向教育訓練
 
Cybersecurity and Internet Governance
Cybersecurity and Internet GovernanceCybersecurity and Internet Governance
Cybersecurity and Internet Governance
 
NTUSTxTDOH - Pwn基礎 2015/12/27
NTUSTxTDOH - Pwn基礎 2015/12/27NTUSTxTDOH - Pwn基礎 2015/12/27
NTUSTxTDOH - Pwn基礎 2015/12/27
 
SITCON2016, 防毒擋不住?勒索軟體猖獗與實作
SITCON2016, 防毒擋不住?勒索軟體猖獗與實作SITCON2016, 防毒擋不住?勒索軟體猖獗與實作
SITCON2016, 防毒擋不住?勒索軟體猖獗與實作
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
Презентація:Додавання і віднімання дробів з однаковими знаменниками
Презентація:Додавання і віднімання дробів з однаковими знаменникамиПрезентація:Додавання і віднімання дробів з однаковими знаменниками
Презентація:Додавання і віднімання дробів з однаковими знаменниками
 
Sumanleo mushroom
Sumanleo mushroomSumanleo mushroom
Sumanleo mushroom
 
NESTLE AFTER MAGGI FIASCO ( IN KOCHI)
NESTLE AFTER MAGGI FIASCO ( IN KOCHI)NESTLE AFTER MAGGI FIASCO ( IN KOCHI)
NESTLE AFTER MAGGI FIASCO ( IN KOCHI)
 
台科逆向簡報
台科逆向簡報台科逆向簡報
台科逆向簡報
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
Kodak
KodakKodak
Kodak
 
Singarayakonda - Analysis
Singarayakonda - AnalysisSingarayakonda - Analysis
Singarayakonda - Analysis
 
逆向工程入門
逆向工程入門逆向工程入門
逆向工程入門
 
新手無痛入門Apk逆向
新手無痛入門Apk逆向新手無痛入門Apk逆向
新手無痛入門Apk逆向
 
Презентація:Задачі про природу
Презентація:Задачі про природу Презентація:Задачі про природу
Презентація:Задачі про природу
 
Italia y Grecia
Italia y GreciaItalia y Grecia
Italia y Grecia
 
Build Dynamic DNS server from scratch in C (Part1)
Build Dynamic DNS server from scratch in C (Part1)Build Dynamic DNS server from scratch in C (Part1)
Build Dynamic DNS server from scratch in C (Part1)
 

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

Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明 Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明 imShining @DevCamp
 
广告前端代码优化
广告前端代码优化广告前端代码优化
广告前端代码优化taobao.com
 
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發Fred Chien
 
TBAD F2E 2010 review
TBAD F2E 2010 reviewTBAD F2E 2010 review
TBAD F2E 2010 reviewleneli
 
网站性能优化(周桂华)
网站性能优化(周桂华)网站性能优化(周桂华)
网站性能优化(周桂华)txppt
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐zhangsuoyong
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化kaven yan
 
Fiddler使用技巧
Fiddler使用技巧Fiddler使用技巧
Fiddler使用技巧明 李
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceYi-Feng Tzeng
 
用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式Fred Chien
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_finalWei Sun
 
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkitLainZQ
 
柔性数据接口的设计与实现
柔性数据接口的设计与实现柔性数据接口的设计与实现
柔性数据接口的设计与实现Leo Zhou
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映heyfluke
 
Docker + CI pipeline 的高效率 ChatBot 開發方法
Docker + CI pipeline 的高效率 ChatBot 開發方法Docker + CI pipeline 的高效率 ChatBot 開發方法
Docker + CI pipeline 的高效率 ChatBot 開發方法Philip Zheng
 
为独立工作室构建跨平台引擎
为独立工作室构建跨平台引擎为独立工作室构建跨平台引擎
为独立工作室构建跨平台引擎Coconut Island
 
Web view on the way
Web view on the wayWeb view on the way
Web view on the wayLiddle Fang
 
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术团队
 
Android开发概览
Android开发概览Android开发概览
Android开发概览heyfluke
 
大鱼架构演进
大鱼架构演进大鱼架构演进
大鱼架构演进Jun Liu
 

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

Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明 Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明
 
广告前端代码优化
广告前端代码优化广告前端代码优化
广告前端代码优化
 
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發
 
TBAD F2E 2010 review
TBAD F2E 2010 reviewTBAD F2E 2010 review
TBAD F2E 2010 review
 
网站性能优化(周桂华)
网站性能优化(周桂华)网站性能优化(周桂华)
网站性能优化(周桂华)
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化
 
Fiddler使用技巧
Fiddler使用技巧Fiddler使用技巧
Fiddler使用技巧
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) Compliance
 
用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_final
 
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit
 
柔性数据接口的设计与实现
柔性数据接口的设计与实现柔性数据接口的设计与实现
柔性数据接口的设计与实现
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
 
Docker + CI pipeline 的高效率 ChatBot 開發方法
Docker + CI pipeline 的高效率 ChatBot 開發方法Docker + CI pipeline 的高效率 ChatBot 開發方法
Docker + CI pipeline 的高效率 ChatBot 開發方法
 
为独立工作室构建跨平台引擎
为独立工作室构建跨平台引擎为独立工作室构建跨平台引擎
为独立工作室构建跨平台引擎
 
Web view on the way
Web view on the wayWeb view on the way
Web view on the way
 
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
 
Android开发概览
Android开发概览Android开发概览
Android开发概览
 
大鱼架构演进
大鱼架构演进大鱼架构演进
大鱼架构演进
 

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