Top Banner
產品測試+安全性測試+壓力測試 2013.12.28 @淡江大學 Taien Wang<[email protected]> 時間軸科技股份有限公司
61

淡江大學 - 產品測試+安全性測試+壓力測試

Nov 13, 2014

Download

Technology

Taien Wang

淡江大學行動應用實務課程
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 淡江大學 - 產品測試+安全性測試+壓力測試

產品測試+安全性測試+壓力測試

2013.12.28 @淡江大學

Taien Wang<[email protected]>

時間軸科技股份有限公司

Page 2: 淡江大學 - 產品測試+安全性測試+壓力測試

資管技術可能的生涯

軟體測試師 滲透測試人員

這兩個工作如果做得好就受人景仰做的不好就裡外不是人

Page 3: 淡江大學 - 產品測試+安全性測試+壓力測試

大綱

• 軟體質量

– ISO/IEC 9126-1:2001

– Software Product Quality Requirements and Evaluation

– 業界常見測試

• Web 應用程式測試

– 安全測試

• 移動應用程式測試

– 以 Android 為例

– 安全檢測

• 壓力測試

Page 4: 淡江大學 - 產品測試+安全性測試+壓力測試

軟體質量

Page 5: 淡江大學 - 產品測試+安全性測試+壓力測試

ISO/IEC 9126-1:2001 軟體產品品質模式(1/2)內部與外部品質的質量模型

內部品質(Internal Quality)與外部品質(External Quality)

功能性

適切性

精確性

通用性

安全性

功能性遵循

可靠性

成熟度

容錯性

回復性

可靠性遵循

使用性

理解性

學習性

操作性

吸引性

使用性遵循

效率

時間表現性

資源利用性

效率遵循

維護性

分析性

修改性

穩定性

測試性

維護性遵循

移植性

適應性

安裝性

共存性

置換性

移植性遵循

資料來源:

ISO/IEC 9126-1:2001

Page 6: 淡江大學 - 產品測試+安全性測試+壓力測試

ISO/IEC 9126-1:2001軟體產品品質模式(2/2)使用質量的質量模型

使用質量

有效性 生產率 安全性 滿意度

Page 7: 淡江大學 - 產品測試+安全性測試+壓力測試

軟體產品品質要求與評估

• Software product Quality Requirements and Evaluation

– 簡稱SQuaRE

• 為解決軟體產品品質暨產品評估2標準系列(ISO/IEC 9126與ISO/IEC

14598)已發生之問題,1999年間,負責軟體產品測量與評估(Software

Product Measurement and Evaluation)標準制定工作的ISO/IEC

JTC1/SC7 WG6提案要求處理,並經ISO/IEC JTC1/SC7調整後成立軟體

產品品質要求與評估(Software product Quality Requirements and

Evaluation,簡稱SQuaRE)計畫。

資料來源:樊國楨, 970331.ppt © CCISA(KJF), p29-33

Page 8: 淡江大學 - 產品測試+安全性測試+壓力測試

SQuaRE標準系列框架示意

企業系統(Business system)

使用品質(Quality in use)

資訊系統(Information system)

外部軟體品質(External software quality)

25000

25010

25020 25040 25001

25021

25001

25041

25042

25043

25044

25022

25023

25024

25030

評估(Evaluation)

需求規格

(Requirements

Specification)

軟體產品(Software product)內部軟體品質(Internal software

quality)

:資料來源 ISO/IEC 25000:2005-08-01, Figure 2, Page 13。

通用指引

(General Guidance)

特用指引

(Particular Guidance)

執行

(Execution)

過程

(Procress)

過程標的

(Target of Process)

資料來源:樊國楨, 970331.ppt © CCISA(KJF), p34

Page 9: 淡江大學 - 產品測試+安全性測試+壓力測試

業界目前常見測試

• 軟體測試

– 在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體品質,並

對其是否能滿足設計要求進行評估的過程

• 測試種類

– 黑箱測試(Black Box Test)

– 白箱測試(White Box Test)

• 其他測試細節

Page 10: 淡江大學 - 產品測試+安全性測試+壓力測試

其他測試細節 (1/2)

• 單元測試(Unit Test)

• 自動化測試(Automated Testing)

• 系統整合測試(System Integration Testing)

• 效能測試(Performance testing)

– 負載測試(Loading Testing)

• 負載測試確保在系統在超出最大預期工作量下仍可正常運作

• 有時又稱容量測試(Volume Testing)

– 但也人有以邏輯與硬體區分負載與壓力測試

– 壓力測試(Stress Testing)

