miércoles, 10 de octubre de 2012

Crear un AP en W7 o Windows Vista

Con un CMD con permisos de administrador creamos el interfaz:

netsh wlan set hostednetwork mode=allow ssid=wlan_xx key=mi.password.wifi

(esto nos crea un nuevo interfaz que pone .... wlan_xx)

Vamos a las propiedades del adaptador de la LAN y compartimos la conexión (allow y allow en sharing), en el nombre elegimos la wlan_xx

Y por último lo arrancamos:
netsh wlan start hostednetwork

Para parar:
netsh wlan stop hostednetwork






lunes, 1 de octubre de 2012

Cómo evitar o Evadir proxys corporativos (control de contenidos, etc)

Es muy habitual en las empresas, universidades, etc que se instalen gestores de control de contenido, para evitar que navegemos por sitios "inapropiados" (hack, virus, páginas de adultos, etc). estos medios no son infalibles y a menudo existen formas de eludirlos, por ejemplo la que voy a explicar.

Vamos a suponer uno de los escenarios mas restrictivos, tenemos un proxy ISA que exige autenticación de usuario y además sólo permite Kerberos y NTLM.

Necesitaremos un Ordenador que esté en internet (nuestro), y abramos algun puerto. Este esquema nos permitirá cierto nivel de anonimato (hasta este ordenador claro) ya que haremos SSL entre los extremos de la comunicación. El esquema en detalle sería:

PC Corporativo <=> Proxy ISA Corporativo <=> Internet <=> Pc en casa

Elementos que estarán en el PC Corporativo:

Firefox con ProxyProxy => Proxy Socks conectado a Proxy SSL => Proxy SSL conectado a Proxy NTLM => Proxy NTLM conectado a Proxy corporativo (con DOMINIO\usuario y password)


Elementos de nuestro PC conectado a Internet (en casa mipc.dyndns.org):
ProxySSL => SSH => Proxy Socks

(En este caso en lugar de un PC se empleará un WRT54G de Linksys (ahora Cisco), cuya ip interna por ejemplo será 10.0.0.1 que permite la instalación de todo lo necesario y no consume apenas energía).


Configuración de cada elemento en el PC corporativo:

 Foxy Proxy: proxy SOCKS v.5 en localhost:1080
Proxy Socks: Emplearemos el cliente SSH para crear un tunel SSH y dejar un puerto en escucha conectado al proxy Socks del pc en casa, el comando será:

ssh -C root@localhost -p 22000 -L 1080:IP_LOCAL_INTERNA:1080

El puerto 22000 será el puerto en el que se queda el servidor ProxySSL escuchando (en el punto siguiente). 1080 es típicamente el puerto socks, pero podemos usar otro. Hemos de conocer la IP_LOCAL_INTERNA del router linksys que tengamos en casa, ya que aqui es necesaria).

Proxy SSL: Hará de intermediario entre el proxy local NTLM y SSH para negociar el SSL con el destino, el comando será:

proxytunnel -q -a 22000 -p localhost:3129 -e -d mipc.dyndns.org.com:8443 -H "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)"


localhost:3129 correspone con los valores que pondremos en el punto siguiente, mipc.dyndns.org es nuestro PC de casa o el linksys en nuestro caso (con el puerto 8443 nateado).


Proxy NTLM: Nos autenticará en NTLM con el proxy corporativo y será al que se conecta el proxy SSL, el comando será:
cntlm.exe -a NTLMv2 -u USUARIO@DOMINIO -I -l localhost:3129 PROXY:80 

El puerto 3129 puede ser cualquier otro local libre, proxy es el nombre del proxy real que tengamos en la empresa y el 80 es el puerto.


Configuración de cada elemento en el PC de casa:

En el router nateamos el puerto 8443 (por ejemplo, ya que es un puerto que los proxys corporativos suelen permitir, pero si no lo permitiera nateamos el 443 que seguro que está permitido) a la IP del WRT54G (10.0.0.1)

En el WRT54G configuramos el SSL (/etc/stunnel/stunnel.conf):

[ssh-alt]  (esto es una etiqueta, puede ser cualquier cosa)
accept  = 8443
connect = 22
TIMEOUTclose = 0

El SSH no requiere de ninguna configuración especial


Configuramos el proxy Socks (/etc/srelay.conf):

# allow local subnet to access socks proxy
Rango_IP/24 any -


Si todo ha ido bien, desde el firefox con foxy proxy del pc corporativo si vamos a www.cualesmiip.com veremos la ip publica de nuestra casa (y no la pública de la empresa) si es así, es que todo ha funcioando bien.

Es posible que la conexión se corte en pocos segundos de inactividad (60 o tal vez menos), es debido a que el proxy corporativo corta las conexiones que no tienen tráfico en un tiempo, podemos lanzar un script como este para evitar el corte (ya que el script pone la hora cada  N segundos en la shell que dejamos conectada):


if [ '$1'=='' ]
then
   tiempo=10
else
   tiempo=$1
fi
while true
do
echo -------------------
date
sleep $tiempo
done