DJI_Tello_Control_System Cyber Attack Case Study [ Drone Firmware Attack and Detection ]

English 简体中文 繁体中文 Tiếng Việt
Summary

This case study demonstrates a practical cyber attack on an OT/IoT device, specifically an enhanced DJI Tello drone system designed for terrain matching. Attackers injected malicious firmware into the drone's contour map generation unit (CMGU) through a simulated supply chain compromise, causing it to produce noisy distance data that disrupted autonomous landing and led to a simulated crash. To counter this, the project implemented a Physics-based Attestation (PATT) algorithm, dynamically calculating and comparing firmware checksums to detect the unauthorized modification in real-time. This setup effectively illustrates both the vulnerability of critical control systems to firmware attacks and the efficacy of robust attestation mechanisms in preventing operational disruptions. The educational workshop emphasizes securing IoT supply chains and implementing proactive defense strategies.

Mục đích thiết kế dự án: Mục tiêu của nghiên cứu điển hình về tấn công mạng này là phát triển một hội thảo sử dụng hệ thống máy bay không người lái đối sánh địa hình mà chúng tôi đã phát triển và thuật toán chứng thực firmware động được giới thiệu trong bài báo PAtt: Chứng thực dựa trên vật lý của hệ thống điều khiển để minh họa một trình diễn thực tế về tấn công firmware thiết bị OT/IoT và các cơ chế phát hiện tấn công tương ứng. Máy bay không người lái đối sánh địa hình được xây dựng bởi một Arduino, bốn cảm biến khoảng cách và một máy bay không người lái DJI Tello không thể lập trình. Kịch bản tấn công liên quan đến việc một kẻ tấn công đội đỏ chèn mã độc vào firmware đơn vị tạo đường viền địa hình của máy bay không người lái, làm gián đoạn quá trình hạ cánh tự động của máy bay không người lái và dẫn đến một vụ tai nạn máy bay không người lái mô phỏng. Đồng thời, nghiên cứu điển hình cũng trình bày cách những người phòng thủ đội xanh sử dụng chức năng chứng thực firmware PATT để xác định cuộc tấn công firmware trong thời gian thực, ngăn chặn tai nạn và làm nổi bật tầm quan trọng của các cơ chế phòng thủ mạnh mẽ trong việc bảo vệ công nghệ vận hành và các thiết bị internet of things.

Vectơ tấn công: Tấn công Firmware, Cập nhật Firmware độc hại (OT), Tấn công chuỗi cung ứng IoT

Quan trọng: Trường hợp tấn công được trình diễn được sử dụng cho giáo dục và đào tạo cho các khóa học an ninh mạng IT-OT ICS ở các cấp độ khác nhau, vui lòng không áp dụng nó trên bất kỳ hệ thống thực tế nào.

# Author:      Yuancheng Liu
# Created:     2022/12/20
# version:     v0.2.1
# Copyright:   Copyright (c) 2022 LiuYuancheng
# License:     MIT License 

Giới thiệu

Nghiên cứu điển hình này nhằm mục đích phát triển một hệ thống máy bay không người lái thông minh có khả năng mô phỏng trường hợp sử dụng lái tự động máy bay không người lái Industry 4.0 (I4.0) cụ thể, bao gồm tự động theo dõi các tuyến đường, cảm biến môi trường (Đối sánh địa hình), chuyển các vật phẩm và đưa ra quyết định cho các hành động tiếp theo. Mục tiêu là chứng minh tác động tiềm tàng của một cuộc tấn công firmware Công nghệ vận hành (OT) đối với một hệ thống như vậy. Dự án được cấu trúc thành ba phần chính:

  • Nền tảng Demo tấn công: Sử dụng Hệ thống máy bay không người lái đối sánh địa hình DJI Tello làm nền tảng cơ bản để giới thiệu các chức năng lái tự động, các lỗ hổng tiềm ẩn và kịch bản tấn công.

  • Trình diễn tấn công Firmware: Tập trung vào trình diễn một cuộc tấn công cập nhật firmware độc hại nhắm vào Đơn vị tạo bản đồ đường viền mặt đất của máy bay không người lái. Mô phỏng này sẽ làm nổi bật hậu quả của một xâm nhập độc hại ảnh hưởng đến khả năng thực hiện các tác vụ một cách hiệu quả của hệ thống.

  • Phát hiện và phòng thủ tấn công: Triển khai Chứng thực Firmware dựa trên vật lý (PATT) như một phương tiện minh họa cách một cơ chế phòng thủ mạnh mẽ có thể phát hiện và giảm thiểu tác động của một cuộc tấn công firmware. Phần này nhấn mạnh tầm quan trọng của các biện pháp an ninh chủ động trong việc bảo vệ các hệ thống máy bay không người lái trong bối cảnh Industry 4.0.

 

Điều khiển máy bay không người lái đối sánh địa hình DJI Tello

Trong dự án này, mục tiêu của chúng tôi là nâng cao khả năng của máy bay không người lái mini DJI Tello (vốn dĩ không thể lập trình được), để mô phỏng các hành động thường được thực hiện bởi máy bay không người lái công nghiệp, chẳng hạn như theo dõi các tuyến đường được xác định trước và vận chuyển các vật phẩm trong một nhà máy. Máy bay không người lái DJI Tello, là một mô hình cơ bản không thể lập trình được, đòi hỏi các tính năng bổ sung để mô phỏng các tác vụ phức tạp hơn. Để đạt được điều này, chúng tôi đã tích hợp bốn cảm biến siêu âm bổ sung vào máy bay không người lái, nâng cao khả năng "phát hiện" một môi trường phức tạp hơn. Điều khiển lái tự động được thực hiện bởi một chương trình điều khiển máy bay không người lái chính chạy trên máy tính được kết nối.

