Cómo crear un punto de acceso con todas las conexiones dirigidas a la red Tor

  • 4 Respuestas
  • 417 Vistas

jOarMepiNocHo y 1 Visitante están viendo este tema.

Conectado DtxdF

  • *
  • Moderador Global
  • Mensajes: 688
  • Actividad:
    100%
  • Reputación 16
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email
You are not allowed to view links. Register or Login, esa fascinante red que nos provee una capa extra de seguridad en nuestras comunicaciones. Una red capaz de evadir la censura más torturadora para una persona que reside en un país donde la libertad de expresión es nula o inimaginable. Tor (siglas de The Onion Router), es un proyecto cuyo principal objetivo es desarrollar una red distribuida de baja latencia, superpuesto sobre Internet donde el encaminamiento de mensajes no revela la identidad del usuario.


Un Tor-AP (The Onion Router Access Point), es un sencillo script para la creación de un You are not allowed to view links. Register or Login con el fin de dirigir todas las conexiones a la red Tor, segurizando así nuestra integridad.

Importante: Recuerde siempre usar conexiones cifradas y seguras para evitar filtrado de datos ya sea por una vulnerabilidad en la misma red o en el nodo de salida.


Herramientas:

Las herramientas que usaremos para estos fines, serán las siguientes:

Requeridas:

  • tor: El software que creará el proxy transparente y nos permitirá segurizar nuestras conexiones
  • iptables (o la herramienta que controla nuestro firewall): El arma secreta de todo este plan lujurioso

Opcionales:

  • nyx: El monitor de la red Tor
  • dnsmasq (o un servidor DHCP y DNS): El que proporcionará una dirección IP a los clientes y resolverá los nombres de dominio a direcciones IP
  • hostapd: El que creará el You are not allowed to view links. Register or Login en nuestro dispositivo

Instalación de dependencias:

Código: Bash
  1. #Requeridos
  2. # Debian
  3. sudo apt-get install tor
  4. # Arch Linux
  5. sudo pacman -S tor
  6.  
  7. #Opcionales
  8. # Debian
  9. sudo apt-get install dnsmasq dnsmasq-base nyx hostapd
  10. # Arch Linux
  11. sudo pacman -S dnsmasq nyx hostapd

Requerimientos de hardware:

Esta sección es especial, ya que depende de qué queramos o qué tengamos en nuestras manos para ampliar un poco la red.


  • Modo AP en nuestra tarjeta de red inalámbrica: Por si queremos crear un punto de acceso
  • Cables ethernet's y switches (o parecido): En caso de queramos crear la red en LAN en vez de WLAN, aunque pueden crear las dos infraestructuras.
  • Un modem: En mi caso un Modem USB, pero ustedes pueden usar el mismo que les ayuda a leer esto.

Creación:

Quiero aclarar que hace un par de semanas estaba jugando con iptables y tor y me propuse a crear un proxy transparente en mi propia laptop, nada del otro mundo; me puse a investigar haber si alguien ya había hecho éso, y por mi suerte lo hizo mucho mejor. El usuario hasta tiene un repositorio llamado "You are not allowed to view links. Register or Login".

Luego de leer un poco su código, quise agregarle y quitarle un par de líneas (que considero necesarias e innecesarias), también para no perder la conexión con otros equipos (en caso de de crear una red LAN/WLAN).

Aclarado lo anterior, aquí está el código:


Código: Bash
  1. #!/usr/bin/env sh
  2.  
  3. # Ya explicaré como obtener el ID de usuario para la variable TOR_UID
  4. TOR_UID="<El identificar del usuario de tor>" # El Identificador de usuario de Tor
  5. NON_ROUTE="127.0.0.1/8" # Los destinos que no desea enrutar a través de Tor
  6. LOCAL_DNS=53 # El puerto DNS local, por defecto es '53'
  7.  
  8. # Esta parte se explicará mejor en la configuración de Tor
  9. L_TOR_DNS=5353 # El puerto DNS de Tor para la máquina local
  10. L_TRANS_PORT=9040 # El puerto del proxy transparente para la máquina local
  11.  
  12. R_TOR_DNS=5354 # El puerto DNS de Tor para las máquinas remotas (como los clientes conectados en LAN/WLAN)
  13. R_TRANS_PORT=9041 # El puerto del proxy transparente para las máquinas remotas
  14.  
  15. iptables --flush
  16. iptables --table nat --flush
  17.  
  18. iptables --table nat --append OUTPUT --match owner --uid-owner $TOR_UID --jump RETURN
  19. iptables --table nat --append OUTPUT --protocol udp --dport $LOCAL_DNS --jump REDIRECT --to-ports $L_TOR_DNS
  20. iptables --table nat --append PREROUTING --protocol udp --dport $LOCAL_DNS --jump REDIRECT --to-ports $R_TOR_DNS
  21.  
  22. for NET in $NON_ROUTE;do
  23.         iptables --table nat --append OUTPUT --destination $NET --jump RETURN
  24.  
  25. done
  26.  
  27. iptables --table nat --append OUTPUT --protocol tcp --syn --jump REDIRECT --to-ports $L_TRANS_PORT
  28. iptables --table nat --append PREROUTING --protocol tcp --syn --jump REDIRECT --to-ports $R_TRANS_PORT

Sobre la variable "TOR_UID", es el identificador del usuario de Tor (ya que el software Tor tiene un usuario). Para obtenerlo se hace lo siguiente:

Código: Bash
  1. # Para distribuciones basadas en Debian:
  2. id -u debian-tor
  3. # Para distribuciones basadas en Arch Linux o que tenga el mismo nombre de usuario:
  4. id -u tor

El valor resultante es un número, el cual es el identificador de usuario del software Tor. En mi caso:


El valor (en mi caso) es '111' por lo que el valor de 'TOR_UID' es:

Código: Bash
  1. TOR_UID=111

Quedando de la siguiente manera:


Lo que tenemos que hacer, es darle permisos de ejecución una vez guardado los cambios:

Código: Bash
  1. chmod +x ./tor-ap

Ahora pasemos a la configuración de Tor (en /etc/tor/torrc):

Código: Text
  1. ControlPort 9051 # Opcional, es para que nyx se comunique con el controlador de tor
  2. # Cuando Tor necesita asignar una dirección virtual (no utilizada) debido a un comando MAPADDRESS del controlador o la función AutomapHostsOnResolve, Tor elige una dirección no asignada de este rango. Más en 'man 1 tor'.
  3. VirtualAddrNetwork 10.192.0.0/10
  4. # Cuando esta opción está habilitada y recibimos una solicitud para resolver una dirección que termina con uno de los sufijos en AutomapHostsSuffixes, asignamos una dirección virtual no utilizada a esa dirección y devolvemos la nueva dirección virtual. Esto es útil para hacer que las direcciones ".onion" funcionen con aplicaciones que resuelven una dirección y luego se conectan a ella. Más en 'man 1 tor'
  5. AutomapHostsOnResolve 1
  6.  
  7. #En las siguientes 'secciones' se asigna la dirección predeterminada (127.0.0.1) en la primera, mientras que en la segunda se asigna la dirección '0.0.0.0', con puertos diferentes (así es como funciona).
  8.  
  9. # Para el loopback
  10. TransPort 9040 # El puerto del proxy transparente
  11. DNSPort 5353 # El puerto del servidor DNS UDP de Tor
  12.  
  13. # Para la dirección no especificada
  14. TransPort 0.0.0.0:9041
  15. DNSPort 0.0.0.0:5354

Ejecución básica:

En esta sección veremos lo más básico de este tutorial: Hacer una prueba básica en nuestra misma máquina:

Código: Bash
  1. sudo -u debian-tor tor # si usas debian; si usas otro (como Arch Linux) el usuario es 'tor'; si usas otra distribución haz una investigación simple para saber cuál es el nombre del software 'tor'. Un pequeño comando que quizá le ayude a alguien: 'cat /etc/passwd | grep -i tor | cut -d':' -f1'.
  2. sudo ./tor-ap # OJO, ya tienen que tener tor en ejecución, ya sea el daemon o el ejecutable en sí.
  3. curl -i http://ip-api.com/json

La ilustración del resultado:


Ejecución avanzada:

Una vez visto los principios básicos para configurar el enrutamiento hacia tor, vamos a crear el punto de acceso con el fin de compartir la conexión.

Primero lo primero, configuremos algunas cosas de dnsmasq:


Código: Text
  1. domain-needed # Los navegadores antiguos tenían una barra que era específica para las búsquedas en los buscadores, pero el usuario por ignorancia usaba la que era para los dominios, lo que provocaba que se perdiera tiempo resolviendo dominios inexistentes, lo que acarreaba en una respuesta DNS "NXDOMAIN". Con esta instrucción se evita eso (aunque los navegadores actuales ya solucionarón ese inconveniente), pero me refiero a los antiguos.
  2. bogus-priv # Evitar que se haga una consulta dns inversa a una dirección local o en el espacio de direcciones
  3. no-resolv # No usar el fichero 'resolv.conf'
  4. # Usar los siguientes nameservers
  5. server=1.1.1.1
  6. server=1.0.0.1
  7. # Configuramos el DHCP para asignar el rango de direcciones en 24h(oras) en las interfaces wlp2s0b1 (la de mi tarjeta de red inalámbrica) y enp1s0f0 (la de ethernet).
  8. # wlp2s0b1 tendrá el siguiente rango: 192.168.0.2 a 192.168.0.254, mientras que el punto de acceso (nosotros) tendrá la dirección 192.168.0.1
  9. # enp1s0f0 tendrá el siguiente rango: 10.42.0.2 a 10.42.0.254, mientras que la máquina local tendrá la siguiente dirección 10.42.0.1
  10. # Nota-1: Tienen que usar sus propias interfaces.
  11. # Nota-2: Recuerden que su tarjeta de red inalámbrica debe admitir el modo AP para que lo puedan crear
  12. dhcp-range=wlp2s0b1,192.168.0.2,192.168.0.254,24h
  13. dhcp-range=enp1s0f0,10.42.0.2,10.42.0.254,24h
  14. # Registramos las consultas y demás (opcional, pero recomendable para la depuración)
  15. log-queries
  16. log-dhcp
  17. log-facility=/var/log/dnsmasq.log

Ahora se asigna las direcciones IPs:

Código: Bash
  1. sudo ip a add 192.168.0.1/24 dev wlp2s0b1
  2. sudo ip a add 10.42.0.1/24 dev enp1s0f0

Quiero aclarar que dnsmasq es un daemon, pero para esta demostración y depurar un poco, mejor veamos las consultas que hacen los clientes, tanto DHCP con DNS.

Código: Bash
  1. # Desactivamos el servicio
  2. sudo systecmtl stop dnsmasq.service
  3. # Si no tienen systemctl, y usan SysV
  4. sudo service dnsmasq stop

Ahora ejecutamos dnsmasq:

Código: Bash
  1. sudo dnsmasq -d -C /etc/dnsmasq.conf
  2. # -d = No ejecutar en segundo plano
  3. # -C = Especificar el archivo de configuración


Hasta aquí todo bien, ahora podemos conectar una PC (por ejemplo), usando ethernet al mini-router que estamos haciendo, asignarnos una dirección IP por medio de nuestro servidor DHCP y probamos nuevamente preguntando nuestros datos:


Expandiendo los horizontes...

Muy bien, hemos llegado sanos y salvos a esta sección, por lo que aumentemos un poco más la "dificultad". Creemos un punto de acceso  ;D

Para lograr nuestro cometido debemos configurar 'hostapd':


Código: Bash
  1. sudoedit /etc/hostapd/hostapd.conf

