iT邦幫忙

鐵人檔案

2022 iThome 鐵人賽
回列表
Security

模糊測試從入門到放棄 系列

隨著資訊產業的興起,資訊安全的議題也逐漸被人們重視,除了透過人工的方式如逆向、code review 找出程式漏洞之外,自動化的方法如模糊測試 (Fuzzing) 也越來越多人研究。模糊測試的概念在很早期就已經被提出,原理也能輕易猜到:想辦法產生一組輸入能讓程式在讀取後 crash,並且從一開始的黑箱測試,輸入皆隨機產生,到後來灰箱測試,透過分析該次輸入在程式執行的狀態來增進後續輸入的品質。本次我想藉由鐵人賽與各位介紹模糊測試,前期著重於概念與原理,中期帶到實作與分析,後期會分享近期模糊測試的研究方向,統整相關論文貢獻以及要改善的現況。

鐵人鍊成 | 共 30 篇文章 | 21 人訂閱 訂閱系列文 RSS系列文 團隊30 個字以內
DAY 11

[Day 11] Coverage-guided fuzzer - 對 source-code 程式做模糊測試

俗稱的 feedback-driven fuzzer 是指 fuzzer 並非漫無目的的隨機輸入與 mutation,而是透過執行結果的好壞來引導下次產生或挑選...

2022-09-13 ‧ 由 cc85nod 分享
DAY 12

[Day 12] Coverage-guided fuzzer - 對 binary-only 程式做模糊測試 - Static binary rewriting

Binary-only program 在沒有 source code 的情況下,binary-only fuzzing 是取得 coverage 的方法大概可...

2022-09-14 ‧ 由 cc85nod 分享
DAY 13

[Day 13] Coverage-guided fuzzer - 對 binary-only 程式做模糊測試 - Dynamic binary instrumentation (上)

今天會介紹使用 fuzzer 如何使用 Intel Pin 與 QEMU 在動態期間做插樁,藉此取得程式執行的 coverage。 Dynamic binary...

2022-09-15 ‧ 由 cc85nod 分享
DAY 14

[Day 14] Coverage-guided fuzzer - 對 binary-only 程式做模糊測試 - Dynamic binary instrumentation (下)

昨天介紹了 AFL 的 QEMU mode 以及 Intel Pin,讓使用者可以在沒有原始碼的情況下蒐集 coverage,今天要介紹的是 Dynamorio...

2022-09-16 ‧ 由 cc85nod 分享
DAY 15

[Day 15] Coverage-guided fuzzer - 對 binary-only 程式做模糊測試 - Other

前面幾天介紹的幾種對於 binary-only program 做 fuzzing 方法都能夠做大方向的分類,而今天要介紹的方法都不太能分到前面兩種,因此特別拿...

2022-09-17 ‧ 由 cc85nod 分享
DAY 16

[Day 16] 優化 coverage collection - 污點分析 Taint analysis

這兩天主要會介紹污點分析 (taint analysis) 跟符號執行 (symbolic execution),前者可以知道資料的走向並作分析,後者可以算出如...

2022-09-18 ‧ 由 cc85nod 分享
DAY 17

[Day 17] 優化 coverage collection - 符號執行 Symbolic execution & 實際運用的困難

程式當中充斥許多 if-else condition,這些條件判斷使得程式在不同的情況下有不同的處理方式,而每個 condition 都是將各個變數的比較做組合...

2022-09-19 ‧ 由 cc85nod 分享
DAY 18

[Day 18] 優化 coverage collection - 鏈結時期優化 (LTO)

Link time optimization (LTO) 的功能如同他的名字 (self-explanatory),就是在將各個 object file 鏈結起...

2022-09-20 ‧ 由 cc85nod 分享
DAY 19

[Day 19] 優化 coverage collection - REDQUEEN

校驗碼 (checksum) 被用來檢測資料的完整性,魔術數字 (magic number) 被用來偵測特定格式的資料,當這兩種類型的檢查出現在程式當中,會讓總...

2022-09-21 ‧ 由 cc85nod 分享
DAY 20

[Day 20] 優化 seed selection

Seed selection 指的是 fuzzer 從 input queue 當中挑選 input 的行為,而 fuzzer 會先挑哪個 input 是由 i...

2022-09-22 ‧ 由 cc85nod 分享