Search
🛸

Empirical Analysis of MAVLink Protocol Vulnerability for Attacking Unmanned Aerial Vehicles

Created
2021/09/09 11:49
Tags
IoT
Drone
Conference
IEEE
Published
2018

0. 소개

본 논문은 UAV(Unmanned Aerial Vehicles)의 통신 과정에 대해서 논합니다. UAV는 무인이동기로, 흔이 이야기하는 드론입니다. UAV들은 지상에서 통신하기 위해 GCS(Ground Control Station)과 통신하게 되는데, 이때 주로 사용되는 MAVLink라는 프로토콜에 대해서 취약점을 분석합니다. 취약점을 분석하고, 나아가 이를 통해 UAV가 진행중인 임무를 무력화할 수 있는 공격 방법론을 제안합니다.

1. 배경지식

Drone Control Structure

드론을 제어하는 방법은 크게 두 가지로 나뉩니다. GCS를 이용하는 방법과 컨트롤러를 이용하는 방법입니다. 먼저 컨트롤러를 이용하는 방법부터 보면, 특정 통신 모듈에 연결되어 실시간으로 컨트롤러가 UAV에게 신호를 보내는 방시으로 통신을 합니다. 통신을 하는 방법에는 대표적으로 Wi-Fi, ZigBee 등이 있습니다.
반면에 GCS를 사용하는 경우에는 컨트롤러가 아닌, 컴퓨터에 별도 소프트웨어를 설치하여 드론과 통신하게 됩니다. GCS와 컨트롤러 통신의 가장 큰 차이점은 GCS의 경우 정보를 UAV의 정보를 실시간으로 수신하여 UAV의 상태를 모니터링할 수 있다는 점입니다. 따라서 컨트롤러 기반 방식은 주로 실시간으로, 수동으로 제어할 때 사용되고, GCS의 경우 무인 비행 및 특정 정해진 임무를 수행할 때 주로 사용됩니다. 참고로 본 논문에서는 GCS기반 제어를 중점으로 합니다.

MAVLink

MAVLink는 GCS기반의 드론 제어에 가장 널리 사용되는 프로토콜 중 하나입니다. MAVLink 프로토콜은 헤더 기반 메시지로, UAV와 GCS간에 양방향으로 전송됩니다. 짧게 요약하면 다음 역할들을 수행하는 것이 MAVLink입니다.
GCS → UAV : 임무 명령 전송
UAV → GCS : 현재 센서 값 및 위치/상태정보 전송
MAVLink에 대한 기본적인 구조는 다음과 같습니다.
Search
Packet Structure
Seq
Field
Description
1
페이로드 길이값 (n)
2
총 패킷에서 해당하는 순서값
3
발신자 시스템의 고유 ID
4
해당 컴포넌트 고유 ID
5
페이로드(payload) 정의 ID
6
메세지 ID에서 참조되는 실질적인 데이타 값들 (없을수있다)
7
메세지 무결성 검사
8
네트워크 무결성 검사
COUNT9
참고로 MAVLink는 v1와 v2가 존재하는데, 본 논문에서는 v1에 대해서만 언급하였습니다.

2. 논문 내용

UAV System의 어택벡터

논문에서는 먼저 UAV 환경에서 발생할 수 있는 어택 벡터들에 대해서 먼저 정리합니다. 정리한 어택 벡터는 다음과 같습니다.
다음과 같이 GCS, UAV, 그리고 communication link의 3가지로 나누어서 정리했지만, 본 논문에서는 attack scenario를 주로 통신 과정(communication link)에 집중하여 구상하였습니다.

MAVLink 취약점

암호화 부재
논문의 이름에서부터 알 수 있지만, 본 논문은 MAVLink 프로토콜의 취약점에 집중합니다. MAVLink는 header-based protocol이기 때문에, 기본적으로 패킷의 첫 프레임을 판단 기준으로 둡니다. 따라서 일종의 매직 넘버에 해당하는 STX값을 기반으로 MAVLink인지 아닌지를 판단합니다. 이때 암호화를 진행할 경우 시스템이 원하는 헤더값인지 확인할 수 없기 때문에 MAVLink는 암호화를 진행하지 않습니다.

Attack Scenario