• 透過對系統不斷的加壓,找到一個系統頻頸或無法負荷的性能點

注意:效能測試,負載測試幾個定義的爭議較大

Page 11: 淡江大學 - 產品測試+安全性測試+壓力測試

軟體就像是蓋房子最容易發生問題的點在…

Page 12: 淡江大學 - 產品測試+安全性測試+壓力測試

其他測試細節 (2/2)

• 程式碼審閱(Code Review)

• 安全測試

– OWASP 測試

– 滲透測試

• 使用者驗收測試(User Acceptance Test)

• 測試驅動開發(Test Driven Development)

– 行為驅動開發(Behavior Driven Development)

– 敏捷式開發(Agile Development)

Page 13: 淡江大學 - 產品測試+安全性測試+壓力測試

Web 應用程式測試

Page 14: 淡江大學 - 產品測試+安全性測試+壓力測試

資料來源:無法找到最出中文檔出處

Page 15: 淡江大學 - 產品測試+安全性測試+壓力測試

Web 應用程式測試

• 單元測試

– PHPUnit

• 系統整合測試

• 自動化測試

– Selenium

• 安全測試

Page 16: 淡江大學 - 產品測試+安全性測試+壓力測試

為什麼我們要測試

• 工程師

– 案子都做不完了, 先滿足需求就好了

• 現實層面

– 再厲害的人也難以一次到位

– 滿意度, 效率, C/P, 安全

• 滿足需求

– 將需求定義為用戶為了解決問題或達成目標所需要的條件或功能, 或為

了滿足合約, 標準, 規範或其他正是有效的文件, 系統所需擁有的或滿足

的條件或功能

– NSI/IEEE Standard 729

Page 17: 淡江大學 - 產品測試+安全性測試+壓力測試

問題被發現的成本

資料來源:

Gray McGraw, Software Security: Building Security In

Page 18: 淡江大學 - 產品測試+安全性測試+壓力測試

軟體安全 - 讓安全成為軟體開發必要部分軟體安全接觸點(Touchpoint)

資料來源:

Gray McGraw, Software Security: Building Security In

Page 19: 淡江大學 - 產品測試+安全性測試+壓力測試

測試思路 - 一般使用者

Page 20: 淡江大學 - 產品測試+安全性測試+壓力測試

測試思路 – 一般測試人員

系統規格寫了什麼測試案例要全跑過

Page 21: 淡江大學 - 產品測試+安全性測試+壓力測試

測試思路 – 駭客們

先透視一下手殘一下悲劇了…

Page 22: 淡江大學 - 產品測試+安全性測試+壓力測試

常用弱點非官方網頁應用程式安全組織 OWASP

OWASP 2007 10大弱點 OWASP 2010 10大弱點

1 跨站腳本攻擊 (XSS) 注入攻擊

2 注入攻擊 跨站腳本攻擊(XSS)

3 惡意程式執行 身分驗證功能缺失

4 不安全的物件參考 不安全的物件參考

5 跨站請求偽造(CSRF) 跨站請求偽造(CSRF)

6 程式碼錯誤訊息外漏 安全性設定疏失

7 身分驗證功能缺失 未加密的儲存設備

8 未加密的儲存設備 無權限的URL控制

9 不安全的網路連練 不安全的傳輸防護

10 無權限的URL控制 未驗證的導向

Page 23: 淡江大學 - 產品測試+安全性測試+壓力測試

Web Vulnerability Scanner

• OWASP Zed Attack Proxy Project(new 2012.07)

• Paros

• Burp Suite

• Shadow Security Scanner

• Acunetix Web Vulnerability Scanner

• XScan

Page 24: 淡江大學 - 產品測試+安全性測試+壓力測試

實際操作

Page 25: 淡江大學 - 產品測試+安全性測試+壓力測試

產出資料

Page 26: 淡江大學 - 產品測試+安全性測試+壓力測試

強力建議自己做好測試不然…

26

Page 27: 淡江大學 - 產品測試+安全性測試+壓力測試

隱藏相簿瀏覽器?

三秒破解無名相簿

Page 28: 淡江大學 - 產品測試+安全性測試+壓力測試

然後被默默分析

你是不是也默默的被分析

28

Page 29: 淡江大學 - 產品測試+安全性測試+壓力測試

延伸閱讀

• Taien內部資安講座

– 基礎網頁程式攻擊檢驗

– 使安全成為軟體開發必要部分

– 用戶端攻擊與防禦

– 伺服器端攻擊與防禦I

– 伺服器端攻擊與防禦II

– 伺服器端攻擊與防禦III

