domingo, 16 de enero de 2011

Alternate Data Streams



¿Qué son los ADS?

Básicamente son flujos (de bytes) de datos almacenados dentro de un fichero, es decir, ficheros dentro de ficheros y es una carácteristica "especial" que nos otorga el sistema de archivos NTFS de Microsoft.

¿Para que vale esto?

Pues a priori no parece que esto nos pueda servir de mucho, sin embargo, su cara oscura puede que interese ya que se podría:


  • Ocultar ficheros de "cualquier tipo" pasando totalmente desapercibidos por un administrador de sistemas.
  • Oculta carpetas.
  • Ejecutar un fichero oculto (esta es la que más me gusta)...

Pero mejor que explicarlo, veamos algún ejemplo, y para ello se hará desde línea de comandos.

Ocultando un fichero de texto en otro fichero de texto:

Creamos un fichero de texto que se llame cita_Quijote.txt y le añadimos el texto:

En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor...

Creamos otro fichero de texto que se llame cita_estega.txt y le añadimos el texto:

Free your body and soul
Unfold your powerful wings
Climb up the highest mountains
Kick your feet up in the air
You may now live forever
Or return to this earth
Unless you feel good where you are!

Mas o menos quedaría esto:




Es interesante prestar atención al tamaño del fichero cita_Quijote.txt.

Creamos un ADS con cita_estega.txt sobre cita_Quijote.txt con el comando:

type cita_estega.txt > cita_Quijote.txt:eternoAprendiz 

A continuación eliminamos el archivo cita_estega.txt. 

Si observamos de nuevo el tamaño del archivo cita_Quijote.txt, comprobaremos que no ha cambiado en nada su tamaño, sin embargo esto no es así, realmente ahora contiene a cita_estega.txt, aun incluso habiéndolo eliminado. 

Para demostralo escribimos el comando:

more < cita_Quijote.txt:eternoAprendiz

Como ya suponíamos podemos ver el contenido de cita_estega.txt:




En realidad esto es un simple ejemplo, se pueden ocultar carpetas y ficheros de cualquier tipo y tamaño.

Si ademas uno de esos ficheros es un ejecutable (podría ser malware), incluso podríamos ejecutarlo tan solo con utilizar el comando start.

Como se intuye, esto da escalofrios.

Para finalizar, si os quedan ganas de profundizar en esta maravilla que Microsoft nos regala, os recomiendo que leais uno de los tantos y maravillosos artículos que nos proporciona Kriptopolis:

jueves, 6 de enero de 2011

Recuperación del arranque en windows 7

Si alguna vez necesitamos restaurar o recuperar el arranque de Windows 7 por cualquier motivo (virus, gestores de arranque, etc) y las opciones que encontramos por la red no nos ayudan porque obtenemos mensajes del tipo:

No se ha encontrado elemento...


Tal vez si sigues estos pasos podamos solucionar el problema:
  1. Necesitamos arrancar el PC con el disco de Windows 7 o en su defecto creando un disco de recuperación:
    • Panel de control > Sistema y seguridad > Copias de seguridad y restauración.
  2. Seleccionamos la opción de Recuperar el sistema hasta llegar al símbolo del sistema.
  3. Ejecutamos el comando diskpart y seguimos la secuencia:
    • list disk.
    • select disk = 0
    • list partition
    • select partition = 1
    • active
    • exit
  4. Reiniciamos el sistema y volvemos a repetir el paso 2.
  5. Ahora ejecutamos la siguiente secuencia de comandos:
    • bootrec /FixMbr
    • bootrec /FixBoot
    • bootrec /RebuildBcd
  6. Reiniciamos y listo.
Espero que con esto consigas recupera el registro de arranque.

jueves, 30 de diciembre de 2010

Una de esteganografía

Un tema que me apasiona es el del arte y ciencia de ocultar información.

Para ello disponemos de técnicas criptográficas que están muy avanzadas y que nos proporcionan algoritmos a día de hoy seguros e irrompibles.

Lo que ocurre es que cuando uno ve una codificación extraña de símbolos, automáticamente sabe que la intención del remitente es la de ocultarnos el mensaje.

Pero ¿Cómo podríamo hacer lo mismo pero haciendo que el mensaje pasase totalmente desapercibido por los ojos de curiosos?...

La respuesta a esta pregunta nos la da la 'esteganografía' y que como burda definición podriamos decir que es "escritura encubierta", en contraposición a la criptografía, que podríamos definirla como "la transformación de un mensaje legible en uno ilegible por nadie, excepto por el receptor".

Un ejemplo clásico de esteganografía empleado ya en tiempos remotos sería la famosa escritura en papel con tinta invisible (zumo de limón).

Trataré de explicar someramente dos técnicas básicas esteganográficas y veremos algun que otro ejemplo, para ello y acorde con nuestros tiempos usaremos archivos de imágen como contendor para ocultar nuestro mensaje, pero podrían ser otras extensiones como audio, etc.

La imagen de origen sera esta:


Una foto cándida de mi chiquitín y yo en la ciudad más bella del mundo (Salamanca), que nos servirá de contenedor de mensajes y/o archivos ocultos.

La primera técinica es por EOF (End Of File) o Fin De Fichero y que básicamente consiste en insertar el mensaje (en crudo o cifrado) al final del fichero.

Como ejemplo pondré el mensaje secreto justo al final del archivo origen que como sabemos tiene extensión PNG y el EOF nos lo dá la marca "IEND".

