Google EL TIPO DE INFORMATICA

lunes, 26 de mayo de 2014

Importar Datos en Active Directory desde un archivo de Texto con DSQUERY y DSMOD

Quizas les haya pasado esto, necesitan modificar la información o propiedades en Active Directory de multiples usuarios, por ejemplo, agregar la dirección de correo, números telefónicos, agregarlos a un grupo o cualquier otra información del usuario. Esto mismo se me presento hoy, tenia que agregar el código de empleado a todos los usuarios, se le iba a agregar en el campo "Description". Me dieron un archivo de Excel con la lista de usuarios y la información que debía agregar. Afortunadamente había una columna con el username del dominio, por lo que era mas fácil asociar la nueva información con active directory.

DSQUERY y DSMOD

Bien, la manera mas fácil que pensé para hacer esto fue utilizar los comandos "DSQUERY" y "DSMOD", estos comandos permiten como seguramente ya han intuido, hacer búsquedas de en Active Directoty (dsquery), ya sea usuarios, computadoras, etc., para y modificar parámetros (dsmod) como los que les mencione mas arriba (correo, nombre usuario, password, etc.). Para utilizarlos tendrian que instalar "Remote Server Administration Tools". Si queremos por ejemplo  listar todos los usuarios del dominio usaríamos "dsquery user", podemos también buscar todos los usuarios de un OU especifico, supongamos que queremos los usuarios del OU "Contabilidad" y que nuestro dominio Active Directory se llama "midominio.local", usaríamos esto:

C:\>dsquery user ou="Contabilidad,dc=midominio,dc=local"

Con esto tendríamos el listado de usuarios de este OU, lo bueno es que ahora podemos tomar la salida de este comando y pasárselo a DSMOD para cambiar los parámetros o atributos que necesitemos agregar o cambiar. Siguiendo el ejemplo anterior, supongamos que a los usuarios de ese OU queremos modificarles el atributo "Office", lo que hariamos es repeterir el mismo comando anterior, pero agregar un "pipe" al final para dirigir la salida del comando a DSMOD y agregar dsmod user -office "Oficina Principal":

C:\>dsquery user ou=Contabilidad,dc=midominio,dc=local" | dsmod user -office OficinaPrincipal


Así todos los usuarios del OU que indicamos tendrán el atributo modificado, pero ahora viene lo interesante. Volvamos al caso inicial de modificar un grupo de usuarios y agregar o modificar en cada uno un atributo, pero con valores diferentes. Como les dije tenia la lista de usuarios y los atributos que debía agregar, lo que hice fue tomar de este archivo las 3 columnas que me interesaban: username (el del dominio), correo electrónico y código. Lo que haremos sera utilizar este archivo de texto (cvs) con estas 3 columnas y alimentar con cada una de ellas estos comandos. Usaremos también el comando "FOR"  que sera quien leerá el archivo de texto y pasara la información a dsquery y dsmod. El archivo de texto se vería mas o menos de esta manera:

Archivo de Usuarios en formato CVS

Donde como pueden ver tenemos en la primera columna el usuario, en la segunda su cuenta de correo y en la tercera el código del usuario que agregaremos en el campo "Description" de Active Directory. Como ven las columnas están separadas por coma (cvs), lo guardaremos en "C:\usuarios.cvs". Teniendo ya nuestro archivo listo y organizado, podemos hacer una prueba con el comando FOR ejecutando "for /F "tokens=1,2,3 delims=, " %a in (usuarios.csv) do echo %a %b %b" obtendríamos:


Si la salida fue como el gráfico anterior, podemos ahora hacer unos cambios al comando, y quedaría de esta manera:

C:\>for /F "tokens=1,2,3 delims=, " %a in (C:\usuarios.cvs) do dsquery user -samid %a | dsmod user -email %b -desc %c

