RubberDuck o que é, e como fazer um com o seu Arduino Leonardo (ou com esp32, RP Pico e etc)

Se vocês pensam que nós fomos embora, nós enganemos vocês, fingimos que fomos e voltemos, òi nóis aqui traveis.

Como sempre peguei um hiato grande nos posts do blog, mas estamos de volta e hoje vamos falar de uma ferramenta que os hackermans adoram e que é extremamente fácil e útil de fazer, o famoso RubberDuck.

Mas antes...

Um Disclaimer


Antes de começar a falar sobre o RubberDuck, é importante dizer que este post é puramente informativo, você pode usar as informações aqui contidas para fins educacionais, de segurança ou para facilitar o seu dia a dia, mas não me responsabilizo por qualquer uso indevido das informações aqui existentes.


O que é um RubberDuck?


O RubberDuck é um dispositivo que é feito para parecer muito com um pendrive comum, mas que pode emular um teclado ou mouse e executar diferentes comandos no momento em que é conectado a um hardware.

Ele é muito utilizado para automação de tarefas, testes de segurança e até mesmo para ataques de acessos físicos ou engenharia social.


Responsive image

Sim o RubberDuck é uma metonímia, que é uma palavra difícil para dizer que uma marca ficou tão grande que o nome do produto virou sinônimo do produto em si, como é o caso da Gillette, Bombril e Xerox.
O nome de dispositivos que fazem o que o RubberDuck faz de maneira genérica são BadUSBs ou keystroke injectiors.


Como fazer o seu RubberDuck (ou BadUSB)?


Para fazer o seu RubberDuck você vai precisar de um microcontrolador que possa emular um teclado e a parte legal é que quase todos os microcontroladores modernos podem fazer isso, como o ESP32, Raspberry Pi Pico, ATmega32u4 (que é o micro controlador do Arduino Leonardo, Micro e Pro Micro), attiny85 (que é o microcontrolador do Digispark) e muitos outros.

Aqui vou usar a Arduino IDE para programar um Arduino Leonardo.

Abrindo a Arduino IDE, vamos apertar "ctrl + shif + i" para abrir o gerenciador de bibliotecas e vamos instalar a biblioteca "Keyboard" que é a biblioteca que vamos usar para emular o teclado.

Feito isso vamos para o código, que é bem simples:

#include "Keyboard.h"

void setup() {
  Keyboard.begin();
}

void loop() {
    delay(1000);

    // Pressiona a tecla do Windows
    Keyboard.press(KEY_LEFT_GUI); // ou Keyboard.press(KEY_RIGHT_GUI); dependendo do teclado
    delay(100);
    // Solta a tecla do Windows
    Keyboard.release(KEY_LEFT_GUI); // ou Keyboard.release(KEY_RIGHT_GUI); dependendo do teclado

    delay(1000);

    Keyboard.print("Hyper");

    delay(1500);

    // Pressiona a tecla Control e 1
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press(49);
    delay(100);
    // SOlta as teclas Control e 1
    Keyboard.releaseAll();

    delay(2000);

    Keyboard.println("cowsay Hack_The_Planet");

    delay(200000);
}

Esse código faz o seguinte:
1. Pressiona a tecla do Windows
2. Digita "Hyper"
3. Pressiona a tecla Control e 1
4. Digita "cowsay Hack_The_Planet"


Responsive image

Lógico que você pode fazer muito mais do que isso, mas esse é um exemplo simples de como você pode fazer um RubberDuck.

E como eu disse antes, você pode usar qualquer microcontrolador que possa emular um teclado, então você pode fazer um RubberDuck com um ESP32, Raspberry Pi Pico, Digispark, etc.


Isso é tudo pessoal


Eu sei, esse foi um post pequeno, mas eu precisava sair do hiato de alguma forma e achei que esse post seria uma forma legal de fazer isso.

Logo eu volto aqui com mais posts e mais projetos, então fiquem ligados.

Até a próxima.