Cảm biến dưới cùng của DJI Tello, cùng với bốn cảm biến khoảng cách được thêm vào, cộng tác để tạo ra một bản đồ đường viền mặt đất "5 điểm" toàn diện về môi trường xung quanh máy bay không người lái. Bộ điều khiển máy bay không người lái chính, được đặt trên máy tính điều khiển, điều phối các chuyển động của máy bay không người lái để mô phỏng các hành động lái tự động và theo dõi các tuyến đường được xác định trước dựa trên dữ liệu bản đồ đường viền thu được.

Cảm biến dưới cùng của DJI Tello, cùng với bốn cảm biến khoảng cách được thêm vào, cộng tác để tạo ra một bản đồ đường viền mặt đất "5 điểm" toàn diện về môi trường xung quanh máy bay không người lái. Bộ điều khiển máy bay không người lái chính, được đặt trên máy tính điều khiển, điều phối các chuyển động của máy bay không người lái để mô phỏng các hành động lái tự động và theo dõi các tuyến đường được xác định trước dựa trên dữ liệu bản đồ đường viền thu được. Ví dụ: nếu mục tiêu là làm cho máy bay không người lái bay thẳng cho đến khi nó phát hiện một vật thể giống như một cái bàn bên dưới nó, và sau đó tiến hành hạ cánh trên bàn đó (mô phỏng việc chuyển các vật phẩm từ bàn này sang bàn khác), máy bay không người lái liên tục truyền bản đồ đường viền đến chương trình điều khiển. Chương trình điều khiển máy bay không người lái phân tích ma trận đường viền nhận được và nếu nó khớp với các tính năng được xác định trước của một cái bàn, nó sẽ phát lệnh hạ cánh cho máy bay không người lái. Quá trình đối sánh địa hình điển hình được minh họa dưới đây:

Nhận xét: Trong phần thiết kế chương trình của tài liệu này, chúng tôi sẽ cung cấp một cái nhìn tổng quan chi tiết về chương trình điều khiển máy bay không người lái DJI Tello. Thảo luận toàn diện này sẽ bao gồm các khía cạnh thiết yếu, bao gồm việc sử dụng phức tạp điều khiển chuyển động cơ bản của máy bay không người lái, chức năng chỉnh sửa đường đua, quá trình đối sánh đường viền đơn giản trên mặt đất và chức năng kiểm tra an toàn chuyển động của máy bay không người lái. Thông tin này nhằm mục đích trao quyền cho người dùng những hiểu biết và công cụ cần thiết để lập kế hoạch và thực hiện các tuyến đường phức tạp cho máy bay không người lái, đảm bảo hoạt động liền mạch và an toàn.

Trình diễn tấn công Firmware

Trong kịch bản tấn công cập nhật firmware độc hại này, mục tiêu của kẻ tấn công đội đỏ là chương trình firmware đang chạy trên CMGU (đơn vị tạo bản đồ đường viền) của máy bay không người lái. CMGU rất quan trọng để theo dõi môi trường bay và đối sánh địa hình, nó bao gồm một ESP8266 Arduino, một pin và bốn Cảm biến siêu âm HC-SR04. Trong quá trình demo tấn công, kẻ tấn công đội đỏ đã khai thác một lỗ hổng trong chuỗi cung ứng IoT, gửi một email cập nhật firmware lừa đảo cho một kỹ sư bảo trì máy bay không người lái cẩu thả, dẫn đến việc cài đặt firmware độc hại trong đơn vị tạo bản đồ đường viền. Cuộc tấn công nhấn mạnh tầm quan trọng quan trọng của việc bảo vệ chuỗi cung ứng IoT để ngăn chặn các thay đổi firmware trái phép và các gián đoạn hoạt động tiềm tàng. Đường dẫn tấn công được hiển thị bên dưới:

Firmware giả mạo hoạt động không phô trương trong quá trình điều khiển máy bay không người lái thủ công hoặc khi theo dõi các tuyến đường được xác định trước. Tuy nhiên, nó kích hoạt các chức năng độc hại khi máy bay không người lái khởi tạo chế độ lái tự động để đối sánh đường viền mặt đất. Cụ thể, firmware giới thiệu dữ liệu khoảng cách "nhiễu" ngẫu nhiên, cố ý làm sai lệch độ chính xác của thông tin đường viền mặt đất. Thông tin sai lệch này đánh lừa bộ điều khiển máy bay không người lái, dẫn đến việc ra quyết định không chính xác và do đó, các tai nạn máy bay không người lái như tai nạn.

Video demo chi tiết: https://youtu.be/rRu1qrZohJY?si=g5fkKZf4Z8Osre6I

 

Chứng thực Firmware Arduino

Trong phân đoạn này, chúng tôi sẽ minh họa cách một nhà điều hành máy bay không người lái có thể sử dụng chứng thực firmware động, thời gian thực không chỉ để phát hiện cuộc tấn công mà còn ngăn chặn các tai nạn tiềm ẩn liên quan đến máy bay không người lái. Để đạt được điều này, chúng tôi áp dụng một phần của thuật toán chứng thực firmware PLC được nêu trong bài báo "PATT" (Chứng thực dựa trên vật lý của hệ thống điều khiển) để xác minh xem cuộc tấn công firmware đã xảy ra hay chưa. Chúng tôi sẽ tuân theo phần "Lưu trữ Nonce và Tính toán Hash" được giới thiệu trong bài báo để tính toán động hàm băm Hamming của firmware với k=4 như hình dưới đây:

