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.

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

6,879 views

Published on

淡江大學行動應用實務課程

Published in: Technology
  • Be the first to comment

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

  1. 1. 產品測試+安全性測試+壓力測試 2013.12.28 @淡江大學 Taien Wang<taien_wang@hiiir.com> 時間軸科技股份有限公司
  2. 2. 資管技術可能的生涯 軟體測試師 滲透測試人員 這兩個工作如果做得好就受人景仰 做的不好就 裡外不是人
  3. 3. 大綱 • 軟體質量 – ISO/IEC 9126-1:2001 – Software Product Quality Requirements and Evaluation – 業界常見測試 • Web 應用程式測試 – 安全測試 • 移動應用程式測試 – 以 Android 為例 – 安全檢測 • 壓力測試
  4. 4. 軟體質量
  5. 5. ISO/IEC 9126-1:2001 軟體產品品質模式(1/2) 內部與外部品質的質量模型 內部品質(Internal Quality)與外部品質(External Quality) 功能性 可靠性 使用性 效率 維護性 移植性 適切性 成熟度 理解性 時間表現性 分析性 適應性 精確性 容錯性 學習性 資源利用性 修改性 安裝性 通用性 回復性 操作性 效率遵循 穩定性 共存性 安全性 可靠性遵循 吸引性 測試性 置換性 使用性遵循 維護性遵循 移植性遵循 功能性遵循 資料來源: ISO/IEC 9126-1:2001
  6. 6. ISO/IEC 9126-1:2001軟體產品品質模式(2/2) 使用質量的質量模型 使用質量 有效性 生產率 安全性 滿意度
  7. 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
  8. 8. SQuaRE標準系列框架示意 企業系統(Business system) 資訊系統(Information system) 軟體產品(Software product) 過程標的 (Target of Process) 內部軟體品質(Internal software quality) 外部軟體品質(External software quality) 使用品質(Quality in use) 過程 (Procress) 需求規格 (Requirements Specification) 評估 (Evaluation) 25030 25022 25023 25024 執行 (Execution) 25041 25042 25043 25044 25021 特用指引 (Particular Guidance) 25001 25020 25010 通用指引 (General Guidance) 資料來源: ISO/IEC 25000:2005-08-01, Figure 2, Page 13。 資料來源: 樊國楨, 970331.ppt © CCISA(KJF), p34 25000 25040 25001
  9. 9. 業界目前常見測試 • 軟體測試 – 在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體品質,並 對其是否能滿足設計要求進行評估的過程 • 測試種類 – 黑箱測試(Black Box Test) – 白箱測試(White Box Test) • 其他測試細節
  10. 10. 其他測試細節 (1/2) • 單元測試(Unit Test) • 自動化測試(Automated Testing) • 系統整合測試(System Integration Testing) • 效能測試(Performance testing) – 負載測試(Loading Testing) • 負載測試確保在系統在超出最大預期工作量下仍可正常運作 • 有時又稱容量測試(Volume Testing) – 但也人有以邏輯與硬體區分負載與壓力測試 – 壓力測試(Stress Testing) • 透過對系統不斷的加壓,找到一個系統頻頸或無法負荷的性能點 注意: 效能測試,負載測試幾個定義的爭議較大
  11. 11. 軟體就像是蓋房子 最容易發生問題的點在…
  12. 12. 其他測試細節 (2/2) • 程式碼審閱(Code Review) • 安全測試 – OWASP 測試 – 滲透測試 • 使用者驗收測試(User Acceptance Test) • 測試驅動開發(Test Driven Development) – 行為驅動開發(Behavior Driven Development) – 敏捷式開發(Agile Development)
  13. 13. Web 應用程式測試
  14. 14. 資料來源: 無法找到最出中文檔出處
  15. 15. Web 應用程式測試 • 單元測試 – PHPUnit • 系統整合測試 • 自動化測試 – Selenium • 安全測試
  16. 16. 為什麼我們要測試 • 工程師 – 案子都做不完了, 先滿足需求就好了 • 現實層面 – 再厲害的人也難以一次到位 – 滿意度, 效率, C/P, 安全 • 滿足需求 – 將需求定義為用戶為了解決問題或達成目標所需要的條件或功能, 或為 了滿足合約, 標準, 規範或其他正是有效的文件, 系統所需擁有的或滿足 的條件或功能 – NSI/IEEE Standard 729
  17. 17. 問題被發現的成本 資料來源: Gray McGraw, Software Security: Building Security In
  18. 18. 軟體安全 - 讓安全成為軟體開發必要部分 軟體安全接觸點(Touchpoint) 資料來源: Gray McGraw, Software Security: Building Security In
  19. 19. 測試思路 - 一般使用者
  20. 20. 測試思路 – 一般測試人員 系統規格寫了什麼 測試案例要全跑過
  21. 21. 測試思路 – 駭客們 悲劇了… 手殘一下 先透視一下
  22. 22. 常用弱點 非官方網頁應用程式安全組織 OWASP OWASP 2007 10大弱點 OWASP 2010 10大弱點 1 跨站腳本攻擊 (XSS) 注入攻擊 2 注入攻擊 跨站腳本攻擊(XSS) 3 惡意程式執行 身分驗證功能缺失 4 不安全的物件參考 不安全的物件參考 5 跨站請求偽造(CSRF) 跨站請求偽造(CSRF) 6 程式碼錯誤訊息外漏 安全性設定疏失 7 身分驗證功能缺失 未加密的儲存設備 8 未加密的儲存設備 無權限的URL控制 9 不安全的網路連練 不安全的傳輸防護 10 無權限的URL控制 未驗證的導向
  23. 23. Web Vulnerability Scanner • OWASP Zed Attack Proxy Project(new 2012.07) • Paros • Burp Suite • Shadow Security Scanner • Acunetix Web Vulnerability Scanner • XScan
  24. 24. 實際操作
  25. 25. 產出資料
  26. 26. 強力建議自己做好測試 不然…
  27. 27. 隱藏相簿瀏覽器? 三秒破解無名相簿
  28. 28. 然後被默默分析 你是不是也默默的被分析 28
  29. 29. 延伸閱讀 • Taien內部資安講座 – 基礎網頁程式攻擊檢驗 – 使安全成為軟體開發必要部分 – 用戶端攻擊與防禦 – 伺服器端攻擊與防禦I – 伺服器端攻擊與防禦II – 伺服器端攻擊與防禦III
  30. 30. 移動應用程式安全測試
  31. 31. OWASP Mobile Security Project - Top Ten Mobile Risks
  32. 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
  33. 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) – 對應案例 – 機敏訊息如程式碼中或在設備內
  34. 34. 以 Android 為例
  35. 35. Android Package Kit • Android Packge Kit(APK) 基本上就是個 ZIP • 內容包含 DEX, 資源檔, AndroidManifest.xml… 資料來源: Building and Running, Android Developers
  36. 36. AndroidManifest.xml 解譯(1/3) • 工具 – AXMLPrinter2.jar • 命令 – java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest_decode.xml
  37. 37. AndroidManifest.xml 解譯 – 編譯過的(2/3)
  38. 38. AndroidManifest.xml 解譯 – 反解回的(3/3)
  39. 39. 分析 APK • 方法一: 較適合於軟體邏輯分析 – dex2jar • 將 dex 轉為 jar – jd-gui, DJ Java Decompiler • 使用 jd-gui 觀察架構 • DJ Java Decompiler 解回 .class 與 .java • 方法二: 較適合於暴力破解 – Apktool • 解回所有資源檔, 並產出 smali 檔 • 方法三: – IDA Pro(6.1以後支援 Android)
  40. 40. 模擬常見案例 本地端序號驗證
  41. 41. Live Demo1: 本地端序號驗證 • 問題 – 本地端相關機密訊息沒有保護 – 握有秘密太少 • 對應 OWASP Mobile 風險 – M9. 加密失效 – M10. 敏感資訊洩漏 • 破解方式 – 逆向工程 • 邏輯分析 • 暴力破解
  42. 42. 永遠不要相信混淆器與密碼學百分百保護你 了解原理合理使用才是王道
  43. 43. API 沒有驗證
  44. 44. 比較安全的做法
  45. 45. 模擬常見案例 網路序號驗證
  46. 46. Live Demo2: 網路序號驗證 • 問題 – 網路驗證 – 驗證太簡易 • 對應 OWASP Mobile 風險 – M3. 傳輸層保護不足 – M5. 粗糙的授權與認證 – M6. 不適當的會話處理 • 破解方式 – 網路通訊分析 – 攔截竄改
  47. 47. Android 常見儲存 • SQLite – SQLite Injection • SharedPreferences • 客製化檔案 – 二進位 – 文字檔 • 存放位子 – App 目錄 – SD 卡
  48. 48. 實際案例 - SharedPreferences
  49. 49. 實際案例 - SP 與 SQLite
  50. 50. 實際案例 電子書案例
  51. 51. 延伸閱讀 • 自動化測試與壓力測試 – Monkey – MonkeyRunnner
  52. 52. 在以前效能測試 - 某單位
  53. 53. 你可以不用這麼累
  54. 54. 效能測試基本流程 • 明確效能測試需求 • 制定效能測試計畫 – 測試環境平均併發數 = (最大在線人數 * 10%) / n – n = 公倍數((正式Web伺服器數/測試Web伺服器數),(正式App伺服器 數/測試App伺服器數))*(正式伺服器記憶體/測試伺服器記憶體) • 一般算下來 n = 4 • 編寫效能測試案例 • 執行效能測試案例 • 分析效能測試結果 • 生成效能測試報告 資料來源: 溫素劍, 零成本實現Web性能測試 - 基於 Apache JMeter
  55. 55. 壓力測試軟體 • Apache Jmeter, free • Ab, free • HP LoadRunner, $ • Visual Studio, $
  56. 56. JMeter 與 LoadRunner 比較 對比 安裝 JMeter 簡單, 下載解壓縮即可 錄製/回放機制 測試協定 分散式大規模壓力測試 IP欺騙功能 測試邏輯控制 監控伺服器資源(CPU, 記憶體) 功能測試 支援 偏少, 用戶可自擴充 支援 不支援 支援 支援 LoadRunner 複雜, 安裝包大於1GB, 在 一台CPU 3.0 Memory 1G PC安裝時間超過1小 時 支援 較多, 用戶不可自行擴展 支援 支援(很強) 支援 支援 支援 不支援 資料來源: 溫素劍, 零成本實現Web性能測試 - 基於 Apache JMeter, p26
  57. 57. JMeter 工作原理 Jmeter 遠端 Web 伺服器 效能測試腳本 瀏覽器 JMeter JMeter Jmeter 遠端 Jmeter 遠端 Jmeter 遠端 應用伺服器 資料庫
  58. 58. JMeter 可測試類型 • 驗證 • HTTP • 資料庫 • FTP • LDAP • Web Services • JMS • MongoDB • 伺服器監控 • …
  59. 59. 壓測指標數據 指標 備註 Avg Rps 平均每秒回應次數 總請求次數/秒 Successful Rounds 成功的請求 Failed Rounds 失敗的請求 Throughput 吞吐量 User Connections 用戶連接數 Number of Deadlocks 資料庫死結 Butter Cache Hit 資料庫快取命中情況 Samples 總樣本數 Average 平均速度 Median 有一半的伺服器回應時間低於該值而另 ms 一半高於該值 Min 伺服器回應的最短時間 Max 伺服器回應的最長時間 90%line 90%用戶的回應時間小於該值。 Reqs/s Ms
  60. 60. Jmeter - 實際操作 • 目錄結構 • 自訂參數 • 單執行緒操作 – 變數設定 • 多執行緒操作 • 錄製腳本

×