En articulo anteriores intentamos dar algunos ejemplos para saltarnos las restricciones de firewalls corporativos y bloqueadores de contenidos, con algunas buenas herramientas:
- https://elbinario.net/2016/03/17/bypass-portales-cautivos-con-iodine/
- https://elbinario.net/2016/03/29/evitando-firewalls-con-dnscat2/ Pero a veces estas no bastan y hoy en día cada vez las empresas,instituciones y demás aplican mas medidas restrictivas(censura 2.0) para evitar que se pueda obtener un acceso libre a Internet, y esto puedes pensar que esta muy bien a nivel de empresa que quiere evitar problemas de virus o rendimiento de sus empleados, pero cuando aplicamos a estos a mecanismos de censura y control de contenido de gobiernos y instituciones, ya la cosa cambia ¿verdad?.
Para escaparnos, lo primero que necesitamos saber es ¿donde están las salidas? para ello lo mejor es dedicarse unos días a estudiar la red en la que estamos y sus restricciones, pero normalmente siempre hay unas reglas comunes:
- Se bloquea todo el trafico que no sea web via proxy
- No se permiten conexiones por puertos que no sean 80 y 443
- Se bloquean todas las conexiones por otros puertos y protocolos.
Ahora que tenemos claro que la salida tiene que ser vía web, ya podemos empezar a planear nuestra ruta de escape, para ello necesitamos:
- Un Servidor apache(para montar nuestro proxy http)
- Un DNS accesible que esta bajo nuestro control(para apuntar el apache hacia alli)
- Un Tunnel desde nuestra maquina local, hacia un servidor ssh, usando proxytunnel.
La idea es que el servidor apache nos haga de puente entre nuestra conexion ssh y el proxy-web de la red en la que estemos, para ello configuramos apache como proxy.
Instalando configurando apache apt-get install apache2
Creamos nuestro sitio
vim /etc/apache2/sites-availabl/proxy_ssh.conf
Habilitamos mod_proxy_http, mod_proxy_connect
a2enmod proxy_http
a2enmod proxy_connect
<VirtualHost *:80>
ServerAdmin
ServerName tudominio
ErrorLog /var/log/apache2/error_log
TransferLog /var/log/apache2/access_log
# Allow proxy connect (forward-proxy) to servers only on port 80 (http) and 42 (at my box SSH)
ProxyRequests On
AllowConnect 80 22
# Deny all proxying by default...
<Proxy *>
Order deny,allow
Deny from all
</Proxy>
# This directive defines which servers can be connected to.
# Access is controlled here via standard Apache user authentication.
<ProxyMatch (IP|tudominio|)>
Order deny,allow
Allow from all
#You should replace the above two rules with something like this:
# Deny from all
# Allow from <some_host>
# Allow from <some_host>
</ProxyMatch>
</VirtualHost>
Instalando configurando proxytunnel
apt-get install proxytunnel
Ahora editamos nuestro fichero de configuración ssh para indicarle que use proxytunnel
vim ~/.ssh/config
Host IP tudomino
DynamicForward 1080
ProxyCommand proxytunnel -v -p IPFIREWALL:PUERTO -r IPAPACHE:80 \
-d %h:%p -H "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)\n"
ServerAliveInterval 30
Ahora solo nos queda lanzan el tunnel desde nuestra maquina local
ssh -l proxy -p 22 IPSERVIDORSSH
Happy hacking ;)