2 điểm bởi GN⁺ 2024-05-26 | 1 bình luận | Chia sẻ qua WhatsApp

Reverse engineering firmware Samsung WB850F

WB850F_FW_210086.zip - vùng chứa bên ngoài

  • WB850F là một trong số ít mẫu máy mà Samsung vẫn tiếp tục cung cấp firmware và các tệp hỗ trợ ngay cả sau khi ngừng ứng dụng iLauncher.
  • Gói WB850F_FW_210086.zip bao gồm nhiều tệp:
    • GPS_FW/BASEBAND_FW_Flash.mbin: dữ liệu
    • GPS_FW/BASEBAND_FW_Ram.mbin: dữ liệu
    • GPS_FW/Config.BIN: dữ liệu
    • GPS_FW/flashBurner.mbin: dữ liệu
    • FWUP: văn bản ASCII, dùng ký tự kết thúc dòng CRLF
    • partialImage.o.map: văn bản ASCII
    • WB850-FW-SR-210086.bin: dữ liệu
    • wb850f_adj.txt: văn bản ASCII, dùng ký tự kết thúc dòng CRLF
  • Tệp FWUP chứa chuỗi "upgrade all", là một script dành cho mô-đun kiểm thử/tự động hóa firmware.
  • Tệp wb850f_adj.txt là một script phức tạp để nâng cấp firmware GPS và xóa tệp đó.

partialImage.o.map - dump linker

  • partialImage.o.map là tệp văn bản dài hơn 300.000 dòng, chứa đầu ra linker của partialImage.o và toàn bộ bản đồ bộ nhớ:
    • Ví dụ:
      • 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
  • Tệp này cung cấp rất nhiều thông tin cực kỳ hữu ích cho việc phân tích firmware.

WB850-FW-SR-210086.bin - phân tích header

  • Khi phân tích tệp WB850-FW-SR-210086.bin bằng binwalk, người ta tìm thấy header tệp (HTML, PNG, JPEG, v.v.), header VxWorks và nhiều đường dẫn Unix, nhưng không tìm thấy phân vùng hay hệ thống tệp.
  • Kết quả hex dump của 1 KB đầu tiên:
    • 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.............
  • Từ đó có thể tái dựng bảng phân vùng, bao gồm tên tệp và tên phân vùng:
    • 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 - phân vùng mã và dữ liệu

  • Sau khi trích xuất các phân vùng bằng công cụ trích xuất phân vùng:
    • ONBL1.bin: dữ liệu
    • ONBL2.bin: dữ liệu
    • Main_Image.bin: khóa bí mật OpenPGP (nhận diện nhầm)
    • Resource.bin: tệp thực thi MIPSEB-LE MIPS-III ECOFF
    • OIS.bin: dữ liệu
    • SKIN.bin: dữ liệu
  • ONBL1ONBL2 được cho là giai đoạn 1 và 2 của bootloader.
  • Main_Image là firmware thực tế, chứa nhiều phần mở đầu hàm ARM.
  • ResourceSKIN có thể là giao diện skin UI do nhà sản xuất SoC cung cấp.
  • OIS có thể là firmware của thiết bị ổn định hình ảnh quang học.

Nạp mã vào Ghidra

  • Các phân vùng ONBL1, ONBL2, Main_Image chứa mã ARM thực tế.
  • Việc phân tích được bắt đầu trong Ghidra để ánh xạ Main_Image vào đúng địa chỉ bộ nhớ.
  • Tên hàm từ partialImage.o.map được nạp và ánh xạ vào Ghidra.

Reverse engineering DevHTTPResponseStart

  • Hàm DevHTTPResponseStart thực hiện phát hiện hotspot.
  • Tóm tắt:
    • Với phản hồi HTTP 200 OK, máy chủ phải đặt cookie trên miền yahoo.something hoặc kr.yahoo.something.
    • Với chuyển hướng HTTP 301/302/307, URL phải chứa chuỗi yahoo..
  • Để vượt qua cơ chế phát hiện hotspot, cần trỏ bản ghi DNS tới máy chủ khác hoặc dùng chuyển hướng HTTP để đặt cookie.

Tóm tắt: kho báu thực sự

  • Qua phân tích này, người ta đã hiểu và có thể vượt qua cơ chế phát hiện hotspot của máy ảnh WiFi Samsung WB850F.
  • Kết quả là, với một bản vá nhỏ, máy ảnh thực sự có thể kết nối và tải ảnh lên.
  • Main_Image chứa hơn 77.000 hàm, rất đáng để khám phá nhằm hiểu rõ hơn cách một máy ảnh số hoạt động.

Ý kiến của GN⁺

  1. Thách thức kỹ thuật và cơ hội học hỏi: Bài viết này cung cấp một trường hợp thực tế về reverse engineering firmware, mang lại thách thức kỹ thuật và cơ hội học hỏi. Rất hữu ích cho các kỹ sư phần mềm mới vào nghề.
  2. Cân nhắc về bảo mật và quyền riêng tư: Việc vượt qua cơ chế phát hiện hotspot là một điểm cần cân nhắc quan trọng về bảo mật và quyền riêng tư. Khi sử dụng các kỹ thuật này, luôn cần cân nhắc khía cạnh đạo đức.
  3. Cách dùng Ghidra: Có thể học cách dùng các công cụ như Ghidra để phân tích firmware phức tạp. Điều này rất hữu ích cho reverse engineering và phân tích bảo mật.
  4. Tầm quan trọng của cập nhật firmware: Cập nhật firmware rất quan trọng để duy trì tính năng và bảo mật của thiết bị. Bài viết này cho thấy rõ sự phức tạp của việc cập nhật firmware.
  5. Khả năng áp dụng cho các mẫu máy ảnh khác: Kỹ thuật này cũng có thể áp dụng cho các mẫu máy ảnh Samsung khác, giúp giải quyết các vấn đề tương tự trên nhiều thiết bị khác nhau.

1 bình luận

 
GN⁺ 2024-05-26
Ý kiến trên Hacker News

Tổng hợp bình luận Hacker News

  • Tôi thích liên kết này hơn. Một thất bại "mã hóa" firmware hoàn toàn đáng kinh ngạc

    • Thích liên kết nói về trường hợp thất bại mã hóa firmware của camera Samsung NX.
  • Công việc thật tuyệt vời! Bạn đã từng nghĩ đến việc làm một hướng dẫn về cách reverse engineering chưa?

    • Đây là một công việc đáng kinh ngạc. Tò mò không biết có ý định làm một hướng dẫn về reverse engineering hay không.
  • Điều duy nhất tôi muốn là một chiếc dSLR mà khi tôi chụp ảnh trên máy bằng nút bấm của nó, chỉ ít giây sau, ảnh đã có trong Apple Photos.

    • Muốn một chiếc máy ảnh DSLR mà khi chụp ảnh thì hình sẽ được lưu ngay vào Apple Photos.
  • [dead]

    • Bình luận đã bị xóa.