Mục tiêu:

Mục tiêu của mô-đun này là giúp sinh viên học cách đánh giá firmware của thiết bị IoT.

Các hoạt động sau sẽ được thực hiện trong phòng thí nghiệm:

  • Thu thập một bản sao firmware của thiết bị
  • Xác định loại firmware của thiết bị
  • Khám phá hệ thống file của thiết bị
  • Phân tích các loại hệ thống file
  • Chạy firmware với một trình giả lập

Kịch bản:

Mô-đun này được thiết kế để cung cấp bài thực hành và kiến thức cần thiết cho việc định vị và xác định các lỗ hổng trong firmware của IoT. Khả năng thu thập, trích xuất và mô phỏng firmware là rất quan trọng để thực hiện tấn công IoT.

Bài tập 1: Thu thập, Trích xuất, Phân tích và Mô phỏng Firmware IoT

Thời gian thực hành: 10 phút

  1. Bật máy Parrot mặc định. Nhập toor vào trường Mật khẩu và nhấn Enter để đăng nhập.
  2. Chúng ta có một gói firmware mẫu cho thiết bị Netgear IoT thường được sử dụng để thực hành tấn công IoT. Số model của thiết bị là WNAP 320, là một điểm truy cập không dây cho mạng. Một ví dụ về thiết bị được hiển thị trong hình sau:

(Hình ảnh thiết bị WNAP320)

  1. Chúng ta đã tải xuống firmware cho bạn. Nó nằm trong thư mục home và có tên là firmware.bin.

(Hình ảnh màn hình hiển thị file firmware.bin trong thư mục home)

  1. Bước đầu tiên khi xử lý file firmware là chạy lệnh trên terminal. Khởi động terminal và gõ sudo file firmware.bin và nhấn Enter. Nhập toor khi được yêu cầu nhập mật khẩu và nhấn Enter.

(Hình ảnh màn hình hiển thị lệnh sudo file firmware.bin và kết quả)

  1. Không có thông tin hữu ích nào ở đây, vì vậy chúng ta tiếp tục bằng cách gõ sudo hexdump -C firmware.bin | more và nhấn Enter.
  2. Bây giờ chúng ta có sqsh được xác định trong hex trace. Đây là chữ ký đã biết của hệ thống tệp Squashfs, vì vậy đây là một khởi đầu.

(Hình ảnh màn hình hiển thị kết quả của lệnh hexdump)

  1. Bước tiếp theo trong quy trình là thử trích xuất tệp hệ thống từ hình ảnh firmware. Công cụ của chúng ta là binwalk, vì vậy chúng ta sẽ sử dụng nó. Trong cửa sổ terminal, gõ man binwalk và nhấn Enter. Hãy dành vài phút để đọc về công cụ này. Sau khi bạn đã xong, hãy gõ q để thoát khỏi trang chính.

(Hình ảnh màn hình hiển thị lệnh man binwalk)

  1. Trong cửa sổ terminal, gõ sudo binwalk -e firmware.bin và nhấn Enter. Điều quan trọng là thông báo cho biết hình ảnh đã được trích xuất. Bạn cũng sẽ thấy rằng hệ thống file được xác nhận là Squashfs. Khi hoàn thành, bạn sẽ có một thư mục đại diện cho hệ thống file đã được trích xuất trong thư mục Home.

(Hình ảnh màn hình hiển thị lệnh sudo binwalk -e firmware.bin và kết quả)

  1. Trong cửa sổ terminal, gõ cd firmware.bin.extracted/squashfs-root/ và nhấn Enter. Khi bạn ở trong thư mục, gõ ls và nhấn Enter. Bạn sẽ thấy rằng hệ thống file đã được trích xuất trong thư mục squashfs-root. Như bạn có thể thấy, nó là một Linux rất nhỏ.