Điều cần thiết là bày tỏ lòng biết ơn của chúng tôi đối với các tác giả bài báo Chứng thực dựa trên vật lý của hệ thống điều khiển, Tiến sĩ Hamid Reza Ghaeini và Giáo sư Jianying Zhou từ SUTD vì đã giới thiệu thuật toán chứng thực firmware hiệu quả và mạnh mẽ.

Liên kết bài báo Chứng thực dựa trên vật lý của hệ thống điều khiển: https://www.usenix.org/system/files/raid2019-ghaeini.pdf

 

Các chiến thuật, kỹ thuật và quy trình (TTP) chính của cuộc tấn công

Dựa trên lộ trình chi tiết tấn công được giới thiệu trong phần demo tấn công, sẽ có hai loại TTP chính được bao gồm trong kịch bản tấn công firmware:

Phát triển Firmware độc hại
  • Chiến thuật: Phát triển firmware tùy chỉnh với chức năng độc hại.

  • Kỹ thuật: Sửa đổi firmware hiện có hoặc tạo firmware mới bao gồm các cửa hậu, khai thác hoặc mã độc hại khác.

  • Quy trình: Kẻ tấn công đội đỏ đã sửa đổi firmware của đơn vị đối sánh địa hình của máy bay không người lái bình thường bằng cách chèn mã độc hại vào firmware mà không bị phát hiện, đảm bảo nó vẫn ẩn và không kích hoạt các cơ chế bảo mật.

Thỏa hiệp chuỗi cung ứng
  • Chiến thuật: Thỏa hiệp firmware của máy bay không người lái trong quá trình sản xuất hoặc phân phối.

  • Kỹ thuật: Xâm nhập vào chuỗi cung ứng để chèn firmware độc hại trước khi máy bay không người lái đến tay người dùng cuối.

  • Quy trình: Kẻ tấn công đội đỏ xây dựng một trang web máy chủ cập nhật phần mềm giả mạo và gửi liên kết đến kỹ sư bảo trì máy bay không người lái thông qua một email cập nhật firmware máy bay không người lái lừa đảo để giới thiệu và chèn firmware bị xâm phạm vào chuỗi cung ứng. Trang web cũng sẽ cung cấp giá trị MD5 của firmware độc hại để kỹ sư bảo trì xác minh gói cập nhật firmware trái phép.

 


Kiến thức nền tảng

Trong phần này, chúng tôi mong muốn cung cấp kiến thức cơ bản, chung về từng hệ thống tương ứng và làm sáng tỏ các Chiến thuật, Kỹ thuật và Quy trình (TTP) liên quan đến các vectơ tấn công. Thông tin nền tảng này sẽ đóng vai trò là một cuốn sách vỡ lòng để hiểu các chi tiết phức tạp của các hệ thống liên quan và các phương pháp được sử dụng trong các kịch bản tấn công.

Điều khiển máy bay không người lái DJI Tello và đối sánh địa hình

Trước khi đi sâu vào các khía cạnh kỹ thuật của cuộc tấn công, điều cần thiết là cung cấp một cái nhìn tổng quan về nền tảng được sử dụng trong trường hợp của chúng tôi — hệ thống đối sánh địa hình máy bay không người lái DJI Tello.

Mục tiêu của chúng tôi là biến một máy bay không người lái thông thường, không thể lập trình được thành một thiết bị thông minh. Để đạt được điều này, chúng tôi đã cài đặt một cách chiến lược bốn Cảm biến siêu âm HC-SR04 bên dưới Máy bay không người lái DJI Tello, như minh họa bên dưới. Kết nối các cảm biến này với các chân GPIO của ESP8266 Arduino (GPIO5-D1, GPIO4-D2, GPIO0-D3GPIO2-D4) cho phép chúng tôi giao tiếp với các chân dương (+) dữ liệu của cảm biến. Mã tạo bản đồ đường viền, được thực thi trên Arduino, đọc dữ liệu khoảng cách và thực hiện tính trung bình sau mỗi 0,5 giây. Quá trình này đảm bảo việc tạo ra một bản đồ đường viền 4 điểm ổn định và chính xác về khu vực đáy của máy bay không người lái. Pin và Arduino được gắn trên đỉnh của máy bay không người lái và 4 cảm biến được lắp đặt ở đáy của máy bay không người lái, thiết kế phần cứng và kết nối dây được hiển thị bên dưới:

Chúng tôi cũng đã phát triển một chương trình điều khiển UI với tất cả các chức năng điều khiển chuyến bay trojan như chuyển động dọc/ngang, điều chỉnh thái độ bay (hàng độ cao góc nghiêng) và theo dõi tuyến đường. ESP8266 sẽ truyền ma trận bản đồ đường viền khu vực đáy máy bay không người lái 4 điểm trở lại chương trình điều khiển và dữ liệu này được tích hợp liền mạch với các số đọc từ cảm biến chiều cao đáy của máy bay không người lái để nâng cao độ chính xác và tính linh hoạt của khả năng đối sánh địa hình của máy bay không người lái. UI chương trình điều khiển và logic đối sánh địa hình được hiển thị bên dưới:

Mô-đun đối sánh địa hình trong bộ điều khiển máy bay không người lái xem xét kỹ lưỡng bản đồ đường viền khu vực đáy máy bay không người lái được tạo ra so với ma trận bản đồ đường viền được thiết lập trước của nó. Nếu sự khác biệt nằm dưới một ngưỡng được xác định trước, chương trình điều khiển sẽ nhận ra một "Đối sánh địa hình" thành công. Sau thời gian đối sánh nhất quán là 2 giây, chương trình điều khiển sẽ bắt đầu thực hiện dòng thời gian hành động chuyến bay hoặc sổ tay hướng dẫn tuyến đường được đặt trước cho máy bay không người lái. Điều này có thể bao gồm các hướng dẫn cụ thể, chẳng hạn như hướng dẫn máy bay không người lái thực hiện thao tác hạ cánh trên bề mặt đã xác định.

 

Tấn công Firmware OT/IoT

Một cuộc tấn công firmware là bất kỳ mã độc hại nào xâm nhập vào thiết bị của bạn bằng cách sử dụng một cửa hậu trong phần mềm của bộ xử lý. Cửa hậu là các đường dẫn trong mã, cho phép một số cá nhân nhất định bỏ qua bảo mật và xâm nhập vào hệ thống. Cửa hậu thường không bị phát hiện do độ phức tạp cao của nó, nhưng có thể dẫn đến hậu quả nghiêm trọng nếu bị tin tặc khai thác.

Một ví dụ phổ biến về tấn công firmware là một bản cập nhật trái phép trên máy tính hoặc điện thoại của bạn dẫn đến phần mềm độc hại hoặc một số hình thức hoạt động tội phạm mạng khác. Điều này là do nhiều bản cập nhật bao gồm các cửa hậu với các tính năng hoặc chức năng không được ghi lại có thể được sử dụng cho các hành động bất lợi, chẳng hạn như chặn dữ liệu mà không cần thông báo và tắt các chức năng cốt lõi; tất cả trong khi vẫn ngụy trang như một quá trình cập nhật vô tội.

Liên kết tham khảo: https://netacea.com/glossary/firmware-attack/

Trong quá trình trình diễn tấn công, trọng tâm của kẻ tấn công đội đỏ là vào firmware của đơn vị tạo đường viền mặt đất, như minh họa trong phần trước. Cuộc tấn công liên quan đến việc chèn mã độc hại vào phần firmware chịu trách nhiệm đọc dữ liệu từ các cảm biến khoảng cách, giới thiệu một độ lệch ngẫu nhiên để làm sai lệch dữ liệu thực và làm gián đoạn quá trình tạo đường viền mặt đất. Trước cuộc tấn công, máy bay không người lái tuân thủ một kiểu bay được xác định trước, bay thẳng cho đến khi nó xác định một bảng khác khớp với đường viền mặt đất đã lưu trước đó của nó — được hiểu là một vị trí hạ cánh an toàn — nơi nó tiến hành hạ cánh. Tuy nhiên, sau cuộc tấn công firmware, kết quả tạo đường viền mặt đất bị thao túng khiến máy bay không người lái nhận thấy một khu vực không an toàn là một đường viền phù hợp. (Như được hiển thị trong video demo)

 

PAtt: Chứng thực dựa trên vật lý của hệ thống điều khiển

PAtt được thiết kế để thực hiện chứng thực firmware từ xa của mã logic đang chạy trên PLC mà không cần neo tin cậy truyền thống (chẳng hạn như TPM hoặc PUF). Đối với PAtt: Chứng thực dựa trên vật lý của hệ thống điều khiển, vui lòng tham khảo Bài báo của Tiến sĩ Hamid Reza Ghaeini và Giáo sư Jianying Zhou: https://www.usenix.org/system/files/raid2019-ghaeini.pdf

Trong dự án của chúng tôi, chúng tôi đã tuân theo ý tưởng về "Lưu trữ Nonce và Tính toán Hash" được giới thiệu trong bài báo để tính toán động hàm băm Hamming của firmware với k=4 để xác minh firmware đang chạy trên ESP8266 Arduino.

 


Thiết kế hệ thống

Trong phần này, chúng tôi sẽ phác thảo thiết kế của hệ thống, bao gồm bốn thành phần chính:

  • Thiết kế UI chính của bộ điều khiển máy bay không người lái

  • Thiết kế giao thức giao tiếp

  • Thiết kế mã độc hại và tấn công Firmware

  • Thiết kế chứng thực Firmware PATT

 

Thiết kế UI bộ điều khiển máy bay không người lái

Bộ điều khiển máy bay không người lái bao gồm các bảng chức năng riêng biệt được thiết kế để trao quyền cho nhà điều hành máy bay không người lái khả năng kiểm soát toàn diện chuyến bay của máy bay không người lái. Nó tạo điều kiện cho việc thiết lập các tuyến đường bay, tải các tệp cấu hình đối sánh địa hình và theo dõi dữ liệu đơn vị tạo đường viền. Luồng chính của bộ điều khiển máy bay không người lái khởi tạo ba luồng con song song, mỗi luồng dành riêng cho các tác vụ quan trọng — giao tiếp với Arduino để truy xuất dữ liệu và chứng thực firmware, đọc dữ liệu trạng thái Tello-Drone và lấy luồng video UDP của Tello. Đồng thời, luồng chính quản lý điều khiển chuyến bay Tello. Giao diện người dùng của bộ điều khiển máy bay không người lái có sáu bảng chính, được trình bày chi tiết bên dưới:

