【AIS3】從遊戲學 Windows Reverse - 除了 F5 之外還有哪幾招

從遊戲學 Windows Reverse - 除了 F5 之外還有哪幾招

-undefined 戰隊 林祐聖 & 陳兆閔 & TeamT5杜浦數位安全 RD 林哲宇

分析目標的五個階段

  • 理想
    • 執行方式 -> 分析方式 -> 觀察目標 -> 理解邏輯 -> 寫腳本
  • 現實
    • 跳來跳去

執行方式(Debug 能力)

  • 作業系統版本、架構不對
  • 執行環境架不起來
  • 缺少相依套件
  • 相依套件版本不對

分析方式(Survey 能力)

  • 找不到適合分析目標的工具
  • 不知道目標如何實作

ex: IDA 分析 C#

觀察目標(觀察力)

  • golang, rust
  • 找不到關鍵處
  • IDA 一堆 Function

理解邏輯(逆向能力)

  • 看 Code 速度
  • 理解程式在做什麼
  • 猜出題者想做什麼

寫腳本(程式、工具使用)

  • 不會寫程式
  • 工具不熟悉
    • ex: z3, pwntools, gdb script…
  • 資料結構、演算法不熟
    • ex: 有向循環圖找一條路徑滿足特定條件

CTF Reverse

  • 做以下假設幫助思考
    • 題目一定有 flag -> 出題者用某種方式把 flag 藏起來
    • 達到某個條件會觸發計算或驗證 flag 的操作
      • 驗證類型:輸入正確時輸出 correct,反之 wrong
      • 計算類型:執行到特定程式碼解密出 flag
    • 出題者通常基於什麼做出題目的
      • ex: 某專案、工具、論文

工具

  • Detect It Easy
    • 確認 binary 類型
    • 如何實作
    • 是否加殼
  • CFF Explorer
    • 觀察 PE 結構
    • 更改結構設定
  • Cheat Engine
    • 記憶體掃描
  • Process Monitor
    • Sysinternals kit
    • 監控紀錄系統行為
    • CTF 看到以下事件可多關注
      • network
      • file write
      • process create
  • IDA Pro
    • 反組譯、反編譯
    • idapython
    • plugin
  • x64dbg
    • x64dbgpy
    • 不能 debug windows kernel -> windbg

PACMAN - 2023 AIS3 Pre-exam

觀察

  • DIE 取得 PE 檔案資訊

  • 玩遊戲,知道遊戲規則

  • 猜目標

    • 隱藏按鈕
    • 分數大於某值
    • 吃大豆子的數量
    • 撞死幽靈數
    • 破關次數
  • 技巧 - DYNAMICBASE

    • CFF Explorer 關 ASLR
  • find out what write to this address
    • 反外掛會偵測
  • disassemble 找位置
  • IDA
  • 寫解題腳本
    • x64dbg dump flag/key
    • AIS3{pacman_is_an_eternal_classic}

另解

  • 找到出題者實作方式
    • 找字串特徵做搜尋
  • bindiff

CrazyArcade - 2023 HITCON CTF

其他玩法 - 遊戲外掛

External Hack

  • 從非目標 Process 操作目標 Process 的記憶體

Internal Hack(DLL Injection)

  • 注入目標 Process 後從內部竄改目標 Process 的記憶體

從遊戲回到現實 - 經驗分享

CTF Reverse實際研究
目標flag自己訂
環境想辦法讓目標能動想辦法讓目標能動
方法找合適工具找合適工具
效率觀察找到關鍵程式碼找到能幫助解決問題的地方
分析逆向分析通常有 source code
結果寫解決腳本改寫需要的部份解決問題

Powershell 反混淆