Page 30: 淡江大學 - 產品測試+安全性測試+壓力測試

移動應用程式安全測試

Page 31: 淡江大學 - 產品測試+安全性測試+壓力測試

OWASP Mobile Security Project- Top Ten Mobile Risks

Page 32: 淡江大學 - 產品測試+安全性測試+壓力測試

OWASP Mobile Top Ten Mobile Risks (1/2)

• M1. 不安全的資料儲存(Insecure Data Storage) – 對應案例

– SQLite, Log, Plist, XML, Manifest

– 二進位檔, Cookie, SD卡, 雲端同步

• M2. 弱伺服器端的控制(Weak Server Side Controls) – 對應案例

– OWASP Cloud Top 10 Risks, OWASP Web Top 10 Risk

• M3. 傳輸層保護不足(Insufficient Transport Layer Protection) – 對應案例

– 傳輸介面: Wi-Fi, NFC, Ethernet, 藍芽…

– 傳輸加密(SSL, 客製化加密, WS-Security)

• M4. 客戶端注入(Client Side Injection)

– 本地端注入: SQLite Injection, XSS, Fuzzing

• M5. 粗糙的授權與認證(Poor Authorization and Authentication) – 對應案例

– 部分可攜式行動裝置的網頁應用程式僅採用永不變的數值來執行身分驗證與授權階段

– IMEI, IMSI, UUID, Device ID, MAC

Page 33: 淡江大學 - 產品測試+安全性測試+壓力測試

OWASP Mobile Top Ten Mobile Risks (2/2)

• M6. 不適當的會話處理(Improper Session Handling) – 對應案例

– Session, Cookie, Token…

• M7. 經由不受信任輸入的安全決策(Security Decisions Via Untrusted Inputs)

– 透過客戶端注入方式來消耗可攜式裝置硬體資源或提權

• M8. 通道端資料洩漏(Side Channel Data Leakage)

– 應用網頁快取, 記錄檔, 暫存檔洩漏

• M9. 加密失效(Broken Cryptography) – 對應案例

– 演算法遭破解

– 常見名詞

• 編碼, 混淆, 序列化, 雜湊

• M10. 敏感資訊洩漏(Sensitive Informaiton Disclosure) – 對應案例

– 機敏訊息如程式碼中或在設備內

Page 34: 淡江大學 - 產品測試+安全性測試+壓力測試

以 Android 為例

Page 35: 淡江大學 - 產品測試+安全性測試+壓力測試

Android Package Kit

• Android Packge Kit(APK) 基本上就是個 ZIP

• 內容包含 DEX, 資源檔, AndroidManifest.xml…

資料來源:Building and Running, Android Developers

Page 36: 淡江大學 - 產品測試+安全性測試+壓力測試

AndroidManifest.xml 解譯(1/3)

• 工具

– AXMLPrinter2.jar

• 命令

– java -jar AXMLPrinter2.jar AndroidManifest.xml >

AndroidManifest_decode.xml

Page 37: 淡江大學 - 產品測試+安全性測試+壓力測試

AndroidManifest.xml 解譯 – 編譯過的(2/3)

Page 38: 淡江大學 - 產品測試+安全性測試+壓力測試

AndroidManifest.xml 解譯 – 反解回的(3/3)

Page 39: 淡江大學 - 產品測試+安全性測試+壓力測試

分析 APK

• 方法一: 較適合於軟體邏輯分析

– dex2jar

• 將 dex 轉為 jar

– jd-gui, DJ Java Decompiler

• 使用 jd-gui 觀察架構

• DJ Java Decompiler 解回 .class 與 .java

• 方法二: 較適合於暴力破解

– Apktool

• 解回所有資源檔, 並產出 smali 檔

• 方法三:

– IDA Pro(6.1以後支援 Android)

Page 40: 淡江大學 - 產品測試+安全性測試+壓力測試

模擬常見案例

本地端序號驗證

Page 41: 淡江大學 - 產品測試+安全性測試+壓力測試

Live Demo1: 本地端序號驗證

• 問題

– 本地端相關機密訊息沒有保護

– 握有秘密太少

• 對應 OWASP Mobile 風險

– M9. 加密失效

– M10. 敏感資訊洩漏

• 破解方式

– 逆向工程

• 邏輯分析

• 暴力破解

Page 42: 淡江大學 - 產品測試+安全性測試+壓力測試

永遠不要相信混淆器與密碼學百分百保護你了解原理合理使用才是王道

Page 43: 淡江大學 - 產品測試+安全性測試+壓力測試

API 沒有驗證

