viernes, agosto 12, 2011

Listando ficheros en servidores web con .DS_Store

Uno de los ficheros que la herramienta de búsqueda de backups en FOCA Pro persigue es el .DS_Store. Este fichero se crea cuando el sistema de archivos es manipulado desde un equipo con Mac OS X. Es similar al thumbs.db de los sistemas Windows, pero para los sistemas Apple.

La gracia de este fichero es que muchas veces aparece en los servidores web, y puede convertirse en un auténtico listado de ficheros del directorio. El único problema es que hay que convertir el formato del mismo desde UTF-16 a UTF-8, tal y como explicó nuestro compañero Manu "The Sur" en un post sobre cómo extraer información para un forense de ese fichero.

La clave está en que, tanto si la FOCA lo encuentra, como si lo indexa Google (en la siguiente imagen se ve que hay más de 17.000 referencias a ficheros con extensión DS_Store), de él se puede extraer mucha información.


Figura 1: Ficheros .DS_Store indexados en Google

Algunos de esos ficheros, en sitios muy inesperados, tal y como se puede ver en la siguiente imagen. (Os juro que yo no puse allí esos ficheros).


Figura 2: .DS_Store en sitios .gov

En este ejemplo, me descargué uno de "por ahí" y le saqué los strings, para descubrir los nombres de ficheros, y se puede ver que aparecen directorios y archivos, incluso uno de ellos en formato .fla.


Figura 3: Nombres de fichero extraídos con strings

En definitiva, puede utilizarse como si fuera un .listing dentro del servidor...

Saludos Malignos!

5 comentarios:

  1. Hola
    Los mensajes de error «No such file ...» es porque está incorrecta la sintaxis. Debía ser:
    iconv -f utf-16 -t utf-8 etc...
    Pero si vas a usar strings ¿para qué iconv o al revés?
    Ese comando devuelve algo porque interpreta:
    iconv -f utf-16 {lista de ficheros}|strings
    Y no encuentra ni al fichero to ni el utf-8

    Esto funcionaria
    iconv -f utf-16 DS_Store
    o
    iconv -f utf-16 -t utf-8 DS_Store (preferible
    Pero devolveria basura de haberla
    Mejor esto:
    strings -e l DS_Store

    Un saludo y suerte
    PD. (malvada) Hay alguien por ahí (un técnico no un tecnicoless) que encuentra al windows 7 inusable porque el puntero del mouse se convierte (por sí solo hay que suponer) en una lupa y se ve obligado a reiniciar por eso y por no encontrar la consola.

    ResponderEliminar
  2. Llevas razón René. Me salió la lista de ficheros, descargué el .fla y ni me fijé en el comando... gracias por la aclaración.

    Saludos!

    ResponderEliminar
  3. René, el iconv lo hace para pasar de utf 16 a utf 8 (obvio), y luego el strings para filtrar toda la basura que pueda haber en el fichero y unicamente extraer las cadenas de texto.

    ResponderEliminar
  4. Anonimo, iluminando con su sabiduría, como siempre hace. Gracias.

    En el comentario anterior escribí:
    strings -e l DS_Store porque es lo que uso normalmente (Windows usa UTF-16LE)

    Está mal, debe ser así
    strings -e b DS_Store

    l=little endian
    b=big endian

    y si esperas textos de 3 caracteres
    strings -e b -3 DS_Store

    Me tomé la molestia de hacer algunas pruebas con iconv, strings y iconv|strings.
    Probé con Cygwin (sobre windows 7) Ubuntu y FreeBSD.
    La idea que me llevé es que si el fichero contiene trozos binarios mejor no mezclar a iconv porque puede fallar. (iconv en realidad es para pasar de un encode a otro, no para manejar binarios)

    Creo que es mejor usar solamente strings en estos casos.

    ResponderEliminar
  5. será que strings es para manejar binarios... claro, su propio nombre lo indica

    ResponderEliminar