iT邦幫忙

鐵人檔案

2022 iThome 鐵人賽
回列表
Security

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

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

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

[Day 21] 優化 mutation - MOpt

今天要介紹的是優化 mutation 的方法,同時這也是優化 fuzzer 系列的最後一篇文章。Mutation 中文翻譯為變異,也就是對 input 做隨機化...

2022-09-23 ‧ 由 cc85nod 分享
DAY 22

[Day 22] OS fuzzer - kAFL 論文 - 概念總覽 & 背景知識

先前介紹的 fuzzer 如果沒有特別說明,基本上目標都是執行在 userspace 的程式,然而當 fuzzing 這個主題越來越熱門,開始有研究人員思考是否...

2022-09-24 ‧ 由 cc85nod 分享
DAY 23

[Day 23] OS fuzzer - kAFL 論文 - 設計框架 & 實驗結果

昨天花了滿大的篇幅介紹虛擬化技術,今天會著重在 kAFL 論文提出的設計架構。 Design kAFL 將整個系統分成三個 component: kAFL-...

2022-09-25 ‧ 由 cc85nod 分享
DAY 24

[Day 24] OS fuzzer - kAFL 原始碼 - Patched QEMU & KVM

由於 kAFL 是透過 instruction hypercall 在 host 與 guest (VM) 之間交換資訊,因此需要新增客製化的 hypercal...

2022-09-26 ‧ 由 cc85nod 分享
DAY 25

[Day 25] OS fuzzer - kAFL 原始碼 - The fuzzer

再來介紹 kAFL 原始碼中最後一個 component: kAFL-fuzzer。kAFL 在 host 執行的部分基本上都是用 python 所撰寫,包含執...

2022-09-27 ‧ 由 cc85nod 分享
DAY 26

[Day 26] OS fuzzer - syzkaller - 介紹 & 執行環境建置

先前有提到 syzkaller 可以說是目前最廣為使用的 OS fuzzer,不但整個部署的過程只需要下幾個命令,也提供使用者客製化執行環境,像是允許執行的 s...

2022-09-28 ‧ 由 cc85nod 分享
DAY 27

[Day 27] OS fuzzer - syzkaller - syzlang & syz-manager

今天會簡單介紹 syzlang 的格式與撰寫方法,並透過原始碼來了解 syz-manager 如何初始化執行環境與管理系統。 syzlang syzkaller...

2022-09-29 ‧ 由 cc85nod 分享
DAY 28

[Day 28] OS fuzzer - syzkaller - syz-fuzzer & syz-executor

昨天介紹 syz-manager 建立了 VM pool 來復現漏洞或是 fuzzing,但實際上是用 RPC (remote procedure call)...

2022-09-30 ‧ 由 cc85nod 分享
DAY 29

[Day 29] Hypervisor fuzzer - Nyx

相較於 OS fuzzer 來說,hypervisor fuzzer 的可能又比較冷門一點,除了需要 hypervisor 機制的背景知識,架構 fuzzing...

2022-10-01 ‧ 由 cc85nod 分享
DAY 30

[Day 30] Hypervisor fuzzer - Hypercube 與參賽心得

Hypercube 用了與 Nyx 截然不同的框架來對 hypervisor 做 fuzzing,今天就會介紹他在論文中提出的系統架構。而在文章最後,我也會分享...

2022-10-02 ‧ 由 cc85nod 分享