Así es como quedaría la imagen con el mensaje secreto:



Ahora el receptor de mensaje solo tendrá que editar la imagen con un editor hexadecimal y voilá.



Como se observa el mensaje está en crudo, pero si hubiesemos utilizado cualquier algoritmo criptográfico moderno el resultado sería totalmente imperceptible por el "enemigo". 

Un ejemplo de esto último se podría hacer con un cifrado básico e inseguro como el cifrado XOR con clave "eternoAprendiz" y cuyo resultado sería esto otro:


La segunda técnica es un poco más elaborada y por eso es también la más usada y se denomina "LSB (Less significant byte)" o inserción del último bit menos significante.

Como todos sabemos, una imagen está compuesta por una matriz de píxeles. 
Cada pixel se construye con tres bytes. 
Cada byte codifica un color básico (rojo, verde, azul) en un escala de 0 a 255, de manera que si queremos codificar un pixel con el color blanco pues pondríamos cada byte con valor máximo (255) o si por el contrario quisiéramos codificar el pixel con el color negro, pues pondríamos cada byte con valor mínimo (0) y así jugando con la mezcla de estos tres byte conseguiremos los 16 millones de colores que podemos formar.

Pues la mágia de esta segunda técnica es aprovecharse de los bits menos significativos de cada byte de un pixel para codificar el mensaje.

El resultado es una nueva imagen con colores distintos a la original pero que para el ojo humano es inapreciable.

Como hacer esto último a mano es tedioso, lo que haremos es usar una aplicación openSource, desde mi punto de vista excelente, que se llama OpenStego. 

Esta vez ocultaremos un fichero de texto, con un mensaje secreto y que dejo a los lectores que hagan el paso inverso par leer dicho mensaje secreto.



El resultado es esta otra imagen:



Logicamente no solo podremos incrustar mensajes de texto, sino cualquier formato binario que se nos ocurra, desde otra imagen, a un audio, video, pdf, zip, ....y hasta el infinito y más allá.

La esteganografía además nos permite incrustar nuestra propia huella digital (fingerPrint). Pensemos que algún día elaboramos algún trabajo que alguien nos plagia, pues si a ese trabajo le hemos incrustado nuestra huella tendremos todo de nuestra parte para demostrar que el trabajo es nuestro.

Para finalizar dedico este post íntegramente a mi gran amigo Alberto (Magic). Va por ti maestro.

sábado, 11 de diciembre de 2010

El Principio de Pareto

Si alguna vez te has preguntado:

Si me esfuerzo tanto ¿Por qué obtengo tan pocos resultados? 

Entonces amigo mio, el principio del pareto quizás dispe tu duda.

Este principio empírico, observado y enunciado por Vilfredo Pareto, es utilizado en múltiples disciplinas, entre las  que se encuentran la ingeniería del software y que viene a decir algo así como:



"el 80% del esfuerzo de desarrollo (en tiempo y recursos) produce el 20% del código, mientras que el 80% restante es producido con tan sólo un 20% del esfuerzo"
o 
"El 80% de los resultados proviene del 20% del esfuerzo"
o
"Probar el 20% del código elimina el 80% de los fallos"
o
"El optimizar el 20% del código origina un 80% de mejora del rendimiento".

Como se menciona anteriormente esto es una regla de sentido común que se ajusta bastante a la realidad.

No obstante te recomiendo que amplíes horizontes consultando los siguientes artículos:

viernes, 12 de noviembre de 2010

Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...

Es posible que en nuestro día a día surgan ocasiones en las que tengamos que eleborar o maquetar algún tipo de aplicación, web, incluso crear algún tipo de letra... resumiendo, que tengamos que teclear bastante cantidad de texto y además sin saber que poner.

Pués bien, para estos menesteres existe un texto que de seguir así se va a convertir en estandar de facto "si es que ya no lo es" y cuya denominación es Lorem Ipsum.

Es un texto sin sentido ni significado, derivado del latín y proveniente de la obra de Cicerón (45 a. C.).

Un ejemplo podría ser este:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vestibulum cursus nisi, in luctus lacus aliquet a. Vestibulum nisl odio, tincidunt sit amet molestie pretium, tempor id odio. Phasellus cursus arcu at leo lacinia in eleifend erat consequat. Nunc dui nulla, feugiat et imperdiet iaculis, fermentum in urna. Integer lacinia mattis enim, vel tempus metus vestibulum eu. Sed sed consequat felis. Morbi id nunc quis lacus accumsan dignissim a a nisl. Sed auctor aliquet mauris, ut auctor tortor placerat ut. Nullam eget erat metus. Donec feugiat magna sit amet lorem hendrerit nec laoreet sapien lobortis. Suspendisse egestas nibh nunc. Ut at consectetur nisl. Maecenas sagittis sapien gravida urna tempor luctus. Nulla vitae porttitor lectus. Maecenas sagittis ultrices augue, malesuada eleifend nisi feugiat in. Duis sagittis."

No deja de llamarme la atención la similitud en cuanto a la acción de Lorem Ipsum con aquel pangrama que tantas veces hemos visto en windows cuando queremos ver como de bien queda un font:

"El veloz murciélago hindú comía feliz cardillo y kiwi".

No degeis de leer estos enlaces para ampliar vuestros conocimientos:
Con todo esto y un poco de imaginación, el que rellena texto inutil a mano es porque quiere.