iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
Security

逆向系列 第 25

逆向筆記 - Reconnaissance、Rust、Shellcode 與 Seccomp

  • 分享至 

  • xImage
  •  

Reconnaissance

  • 在資安領域裡,Reconnaissance(簡稱 recon,中文為偵查)是我們進行逆向的第一步,也就是蒐集初步資訊,經常蒐集的初步資訊包含:

    • 查看檔案格式為 ELF 或 PE?
    • 查看檔案為 32-bit 或 64-bit?
    • 查看檔案是否被 strip?

    藉由蒐集初步資訊,有助於我們進行後續的分析

  • 常見的 Reconnaissance 工具

    • 在 radare2 (r2) 中,使用指令 r2 bin 可顯示 binary 的 metadata(例如 ELF header、架構、entry point)
    • 使用 filestringsreadelf 查看檔案資訊

Rust

  • 為近年非常熱門的系統程式語言
  • 特色:可跨平台、安全、高效能
  • 語法類似 C/C++,但提供記憶體安全 (memory safety) 的機制,可以避免許多程式語言常見的漏洞,例如:
    • 野指標 (dangling pointer):指標指向已被釋放或無效的記憶體位置,會導致錯誤
    • 緩衝區溢位(Buffer Overflow):指輸入超過緩衝區大小,導致記憶體被覆蓋,攻擊者可藉此植入惡意程式碼
  • Rust 編譯器產生的 binary 與 C 編譯器不同,導致一些機制不同,例如:
    • Rust 具有 name mangling,導致函式名稱不像 C 那麼直觀
    • Rust 的標準函式庫設計更複雜,更難以追蹤
      因此逆向 C 語言 binary 常見的模式(例如 printf、scanf)未必適用於 Rust binary,逆向 Rust binary 難度較高

Shellcode

  • 起源:早期駭客利用漏洞,撰寫一小段程式碼開啟一個 shell,這種程式碼因而被稱為 Shellcode
  • Shellcode 為一小段機器碼(通常以十六進位撰寫)
  • 由於利用漏洞(例如 Buffer Overflow)將惡意程式碼注入緩衝區的長度有限,因此 Shellcode 較短且精簡
  • 常用來直接在記憶體中執行
  • 用途
    • Shellcode 常直接呼叫系統 API 或 system call
    • 攻擊:利用漏洞 (例如 Buffer Overflow)植入惡意 payload;binary 內部可能隱藏著 shellcode(例如某惡意程式下載並執行隱藏 payload)
    • 滲透測試:紅隊或滲透測試人員會使用 shellcode 模擬攻擊

Seccomp

  • 由於 system call 是程式與作業系統的橋樑,攻擊者可利用惡意的 system call 進行攻擊,例如:讀取檔案、開啟網路、取得權限,因此需要使用 Seccomp 安全機制,Seccomp(Secure Computing Mode)為 Linux 的安全機制,可用於限制程式能夠呼叫的 system call

  • 具有兩種模式

    • 黑名單模式:禁止較危險的 system call
    • 白名單模式:僅允許指定的 system call,其餘全部阻擋
  • 範例:

    • 在逆向惡意程式時,可能會看到該程式企圖繞過 Seccomp 防禦機制以進行攻擊
    • 在啟用 Seccomp 的環境中,需要判斷哪些 system call 還能使用

上一篇
逆向題目練習 - Checker0
下一篇
逆向題目練習 - Blade (1)
系列文
逆向30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言