Vamos a ver entonces lo que pasa aqui. Si tienen nociones de programación estarán familiarizados con el comando FOR, lo que estamos haciendo es "iterando" sobre el archivo "usuarios.cvs" y por cada linea ejecutaremos una acción. El comando "For" lo que hará es asignar el contenido de cada columna en una linea a una variable, en este caso la primera columna de la primera fila (el nombre de usuario) se asignara a la variable "%a", la segunda (el correo) a la variable "%b" y la tercera (el código) a la variable "%c" (pero como ven solo especifique %a en el comando, ya el sabe que las otras columnas las almacenara en variables nombradas con la letra siguiente). Luego indicamos el parámetro "do" del comando for, que es entonces donde especificamos la acción que se ejecutara en cada iteración sobre el archivo, y es aqui entonces donde usamos los comandos "dsquery" y dsmod". Como ven, ejecuto "dsquery user -samid" y le paso como parametro la variable %a a la que FOR ya le ha asignado el valor de "user1" (con "-samid" le indicamos a dsquery que buscaremos en Active Directory por username). Luego hago un "pipe" (|) para redirigir el resultado de dsquery a dsmod, usando "dsmod user -email %b -desc %c". Aqui estamos modificando 2 atributos del usuario al mismo tiempo (email y descripcion) y los valores que le estamos pasando son las variables %b y %c, que FOR ya le asigno los valores "user1@midominio.local" y "00001" respectivamente.

Al presionar enter veremos que se irán ejecutando estos comando uno por uno por cada linea del archivo usuarios.cvs, si encuentra un error en una linea del archivo el error les saldrá en pantalla pero no se detendrá la ejecución, ya que FOR continuara ejecutandose por cada linea del archivo. Bien, con esto hemos importado datos o actualizado información de un grupo de usuarios en Active Directory usando un archivo de texto, espero haberles explicado bien, todo esto tiene mucho sentido en mi cabeza pero a veces la explicación no me sale tan clara :D. Les recomiendo explorar los comando "DSQUERY" y "DSMOD" usándolos con el parámetro  de ayuda "/?", verán todo lo que pueden hacer en Active Directory desde la linea de comandos con ellos y tambien con DSGET y DSMOD. Espero que les haya sido de utilidad!


sábado, 26 de abril de 2014

Creando Symblic Links en Windows con MKLink

En esta semana se presento un pequeño problema en la oficina. Uno de los programas usado por los usuarios llamaba al Internet Explorer para generar un reporte desde Reporting Services, pero por alguna razón se abría la versión de 64bits del navegador. Esto generalmente no seria problema, si no fuera porque algunos ActiveX solo funcionan en la version de 32bits. Después de probar varias cosas decidí, para no perder mucho tiempo, renombrar la capeta donde se encuentra la versión de 64bits de Internet Explorer ( de "Internet Explorer" a "Internet Explorer64" ) y crear un Symbolic Link en la misma ruta y con el nombre original de la carpeta apuntando a la versión de 32bits que se encuentra en "C:\Program Files (x86)\Internet Explorer", y de esto es que quiero hablarles hoy; de los Symbolics Links en Windows, como crearlos y cuando usarlos.

Un Symbolic Link (o softlink) es algo así como un Shortcut, simplemente es una dirección hacia otro archivo o carpeta, con la diferencia de que el shortcut que creamos en Windows es realmente un archivo de extension ".lnk", mientras que el Symbolic Link es una redireccion hecha a nivel del File System. Esto significa que, por ejemplo, si creamos un shortcut que apunte a la carpeta "C:\Users" lo que crearemos sera un archivo ".lnk" que dentro apunta a la carpeta que indicamos, una aplicación tendría que saber interpretar este tipo de archivos .lnk y generalmente no lo hacen. Windows Explorer si los reconoce y por eso podemos hacer doble clic sin problemas. En el caso de los Symbolic Link, la redireccion la crea el propio File System (NTLM) y les muestra esto a las aplicaciones como carpetas o archivos reales. Estos links podemos también crearlos entre diferentes discos, por ejemplo, podríamos hacer un Symbolic Link en "C:\Datos" que apunte realmente a "E:\Programa\Datos", y todas las aplicaciones verían este link como una ubicación real en el equipo y no como un shortcut. Lo que nos serviría por ejemplo para mover una carpeta de datos de un programa sin tener que hacer alguna configuración en este y que el piense que sigue escribiendo en su carpeta original.

