USB Rubber Ducky - Roubando dados via USB com Arduino e Digispark - Security Attack
Rubber Ducky é uma ferramenta bem interessante para engenharia social, em poucas palavras, é uma ferramenta disfarçada de "pendrive" (na maioria das vezes) que faz uma injeção de teclas pré-definidas. Os computadores e alguns celulares reconhecem como um teclado normal e aceitam a carga de pressionamento de tecla, com isso você pode setar comandos para fazer uma conexão reversa, força bruta, injetar binários ou simplesmente automatizar uma tarefa.
Na versão produzida especificamente para isso, você carrega nele "payloads" que nada mais são que scripts que executam alguma tarefa. Ele no site oficial custa cerca de US $ 44,99, porém com taxas de importação e outros impostos fica no valor de R$ 500 reais no Brasil, salgado né? Portanto decidi ajudar vocês a criarem duas versões, apesar de ser uma técnica antiga muita gente tem problema na criação.
Exemplo de Payload que abre o bloco de notas e digita "Hello World"
Observações importantes antes da criação:
Não são todos os modelos de arduino que funcionarão, os que tiverem o controlador ATMEGA16U2 ou ATMEGA32U4 foram os que testei e funcionou.
Para controlador ATMEGA16U2 existe um tutorial do Vinicius do pythoneiro, deem uma olhada.
ALGUNS pendrives suportam, mas você terá que trocar o firmware e são bem caros os que funcionam. Nessa lista aqui você pode ver alguns.
Eu utilizo linux e tive problemas com algumas bibliotecas na IDE do arduino quando instalei via gerenciador de pacotes (apt-get), minha dica é que baixem diretamente do site a IDE.
No tutorial, utilizo também o Digispark que é uma Placa de Desenvolvimento parecido com o arduino, com um custo bem baixo. É uma ótima alternativa.
O produto direto do fabricante tem entrada para MicroSD, para capturar alguns logs e gravar no dispositivo, é possível adicionar o módulo de MicroSD no arduino ou comprar uma versão do digispark com módulo de MicroSD integrado.
Lista de exemplos de payloads para você utilizar.
Utilizando o arduino Leonardo
Comprei o meu arduino no Aliexpress, demorou um tempo, mas eu não tava com pressa e vocês devem encontrar o mesmo modelo na sua cidade. Para esse tutorial você só precisa da IDE do Arduino e do próprio arduino.
Abra o site Duckuino e digite o payload na linguagem do Rubber Ducky, como no exemplo a seguir:
Conecte o arduino na porta USB, abra a IDE, cole o código gerado pelo Duckuino, selecione a placa Arduino Leonardo (Como na imagem a seguir) e carregue o código.
Utilizando o Digispark
Também fiz a compra do meu Digispark no Aliexpress, ele é uma placa de desenvolvimento baseada no microcontrolador Attiny85 semelhante à linha Arduino, só que mais barato, menor e um pouco menos potente.
O primeiro passo é adicionar as bibliotecas do Digispark na IDE do Arduino, para isso basta ir em "Arquivo > Preferências" e colar a seguinte URL: http://digistump.com/package_digistump_index.json.
Depois vocë tem que ir em "Sketch > Incluir Biblioteca > Gerenciar Bibliotecas", pesquisar por Digispark e instale o Digistump AVR Boards.
Vá em ferramentas e defina o Digispark como a placa padrão.
A parte de conversão é "a mais complicada", mas para nos auxiliar utilizaremos um projeto chamado duck2spark.
2. Salve seu payload com o nome example.duck
3. Rode o script "sh example.sh" e será criado um arquivo chamado example.ino, abra ele com a IDE do Arduino e lá estará seu código apenas para você fazer o carregamento para o Digispark.
Eu ainda não testei a versão comprada diretamente do fabricante, porém com o Digispark não tive uma performance muito boa quando colocado no PC, testei no celular e foi um pouco melhor. O USB Rubber Ducky pode ser usado dentro de um mouse, a sua imaginação é o limite. Seguem dois vídeos, para representar uma demonstração de cada um. Qualquer dúvida é só deixar nos comentários!