[IoT Pentest] Truy cập và đặt lại mật khẩu Router qua giao tiếp UART

IoT hay Internet vạn vật đang là một lĩnh vực được rất được quan tâm. Nhưng bên cạnh những lợi ích, IoT đặt ra các thách thức về bảo mật không hề nhỏ cho doanh nghiệp, tổ chức. Chính vì vậy, lĩnh vực bảo mật trên các thiết bị IoT  sẽ là cơ hội nghề nghiệp cho các bạn trẻ với mức đãi ngộ rất cao.

Bài viết này sẽ hướng dẫn cách truy cập vào thiết bị một thiết bị Router ADSL (phiên bản khá cũ, phổ biến ở Việt Nam nhiều năm trước) thông qua giao tiếp UART, đây cũng là một trong những kiến thức cơ bản nếu muốn bắt đầu tìm hiểu về bảo mật trên các thiết bị phần cứng, IoT.

Đầu tiên, chúng ta tiến hành mở vỏ của thiết bị để xem các bo mạch bên trong. Thông thường các thiết bị Router hoặc Camera thường dùng cho gia đình sẽ cung cấp truy cập Console để quản lý thiết bị thông qua giao tiếp UART, giúp ích cho các quản trị viên hoặc nhà sản xuất truy cập trực tiếp vào thiết bị để kiểm tra trong trường hợp có sự cố không thể truy cập từ xa.

Truy cập thiết bị Router qua giao tiếp UART_2

Nhưng khi cung cấp các sản phẩm phần cứng ra thị trường, trên bo mạch thường sẽ không in các thông tin kết nối lên Board mạch, để hạn chế các truy cập trái phép vào thiết bị. Các kết nối UART thường gôm lại 1 nhóm gồm 3 hoặc 4 Pin, nếu quan sát trên Board ta sẽ thấy một nhóm 4 Pin có vẻ khả nghi.

Truy cập thiết bị Router qua giao tiếp UART_3

Giả sử đây là các Pin của UART, ta sẽ lần lượt xác định đâu là GND, VCC, TX, RX. Đặt tên các Pin chưa biết lần lượt là 1, 2, 3, 4.

Xác định chân GDN

Trước tiên nhất phải tìm GND (tham chiếu nối đất) để tạo các kết nối đúng, tránh gây ra các sai sót về điện áp lúc làm việc.

Yêu cầu:

Ngắt nguồn điện vào thiết bị.

Chuyển chế độ của đồng hồ đo sang Diode Test

Truy cập thiết bị Router qua giao tiếp UART_4

Chú ý giá trị “1” là khi giữa 2 kết nối không thông nhau. Lần lượt đo mỗi Pin với tất cả các Pin còn lại. Pin nào cho ra giá trị khác “1” khi đo với tất cả các Pin còn lại thì đó chính là Pin GND. Ví dụ đo Pin (1), thử giữa 2 Pin là (1) và (4) không thông, vì vậy (1) không phải là GND.

Truy cập thiết bị Router qua giao tiếp UART_5

Kết quả thử chỉ duy nhất Pin (2) thông với tất cả Pin còn lại, nên đây là Pin GND.

Truy cập thiết bị Router qua giao tiếp UART_6

Xác định các chân VCC, TX, RX

Sau khi đã xác định được chân GDN, chúng ta tiến hành xác định các chân VCC, TX, RX. Các bước tiến hành như sau:

Cấp nguồn vào thiết bị (ở đây là 12V).

Chuyển đồng đồ đo sang thang đo điện áp, chỉnh thông số Max là 20 Volt. Kết nối Pin (2) (tương ứng GND) vào cực âm của đồng đồ.

Lần lượt kết nối cực dương của đồng hồ vào từng Pin (1)/(3)/(4), khởi động thiết bị vào quan sát kỹ giá trị đồng hồ đo.

Pin (4) luôn giá trị điện áp rất nhỏ (dưới 1V). Đây sẽ là RX vì phải có tín hiệu gửi vào thiết bị thì Pin này mới thay đổi điện áp, còn lại sẽ luôn ở mức thấp.

Truy cập thiết bị Router qua giao tiếp UART_7

Còn 2 Pin còn lại là (1) và (3) sau khi thiết bị khởi động ta thấy luôn có mức điện áp cao trong khoảng 3.36 ~ 3.41 Volt. Để phân biệt TX và VCC, ta sẽ giả sử như sau:

Pin VCC là nơi cấp nguồn, vì vậy điện áp sẽ có giá trị ổn định ngay khi vừa mở nguồn thiết bị đến sau khi thiết bị khởi động thành công. Ở đây ta tìm thấy Pin (3) thỏa điều kiện này, điện áp luôn ở mức 3.36 ~ 3.41 Volt, nên đây khả năng rất cao là VCC.

Truy cập thiết bị Router qua giao tiếp UART_8