UI điều khiển máy bay không người lái chứa 6 bảng chức năng khác nhau:

  • Bảng trạng thái máy bay không người lái: Được định vị ở trên cùng, bảng này cho phép nhà điều hành máy bay không người lái chọn máy bay không người lái, kiểm tra thông tin quan trọng như trạng thái kết nối máy bay không người lái, mức pin, trạng thái kết nối đơn vị tạo đường viền mặt đất, trạng thái chứng thực firmware và cung cấp chế độ xem trực tiếp camera trước của máy bay không người lái.

  • Bảng điều khiển chuyến bay máy bay không người lái: Được thiết kế riêng cho điều khiển chuyến bay thủ công, bảng này trao quyền cho phi công máy bay không người lái quản lý các chuyển động dọc và ngang của máy bay không người lái, điều chỉnh độ nghiêng, độ cao và góc phương vị, thực hiện các thao tác cất cánh và hạ cánh, và bật và tắt camera.

  • Bảng điều khiển lái tự động máy bay không người lái: Dành riêng cho các hoạt động bay tự động, bảng này cho phép nhà điều hành máy bay không người lái hướng dẫn máy bay không người lái ở chế độ tự động theo dõi dọc theo các tuyến đường đặt trước, chỉnh sửa hoặc tải các tệp cấu hình đường đua, tải các tệp cấu hình đối sánh địa hình và trực quan hóa các điểm tham chiếu và chi tiết hành động tự động.

  • Bảng thông tin bộ tạo đường viền mặt đất: Bảng này hiển thị dữ liệu phản hồi toàn diện từ tất cả các cảm biến máy bay không người lái và đơn vị bộ tạo đường viền mặt đất, cung cấp thông tin cần thiết để theo dõi và phân tích.

  • Bảng cấu hình tham số PATT: Được thiết kế để định cấu hình các tham số tính toán Hash PATT firmware, bảng này cho phép nhà điều hành máy bay không người lái bắt đầu một vòng tiến trình chứng thực.

  • Bảng hiển thị kết quả PATT: Bảng này cung cấp một biểu diễn trực quan về tiến trình chứng thực, có thanh tiến trình. Nó cũng trình bày kết quả tính toán Hash PATT cục bộ và kết quả Hash PATT firmware phía máy bay không người lái sau khi hoàn thành quá trình chứng thực.

 

Thiết kế giao thức truyền thông

Máy tính điều khiển máy bay không người lái thiết lập kết nối với máy bay không người lái thông qua hai liên kết WIFI riêng biệt:

  • Liên kết truyền thông máy bay không người lái: Máy bay không người lái tự động đóng vai trò là Điểm truy cập WIFI (AP), cho phép kết nối trực tiếp với bộ điều khiển qua WIFI để điều khiển chuyến bay của máy bay không người lái một cách liền mạch.

  • Liên kết bộ tạo đường viền mặt đất: Được tạo điều kiện bởi ESP8266 Arduino, được trang bị mô-đun WIFI (máy khách), liên kết này kết nối với WIFI AP. Arduino đăng nhập vào bộ định tuyến WIFI, đến lượt nó, được kết nối với máy tính điều khiển thông qua cáp Ethernet. Thiết lập này thiết lập một liên kết đáng tin cậy để trao đổi dữ liệu giữa bộ tạo đường viền mặt đất và máy tính điều khiển.

Liên kết truyền thông được hiển thị bên dưới:

Như trong sơ đồ trên, có 4 kênh không dây giữa máy tính điều khiển máy bay không người lái và máy bay không người lái. Trung tâm điều khiển (Máy tính) sẽ giao tiếp với máy bay không người lái bằng UDP và tìm nạp dữ liệu phản hồi của bộ tạo đường viền mặt đất bằng TCP. Chi tiết các kênh được hiển thị bên dưới:

Tên kênh Luồng dữ liệu Mục tiêu Giao thức Cổng
Kênh dữ liệu bộ tạo đường viền mặt đất Tìm nạp dữ liệu ma trận đường viền mặt đất từ cảm biến Arduino_IP (192.168.1.101) TCP 4000
Kênh điều khiển chuyển động máy bay không người lái Gửi Lệnh điều khiển chuyến bay của máy bay không người lái & Nhận Phản hồi Tello_Drone(192.168.10.1) UDP 8889
Kênh dữ liệu cảm biến máy bay không người lái Tìm nạp cảm biến chiều cao đáy tích hợp, cảm biến chuyến bay, pin, dữ liệu con quay hồi chuyển của máy bay không người lái Tello_Drone(192.168.10.1) UDP 8890
Kênh video máy bay không người lái Video camera trước của máy bay không người lái Tello_Drone(192.168.10.1) Video UDP H264 11111

Giao tiếp chứng thực phần sụn của bộ tạo đường viền mặt đất dùng chung kênh với kênh dữ liệu bộ tạo đường viền mặt đất. Do đó, khi quá trình chứng thực bắt đầu, chức năng tạo đường viền mặt đất tạm thời tạm dừng truyền dữ liệu để cho phép sử dụng kênh để truyền dữ liệu PATT. Sự đồng bộ hóa này đảm bảo trao đổi thông tin hiệu quả và phối hợp trong giai đoạn chứng thực mà không bị nhiễu từ việc truyền dữ liệu đang diễn ra.

 

Chương trình sẽ kết nối với Arduino bằng TCP và giao tiếp với máy bay không người lái bằng UDP
Điều khiển Arduino: Arduino_IP: 192.168.1.101, TCP_PORT: 4000 <<- ->> PC_IP: 192.168.1.100 TCP_PORT: 4000
Điều khiển máy bay không người lái (Gửi Lệnh & Nhận Phản hồi): Tello_IP: 192.168.10.1 UDP_PORT:8889 <<- ->> PC/Mac/Mobile_IP: 192.168.10.xx UDP_PORT:8889
Điều khiển máy bay không người lái (Nhận Trạng thái Tello): Tello_IP: 192.168.10.1 UDP_PORT:8890 ->> PC/Mac/Mobile_ UDP_Server: 0.0.0.0, UDP PORT:8890
Điều khiển máy bay không người lái (Nhận Luồng Video Tello) : Tello_IP: 192.168.10.1, UDP_PORT:11111->> PC/Mac/Mobile_UDP_Server: 0.0.0.0, UDP_PORT:11111

 