본 논문에서는 총 3가지의 attack scenario를 준비하였습니다. Packet Injection, ICMP Flooding Attack, Identifying the real-state of the UAV인데, 각 시나리오는 각각 다음과 같이 정리됩니다.
앞서 MAVLink는 암호화를 진행하지 않는다는 것을 확인하였습니다. 본 논문에서는 이 점을 이용하여 UAV를 disable하기 위한 공격을 수행하였습니다. MAVLink 패킷들이 암호화되어있지 않기 때문에, 패킷을 sniffing할 수 있었고, 이를 통해 packet injection을 실행하는 시나리오를 작성하였습니다.
Identifying the real-state of the UAV
본 시나리오는 공격자가 UAV와 GCS사이의 네트워크에는 해킹이 되어있다는 전제조건을 동반합니다. 우선 ARP Poisoning Attack을 통해서 GCS와 UAV사이에 오가야 할 패킷을 공격자가 받도록 합니다. 이걸 성공한다면, UAV의 상태에 대한 정보를 모두 받을 수 있습니다. 이걸 기반으로 공격자는 추가적인 공격을 수행할 수 있습니다.
ICMP Flooding Attack
ICMP(Internet Control Message Protocol)이란 네트워크의 있는 호스트의 연결 상태를 확인하고, 패킷 전송에 문제가 있을 때 보고를 하는 특징이 있는 프로토콜입니다. 대표적인 예로 ping 명령어가 있습니다. 아무튼 이런 ICMP 메세지를 전송할 때, 전송자는 ICMP request 패킷을 송신자에게 전송하고, 송신자가 다시 전송자에게 답장하는 방식으로 문제가 있음을 판단합니다. 본 논문에서는 이 방법을 통해서 UAV를 무력화시키는 공격을 수행합니다.
위 사진은 ICMP Attack을 수행한 결과를 그래프로 보여준 값입니다. 각각 UAV와 GCS의 reception time을(y축) 관찰해보면, normal은 크게 시간이 0.35이상으로 벗어나지 않지만, ICMP Attack을 수행할 경우 reception time이 크게 늘어나는 것을 볼 수 있습니다.
Packet Injection Attack
GCS와 UAV는 GCS가 UAV에게 mission command를 전송하면 UAV는 이를 송신하여 수행하는 방식으로 소통합니다. 이때 통신은 MAVLink 프로토콜의 waypoint protocol을 사용합니다. 전반적인 과정은 다음과 같습니다.(아래 그림 참고)
1.
[GCS → UAV] 총 mission의 갯수 전송
2.
[UAV → GCS] 첫 번째 mission (Mission_Request) 요청
3.
[GCS → UAV] 첫 번째 mission (Mission_item) 전송
4.
2~3 반복
5.
[UAV → GCS] 모든 mission이 완료되면 Mission_ack를 전송하여 끝을 알림
본 논문에서는 GCS가 UAV에게 처음 mission의 갯수를 알리는 패킷을 보내면 UAV는 남아있던 미션에 대한 정보를 초기화시킵니다. 이 점을 이용해서 GCS가 UAV에게 Mission_Count를 보내면 서로 request를 보내고 있는 와중에 도청한 Mission_count를 다시 보내어 무력화합니다.
위 그래프는 실제 공격을 수행한 결과입니다. 본 그래프에서는 ground speed를 판단 요소로 썼는데, ground speed는 현재 지상의 속도와의 상대 속도를 나타내는 것으로, ground speed가 값이 존재할 경우 움직이고 있다고 유추할 수 있습니다. 정상적인 상황인 (a)의 경우 y축에 해당하는 ground speed가 계속 있는 것으로 보아 정상적으로 움직이고 있는 것을 볼 수 있지만, (b)의 경우 packet injection에 성공하여 움직이지 않는 것을 보여주고 있습니다.
패킷 캡쳐 : Cain & Abel, Jpcap, Packet Sender 사용 +) Jpcap 기반의 패킷 캡쳐 툴 제작

Actual Attack

Testbed configuration
본 논문에서는 다음과 같이 Testbed를 구성하였습니다. AP로는 raspberry-pi3를, UAV로는 3DR X8+ 모델을, GCS로는 Mission Planner를 사용했습니다. 사용했던 드론은 pixhawk 기반이라 MAVLink 통신을 했습니다.

결론

결론적으로 본 논문에서 수행한 공격은 다음과 같습니다.
Information Leak
ICMP flooding
packet injection experiments
실제로 다음 공격이 성공적으로 수행이 되는 것을 확인할 수 있었고, 추가적인 공격이 가능할 것으로 예상하며 논문은 마무리됩니다.
드론에 대하여 실질적인 공격을 했다는 부분에서 의미있고, 재미있었던 논문같습니다! 끝~

3. Reference