KeyFrame內部研究專用

DEF CON 33 BiC Village - Sydney Johns RE for the Rest of Us An Introduction to Reverse Engineering

DEFCONConference·10月22日週三·41 min英文

三句話摘要

DEFCon初學者逆向工程講座:透過Arduino與Ghidra學習硬體及軟體逆向工程的完整流程。 逆向工程是一門需要系統思維與工具掌握的技藝,從硬體拆解、軟體反編譯到敏感數據提取的完整流程,只要掌握核心工具、記錄過程、持續練習,初學者也能有效地分析與理解任何設備或程序的運作邏輯。 硬體逆向工程的系統化步驟:從識別芯片與查閱數據手冊開始,再進行連通性測試確認電路板是否正常工作,接著尋找診斷端口(如UART、JTAG)以便提取固件,每個步驟都有具體的檢測工具與方法。

重點整理

重點
  • 1

    硬體逆向工程的系統化步驟:從識別芯片與查閱數據手冊開始,再進行連通性測試確認電路板是否正常工作,接著尋找診斷端口(如UART、JTAG)以便提取固件,每個步驟都有具體的檢測工具與方法。

  • 2

    軟體逆向工程的三層認知:同一個程序在原始C代碼、彙編代碼、二進制代碼三種格式間存在對應關係,需要理解這些層級如何相互轉換,才能從二進制還原出可讀的邏輯。

  • 3

    靜態分析與動態分析的互補性:靜態分析無需執行代碼即可理解其結構(如用Ghidra搜尋字符串與變數),動態分析則需執行程序觀察運行行為,兩者結合才能完整揭示程序的工作原理。

  • 4

    實踐導向的學習路徑:從簡單的LED閃爍程序開始,逐步進階到硬編碼的用戶認證信息提取,通過親手操作工具與記錄過程來累積經驗。

實用技巧與重點

乾貨
  • 核心工具:AVRdude(固件提取)、Binwalk(文件結構識別)、Ghidra(反編譯與分析)、Floss(敏感數據查找)、Object Dump(二進制檢查)
  • Arduino硬體規格:ATmega微控制器(28個引腳、UART接口)、USB轉串口轉換器(32位引腳)、16兆赫晶體振盪器、5V與3.3V電源輸出
  • 固件刷寫過程:下載INO文件 → Arduino IDE驗證 → 透過USB上傳至開發板
  • 數據類型與內存映射:示例代碼中整數變數A=5、B=12對應寄存器R24;字符陣列硬編碼的用戶名「Alice」與密碼「password123」每個字符存儲在不同的內存位置
  • Ghidra搜尋技巧:使用Ctrl+F搜尋變數、十六進制值與字符串;區分大小寫搜尋;利用函數列表直接跳轉至主函數
  • 診斷端口類型:UART(串列接口)、JTAG、USB-B接口
  • 測試方法:萬用表連通性測試(零歐姆表示正常)、電壓檢測(確認5V與3.3V輸出正常)
  • 學習資源:官方GitHub頁面包含所有幻燈片、INO文件、Ghidra導出資源

結論

結論

逆向工程是一門需要系統思維與工具掌握的技藝,從硬體拆解、軟體反編譯到敏感數據提取的完整流程,只要掌握核心工具、記錄過程、持續練習,初學者也能有效地分析與理解任何設備或程序的運作邏輯。

完整解析

詳細

逆向工程的本質是分析現有物品來提取、複製或理解其技術信息。本講座將其分為硬體與軟體兩個領域,展示了如何用Arduino作為教學案例,從最基礎的物理檢測進階到二進制代碼分析。

硬體逆向工程的第一步是物理檢查。講者帶領現場學員識別Arduino開發板上的各個芯片,包括ATmega微控制器(Arduino的「大腦」,負責輸入輸出與周邊控制)、USB轉串口轉換器、晶體振盪器與電容器。每個組件都需要查閱數據手冊以確認其功能、引腳數與使用的接口協議。識別完成後,使用萬用表進行連通性測試,在兩端分別接觸探針,若聽到嗶聲且屏幕顯示0.00歐姆,則表示該電路連接正常;同時也要測量5V與3.3V電源輸出是否符合預期,確保電路板整體工作狀態良好。這個過程對於排查故障或驗證新購入的組件特別重要。

軟體逆向工程則從固件提取開始。講者使用預先準備好的ELF文件(可執行與可鏈接格式),演示如何透過Binwalk等工具分析文件結構,再用Ghidra這個反編譯器查看汇編代碼與反編譯後的C代碼。這裡的關鍵洞察是:同一個程序存在於三種形式——高級語言的C代碼、中間層的汇編代碼、與最底層的二進制/十六進制。以簡單的加法程序(5+12=17)為例,用高級語言寫起來只需三行,但轉換為汇编後會增加數倍的指令行數,到了二進制表示時更是難以直接閱讀。因此逆向工程師需要學會在這些層級間轉換思維。

實踐階段,講者指導學員將包含LED閃爍邏輯與硬編碼用戶認證信息的INO程序刷入Arduino。這個「GiveMe_attitude」程序(名字源於內存中的一個位置)會執行兩項操作:將兩個整數相加,並打印出用戶凭证(用戶名Alice、密碼password123)。隨後在Ghidra中打開對應的ELF文件,使用Ctrl+F搜尋變數名稱與十六進制值,追蹤這些數據在內存中的位置與對應的寄存器。例如搜尋變數BD時會發現其映射到寄存器R24;搜尋字符串時,Ghidra會列出所有硬編碼在二進制中的文本,包括用戶名與密碼。這展示了即使只有二進制文件而沒有源代碼,仍然可以用反編譯器輕鬆提取出敏感信息。

講座結尾強調了學習的實踐性:掌握Ghidra、Binwalk與Object Dump等核心工具,建立記錄逆向過程的習慣(這樣遇到類似設備時能加快分析速度),透過重複練習逐漸累積經驗。她推薦了YouTube頻道與GitHub教程作為自主學習資源,並表示Kali Linux內建了大多數所需工具,初學者可以免費開始學習。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。