Thiết kế mã độc và tấn công phần sụn

Kẻ tấn công đội đỏ tuân theo các bước được nêu dưới đây để thực hiện cuộc tấn công phần sụn:

Kẻ tấn công bắt đầu quy trình bằng cách tải xuống tệp phần sụn tiêu chuẩn, esp_client.ino.generic.bin từ một máy chủ phần sụn được ủy quyền.

Sử dụng một công cụ kỹ thuật đảo ngược, kẻ tấn công dịch ngược tệp nhị phân để trích xuất một phần mã nguồn C++ của phần sụn.

Tiến hành phân tích kỹ lưỡng mã, kẻ tấn công xác định phương pháp được sử dụng để tính khoảng cách—sử dụng cảm biến để tạo ra một xung âm thanh, đo khoảng thời gian giữa việc gửi xung và nhận tiếng vọng, sau đó nhân thời gian với tốc độ âm thanh trong khi chia cho 2. Với sự hiểu biết toàn diện về logic cơ bản, kẻ tấn công đội đỏ đưa mã độc vào phần sụn, như được mô tả bên dưới:

Trong mã độc được giới thiệu, kẻ tấn công chèn một cách chiến lược một độ trễ ngẫu nhiên (từ 0 đến 300 micro giây) cả trước và sau xung, gây ra sự không nhất quán cho thời gian vọng lại. Ngoài ra, một giá trị ngẫu nhiên trong phạm vi từ -3 đến 8 được thêm vào kết quả khoảng cách, truyền một độ lệch biến đổi vào phép đo cuối cùng, kéo dài từ -30cm đến 80cm.

Sau đó, sau khi kết hợp các thay đổi độc hại, kẻ tấn công biên dịch phần sụn lừa đảo và gửi nó cho kỹ sư bảo trì máy bay không người lái thông qua một email cập nhật phần sụn đơn vị tạo đường viền mặt đất được tạo dựng.

Khi nhận được phần sụn, kỹ sư bảo trì tiến hành tải nó lên đơn vị tạo đường viền mặt đất. Khi bật nguồn, thiết bị cung cấp một số dữ liệu phản hồi. Vì kỹ sư không bắt đầu cất cánh máy bay không người lái, dữ liệu khoảng cách có vẻ như bình thường, khiến anh ta cho rằng phần sụn đang hoạt động như mong đợi—không biết về những thay đổi độc hại cơ bản. Sự khác biệt trong bản đồ đường viền được gửi lại cho bộ điều khiển trở nên rõ ràng, như được minh họa bên dưới:

Trong các nhiệm vụ hoạt động, nơi máy bay không người lái được giao nhiệm vụ chuyển các vật phẩm từ bàn này sang bàn khác, một vấn đề nghiêm trọng nảy sinh. Khi máy bay không người lái cất cánh, đơn vị tạo đường viền mặt đất của nó liên tục tạo ra dữ liệu khoảng cách lừa đảo. Sự khác biệt trong dữ liệu này khiến máy bay không người lái đưa ra các quyết định hạ cánh không chính xác, dẫn đến việc hạ cánh ngoài ý muốn xuống đất hoặc, trong những trường hợp nghiêm trọng hơn, gây ra tai nạn.

 

Thiết kế chứng thực phần sụn

Để xác minh phần sụn, phía máy tính điều khiển cũng sẽ giữ kho lưu trữ phần sụn chứa bản sao của phần sụn phiên bản khác nhau hợp lệ và mô phỏng việc tải phần sụn vào bộ nhớ giống như Arduino. Các bước chứng thực chi tiết được nêu dưới đây:

  • Khi bắt đầu chứng thực phần sụn, bộ điều khiển tìm nạp phiên bản phần sụn và số sê-ri từ Arduino. Sử dụng thông tin này, chương trình điều khiển truy vấn cơ sở dữ liệu của nó để truy xuất phần sụn chính xác tương ứng, cấu hình bộ nhớ phần sụn và chức năng tạo danh sách các địa chỉ bộ nhớ ngẫu nhiên.

  • Sau khi thu thập dữ liệu cần thiết, bộ điều khiển tạo một bản đồ bộ nhớ "song sinh" phản ánh bộ nhớ đích và tải phần sụn vào bộ nhớ ảo này. Sau những chuẩn bị này, một seed ngẫu nhiên được tạo và truyền đến Arduino.

  • Cả bộ điều khiển và phần sụn đều sử dụng cùng một seed ngẫu nhiên và chức năng tạo danh sách các địa chỉ bộ nhớ ngẫu nhiên để tạo một danh sách giống hệt nhau. Khi danh sách hoàn tất, cả bộ điều khiển và Arduino đều tính khoảng cách Hamming (Ham(a, b)) cho mỗi địa chỉ trong danh sách. Giả sử một địa chỉ trong danh sách là, chẳng hạn, 0x7FFF5FBFFD98, "a" đại diện cho nội dung từ 0x7FFF5FBFFD98 đến 0x7FFF5FBFFD98+k. Sau khi tính toán tất cả các giá trị Ham(a, b), chúng được kết hợp để thu được giá trị băm cho một vòng lặp duy nhất. Dựa trên cài đặt tham số lặp, sau khi hoàn thành tất cả các lần lặp, tất cả các giá trị băm sẽ được kết hợp với nhau để tạo ra giá trị tổng kiểm PATT cuối cùng.

  • Arduino gửi tổng kiểm PATT đã tính toán trở lại bộ điều khiển thông qua kênh dữ liệu đường viền mặt đất. Nếu tổng kiểm nhận được khớp với tổng kiểm của bộ điều khiển, chứng thực phần sụn được coi là thành công. Ngược lại, bất kỳ sự khác biệt nào giữa hai tổng kiểm đều biểu thị một cuộc tấn công phần sụn được phát hiện.

