lunes, 29 de noviembre de 2010

Reutilizando máquinas virtuales con Windows

No creo que lo sepáis, no se lo he contado a mucha gente. Me estoy preparando por mi cuenta una certificación Microsoft.

Como ya he contado alguna vez, si no aquí, en alguno de los blogs sobre seguridad que suelo leer, antes era un maniático de "Linux, Linux, Linux..." y poco o nada de Microsoft. Al menos, en lo que a discusiones se refiere. Peeeerooo... Ahora estoy en el modo de "cada cosa, en su momento y en su lugar". Lo que significa que hay cosas en los que ambos sistemas operativos van bien... Y otras, en los que uno es mejor que otro.

Bueno. A lo que iba. Para prepararme la certificación me compré un libro, propio de Microsoft. Lo llaman training kit. Este training kit trae dos DVDs. Bueno, tres. Uno es el que tiene datos, información. Entre otras cosas, trae el mismo libro que compré impreso, pero en PDF. También trae una aplicación para hacer examenes, desde una manera muy sencilla en la que te indican nada más responder si la pregunta está bien o mal, y por qué... hasta una simulación de un examen real. Los otros dos DVDs son las versiones de Windows Server 2008, 120 días, tanto la de 32 como la de 64. Una versión trrial, vamos.

Así, una primera vez, me instalé una máquina virtual con el DVD. Pero, siendo precavido, la dejé para "futuras necesidades". Luego, me hice una copia de esa máquina que sería la que manipularía según las instrucciones del libro. No viene mucho a cuento, pero me hice una instalación de un Windows 7 Enterprise 90 días. Este sería el cliente que utilizaría en vez de el Vista, que es el que recomienda utilizar (evidentemente, porque se escribió antes de que saliera el 7).

Así, he estado siguiendo el libro y las instrucciones hasta que me dijeron que tenía que utilizar otro servidor más. Por lo tanto, tocaba hacer una nueva copia, cambiarle el nombre, las direcciones IP y poco más.

Para no liar las cosas más de lo que ya las habré liado, vamos a ponerle nombre a las máquinas. El primer server, es Glasgow. El otro servidor, el recién llegado, es Boston. Y el cliente no me acuerdo ahora, y no nos hace falta indicarlo. Me queda decir que son los nombres que me indicaban en el libro.

Puede que algunos sepan dónde metí la pata. Algunos otros, puede que no lo sepan todavía. Resulta que en momento determinado, tenía que añadir en Boston un grupo perteneciente al Glasgow, que es el controlador de dominio. Y no me dejaba. Un error parecido a este es el que me decía:

"The following error occurred while attempting to save properties for group Domain Admins on computer Boston A member could not be added to or removed from the local group because the member does not exist."

¿Cómo que no existe? Además, al lado del nombre del grupo añadido, aparecía una ristra muy grande de números. Mosquea mucho que salga el SID ahí. Hasta que caí en la cuenta. Resulta que a efectos internos, ambas máquinas son el mismo sistema operativo. Son la misma instalación. Luego, se estaban dando de leches. Aquí hay dos opciones para arreglarlo:

1) Utilizar sysprep.
2) Utilizar newsid.

Lo primero de todo. El SID es un identificador único de los usuarios y grupos, entre otros, con los que internamente trabajan los sistemas Windows. Una explicación buena de cómo funcionan está en la Wikipedia inglesa. Como de costumbre, sólo me he leído la parte interesante y la que estaba buscando.

El problema está en que obligar a trabajar dos sistemas distintos con los mismos SIDs es muy peliagudo. Y puede dar problemas como los ya descritos. Así, para evitar estos problemas al reutilizar máquinas virtuales, o hacer distintas instalaciones con una imagen de un mismo equipo, tenemos las herramientas antes mecionadas: sysprep y nersid.

Aunque se puede ver en el mismo artículo qué hace cada una de las dos herramientas, yo cuento lo que se, hasta dónde he llegado, cómo he trabajado con ellas...