Para crear estos links, usamos en el comando mklink. Lo ejecutamos de la siguiente manera:

mklink /D ruta-donde-se-creara-el-link ruta-donde-apuntara-el-link 

Como ven es muy sencillo de usar, "/D" es la opción que le indica que se creara un Symbolic Link, luego le indicamos donde queremos crear el link seguido de a donde apuntara el link. Este comando requiere elevación de privilegios, así que tendrán que abrir una ventana de comandos (CMD) como Administrador. Para el caso que les mencione arriba, ejecute el comando de la siguiente manera:


Como ven renombre la carpeta de Internet Explorer a "Internet Explorer64" y dentro de esta misma ruta cree un Symbolic Link llamado "Internet Explorer" apuntando a la ubicación de la versión de 32bits. Si hacemos un "dir" aquí veremos ahora que la carpeta "Internet Explorer" es un SYNLINKD:


Y como ven, se nos muestra hacia donde apunta. Bueno, hasta aquí este post, espero como siempre que les sea de utilidad.

lunes, 24 de marzo de 2014

Crear un Access Point (Rogue AP) en Mac OS X y Captura de Datos con SSLStrip

En esta entrada veremos como crear un punto de acceso a Internet falso (o Rogue AP) en Mac OS Mavericks, usando la herramienta nativa de este sistema operativo para compartir Internet para crear una red Inalámbrica, configuraremos el Firewall del sistema para redireccionar todo el trafico que salga a traves de esta conexión a un puerto especifico en el equipo donde tendremos entonces la herramienta SSLStrip capturando el trafico. La función principal de SSLStrip no es solo la captura del trafico, sino mas bien permitir capturar datos en forma plana que generalmente se enviarían encriptados con SSL. Esto lo hace de la siguiente manera, cuando en una pagina, por ejemplo Facebook, hacemos clic en "Login" o "Acceder", se gestiona una sesión segura usando SSL (HTTPS) antes de enviar los datos digitados, lo que hace SSLStrip es que captura esa solicitud y evita que se establezca la sesión SSL, por lo que la conexión se mantiene en texto plano. Claro esto no siempre funciona, algunos sitios no permiten hacer el login si la conexión no es segura. La idea es mostrar porque debemos tener cuidado al conectarnos a una red Wireless abierta que encontremos, bien, habiendo dicho esto podemos empezar.

Creando la Red Wireless

Lo primero que haremos sera crear la red inalámbrica a la que queremos que las personas se conecten. Para esto compartiremos una conexión a Internet, esta conexión puede ser, por ejemplo, via un cable de red, o como en mi caso, puede ser a traves de un telefono celular via USB. Para esto iremos a System Preference --> Sharing. Veremos la siguiente ventana:

Comparitr Conexion Internet

Antes de activar la opción "Internet Sharing" de la sección de la izquierda debemos indicar cual sera la conexión que compartiremos y a traves de que medio la compartiremos. En nuestro caso, yo estoy compartiendo la conexión a Internet del Iphone a traves del cable USB, y la compartire a traves de la tarjeta Wi-Fi. Luego haremos clic en el boton "Wi-Fi Options..." para configurar el nombre de la red inalámbrica que crearemos y el password, como lo que queremos es hacer una red llamativa para que las personas se conecten, elegiremos como nombre "OPEN_INTERNET" o "OPEN_WIFI" y la configuraremos sin password, como se muestra en la próxima ventana:


Hacemos clic en OK y volveremos a la ventana anterior, donde seleccionaremos el recuadro "Internet Sharing" para habilitar esta conexión, con esto ya estaremos compartiendo nuestra conexión a Internet y regalando Internet al publico. Necesitamos ahora ver la interface que se creo para esta conexión Wireless y ver la dirección IP que tiene esta y que asignara a los usuarios, para esto ejecutamos en el comando "ifconfig" en una ventana Terminal, veremos algo como esto:



Como pueden ver, tengo ahora una interface llamada "bridge100", con la dirección IP 192.168.2.1, las computadoras que se conecten a esta red inalámbrica se le asignaran IP's en este mismo rango. Esta información la usaremos mas adelante cuando estemos configurando el Firewall.