Luồng giao tiếp chính được hiển thị bên dưới (Sơ đồ UML quy trình làm việc thực thi hệ thống) :


Thiết lập chương trình

Môi trường phát triển

Python 3.7.4, C++

Lib bổ sung cần thiết
  1. wxPython 4.0.6 (cần cài đặt để xây dựng UI) > liên kết

pip install -U wxPython 
  1. OpenCV: opencv-python 4.1.1.26 (cần cài đặt để giải mã luồng video H264) > liên kết

pip install opencv-python
Phần cứng cần thiết

Chúng tôi sử dụng DJI Tello Drone, ESP8266 Arduino và HC-SR04 Ultrasonic Sensor để xây dựng hệ thống:

  • DJI Tello Drone : DJI tello control SDK > liên kết

  • ESP8266 Arduino : ESP8266 Arduino dev doc > liên kết

  • HC-SR04 Ultrasonic Sensor : Tài liệu về tính năng sản phẩm > liên kết

 

Danh sách tệp chương trình
Tệp chương trình Môi trường thực thi Mô tả
esp_client.ino C(Arduino) Mô-đun này sẽ khởi động một máy khách TCP để gửi số đọc HC-SR04 Ultrasonic Sensor đến máy chủ và gửi tổng kiểm phần sụn để chứng thực.
esp_client_attack.ino C(Arduino) Phần sụn tấn công: Nó có chức năng tương tự như tệp , nhưng nếu chúng ta biên dịch chương trình này và tải phần sụn vào Arduino, phản hồi của cảm biến sẽ được đặt thành một số cố định.
telloGlobal.py python3.7.4 Mô-đun này được sử dụng làm tệp cấu hình cục bộ để đặt các hằng số và tham số toàn cục sẽ được sử dụng trong các mô-đun khác.
TelloPanel.py python 3.7 Mô-đun này được sử dụng để tạo bảng điều khiển và hiển thị cho hệ thống UAV (điều khiển máy bay không người lái và chứng thực phần sụn cảm biến).
TelloRun.py python 3.7 Mô-đun này được sử dụng để tạo bộ điều khiển cho DJI Tello Drone và kết nối với Arduino_ESP8266 để lấy dữ liệu cảm biến chiều cao.
telloSensor.py python 3.7 Mô-đun này được sử dụng để tạo một máy chủ giao tiếp TCP để nhận dữ liệu chiều cao Arduino_ESP8266 và thực hiện chứng thực PATT.
TrackPath.txt   Chỉnh sửa đường bay của máy bay không người lái.

 


Sử dụng/Thực thi chương trình

Chạy chương trình

Làm theo phần "Sơ đồ kết nối WIFI" để kết nối với cảm biến và máy bay không người lái với máy tính của bạn. Sau đó, thực thi chương trình telloRun.py trong thư mục src bằng lệnh bên dưới:

python telloRun.py

Sau khi chương trình khởi tạo xong, thông báo bên dưới sẽ hiển thị trong thiết bị đầu cuối của bạn:

"Chương trình khởi tạo xong."

Sau đó, UI chính sẽ hiển thị như bên dưới:

Tải tệp ma trận mặt đất

Để kích hoạt chức năng Đối sánh địa hình, người vận hành máy bay không người lái cần thay đổi Terrain Matching Flag của tệp cấu hình thành True sau đó khi khởi động UI, nút tải sẽ hiển thị. Sau đó, nhấn nút "loadCont" và hộp thoại chọn tệp đếm sẽ bật lên như hình bên dưới:

Sau đó, chọn tệp JSON đường viền bạn muốn máy bay không người lái khớp trong khi theo dõi tuyến đường, một ví dụ đường viền đơn giản được hiển thị bên dưới:

{
"sensorLF" : [1.33, 1.23] # Số đọc cảm biến phía trước bên trái của máy bay không người lái
"sensorLB" : [1.33, 1.24] # số đọc cảm biến phía sau bên trái của máy bay không người lái
"sensorMD" : [1.12, 1.20] # số đọc cảm biến chiều cao giữa của fone
"sensorRF" : [1.33, 1.23] # Số đọc cảm biến phía trước bên phải của máy bay không người lái
"sensorRB" : [1.33, 1.24] # số đọc cảm biến phía sau bên phải của máy bay không người lái
"threshold" : 0.15 # ngưỡng phù hợp
"matchingT" : 2 # thời gian để kích hoạt đối sánh (giây)
"tackID" : "trackLanding" # theo dõi để được thực hiện sau khi địa hình được đối sánh.
}

 

Điều khiển máy bay không người lái và chứng thực phần sụn PATT