Sysprep. Esta herramienta suele (¿solía?) venir en los CDs de Windows XP. No se si estarán en los de Vista y 7. ¿Alguna vez habéis comprado un ordenador que al arrancar ya venía el sistema operativo instalado y sólo os pedía algún paso de lo que sería una instalación completa? Pues en parte, eso se hace con el sysprep. Instalas un sistema. Lo dejas como más te guste. Con los programas instalados, con la configuración deseadas... Después, tienes la opción de crear un fichero que automatice determinados pasos, para que no tengas que meterlos a mano. Incluso, puedes hacer que ya aparezcan las respuestas introducidas y sólo tengas que hacer "siguiente" o que no veas nada y se haga todo sólito. El caso es que al ejecutar la herramienta, eliminas los SIDs del sistema y, cómo mínimo, tendrás que acabar de realizar alguno de los procesos de la instalación. Como ya he dicho, ideal para montar equipos que después se vayan a vender.

Newsid. Esta herramienta estaba en la paquetería del sysinternals. Ahora ya no la encontrarás porque la quitaron. Parece ser que el mismo que la programó, Mark Russinovich, acabó reconociendo que posiblemente no era necesaria. También he oído la otra versión, de que fue la propia Microsoft la que lo dijo. Sea como fuere, ya no está disponible en la paquetería. Y ha sido la que he utilizado (ya que la tenía antes de que la eliminaran). La he arrancado, me ha preguntado si quería un SID aleatorio u otras cosas más... Evidentemente he pedido el aleatorio. También preguntaba si quería cambiar el nombre del equipo (en este caso no) y ya. Al aceptar, ha mostrado un montón de cosas que ha ido cambiando. 5 o 10 minutos en movimiento, un reinicio... Y el problema del aviso de más arriba ya no sale.

¿Alguna vez os ha pasado algo similar? Si es así, ¿Cómo lo habéis solucionado?

miércoles, 17 de noviembre de 2010

Manos libres

Una de manos libres. En tres segundos:

Hace tiempo a mi madre le regalaron en el banco un manos libres. Un Jabra NoSeCuantos.

Para el móvil que tenía entonces iba bastante bien. Se estropeó o empezó a ir mal (como lo suelen hacer los móviles que se usan de una manera normal, es decir, a los 2 años, más o menos). Al cambiar de móvil no fui capaz de sincronizarlo con el bluetooth. Así, hasta que con un móvil algo mejor que el nuevo, con sólo unos 3 meses de diferencia, tampoco fui capaz de sincronizarlo. Y no encontré nada a la hora de buscarlo en Internet.

Hace poco me dio por volver a buscar... Y lo encontré en el enlace de más arriba. ¿Cómo he conseguido sincronizarlo? Pues encontrando la manera de resetearlo. Y debió de ser algo parecido a lo que hacía, pero posiblemente no el suficiente tiempo.

Así, ya llevo unas pocas semanas pudiendo volver a utilizarlo.

lunes, 15 de noviembre de 2010

Donde digo digo, digo diego

¡Ay esas cabezas! Quiero decir... Cabeceras. Hoy quiero seguir jugango con los cambios en los datos que se envian al servidor. Ya me puse un poco pesado con lo que al tamper data I y II se refiere. Ahora, quiero jugar con otras cosas que se podrían hacer con ese programita. Pero, vamos a ver otro para cambiar un poco.

El que quiero enseñar es un proxy local. Al menos, lo voy a llamar así. Este proxy local se llama burp proxy.

Burp proxy

Lo primero que hay que hacer es configurar el proxy para que funcione en un puerto determinado:

Puerto por el que se escucha

Y, configurar el sistema operativo para que la conexión funcione por un proxy y su puerto determinado. En este caso, será en localhost:8080:

Configurando las conexiones

Ahora podemos jugar con este proxy. Sólo para rellenar un poquito más, y para repetirme en una captura, este programa también cambia los datos tal y como hice con el tamper

Modificando datos de javascript

Ahora, vamos a lo que quería hacer. Pongamos un ejemplo. Visitemos el sitio danasoft. Si miramos la zona que tienen para customizar la "firma", nos encontramos con la siguiente imagen:  

Firma sin modificación 

Ahora, vamos a modificar el resultado del cartel. Lo primero, el proxy tiene que estar interceptando (intercept is on). Ahora, tendremos que ir a la sección que muestro a continuación:

