2014 i Segundo Laboratorio

4
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA CURSO DE TELEMÁTICA PRACTICA No 2 301120 - TELEMÁTICA Eleonora Palta Velasco (Director Nacional) POPAYÁN

Transcript of 2014 i Segundo Laboratorio

Page 1: 2014 i Segundo Laboratorio

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA

ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA CURSO DE TELEMÁTICA

PRACTICA No 2

301120 - TELEMÁTICA Eleonora Palta Velasco

(Director Nacional)

POPAYÁN

Page 2: 2014 i Segundo Laboratorio

PRACTICA No 2

En este laboratorio vamos a abordar los Posibles usos del Netcat:

Se desconoce el gran abanico de posibilidades que permite NetCat, de ahí que se le conoce como Navaja Suiza

Transferencia de archivos

Pasar un binario Relays utilizando netcat

Utilizando Netcat como scanner de puertos

Esta práctica consiste en pasar archivos de un host a otro utilizando Netcat para ello seguimos los siguientes pasos:

Elegimos un equipo cliente y un equipo servidor

En un equipo servidor: digitamos Código: # netcat -l -p 5050 > pass.txt En un equipo cliente: digitamos Código: # cat pass.txt | netcat ip_server 5050

Ahora vamos a pasar un binario (un ejecutable, un simple fichero

openoffice,...).

En un equipo servidor: digitamos Código: # netcat -l -p 5050 > ej.odt En un equipo cliente: digitamos Código: # cat salida.odt | netcat ip_server

5050

Y ahora comprobemos (suponiendo que el ejemplo lo hemos hecho en la misma máquina):

Digitamos Código: # diff ej.odt salida.odt #

Como vemos, no hay NINGUNA diferencia, así que podremos transmitir binarios sin problemas.

Relays utilizando netcat:

Para este ejercicio necesitaremos 3 máquinas distintas. Crearemos un relay en

la máquina Linux utilizando un netcat ejecutándose en modo de escucha y como cliente.

Este reenvío dirigirá los datos de una primera máquina(A) hacia otra(B).

Page 3: 2014 i Segundo Laboratorio

Esta máquina de reenvío conectará una primera máquina ejecutando un netcat

en modo cliente con una tercera (C) ejecutando netcat en modo servidor o escucha. Una vez establecido, el reenvío podría permitir el acceso a esta

última Máquina desde la máquina original.

El host intermedio hace de proxy, de forma que nosotros nos conectamos a el

y el nos conecta al servidor final, de esta forma conseguimos que sea más difícil rastrearnos, ya que en los logs del server aparecerá la Ip del host relay.

Obviamente cuantos más hosts intermedios usemos más difícil se hará la tarea

de rastrearnos.

Una manera de crear relays es unir la entrada y la salida de un cliente y servidor netcat utilizando un fichero especial denominado FIFO (First In, First

Out).

Podemos crear un fichero FIFO y utilizarlo para unir un netcat en modo servidor con un cliente con las siguientes órdenes:

Digitamos Código: # mknod backpipe p

# nc -l -p [puertoA] 0<backpipe | nc [IP_Destino] [Puerto_Destino] 1>backpipe

Donde el puerto A es el puerto donde escucha el relay y Puerto_Destino es el

puerto de la máquina destino (IP_Destino) donde hemos situado la puerta trasera con la shell. Es importante no poner espacios en las redirecciones

(>,<). Estas redirecciones permiten dirigir la entrada y salida estándar hacia backpipe y no pueden tener espacios junto a ellos.

Para que esto funcione es necesario que si tenemos un mecanismo de filtrado

de paquetes permitamos que el paso de los paquetes hacia la máquina C. Es posible que si tenemos activo iptables (que puede funcionar como un

cortafuegos) esto no esté permitido. Podemos desactivar ip tables del siguiente modo:

Digitamos Código: /etc/init.d/iptables stop

Bueno, pues manos a la obra, como dijimos, vamos a necesitar 3 máquinas (en mi caso, el propio host donde trabajo, y 2 máquinas virtuales), las IP's

son las siguientes:

Server: 192.168.1.129 Relay: 172.16.72.135

Page 4: 2014 i Segundo Laboratorio

Cliente: 172.16.72.136

En el Servidor, mediante netcat dejamos un puerto a la escucha con una shell de regalo:

Digitamos Código: # nc -l -p 5555

En el Relay, creamos la FIFO, y Digitamos Código: # mknod buffer p # netcat -l -p 1111 0<buffer | netcat 192.168.1.129 5555 1>buffer

Como se observa, primero creamos el buffer con ayuda de mknod, y después,

usamos este para unir la entrada estandart (que en este caso será lo que nos mande el cliente mediante netcat) con la conexión al Servidor y guardar de

nuevo la salida de esta última conexión en el buffer, que se reenviará al Cliente.

Finalmente, nos conectamos desde el cliente y observamos que tenemos la

shell con el Server:

Digitamos Código: # netcat 172.16.72.135 pwd

/home/XXXX

Para asegurarnos que la conexión desde el cliente hasta el servidor, ha sido

"enmascarada" por el relay, vemos en el Servidor las conexiones activas, flitrando por el puerto 5555 que es donde estábamos escuchando, y

obtenemos lo siguiente:

Digitamos Código:# sudo netstat -aveptn | grep 5555 tcp 0 0 192.168.1.129:5555 172.16.72.135:51220

ESTABLECIDO 1000 44068 9038/bash

Vemos que efectivamente alguien se ha conectado a nuestro puerto 5555, que tiene una shell (bash), y que la conexión proviene del Relay

(172.16.72.135:51220)

Utilizando Netcat como scanner de puertos

Código: # nc -vv 127.0.0.1 22-25

localhost [127.0.0.1] 25 (smtp) : Connection refused localhost [127.0.0.1] 24 (?) : Connection refused

localhost [127.0.0.1] 23 (telnet) : Connection refused localhost [127.0.0.1] 22 (ssh) open

SSH-2.0-OpenSSH_4.7p1 Debian