Herramientas criptográficas
David Fernández Vaamonde <
[email protected]>
Jornadas de Criptografía Aplicada
Universidade da Coruña
Guión
1) Experimento: Peligros del sniffing
2) Experimento: Demostración de Esteganografía
3) Sesiones seguras: CryptCat y SSH
Netcat y CryptCat
SSH: Usos habituales
Llaves SSH
Tuneles SSH
Trucos y atajos de teclado
4) Redes Privadas Virtuales: OpenVPN
Concepto de red privada virtual
Alternativas OpenSource
OpenVPN
Túneles sin seguridad
Túneles con clave
Túneles con certificados
Tunning de OpenVPN
Peligros de sniffing
¿Que es el "sniffing"?
Intercepción de las comunicaciones a través del medio
Tipico en redes basadas en bus: Interfaces "promíscuos" (hubs)
El interfaz toma como suya cada trama de la red
Peligros del sniffing (y II)
¿Solo en topologías de BUS? ... NO
También se puede hacer sniffing en topologias en estrella (switchs)
Envenenamiento ARP (ARP Poissoning)
Se "envenena" la cache ARP del switch hacia la máquina objetivo.
Experimento: Peligros del sniffing
Herramientas:
Sniffit : Sniffer (modo promíscuo)
TCPDump : Visor de tráfico (modo promíscuo)
ArpSpoof (dSniff) : Envenenador de caches ARP
IPTraf : Visor "gráfico" de tráfico (modo promíscuo)
1er Experimento: Sniffit en una máquina para ver su tráfico
Uso de SSH, uso de telnet, uso de netcat y cryptcat
# sniffit -i eth0
2o Experimento: Sniffit y ARPspoof para envenenar la caché ARP
Uso de SSH, telnet, netcat, IPtraf
# arpspoof -t 192.168.0.2
# sniffit -i eth0
Experimento: Demostración de esteganografía
¿Qué es la esteganografía?
Del griego: "steganos" (encubierto) + "grafos" (escribir)
Criptografía: Su potencia es la de no poder comprender el mensaje.
Esteganografía: Su potencia es la de ni tan siquiera saber que este existe.
Escondemos mensajes en ristras de bits (generalmente imagenes o ficheros de audio),
estos podrán ser recuperados con una cierta clave.
Experimento: Demostración de esteganografía (y II)
¿Qué es la esteganografía?
Se intercala el mensaje en bits redundantes del objeto "huesped"
Se recupera en base a una clave dada
Se trata de que nadie sepa que en el objeto hay un mensaje oculto
Existe ataques de "criptografía diferencial", que se basan en la búsqueda repetitiva de
patrones en el objeto.
Experimento: Demostración de esteganografía (y III)
Uso de software esteganográfico:
Programa: steghide
Demostración... ¡LLevais toda la charla delante de ella!
Extracción de un texto:
# steghide extract -sf fondo.jpg
Creación de una imagen o audio esteganográfico:
# steghide embed -cf objeto -ef archivo
Herramientas de ataque: xsteg, stegdetect, stegbreak
Xsteg: frontend sobre las otras, distintos tipos de ataque
Sesiones seguras: Cryptcat
Cryptcat --> Versión segura de netcat
Netcat --> La "navaja suiza" de las redes ;)
Uso de NetCat:
Para escuchar en un puerto y sacar lo que entra a la entrada standard
# nc -l -p 4500
Para escribir en un puerto desde la entrada estandar
# nc localhost 4500
Sesiones seguras: Cryptcat (y II)
Algunos usos divertidos de Netcat:
# dd if=ficherito | nc localhost 4500
# nc -l -p 4500 > ficherito
Pero no va encriptado. Solución: cryptcat
# dd if=ficherito | cryptcat -k clave localhost 4500
# cryptcat -k clave -l -p 4500 > ficherito
Cryptcat nos da una capa encriptada para los "hacks" que se pueden hacer con netcat.
Sesiones seguras: SSH uso habitual
¿Qué es SSH?
Secure Shell: "¡Ah! Eso de conectarse seguro y tal..."
... NO, mentira, falso, caca!
SSH permite hacer una sesion interactiva segura, y mucho más.
Uso habitual:
# ssh davidfv@testral
# ssh davidfv@testral -v
# ssh testral
# scp davidfv@testral:fichero /home/davidfv
Sesiones seguras: Llaves SSH
Mecanismo:
Uso de llaves publicas para la autenticación
Uso de cifrado de clave pública:
Envío de una "llave de sesión" única y cifrada.
El cliente desbloquea la llave privada.
Se cifra con la llave publica del servidor y privada del cliente.
Si el servidor descifra la "llave de sesión", comienza la comunicación.
Beneficios del uso de llaves:
Se usa la clave de la llave privada y no la del usuario
Se acepta una llave concreta desde un equipo concreto.
Sesiones seguras: Llaves SSH (y II)
Generación de una llave:
# ssh-keygen -t dsa
Llaves: id_dsa, id_dsa.pub
Cliente:
Fichero "config"
Host testral
StrictHostKeyChecking ask
Servidor:
Copiamos .pub a .ssh del "servidor"
Añadimos .pub al fichero .ssh/authorized_keys
# cat id_dsa.pub >> authorized_keys
IdentityFile ~/.ssh/id_dsa
Sesiones seguras: Túneles SSH
Problemática:
Transmisión de datos en un medio inseguro: Internet
Intercepción de la comunicación
Suplantación de la comunicación
Figura de los "road-warrior"
Solución:
Túneles cifrados.
Sesiones seguras: Túneles SSH (y II)
Túneles SSH
Características:
Solución de tunel totalmente ad-hoc (para algo puntual)
Forwarding cifrado de puertos hacia la máquina local.
Opciones para tuneling:
Túnel encriptado para X (-X)
Túneles directos
Túneles inversos
Sesiones seguras: Túneles SSH (y III)
Túnel cifrado para X
Cifra conexiones de X
No es necesario exportar el display
Ha de estar permitido por el servidor
$ ssh -X davidfv@testral
Túnel directo
Forwarding de un puerto a local.
El cliente inicia la conexión.
$ ssh testral -L 8080:localhost:80
$ ssh testral -L 8080:sidh:80
Sesiones seguras: Túneles SSH ( y IV)
Túnel inverso
Forwarding de un puerto desde el servidor al cliente
Comentarios de: Herramientas criptográficas (0)
No hay comentarios