Cambios a realizar 

Hay que tener en cuenta las secciones marcadas en rojo.
  1. Marcar el check de User-Agent.
  2. Pulsar el botón edit.
  3. Introducir los datos deseados en el textbox del cuadro rojo de más abajo de la imagen. Una vez se han introducido, hay que pulsar el botón update. ¿Qué datos vamos a introducir? Pues, la verdad, hay alguna sección que no se qué hace, pero las que he tocado me han permitido engañar al cartel.
Esta es la cadena que tiene por defecto:

 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

Y, esto es lo que vamos a poner:

User-Agent: compatible; MSIE 4.0; Windows NT 4.0;

¿Cómo? Pues sí. Me ha costado mucho más que ayer. Ayer hice la prueba cambiando dos valores y no conseguí hacerlo funcionar en muy poco tiempo. Pero ahora, haciendo pocos cambios, como puede ser cambiar el número de la versión, no me ha funcionado. Lo que he tenido que hacer es buscar las cabeceras que se envíaban originalmente, copiarlas, pegarlas y hacer el cambio deseado (y quitarle morralla que sin ellas los ejemplos seguían funcionando).

Así, he conseguido hacer esto: 


Cambio realizado: IE4 en NT 4.0 pero es IE8 en Vista

Ahora. ¿Y si quisiéramos... poner que es Linux?

User-Agent: compatible; MSIE 4.0; Linux;

Obtenemos: 

Cambio realizado: IE4 en Linux pero es IE8 en Vista


Vamos a ir más allá. ¿Y si quisiéramos que dijera que es otro navegador estando en Linux? Por ejemplo... Konkeror.
 
User-Agent: compatible; Konqueror/3; Linux;
 
Este es el resultado, lo menos, curioso:

Resultado curioso al intentar poner Konkeror

Y ya está. No voy a poner más porque con estos ejemplos ya se tiene una idea de lo que quería mostrar. A tener en cuenta que hay que acordarse de que para enviar estas cabeceras hay que estar capturándolas y modificándolas tal y como se hacía con javascript. Con la única diferencia en que en este caso, el dato modificado ya está en un campo y sólo hay que darle al botón de "forward". En estas presentaciones he tenido que desactivarlo de vez en cuando porque me estaba dando problemas a la hora de subir las fotos. ¿Qué más? Sí. Alguna imagen de las que he puesto de los cambios realizados las he hecho después de darme cuenta de que las originales ocupaban demasiado.

Si a alguno se le ocurre otras cosas que hacer con las cabeceras, bienvenidas sean aquí.

martes, 2 de noviembre de 2010

A vueltas con... contraseñas en Windows

A lo largo de la semana tendría que haber jugado un poco más con el tamper data o con las cabeceras. Y, al final, he acabado haciendo otras cosas, que, aunque puede que no sean igual de interesantes, son válidas para escribir aquí. Por lo tanto, voy a la carga.

Hace meses escribí varias veces sobre las contraseñas en Windows: I, II, otro y... otro más. Pues, una vez más, tengo algo que decir al respecto.

Hace unos minutos un amigo ha enviado un correo de un sitio, que, una vez más, enlaza a otro mucho más interesante.

Como ya comentamos en su momento, cuando se almacena una contraseña lo que se hace es guardar su hash. Así, si este hash viaja por la red, se podría capturar, por ejemplo, con un ataque man in the middle y, después, buscar la contraseña que corresponda con ese hash.

Recordando un poco lo que comenté en su momento, hay varias formas de buscar esa correspondencia. O furza bruta: ir probando a pelo todas las combinaciones posibles hasta que una contraseña case con ese hash. O utilizar un diccionario de datos, lo mismo que la posibilidad anterior, pero buscando la posible contraseña en un fichero de texto. O con las rainbow tables.

Todas estas opciones pueden llevar su tiempo. Bastante tiempo. Pero, los sitios que acabo de enlazar lo tienen todo hecho. Le pasas el hash, y te devuelve la contraseña en apenas unos segundos.

