Shells
Bind & Reverse Shells
Netcat Fundamentals
Netcat
Netcat (también conocido como TCP/IP Swiss Army Knife) es una utilidad de red que se utiliza para leer y escribir datos en conexiones de red mediante TCP o UDP.
Netcat está disponible para sistemas operativos *NIX y Windows, lo que lo hace extremadamente útil para interacciones entre plataformas.
Netcat utiliza una arquitectura de comunicación cliente-servidor con dos modos:
Modo cliente: Netcat se puede utilizar en modo cliente para conectarse a cualquier puerto TCP/UDP, así como a un receptor Netcat (servidor).
Modo servidor: Netcat se puede utilizar para escuchar conexiones de clientes en un puerto específico.
Los evaluadores de penetración pueden utilizar Netcat para realizar las siguientes funciones:
Banner Grabbing
Port Scanning
Transferring Files
Bind/Reverse Shells
Demo: Netcat Fundamentals
Netcat, también conocido como nc
, es una herramienta versátil que los evaluadores de penetración y administradores de sistemas utilizan para realizar diversas tareas de red, como banner grabbing, escaneo de puertos, transferencia de archivos y configuración de shells bind/reverse. A continuación, se presentan algunos fundamentos y comandos básicos de Netcat.
Ver la documentación de Netcat
Para obtener una lista rápida de las opciones y usos de Netcat, puede usar el siguiente comando:
Para una documentación más detallada, se puede consultar el manual (man
):
Aumentar la información de salida
El parámetro -v
aumenta la verbosidad de la salida, proporcionando más información sobre el estado de las conexiones y otras acciones realizadas:
Conexión a puertos UDP
Para establecer una conexión a puertos utilizando el protocolo UDP, se puede usar el parámetro -u
:
Ver y enlazar una conexión
El parámetro -l
permite a Netcat escuchar en el puerto especificado, actuando como un servidor:
Deshabilitar la resolución DNS
El parámetro -n
deshabilita la resolución de nombres DNS, lo que puede acelerar las conexiones al no intentar resolver la dirección IP:
Ejecución de comandos específicos
Netcat puede ejecutar comandos específicos al recibir una conexión, usando el parámetro -e
:
Conexión a un puerto específico
Para conectar Netcat a un puerto específico en una máquina, se pueden utilizar comandos como los siguientes:
Obtener estado de la conexión
Es útil verificar el estado de los servicios en diferentes puertos. Aquí hay ejemplos con los puertos FTP y SSH:
Conexión UDP a un puerto específico
Para realizar conexiones a puertos específicos usando UDP, se utiliza el parámetro -u
junto con la opción de no resolver nombres DNS:
Transferencia del Archivo NC
Netcat ya viene pre-empaquetado en Kali . Aquí se muestra un ejemplo para el envio del archivo nc.exe de Kali Linux a Windows.
Kali Linux
En Kali, se debe de identificar el paquete de nc.exe y posterior a ellos se puede utilizar uno de los metodos de transferencia como lo es http por lo cual puede configurar un servidor HTTP simple:
Windows
En Windows, se puede descargar
nc.exe
utilizando el comandocertutil
y luego ver la ayuda de Netcat:
Configurar una conexión cliente/servidor
Para configurar una conexión de tipo cliente/servidor, puede hacer lo siguiente:
Kali Linux como servidor
Windows como cliente
Sentido inversoTambién puede configurar una conexión inversa, donde el cliente se convierte en servidor y viceversa:
Windows como servidor
Kali Linux como cliente
Configuración de un oyente UDP
Configurar un oyente UDP es similar a configurar uno TCP, pero considere que UDP es un protocolo sin conexión y no permite la transmisión de texto de manera confiable:
Transferencia de archivos
Netcat también se puede utilizar para transferir archivos entre sistemas. Aquí hay un ejemplo de cómo transferir un archivo de Kali Linux a Windows y viceversa:
Ejemplo de Kali a Windows
Primero, cree un archivo para transferir:
En el sistema Windows, prepare el oyente para recibir el archivo:
En Kali Linux, envíe el archivo:
Ejemplo de Windows a KaliCrear un archivo en Windows
En Kali Linux, escuche para recibir el archivo:
Enviar el archivo desde Windows a Kali:
Estos son solo algunos de los muchos usos de Netcat. La herramienta es increíblemente poderosa y flexible, permitiendo a los usuarios realizar una variedad de tareas de red con facilidad y eficiencia.
Quiz: Netcat Fundamentals
Bind Shells
Un shell de enlace es un tipo de shell remoto en el que el atacante se conecta directamente a un receptor en el sistema de destino, lo que permite la ejecución de comandos en el sistema de destino.
Se puede configurar un receptor Netcat para que ejecute un ejecutable específico como cmd.exe o /bin/bash cuando un cliente se conecta al receptor. Tener en cuenta que en windows podria ser un cmd.exe y powershell.exe y en linux podria ser un shell, /bin/bash, /bin/bash, etc.
Demo: Bind Shells
En esta demostración, configuraremos un shell de enlace utilizando Netcat tanto en sistemas Windows como en Linux.
Configuración en Windows
Inicie Netcat en el sistema de destino:
Esto abrirá un puerto de escucha (en este caso 1234) y ejecutará
cmd.exe
cuando se establezca una conexión.Conexión desde el sistema atacante:
Configuración en Linux
Inicie Netcat en el sistema de destino:
Esto abrirá un puerto de escucha (en este caso 1234) y ejecutará
/bin/bash
cuando se establezca una conexión.Conexión desde el sistema atacante:
Estas configuraciones permiten al atacante ejecutar comandos de forma remota en el sistema de destino.
Quiz: Bind Shells
Reverse Shells
Un shell inverso es un tipo de shell remoto donde el objetivo se conecta directamente a un oyente en el sistema del atacante, lo que permite la ejecución de comandos en el sistema objetivo.
Demo: Reverse Shells
A continuación, se muestra un ejemplo de cómo iniciar un shell inverso utilizando netcat
.
Paso 1: Configurar el Oyente en el Sistema del Atacante
En el sistema atacante, ejecute el siguiente comando para iniciar un oyente en el puerto 4444:
Paso 2: Ejecutar el Shell Inverso en el Sistema Objetivo
En el sistema objetivo, ejecute el siguiente comando para conectarse al oyente del atacante:
Una vez conectado, el atacante tendrá una shell remota en el sistema objetivo.
Quiz: Reverse Shells
Reverse Shell Cheatsheet
Un Reverse Shell Cheatsheet es una guía rápida con comandos y scripts utilizados para establecer una conexión inversa desde el sistema objetivo hacia el atacante. Esta técnica se utiliza en pruebas de seguridad y pentesting para obtener acceso remoto al sistema objetivo. Utilizando diversos lenguajes de programación y herramientas, como Bash, Python, Netcat, entre otros, se puede crear una conexión remota que permite al atacante ejecutar comandos en el sistema comprometido.
Bash
Netcat
Python
PHP
Perl
PowerShell
Demo: Reverse Shell Cheatsheet
Recursos
Quiz: Reverse Shell Cheatsheet
Last updated