Archivos para 30 November 1999

El último domingo 10 de noviembre se cumplieron 30 años del anuncio del lanzamiento de Microsoft Windows 1.0, la primer versión de ese sistema operativo que dominaría el mercado hasta el día de la fecha. Esa primera versión, que fue anunciada como Interface Manager (luego sería re nombrada a Windows) sería finalmente liberada al mercado el el 20 de noviembre de 1985, con un retraso muy importante desde su lanzamiento; y no sería muy exitosa, a pesar de ser el primer trabajo de Microsoft donde el usuario podía trabajar con una interfaz gráfica posterior a MS-DOS, dejando así la escritura de comandos y reemplazándola por el hermoso y vigente mouse.

Algunos datos de color: el sistema operativo se distribuía en 5 diskettes de 5¼ de 360 KB y requería 192 KB de memoria RAM para su ejecución. Increíble cómo cambió la tecnología (y la PC fundamentalmente) en 30 años. Si las cuentas no me fallan, hoy en un USB de 1 Gb. que es algo común y corriente, podríamos alojar casi 600 mil veces Windows 1.0. Increíble. Finalmente, Windows 1.0 dio lugar a su sucesor (2.0) en noviembre de 1987, comenzando así el camino hasta lo que hoy conocemos como Windows 8.1 Preview.

Windows 1.0

Justamente en el siguiente video, pueden ver un «interesante» trabajo que hizo un nerd por ahí que le instaló Windows 1.01 a una maquina y lo comenzó a actualizar por 11 versiones hasta llegar a Windows 8.1 Preview (en el medio: Windows 2.03, Windows 3.0, Windows 3.1, Windows 95, Windows 98, Windows Me, Windows XP, Windows Vista y Windows 7):

Más allá del amor, cariño, admiración o preferencia que podamos tener por Apple o Linux, Microsoft Windows ha sido sin dudas alguna el sistema operativo dominante del mercado estos últimos 30 años y por algo será, algo bien habrán hecho; y el video muestra claramente que sus versiones han ido acompañando la evolución gráfica e informática de las computadoras.

Personalmente pasé solo un par de años de rebeldía con Windows en mi fanatismo por el software libre pero hoy en día soy, por un lado, mucho más agnóstico en temas de marcas y tecnologías, entiendo que lo mejor es no casarse con ninguna e ir utilizando la que mejor se adecúe según las necesidades, el contexto y, por qué no, el gusto de cada uno (de hecho, uso los tres sistemas operativos en mi vida cotidiana). Por otro lado, debo reconocer que con una visión más adulta o madura en mi crecimiento profesional, entiendo que Microsoft ha hecho muchísimo por las tecnologías, que así como tiene productos bastante malos tiene productos excelentes que no han logrado ser superados en el mercado y realmente tengo mucha admiración por el trabajo de la empresa en muchos aspectos.

En fin, como sea, más allá de los gustos nadie puede discutir la relevancia de Windows en el mundo informático y habrá que ver si Google o Facebook se bancan tamaño liderazgo del mercado por 20/25 años más.

Aprovecho para alertar a los lectores sobre mi semi-ausencia en las próximas semanas por futuros cambios importantes en la vida. Estaré un poco ausente aunque intentaré ir posteando aunque sea contenidos cortos para mantenerlos atentos. 🙂 Ahora sí, vamos al post.

La gran mayoría de los usuarios de Windows conoce (o mejor dicho ha sufrido) la famosa pantalla azul de la muerte, esa odiosa pantalla que nos da Windows cuando el sistema se cuelga:

Blue Screen Of Death

¿Quién no la ha sufrido? Calculo que todos algunas vez pero, ¿alguna vez vieron esta?

Se trata nada más y nada menos que de la Pantalla Roja de la Muerte (Red Screen of Death), de la cual me enteré leyendo este post de Alt1040 (pueden ver un lindo video musical con los sonidos de errores de Windows allí).

¿Por qué nadie conoce esta pantalla roja de la muerte? Porque aparece sólo en Windows 98 y versiones beta de Windows Vista, mientras que la otra aparece… ¿siempre? 😛

Acá tenemos un muchacho que la capturó en video (vean el minuto 1:50 aproximadamente):

En fin, si se sorprendieron como yo, hoy ya aprendieron algo nuevo. 😉 ¿Habrá más Screen of Death?

Les voy a contar algo que quizás les sorprenda: ayer utilicé por primera vez Windows Vista. Es más, ya he probado Windows 7 (deuda) hace unos cuantos días saltando derecho desde XP. En fin, el hecho es que lo estuve probando para escribir un artículo sobre seguridad en Windows Vista y estoy en ello.