Pin TX là nơi gửi tín hiệu, thông thường quá trình khởi động sẽ xuất ra rất nhiều tín hiệu đến Console. Các tín hiệu Serial là các mức điện áp khác nhau, sẽ thay đổi liên tục, vì vậy điện áp ở Pin TX sẽ có biến đổi trong lúc thiết bị khởi động. Pin (1) thỏa điều kiện này, quá trình khởi động thiết bị mức điện áp trên (1) dao động trong một khoảng khá lớn 2.6 ~ 3.4 Volt, nên đây sẽ là TX. Video đo TX

Kết quả các UART Pin tìm thấy như sau

Truy cập thiết bị Router qua giao tiếp UART_9

Giao tiếp với UART

Trong bài viết này tác giả sử dụng mạch USB UART Converter CP2102 để chuyển tín hiệu từ UART vào máy tính qua cổng USB

Truy cập thiết bị Router qua giao tiếp UART_10

Sơ đồ kết nối như sau từ UART Pin của thiết bị đến CP2102 như sau, chú ý kết nối giữa TX và RX:

Truy cập thiết bị Router qua giao tiếp UART_23

Truy cập thiết bị Router qua giao tiếp UART_11

Sử dụng một chương trình đọc Console như MiniCom (trên Linux), ở đây tác giả dùng Arduino IDE trên Windows (do có sẵn trong máy) để tương tác với UART.

  • Xác định cổng COM ảo của thiết bị CP2102, ở đây là COM6 hiển thị trong Device Manager

Truy cập thiết bị Router qua giao tiếp UART_12

  • Trong Arduino IDE chọn Menu Tool, Port là “COM6”, sau đó chọn Serial Monitor để mở công cụ giao tiếp với Serial Port

Truy cập thiết bị Router qua giao tiếp UART_13

  • Khi giao tiếp với tín hiệu Serial, phần quan trọng nhất là Baud Rate giữa 2 thiết bị phải giống nhau. Baud Rate hiểu đơn giản là số lượng Bits có thể trao đổi giữa 2 thiết bị trong 1 giây, đơn vị là bps (bits-per-second). Ví dụ Baud Rate 9600 có thể mô tả như sau:

Truy cập thiết bị Router qua giao tiếp UART_24

Chọn sai Baud Rate giữa đầu gửi và nhận sẽ không thể giao tiếp được, vì khoảng thời gian lấy mẫu điện áp khác nhau sẽ tạo ra những Bits giá trị khác nhau (Encoding / Decoding).

Một số giá trị Baud Rate tiêu chuẩn cho các thiết bị điện tử là 1200, 2400, 4800, 19200, 38400, 57600, 115200, 128000, 256000. Trong trường hợp không có thông tin về Baud Rate của thiết bị cần kết nối, ta phải thử hết lần lượt các giá trị chuẩn để tìm được giá trị phù hợp.

Truy cập thiết bị Router qua giao tiếp UART_14

Chọn Baud Rate sai sẽ không có phản hồi hoặc trả về các giá trị không có ý nghĩa, ví dụ khi chọn 19200.

Truy cập thiết bị Router qua giao tiếp UART_15

Ở trường hợp Router ta đang kiểm tra, chỉ khi chọn Baud Rate là 38400 mới có kết quả phản hồi từ thiết bị và đọc được dưới dạng ASCII, nên 38400 là giá trị cần tìm.

Truy cập thiết bị Router qua giao tiếp UART_16

Các thiết bị viễn thông thường hỗ trợ lệnh help để hiển thị các lệnh hỗ trợ quản lý thiết bị, thử gõ lệnh help ta được kết quả như sau:

Truy cập thiết bị Router qua giao tiếp UART_17

Như hướng dẫn ta có thể dùng lệnh passwd để cập nhật lại mật khẩu tài khoản admin, ở đây sẽ đặt là 123456

Truy cập thiết bị Router qua giao tiếp UART_18

Kết nối máy tính với Router qua cổng Ethernet, đặt IP cùng lớp 192.168.1.0/24 với thiết bị. Thử truy cập thiết bị qua địa chỉ 192.168.1.1, sử dụng mật khẩu mới 123456, Telnet thành công.

Truy cập thiết bị Router qua giao tiếp UART_19

Web UI Management

Truy c%E1%BA%ADp thi%E1%BA%BFt b%E1%BB%8B Router qua giao ti%E1%BA%BFp UART 20

Truy cập thiết bị Router qua giao tiếp UART_21

Như vậy là ta đã Reset được mật khẩu thành công bằng cách sử dụng giao tiếp UART. Thử Reboot lại thiết bị Router và quan sát Output trên công cụ Serial Monitor.

Truy cập thiết bị Router qua giao tiếp UART_22

Như ta thấy, quá trình khởi động thiết bị gửi Output liên tục qua cổng TX và hiển thị lên Serial Monitor, mô tả các giai đoạn khởi động.

Tác giả: Hoang Doan – Pentester, VietSunshine Pentest Team.

AEH

Khóa học Hacker Mũ Trắng – AEH