---
# System prepended metadata

title: 'HITCON 101 - HOOKING 輕鬆做 SYSCALL 輕鬆學 / 劉哲豪, Dylandy'
tags: [HITCONCMT, HITCON, HITCONCMT2019]

---

HITCON 101 - HOOKING 輕鬆做 SYSCALL 輕鬆學 / 劉哲豪, Dylandy
===

### 寫個 Kernel Module

- User Space -> system call -> kernel Space
- 換掉 function pointer (hooking system call table) 就可以做很多事情
- Kernel Module
    - 可掛載至 linux kernel
    - 基本上都會是以 kernel mode 執行
- Kernel Space 從 `PAGE_OFFSET` 開始放
    - 檢查第 `_NR_close` 的值是否為 `system_close` 的 address
- Locate system call table
    - 透過 `_exit` symbol 找到 ro_data 的起始點，再從後方找到 system call table

### 替換 system call

- 插入 kernel module，替換 system call，之後整台機器的所有該 system call 都會變成你可控的邏輯
- 但 system call table 是 RO
    - Modify PTE (software solution)
    - disable WP in CR0 (hardware solution)
- [簡報網址](https://drive.google.com/file/d/1fChGwOaTAOBywGC6h8-ZEmHJsLXeugFB/view?usp=sharing)




###### tags: `HITCONCMT2019`,`HITCONCMT`,`HITCON`