Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Đảo ngược và hack các ổ đĩa tự mã hóa bên ngoài là sở thích cũ của tôi. Trước đây tôi đã có cơ hội thực hành với các mẫu máy như Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Mới gần đây, một đồng nghiệp đã mang đến cho tôi một vật trưng bày khác: Patriot (Aigo) SK8671, được chế tạo theo thiết kế điển hình - đèn chỉ báo LCD và bàn phím để nhập mã PIN. Đó là kết quả của nó…

XUẤT KHẨU. Giới thiệu
2. Kiến trúc phần cứng
– 2.1. Bo mạch chủ
– 2.2. Bảng chỉ báo LCD
– 2.3. Bàn phím
– 2.4. Nhìn vào dây
3. Trình tự các bước tấn công
– 3.1. Lấy kết xuất dữ liệu từ ổ flash SPI
– 3.2. Đánh hơi thông tin liên lạc

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận


XUẤT KHẨU. Giới thiệu

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận
Nhà ở

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận
Đóng gói

Việc truy cập vào dữ liệu được lưu trữ trên đĩa, được cho là đã được mã hóa, được thực hiện sau khi nhập mã PIN. Một số lưu ý giới thiệu về thiết bị này:

  • Để thay đổi mã PIN, bạn phải nhấn F1 trước khi mở khóa;
  • Mã PIN phải có từ 6 đến 9 chữ số;
  • Sau 15 lần thử sai, đĩa sẽ bị xóa.

2. Kiến trúc phần cứng

Đầu tiên, chúng tôi mổ xẻ thiết bị thành nhiều phần để hiểu nó bao gồm những thành phần nào. Công việc tẻ nhạt nhất là mở hộp: rất nhiều ốc vít siêu nhỏ và nhựa. Sau khi mở hộp ra, chúng ta thấy như sau (chú ý đến đầu nối năm chân mà tôi đã hàn):

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

2.1. Bo mạch chủ

Bảng mạch chính khá đơn giản:

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Phần đáng chú ý nhất của nó (xem từ trên xuống dưới):

  • đầu nối cho đèn báo LCD (CN1);
  • loa tweeter (SP1);
  • Pm25LD010 (sự chỉ rõ) Ổ đĩa flash SPI (U2);
  • Bộ điều khiển Jmicron JMS539 (sự chỉ rõ) cho USB-SATA (U1);
  • Đầu nối USB 3 (J1).

Ổ đĩa flash SPI lưu trữ chương trình cơ sở cho JMS539 và một số cài đặt.

2.2. Bảng chỉ báo LCD

Không có gì đáng chú ý trên bảng LCD.

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận
Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Chỉ một:

  • Chỉ báo LCD không rõ nguồn gốc (có thể có bộ phông chữ Trung Quốc); với điều khiển tuần tự;
  • Đầu nối ruy băng cho bo mạch bàn phím.

2.3. Bàn phím

Khi kiểm tra bảng bàn phím, mọi thứ trở nên thú vị hơn.

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Ở đây, ở mặt sau, chúng ta thấy một đầu nối ruy băng, cũng như bộ vi điều khiển Cypress CY8C21434 PSoC 1 (sau đây chúng ta sẽ gọi đơn giản là PSoC)

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

CY8C21434 sử dụng tập lệnh M8C (xem tài liệu). Trên [trang sản phẩm]( (http://www.cypress.com/part/cy8c21434-24ltxi) nó được chỉ ra rằng nó hỗ trợ công nghệ CapSense (giải pháp của Cypress, dành cho bàn phím điện dung). Ở đây bạn có thể thấy đầu nối năm chân mà tôi đã hàn - đây là phương pháp tiêu chuẩn để kết nối bộ lập trình bên ngoài thông qua giao diện ISSP.

2.4. Nhìn vào dây

Hãy tìm hiểu những gì được kết nối ở đây. Để làm điều này, chỉ cần kiểm tra dây bằng đồng hồ vạn năng:

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Giải thích cho sơ đồ này được vẽ trên đầu gối:

  • PSoC được mô tả trong thông số kỹ thuật;
  • đầu nối tiếp theo, cái ở bên phải, là giao diện ISSP, theo ý muốn của số phận, tương ứng với những gì được viết về nó trên Internet;
  • Đầu nối ngoài cùng bên phải là đầu nối của đầu nối ruy băng với bo mạch bàn phím;
  • Hình chữ nhật màu đen là hình vẽ đầu nối CN1, được thiết kế để kết nối bo mạch chính với bảng LCD. P11, P13 và P4 được kết nối với các chân PSoC 11, 13 và 4 trên bảng LCD.

3. Trình tự các bước tấn công

Bây giờ chúng ta đã biết ổ đĩa này bao gồm những thành phần nào, chúng ta cần: 1) đảm bảo rằng chức năng mã hóa cơ bản thực sự có mặt; 2) tìm hiểu cách tạo/lưu khóa mã hóa; 3) tìm chính xác nơi sẽ kiểm tra mã PIN.

Để làm điều này tôi đã thực hiện các bước sau:

  • lấy kết xuất dữ liệu từ ổ flash SPI;
  • đã cố gắng kết xuất dữ liệu từ ổ flash PSoC;
  • đã xác minh rằng giao tiếp giữa Cypress PSoC và JMS539 thực sự có chứa các phím được nhấn;
  • Tôi đảm bảo rằng khi thay đổi mật khẩu, không có gì bị ghi đè trong ổ flash SPI;
  • quá lười biếng để đảo ngược phần sụn 8051 từ JMS539.