(Hình ảnh màn hình hiển thị lệnh cd và ls và kết quả)

  1. Từ đây, bạn có thể khám phá để xem nội dung. Một nơi tốt để bắt đầu là thư mục home vì nó thường chứa thông tin về các ứng dụng đã được cài đặt. Gõ cd home và nhấn Enter. Gõ ls và nhấn Enter để xem kết quả. Vì chúng ta có thư mục www, gõ cd www và nhấn Enter, sau đó gõ ls và nhấn Enter để xem nội dung của file.

(Hình ảnh màn hình hiển thị các lệnh cd, ls và kết quả)

  1. Chúng ta có rất nhiều mã để kiểm tra. Trong hầu hết các trường hợp, mã này không được viết một cách bảo mật.
  2. File chúng ta muốn xem là board_Data/Www/php. Mở nó trong trình soạn thảo bạn chọn.

Khi bạn xem xét mã, rõ ràng là không có xác thực đầu vào hoặc kiểm tra giới hạn. Điều này cho thấy rằng ứng dụng này có thể dễ bị tấn công. Chúng ta sẽ không đi sâu vào việc khai thác mã ở đây. Thay vào đó, chúng ta sẽ xem xét các thách thức của việc mount và boot firmware bằng trình giả lập.

(Hình ảnh màn hình hiển thị mã của file board_Data/Www/php)

  1. File cấu hình chúng ta muốn chỉnh sửa là firmadyne.config trong thư mục firmadyne. Gõ cd firmadyne và nhấn Enter và mở file config để trỏ đến vị trí của tệp và bỏ ghi chú dòng. Lưu và đóng trình soạn thảo văn bản.

(Hình ảnh màn hình hiển thị lệnh cd và đường dẫn đến file firmadyne.config)

(Hình ảnh màn hình hiển thị nội dung file firmadyne.config)

  1. Chúng ta sẽ làm việc với firmware nén firmware.bin. Điều này giống với firmware.bin mà bạn có trong thư mục firmadyne.
  2. Sử dụng trình trích xuất để khôi phục hệ thống file. Đảm bảo rằng các thiết lập sau được đặt: kernel (-k), no sources (-n) on Netgear brand (-b), storing the tarball in the images server at 192.168.0.1, with the parallel operation option (-p), and naming the image sql. Nhập sudo python3 sources/extractor.py -k -n -b netgear -sql 127.0.0.1 -p -nk “WNAP320 Firmware Version 2.6.3.215” images/ và nhấn Enter.

(Hình ảnh màn hình hiển thị lệnh extractor.py và kết quả)

  1. Nếu nó hoạt động chính xác, bạn sẽ có sql.tar.gz trong thư mục images. Nhập sudo bash scripts/getArch.sh images/sql.tar.gz. Nhập mật khẩu toor khi được yêu cầu.

(Hình ảnh màn hình hiển thị lệnh getArch.sh và kết quả)

  1. Lệnh này được sử dụng để xác định kiến trúc của firmware 1 và lưu kết quả vào bảng image của cơ sở dữ liệu.
  2. Bây giờ chúng ta muốn tải nội dung của hệ thống file firmware 1 vào cơ sở dữ liệu và điền vào bảng object và object_image. Nhập sudo python3 scripts/tar2db.py -i 1 images/sql.tar.gz.

(Hình ảnh màn hình hiển thị lệnh tar2db.py và kết quả)

  1. Tiếp theo, chúng ta cần tạo image đĩa QEMU cho firmware 1. Nhập sudo bash scripts/makeImage.sh 1. Nhập mật khẩu toor cho firmadyne khi được yêu cầu.

(Hình ảnh màn hình hiển thị lệnh makeImage.sh và kết quả)

  1. Bây giờ bạn đã sẵn sàng để thiết lập mạng để nó có sẵn trên mạng như bất kỳ nút nào khác. Nhập sudo bash scripts/inferNetwork.sh 1. Nhập mật khẩu toor khi được yêu cầu.

(Hình ảnh màn hình hiển thị lệnh inferNetwork.sh và kết quả)

  1. Bây giờ chúng ta đã sẵn sàng để mô phỏng firmware 1 với cấu hình mạng đã suy luận. Điều này sẽ sửa đổi cấu hình của hệ thống máy chủ bằng cách tạo một điểm truy cập (TAP) device và thêm một route. Nhập sudo bash scratch/run.sh.

