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.