HACKING
SCHOOL
Protege tus comunicaciones.
Túneles SSH, VPN y TLS(SSL)
Antonio F. Díaz
(afdiaz at ugr.es)
2015
Contenido
Introducción
SSH
Túneles SSH. Ej. VNC
Reencaminamiento (Forwarding)
Túneles remotos.
Reencaminamiento dinámico (Dynamic Port Forwarding)
Túneles HTTP
SOCAT
Redes Tor
VPN
VPN con SSH
OpenVPN
Creando servicios ocultos
Alternativas
TLS: Transport Layer Security (versión anterior: SSL)
Interceptando tráfico SSL
2
La comunicación:
Las aplicaciones y servicios procesan datos que no
suelen estar cifrados.
Las capas de comunicaciones deber ser rápidas y
ligeras.
Comunicación por defecto sin cifrar
Hardware / software: más sencillo.
Paquetes TCP/UDP, protocolos, perfectamente descritos
Entre nodos el tráfico puede circular por diversidad de
equipos y redes.
Redes Wifi permiten que el tráfico esté visible entre los
nodos que tienen acceso a dicha subred
3
¿Por qué hacer segura la
comunicación?
Multitud de herramientas de análisis de tráfico (Sniffers)
Genéricos
Específicos
Wireshark, Shark for Root (Android)
Iris (Windows)
XPLICO: http://www.xplico.org
Si la información es crítica,
hay que cifrar:
Aplicación
Capas de comunicaciones.
Ocultar el rastro
Origen, destino, protocolo
4
Recursos de conexión
Túneles
Encapsulan un protocolo sobre otro.
Permiten utilizar protocolos y aplicaciones ya existentes con un
número reducido de cambios.
Ej: Túneles sobre HTTP, Túneles SSH, Túneles SSL
Reencaminamiento de puertos
Acceso a puertos de otros equipos
VPN
Red privadas virtuales. Pueden permitir acceso completo.
Socks / Servidores Proxy
Protocolo para enrutar paquetes a través de un servidor Proxy.
Aplicaciones adaptadas: Clientes web, …
Permite filtrar por: usuarios, máquinas, hora, ...
ssh
5
¿Por qué son necesarios
túneles, VPNs, …?
Subredes privadas
Acceso hacia Internet
Acceso a nodos internos / Cortafuegos
Reencaminando puertos
Cortafuegos
ssh
6
Soluciones
NAT
VPN
Acceso transparente a los nodos.
7
Traducción de direcciones
De salida: S-NAT
De entrada: D-NAT
Reencaminamiento dinámico de puertos del enrutador
al cliente
UpnP: Internet Gateway dDevice
NAT-PMP: NAT Port Mapping Protocol
PCP: Port Control Protocol
Servidores proxy: Protocolos: SOCK4/SOCK5
Genéricos
Servidores con caché para HTTP (Squid)
Elementos de seguridad
Cifrado
Simétrico: AES, DES, IDEA, Blowfish, RC4
Rápido, robusto, menor número de bits para las llaves.
Asimétrico: RSA, DSA
Lento, mayor número de bits.
Gran ventaja: Llaves distintas cifrar/descifrar. Llave pública, llave
privada.
Ambos elementos se combinan:
Intercambio de llaves privadas (aleatorias) mediante cifrado
asimétrico.
Hash: SHA-256, SHA-512, Whirlpool, RDM-160, MD5 (Inseguro)
Algoritmos que devuelve un valor (firma) para una secuencia de valores de
entrada.
Checksum: Sumatoria valores módulo N. Muy sencillo. Poco fiable.
CRC: Comprobación de redundancia cíclica. Ej:CRC32. Comprobación integridad
Algoritmos robustos criptográficamente:
Evitar cómo manipular una secuencia que obtenga el mismo resultado
Evitar obtener información de la secuencia.
8
SSH (Secure Shell)
entre un cliente y servidor.
Protocolo que permite comunicar de forma segura
Conexión de terminal, transferencia de datos, ...
Mecanismos de autenticación
Password
Llave pública/privada: RSA y DSA
Implementación:
Linux: ssh (cliente), sshd (servidor)
Windows: putty (cliente), Freesshd (servidor)
Android: Connectbot
Puerto 22 (defecto)
Cliente
Servidor
ssh
[email protected]
9
¿Qué podemos hacer con SSH?
Conexión terminal segura
Reemplaza: telnet, rsh (inseguros)
Reencaminamiento puertos
Tráfico X (Gráficos Unix)
ssh -X ...
Acceso a repositorios: GIT, SVN
Intercambio de ficheros:
gftp, scp (Linux)
scp -rp
[email protected]:dir_y .
WinSCP (Windows)
Filezilla
Rsync
rsync -Cavuzn
[email protected]:/home/usuario/misdatos /home/usuario
sshfs: Acceso a ficheros remotos como sistema de ficheros
sudo apt-get install sshfs
sudo sshfs
[email protected]:/ /mnt/dir_x
sudo umount /mnt/dir_x
10
Creando claves públicas y privadas
La clave privada es secreta y permite autentificar al cliente.
Las claves se generan en el cliente.
La clave pública se copia en los nodos remotos (servidores) y
autorizarán el acceso al cliente que tenga la clave privada asociada.
ssh-keygen -t rsa
.ssh/id_rsa.pub ( fichero con clave pública)
.ssh/id_rsa (fichero con clave privada)
ssh-copy-id
[email protected]
script que copia la clave pública en el host remoto en el fichero
.ssh/authorized_keys
11
VNC (Virtual Network Computing)
http://www.realvnc.com (TightVNC, UltraVNC, Remmina)
Permite control remoto de ordenadores
Servidor: Ordenador a controlar remotamente
Cliente: Ordenador desde el que accedemos al sistema (Terminal)
Multiplataforma (Windows, Linux, Mac, Java, Android, etc)
Linux: Se puede utilizar diversos “Windows Manager”: GNOME,
Independencia Cliente – Servidor.
KDE, IceWM, …
Ocupa muy poco espacio.
Permite conexiones compartidas (varios clientes sobre un servidor)
Adaptable al ancho de banda disponible: Cambio de profundidad
Inconveniente: No cifra el tráfico Solución … Túneles SSL, SSH o
vídeo, compresión,…
VPN
12
Iniciando VNC
En el servidor:
vncserver :1
# Inicio servidor 1 (puerto 5901) puerto 59XX
script de inicio en $HOME/.vnc/xstartup
Otras opciones para el servidor:
vncserver –kill :1
vncpasswd
el password queda en $HOME/.vnc/passwd
Otros parámetros interesantes: -geometry -depth
# elimina el servidor 1
# cambio de password
En el cliente:
vncviewer servidor:1
# Inicia conexión con el servidor:1
Otras opciones para cliente:
vncviewer –shared servidor:1
vncviewer –listen 4722
# Conexión compartida
# Es el cliente el que escucha
13
Reencaminamiento de puerto local con
SSH (Ejemplo con VNC)
Ej. VNC
ssh –L 5905:localhost:5905 mifrontend.ugr.es
vncviewer localhost:5 (en el cliente)
5905
5905
mifrontend.ugr.es
ssh(22)
Es como si el puerto local “conecta” directamente con el nodo remoto
El reencaminamiento se puede desactivar en /etc/ssh/sshd_config
AllowTcpForwarding No
14
Reencaminamiento de puerto local con SSH
ssh –L puertoAA:hostBB:puertoBB hostSS
(-g para abrir 0.0.0.0:puertoAA en lugar de 127.0.0.1:puertoAA)
puertoAA
hostSS
hostBB
ssh(22)
Ej. VNC a un nodo detrás de un frontend
ssh –L 5905:192.168.2.3:5905 mifrontend.ugr.es
vncviewer localhost:5
puertoBB
5905
mifrontend.ugr.es
192.168.2.3
ssh(22)
5905
15
Forwarding con SSH
Crear el fichero $HOME/.ssh/config
Host mifrontend
Hostname mifrontend.ugr.es
User antonio
ServerAliveInterval 60
Host nodo3
ProxyCommand ssh mifronted nc 192.168.2.3 22
Ej. VNC directo a un nodo detrás de un frontend
ssh –L 5905:localhost:5905 nodo3
vncviewer localhost:5
Se puede acceder al nodo3 de forma transparente: scp, rsync, etc
192.168.2.3
mifrontend.ugr.es
5905
ssh(22)
5905
nodo3
16
Reencaminamiento de puerto remoto con
SSH (Ejemplo con VNC)
Ej. VNC
ssh –R 5905:localhost:5905 mifrontend.ugr.es
El escritorio local queda visible externamente
5905
mifrontend.ugr.es
5905
ssh(22)
Alguien que acceda al puerto 5905 de mifrontend.ugr.es
realmente accede al nodo
17
Reencaminamiento de puerto remoto con
SSH
ssh –R puertoAA:hostBB:puertoBB mifrontend.ugr.es
Permite acceder incluso a nodos que están dentro de la misma
subred interna.
hostBB
puertoBB
Mifrontend.ugr.es
puertoAA
ssh(22)
18
Combinando túneles locales y remotos con
SSH
ssh –R 5905:localhost:5905 mifrontend.ugr.es
Mifrontend.ugr.es
5905
ssh(22)
ssh –L 5905:localhost:5905 mifrontend.ugr.es
El escritorio local queda visible externamente
ssh(22)
5905
5905
19
Openport
Acceso remoto sin “mifrontend”
https://openport.io
Acceso gratuito limitado (tiempo/ 10 MB)
Para abrir un puerto al exterior:
openport 22
Pasar el enlace al nodo remoto para que se autorice el acceso a
Acceder al enlace web para autorizar el acceso (del cortafuegos
ioport.io:XXXX
openport.io)
ssh -pXXXX
[email protected]
Otra alternativa: (Utilizar Amazon EC2) (gratuito 1 año):
http://acooke.org/cute/ReverseRem0.html
20
Túneles SSH
en Windows (Putty)
Reencaminamiento local de un puerto:
Conf. VNC
Puerto local
5901
Puerto remoto
localhost:5901
Permite definir puertos:
Locales
Remotos
Dinámicos:Socks4/5
21
Opciones usuales para
clientes SSH
-p: Cambia el puerto (defecto:22)
-C: Compresión
-D puerto: Reencaminamiento dinámico
Servidor proxy
-X: Reencaminamiento X
22
Túneles HTTP (Httptunnel)
http://www.nocrew.org/software/httptunnel.html
(Linux gratis), (Windows gratis, versión algo antigua).
http://http-tunnel.sourceforge.net/
Suele haber configuraciones de cortafuegos bastante estrictas que sólo permiten el paso
del tráfico HTTP a sus clientes.
Permite establecer una conexión TCP de un puerto local a un puerto remoto encapsulado
sobre tráfico HTTP.
Permite atravesar proxy-cache.
Se suele utilizar en combinación con otro software de VPN para interconectar redes.
Limitación: Sólo se puede abrir una conexión contra el servidor activado.
Otras alternativas:
Software propietario, crea una VPN con tráfico cifrado lo que permite utilizar diversos programas.
OpenVPN
http://www.bypass.cc/
http://www.http-tunnel.com/html/
(Multiplataforma, Gratis (baja velocidad))
Sólo Windows, Gratis (baja velocidad)
23
Configurando HTTPTunnel
Cliente
htc -- forward-port 4320 maquina.ugr.es:80
Si el cliente está detrás de un proxy:
htc --
Comentarios de: Protege tus comunicaciones. Túneles SSH, VPN y TLS(SSL) - HACKING SCHOOL (0)
No hay comentarios