Código: Bash
  1. ssid=DtxdF # El nombre de mi red (¿Original? ¿No?)
  2. channel=5 # El canal
  3. hw_mode=g # Esta opción y la compatibilidad con 'N' (la veremos más abajo) depende de su tarjeta y significa la tecnología que admite su tarjeta
  4. auth_algs=3 # 1=WPA; 2=WEP; 3=Ambos
  5. ieee80211n=1 # Compatibilidad con la tecnología 'IEEE 802.11n'
  6. wmm_enabled=1 # QoS
  7. interface=wlp2s0b1 # La interfaz de la tarjeta de red inalámbrica
  8. wpa=2 # La versión 2 de WPA
  9. wpa_passphrase=thisisapasswordsupersecure123@ # Una contraseña super segura
  10. rsn_pairwise=CCMP # (AES) Counter Mode CBC-MAC Protocol

Lo ejecutamos:

Código: Bash
  1. sudo hostapd /etc/hostapd/hostapd.conf


Conclusión:


Ahora sabemos cómo crear un Tor-AP para agregar una capa de seguridad a nuestras conexiones, sin necesidad de configurar el navegador o el software que desea conectarse a Internet, sin anteponer un programa que remplaze funciones internas que crean incompatibilidades (como tsocks), sin limites, nada más que la imaginación...

Por cierto, para monitorear los circuitos, podemos usar nyx:


Código: Bash
  1. nyx -i 9051

~ DtxdF
« Última modificación: Mayo 31, 2020, 07:25:12 pm por DtxdF »
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado CrazyKade

  • *
  • Underc0der
  • Mensajes: 184
  • Actividad:
    3.33%
  • Reputación 0
  • Я только знаю что ничего не знаю!
    • Ver Perfil
Muy bueno DtxdF, muy didáctico y perfectamente explicado. Gracias por compartir.

Conectado DtxdF

  • *
  • Moderador Global
  • Mensajes: 688
  • Actividad:
    100%
  • Reputación 16
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email
Muchas gracias @You are not allowed to view links. Register or Login , es un placer.

~ DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Conectado Kirari

  • *
  • Colaborador
  • *
  • Mensajes: 144
  • Actividad:
    100%
  • Country: 00
  • Reputación 9
  • No dejes que el mundo te corrompa
    • Ver Perfil
    • Baúl para el público
Gran aporte amigo   ;D

Saludos!
-Kirari
Jamás te contarán la verdadera versión, siempre te dirán la suya... Por eso... Si quieres saber la verdad, debes buscarla tú mismo...

Conectado DtxdF

  • *
  • Moderador Global
  • Mensajes: 688
  • Actividad:
    100%
  • Reputación 16
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email
Gracias compañero @You are not allowed to view links. Register or Login , con gusto vendrán más.
Los seres humanos son robots, cuyo combustible es el afanado dinero.

 

Herramienta para remover variante de ransomware conocida como Jigsaw

Iniciado por Dragora

Respuestas: 0
Vistas: 221
Último mensaje Noviembre 21, 2019, 08:11:37 pm
por Dragora
Cómo borrar publicaciones y registro de actividad de Facebook automáticamente

Iniciado por Stiuvert

Respuestas: 1
Vistas: 4604
Último mensaje Agosto 19, 2018, 08:59:03 pm
por s3ven
[VIDEO] Cómo hackear contraseña de Windows 10 sin necesidad de software

Iniciado por wizardsec

Respuestas: 11
Vistas: 10536
Último mensaje Junio 08, 2017, 04:01:26 am
por RuidosoBSD
Como protegerse de Skype Resolver y ataques DDoS [Video]

Iniciado por unkdown

Respuestas: 4
Vistas: 3721
Último mensaje Agosto 02, 2015, 06:30:37 pm
por Thereldor
Como conocer los programas y aplicaciones que se inician con Windows.

Iniciado por Stiuvert

Respuestas: 0
Vistas: 2878
Último mensaje Mayo 19, 2012, 08:02:16 am
por Stiuvert