(Hình ảnh màn hình hiển thị lệnh run.sh và kết quả)

  1. Điều này sẽ mất một thời gian và thực hiện một chuỗi các hành động như được hiển thị trong ảnh chụp màn hình. Thu nhỏ cửa sổ terminal.

(Hình ảnh màn hình hiển thị quá trình chạy của script run.sh)

  1. Hệ thống sẽ có sẵn tại địa chỉ 192.168.0.100 trên mạng. Mở trình duyệt và nhập http://192.168.0.100. Trang đăng nhập điểm truy cập Netgear WNAP320 sẽ xuất hiện như được hiển thị trong ảnh chụp màn hình. Đây là giao diện web từ firmware đang chạy được mô phỏng.

(Hình ảnh màn hình hiển thị giao diện web đăng nhập của thiết bị)

  1. Chúng ta có thể xem bất kỳ mã PHP nào mà chúng ta đã thấy khi khám phá hệ thống file trong trình duyệt. Nhập http://192.168.0.100/board_Data/Www/php. Điều này sẽ hiển thị một biểu mẫu khác như được hiển thị trong ảnh chụp màn hình sau.

(Hình ảnh màn hình hiển thị biểu mẫu từ file php)

  1. Vì chúng ta đã có lợi thế khi xem xét mã, chúng ta biết rằng không có xác thực đầu vào, điều này có nghĩa là có khả năng tấn công bằng cách chèn lệnh. Chúng ta sẽ không đi sâu vào chi tiết, nhưng bạn có thể tự thử các truy vấn bằng cách sử dụng Bursuite hoặc một số proxy khác. Sau khi đăng nhập, bạn có thể sử dụng bộ công cụ tấn công Metasploit được tích hợp sẵn để phân tích hệ thống bị tấn công.
  2. Bên trong firmadyne, chúng ta có thể tận dụng các script phân tích. Mở một terminal mới trong firmadyne. Nhập sudo bash analyses/snmpwalk.sh 192.168.0.100. Khi được yêu cầu nhập mật khẩu, hãy nhập toor và nhấn Enter.

(Hình ảnh màn hình hiển thị lệnh snmpwalk.sh và kết quả)

  1. Tiếp theo, chúng ta có thể nhập sudo python3 analyses/webAccess.py 1 192.168.0.100 log.txt.

(Hình ảnh màn hình hiển thị lệnh webAccess.py và kết quả)

  1. Cũng có một giao diện Metasploit sẽ tìm kiếm các lỗ hổng và khai thác tương ứng. Nhập sudo msfdir exploits.

(Hình ảnh màn hình hiển thị lệnh msfdir exploits)

  1. Thay đổi quyền trên tệp với sudo chmod +x analyses/runExploits.py.

(Hình ảnh màn hình hiển thị lệnh chmod)

  1. Nhập sudo python analyses/runExploits.py -t 192.168.0.100 -e exploits/exploit -e x. Một ví dụ về kết quả của lệnh được hiển thị trong ảnh chụp màn hình sau.

(Hình ảnh màn hình hiển thị lệnh runExploits.py và kết quả)

  1. Sau khi script hoàn thành, hãy mở file script.rc trong bất kỳ trình soạn thảo văn bản nào. File này có thể được tìm thấy trong thư mục home/pentester/firmadyne.

(Hình ảnh màn hình hiển thị nội dung file script.rc)

  1. Như bạn có thể thấy trong ảnh chụp màn hình ở trên, script chỉ là một danh sách các khai thác. Do đó, nó không phải là một công cụ mạnh mẽ và hiệu quả. Nó chỉ nên được sử dụng làm tài liệu tham khảo. Tương tự như các phát hiện khác, khả năng nghiên cứu của bạn sẽ quyết định sự thành công. Các mục tiêu của bài tập đã đạt được.

Bình luận về bài viết này

Thịnh hành