
Um drone projetado para procurar, hackear e assumir autonomamente o controle total sem fio sobre quaisquer outros drones Parrot ou 3DR dentro do alcance sem fio ou de voo, criando um exército de drones zumbis sob seu controle.
SkyJack é um drone projetado para procurar autonomamente, hackear e assumir completamente, sem fio, o controle de quaisquer outros drones dentro do alcance sem fio ou de voo, criando um exército de drones zumbis sob seu controle.
Atualização: Prova de conceito do SkyJack para drones 3D Robotics usando chipsets TI CC1111 [Agosto de 2015]
A atualização usa um transceptor RF sub-GHz para prever o padrão de salto de frequência + ID dos módulos de telemetria 3DR, permitindo a tomada total remota de drones próximos, semelhante ao ataque ao Parrot (sem necessidade de wifi).
por @SamyKamkar // [email protected] // http://samy.pl // 2 de dezembro de 2013
Código disponível no github
Assista ao vídeo aqui
SkyJack - controle autônomo de drones
Hoje a Amazon anunciou que planeja usar drones não tripulados para entregar alguns pacotes aos clientes dentro de cinco anos. Legal! Quão divertido seria assumir o controle de drones carregando pacotes da Amazon… ou assumir o controle de quaisquer outros drones e torná-los meus pequenos drones zumbis. Impressionante.
Usando um Parrot AR.Drone 2, um Raspberry Pi, uma bateria USB, um transmissor sem fio Alfa AWUS036H, aircrack-ng, node-ar-drone, node.js e meu software SkyJack, desenvolvi um drone que voa por aí, procura o sinal sem fio de qualquer outro drone na área, desconecta à força a conexão sem fio do verdadeiro dono do drone alvo, autentica-se com o drone alvo fingindo ser seu dono e então envia comandos a ele e a todos os outros drones zumbis possuídos à minha vontade.
SkyJack também funciona no chão; nenhum drone é necessário do seu lado para que ele funcione. Você pode simplesmente executá-lo a partir da sua própria máquina Linux/Raspberry Pi/laptop/etc e sequestrar drones direto do céu.
Você pode obter o SkyJack do github: https://github.com/samyk/skyjack
SkyJack (disponível no github) é principalmente um aplicativo perl que roda em uma máquina Linux, executa o aircrack-ng para colocar o cartão wifi em modo monitor, detecta todas as redes sem fio e clientes ao redor, desativa qualquer cliente conectado aos Parrot AR.drones, conecta-se ao agora livre Parrot AR.Drone como seu dono e então usa node.js com node-ar-drone para controlar drones zumbis.
Eu detecto drones procurando por quaisquer conexões sem fio a partir de endereços MAC pertencentes à empresa Parrot, que você pode encontrar definidos na Registration Authority OUI.
Eu uso aircrack-ng para colocar nosso dispositivo sem fio em modo monitor para encontrar nossos drones e donos de drones. Em seguida, uso o aireplay-ng para desautenticar o verdadeiro dono do drone que estou almejando. Uma vez desautenticado, posso me conectar, pois o drone está aguardando seu dono se reconectar.
Eu uso node-ar-drone para controlar o drone recém-escravizado via Javascript e node.js.
O Parrot AR.Drone 2 é o drone que voa por aí procurando outros drones, controlado a partir de um iPhone, iPad ou Android, e também é o tipo de drone que o SkyJack procura para controlar. O SkyJack também é capaz de procurar o Parrot AR.Drone versão 1.
Os Parrots na verdade criam sua própria rede sem fio, que é como o dono do drone se conecta. Nós assumimos o controle desautenticando o dono e então nos conectando, já que o drone está esperando que seu dono se conecte novamente, explorando o fato de que destruímos temporariamente a conexão sem fio deles.
Eu uso um Raspberry Pi para conduzir o projeto, pois é barato, razoavelmente leve, tem USB e roda Linux.
Eu uso o cartão sem fio Alfa AWUS036H que suporta injeção de pacotes brutos e modo monitor, o que me permite desautenticar usuários que estão legitimamente conectados aos seus drones.
Eu também uso o adaptador USB sem fio Edimax EW-7811Un para que o SkyJack crie sua própria rede. Isso me permite conectar ao SkyJack a partir do meu laptop ou iPad e observar todos os outros drones enquanto estão sendo controlados.
Eu sugiro qualquer bateria USB que seja leve (menos de 100 gramas) e que possa fornecer cerca de um ampère (1000mAh). O Raspberry Pi + wifi provavelmente consumirá cerca disso. Você também pode possivelmente ligar três pilhas AAA juntas para obter cerca de 4,5V, o que seria um pouco mais leve, embora eu não tenha certeza de quanta corrente ela conseguirá fornecer.
Sinta-se à vontade para entrar em contato comigo com qualquer dúvida!
Você pode me encontrar em [email protected].
Siga @SamyKamkar no Twitter ou confira http://samy.pl para meus outros projetos.