Page 44: 淡江大學 - 產品測試+安全性測試+壓力測試

比較安全的做法

Page 45: 淡江大學 - 產品測試+安全性測試+壓力測試

模擬常見案例

網路序號驗證

Page 46: 淡江大學 - 產品測試+安全性測試+壓力測試

Live Demo2: 網路序號驗證

• 問題

– 網路驗證

– 驗證太簡易

• 對應 OWASP Mobile 風險

– M3. 傳輸層保護不足

– M5. 粗糙的授權與認證

– M6. 不適當的會話處理

• 破解方式

– 網路通訊分析

– 攔截竄改

Page 47: 淡江大學 - 產品測試+安全性測試+壓力測試

Android 常見儲存

• SQLite

– SQLite Injection

• SharedPreferences

• 客製化檔案

– 二進位

– 文字檔

• 存放位子

– App 目錄

– SD 卡

Page 48: 淡江大學 - 產品測試+安全性測試+壓力測試

實際案例 - SharedPreferences

Page 49: 淡江大學 - 產品測試+安全性測試+壓力測試

實際案例 - SP 與 SQLite

Page 50: 淡江大學 - 產品測試+安全性測試+壓力測試

實際案例

電子書案例

Page 51: 淡江大學 - 產品測試+安全性測試+壓力測試

延伸閱讀

• 自動化測試與壓力測試

– Monkey

– MonkeyRunnner

Page 52: 淡江大學 - 產品測試+安全性測試+壓力測試

在以前效能測試 - 某單位

Page 53: 淡江大學 - 產品測試+安全性測試+壓力測試

你可以不用這麼累

Page 54: 淡江大學 - 產品測試+安全性測試+壓力測試

效能測試基本流程

• 明確效能測試需求

• 制定效能測試計畫

– 測試環境平均併發數 = (最大在線人數 * 10%) / n

– n = 公倍數((正式Web伺服器數/測試Web伺服器數),(正式App伺服器

數/測試App伺服器數))*(正式伺服器記憶體/測試伺服器記憶體)

• 一般算下來 n = 4

• 編寫效能測試案例

• 執行效能測試案例

• 分析效能測試結果

• 生成效能測試報告

資料來源:溫素劍, 零成本實現Web性能測試 - 基於 Apache JMeter

Page 56: 淡江大學 - 產品測試+安全性測試+壓力測試

JMeter 與 LoadRunner 比較

對比 JMeter LoadRunner

安裝 簡單, 下載解壓縮即可 複雜, 安裝包大於1GB, 在一台CPU 3.0 Memory 1G PC安裝時間超過1小時

錄製/回放機制 支援 支援

測試協定 偏少, 用戶可自擴充 較多, 用戶不可自行擴展

分散式大規模壓力測試 支援 支援

IP欺騙功能 不支援 支援(很強)

測試邏輯控制 支援 支援

監控伺服器資源(CPU, 記憶體)

支援 支援

功能測試 支援 不支援

資料來源:溫素劍, 零成本實現Web性能測試 - 基於 Apache JMeter, p26

Page 57: 淡江大學 - 產品測試+安全性測試+壓力測試

JMeter 工作原理

效能測試腳本

瀏覽器

JMeter

JMeter

Jmeter遠端

Jmeter遠端

Jmeter遠端

Jmeter遠端

Web 伺服器

應用伺服器

資料庫

Page 58: 淡江大學 - 產品測試+安全性測試+壓力測試

JMeter 可測試類型

• 驗證

• HTTP

• 資料庫

• FTP

• LDAP

• Web Services

• JMS

• MongoDB

• 伺服器監控

• …

Page 59: 淡江大學 - 產品測試+安全性測試+壓力測試

壓測指標數據指標 備註

Avg Rps 平均每秒回應次數 總請求次數/秒

Successful Rounds 成功的請求

Failed Rounds 失敗的請求

Throughput 吞吐量 Reqs/s

User Connections 用戶連接數

Number of Deadlocks 資料庫死結

Butter Cache Hit 資料庫快取命中情況

Samples 總樣本數

Average 平均速度 Ms

Median 有一半的伺服器回應時間低於該值而另一半高於該值

ms

Min 伺服器回應的最短時間

Max 伺服器回應的最長時間

90%line 90%用戶的回應時間小於該值。

Page 60: 淡江大學 - 產品測試+安全性測試+壓力測試

Jmeter - 實際操作

• 目錄結構

• 自訂參數

• 單執行緒操作

– 變數設定

• 多執行緒操作

• 錄製腳本

Page 61: 淡江大學 - 產品測試+安全性測試+壓力測試