IoT Hacking Part 1: Dump device firmware

Trong thời gian team mình có study về IoT Hacking. Sau đây là một số note mà team tích lũy được.

I. Lý thuyết

Giao thức SPI (Serial Peripheral Interface):

  • SPI – Serial Peripheral Interface – hay còn gọi là giao diện ngoại vi nối tiếp, được phát triển bởi hãng Motorola.

  • Chuẩn đồng bộ nối truyền dữ liệu ở chế độ full - duplex (hay gọi là "song công toàn phần". Nghĩa là tại 1 thời điểm có thể xảy ra đồng thời quá trình truyền và nhận.

  • Là giao tiếp đồng bộ, bất cứ quá trình nào cũng đều được đồng bộ với xung clock sinh ra bởi thiết bị Master. Không cần phải lo lắng về tốc độ truyền dữ liệu.

  • SPI thường được sử dụng giao tiếp với bộ nhớ EEPROM, RTC (Đồng hồ thời gian thực), IC âm thanh, các loại cảm biến như nhiệt độ và áp suất, thẻ nhớ như MMC hoặc thẻ SD hoặc thậm chí các bộ vi điều khiển khác.

Các loại bộ nhớ chính dùng trong các thiết bị nhúng:

  • EPROM: Erasable Programmable Read-Only Memory. Nó là loại ROM được thiết kế dựa trên các nguyên tắc phân cực tĩnh điện. Nội dung của nó có thể được viết vào hoặc xóa đi bằng tia cực tím.

  • EAROM: EAROM là chữ viết tắt của cụm từ tiếng Anh “Electrically Alterable Read-Only Memory”. Đặc trưng của nó là có thể thay đổi theo từng bit. Nhược điểm của loại ROM này là tốc độ ghi tương đối chậm và điện thế sử dụng không chuẩn.

  • PROM: PROM là viết tắt của cụm từ “Programmable Read-Only Memory”. Nó thuộc loại WORM (“Write-Once-Read-Many”), đặc trưng của nó là chỉ lập trình được 1 lần. Nó cũng là loại ROM có giá rẻ nhất thị trường hiện nay

  • EEPROM: Đây là chữ viết tắt của cụm từ “Electrically Erasable Programmable Read-Only Memory’. Nó được thiết kế thông qua việc sử dụng công nghệ bán dẫn. Nội dung của nó có thể được viết vào hoặc xóa đi bằng điện cực..

  • NOTE: Trong các thiết bị hiện tại đa phần sử dụng bộ nhớ EEPROM.

Có hai loại bộ nhớ EEPROM chính là bộ nhớ kiểu NOR và Kiểu NAND:

  • NOR thường được sử dụng trong các bộ modem router, hay các dòng camera thông dụng. Bộ nhớ NOR cũng thường được sử dụng để lưu trữ code và khi chạy sẽ load trực tiếp vào RAM để execute chương trình.

  • NAND thường được sử dụng trong các thiết bị có cấu hình cao hơn. Modem FPT sử dụng loại bộ nhớ này. Bộ nhớ NAND thường đc dùng để lưu trữ dữ liệu.

Kiểu chân IC:

Các chíp nhớ sẽ có sử dụng các chuẩn chân IC khác nhau. Trong quá trình thực tế dump rom sẽ phải tra datasheet của chip nhớ và từ sơ đồ chân để nối vào các thiết bị dump rom.

Trong các thiết bị nhúng thường sử dụng 2 chuẩn chân IC chính là sop8 và wson8

  • WSON8: Là loại chíp dán smd. Gồm 8 chân ở gầm chip.

SOP8: Là loại chíp dán smd. Gồm 8 chân nổi.

DIP8: Đây là chuẩn chip cho cách loại mạch 1 lớp. Trong quá trình dump firmware nó chủ yếu được sử dụng là chuẩn chân trung gian nối tiếp giữa chip và usb ch341a vì nó có thể dễ dàng tháo nắp với các chân kẹp trên usb ch341a.

II. Dump rom từ flash memory

1. Chip SOP8:

Xác định chip trên board mạch

Đối với các thiết bị như router, camera,.. chíp nhớ trên đó thường sử dụng chân SOP8. Nên ta sẽ cố gắng tìm các chip sử dụng chân này trên board mạch. Sau đó đọc tên chip và tra google để xác định lại đó đúng là chip nhớ.

Trên các IC nhớ sẽ có 1 dấu chấm ở góc. Nó sẽ giúp ta xác định chân đúng trên sơ đồ.

Như vị dụ trong hình là con chip XMC XM25QH128AHIG được sử dụng trong thiết bị TPLINK DECO E4R. DATASHEET ta tra được qua google: https://datasheet.lcsc.com/lcsc/1811072025_XMC-XM25QH128AHIG_C328463.pdf

Sử dụng ch431a để kết nối chip nhớ với pc

Ta sẽ sử dụng thiết bị sau để kết nối chip nhớ với pc https://shopee.vn/Máy-nạp-rom-CH341A-combo-kèm-kẹp-nạp-nhanh-trực-tiếp-trên-main-board-(Giá-cả-bộ)-i.742046680.17645130912?sp_atk=d4b55e54-eb7f-415b-9932-cafeacc0c7f1&xptdk=d4b55e54-eb7f-415b-9932-cafeacc0c7f1:

Sử dụng kẹp để kẹp chip nhớ trên board mạch. Sau đó kết nối kẹp với socket để chuyển từ sop8 sang dip8. Sau đó kết nối với usb ch341a.

Lưu ý dây màu đỏ trên kẹp chính là tương ứng với chân được đánh dấu trên chip.

Sử dụng phần mềm để dump firmware

https://www.mediafire.com/file/ysp1w5jfill5x81/[Hshop.vn]+CH341A+Programmer+v1.01.zip/file

2. Chip SWON8:

Lưu ý: Vì dòng chip này được hàn chết vào board mạch nên chúng ta không thể dùng kẹp để trích xuất các chân ra được. Mà ta cần phải dùng hàn khò nóng để làm chạy thiếc và gỡ chip ra khỏi board mạch.

Trong hình là chip flash của modem FPT đã được khò tách ra khỏi mạch.

Kết nối chip flash với usb ch341a.

Để kết nối được chip chuẩn chân SWON8 ta cần hàn lại vào 1 mạch chuyển. Hoặc có 1 cách đơn giản hơn là mua thêm 1 đế kẹp chuyển đổi từ WSON8 sang DIP8

https://shopee.vn/Đế-nạp-bios-chân-gầm-QFN8-WSON8-MLF8-MLP8-DFN8-to-DIP8-i.252543056.23409887949?sp_atk=bebb9def-e2d8-4757-b7c9-88ec3f9a71a3&xptdk=bebb9def-e2d8-4757-b7c9-88ec3f9a71a3

Sau đó kẹp chip nhớ vào đế chuyển và cắm vào usb ch341a:

DUMP FIRMWARE

Đối với dòng chip NAND ta sẽ không dùng phần mềm cũ mà sẽ sử dụng phần mềm sau để dump: https://github.com/McMCCRU/SNANDer