2 คะแนน โดย GN⁺ 2024-05-26 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

รีเวิร์สเอนจิเนียริงเฟิร์มแวร์ Samsung WB850F

WB850F_FW_210086.zip - คอนเทนเนอร์ภายนอก

  • WB850F เป็นหนึ่งในไม่กี่รุ่นที่ Samsung ยังคงให้บริการเฟิร์มแวร์และไฟล์สนับสนุนต่อไป แม้หลังจากยุติแอปพลิเคชัน iLauncher แล้ว
  • อาร์ไคฟ์ WB850F_FW_210086.zip มีหลายไฟล์รวมอยู่:
    • GPS_FW/BASEBAND_FW_Flash.mbin: ข้อมูล
    • GPS_FW/BASEBAND_FW_Ram.mbin: ข้อมูล
    • GPS_FW/Config.BIN: ข้อมูล
    • GPS_FW/flashBurner.mbin: ข้อมูล
    • FWUP: ข้อความ ASCII พร้อมตัวจบบรรทัดแบบ CRLF
    • partialImage.o.map: ข้อความ ASCII
    • WB850-FW-SR-210086.bin: ข้อมูล
    • wb850f_adj.txt: ข้อความ ASCII พร้อมตัวจบบรรทัดแบบ CRLF
  • ไฟล์ FWUP มีสตริง "upgrade all" ซึ่งเป็นสคริปต์สำหรับโมดูลทดสอบ/อัตโนมัติเฟิร์มแวร์
  • ไฟล์ wb850f_adj.txt เป็นสคริปต์ที่ซับซ้อนสำหรับอัปเกรดเฟิร์มแวร์ GPS และลบไฟล์ดังกล่าว

partialImage.o.map - ลิงเกอร์ดัมป์

  • partialImage.o.map เป็นไฟล์ข้อความขนาดกว่า 300,000 บรรทัด ซึ่งมีเอาต์พุตจากลิงเกอร์ของ partialImage.o และ memory map ทั้งหมด:
    • ตัวอย่าง:
      • output input virtual section section address size file
      • .text 00000000 01301444 .text 00000000 000001a4 sysALib.o
      • DevHTTPResponseStart 00321a84 000002a4
      • DevHTTPResponseData 00321d28 00000100
      • DevHTTPResponseEnd 00321e28 00000170
  • ไฟล์นี้ให้ข้อมูลที่มีประโยชน์มากสำหรับการวิเคราะห์เฟิร์มแวร์

WB850-FW-SR-210086.bin - การวิเคราะห์เฮดเดอร์

  • เมื่อนำไฟล์ WB850-FW-SR-210086.bin ไปวิเคราะห์ด้วย binwalk พบเฮดเดอร์ไฟล์ต่าง ๆ (HTML, PNG, JPEG ฯลฯ), เฮดเดอร์ VxWorks และพาธ Unix หลายรายการ แต่ไม่พบพาร์ทิชันหรือไฟล์ซิสเต็ม
  • ผลเฮกซ์ดัมป์ของ 1KB แรก:
    • 00000000: 3231 3030 3836 0006 4657 5f55 502f 4f4e 210086..FW_UP/ON
    • 00000010: 424c 312e 6269 6e00 0000 0000 0000 0000 BL1.bin.........
    • 00000020: 0000 0000 0000 0000 c400 0000 0008 0000 ................
    • 00000030: 4f4e 424c 3100 0000 0000 0000 0000 0000 ONBL1...........
    • 00000040: 0000 0000 4657 5f55 502f 4f4e 424c 322e ....FW_UP/ONBL2.
    • 00000050: 6269 6e00 0000 0000 0000 0000 0000 0000 bin.............
  • จากข้อมูลนี้สามารถสร้างตารางพาร์ทิชันขึ้นใหม่ได้ โดยมีทั้งชื่อไฟล์และชื่อพาร์ทิชัน:
    • File name size offset partition name
    • FW_UP/ONBL1.bin 196 (0xc4) 0x0000800 ONBL1
    • FW_UP/ONBL2.bin 46 KB (0xb630) 0x00008c4 ONBL2
    • [WB850]DSC_5KEY_WB850 30 MB (0x1d1f438) 0x000bef4 Main_Image
    • RomFS/SPID.Rom 48 MB (0x2f4ac00) 0x1d2b32c Resource
    • FW_UP/WB850.HEX 19 KB (0x4d86) 0x4c75f2c OIS
    • FW_UP/skin.bin 36 MB (0x22fd048) 0x4c7acb2 SKIN

WB850-FW-SR-210086.bin - พาร์ทิชันโค้ดและข้อมูล

  • เมื่อใช้เครื่องมือแยกพาร์ทิชันเพื่อดึงพาร์ทิชันออกมา ได้ผลดังนี้:
    • ONBL1.bin: ข้อมูล
    • ONBL2.bin: ข้อมูล
    • Main_Image.bin: กุญแจลับ OpenPGP (ผลบวกลวง)
    • Resource.bin: ไฟล์ปฏิบัติการ MIPSEB-LE MIPS-III ECOFF
    • OIS.bin: ข้อมูล
    • SKIN.bin: ข้อมูล
  • คาดว่า ONBL1 และ ONBL2 จะเป็นบูตโหลดเดอร์ขั้นที่ 1 และ 2
  • Main_Image คือเฟิร์มแวร์จริง และมี ARM function prologue จำนวนมาก
  • Resource และ SKIN อาจเป็น UI skin ที่ผู้ผลิต SoC จัดเตรียมไว้
  • OIS อาจเป็นเฟิร์มแวร์ของระบบป้องกันภาพสั่นไหวแบบออปติคัล