Configuración Firewall Mac OS

Bien, en este punto ya debemos tener personas conectadas a nuestra red, ahora necesitaremos redirigir todo el trafico HTTP o HTTPS que salga por esta conexión hacia el puerto en que estará escuchando SSLStrip. Para esto configuraremos algunas reglas en el Firewall de Mac OS, que a partir de Lion se maneja con el con pf, este manejador de paquetes viene de FreeBSD. La configuración de pf se encuentra en /etc/pf.conf,  pero las reglas del Firewall no se encuentran directamente en este archivo,  sino que que indican aqui los archivos que contienen las reglas. A estos archivos se les llama "Anclas" (anchor en ingles). Así que lo que haremos sera crear nuestro propio archivo ancla donde definiremos las reglas necesarias, y luego haremos referencia a ellos en pf.conf. Estos archivos "ancla" se crean generalmente en "/etc/pf.anchors/", el archivo que crearemos lo llamaremos "rdr.proxy" y lo crearemos ejecutando "sudo vim /etc/pf.anchors/rdr.proxy", el contenido de este archivo sera el siguiente:


rdr pass on bridge100 inet proto tcp from any to any port 80 -> 192.168.2.1 port 8080
rdr pass on bridge100 inet proto tcp from any to any port 443 -> 192.168.2.1 port 8080

pass in log quick on bridge100 proto { tcp, udp } from any to 192.168.2.1 port 8080 keep state
pass in log quick on bridge100 proto { udp } from any to 192.168.2.1 port 53 keep state
pass in log quick on bridge100 proto { icmp } from any to any keep state
pass out inet proto tcp from any to any keep state
pass out inet proto udp from any to any keep state

Con las primeras 2 reglas configuramos el "Redirect" del trafico hacia el puerto 8080, como ven indicamos a cual interface se aplicaran estas reglas que en este caso es a la interface que se creo cuando activamos el "Internet Sharing", que como vimos fue la interface "bridge100".  Las siguientes reglas lo que permiten es el acceso o abrir el acceso al puerto 8080 donde esperara SSLStrip por el trafico de las personas que usen esta red, tambien permitimos el acceso al puerto UDP 53 para que los equipos puedan hacer consultas DNS. Luego que hayamos copiado estas lineas en el archivo podemos guardarlo e irnos al archivo /etc/pf.conf, donde agregaremos las siguientes lineas:

rdr-anchor "rdr.proxy"
load anchor "rdr.proxy" from "/etc/pf.anchors/rdr.proxy"

Como ven primero definimos el archivo con la linea "rdr-anchor..." y luego le indicamos cargue este archivo y le indicamos la ubicación donde se encuentra. Al hacer estas modificaciones, el archivo /etc/pf.conf se veria de esta manera:


Archivo pf.conf

El Firewall del Mac OS  (pf) viene desactivado por defecto, así que aun no estarán habilitadas las reglas que acabamos de agregar, para esto tendremos que ejecutar el siguiente comando:

#sudo pfctl -ef /etc/pf.conf

Cuando ejecutemos este comando, habremos cargado las reglas y activado pf en el sistema. Hay que tener en cuenta que al habilitar esto, todo el trafico de las personas que esten conectadas a la red inalámbrica que acabamos de crear se estará redireccionando al puerto 8080, y como aun no tenemos SSLStrip corriendo en el sistema no podrán navegar. Así que seria mejor ejecutarlo cuando ya este instalado y corriendo SSLStrip, así que pasemos al siguiente paso.

Instalando SSLStrip 

Ya entramos en la ultima parte, ahora solo nos resta instalar SSLStrip para hacer la captura de los datos. Lo pueden descargar desde este link. Esta herramienta esta desarrollada en Python, pero para ejecutarla en Mac OS sera necesario instalar algunos componentes. Esto podemos instalarlo usando MacPorts, que es un manejador de paquetes similar a APT-GET en Linux. Si no lo tienen pueden descargarlo desde este link y seguir las instrucciones (su instalación es sencilla). Una vez lo tengan instalado solo debemos ejecutar:

$ sudo port install py-twisted-web2
$ sudo port install py-openssl

SSLStrip requiere Python 2.5 o superior, si tienen varias versiones de Python en el sistema, es posible que necesiten ejecutar los comandos anteriores indicando la version al lado de "py", por ejemplo "sudo port install py25-twisted-web", una vez instalados estos componentes, nos movemos a la carpeta donde descargamos SSLStrip y entonces ejecutamos:

$ sudo python sslstrip.py -l 8080 -w captura.log

Con esto iniciamos sslstrip escuchando en el puerto 8080 (con la opción -l) y le indicamos que todo lo que capture lo guarde a un archivo llamado "captura.log". Cuando ejecutemos este archivo sslstrip se mantendrá corriendo y capturando hasta que lo cancelemos, se vera como se muestra a continuación:

Ejecutando SSLStrip.py

Ahora solo tenemos que esperar que las personas que esten cerca se conecten a nuestro AP y SSLStrip empezara a capturar sus logins y passwords. Como los datos se van copiando al archivo "captura.lo", podemos abrir otra ventana de Terminal y ejecutar "tail -f captura.log" para ir viendo los datos según van siendo capturados. Entonces, cuando una persona se conecte, por ejemplo a Facebook, veremos los datos que introduce aparecer en el archivo captura.log como se muestra a continuación:



Como ven, el incauto conectado a mi red intento conectarse a facebook, y como vemos SSLStrip nos trajo el username que utilizo (usuario-conectado) y el password (misuperpassword01). A parte de SSLStrip se puede utilizar un proxy, como Burp Proxy (del cual les hable en este post) y así se podría incluso tener mas control sobre el trafico de las personas que se conecten. Bueno, hasta aqui este post, espero que les sea de utilidad y lo piensen mejor la próxima vez que vayan a conectarse a una red inalámbrica publica o que no sea de confianza (... y aunque sea de confianza).

jueves, 6 de marzo de 2014

IPSec Site-to-Site VPN entre WatchGuard XTM y Linux OpenSwan

Supongamos que tenemos que conectar 2 oficinas a traves una conexión VPN, en una de las oficinas tenemos un equipo WatchGuard XTM como Gateway y en la otra tenemos un equipo Linux con OpenSwan (que es una implementación de IPSec para Linux). Podemos hacer la conexión VPN entre estos 2 equipos (y la red detras de ellos) usando IPSec, solo tenemos que asegurarnos de configurar correctamente los parámetros de  IPsec para cada fase, de manera que en la negociación de los algoritmos criptograficos a utilizar ambos equipos puedan elegir protocolos compatibles. Hay que tener en cuenta que basicamente la conexión IPSec en modo tunel (que es el modo a utilizar cuando queremos crear un VPN) se realizara en 2 fases: en la primera fase (llamada "Main Mode") los 2 puntos se autenticaran uno a otro mediante una clave compartida  o certificados y negociaran los algoritmos de encriptacion a utilizar durante el intercambio de esta clave, y en la segunda fase se negociara la politica IPSec que utilizaran, por ejemplo, el tipo de trafico y las direcciones o segmentos de red en ambos lados que utilizaran el tunel. Esta es una explicación bastante resumida de todo lo que hace IPSec (a mi entender), si quieren entender mejor todo lo que hace IPSec les recomiendo visitar este link.

Para la autenticación entre los puntos de nuestro VPN utilizaremos una clave compartida o "Shared Key", e identificaremos cada punto por la IP externa de cada uno. Vamos a llamar al punto donde esta el WatchGuard XTM el punto A, y su IP sera la 6.6.6.6, la red que estará detrás de este equipo sera la 192.168.1.0/24. El punto donde esta el equipo Linux con OpenSwan sera el punto B y su IP sera 7.7.7.7, la red detras de este sera 192.168.2.0/24. La clave compartida que utilizaremos para autenticarlos sera "MiClaveVpn". Así que el escenario se veria mas o menos de esta forma:

Dagrama Conexion VPN


