Hành trình Hacker Firmware HDD: Đi sâu vào bên trong ổ cứng để khai thác lỗ hổng

Phần mềm14 tháng 5, 2026·5 phút đọc

Bài viết chia sẻ hành trình kỹ thuật ngược và sửa đổi firmware của các ổ cứng HDD nhằm khai thác một lỗ hổng race condition trên Xbox 360. Tác giả đi sâu vào quy trình phân tích thuật toán nén, debug trực tiếp qua JTAG và viết mã Assembly để can thiệp vào hoạt động đọc dữ liệu của ổ đĩa.

Hành trình Hacker Firmware HDD: Đi sâu vào bên trong ổ cứng để khai thác lỗ hổng

Hành trình Hacker Firmware HDD: Đi sâu vào bên trong ổ cứng để khai thác lỗ hổng

Trong quá trình phát triển một exploit (khai thác lỗ hổng) cho máy chơi game Xbox 360, tác giả Ryan Miceli đã phát hiện ra nhu cầu cần phải sửa đổi firmware của ổ cứng HDD. Mục tiêu là tạo ra độ trễ nhân tạo để khai thác một lỗ hổng race condition (điều kiện tranh chấp) xảy ra khi console đọc dữ liệu từ ổ đĩa. Dưới đây là câu chuyện chi tiết về quá trình kỹ thuật ngược (reverse engineering), phân tích và sửa đổi firmware của các ổ cứng HDD và SSD.

Các ổ cứng dùng để thí nghiệmCác ổ cứng dùng để thí nghiệm

Bối cảnh và Chuẩn bị

Lỗ hổng mà tác giả nhắm đến yêu cầu một khoảng thời gian cụ thể giữa lúc lệnh đọc được phát ra và lúc ổ đĩa phản hồi. Ý tưởng ban đầu là sửa đổi firmware HDD để gây ra độ trễ vài trăm mili-giây khi đọc một sector nhất định. Để thực hiện điều này, một loạt các ổ cứng từ các hãng khác nhau đã được huy động, bao gồm Samsung HM020GI, Hitachi HTS545032B9A300, Western Digital WD3200BEVT và Samsung PM871a.

Quy trình tấn công tổng thể được xác định bao gồm các bước: lấy bản dump firmware, phân tích bằng IDA (xử lý nén/mã hóa), tìm cách flash lại firmware, định vị mã xử lý lệnh đọc, viết patch để tạo độ trễ và cuối cùng là flash bản sửa đổi vào ổ đĩa.

Phân tích ổ cứng Western Digital

Tác giả bắt đầu với ổ cứng Western Digital (WD) nhờ vào việc tìm thấy bản dump firmware trên các diễn đàn chuyên về dữ liệu. Cấu trúc của firmware WD khá trực tiếp: một danh sách các phần dữ liệu/thực thi tĩnh với các header và checksum.

Cấu trúc firmware của ổ WDCấu trúc firmware của ổ WD

Tuy nhiên, thách thức lớn nằm ở chỗ hầu hết các phần trong firmware đều bị nén. Phần đầu tiên là một loader stub dùng bởi bootloader của vi điều khiển (MCU) để giải nén và tải các phần còn lại vào bộ nhớ. Thông qua quá trình kỹ thuật ngược mã ARM của phần loader này, tác giả đã xác định được thuật toán nén được sử dụng là một biến thể của LZHUF, với một số thay đổi về hằng số N và cách tính độ dài chuỗi.

Sau khi viết lại thuật toán giải nén và cập nhật script tải cho IDA, toàn bộ firmware đã được tải thành công để phân tích.

Debugging trực tiếp và Tìm lệnh xử lý

Để hiểu sâu hơn về cách ổ đĩa hoạt động, tác giả đã sử dụng JTAG để debug trực tiếp ổ cứng WD khi nó đang chạy. Bằng cách sử dụng các lệnh nhà cung cấp (Vendor Specific Commands - VSC) thông qua giao thức ATA, tác giả có thể đọc và ghi bộ nhớ RAM của ổ đĩa.

Quá trình này dẫn đến việc phát hiện ra bảng tra cứu hàm xử lý cho các lệnh VSC và quan trọng hơn là bảng yêu cầu SATA. Tác giả đã tìm ra mã xử lý cho lệnh DMA READ EXT – lệnh mà Xbox 360 sử dụng để đọc dữ liệu. Tuy nhiên, mã này không nằm trong firmware chính mà nằm trong các overlay modules (mô-đun phủ) được lưu trữ trên đĩa từ và tải vào RAM trong quá trình khởi động.

Quá trình debug và phân tích mãQuá trình debug và phân tích mã

Patching Firmware và Kết quả

Sau khi xác định được vị trí mã xử lý đọc sector trong bộ nhớ, tác giả đã viết một đoạn mã Assembly để tạo ra một "hook". Mục tiêu là khi lệnh đọc được thực thi, mã sẽ nhảy đến một vùng nhớ khác (code cave), thực hiện một vòng lặp gây độ trễ khoảng 200ms, sau đó mới quay lại thực thi lệnh đọc bình thường.

Đoạn mã patch sau đó được nạp trực tiếp vào RAM của ổ cứng đang chạy thông qua các lệnh VSC. Kết quả thử nghiệm cho thấy thời gian đọc sector đã tăng lên đáng kể (từ 0ms lên khoảng 450ms do hiệu ứng cache và độ trễ của patch), chứng minh việc sửa đổi hoạt động hiệu quả.

"Nhiệm vụ thất bại thành công"

Một cách đầy ironie, khi áp dụng patch vào thử nghiệm thực tế trên Xbox 360, tác giả phát hiện ra rằng exploit đã hoạt động thành công ngay cả khi không có bản sửa đổi firmware. Sau nhiều ngày thức trắng làm việc, hóa ra các biến số trong exploit đã được tinh chỉnh tốt enough để hoạt động trên các ổ HDD thông thường (trừ SSD phản hồi quá nhanh).

Mặc dù không cần thiết cho mục đích cuối cùng, nhưng dự án này là một cuộc phiêu lưu thú vị vào thế giới của các thiết bị nhúng. Tác giả đã chia sẻ mã nguồn và các script liên quan trên GitHub để cộng đồng nghiên cứu tiếp. Phần sau của chuỗi bài viết này sẽ hứa hẹn việc sử dụng AI để hỗ trợ phân tích firmware và kỹ thuật ngược các kiến trúc MCU chưa biết.

"Tôi nghĩ lý do bạn không thấy nhiều thông tin về chủ đề này là vì mọi người sợ rằng nó sẽ giúp các tác nhân xấu tạo ra phần mềm độc hại. Tuy nhiên, malware HDD đã tồn tại từ lâu rồi (cảm ơn NSA!)."

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