Pero me llamó la atención un detalle respecto a la usabilidad del Vista, concepto que ya comenté anteriormente en el post «¿Esto como se usa?«. Miren el menu del sistema operativo y diganme: ¿qué botón apretarían ustedes para apagar el equipo?

Windows Vista

Si eligieron el primer botón de la izquierda, están equivocados, ese botón suspende el equpo. Para apagar el equipo se debe utilizar el botón de más a la derecha (el triángulo recostado). ¿Estoy yo equivocado o el primer impulso es a presionar el otro botón?

Creo que claramente es un problema de usabilidad. ¡Ojo! Vale aclarar que el símbolo que yo creo que la gran mayoría de los usuarios pensarán que es para apagar, está correctamente dibujado y es el símbolo de suspender (ver gráfica abajo). Sin embargo, me parece que da mucho lugar a confusión y por lo tanto sigue habiendo un problema de usabilidad.

apagar_equipo

¿A ustedes qué les parece?

Bonus

Un chiste sobre Windows 7, visto acá.

Windows 7

Les voy a contar una historia.

Prologo: el descubrimiento

Todo empezó hace unos días, leyendo el siguiente post: «How to Crack a Window’s Password in 5 Minutes» (en español, Cómo crackear el password de Windows en 5 minutos). El post decía, entre otras cosas:

«Sin importar cuál sea la razón para necesitarlo, encontrar la contraseña de Windows se generalmente simple, y puede ser realizado en un periodo corto de tiempo.»

«Para encontrar la contraseña de Windows, usted necesitará un programa llamado Ophcrack. Es completamente gratuito y funciona muy bien»

«… el Live CD iniciará las tablas rainbow y automaticamente comenzará a trabajar por la contraseña. Para la mayoría de las contraseñas de usuarios, solo tomará unos segundos crackearlas. Para contraseñas alfanuméricas más extensas, tomrá unos minutos, pero es la exepción, no la regla.»

«Una vez que encuentre la contraseña, anotala por ahí, quitá el CD y reiniciá el sistema. Ingresá la contraseña en el login y luego hace lo que quieras.»

«Nota: el sentido común indica que esto solo debe ser utilizado en computadoras donde usted está autorizado a acceder. Si utiliza esto para computadoras no autorizadas, eso es ilegal. Este artículo es solo confines informativos.»

Nota de mundobinario: hago extensiva la última nota a este post. 😉

Primer estadio: escepticismo

La realidad es que luego de leer el artículo, pensé que esto se trataba de un titular, no digo amarillista, pero sí ventajoso. Supuse que el sistema funcionaría con contraseñas simples pero que ante contraseñas complejas (como la mía) esto no podía funcionar. Mis aprendizajes sobre ataques de fuerza bruta me hacían comprender que, a mayor complejidad, y dada la función exponencial, llega un momento en que el tiempo para calcular una contraseña va más allá de lo útil. La verdad, descreí…

Segundo estadio: las pruebas

De todas formas, más allá de mi opinión, creí que valía la pena realizar las pruebas pertinentes. Descargué el LiveCD y lo probé en una máquina virtual con Windows XP. El CD bootea y arranca a trabajar. El resultado, en la imagen a continuación:

crakpass

Como podrán observar, ofusqué cierta información ya que la password que efectivamente el sistema encontró, es una que utilizo normalmente. Observar que:

  • el primer recuadro azul marca la contraseña del usuario «Administrador». El tiempo que demoró en encontrar la contraseña fue de aproximadamente 10 minutos.
  • el segundo recuadro marca la contraseña (vacía) de un usuario que tengo configurado así. El tiempo que demoró fue unos pocos segundos (literalmente).
  • abajo a la derecha se ve el tiempo total de finalizar todo el proceso aunque, como ya mencioné en el ítem 1, la password de administrador ya figuraba desde el minuto diez.

Finalmente hice dos pruebas más:

  1. Modifiqué la contraseña a «123456» y esta fue encontrada en un minto y medio (ver imágen).
  2. Modifiqué la contraseña por una más compleja que la mía aún: «UnWi-*%$Np98ww». La misma no fue encontradada luego de media hora (ver imágen).

Por lo tanto, pude concluir que este sistema de una u otra forma estaba utilizando algún método mejor que el clásico de fuerza bruta, que podía obtener contraseñas complejas… pero no tanto.