Người vận hành máy bay không người lái có thể thực hiện chứng thực phần sụn trong khi máy bay không người lái đang bay, nhưng chúng tôi khuyên người vận hành máy bay không người lái nên thực hiện chứng thực trước khi máy bay không người lái cất cánh. Các bước chi tiết để thực hiện một chứng thực được hiển thị bên dưới:

  1. Nhấp vào nút "UAV Connect" bên dưới dòng tiêu đề và chọn WIFI AP của máy bay không người lái, nếu máy bay không người lái phản hồi chính xác, chỉ báo "trạng thái máy bay không người lái" trong UI sẽ chuyển sang màu xanh lục và chỉ báo sẽ hiển thị "UAV_Online".

  2. Cảm biến sẽ tự động kết nối với chương trình. Khi ESP8266 Arduino được kết nối với chương trình, chỉ báo cảm biến sẽ chuyển sang màu xanh lục và hiển thị "SEN_Online".

  3. Nhấn nút 'Camera' màu trắng bên dưới "Takeoff and Cam Ctrl" sẽ bật camera trước của máy bay không người lái.

  4. Số đọc pin mới nhất sẽ được hiển thị ở góc trên cùng bên trái của bảng xem camera trước và chiều cao của máy bay không người lái sẽ được hiển thị ở phía bên phải của chỉ báo ngang đường chân trời thấp nhất. Số đọc pin hiển thị trong thanh tiêu đề là số đọc trung bình trong 10 giây đã qua.

  5. Lập kế hoạch đường bay của máy bay không người lái:

    • Thêm một đường bay: Mở tệp ghi đường bay "TrackPath.txt" (trong thư mục src) và thêm đường bay theo định dạng bên dưới:

TrackName;hành động 1;hành động x;hành động x;hành động x;hành động x;hành động x;hạ cánh (ví dụ:Track1;cất cánh;lệnh;lên 30;ccw 30;lên 30;ccw 30;lên 30;hạ cánh .

 > Nếu bạn không đặt lệnh hạ cánh, chương trình sẽ tự động thêm lệnh hạ cánh. Đối với phần cài đặt hành động, vui lòng kiểm tra giao thức điều khiển máy bay không người lái chi tiết trong Tello SDK Documentation EN_1.3_1122.pdf trong thư mục doc )
  • Chọn đường bay trong menu thả xuống và nhấp vào nút "Active track", đường bay đã chọn sẽ được máy bay không người lái thực hiện. Hành động đang thực hiện sẽ được đánh dấu màu xanh lục.

  1. Điều khiển chứng thực phần sụn cảm biến:

    • Điền số lần chứng thực bạn muốn thực hiện và kích thước khối bộ nhớ, sau đó nhấn nút "startPatt". Phần sụn cục bộ và phần sụn cảm biến sẽ được hiển thị và so sánh. Kết quả chứng thực và tổng thời gian sử dụng cho quá trình chứng thực sẽ được hiển thị như bên dưới (Quá trình chứng thực sẽ mất khoảng 8 giây ~ 10 giây):

    • Mọi kết quả chứng thực sẽ được ghi lại trong "checkSumRecord.txt" (thư mục nguồn) theo định dạng:

      Như trong ví dụ trên, sau khi chạy chứng thực, bản ghi tổng kiểm PATT khác nhau như hình bên dưới:

      Cục bộ:1400A0C126221302030000340C21865C1014050020C0313FBEE0CD0C0B073110FF0C02C174033F4010101C910C38FF7EFFEE0D210D012921020CE00E020012F0

      Từ xa:1400A0C126221302030000340C21865C1014050020C0313FBEE0CD0C0B073110FF0C02C174033F4010101C910C38FF7EFFEE0D210D012921020CE00E020012F0

    • Điều đó có nghĩa là phần sụn đang chạy trên máy bay không người lái khác với phần sụn trong DB kho lưu trữ phần sụn điều khiển của chúng tôi (Chỉ báo chứng thực sẽ hiển thị màu đỏ với từ "Sen_att: không an toàn"), máy bay không người lái đang sử dụng phần sụn trái phép, cuộc tấn công phần sụn được phát hiện. Máy bay không người lái có thể dừng nhiệm vụ để tránh tai nạn máy bay không người lái.

  1. Nhấn nút '>>' bên dưới thanh tiêu đề, cửa sổ hiển thị thông tin trạng thái chi tiết của máy bay không người lái sẽ bật lên ở bên phải.


Vấn đề và giải pháp

Không có


Tham khảo

Chứng thực firmware PATT:

https://www.usenix.org/system/files/raid2019-ghaeini.pdf

Cảm ơn bạn đã đọc, nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào, vui lòng nhắn tin cho tôi. Rất cảm ơn nếu bạn có thể đưa ra một vài nhận xét và chia sẻ bất kỳ lời khuyên cải tiến nào để chúng tôi có thể làm cho công việc của mình tốt hơn ~

Nếu bạn cũng quan tâm đến các nghiên cứu điển hình về tấn công OT khác trên hệ thống đường sắt, vui lòng tham khảo các liên kết bên dưới:

  1. Nghiên cứu điển hình 1: Tấn công chèn lệnh/dữ liệu sai
  2. Nghiên cứu điển hình 2: Tấn công giả mạo ARP mạng OT
  3. Nghiên cứu điển hình 3: Tấn công DDoS trên kênh Modbus
  4. Nghiên cứu điển hình 4: Tấn công Man-in-the-Middle trên chuỗi điều khiển HMI-PLC

Chỉnh sửa cuối bởi LiuYuancheng([email protected]) vào 03/01/2024, , nếu bạn có bất kỳ vấn đề gì, vui lòng nhắn tin cho tôi.

 

  RELATED

No related programming articles found. Browse all programming tutorials and articles.

  COMMENTS

0

No comment for this article.