He probado un hash al azar y no ha sido capaz de encontrar la contraseña. ¿Qué le vamos a hacer? La cosa está en que este servicio ayudará bastante a a la hora de buscar estas correspondencias.

Ya que estamos. Otro serivio de este estilo, pero para MD5, se puede encontrar en una comparativa que hizo SbD.

lunes, 25 de octubre de 2010

Tamper Data II

Una vez hemos visto que podemos ver en qué lugar se encuentran los datos que estamos visitando con el tamper data, podemos jugar un poquito más con esta extensión del firefox.

Ahora nos vamos a saltar los controles que tienen las páginas web en el lado del cliente. ¿Qué significa esto? Significa que si nos encontramos con una página web que está utilizando javascript para obligarnos a introducir unos datos determinados, podamos hacer llegar al servidor lo que nos de la gana. Incluso estructuras que no deberían poderse enviar. La verdad, muchas veces se ha oído hablar sobre los controles que tiene que tener una aplicación web. Entre otros, no fiarse del lado del cliente y siempre comprobar, como mínimo, el lado del servidor. Pero nunca supe cómo hacerlo hasta que en el FTSAI de Informática64 nos mostraron alguna de estas herramientas. Ahora que lo pienso, nunca se me ocurrió buscarlo.

Bueno. Lo mejor será empezar, ¿no?

Lo primero de todo, ir a la página que queremos probar. He realizado una búsqueda en Google. A partir de ahí he ido enlazando página a página. La primera página tiene manuales, entre otros de javascript, que recopilan ejemplos de otras páginas. En este caso, la página del autor tiene el código fuente y además, lo tiene codificado para ver cómo funciona su ejemplo.

El formulario es este:

Formulario vacío

Vamos a introducir datos cualquiera:

Alert del javascript: El nombre no puede tener números

Luego, le vamos a hacer caso y vamos a introducir los datos que nos pide:

 
Alert del javascript: La edad es erronea. Tiene que ser numérica 

Como se puede ver en el pantallazo, me están controlando que la edad sea un número. Así que lo cambio y...

Alert del javascript: La edad es erronea. El rango de edad es erroneo

No sólo me están controlando que la edad sea un número sino que también se encuentre en un rango determinado. Lo corregimos y me controlan que el correo tenga una estructura correcta:

Alert del javascript: La estructura del correo no es la adecuada

Así, vuelvo a corregirlo y tenemos el resultado de enviar el formulario:

Formulario enviado con los datos correctos

El problema está en que no queremos que nos restrinjan qué datos enviar. Aquí es donde entra el tamper data.  Lo primero de todo es volver a la página donde está el formulario y la recargamos para que los datos introducidos antes no aparezcan. Después, y si ya teníamos abierta la extensión, vamos a darle al botón limpiar:

Botón limpiar del tamper data

Ahora, hay que introducir datos que el javascript los dé como válidos. Por ejemplo, los datos anteriores (por no tener que poner otra captura nueva). En el tamper data pulsaremos sobre comenzar modificación y enviaremos el formulario. Lo primero que hará será preguntar si queremos modificar la petición:

¿Modificar petición?

Pulsaremos sobre modificar. Nos saldrá una ventana como esta. Me ha surgido un problema y que mientras que hacía la captura de esta ventana me ha saltado a otra solicitud. Ahora vuelvo a enviar los datos, los modifico y muestro el resultado:

Ventana en la que modificaré los datos


Ahora es el momento de introducir los datos que queremos enviar. Como estoy escribiendo esto a medida que voy haciendo el escenario, he tenido que desactivar la modificación. Sobretodo porque saltan más cosas además del formulario que queremos tratar. En principio vosotros no tenéis que cambiar nada. Al cambiar los datos que hemos enviado por estos otros:

Datos modificados en el tamper data

Nos encontramos con este resultado:

El formulario se ha comido los datos

Ñam, ñam. ¡Qué ricos están estos datos! Se acaban de comer los datos que no querían que enviásemos. ¿Por qué? Porque, tal y como he comentado antes, no han realizado un control de lo que se está recibiendo en el lado del servidor. Si lo hubieran hecho, podrían haber mostrado un mensaje de error También hay que tener en cuenta que hay personas que desactivan javascript, o porque no quieren usarlo o porque su navegador no lo permite, por ejemplo, algunos adaptados a discapacitados.

