Antes de que cojas y utilices el primer servicio proxy o VPN que te salga anunciado en Google te recomiendo que leas este post donde trataremos aquello que debes saber sobre tipos de proxy, protocolos VPN y el uso de Tor con relación a la seguridad y el anonimato, además de mostrar como proxificar cualquier conexión TCP con ProxyChains.
Tipos de proxys
Web-Based Proxy
También conocidos como CGIProxy (Common Gateway Interface), este tipo de proxys no requieren de configuración en el cliente y son utilizados en sitios web que permiten acceder a contenidos de terceros. Normalmente, ocultan la dirección IP del usuario y cifran el tráfico aportando confidencialidad, aunque con estos proxys algunas páginas pueden no mostrarse correctamente. Listado de web proxys
Estos proxys nos permiten navegar usando una web como pasarela, por lo que en principio en la web objetivo no se pasara información de la identidad real en las cabeceras, pero hay que tener en cuenta que el servidor proxy conocerá nuestra IP y mantendrá información de la sesión mediante el uso de cookies. Si al utilizar este tipo de proxy tenéis duda sobre que información se almacena en las cookies podéis usar https://cookiedatabase.org para consultarlo.
Open Proxies
En este tipo el cliente debe configurar los datos del proxy, tras eso la navegación es transparente. Distinguimos principalmente dos tipos de open proxy según el protocolo:
- HTTP: Utiliza el protocolo HTTP para comunicarse con el proxy, al utilizar HTTP el tráfico está en texto plano por lo que el proxy puede leer todo el tráfico. Listado con proxys
- SOCKS: Protocolo para manejar el tráfico a través de un servidor proxy. Se puede utilizar con prácticamente cualquier aplicación TCP / UDP. Proporciona un «firewall» simple porque verifica los paquetes entrantes/salientes y oculta las direcciones IP de las aplicaciones cliente. Es un protocolo de capa 5, lo que significa que no puede usarlo para hacer un túnel de protocolos que operan por debajo de la capa 5.
Las principales versiones del protocolo SOCKs son:
- SOCKs4 : No admite autenticación ni tráfico UDP que normalmente es utilizado para la resolución DNS, funciona únicamente con direcciones IP
- SOCKs4a: permite que un cliente especifique un nombre de dominio de destino en lugar de una dirección IP , útil cuando el propio cliente no puede resolver el nombre de dominio del host de destino a una dirección IP.
- SOCKs5: se trata de una extensión del protocolo SOCKs4, ofrece más opciones de autenticación y agrega soporte para IPv6 y UDP.
Un proxy SOCKs5 es más seguro porque establece una conexión TCP completa con autenticación y utiliza el método de túnel encriptado SSH para retransmitir el tráfico. Más información en https://sockslist.net/
Según el grado de anonimato que proporcionan lo podemos catalogar en:
- Transparente: Sin anonimato, añaden la cabecera HTTP_X_FORWARDED_FOR que incluye la dirección IP del cliente
- Ruidosos: Utilizan también la cabecera HTTP_X_FORWARDED_FOR, pero introducen ruido para que sea más difícil de rastrear
- Anonymous: No añaden la cabecera HTTP_X_FORWARDED_FOR
- High anonymous/Elite proxy: No incluye ninguna de las otras cabeceras que pudieran revelar la IP real del cliente como HTTP_X_FORWARDED_FOR, HTTP_VIA, HTTP_FORWARDED, HTTP_X_CLUSTER_CLIENT_IP, HTTP_CLIENT_IP, HTTP_PROXY_CONNECTION
A modo de resumen podemos ver la siguiente tabla:
Proxy | HTTP | HTTPS | TCP | UDP | REMOTE DNS | OCULTA IP | Cifrado entre usuario y proxy |
HTTP | Si | No | No | No | Si | Depende | No |
HTTPS | Si | Si | No | No | Si | Depende | No |
SOCKS4 | Si | Si | No | No | No | Si | No |
SOCKS4a | Si | Si | No | No | Si | Si | No |
SOCKS5 | Si | Si | No | Si | Si | Si | No |
CGI | Depende | Depende | No | No | Si | Depende | Depende |
TOR | Si | Si | Si | No | Si | Si | Si |
Arquitectura de conexión
En una conexión directa entre el host y el server quedará grabado en los logs del servidor la IP del host. Si utilizamos únicamente un proxy en el servidor quedará registrada la IP del proxy, pero en el servidor proxy quedará en los logs nuestra IP. Al emplear una cadena de proxys únicamente el proxy inicial conocerá nuestra dirección IP se añade ruido que dificulta seguir la conexión.
VPN
Una VPN (Virtual Private Network) es un tipo de software que permite establecer una conexión a internet mediante un túnel encriptado, se crea un túnel entre el equipo cliente y un servidor de la organización proveedora del servicio. Pasando a utilizar la dirección IP de la VPN y así enmascarar nuestra IP. La seguridad de la VPN depende principalmente del proveedor, el protocolo que se emplea y las políticas de privacidad.
El tráfico se cifra con una clave que solo es conocida por tu equipo y por la VPN, el servidor VPN ha de descifrar tus solicitudes para poder ejecutarlas. Las solicitudes se mantienen oculta del ISP, pero no se ocultan para la VPN. Por lo que interesa buscar servidores VPN que no almacenen registros, es decir, que utilicen un proceso de anonimización a nivel de servidor que se abstenga de almacenar información personal en los registros de conexión o los elimine por completo.
Existen distintos protocolos VPN principalmente tenemos OpenVPN, PPTP, L2TP/IPSec, IKEv2, Wireguard y SSTP. A la hora de elegir el protocolo hay que tener en cuenta que un nivel de cifrado más sofisticado protegerá más su conexión, pero no será tan rápido como un protocolo que utilice un cifrado menos seguro. OpenVPN agrega una capa adicional de encriptado, lo que hace que la comunicación sea mas lenta. WireGuard, no solo es más rápido que OpenVPN sino también más seguro, ya que emplea el nuevo cifrado ChaCha20. Por otro lado, PPTP actualmente no se considera seguro, puesto que para la autenticación usa el protocolo MS-CHAPv2 que reduce la dificultad de craqueo a descifrar una sola clave DES de 56 bits, aparte de emplear el algoritmo RC4 que no verifica la integridad de los datos. Con la herramienta ChapCrack se puede descifrar el cifrado de cualquier sesión PPTP que use MS-CHAPv2 para la autenticación.
Redes de anonimato: TOR
Las redes de anonimato permiten a sus usuarios comunicarse de forma anónima, usando cifrado por capas, existen varias redes de anonimato como I2P o Freenet, aunque la más conocida es la red Tor.
Tor protege al usuario enrutando su conexión a través de 3 relays (Onion Routers) que conforman un circuito y actúan como una cadena de proxys. Los paquetes enviados se cifran en capas utilizando Onion encription, de forma que cada Onion Router conoce únicamente su origen y destino inmediato. Al hacer rebotar sus comunicaciones sobre una red distribuida de relays se difumina la información de quien lo usa. Podemos consultar la lista de nodos de Tor en el siguiente enlace: https://metrics.torproject.org/rs.html
No es infalible, ya que tiene algunos puntos débiles:
- Cualquier persona puede correr un Onion Router, por lo que el usuario no tiene garantía de que el nodo no sea malicioso
- Si una persona consigue saber todos los nodos por los cuales ha viajado una conexión, puede seguirlos y averiguar de dónde procede el mensaje
- El enrutado anónimo no asegura que la entidad origen lo sea, protocolos de nivel superior pueden transmitir información (Ejemplo: Leaks vía JavaScript)
- La red Tor cifra la información a su entrada y la descifra a la salida, por lo que el propietario del nodo de salida, aunque no sepa la identidad si puede ver la información
Generalmente, los ataques contra la red Tor se basan en la correlación de puntos finales. Por ejemplo empleando un ataque de corelacción extremo-extremo pasivo, en donde un atacante controle el nodo inicial y el nodo de salida, es posible comprometer el anonimato. Según pruebas experimentales se puede probar que si es factible realizar ataques de correlación pasiva en la red Tor.
Tor Over VPN y VPN Over Tor
Consiste en la aplicación conjunta de Tor y un servicio de VPN
- Tor Over VPN: Consiste en lanzar Tor ya conectado a una VPN, este método evita que el proveedor de internet sepa que estamos accediendo a Tor, que el proveedor de VPN sepa el contenido ni el origen del tráfico (solo sabría que estamos conectados a Tor) y además el nodo de entrada de Tor vería la IP de la VPN. Hay que tener en cuenta que si enviamos tráfico sin cifrar el nodo de salida de Tor podrá ver la información
- VPN Over Tor: Consiste en ejecutar primero Tor y posteriormente la VPN, por lo que el tráfico se cifra después de conectarse a los nodos de Tor, el proveedor de VPN no cocerá tu IP real, aunque sabrá que estás usando Tor y en este caso el ISP no sabrá que utilizamos una VPN, pero si sabrá que utilizamos Tor. Es ideal para la compra anónima de bitcoins, ya que solo nos permite acceder a hidden services. Esta arquitectura de conexión es muy susceptible a los ataques de tiempo de extremo-extremo que se emplean para eliminar el anonimato de los usuarios de VPN y Tor al asociar las horas en que estuvieron conectados a dichos servicios de anonimato.
Comparción de servicios de anonimato y leaks:
NI: No instalado por defecto. DE: Desactivado incluso si está instalado. LEAK: Se revela la IP real
Software | HTML/CSS/FTP | Javascript | Java | Cifrado |
Whonix | OK | OK | NI DE OK | Si |
Tails | OK | OK | NI DE ? | Si |
Tor Browser | OK | OK | NI DE LEAK | Si |
Consideraciones adicionales de seguridad
- El uso de proxies adicionales con Tor brinda una seguridad adicional mínima, ya que como hemos comentado generalmente, los ataques contra Tor se basa en una correlación de puntos finales
- Cuidado con los DNS Leaks: Muchas veces, aunque naveguemos a través de una VPN con el tráfico cifrado, el ISP puede forzar a que usemos otros servidores DNS para que haya control sobre lo que resolvemos a nivel DNS. A su vez, si empleamos un proxy SOCKs las aplicaciones que no conozcan el túnel utilizara la biblioteca de resolución local DNS y, por lo tanto, probablemente haya fugas de DNS, en donde se filtre la IP real vía peticiones DNS. Para probar si tienes leaks de DNS puede usar el siguiente enlace https://www.dnsleaktest.com/
- Usa siempre Kill-switch: Se trata de una funcionalidad de las VPN que bloquea las conexiones salientes que no sean por el puerto del túnel VPN. Es importante habilitarla para evitar filtraciones de tráfico, en caso de desconexiones temporales de la VPN
Configurando proxychains
Proxychains es una herramienta que permite que cualquier conexión TCP hecha por un programa dado siga una serie de proxies hasta su destino. En proxychains distinguimos tres modos de funcionamiento:
- dynamic_chain: se utilizarán los proxies en el orden en el que aparecen en la lista, pero solo se encadenarán aquellos que se encuentren disponibles.
- strict_chain: se usarán los proxies en el orden en el que aparecen de forma estricta y todos tienen que estar disponibles. Si uno no lo está, no se podrá establecer conexión. Si uno de los proxies no responde, no se podrá establecer la comunicación:
- random_chain: se utilizarán los proxies con un orden aleatorio, de forma que si una combinación no responde a una petición, se utilizará otra combinación de proxies. La longitud de la cadena de proxies viene definida por la variable chain_len .
Ahora que ya conocemos los modos de funcionamiento, procedemos a instalar el software necesario
sudo apt-get install tor proxychains
Una vez instalado, ejecutamos el servicio de Tor
sudo service tor start && sudo service tor status
Modificamos el fichero de configuración de proxychains:
sudo nano /etc/proxychains.conf
Establecemos el modo de trabajo de dynamic_chains, descomentando la línea en la configuración y comentando la línea de strict_chains. Además añadiremos la siguiente línea para forzar a que las peticiones DNS se proxifiquen
#Modo de trabajo dynamic_chain # Proxy DNS requests - no leak for DNS data proxy_dns #Añadimos el proxy de Tor socks5 127.0.0.1 9050
Para comprobar que la conexión funciona a través del proxy sin leaks podemos ejecutar
proxychains firefox www.dnsleaktest.com
Y hasta aquí el post de hoy.