“Desde 2010, o USB Rubber Ducky é o favorito entre hackers, criminosos e profissionais de TI”. É assim que a empresa apresenta seu produto, à venda online por quase $50. A promessa do produto é também tentadora: “imagine que você poderia ir até um computador, conectar uma unidade USB aparentemente inocente e instalar uma backdoor, exfiltrar documentos, roubar senhas ou várias tarefas difíceis”. Instalar uma backdoor no computador da vítima sem chamar atenção, e a partir dele roubar dados, de forma simples, é a proposta maliciosa do produto. Entretanto, sobretudo atualmente, com o dólar nas alturas, o preço do Rubber Ducky pode não ser tão atrativo quanto suas facilidades.

Em agosto de 2016, uma postagem sobre o ESPUSB no site electronics-lab chamou a atenção para uma alternativa bem mais barata, e igualmente perigosa. No projeto, o perfil CNLohr implementa a pilha do protocolo USB para o ESP8266, possibilitando a utilização do ESP8266 tal como um mouse ou teclado. Tornando assim possível, utilizar o ESPUSB na criação de um Rubber Ducky WiFi de baixo custo, já que o modelo ESP12F costuma custar entre $1,00 e $2,00. Ou seja, além de bem mais barato, o dispositivo criado com o módulo WiFi ESP8266, pode ficar camuflado dentro de um mouse, por exemplo. Ressaltamos com isso, a importância para o cuidado com dispositivos inseguros e, principalmente desconhecidos; bem como com a entrada de pessoal não autorizado, ou visitantes, com acesso, mesmo que rápido e superficial, às máquinas da empresa. Instruir os funcionários para os perigos de dispositivos como estes, é essencial para que as medidas protetivas façam parte da rotina de trabalho dos colaboradores, estando todos atentos às possíveis falhas de segurança.

Apesar da simples execução, algumas dificuldades foram encontradas, tanto no momento de fazer o update do firmware, quanto na utilização do ESP8266 como USB. Sendo assim, detalharemos a seguir, os passos necessários para realizar o upload do firmware corretamente; já que o ESP8266, por padrão, não vem pronto para a realização do upload de firmware, como podemos observar a partir da imagem que ilustra o esquema elétrico da placa, a seguir:

Para fazer o upload do firmware foi utilizado um Arduino UNO, necessário para a comunicação serial; já a presença do CHIP Atmega328P não é necessária. Em seguida, é preciso ligar 5 resistores de 10k e fazer uma combinação de jumpers a fim de que se ative o modo de programação. No momento de realizar o upload do firmware, deve-se fazer o seguinte procedimento:

1 — Manter o botão de upload pressionado;

2 — Apertar e soltar o botão de reset;

3 — Iniciar o processo de upload do firmware descrito no Github do Espusb

4 — Após a conclusão do upload do firmware, soltar o botão de upload.

Lista de componentes utilizados:

5 (cinco) Resistores de 10k;
2 (dois)botões.

A imagem abaixo ilustra a ligação dos pinos no momento do upload:

Uma vez que o upload esteja concluído, é possível utilizar o ESPUSB com alguns componentes adicionais. O ESP8266 foi projetado para ser ligado em 3,3v, sendo que a porta USB utiliza 5v. Nesse caso, faz-se necessário utilizar dois diodos zener 1N4748, ligados em série, como reguladores de tensão.

Lista de componentes utilizados:

4 (quatro) Resistores de 10k;
1 (um) Resistor de 1k;
2 (dois) Diodos 1N4748.

As imagens a seguir ilustram o tamanho do ESP8266 após a soldagem dos componentes:

Um fato interessante é que não houve a necessidade de modificar o firmware original do Espusb, tendo em vista que toda a modificação foi realizada na interface WEB, o que facilitaria a execução de ataques utilizando o dispositivo.

Para executar os ataques, foi adotado o Ducky Script, que é uma linguagem de script própria para ser utilizada no Rubber Ducky. Os scripts podem ser modificados em qualquer editor de texto simples. Para manter a compatibilidade e facilitar a utilização, foi criado um interpretador de Ducky Script em javascript que pode ser utilizado, por exemplo, no navegador do celular para enviar a sequência de comandos para o Espusb plugado à máquina da vítima. O perigo dessa abordagem é que se pode deixar o Espusb/ESP8266 na máquina da vítima, enquanto se espera o momento ideal para fazer o ataque.

O ESP8266 é bastante pequeno e pode facilmente ser adicionado disfarçadamente em outros dispositivos USB comumente utilizados, como mouse e teclado. A imagem abaixo ilustra o ESP8266 dentro de um mouse.

Para comprovar o ataque, a próxima imagem ilustra a interface web contendo o Ducky Script responsável por executar uma shell reversa na máquina da vítima:

A seguir, a execução na máquina da vítima:

Para concluir, vejamos a execução completa, a seguir:

O código fonte está disponível no endereço https://github.com/tempestsecurity/Wifi-Ducky-ESPUSB

Referências

https://shop.hak5.org/products/usb-rubber-ducky-deluxe

https://www.electronics-lab.com/espusb-usb-software-stack-esp8266/

https://github.com/cnlohr/espusb

https://github.com/cnlohr/espusb/wiki/Getting-Started-Guide

https://www.clubedohardware.com.br/forums/topic/1206440-tutorial-esp8266-primeiros-passos-esp12-ide-ardu%C3%ADno/