dronepwn skyjack shell

Die dronepwn skyjack shell ist ein PoC um die Schwachstellen der Parrot AR 2.0 Elite auszunutzen.



Das Hauptziel dieses Projekts war, eine verbesserte Version von "Skyjack" zu implementieren. Neben dem automatischen Suchen, Übernehmen und Entführen von Drohnen wurden einige optionale Ziele, wie WPA Verschlüsselung des Drohnen Netzwerks oder senden eines Videos zur AR FreeFlight-App festgelegt, und auf ihre Umsetzbarkeit überprüft. Die resultierende "dronepwn skyjack shell" ist eine in Python 2 implementierte, modulare Attack-Suite für Parrot AR 2.0 Drohnen.


Verschiedene Modi auswählbar


Man kann diese entweder vollkommen autonom, semi-autonom oder manuell betreiben.


Im autonomen Modus sollte das Programm auf einem Raspberry Pi mit WiFi Dongle laufen. Dieser wird in der Nähe von Drohnen Hotspots plaziert und scannt passiv mittels Scapy die WiFi Netze. Findet sich ein AR Drohnen Access Point, verbindet sich das Python-Skript mit diesem und blockt den regulären Benutzer mittels IP-Tables. Danach wird die Drohne mittels vorgefertigter Flug-Routine entführt.


Im semi-autonomen Modus werden die gleichen Schritte wie bei autonomen Modus ausgeführt. Jedoch erhält der Angreifer nach Übernahme die manuelle Kontrolle der Drohne.


Im manuellen Modus erhält der Angreifer Zugriff auf eine Reihe von Features. So kann er, sofern er mit einem Drohnen Netzwerk verbunden ist, mit dem "shell"-Kommando eine Root Shell öffnen und Kommandos direkt auf der gekaperten Drohne ausführen. Dies gelingt durch eine Telnet-Session, welche Root-Zugang gewährt. Des weiteren ist es möglich, mittels "video"-Kommando ein vorab kompiliertes Video oder Bild direkt in die FreeFlight-App des Opfers zu senden.


Eigene Drohne blocken


Der Befehl "blockothers" wird dazu genutzt, alle IP-Adressen außer der eigenen von der Drohne auszusperren. Hierzu werden IP-Tables Regeln verwendet.


Eine Beschreibung aller Features findet sich unter https://github.com/dronepwn2k16/skyjack.


External Staff
David Schwaiger
Matteo Tomaselli
Tobias Specht
Tobias Dam
Julian Rauchberger
Runtime
01/31/2016 – 06/29/2016
Status
finished