Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Actividades Tema 3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

Seguridad y Alta Disponibilidad Manuel Castaño Guillén

A.S.I.R. on-line IES Suárez de Figueroa

Actividad: Captura del tráfico de red con Wireshark

Wireshark es una herramienta que permite capturar y analizar el tráfico de red, para usarlo desde
la máquina Kali basta con acceder al grupo “Sniffing & Spoofing” del menú de aplicaciones.
Para comenzar la captura en “eth0” como muestra la siguiente imagen basta con pulsar el primer
icono, para parar pulsamos el segundo icono, y para capturar solo determinados paquetes usamos
el filtro (por ejemplo, para capturar el tráfico de un equipo usamos ip.addr == ipequipo, para
capturar el http, usamos el filtro tcp port 80):

Ejemplo de captura: Solicitar una web (http://www.suarezdefigueroa.es) y analizar el tráfico tcp


por el puerto 80 (http).
Dos opciones:
• Poner el filtro desde el inicio (tcp port 80)
• Filtrar después los contenidos (tcp port 80)
Paramos la captura en el segundo icono, el cuadrado.
Podemos observar en la siguiente pantalla la secuencia grabada:

Se hace una petición desde el equipo 192.168.0.59


(nuestra máquina Kali) y el destino es 88.27.253.103
(www.suarezdefigueroa.es). Los primeros paquetes
son la negociación para el establecimiento de una
conexión TCP (los ya estudiados que se muestran en
la imagen lateral). Paquetes 8 ,9 y 10.
El paquete 11 es la petición HTTP solicitando la
página web.
Y avanzando un poco más el paquete 19 de respuesta del servidor mostrando:

1
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

La encapsulación del modelo TCP-IP, donde el protocolo http contiene el texto html de la web
en el nivel inferior, este es encapsulado por el protocolo TCP (puertos 80 y 54476), a su vez
este es encapsulado en el protocolo IP (88.27.253.103 y 192.168.0.59), por ultimo aparecen las
MAC que encapsulan al protocolo IP.

El final es la negociación del protocolo TCP


para la desconexión (los ya estudiados en
redes que se muestran en la imagen lateral)
Podemos ver varios FIN, ACK desde diferentes
puertos, esto es debido a que no solamente se
descarga el código html de la página si no que
se realizan múltiples peticiones paralelas (las
imágenes, las hojas de estilos, …)

Actividad: Ejemplos de filtrado de tráfico en wireshark


IP origen: ip.addr== ip de origen
IP destino: ip.dst == ip de destino
Todo el tráfico menos ARP: not ARP
IP origen e IP destino: ip.addr == ip de origen && ip.dst == ip de destino
Puerto TCP (tanto origen como destino): tcp.port == puerto
Puerto TCP o UDP (tanto origen como destino): tcp.port== puerto || udp.port == puerto
IP Origen y puertos destino diferentes 80 y 443: ip.addr==iporigen && not tcp.port in {80 443}
Filtrar el tráfico solo http: http Filtrar el tráfico solo ftp: ftp
Filtrar los envíos mediante el método POST dentro del protocolo http:
http.request.method==POST

Actividad: Análisis de una “conversación” con Wireshark


Vamos a conectarnos a una página no segura (http) que solicite usuario y contraseña:

Filtramos el envío de información por el método post:

Después seguimos la secuencia http (botón derecho):

2
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Analizando el envío de información que realiza el cliente podemos ver dos variables enviadas:
email y password junto con sus valores: correo@correo.es y clave

Conclusión: Evitar siempre comunicaciones que no usen protocolos seguros

Sustituir HTTP por HTTPS, telnet por SSH, …

Actividad: Crear una VPN con dos equipos Windows.


En este caso vamos a realizar una conexión punto a punto entre un equipo (cliente) y un servidor

En el servidor accedemos a “Panel de control\Redes e Internet\Conexiones de red”, al pulsar


la tecla “Alt” aparecerá un menú oculto, creamos una nueva conexión entrante, se pueden
añadir usuarios a los ya existentes del sistema como se muestra en la imagen.

En la siguiente pantalla indicamos que los usuarios se conectarán a través de internet

El siguiente paso es configurar las IPs que se asignarán a los clientes y permitirles que accedan
a la red local

3
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Para finalizar pulsamos el botón permitir acceso y abrir el puerto TCP 1723 en el router de casa
y en firewall de Windows:

En el cliente:
1. en la opción “Panel de control\Todos los elementos de Panel de control\Centro de redes
y recursos compartidos” se crea una nueva conexión de red o en la Configuración de red:

2. Ponemos la IP o por comodidad podemos usar un servicio DNS dinámico

4
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

3. Para comprobar que la conexión se ha establecido se puede probar con el comando


ipconfig donde aparecerá una nueva conexión con la IP del tipo 192.168.2.100 o las
conexiones de red en el cliente:

También se puede comprobar las conexiones de red en el servidor:

Actividad: Crear una VPN para conectar desde el exterior a nuestra casa poniendo un router-NAT
con dd-wrt como servidor VPN y como cliente un equipo con Windows.

También en este caso se trata de una VPN de acceso remoto, donde el cliente es un PC y el
servidor es el router.
Normalmente los router-ADSL no disponen de opciones para crear VPN por lo que se necesita un
router-NAT con dd-wrt que haga de servidor VPN y para conectar se puede usar cualquier PC que
haga de cliente VPN.
Para configurar el router NAT habrá que activar el servicio VPN (PPTP Server: Enable), poner la
IP WAN del router como IP del servidor VPN (192.168.1.100), indicar que IPs se asignarán a los
clientes (192.168.2.100 hasta 192.168.2.200) y el usuario y clave para conectar.
Además habrá que abrir los puertos correspondientes en el router ADSL (TCP 1723)

5
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

El esquema de dispositivo es similar al siguiente:

Para conectar desde el cliente Windows es igual que en la actividad anterior.

Actividad: Instalar un servidor SSH en Ubuntu y conectar con putty.


Al instalar la versión server de Ubuntu podemos marcar la instalación del servidor OpenSSH

Si ya tenemos instalado el servidor: apt-get install openssh-server


Si ponemos la máquina virtual en modo puente podemos probar con putty desde la máquina real.
Para saber la ip de la máquina virtual ip address (o en forma abreviada ip a).
Conectamos con putty:

Para comprobar que está en funcionamiento sudo service ssh status

6
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Actividad: Instalar un servidor web seguro


Podemos establecer conexiones en modo seguro con un servidor sin que nos exija cumplir ningún
requisito. El concepto seguro significaría que el servidor posee un certificado digital y que la
información circula encriptada mediante una clave pero desconociendo la identidad del cliente.
Utilizaremos una máquina virtual con Ubuntu-Server, el primer paso es instalar apache junto con
php para comprobar los datos del certificado.
apt-get install apache2 php libapache2-mod-php

Para comprobar la instalación, pues desde la máquina real conectamos directamente con la
máquina virtual, en el navegador tecleamos http://ip_de_la_máquina_virtual

Vamos a instalar una zona segura, para ello creamos una carpeta dentro /var/www/html, por
ejemplo, /var/www/html/segura y activamos el módulo ssl de apache y reiniciamos:
a2enmod ssl

Creamos una archivo info.php con el contenido: <?php phpinfo(); ?>, lo cargamos y
comprobamos si ssl está activo:

Vamos a obtener un certificado gratuito sslforfree.com de 90 días:

Nos solicitará un correo y una serie de datos sobre nuestro dominio:

Después de varias pantallas tenemos que validar que poseemos el dominio, lo podemos hacer a
través de un correo, un registro A de DNS o subiendo un fichero a nuestro dominio (optamos por
esta tercera):

7
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Una vez la empresa ZeroSSL ha verificado que hemos subido el fichero nos permite descargar el
certificado:

En el fichero zip tenemos 3 ficheros (ca_bundle.crt certificate.crt private.key) copiamos los 2


primeros ficheros a /etc/ssl y la clave privada a /etc/ssl/private
Por último tenemos que finalizar la configuración de apache, activamos el sitio ssl por defecto:
a2ensite default-ssl.conf

Editamos default-ssl.conf y activamos las siguientes líneas:


DocumentRoot /var/www/html/segura
SSLEngine on
SSLCertificateFile /etc/ssl/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
SSLCertificateChainFile /etc/ssl/ca_bundle.crt
Realizamos la prueba final:

8
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Actividad: Instalar un servidor web seguro que permita acceso con firma digital FNMT.
Son habituales las webs que requieren un registro previo del usuario en el que se le facilita un
nombre de usuario y contraseña que le serán requeridas siempre que intente acceder a un área
restringida del servidor. Disponiendo de un servidor seguro es posible exigir al cliente disponga
de un certificado digital (certificado de cliente) para acceder al área segura del servidor o algunos
de sus directorios

Descargamos los certificados raíz de la FNMT más usuales: AC Raíz FNMT-RCM, FNMT Clase 2 CA
y AC FNMT Usuarios, con estos nos bastará para la prueba. Ojo, los certificados tienen formato
DER y hay que pasarlos a PEM para poder utilizarlos en apache, para ello:

openssl x509 -in certificado_der -inform DER -out certificado_pem -outform PEM

Los combinamos todos en un solo fichero con cat o cortando y pegando todos en un solo fichero:
cat certificado1.crt certificado2.crt certificado3.crt > todos.crt

Editamos el fichero default-ssl.conf de nuevo y activamos las siguientes líneas:


SSLCACertificateFile /etc/apache2/certificados/todos.crt
SSLVerifyClient require
SSLVerifyDepth 2

En la carpeta segura vamos a colocar un fichero index.php con el siguiente contenido:

<?php echo "Aquí solo con firma digital"; ?><br>


<?php echo getenv("SSL_CLIENT_S_DN_CN"); ?>

Al navegar a https://suarezdefigueroa.es (o la IP de la máquina virtual con https://IP) nos


solicitará el certificado digital, deberemos aceptar el certificado de servidor, puesto que al ser
ficticio nos informará que no es de confianza:

El resultado mostrado en la página será:

Actividad: Instalación y funcionamiento de IDS Snort


Snort es uno de los sistemas de detección de intrusos más utilizados actualmente. En snort
configuramos una serie de reglas que indicarán sobre qué acciones queremos que reaccione, hay
por defecto activadas determinadas reglas. Snort analiza los paquetes que llegan a la red y toma
las medidas que le indiquemos.

Para instalar: apt-get install snort

9
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Durante la instalación nos pide la interface de escucha, la red a proteger, de todas formas
podemos cambiar la configuración en el fichero /etc/snort/snort.conf, donde tenemos los
párametros de configuración, estas son algunas de las líneas:

ipvar HOME_NET 172.23.160.0/24 – Red interna que se desea proteger o any para cualquiera
ipvar EXTERNAL_NET any – Red externa, se puede colocar una red especifica o any
include $RULE_PATH/…. Para activar unas determinadas reglas o comentar para desactivar
include $RULE_PATH/local.rules Para activar reglas creadas por nosotros mismos

Por ejemplo, las reglas que se ejecutarán cuando recibamos ping en la red interna están en
/etc/snort/rules/icmp.rules

Para arrancar snort (indicamos fichero de configuración, salida por consola e interface de
captura):
snort –c /etc/snort/snort.conf –A console –i enp0s3

-c indicar el fichero de configuración y arrancar en modo NDIS


-i indicar la interface de donde se obtienen los datos
-h indicar la red a analizar
-l carpeta para enviar a ficheros log los datos obtenidos
-A para indicar como se muestran las alertas (console se envían a la consola)

Para probar, podemos hacer ping desde la máquina real a la máquina virtual de Ubuntu, veremos
en pantalla que ha detectado el ping:

Snort responde aplicando las reglas por defecto que incorpora. Estas reglas están en la carpeta
/etc/snort/rules, por ejemplo si vemos el fichero icmp.rules observamos que ante los diferentes
ping (icmp) muestra mensajes (alert):

10
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Vamos a personalizar una regla local, la estructura de las reglas es:


<Accion> <Protocolo> <IP origen> <Puerto origen> <Operador> <IP destino> <Puerto destino
> (Opciones de la regla).

Acción: Es lo que se hará cuando ocurre una coincidencia:


• alert genera un mensaje y registro del paquete
• log únicamente registra el paquete
• pass ignora el paquete
• activate genera un mensaje de alerta y llama a una regla dinámica
• dynamic es la regla que se ejecuta desde la regla anterior
• drop bloquea y registra el paquete
• reject bloquea, registra y responde con un paquete RST o puerto inalcanzable para
terminar la conexión
• sdrop bloquea pero no registra
Protocolo: pueden ser TCP UDP ICMP IP
Operador: se utiliza para indicar la dirección del tráfico -> (de entrada al sistema) <> (en
ambas direcciones)
Opciones de la regla: va entre paréntesis, son palabras clave separadas por ; entre las más
habituales tenemos:
• msg mensaje que mostrará la alerta
• sid identificador de la regla
• rev revisión, también para identificar la regla
• content busca un contenido en el paquete
• flags busca en TCP banderas ACK…
• logto envía estas alertas a un fichero específico
Si la regla ocupa más de una línea se puede realizar un salto con \

Actividad: Ejercicio con IDS Snort de alertar de ping


Antes de continuar vamos a hacer una copia del fichero de configuración snort.conf por si
necesitamos comenzar de cero.
Vamos a empezar una detección sencilla, para ello vamos a comentar todas las líneas de include
$RULE_PATH… y quedaremos solo la línea de include $RULE_PATH/local.rules, de esta forma
solo nos avisará de las reglas indicadas en este fichero.
Editamos el fichero /etc/snort/rules/local.rules e indicamos que avise del ping:
alert icmp any any -> 192.168.1.143 any (msg:"Estan haciendo ping";sid:1000002)

11
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

En este caso hemos puesto en la regla cualquier origen (any) hacia (->) 192.168.1.143 ¿Por qué
avisa si el ping lo hemos hecho desde 192.168.1.143? Porque el ICMP es un protocolo que envía
una señal y finaliza cuando recibe la respuesta, por tanto, el funcionamiento se completa cuando
el procotolo ICMP ha comunicado en las dos direcciones.

Si no queremos una salida por pantalla podemos ejecutar snort con el parámetro – l para enviarlo
a una carpeta o también se puede enviar a una base de datos.
snort –c /etc/snort/snort.conf –l /var/log/carpertaregistro

Actividad: Ejercicio con IDS Snort de alertar de ftp anónimos


Continuando con los ejercicios anteriores vamos a quedar solo las reglas local.rules, en el fichero
incluiríamos únicamente la siguiente línea:

alert tcp any any <> $HOME_NET 21 (msg: “Acceso anónimo ftp”; \
content: “USER anonymous”; sid: 10000004)

Instalamos y arrancamos en la máquina Ubuntu un servidor vsftp: apt-get install vsftpd y después
service vsftpd start

Por ultimo ponemos a funcionar a snort con salida por consola:

Actividad: Con Snort alertar cuando se intente acceder desde una red externa a la zona restringida
de nuestro servidor web.

Instalamos apache: apt-get install apache2. Arrancamos el servicio: service start apache2.
Creamos una carpeta llamada reservada en /var/www/html y colocamos una página index.html
básica.
Editamos /etc/snort/snort.conf y definimos nuestra red:

Seguimos con todas los includes de reglas comentados y solo con nuestra local.rules activa que
sería:

alert tcp !$HOME_NET any -> 192.168.1.144 80 (msg:"Acceso a zona reservada desde el exterior”; \
content:"/reservada"; sid:1000005)

Para conectar desde el exterior abrimos el puerto 80 en el router a nuestra máquina virtual que
tiene la ip 192.168.1.144 y desde nuestro móvil sin wifi, por ejemplo, accedemos a la web
reservada:

Actividad: Ampliando Snort.


Avisar cuando algún usuario navega desde el servidor web:
alert tcp any 80 <> IP_servidor any (msg: “Navegando desde el servidor”; sid: 10000009)

Avisar cuando se establece conexión ssh con el servidor

12
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

alert tcp any any -> IP_servidor 22 (msg: “Conexión por ssh con el servidor”; sid: 10000010)

Las pruebas que hemos realizado en esta actividad


están hechas sobre la máquina virtual Ubuntu en
modo puente con la máquina real, evidentemente
con esta configuración solo detectamos los
ataques al propio equipo. Es muy importante
donde ubicar el sistema de detección de intrusos:
• En la entrada a nuestra red antes de
cortafuegos y otros dispositivos
• Si tenemos el tráfico encriptado mediante
protocolos seguros podemos optar por un
servidor proxy SSL de forma que el tráfico
que viene del exterior después de pasar el
cortafuegos y ser desencriptado sería
analizado por el IDS.

Evidentemente también podemos usar las reglas de snort que vienen ya definidas, por ejemplo,
vamos a probar un ataque de denegación de servicios y comprobar como snort aplica las reglas:
Activamos las reglas de DoS en snort.conf:

13
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Actividad: Honeyd
Vamos a realizar una práctica básica de con honeypot llamado honeyd con una máquina virtual
de kali. Ponemos la tarjeta de red en modo promiscuo.

Para la instalación seguimos los siguientes pasos (podemos crear una carpeta honeyd, nos
podemos colocar en la carpeta /etc para ejecutar los siguientes comandos):

• apt-get update
• apt-get install git
• git clone https://github.com/DataSoft/Honeyd
• apt-get install libevent-dev libdumbnet-dev libpcap-dev libpcre3-dev libedit-dev bison flex
libtool automake zlib1g-dev python

Compilación:

• cd Honeyd
• ./autogen.sh
• ./configure
• make
• sudo make install

En la carpeta /usr/share/honeyd ver ejemplos de configuración en config.sample (ejemplo para


honeyd.conf). En nmap.assoc vemos los perfiles de los equipos “ficticios” que podemos crear.
También tenemos una carpeta de scripts con las respuestas que los servicios “ficticios” van a dar
al atacante.

Algunos parámetros típicos del fichero de configuración son:


create <nombre> crea una plantilla, la plantilla llamada default marca los parámetros por
defecto.
set <nombre> personality “….” Indica el tipo de sistema que simulará la plantilla, se pueden
ver en nmap.assoc
set <nombre> protocolo action acción El protocolo puede ser udp, tcp, icmp, la acción puede
ser block (destruir y no responder) reset (responde con reset) open (responder)
add <nombre> protocolo port número script asocia un script a un puerto en concreto, estos
scritps pueden ser .sh (se ejecutan con sh …) .py (se ejecutan python …) .tcl (se ejecutan con
tclsh …)
set <nombre> ethernet “mac” asigna una MAC al equipo ficticio
bind ip <nombre> asigna una IP al equipo fictio

Como la instalación la hemos realizado en /etc/Honeyd vamos a esta carpeta y editamos un


sencillo fichero de configuración creamos una plantilla “win2k”, le asignamos un perfil Windows
2000 Server, por defecto los paquetes tcp son eliminados, pero en el caso de los paquetes tcp
destino 21 (ftp) y destino 80 (web) son atendidos por unos scripts facilitados en la instalación de
honeyd, le asociamos una IP que no esté en uso a la máquina ficticia (192.168.1.202) y una MAC.
Podríamos asignar la plantilla “win2k” a más de una IP.

Arrancamos honeyd. Para ejecutarlo – d (arrancar el demonio) –f (indicar fichero de


configuración):
honeyd –d –f honeyd.conf

Una vez arrancado, desde una máquina cliente accedemos a la web y al servicio ftp, como vemos
obtenemos respuesta en ambos casos (es la respuesta generada por los scripts indicados en la
configuración, no es un servicio web ni un servicio ftp reales):

14
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

El fichero de configuración simulando los 2 servicios en la ip 192.168.1.202 sería:

Actividad: Honeydrive
HoneyDrive es una suite orientada a varios honeypot viene en una máquina virtualizada que
descargamos en HoneyDrive Una vez importada la máquina en virtualbox ponemos la interface
en modo puente. En el escritorio hay un archivo readme.txt donde indica las herramientas
disponibles con los accesos, usuarios y contraseñas.

Kippo es uno de los honeypot, simula un servidor ssh, para ponerlo en funcionamiento siguiendo
las indicaciones del fichero readme desde el terminal:
cd /honeydrive/kippo
./start.sh

En el fichero README.txt vemos algunos datos para configurar kippo como los usuarios admitidos
y también que hay una conexión web para visualizar la información que captura kippo. En este
caso hemos putty desde la máquina real y nos intentamos conectar (la clave de root por defecto
es 123456), podemos ver en el entorno gráfico el registro de nuestros intentos:

15
Seguridad y Alta Disponibilidad Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa

Podemos personalizar este honeypot en el fichero /honeydrive/kippo/kippo.cfg por ejemplo:


hostname para prompt que verá el atacante, download_path directorio donde se guardan los
ficheros que descarga el atacante, filesystem_file es el sistema de fichero que verá el atacante,
etc.
Dionaea es otro honeypot, simula varios servidores, para arrancarla ejecutamos el script que nos
indica en el fichero readme:
/honeydrive/dionaea-vagrant/runDionaea.sh

Podemos hacer un escaneo de puertos con nmap y vemos que hay abiertos puertos
correspondientes a los servicios de ftp, http, …

También podemos activar un servicio web para registrar los accesos, en la carpeta
/honeydrive/DionaeaFR:

python manage.py collectstatic


python manage.py runserver 192.168.1.41:8000

Arrancamos la máquina Kali Linux y ejecutamos un análisis con legion de la IP del equipo
honeydrive (las dos máquinas están en modo puente para facilitar la prueba)
Consultamos la web 192.168.1.41:8000 para ver estos accesos:

El honeypot detecta y registra los accesos, pero legion también detecta que se trata de un
honeypot, por eso están siendo sustituidos estos honeynet por sistemas de decepción o engaño
más modernos que analizan y hacen un seguimiento del ataque desde un principio.

Actividad: T-pot
T-pot, es una suite similar a honeydrive, más moderna, que además ya tiene la opción de
instalación de sistemas de nueva generación para decepción o engaño. Descargamos el iso de
https://github.com/telekom-security/tpotce/releases, creamos una maquina virtual Ubuntu-64bit
con 8 Gb de RAM y 10 Gb de disco. Seleccionamos el tipo de instalación y la administración sería
via web:

16

También podría gustarte