โหลดโค้ดเข้า Ghidra

  • พาร์ทิชัน ONBL1, ONBL2, Main_Image มีโค้ด ARM จริงอยู่ภายใน
  • เริ่มการวิเคราะห์ใน Ghidra เพื่อแมป Main_Image ไปยังที่อยู่หน่วยความจำที่ถูกต้อง
  • โหลดชื่อฟังก์ชันจาก partialImage.o.map แล้วแมปเข้า Ghidra

รีเวิร์สเอนจิเนียริง DevHTTPResponseStart

  • ฟังก์ชัน DevHTTPResponseStart ทำหน้าที่ตรวจจับฮอตสปอต
  • สรุป:
    • เมื่อได้รับ HTTP 200 OK เซิร์ฟเวอร์ต้องตั้งค่า cookie ให้กับโดเมน "yahoo.something" หรือ "kr.yahoo.something"
    • เมื่อได้รับ HTTP 301/302/307 redirect URL ต้องมีสตริง "yahoo."
  • เพื่อหลบเลี่ยงการตรวจจับฮอตสปอต จำเป็นต้องชี้ DNS record ไปยังเซิร์ฟเวอร์อื่น หรือใช้ HTTP redirect เพื่อตั้งค่า cookie

สรุป: ขุมทรัพย์ที่แท้จริง

  • การวิเคราะห์นี้ทำให้สามารถเข้าใจและหลบเลี่ยงการตรวจจับฮอตสปอตของกล้อง WiFi Samsung WB850F ได้
  • ผลลัพธ์คือการแก้ไขเล็กน้อยที่ทำให้กล้องเชื่อมต่อได้จริงและอัปโหลดรูปภาพได้
  • Main_Image มีฟังก์ชันมากกว่า 77,000 รายการ จึงคุ้มค่าแก่การสำรวจเพื่อทำความเข้าใจการทำงานของกล้องดิจิทัลให้ดียิ่งขึ้น

ความเห็นของ GN⁺

  1. ความท้าทายทางเทคนิคและโอกาสในการเรียนรู้: บทความนี้นำเสนอตัวอย่างจริงของการรีเวิร์สเอนจิเนียริงเฟิร์มแวร์ ซึ่งเป็นทั้งความท้าทายทางเทคนิคและโอกาสในการเรียนรู้ มีประโยชน์มากสำหรับวิศวกรซอฟต์แวร์ระดับเริ่มต้น
  2. ข้อพิจารณาด้านความปลอดภัยและความเป็นส่วนตัว: การหลบเลี่ยงการตรวจจับฮอตสปอตเป็นประเด็นสำคัญในด้านความปลอดภัยและความเป็นส่วนตัว ควรคำนึงถึงจริยธรรมเสมอเมื่อนำเทคนิคเหล่านี้ไปใช้
  3. การใช้งาน Ghidra: สามารถเรียนรู้วิธีใช้เครื่องมืออย่าง Ghidra เพื่อวิเคราะห์เฟิร์มแวร์ที่ซับซ้อนได้ ซึ่งมีประโยชน์มากสำหรับงานรีเวิร์สเอนจิเนียริงและการวิเคราะห์ความปลอดภัย
  4. ความสำคัญของการอัปเดตเฟิร์มแวร์: การอัปเดตเฟิร์มแวร์มีความสำคัญต่อการคงไว้ซึ่งความสามารถและความปลอดภัยของอุปกรณ์ และบทความนี้แสดงให้เห็นความซับซ้อนของกระบวนการดังกล่าวได้เป็นอย่างดี
  5. การประยุกต์ใช้กับกล้องรุ่นอื่น: เทคนิคนี้อาจนำไปใช้กับกล้อง Samsung รุ่นอื่นได้เช่นกัน ซึ่งช่วยแก้ปัญหาลักษณะคล้ายกันในอุปกรณ์หลากหลายประเภท

1 ความคิดเห็น

 
GN⁺ 2024-05-26
ความเห็นจาก Hacker News

รวมคอมเมนต์จาก Hacker News

  • ฉันชอบลิงก์นี้มากกว่า ความล้มเหลวของ "crypto" ในเฟิร์มแวร์ที่น่าทึ่งสุด ๆ

    • ชอบลิงก์ที่พูดถึงกรณีความล้มเหลวของการเข้ารหัสเฟิร์มแวร์ของกล้อง Samsung NX มากกว่า
  • งานยอดเยี่ยม! คุณเคยคิดจะทำบทสอนเกี่ยวกับการทำ reverse engineering ไหม?

    • เป็นงานที่ยอดเยี่ยมมาก และสงสัยว่าเคยคิดจะทำบทสอนเกี่ยวกับ reverse engineering หรือไม่
  • ทั้งหมดที่ฉันต้องการคือกล้อง dSLR ที่เมื่อฉันกดปุ่มบนกล้องเพื่อถ่ายภาพ อีกไม่กี่อึดใจต่อมา ภาพนั้นจะไปอยู่ใน Apple Photos

    • ต้องการกล้อง DSLR ที่เมื่อถ่ายรูปแล้ว ภาพจะถูกบันทึกเข้า Apple Photos ทันที
  • [dead]

    • คอมเมนต์ถูกลบแล้ว