Ejemplos practicos cliente/Servidor con Netcat

Pequeños ejemplos ejemplos que te ayudaran a entender el modelo cliente/servidor utilizando netcat

Publicado por AlbertoBSD el 2020-07-04 01:11:01

Bueno antes que nada que nada este es un post para aquellos que se estén iniciando en el mundo de la seguridad informática, lo mostrado aqui entrar en un nivel muy basico, por lo cual si ya tienes conocimientos del tema es posible que el contenido aquí descrito ya lo domines en su totalidad

Si no sabes que es el modelo cliente/servidor favor de leer el link de https://es.wikipedia.org/wiki/Cliente-servidor

Los siguientes ejemplos se realizaron con la version de ncat que se instala juno con nmap mas informacion: https://nmap.org/

Chat entre 2 terminales en el mismo Host (Localhost)

El primer ejemplo requiere tener 2 terminales abiertas, una sera el servidor y la otra el cliente.

El codigo a ejecutar en la primera terminal (El servidor) es el siguiente:

ncat -l 10000

o

ncat -l localhost 10000

El parámetro -l es para "escuchar" en un puerto, es debido a la palabra en ingles listening por definición si una aplicación escucha en un puerto es considerada un "servidor" o una aplicación/programa que ofrece un servicio.

En la otra erminal tendremos que ejecutar el siguiente comando

ncat localhost 10000

Con lo cual tendremos 2 ventanas como se muestran en la imagen

Ahora lo que sea que se escriba en cualquiera de las ventanas se reflejara en la otra ventana de forma automática, como se muestra en la imagen a continuacion:

Conexión a una pagina WEB

En este ejemplo veremos parte de la comunicación del protocolo HTTP Utilizando netcat no entraremos a fondo en los detalles, solo es para que nos demos cuenta del potencial de la herramienta y a la vez entendamos que cada servicio en internet tiene su protocolo de comunicacion, tendremos que tener el siguiente texto en un archivo:

GET / HTTP/1.1
Host: albertobsd.dev
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/Accept-Encoding: gzip, deflate, br
Accept-Language: es-US,es;q=0.9,en-US;q=0.8,en;q=0.7,es-419;q=0.6


Noten que el texto tiene 2 lineas en blanco al final, en mi caso nombre el archivo como peticionGET.txt por lo cual para ejemplo mencionado sugiero que hagan lo mismo

Para ejemplo mencionado vamos desglosar y explicar un poco las lineas que estamos mandando al servidor:

GET / HTTP/1.1

En la linea anterior Estamos solicitando mediante el método GET, el archivo / o index de la pagina WEB

Host: albertobsd.dev

Es importante enviar el header Host especificando el host a pedir, ya que en un Servidores WEB compartidos este header le indicará al servidor que pagina de todos los dominios que tiene configurados debe de mandar.

El comando a ejecutar en windows seria el siguiente

type peticionGET.txt | ncat albertobsd.dev 80

Ahora si nos encontramos en un equipo linux deberemos de ejecutar:

cat peticionGET.txt | ncat albertobsd.dev 80

Si todo sale bien tendremos una salida similar a la siguiente:

Como vemos en el ejemplo anterior obtenemos una repuesta con Codigo 301, el cual nos indica que la pagina a sido movida al

Location: https://albertobsd.dev/

Lo cual se puede interpretar como redirección de HTTP a HTTPS

Con estos ejemplos se intenta mostrar prácticamente el modelo cliente/servidor y un poco del protocolo HTTP


Saludos!