3.1. Lấy kết xuất dữ liệu từ ổ flash SPI

Thủ tục này rất đơn giản:

  • kết nối các đầu dò với các chân của ổ flash: CLK, MOSI, MISO và (tùy chọn) EN;
  • giao tiếp “đánh hơi” bằng thiết bị đánh hơi sử dụng máy phân tích logic (tôi đã sử dụng Saleae Logic Pro 16);
  • giải mã giao thức SPI và xuất kết quả sang CSV;
  • tận dụng lợi thế của giải mã_spi.rbđể phân tích kết quả và nhận kết xuất.

Xin lưu ý rằng phương pháp này đặc biệt hiệu quả trong trường hợp bộ điều khiển JMS539, vì bộ điều khiển này tải tất cả phần sụn từ ổ đĩa flash ở giai đoạn khởi tạo.

$ decode_spi.rb boot_spi1.csv dump
0.039776 : WRITE DISABLE
0.039777 : JEDEC READ ID
0.039784 : ID 0x7f 0x9d 0x21
---------------------
0.039788 : READ @ 0x0
0x12,0x42,0x00,0xd3,0x22,0x00,
[...]
$ ls --size --block-size=1 dump
49152 dump
$ sha1sum dump
3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump

Sau khi kết xuất ổ đĩa flash SPI, tôi đi đến kết luận rằng nhiệm vụ duy nhất của nó là lưu trữ phần sụn cho thiết bị điều khiển JMicron, được tích hợp trong bộ vi điều khiển 8051. Thật không may, việc sử dụng ổ flash SPI hóa ra lại vô dụng:

  • khi mã PIN được thay đổi, kết xuất ổ đĩa flash vẫn giữ nguyên;
  • Sau giai đoạn khởi tạo, thiết bị không truy cập vào ổ flash SPI.

3.2. Đánh hơi thông tin liên lạc

Đây là một cách để tìm ra con chip nào chịu trách nhiệm kiểm tra thông tin liên lạc về thời gian/nội dung quan tâm. Như chúng ta đã biết, bộ điều khiển USB-SATA được kết nối với Cypress PSoC LCD thông qua đầu nối CN1 và hai dải băng. Do đó, chúng tôi kết nối các đầu dò với ba chân tương ứng:

  • P4, đầu vào/đầu ra chung;
  • P11, I2C SCL;
  • P13, I2C SDA.

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Sau đó, chúng tôi khởi chạy bộ phân tích logic Saleae và nhập trên bàn phím: “123456~”. Kết quả là chúng ta thấy sơ đồ sau.

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Trên đó chúng ta có thể thấy ba kênh trao đổi dữ liệu:

  • có một số xung ngắn trên kênh P4;
  • trên P11 và P13 - trao đổi dữ liệu gần như liên tục.

Phóng to mức tăng đột biến đầu tiên trên kênh P4 (hình chữ nhật màu xanh lam trong hình trước), chúng ta thấy như sau:

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Ở đây bạn có thể thấy rằng trên P4 có gần 70ms tín hiệu đơn điệu, mà lúc đầu đối với tôi, tín hiệu này dường như đóng vai trò là tín hiệu đồng hồ. Tuy nhiên, sau khi dành thời gian kiểm tra suy đoán của mình, tôi phát hiện ra rằng đây không phải là tín hiệu đồng hồ mà là một luồng âm thanh phát ra loa tweeter khi nhấn phím. Do đó, bản thân phần tín hiệu này không chứa thông tin hữu ích cho chúng ta. Tuy nhiên, nó có thể được sử dụng như một chỉ báo để biết khi nào PSoC đăng ký một lần nhấn phím.

Tuy nhiên, luồng âm thanh P4 mới nhất có một chút khác biệt: đó là âm thanh cho "mã PIN không hợp lệ"!

Quay lại biểu đồ gõ phím, phóng to biểu đồ luồng âm thanh cuối cùng (xem lại hình chữ nhật màu xanh), chúng ta nhận được:

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Ở đây chúng ta thấy tín hiệu đơn điệu trên P11. Vì vậy, có vẻ như đây là tín hiệu đồng hồ. Và P13 là dữ liệu. Lưu ý cách mẫu thay đổi sau khi tiếng bíp kết thúc. Sẽ rất thú vị để xem những gì xảy ra ở đây.

Các giao thức hoạt động với hai dây thường là SPI hoặc I2C và thông số kỹ thuật trên Cypress cho biết các chân này tương ứng với I2C, điều mà chúng tôi thấy là đúng trong trường hợp của chúng tôi:

Đảo ngược và hack ổ cứng ngoài tự mã hóa Aigo. Phần 1: Mổ xẻ các bộ phận

Chipset USB-SATA liên tục thăm dò PSoC để đọc trạng thái của khóa, theo mặc định là “0”. Sau đó, khi bạn nhấn phím "1", nó sẽ chuyển thành "1". Lần truyền cuối cùng ngay sau khi nhấn “~” sẽ khác nếu nhập sai mã PIN. Tuy nhiên, hiện tại tôi chưa kiểm tra xem điều gì thực sự được truyền tải ở đó. Nhưng tôi nghi ngờ rằng đây khó có thể là khóa mã hóa. Dù sao, hãy xem phần tiếp theo để hiểu cách tôi gỡ bỏ phần sụn bên trong PSoC.

Nguồn: www.habr.com

Thêm một lời nhận xét