Por cierto, hay otras cosas que no se para qué son, luego, si tenéis alguna idea, por favor, comentadla. 

lunes, 18 de octubre de 2010

Tamper Data I

En una serie de posts anteriores, Descargas de videos en youtube I y II, fossie decía que él usaba una herramienta para firefox llamada para tamper data descargar los vídeos de youtube. Ya comenté que quería hacer un post para hablar de esta herramienta para otros fines. Es el momento de analizar las dos funciones ya comentadas: la descarga de los vídeos y la otra función que ya comentaré en la parte II.

Lo primero de todo es instalar la extensión. Desde firefox buscamos en Google

firefox tamper data

Ahora, seleccionamos la primera entrada, pulsamos sombre "seguir a la descarga" y aceptamos la instalación bajo nuestra responsabilidad. Cualquier pregunta que nos haga el navegador, tendremos que aceptarla para poder continuar con la instalación. Una vez más, y tal y como decía un gran profesor que tuve, "aceptamos bajo pena de muerte".

Una vez lo tenemos instalado, podemos acceder a éste desde Herramientas --> Tamper Data:

Herramientas --> Tamper Data

Sólo hay que acer click sobre esta opción para que se nos abra una nueva ventana con el programita.

Tamper Data abierto

Ahora vamos a seleccionar el lugar que queremos visitar. Como vamos a descargar un nuevo vídeo, vamos a buscar uno que pueda ser interesante. En este caso, se me ha ocurrido buscar el documental Capacitados. Será la primera parte, que es el vídeo enlazado.

Una vez hemos cargado la página en cuestión con el tamper data abierto se irán cargando una serie de elementos en un listado. En estos elementos buscaremos el tipo de contenido video/x-flv:

Vídeo encontrado en el listado del tamper data

Se puede ver que ahí está la URL, pero no permite verla entera. Como lo que queremos es coger la URL y tiene un menú contextual al hacer click con el botón derecho sobre ese elemento, seleccionaremos detalles. 

Detalles del elemento seleccionado

Tenemos que indicar que lo queremos decodificado y al hacer click con el botón derecho diremos copiar. Después, vamos al navegador, en este caso seguiré con el firefox y pegamos el resultado. Mucho ojo porque también se copia una cadena como URL=. Luego, al pegar, también aparecerá y hay que quitarla. Al final, nos encontramos con este resultado:

Video en proceso de visionado

Lo suyo es ir a Archivo --> Guardar Como... y ahí seleccionar el destino y asignarle el nombre que queráis, por ejemplo capacitados.flv:

Guardando Capcitados.flv

Y, así, podemos visionarlo tranquilamente desde nuestro reproductor favorito:

Visionando el vídeo

La verdad, es que no está mal la idea de utilizar el tamper data para esta tarea. 

sábado, 9 de octubre de 2010

El maps y las coordenadas.

Algunos ya sabéis que hace una semana, más o menos, me fui con unos amigos a hacer piragüismo. El lugar fue Las hoces del Duratón.

Para ir, me pidieron que buscara cómo ir allí. Para ello, busqué primero en Google "hoces del duratón". Así, encontré el enlace incluido en el nombre del lugar. 

Mirando en la página, encontré una sección. 

Index de Las hoces del Duratón

Tenemos la sección de cómo llegar. Si miramos ahí dentro nos encontramos con lo siguiente:

Como llegar a Las hoces del Duratón

Como se puede ver, hay una sección en la que ponen coordenadas. Por ejemplo, las coordenadas GEO que tenemos son:

Latitiud: 41º 16' 35.7'' N
Longitud: 3º 53' 5.79'' W

Así, solicitando en el Google Maps "como llegar" de esta forma:

Introduciendo los datos en Google Maps


¿Quieres ver cómo llegar desde Madrid hasta este punto?

Ver mapa más grande

Y así te muestra cómo llegar de una manera precisa. Como podéis ver, incluso introduciendo coordenadas puedes ver cómo llegar.