Como ven, incluyo en el diagrama los routers instalados por el suplidor de Internet en ambos lados, mas adelante veran porque. Ya que tenemos claro el escenario, vamos a empezar la configuración desde el equipo WatchGuard, así que abriremos el "Policy Manager", en el menu superior hacemos clic en "VPN" y seleccionamos "Brach Office Gateways...":

WatchGuard VPN

En la ventana de "Gateways" que abrira, haremos clic en "Add" y nos abrira la siguiente ventana. En esta pondremos el nombre para esta conexión, para este ejemplo le puse "VPN01", insertaremos tambien aqui la clave compartida que definimos para esta conexión (MiClaveVPN). Luego haremos clic en el boton "Add" mostrado mas abajo:


En esta próxima ventana (mostrada en el siguiente grafico) insertaremos la información sobre los dos gateways, como la IP del punto remoto (OpenSwan) y la interface del WachGuard que utilizaremos para esta conexión. En la primera sección de esta ventana (Local Gateway) definiremos el ID de este punto para el tunel, que sera el nombre con el que se identificara el WatchGuard con el punto remoto. Seleccionamos la opción "By Domain Information" y hacemos clic en el boton "Configure" que se encuentra justo al lado, esto nos abrira una nueva ventana donde seleccionaremos "Domain Name", escribiremos al lado la IP con la cual llegaremos al otro punto (para el caso de este ejemplo seria "6.6.6.6") y hacemos clic en OK. Volveremos la ventana anterior donde seleccionaremos la interface externa del WatchGuard correspondiente a la IP con la cual haremos la conexión VPN (en el caso de este ejemplo, la interface externa utilizada se llama "Internet"). En la sección de mas abajo (Remote Gateway) indicaremos la IP del punto remoto, seleccionaremos "Static IP Address" e insertaremos la IP del punto remoto (para este caso 7.7.7.7). Luego al igual que en "Local Gateway" y seleccionaremos la opción "By Domain Information" y haremos clic en "Configure" para escribir en "Domain Name" la IP remota (7.7.7.7), este sera el nombre con el que WatchGuard esperara que se identifique el equipo Linux. Al final la ventana se veria de esta manera:

Configuracion Gateways WatchGuard

Hacemos clic en "Ok" y volveremos a la ventana inicial donde escribimos la clave compartida. En esta ventana haremos clic en el Tab "Phase 1 Settings". Desactivaremos la opción "Dead Peer Detection", se vera entonces de esta manera:

Configuracion VPN Gateways WatchGuard

Hacemos clic en "OK" y con esto hemos configurado los Gateways para esta conexión, ahora definiremos el "Tunel" que usara estos Gateways, donde indicaremos las redes detrás de cada Gateway y la dirección del trafico, o sea, si el trafico sera en una sola dirección o en ambas. Para este caso, y quizas para la mayoría, sera en ambas direcciones (bidireccional).  Hacemos clic nuevamente en "VPN" del "Policy Manager", seleccionamos "Brach Office Tunnel..." y luego hacemos clic en "Add". Debemos ponerle un nombre a esta Tunel un nombre, podemos nombrarlo "TUNEL-01", debajo seleccionaremos el Gateway que utilizaremos, que es el que creamos anteriormente "VPN01". Luego hacemos clic en el boton "Add" para indicar cuales seran las redes que transitaran por el tunel. En la local agregaremos "192.168.1.0/24" y en la remota "192.168.2.0/24", nos aseguramos que en la sección "Direction" este indicado "<==>", que indica que el trafico sera bireccional, y luego hacemos clic en OK. Luego hacemos clic en el tab "Phase 2 Settings", en la sección "IPSec Proposals" veremos agregado "ESP-AES-SHA1" por defecto. Agregaremos a esta lista dos mas haciendo clic en "Add", estas seran "ESP-3DES-SHA1" y "ESP-DES-SHA1". Hacemos clic en "OK" y ya tenemos configurado el Tunel para nuestra conexión, al final la ventana del tunel que creamos se veria de esta manera:


Ahora podemos guardar y aplicar la configuración en el WatchGuard y pasar entonces al equipo Linux con Openswan. Primero vamos a asegurarnos que IPTables este configurado adecuadamente, si necesitan un repaso de IPTables les recomiendo que visiten este post. Debemos tener una regla INPUT para la interface externa que permita el trafico UDP a los puertos 4500 y 500 desde la IP 6.6.6.6 (damos por sentado que ya tiene OpenSwan instalado). Si usan una regla "MASQUERADE" asignar la IP externa del equipo al trafico saliente a Internet, o si usan "SNAT", tendrán que hacer una excepcion para que el trafico que se dirija a la red remota con la cual nos conectaremos via VPN no vaya a ser afectada por el NAT configurado por estas reglas, la regla seria de esta manera:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d ! 192.168.1.0/24 -j SNAT --to-source 7.7.7.7

Con esto le decimos a IPTables que enmascare cualquier trafico saliente de la red con excepción del trafico que vaya dirigido a la red remota. Basicamente esto es lo necesario en IPTables, vamos ahora a la configuración de OpenSwan. El archivo de configuración se encuentra en /etc/ipsec.conf, aqui configuraremos los parámetros de IPSec, como los puntos del VPN, las redes a enlazar, etc. el contenido de este archivo para este ejemplo seria el siguiente:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# basic configuration
config setup
        # NAT-TRAVERSAL support, see README.NAT-Traversal
        nat_traversal=yes
        protostack=netkey
        nhelpers=0
        uniqueids=yes

# Add connections here
conn $default
        keyingtries=3

conn vpn-watchguard
        authby=secret
        left=6.6.6.6
        leftsubnet=192.168.1.0/24 
        leftnexthop=6.6.6.5
        leftid=@6.6.6.6
        right=7.7.7.7
        rightid=@7.7.7.7
        rightnexthop=%defaultroute
        rightsubnet=192.168.2.0/24
        type=tunnel
        auto=start
        pfs=no

#Disable Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------          

Todo lo que es "left" se refiere al otro lado de la conexión VPN. La sección "leftnexthop" que señalo en negrita de la configuración anterior, indica el proximo salto antes de llegar al equipo al equipo que manejara el VPN del otro lado del tunel (en este caso el WatchGuard), generalmente habra un router delante que es quien le da la conexión a Internet, como se muestra en el diagrama de mas arriba. El resto de esta configuración es bien descriptiva así que podemos continuar. El siguiente paso sera configurar el "Share Key" o clave compartida para esta conexión VPN, para esto editaremos el archivo "/etc/ipsec.conf" y agregaremos la siguiente linea:


@7.7.7.7 @6.6.6.6 : PSK "MiClaveVPN"

Con esto ya tenemos nuestro OpenSwan configurado para la conexión (mucho mas rapido verda?). Antes de iniciar el tunel, vamos a verificar que esto este bien con Openswan, ejecutaremos el comando "ipsec auto verify" y si todo esta bien deberia devolvernos algo como esto:

Salida del comando ipsec verify

Ahora para iniciar nuestro tunel podemos ejecutar desde este equipo el siguiente comando:


#ipsec auto --start vpn-watchguard 

Ya debe estar arriba nuestro VPN entre WatchGuard y OpenSwan, podemos verificarlo ejecutando "ipsec auto --status", aparecerán varias lineas, pero las que buscaremos serán las siguientes:


Y con esto ya tenemos nuestras redes conectadas via VPN a traves de dos equipos diferentes usando el standard IPSec. En caso de que les de algún error les recomiendo hacer el debugging desde Linux, pueden buscar en el archivo /var/log/auth.log ya que en este archivo Openswan va registrando cada actividad y es mas facil seguir cualquier error. 

lunes, 24 de febrero de 2014

Password por Defecto en Modems ADSL Huawei ADSL HG532e

En estos dias estaba en una oficina configurando el acceso a Internet y una nueva linea ADSL que se habia contratado. Necesitaba hacer algunos cambios a la configuración del Router y tenia que acceder al Manager para hacerlos. Como les habia comentado anteriormente, mucho de estos Routers/Modems ADSL venian con un usuario/password por defecto, desde un tiempo hacia aca lo que estan haciendo es que usan el serial del equipo, la MAC Address o la contraseña WEP/WAP del Wireless como clave para acceder a la administración. El Modem que instalo el suplidor fue un Huawei HG532e, procedi a conectarme al menu para hacer los cambios necesarios, generalmente la IP por defecto de estos equipos 10.0.0.1:

Ventana de Login Router Huawei

Para el caso de este Modem, el usuario/password es el mac address, lo que en cierta forma es una ventaja sobre el metodo antiguo de usar "admin/admin", ya que por lo menos para poder acceder al menu es necesario tener acceso fisico al equipo y evita que cualquiera a traves de Internet pueda entrar a nuestro Router. Asi que inserte el Mac Address y pude entrar sin problemas. Una vez habia hecho los cambios que necesitaba, me pase por la seccion "Mantenimiento" del menu para ver que opciones me presentaba y me llamo la atencion que en la parte de "cuentas de usuario" habia un "Drop-down" menu, o sea, que aparentemente habia mas de una cuenta creada en el router, aunque lo habia acabado de sacar de su caja. Al hacer clic encima de este elemento veo que efectivamente habia una cuenta "user" creada a parte de la cuenta con la que me habia logueado, como se ve a continuacion:

Lista Usuarios Modem Huawei

Al ver este usuario, me imagine el password que debía acompañarlo, así que cerre la sesión, intente logearme con ese usuario y al primer intento pude acceder al menu y con los mismos privilegios administrativos del usuario del Mac Address. Y si, el password era igual que el username: "user". Lo primero que hice fue entrar nuevamente con el usuario del Mac Address y eliminar esta cuenta. Luego senti curiosidad por ver si este usuario realmente venia en todos los modems de este modelo o si solo me habia caído a mi la dicha, así que revise la IP externa que tenia asignada el router en ese momento para hacer una búsqueda en todo ese rango a ver si encontraba modems de ese modelo y probar el usuario "user". Para esto utilizaria Nmap, pero antes tenia que ver como el Modem se identificaba y usar esa información para identificar los demás, así que ejecute el siguiente comando:

salida comando Nmap

Como ven, realice un escaneo a la IP del Modem con Nmap a los puertos 80 y 23 (HTTP y Telnet) con la opción "-sV" para que me muestre información de la version del servicio, en este caso el servicio Telnet en este Modem se identifica con "Huawei HG655b DSL router telnetd", así que ahora lo que resta es hacer un escaneo en un determinado rango de IP publicas y filtrar la salida para que nos muestre las que devuelvan esta linea. Utilice nuevamente Nmap pero ahora apuntando solo al puerto 23 y agregue tambien la opción "-oG - " para cambiar la forma en que se presentan los resultados y así poder filtrar mejor con "Grep" la salida, tambien amplie el rango del scan para que incluya las otras IP's vecinas del Modem en ese momento, este fue el resultado de la búsqueda de las primeras 100 IP's en ese rango:

Resultado Scan Nmap

Como ven solo entre las primeras 100 IP's aparecieron varios routers de este mismo modelo, es posible que incluso hayan mas y solo estaban apagados en ese momento. Lo interesante es que fui probando cada uno de estos Modems y efectivamente, TODOS los que encontre en este rango (y otros mas) tenian el usuario "user" con el mismo password!! Y bueno, que podría hacer alguien con el password de nuestro router ADSL? basicamente podrían controlar nuestro trafico en Internet, podrían alterar la configuración DNS ya que generalmente el mismo Modem hace el papel de servidor DNS para las computadoras que están detrás de el, tambien podrían crear reglas NAT que apunten a las computadoras detrás del router y exponerlas a Internet para realizar ataques sobre ellas y lograr acceso directo a estas.

En resumen, si tienen instalado uno de estos Routers/Modems en sus casas u oficinas, revisen la configuración en caso de que tengan este usuario creado y eliminenlo. Es posible que en otros modelos pase lo mismo, hasta ahora solo he probado este, asi que revisen su modem aunque no sea este modelo. Bueno, espero que les haya sido de utilidad, y esta información les haya llegado antes de que alguien mas entre en sus routers.