Khi các hệ thống máy bay không người lái tiên tiến hơn được đưa vào sử dụng và tích hợp vào nhiều lĩnh vực khác nhau, việc tính đến các lỗ hổng mà chúng có thể gây ra để đảm bảo tính bảo mật cho các ứng dụng của chúng trở nên quan trọng hơn bao giờ hết.
Kể từ khi tôi bắt đầu quan tâm đến an ninh mạng hàng không vũ trụ , một điều mà tôi luôn muốn tìm cách hack là UAV. Trong bài viết này, tôi phác thảo các bước tôi đã thực hiện để thiết kế ngược máy bay không người lái DJI bằng cách sử dụng các kỹ thuật giám sát gói với Wireshark và đi sâu vào chi tiết về phân tích gói và cách bạn có thể phát triển trình phân tách giao thức của riêng mình bằng ngôn ngữ lập trình Lua.
Mặc dù máy bay không người lái kỹ thuật đảo ngược không phải là một kỳ công dễ dàng, nhưng chúng vẫn dễ bị tấn công bởi một loạt các mối đe dọa mạng có thể dẫn đến hậu quả nghiêm trọng. Bằng cách phác thảo quy trình tôi đã thực hiện để thiết kế ngược theo cách của mình vào máy bay không người lái DJI để tiết lộ thông tin nhạy cảm được lưu trữ trong dữ liệu gói, tôi hy vọng nghiên cứu nêu bật các lỗ hổng hiện có để tìm giải pháp thay thế tốt hơn nhằm bảo vệ các hệ thống máy bay không người lái hiện có.
Máy bay không người lái (gọi tắt là UAV) là máy bay không chở bất kỳ phi công hay hành khách nào trên máy bay. Hầu hết thời gian thuật ngữ này được áp dụng cho máy bay không người lái, nhưng các loại phương tiện UAV khác tồn tại như Global Hawk của NASA , một UAV có độ bền cao, độ bền cao dành cho mục đích nghiên cứu. UAV được sử dụng cho nhiều ứng dụng khác nhau như nhiệm vụ tìm kiếm cứu nạn, thu thập dữ liệu, quân sự và thực thi pháp luật, chụp ảnh trên không, v.v. So với máy bay thông thường, UAV sở hữu hình thức nhỏ gọn, thể hiện sự nhanh nhẹn, chính xác và chính xác cao trong hoạt động của chúng. điều động và chứng minh tính hiệu quả về chi phí, khiến chúng được ưa chuộng rộng rãi cho các ứng dụng thương mại và tiêu dùng đa dạng như dịch vụ giao hàng và khảo sát trên không.
Vì bài viết này sẽ đi sâu vào điều tra máy bay không người lái, điều quan trọng là phải cung cấp tổng quan nhanh về các thành phần tạo nên DJI Phantom 4. Mặc dù đáng chú ý là các thành phần được chứa trong máy bay không người lái có thể khác nhau tùy thuộc vào thương hiệu hoặc phiên bản, nhưng hầu hết các UAV đều có chung một phần lớn đáng kể các thành phần.
Khung gầm: khung gầm của máy bay không người lái là khung vật lý chứa tất cả các thành phần lại với nhau. khung gầm thường được chế tạo bằng vật liệu nhẹ như nhựa hoặc sợi carbon để giảm hiệu suất bay tổng thể của máy bay không người lái bằng cách giảm lực cản và trọng lượng
Drone Motor: máy bay không người lái sử dụng động cơ để tạo ra lực nâng cần thiết cho chuyến bay. hầu hết các máy bay không người lái thường có cấu hình quadcopter bao gồm bốn động cơ: hai động cơ quay theo chiều kim đồng hồ và hai động cơ quay ngược chiều kim đồng hồ để cân bằng lực quay. Cấu hình này tồn tại vì Định luật thứ ba của Newton tuyên bố rằng đối với mọi hành động đều có phản ứng ngang nhau và ngược chiều, do đó, việc có cùng số lượng động cơ ngược chiều và theo chiều kim đồng hồ sẽ giúp máy bay không người lái phối hợp bay thông qua lực quay cân bằng
Bộ điều khiển chuyến bay không người lái: bộ điều khiển chuyến bay của máy bay không người lái hoạt động giống như bộ não của nó. bộ điều khiển chuyến bay lấy đầu vào từ các cảm biến trên máy bay không người lái, chẳng hạn như mô-đun GPS để đưa ra hướng dẫn cụ thể cho bộ điều khiển tốc độ điện tử (ESC) để điều khiển động cơ
Mô-đun GPS: mô-đun vệ tinh định vị toàn cầu (GPS) sử dụng hai hệ thống định vị toàn cầu khác nhau để xác định vị trí của máy bay không người lái. Sử dụng mô-đun GPS, máy bay không người lái có thể tính toán vị trí địa lý của nó dựa trên khoảng thời gian cần thiết để tín hiệu truyền đến từ các vệ tinh khác nhau
Bộ điều khiển tốc độ điện tử (ESC): ESC là trung gian giữa bảng phân phối điện của máy bay không người lái và động cơ. Họ sử dụng tín hiệu từ bộ điều khiển chuyến bay để kiểm soát lượng điện năng được phân bổ cho động cơ
Mô-đun cổng nguồn: cổng nguồn là mô-đun hiển thị đo lượng điện năng đến từ pin và phân phối nguồn điện đó cho ESC của máy bay không người lái và bộ điều khiển chuyến bay
Cảm biến tránh chướng ngại vật: một số máy bay không người lái bao gồm cảm biến tầm nhìn âm thanh nổi trên khung của chúng. Các cảm biến này tính toán khoảng cách giữa máy bay không người lái và chướng ngại vật phía trước cảm biến bằng cách tính toán độ sâu thông qua các pixel hình ảnh được chụp bởi mỗi cảm biến
Gimbal 3 trục: gimbal ổn định máy ảnh được gắn vào máy bay không người lái để ổn định cảnh quay. Khi các cảm biến nhận thấy chuyển động quanh bất kỳ trục nào, chúng sẽ báo hiệu cho gimbal để thực hiện các điều chỉnh thích hợp nhằm làm mượt cảnh quay của camera
Pin Drone: pin cung cấp năng lượng cho máy bay không người lái. Một số loại pin cũng bao gồm các tính năng như bảo vệ quá sạc, giao tiếp đầu ra nguồn, v.v.
Máy ảnh Drone: máy ảnh của máy bay không người lái được sử dụng để quay phim và chụp ảnh. Cảm biến hình ảnh trong máy ảnh chụp các tia sáng tới và xử lý chúng thành hình ảnh kỹ thuật số
Ăng-ten Drone: ăng-ten drone hoạt động như một hệ thống truyền dẫn để chuyển tiếp thông tin giữa bộ điều khiển và drone
Cảm biến tránh chướng ngại vật siêu âm hướng xuống: những cảm biến này được sử dụng để tính toán độ cao của máy bay không người lái so với mặt đất. Có thể tính chiều cao bằng cách gửi xung âm thanh tần số cao từ một cảm biến và đo khoảng thời gian cần thiết để cảm biến kia nhận được xung đó
Đèn LED chuyến bay: Đèn LED chuyến bay thường được sử dụng để chỉ hướng máy bay không người lái đang bay. Hai đèn đỏ nhấp nháy cho biết mặt trước của máy bay không người lái và đèn xanh lục nhấp nháy cho biết mặt sau
Cần điều khiển: cần điều khiển được sử dụng để điều khiển máy bay không người lái bằng cách dịch chuyển động vật lý của gậy thành thông tin mà bộ điều khiển có thể giao tiếp với máy bay không người lái dưới dạng hướng di chuyển
Bảng điều khiển từ xa chính: bảng điều khiển từ xa truy xuất phép đo từ xa hữu ích về máy bay không người lái như độ cao, vị trí và hình ảnh camera
Bảng máy ảnh chính: bảng máy ảnh xử lý dữ liệu từ cảm biến hình ảnh và động cơ gimbal để tổng hợp cảnh quay ổn định
Mặc dù UAV được sử dụng cho nhiều ứng dụng, giống như mọi thiết bị khác có hệ thống máy tính tích hợp, nhưng chúng dễ bị tấn công bởi một loạt các mối đe dọa an ninh mạng. Một số mối đe dọa an ninh mạng phổ biến nhất với UAV bao gồm:
Truy cập trái phép: UAV dễ bị tấn công trái phép bởi những kẻ xấu có thể chặn hoặc giả mạo tín hiệu không dây được sử dụng để điều khiển máy bay không người lái. Điều này cho phép tin tặc điều khiển máy bay không người lái hoặc đánh cắp thông tin từ chúng một cách thụ động.
Trộm cắp dữ liệu: UAV được trang bị nhiều loại cảm biến tích cực thu thập thông tin về môi trường của chúng, chẳng hạn như ảnh, video và kết quả đo từ xa. Dữ liệu này có thể dễ bị chặn bởi tin tặc, những người có thể sử dụng dữ liệu đó cho mục đích bất chính
Từ chối dịch vụ: một cuộc tấn công cụ thể hơn mà tin tặc có thể sử dụng để hack máy bay không người lái là Từ chối dịch vụ. Điều này xảy ra khi tin tặc khởi chạy DOS trên cùng một hệ thống liên lạc không dây của máy bay không người lái, làm gián đoạn khả năng nhận hoặc truyền dữ liệu của nó
Khi nhiều lỗ hổng bảo mật được phát hiện cùng với sự phổ biến ngày càng tăng của UAV, các nhà nghiên cứu bảo mật cần phải phân tích pháp lý các thiết bị cho mục đích xấu. Một trường con trong an ninh mạng được gọi là phân tích pháp y tập trung vào việc thu thập và phân tích dữ liệu từ một cuộc tấn công cho mục đích điều tra .
Quá trình này rất hữu ích trong các tình huống tội phạm thực tế khi thông tin kỹ thuật số của hệ thống máy tính bị thu giữ và cần được điều tra. Thông thường, phần lớn thông tin trên máy không liên quan đến tội phạm và phải được lọc ra để phá vỡ các kịch bản tội phạm.
Có một loạt các ứng dụng bất hợp pháp của máy bay không người lái như thả hàng lậu đến các khu vực trái phép, thả ma túy qua biên giới nước ngoài và giám sát không mong muốn. Sau nhiều tình huống trong số này, pháp y kỹ thuật số được sử dụng để xác định thông tin như quyền sở hữu thiết bị và bất kỳ dữ liệu nào liên quan đến tội phạm.
Một nghiên cứu được thực hiện trên các mẫu máy bay không người lái phổ biến tại các hiện trường vụ án khác nhau đã chứng minh rằng thông tin như tệp phương tiện ở định dạng ảnh hoặc video, kiểu chuyến bay, địa điểm và thông tin chủ sở hữu có lợi nhất cho sự thành công của các vụ án pháp y kỹ thuật số do các nhà điều tra thực thi pháp luật thực hiện. Mặc dù các nhà điều tra của nghiên cứu có thể lọc thông tin về tội phạm bằng kỹ thuật pháp y kỹ thuật số, nhưng nghiên cứu cho biết luật pháp tiểu bang và liên bang đã không xử lý đúng các quy định đằng sau công nghệ máy bay không người lái và do đó khiến nhiều bên liên quan dễ bị tổn thương. Nhìn chung, họ kết luận rằng việc thiếu các công cụ pháp y và cấu trúc máy bay không người lái phổ quát khiến cần phải phát triển thêm các phương pháp trích xuất dữ liệu.
Để góp phần khắc phục tình trạng thiếu công cụ điều tra UAV, tôi sẽ trình bày cách tạo tập lệnh phân tích gói cho Wireshark bằng ngôn ngữ lập trình Lua để tìm thông tin mạng hữu ích trong các tình huống điều tra kỹ thuật số. Công cụ này là ứng dụng trực tiếp của các kỹ năng pháp y kỹ thuật số để thu thập thông tin hữu ích về UAV có thể được sử dụng trong các tình huống điều tra để thu thập thêm dữ liệu liên quan đến tội phạm đã xảy ra.
Packet Sniffing là hành động chặn và kiểm tra các gói dữ liệu khi chúng được truyền qua một mạng cụ thể. Kỹ thuật này được các chuyên gia an ninh mạng sử dụng để theo dõi các lỗ hổng, chẩn đoán lỗi và hiệu suất cho mạng của họ hoặc khám phá các mối đe dọa.
Trên máy tính, thẻ giao diện mạng (còn được gọi là NIC) là một thành phần phần cứng bao gồm một bảng mạch nhúng cho phép máy tính giao tiếp với mạng và thực hiện dò tìm gói tin. Việc đánh hơi phức tạp hơn cho mục đích hack hoặc an ninh mạng thường yêu cầu đặt NIC ở chế độ hỗn tạp cho phép máy tính truy xuất lưu lượng mạng xung quanh. Sử dụng quy trình giải mã, những kẻ nghe lén có thể truy cập vào thông tin được mã hóa được lưu trữ trong các gói dữ liệu khi chúng được vận chuyển qua mạng. Đánh hơi có thể được chia thành hai loại chung: đánh hơi chủ động và bị động .
Đánh hơi thụ động
Đánh hơi thụ động bao gồm chỉ nghe các gói đang được gửi qua dưới dạng lưu lượng mạng. Nó thường được sử dụng như một kỹ thuật trinh sát để đánh giá thông tin thích hợp về lưu lượng truy cập và loại dữ liệu đang được truyền qua mạng. Điều này cho phép các chuyên gia bảo mật phân tích mạng để tìm bất kỳ điểm bất thường hoặc hoạt động đáng ngờ nào, chẳng hạn như khắc phục sự cố mạng (sử dụng lưu lượng mạng làm thước đo cho các sự cố mạng) và tối ưu hóa hiệu suất bằng cách xác định các khu vực tắc nghẽn.
đánh hơi tích cực
Đánh hơi chủ động là một kỹ thuật được sử dụng trong các ứng dụng tiêm/giả mạo gói nhằm mục đích gợi ra phản hồi từ các thiết bị mạng. Chẳng hạn, kẻ tấn công có thể gửi một gói cụ thể để lừa một thiết bị hoặc ứng dụng cụ thể phản hồi bằng thông tin nhạy cảm. Điều này có thể được sử dụng để thực hiện nhiều hoạt động tinh quái như dàn dựng một cuộc tấn công trung gian (MiTM) và chiếm quyền điều khiển các phiên mạng. Đánh hơi chủ động khó phát hiện hơn một chút so với đánh hơi thụ động vì nó được xây dựng để giả dạng lưu lượng mạng xung quanh. Đánh hơi chủ động được thực hiện bằng cách cố ý nhập các gói giao thức phân giải địa chỉ (ARP) để làm quá tải bảng bộ nhớ địa chỉ nội dung chuyển đổi (CAM). Điều này dẫn đến lưu lượng mạng hợp pháp được vận chuyển đến các cổng khác nhau, làm nền tảng cho các cuộc tấn công giả mạo như Giả mạo ARP, tấn công giao thức cấu hình máy chủ động (DHCP) và đầu độc DNS (hệ thống tên miền).
mô hình OSI
Mô hình OSI (được gọi là Kết nối hệ thống mở) được sử dụng để khái niệm hóa cách các thành phần khác nhau của mạng giao tiếp với nhau. Mô hình này được trình bày dưới dạng mô hình bảy lớp bao gồm một bộ quy tắc được tiêu chuẩn hóa về cách các thiết bị và chương trình khác nhau có thể giao tiếp với nhau thông qua mạng.
Mô hình OSI có thể được phân thành nhiều lớp: Ứng dụng, Trình bày, Phiên, Vận chuyển, Mạng, Liên kết dữ liệu và Vật lý.
lớp vật lý
Điều này mô tả các đặc điểm vật lý của mạng chịu trách nhiệm kết nối vật lý giữa các thiết bị như cáp, đầu nối và báo hiệu. Trong lớp này, dữ liệu được truyền qua các bit .
Lớp liên kết dữ liệu
Trong lớp này, dữ liệu được định dạng thành các gói và được truyền qua mạng. Lớp liên kết dữ liệu cũng đảm bảo rằng dữ liệu của bạn không chứa bất kỳ lỗi nội bộ nào. Dữ liệu được truyền bằng khung .
lớp mạng
Lớp mạng xử lý cách các gói được xử lý và gửi qua mạng bằng cách tìm cách tối ưu để gửi gói. Trong giai đoạn này, các địa chỉ IP được gắn vào tiêu đề của gói tin.
lớp vận chuyển
Lớp truyền tải là lớp chuyển tiếp giữa lớp mạng và lớp phiên. Lớp này sử dụng các giao thức mạng như UDP và TCP để xác định cách truyền dữ liệu giữa các ứng dụng. Dữ liệu được vận chuyển trong lớp này được gọi là một phân đoạn .
Lớp phiên
Lớp này xác định cách các ứng dụng thiết lập và duy trì kết nối với nhau.
Lớp trình bày
Lớp trình bày chuyển đổi dữ liệu từ các phân đoạn sang định dạng dễ đọc hơn cho con người. Lớp này cũng bao gồm việc mã hóa và giải mã các gói tin.
Lớp ứng dụng
Lớp ứng dụng là những gì được sử dụng để giao tiếp với người dùng. Nó xác định các giao thức và giao diện có thể được sử dụng bởi các ứng dụng để giao tiếp với mạng.
Phân tích thông tin gói
Trong mạng, một gói tin là một phân đoạn nhỏ của một thông điệp lớn hơn. Bất kỳ dạng dữ liệu nào được truyền qua mạng đều được chia thành các gói. Sau khi chúng được truyền qua mạng, các gói đó sẽ được thiết bị nhận chúng tái tạo lại.
Các gói được gửi qua mạng có tiêu đề, tải trọng và đoạn giới thiệu được bao gồm trong cấu trúc của chúng. Tôi sẽ sử dụng gói IPv4 làm ví dụ để minh họa loại thông tin chứa trong gói.
1. Tiêu đề gói
Tiêu đề gói là phần đầu tiên của gói. Nó chứa địa chỉ và dữ liệu khác cần thiết để gói đến đích. Tiêu đề IPv4 chứa 13 trường…
- Phiên bản: số phiên bản của giao thức internet được sử dụng (ví dụ: IPv4)
- Internet Header Length (IHL): độ dài của toàn bộ IP header
- Thông báo tắc nghẽn rõ ràng: thông tin về thông tin tắc nghẽn nhìn thấy trên đường
- Total Length: độ dài của toàn bộ gói tin IP (bao gồm cả header và body)
- Nhận dạng: nếu gói IP bị phân mảnh, mỗi gói sẽ chứa một số nhận dạng tương ứng để xác định gói IP gốc mà chúng thuộc về
- Flags: cho biết gói tin có đủ lớn để bị phân mảnh hay không
- Fragment Offset: định vị phân đoạn trong gói IP
- Time to Live (TTL): số lượng bộ định tuyến mà gói tin còn lại để vượt qua để tránh lặp mạng
- Giao thức: lớp mạng tại máy chủ đích mà gói thuộc về (tức là TCP = 6, UDP = 17 và ICMP = 1)
- Header Checksum: giá trị checksum của toàn bộ header dùng để xác nhận gói tin không có lỗi
- Địa chỉ nguồn: Địa chỉ 32 bit của người gửi (nguồn) của gói tin
- Destination Address: 32-bit địa chỉ của Receiver (đích) của gói tin
- Tùy chọn: trường tùy chọn có thể chứa thông tin như Lộ trình ghi, Dấu thời gian, v.v.
2. Tải trọng
Tải trọng của gói bao gồm dữ liệu thực tế mà gói dự định mang đến đích. Trong trường hợp của gói IPV4, tải trọng được cung cấp một phần đệm 0 bit để đảm bảo gói kết thúc trong giới hạn 32 bit.
3. Đoạn giới thiệu
Đôi khi các gói có thể chứa một kết thúc cho gói của chúng được gọi là đoạn giới thiệu. Mặc dù cấu trúc gói IPV4 không chứa đoạn giới thiệu, các khung Ethernet chứa một đoạn giới thiệu để bao gồm thông tin mà bộ điều hợp mạng trên ethernet cần để xử lý khung.
Wireshark là một công cụ phân tích gói và giao thức mạng mã nguồn mở và được sử dụng rộng rãi. Nó cho phép bạn chụp các gói mạng từ các nguồn như không dây (IEEE.802.11), Bluetooth, Ethernet, vòng mã thông báo, v.v. Wireshark cũng bao gồm khả năng lọc gói cho phép bạn lọc luồng nhật ký của các gói khi chúng được hiển thị trên màn hình của bạn .
Sử dụng Wireshark để phân tích gói
Giao diện Wireshark chứa các bảng khác nhau để hiển thị thông tin gói. Bảng điều khiển chính hiển thị danh sách tất cả các gói truyền qua mạng. Nếu bạn chọn một gói riêng lẻ, hai ngăn sẽ bật lên ở gần cuối màn hình chứa dữ liệu gói cụ thể hơn. Chi tiết cho từng danh mục cột trong bảng điều khiển chính như sau:
Số: số gói trong tệp chụp
Thời gian: thời gian gói này bị bắt sau khi bắt đầu đánh hơi gói
Nguồn: Địa chỉ IP và số cổng của thiết bị gửi
Điểm đến: Địa chỉ IP và số cổng của thiết bị nhận
Giao thức: loại gói (tức là TCP, UDP, HTTP, v.v.)
Thông tin: nội dung thông tin thêm về gói sẽ thay đổi tùy theo loại gói được chụp
Đó là các cột thông tin được cấu hình sẵn trong Wireshark, nhưng có nhiều cột khác có sẵn để hiển thị trong công cụ, chẳng hạn như TTL, tổng kiểm tra, v.v. bằng cách chọn cài đặt “Cột” cho cột đó.
Phần Chi tiết gói của công cụ hiển thị cho bạn thông tin dễ hiểu hơn về gói thay đổi tùy thuộc vào loại gói. Khung dưới cùng, Packet Bytes , hiển thị nội dung gói ở định dạng thập lục phân thuần túy.
Bộ lọc chụp Wireshark
Các bộ lọc chụp trong Wireshark giới hạn các gói được chụp bởi bộ lọc được chèn. Nếu bạn có thể nhận thấy, các bộ lọc chụp Wireshark tuân theo định dạng giống như tcpdump , một công cụ chụp gói mạng phổ biến khác. Cú pháp chụp gói tuân thủ các biểu thức cú pháp Bộ lọc gói Berkeley (BPF). Một số bộ lọc chụp phổ biến cho Wireshark bao gồm…
Chỉ nắm bắt lưu lượng đến và đi từ địa chỉ IP 172.18.5.4:
host 172.18.5.4
Nắm bắt lưu lượng truy cập đến hoặc từ một dải địa chỉ IP:
net 192.168.0.0/24
HOẶC
net 192.168.0.0 mask 255.255.255.0
Nắm bắt lưu lượng truy cập từ một dải địa chỉ IP:
src net 192.168.0.0/24
HOẶC
src net 192.168.0.0 mask 255.255.255.0
Nắm bắt lưu lượng DNS (cổng 53):
port 53
Chụp ngoại trừ tất cả lưu lượng ARP và DNS:
port not 53 and not arp
Chỉ chụp các gói IPv4:
ip
Chỉ chụp các gói Ethernet (EAPOL):
ether proto 0x888e
Tính năng bộ lọc hiển thị trong Wireshark cho phép bạn thu hẹp loại gói được hiển thị trong danh sách gói đã chụp. Các ví dụ phổ biến về bộ lọc hiển thị bao gồm:
Bộ lọc dựa trên giao thức:
Bạn có thể lọc lưu lượng gói dựa trên giao thức mạng
http
Ví dụ trên chỉ hiển thị các gói có giao thức HTTP
Lọc các gói theo địa chỉ (tức là lọc địa chỉ IP):
Bạn có thể lọc các gói thông qua địa chỉ của người gửi hoặc người nhận
ip.src == xxxx
Ở trên cho thấy lưu lượng truy cập đến từ một địa chỉ IP cụ thể
Bộ lọc dựa trên cổng:
Bạn có thể lọc lưu lượng gói dựa trên số cổng đang được sử dụng
http
Ví dụ trên chỉ hiển thị các gói TCP có cổng 80
Bộ lọc dựa trên thời gian:
Bạn có thể lọc các gói dựa trên thời gian chúng bị bắt
frame.time >= "YYYY-MM-DD HH:MM:SS" && frame.time <= "YYYY-MM-DD HH:MM:SS
Ví dụ trên chỉ hiển thị các gói trong khoảng thời gian đã chọn
Bộ lọc dựa trên nội dung:
Bạn có thể lọc các gói dựa trên nội dung của các gói
frame contains google
Ví dụ trên hiển thị các gói có nội dung chứa từ khóa “google”
Trong khi quá trình phân tích gói được sử dụng để có được cái nhìn tổng quát về các mẫu lưu lượng mạng, thì việc phân tích gói liên quan đến một cách tiếp cận hẹp hơn nhiều. Phân tích gói đề cập đến quá trình phân tích các gói riêng lẻ thành các thành phần riêng biệt của chúng (ví dụ: tiêu đề, nội dung tải trọng, v.v.) để thu được kiến thức có giá trị về các quy trình mạng hoặc thiết bị được giám sát. Một số ứng dụng có thể sử dụng phân tách gói bao gồm phân tích giao thức và pháp y.
Thật may mắn cho chúng tôi, Wireshark chứa một bộ công cụ tích hợp để thực hiện phân tách gói kỹ lưỡng trên mỗi gói được vận chuyển qua mạng. Một số kỹ thuật để thực hiện bóc tách gói bao gồm…
Giải mã giao thức: bạn có thể xem chi tiết giao thức cho từng gói bằng cách mở rộng chi tiết lớp trong ngăn chi tiết gói. Điều này rất hữu ích để giải mã các giao thức khác nhau như TCP, UDP, DNS, v.v.
Luồng TCP: Wireshark cũng chứa một tính năng hiển thị luồng TCP của tất cả các gói truyền qua kết nối TCP. Để sử dụng tính năng này, hãy chọn gói thuộc về kết nối TCP, nhấp chuột phải vào gói và chọn “Theo dõi > Luồng TCP”
Mã hóa màu: bạn cũng có thể trực quan hóa các gói dựa trên các tiêu chí cụ thể như độ dài gói hoặc loại giao thức. Để xem tính năng này, hãy chuyển đến “Xem” và nhấp vào “Quy tắc tô màu”
Biểu đồ luồng: Wireshark có một tính năng hiển thị biểu đồ luồng hiển thị chi tiết về thời gian và trình tự của một gói giữa hai máy. Để định cấu hình biểu đồ luồng, hãy chuyển đến “Bộ lọc bảo tồn” và chọn tùy chọn “TCP”. Điều này tạo ra một bộ lọc hiển thị tất cả các gói được truyền giữa hai máy. Sau đó, chọn “Statistics” và “TCP Stream Graphs” để tạo biểu đồ luồng
Việc bóc tách gói có thể được áp dụng để phân tích loại giao thức mạng nào đang được sử dụng và cách chúng được sử dụng. Để thử phân tích giao thức với Wireshark, hãy bắt đầu bằng cách chụp các gói bằng giao diện mạng đã chọn của bạn. Sau đó, khi các gói được bắt, chúng sẽ truyền nhiều giao thức khác nhau như HTTP (cổng 80), HTTPS (cổng 443), SSH (cổng 22) và SNTMP, v.v. Hãy sử dụng HTTP cho ví dụ phân tích gói của chúng ta. Bắt đầu bằng cách chọn một gói có giao thức HTTP được gán cho nó như bên dưới bằng cách lọc bằng từ khóa http...
Khi gói được chọn, hãy mở rộng menu Giao thức điều khiển truyền (TCP) để xem thông tin liên quan cho gói.
Sau khi chi tiết gói được mở rộng, bạn có thể phân tích các trường khác nhau của giao thức, chẳng hạn như địa chỉ IP nguồn và đích, cổng nguồn và đích, phương thức HTTP được sử dụng (GET, POST, DELETE, v.v.) và mã phản hồi HTTP.
Bóc tách gói cũng có thể được sử dụng cho pháp y kỹ thuật số để trích xuất thông tin đằng sau các sự cố mạng cụ thể. Chẳng hạn, hãy tưởng tượng một tình huống trong đó tin tặc gửi thông tin nhạy cảm qua mạng của bạn đến một máy chủ từ xa. Chúng ta có thể sử dụng các bộ lọc hiển thị trong Wireshark để cô lập lưu lượng truy cập đến máy của tin tặc bằng cách sử dụng địa chỉ IP của thiết bị của tin tặc và địa chỉ IP của máy chủ từ xa. Sau đó, chúng ta có thể sử dụng các công cụ phân tích gói do Wireshark cung cấp, chẳng hạn như tính năng “Theo dõi luồng TCP” để tái tạo lại luồng dữ liệu TCP giữa tin tặc và máy chủ từ xa. Bằng cách sử dụng thông tin này, bạn có thể tiết lộ thông tin ẩn mà tin tặc đã gửi đến máy chủ từ xa như việc chuyển bất kỳ tệp hoặc hình ảnh độc hại nào. Ứng dụng phân tích gói này cũng có thể được áp dụng để phân tích lưu lượng mạng và phát hiện bất kỳ hoạt động tội phạm nào.
Kỹ thuật đảo ngược là quá trình giải cấu trúc và phân tích một hệ thống để hiểu cách thức hoạt động của nó “bí mật” và trích xuất thông tin thích hợp từ nó. Quá trình này thường được thực hiện thông qua một quy trình lặp đi lặp lại, giải cấu trúc các khía cạnh cụ thể của hệ thống, phân tích các thông số kỹ thuật và mã của hệ thống, đồng thời chạy các thử nghiệm cụ thể để kiểm tra kết quả của hệ thống. Đối với trường hợp hack UAV, chúng ta có thể áp dụng các nguyên tắc kỹ thuật đảo ngược để phân tích phần mềm và phần sụn của máy bay không người lái, trích xuất thông tin đo từ xa và xác định các lỗ hổng để khai thác. Đối với thử nghiệm nghiên cứu này, tôi quyết định đảo ngược kỹ thuật của DJI Mini 2 — một máy bay không người lái nhỏ, gọn được thiết kế để sử dụng cho mục đích giải trí do một công ty máy bay không người lái nổi tiếng tên là DJI phát triển.
Vì nghe trộm thụ động không trả lại bất kỳ kết quả có thể thiết kế ngược nào, thay vào đó, tôi đã sử dụng cấu hình mạng nhân tạo và thân thiện với nghe lén để cho phép liên lạc không dây giữa máy bay không người lái và người điều khiển có thể kiểm tra và chặn được bằng cách thực hiện theo cấu hình bên dưới:
a) Máy bay không người lái: hoàn thành khởi tạo quy trình bằng cách bắt đầu một điểm truy cập được sử dụng để liên lạc trực tiếp với các đồng nghiệp trong mạng của nó
b) MITM AP: chúng tôi thiết lập một mạng ảo thứ hai với máy của chúng tôi giả làm AP cho máy khách di động
c) Máy khách MITM: máy khách MITM kết nối trực tiếp với máy bay không người lái chuyển tiếp mạng của MITM AP tới máy bay không người lái và ngược lại
d) Máy MITM: Máy MITM là thiết bị dùng để nghe trộm bằng cách kết nối thông qua NAT (Network Address Translation) AP của MITM ảo với NIC bên trong của máy khách MITM
e) Người điều khiển: người điều khiển là thiết bị di động chạy ứng dụng DJI kết nối qua Wi-Fi đại diện máy bay không người lái (MITM-AP)
Cấu hình điểm truy cập
Để định cấu hình MITM AP, tôi đã sử dụng lệnh create_ap để tạo một AP ảo qua dòng lệnh trên máy của tôi.
sudo create_ap wlan0 wlan0 Operator 12345678 -w 2 -c 2 -m nat --freq-band 2.4 --country US
Lệnh này được thiết kế để loại bỏ số lượng nhiễu giữa kết nối bằng cách tập trung vào tần số 2.4GHz và thiết lập các tham số sau:
-w 2
WPA2-PSK ở chế độ mật mã CCMP -c 2
sử dụng kênh trống tùy ý và tĩnh -m nat
NAT để kết nối giữa AP ảo và NIC vật lý --freq-band 2.4
chỉ chọn băng tần 2.4GHz --country US
đặt đúng mã quốc gia để tuân thủ các quy định của địa phươngNghe lén liên lạc
Để nghe lén, tôi đã sử dụng công cụ dòng lệnh để tối ưu hóa hiệu suất cho mạng MITM. Với tcpdump, các gói mạng đã chụp sẽ được lưu trữ trong một tệp PCAP tương ứng mà sau này có thể được phân tích bởi một loạt các chương trình phân tích mạng. Tôi cũng đã triển khai các bộ lọc bổ sung để giảm phạm vi của đầu ra đã chụp để chỉ bao gồm các gói mạng có liên quan giữa máy bay không người lái và máy.
sudo tcpdump --interface=ap0 -n udp host 192.168.2.1 -w /tmp/dumps/capture.pcap
-n
tránh độ phân giải DNS udp
bỏ qua mọi gói TCP host 192.168.2.1
đảm bảo các gói được hiển thị có liên quan đến máy bay không người láiĐể tiến hành nghiên cứu pháp y kỹ thuật số trên DJI Mini 2, tôi đã thử thiết kế ngược giao thức Wi-Fi của DJI bằng cách phân tích các gói mạng do máy bay không người lái gửi bằng Wireshark. Để xác định cấu trúc giao thức chính xác của các gói được truyền bởi máy bay không người lái, tôi đã sử dụng lý luận chính xác từng bit để cổ điển hóa từng bit riêng lẻ. Trong suốt quá trình, tôi nhận thấy các vị từ bộ lọc sau đây trong Wireshark là hữu ích nhất:
!dns && !mdns && !icmp
vì chỉ các gói mạng cấp ứng dụng mới phù hợp với quy trình này, nên chúng tôi có thể loại trừ các giao thức DNS, Giao thức thông báo điều khiển Internet (ICMP) và Multicast DNS (MDNS) khỏi tìm kiếm của chúng tôi ip.src == 192.168.2.1
Địa chỉ IP 192.168.2.1 đại diện cho địa chỉ IP của máy bay không người lái. Ở đây, chúng tôi chỉ định nguồn và đích sẽ được lọc theo IP đó. data.len == 1472
Trong ví dụ này, chỉ các gói có độ dài 1472 byte mới được đưa vào chế độ xem kết quả hiển thị các gói bay không người lái có kích thước tải trọng chính xác đó data.data[0] == 0x00
điều này so sánh giá trị hex tĩnh với nội dung tải trọng của chỉ mục ban đầu. Điều này rất hữu ích vì việc kiểm tra gói giữa chuyến bay tập trung vào các thay đổi đồng liên quan giữa giao thức và hướng dẫn điều khiển máy bay không người lái của nhà điều hànhVới các gói thu được bằng Wireshark, tôi tập trung vào tải trọng từ chỉ số 0x2A đến độ dài khung Ethernet. Mặc dù toàn bộ gói bao gồm thông tin, nhưng các byte dữ liệu từ 0x2A đến cuối đủ cho các mục đích kỹ thuật đảo ngược. Tôi đã bao gồm bảng lớp mô hình Ethernet OSI bên dưới để tham khảo:
Mã hóa tải trọng
Mặc dù toàn bộ luồng giao tiếp được mã hóa, luồng dữ liệu được giải mã vẫn có thể ảnh hưởng đến tính toàn vẹn của mã hóa. Một phương pháp giải mã thông tin bằng các hệ thống UAV là so sánh song song giữa nhiều tải trọng để xác định các mẫu. Chế độ sổ mã điện tử (ECB) tạo ra một chuỗi dữ liệu xác định áp dụng cùng một hoán vị giả ngẫu nhiên cho từng khối bản rõ để tạo các khối bản mã lặp lại. Chúng tôi có thể áp dụng điều này trong quy trình kỹ thuật đảo ngược của mình để có thể gặp phải tải trọng giả ngẫu nhiên hoặc hai tải trọng giống hệt nhau trong các gói UDP. Mặc dù tôi không thể tìm thấy bất kỳ tải trọng nào giống hệt nhau, nhưng có nhiều trọng tải rất giống nhau. Ví dụ: các hình ảnh bên dưới hiển thị hai gói chỉ khác nhau 5 byte. Hai tải trọng rất giống nhau và thậm chí còn chỉ ra sự gia tăng của một tải trọng, điều hiển nhiên là luồng dữ liệu không được mã hóa.
suy luận suy diễn
Cách tiếp cận chính mà tôi đã sử dụng cho kỹ thuật đảo ngược DJI Mini 2 là áp dụng lý luận suy diễn để so sánh tải trọng dựa trên đầu vào của người vận hành tương quan. Sử dụng các hướng dẫn điều khiển máy bay không người lái trực tiếp (tức là hạ cánh, di chuyển, cất cánh, v.v.), tôi buộc người điều khiển phải báo hiệu gói mạng đại diện. Các lệnh điều khiển có khả năng báo hiệu loại lệnh và nội dung trọng tải. Sau đó, các gói được so sánh với nhau bằng cách sử dụng kỹ thuật so sánh nhị phân đã nói ở trên để tiết lộ cấu trúc lệnh và giá trị tham số. Phân tích gói cho thấy một giao thức lưu lượng truy cập cao bao gồm hầu hết các gói từ máy bay không người lái đến nhà điều hành dựa trên Đơn vị truyền tải tối đa (MTU).
Lập luận chính xác từng bit
Để thu thập thêm thông tin về dữ liệu được lưu trữ trong các gói được truyền, một kỹ thuật gọi là suy luận chính xác bit đã được sử dụng để phân tích các bit trong tải trọng 56 byte để đưa ra phán đoán cụ thể về thuộc tính của từng gói. Để đơn giản hóa quy trình, các cụm được sử dụng để tổng hợp tải trọng thành từng cụm có cùng độ dài chính xác. Tôi thực sự khuyên bạn nên đọc tài liệu nghiên cứu này đi sâu vào phương pháp độ chính xác bit cho máy bay không người lái kỹ thuật đảo ngược để tìm hiểu thêm về kỹ thuật này. Bảng bên dưới hiển thị tổng quan chung về thông tin có thể được trích xuất bằng lý luận chính xác từng bit.
Trong suốt quá trình nghiên cứu này, tôi đã học được rằng việc bóc tách gói để do thám và để điều tra kỹ thuật số/kỹ thuật đảo ngược đòi hỏi các cách tiếp cận hoàn toàn khác nhau. May mắn thay, việc phân tích gói tin bằng cách sử dụng trinh sát thụ động và một bộ phân tích giao tiếp mạng thực sự hữu ích để phân tích các giao diện giao tiếp của DJI Mini 2.
Để bắt đầu với quy trình phân tách gói, tôi đã tải xuống các tệp PCAP được liệt kê trong kho lưu trữ kết xuất gói liên lạc DJI này , bao gồm nhật ký dữ liệu liên lạc mở rộng cho tất cả các loại máy bay không người lái DJI sử dụng Wireshark. Khi các tệp PCAP đã được tải xuống, tôi đã phân tích chúng bằng Wireshark bằng các công cụ phân tích khác nhau.
Phân tích định dạng thông tin
Trước khi đi sâu hơn vào quy trình phân tách gói cụ thể của các gói DJI, điều đáng nói là tất cả
Giao tiếp UART: UART là viết tắt của Universal Asynchronous Receiver-Transmitter là một giao thức nối tiếp thường được sử dụng để truyền thông tin giữa các thiết bị điện tử sử dụng luồng bit dữ liệu không đồng bộ theo tuần tự trên một đường truyền thông duy nhất.
Luồng DUML: DUML là viết tắt của DJI Universal Markup Language mô tả giao thức có nguồn gốc gần cho giao tiếp DJI. Nó được sử dụng để kiểm soát cài đặt bên trong của thiết bị hoặc để bắt đầu cập nhật chương trình cơ sở
Tệp KML: Còn được gọi là Ngôn ngữ đánh dấu lỗ khóa, đây là những tệp XML được sử dụng để hiển thị cụ thể dữ liệu địa lý trong phần mềm bản đồ. Các tệp KML chứa dữ liệu về các vị trí, hình dạng, đường dẫn cụ thể và các đặc điểm địa lý khác
Nhật ký chuyến bay DAT: DAT là viết tắt của Băng âm thanh kỹ thuật số. Chúng đề cập đến dữ liệu chuyến bay được ghi lại được lưu trữ trên Băng âm thanh kỹ thuật số. Các tệp DAT bao gồm thông tin chuyến bay thích hợp để phân tích
Tệp PCAP trong kho lưu trữ kết xuất gói DJI chứa một lượng lớn nhật ký giao tiếp từ nhiều phần cứng DJI khác nhau. Việc lưu trữ nhật ký giao tiếp này cho phép chúng tôi giải mã giao tiếp nội bộ của các giao thức cùng với một điểm tham chiếu tốt để thăm dò các sự cố phần cứng bên trong phần cứng. Chẳng hạn, tệp nhật ký đầu tiên p3x_ofdm_to_center_run1 chứa kết xuất giao tiếp từ kết xuất UART của Bảng thu DJI P3X. Kết xuất dữ liệu có giao tiếp song phương giữa MCU OFDM (Ghép kênh phân chia theo tần số trực giao) (Bộ vi điều khiển) và FC (Bộ điều khiển chuyến bay) trên máy bay không người lái bằng cáp ruy băng và chương trình comm_serial2pcap.py .
Thiết lập Wireshark
Để thiết lập phân tích giao tiếp cơ bản của DJI, tôi đã sử dụng các tệp phân tích giao tiếp được liệt kê trong các công cụ phần sụn DJI. Các công cụ phân tích truyền thông, cung cấp các chức năng sau:
- Hiển thị các trường trong các gói DUML đã chụp từ nguồn máy bay không người lái
- Hiển thị các trường trong các gói được lưu trữ trong chuyến bay nhị phân
- Ghi file DAT
- Trực quan hóa các chuyến bay thông qua tính năng xuất KML
Các công cụ cũng cho phép bạn phân tích các lệnh giao thức thông qua các tùy chọn sau:
- Tệp PCAP dựa trên luồng DUML
- Các tệp PCAP chứa kết xuất giao tiếp USB/Ethernet trong tải trọng DUML được nhúng
- Tệp PCAP dựa trên nhật ký chuyến bay DAT
Để bắt đầu thiết lập môi trường của bạn, hãy tải xuống tất cả các tệp .lua được liệt kê trong liên kết này . Sau đó, trong Wireshark, hãy mở menu Giới thiệu về Wireshark và chuyển đến tab Thư mục .
Sau đó, nhấp vào tham chiếu đường dẫn tệp đến Plugin Lua cá nhân và dán vào tất cả nội dung tệp .
Sau khi thiết lập xong, hãy làm mới Wireshark bằng lệnh Ctrl+Shift+L để tải lên tất cả các công cụ phân tích giao tiếp. Khi đã được tải, hãy mở
Preferences -> Protocols -> DLT_USER -> Edit
và làm bài theo hình bên dưới: Sau khi bảng DLT được khởi tạo, hãy chuyển đến
Preferences -> Appearance -> Columns
và điều chỉnh cài đặt để hiển thị thông tin phác đồ mà bạn muốn. Sau đây là một ví dụ về một cách nó có thể được cấu hình: Mổ xẻ truyền thông
Từ các công cụ phân tích giao tiếp, chúng tôi có thể trích xuất thông tin sau từ các giao thức giao tiếp DJI:
Cấu trúc tệp phần sụn: trình mổ xẻ có thể mô tả thông tin về cấu trúc của tệp phần sụn như tiêu đề, phần và phần dữ liệu
Thành phần phần sụn: các công cụ cũng có thể trích xuất các thành phần phần sụn riêng lẻ như bộ tải khởi động, phần sụn điều khiển chuyến bay, phần sụn máy ảnh, phần sụn gimbal, v.v.
Tham số cấu hình: cũng có thể xem các tham số cấu hình để cung cấp thông tin cài đặt cho các thành phần như máy ảnh, điều khiển chuyến bay và cảm biến
Tập lệnh: đoạn mã và tệp nhị phân thực thi cũng có thể được phát hiện trong tệp chương trình cơ sở
Mã hóa: tùy theo tình huống, người giải mã cũng có thể giải mã và mã hóa các phần của tệp phần sụn tiết lộ thông tin về quá trình mã hóa phần sụn
Nội dung hệ thống tệp: nếu tệp chương trình cơ sở bao gồm một hệ thống tệp, các công cụ cũng có thể trích xuất và phân tích nội dung trong hệ thống tệp đó
Trong Wireshark, một người mổ xẻ chịu trách nhiệm diễn giải và giải mã các giao thức mạng. Dissector rất hữu ích vì chúng phân tích các gói mạng đã bắt được và trích xuất thông tin hữu ích từ chúng, chẳng hạn như cấu trúc, trường và quy tắc mã hóa của giao thức, đồng thời hiển thị chúng ở định dạng mà con người có thể đọc được.
Wireshark cũng cho phép bạn phát triển các trình phân tích tùy chỉnh của riêng mình bằng cách sử dụng ngôn ngữ lập trình có tên là Lua . Mặc dù Wireshark được viết bằng C và các trình phân tích cho chương trình thường được viết bằng C, tuy nhiên, Wireshark cũng cho phép các trình phân tích được viết bằng ngôn ngữ lập trình Lua để giúp quá trình học tập trở nên dễ dàng hơn đối với những người mới bắt đầu phát triển. Lua là một ngôn ngữ lập trình đa mô hình, thủ tục và chức năng với các tính năng hướng đối tượng tích hợp. Mặc dù việc chọn Lua làm ngôn ngữ để phát triển trình phân tích không ảnh hưởng đến tốc độ, nhưng nó thuận lợi trong hầu hết các trường hợp vì trọng lượng nhẹ và dễ học.
Giới thiệu cơ bản về Lua
Như tôi đã đề cập trước đây, Lua có cú pháp mã đơn giản và trực quan trong khi vẫn lưu ý đến tốc độ, tính di động và khả năng tích hợp với các chương trình khác giúp bạn dễ dàng sử dụng mà không phải hy sinh nhiều chức năng và hiệu suất. Dưới đây là một số đoạn mã cơ bản phác thảo các tính năng cơ bản của ngôn ngữ:
Biến và hoạt động
local a = 25
local b = 5
local result = a + b print (result) -- Output: 30
Câu điều kiện
local temperature = 15
local heatSetting = 0
if temperature < 0 then heatSetting = 3
elseif temperature <= 20 then heatSetting = 2
else heatSetting = 1 end
print (heatSetting) -- Output: 2
vòng lặp
-- While Loops
local i = 0
while i < 10 do
i = i + 1
end
print (i) -- Output: 10
-- For Loops
local i = 0
-- i = first, last, delta
for i = 0 , 10 , 1 do
print (i) end
print (i) -- Output: 10
Những cái bàn
local new_table = {} -- Table value assignment
new_table[ 20 ] = 10
new_table[ "x" ] = "test"
ax = 10
Chức năng
function add (arg1, arg2)
return arg1 + arg2 end
local added_number = add( 2 , 3 ) print (added_number) -- Output: 5
Ghi chú tóm tắt về Lua
Lua được gõ động
Phạm vi được chỉ định là cục bộ hoặc toàn cầu. Toàn cầu là mặc định
Dấu chấm phẩy không cần thiết làm cho khoảng trắng giữ nhiều giá trị hơn
-- biểu thị một bình luận
i = i + 1 được sử dụng để tăng biến
~= được sử dụng thay cho !=
Các loại là: chuỗi, số, boolean, nil, hàm, dữ liệu người dùng, luồng và bảng
Nil được sử dụng cho một giá trị không
Trong câu điều kiện: nil và false là sai, phần còn lại là đúng.
Cấu trúc dữ liệu duy nhất của Lua là bảng. Các bảng thực hiện các mảng kết hợp. Các mảng kết hợp có thể được lập chỉ mục bằng cả số và các loại khác như chuỗi. Chúng là những đối tượng động và thường được gọi là đối tượng.
Để thiết lập phát triển trình mổ xẻ với các tập lệnh Lua trong Wireshark, hãy nhấp vào
Help -> About Wireshark -> Folders
. Từ đó, nhấp vào tham chiếu thư mục Plugin Lua cá nhân hoặc Plugin Lua toàn cầu. Đường dẫn sẽ giống như C:\Program Files\Wireshark\plugins\2.4.2 trên Windows . Để tạo một trình mổ xẻ, hãy khởi tạo một tệp trong thư mục đó như example.lua
. Tập lệnh sẽ tự động được áp dụng sau khi tải lại Wireshark. Bạn có thể tải lại Wireshark bằng cách khởi động lại ứng dụng hoặc tải lại tất cả các tập lệnh Lua bằng Ctrl+Shift+L . Bây giờ bạn đã thiết lập xong mọi thứ, tôi sẽ hướng dẫn bạn một tập lệnh phân tách thô sơ để trích xuất và hiển thị thông tin về một giao thức tùy chỉnh.
-- Create a new protocol for our custom protocol
local custom_protocol = Proto( "CustomProtocol" , "Custom Protocol" ) -- Define the fields of our custom protocol
local field1 = ProtoField.uint8( "custom_protocol.field1" , "Field 1" , base.DEC) local field2 = ProtoField. string ( "custom_protocol.field2" , "Field 2" ) -- Register the fields to the custom protocol
custom_protocol.fields = { field1, field2 } -- Create a function to dissect the packets of our custom protocol
function custom_protocol.dissector (buffer, pinfo, tree)
-- Create a subtree for our custom protocol in the Wireshark GUI
local subtree = tree:add(custom_protocol, buffer(), "Custom Protocol Data" ) -- Extract and display the values of Field 1 and Field 2
local field1_value = buffer( 0 , 1 ):uint() subtree:add(field1, buffer( 0 , 1 )):append_text( " (Value: " .. field1_value .. ")" ) local field2_value = buffer( 1 , 5 ): string () subtree:add(field2, buffer( 1 , 5 )):append_text( " (Value: " .. field2_value .. ")" ) end
-- Register our custom protocol as a dissector in Wireshark
local udp_port = DissectorTable.get( "udp.port" ) udp_port:add( 12345 , custom_protocol)
- mã bắt đầu bằng cách khởi tạo một giao thức tùy chỉnh bằng cách sử dụng đối tượng Proto được gọi là
CustomProtocol
field1
Và field2
buffer
, pinfo
, Và tree
. bộ đệm bao gồm bộ đệm của gói và đối tượng Tvb , pinfo chứa các cột của danh sách gói và cây là gốc của cây - Bên trong chức năng mổ xẻ, chúng tôi tạo một cây con trong phần Chi tiết gói Wireshark hiển thị giao thức tùy chỉnh của chúng tôi dưới dạng một trường
- Trong phần xem dạng cây, chúng tôi hiển thị thông tin gói cho từng trường tương ứng trong giao thức tùy chỉnh
- Cuối cùng, chúng ta gán một giao thức cho một cổng. Trong trường hợp này, cổng được sử dụng là
12345
cho UDPNhìn chung, bằng cách sử dụng Wireshark kết hợp với một số công cụ phân tích liên lạc dựa trên DJI, chúng tôi có thể tiết lộ thông tin nhạy cảm do máy bay không người lái DJI truyền qua các giao thức liên lạc của chúng. Tôi hy vọng quá trình nghiên cứu sâu rộng được vạch ra này sẽ làm sáng tỏ một số kỹ thuật đảo ngược kỹ thuật mà bạn có thể áp dụng trong quy trình an ninh mạng của mình để có thể tìm ra các lỗ hổng trong các hệ thống hiện có. Hơn nữa, tôi hy vọng báo cáo này đã chứng minh rằng mặc dù hack máy bay không người lái có thể hơi tẻ nhạt nhưng không phải là không thể. Điều quan trọng là phải tiếp tục mở rộng ranh giới của những gì hiện được biết về một hệ thống để làm nổi bật những sai sót hiện có trước khi chúng bị những kẻ xấu chú ý. Trong trường hợp này, chúng tôi đã tiết lộ rằng các giao thức bay không người lái ngay cả đối với các nhà sản xuất thương hiệu lớn, đáng tin cậy như DJI vẫn dễ bị chặn dữ liệu và kỹ thuật đảo ngược. Bằng cách xem xét điều này, các bước hành động mang tính xây dựng có thể được thực hiện để giảm thiểu các lỗ hổng hiện có này và củng cố tính bảo mật của các kênh liên lạc bằng máy bay không người lái.
Cũng được xuất bản ở đây.