De todas formas estaba anonadado. Toda mi teoría sobre seguridad en contraseñas destruida en diez minutos. ¡Qué contraseña iba a utilizar ahora que la mía era fácil de obtener!

Tercer estadio: la comprensión

Nota de mundobinario: todos los méritos de esta sección para este post.

Definitivamente las pruebas me superaron, asumí mi derrota y pensé: «no hay derrota si hay aprendizaje». Por lo tanto, decidí leer un poco a ver por qué este método funcionaba.

Como primer conclusión estaba claro que, como ya mencioné, esto no utilizaba un ataque de fuerza bruta clásico; y comprendí que justamente esto de las tablas rainbow no se trataba de este tipo de técnicas. Luego decidí ver qué decía el sitio oficial, que describe que se utilizan ataques de fuerza bruta para contraseñas simples y tablas rainbow para complejas. Incluso se pueden descargar las tablas que son muy pesadas (¡muy! desde 500 Mb. hasta varios Gigas).

¿Qué son las Rainbow Tables?

Cuando un usuario asigna su contraseña, el sistema operativo necesita guardar esa contraseña. Para no hacerlo en texto plano (sería muy simple encontrarla), lo que hace es aplicar una función Hash y almacenar el resultado de dicha función en un archivo (en el caso de Windows en C:\Windows\System32\config\SAM).

Una función Hash es una función que devuelve un valor casi único por cualquier cadena de texto (o incluso archivos, directorios, etc.). Es decir, si yo le aplico un Hash MD5 (un tipo de Hash) a la palabra «Sebastián», el resultado será «c2d628ba98ed491776c9335e988e2e3b«. Y si hago lo mismo con «unmundobinario.com», el resultado será «373e838e5050faca627b0433768aedef«. Claramente el resultado de una función Hash dista bastante de almacenar el texto plano.

Sin embargo, las funciones Hash tienen un inconveniente. Siempre que yo ponga la misma cadena obtendré el mismo resultado. Y aquí aparecen las tablas rainbow.

Basicamente a alguien se le ocurrió lo siguiente: no necesito hacer un ataque de fuerza bruta (prueba-error) para obtener la contraseña. Si conozco la función Hash, conozco la contraseña.

Una tabla rainbow es una colección enorme de Hashes con los algoritmos más conocidos. De esta forma, lo que antes era un ataque de fuerza bruta ahora es una búsqueda en unas tablas gigantes (literalmente). Obviamente el gran problema de estas técnicas es el espacio. De hecho, aunque aquí fue explicado de forma resumida, se utilizan funciones de reducción para no tener que ocupar tanto espacio de almacenamiento.

Entendido el método (¿entendido?) se entiende por qué en las pruebas que hice no se encontró en un caso el password: el motivo fue que no estaba cargada la función HASH de dicho password en la tabla de Hashes utilizada por la aplicación.

Nota de mundobinario: además del post citado en este estadio, pueden ver más información aún (en inglés) aquí.

Cuarto estadio: la conclusión

Cabe mencionar que, según el post que me ayudó a comprender esto, existen dos alternativas para poder segurizar las contraseñas almacenadas con Hash:

  1. Utilizar espacios en blanco en las contraseñas. Esto lo probé con una contraseña muy simple («esp acio») y el programa no pudo encontrar la contraseña.
  2. Añadir variables aleatorias en la generación del Hash. Es decir, que si pongo dos veces de contraseña Sebastián, obtener dos Hash válidos con una parte fija (siempre igual) y otra variable.

Luego de «experimento» podemos agregar que contraseñas MUY complejas también zafan (por ahora, y según las tablas que se utilicen) de este método.

Como conclusión, y en primer lugar está claro que todos los días se aprende algo nuevo. :mrgreen:

Las técnicas de «hacking» están aprovechando los avances informáticos (y en materia de Inteligencia Artificial). Podrán observar que estas herramientas están al alcance de cualquiera asi que tengan cuidado a quién prestan su PC.

Por otro lado, me queda la duda por qué los Sistemas Operativos existiendo estas técnicas, no aplican funciones aleatorias a los Hash antes de guardar la contraseña. Debo seguir leyendo para dilusidar una respuesta pero espero que algún lector que sepa más que yo nos adelante por qué no se implementan medidas para segurizar este aspecto.

Bueno, espero que hayan disfrutado este post tanto como yo. Les debía un post así de largo y portense bien y usen esta herramienta solo para probarla (o como mucho con algún amigo o hermano para hacerle una joda. Hasta ahí se lo permitimos…). 😉