Esteganografía: Ofuscación de archivos (parte 1)

Entendamos como “ofuscación de archivos” el hecho de esconder un archivo dentro de otro. Es posible, usando comandos básicos de Unix, ofuscar un archivo y que pase desapercibido. En esta etapa solo usaremos el comando para concatenar archivos cat.

Teóricamente, lo que haremos será concatenar dos tipos de archivos, en este caso un archivo de imagen junto con un zip o un rar. Si ponemos nuestro fichero comprimido al final de un archivo de imagen, podremos ver la imagen sin problemas y poder debajo tener nuestro archivo ofuscado. Hice algunas pruebas en M$ Windows con distintos antivirus enviando el archivo por correo electrónico y descargandolo, sin que se detectara el archivo ofuscado.

El comando es ultra sencillo, lo único que haremos sera concatenar dos (o más) archivos al final de nuestro fichero de imágen. Tenemos una nuestra imagen “imagen.jpg” y nuestro zip “archivo.zip“:

$ cat imgen.jpg archivo.zip >archivo_ofuscado.jpg

Ahora “archivo_ofuscado.jpg” tiene un tamaño igual a la suma de imagen.jpg con archivo.zip.

Ejemplo practico:

[zerial@balcebu ofuscar]$ ls -l
total 408
-rw-r--r-- 1 zerial users 408482 Oct 27 09:54 archivo.zip
-rw-r--r-- 1 zerial users 6041 Oct 27 09:52 dummie.jpg
[zerial@balcebu ofuscar]$ cat dummie.jpg archivo.zip >archivo_ofuscado.jpg
[zerial@balcebu ofuscar]$ ls -l archivo_ofuscado.jpg
-rw-r--r-- 1 zerial users 414523 Oct 27 09:54 archivo_ofuscado.jpg
[zerial@balcebu ofuscar]$

El tamaño de archivo_ofuscado.jpg es la suma de los dos anteriores. Tambien podemos ver el tipo de archivo que son cada uno:
[zerial@balcebu ofuscar]$ file *
archivo.zip: Zip archive data, at least v1.0 to extract
archivo_ofuscado.jpg: JPEG image data, JFIF standard 1.01
dummie.jpg: JPEG image data, JFIF standard 1.01
[zerial@balcebu ofuscar]$

Tanto nuestro archivo de imagen original como nuestro archivo ofuscado son JPEG. Si lo abrimos con el navegador o con un editor o visor de imágenes podemos ver ambos archivos sin problemas. Además, podemos descomprimir con “unzip” nuestra imagen y archivo ofuscado archivo_ofuscado.jpg.

[zerial@balcebu ofuscar]$ unzip archivo_ofuscado.jpg
Archive: archivo_ofuscado.jpg
warning [archivo_ofuscado.jpg]: 6041 extra bytes at beginning or within zipfile
(attempting to process anyway)
creating: tipografias/
inflating: tipografias/Aller_Bd.ttf
inflating: tipografias/Aller_BdIt.ttf
inflating: tipografias/Aller_It.ttf
inflating: tipografias/Aller_Lt.ttf
inflating: tipografias/Aller_LtIt.ttf
inflating: tipografias/Aller_Rg.ttf
inflating: tipografias/AllerDisplay.ttf
[zerial@balcebu ofuscar]$

El comando nos da una advertencia diciendonos que hay bytes de sobra en el archivo, los omite y continua con la descompresión exitosamente. Unzip (tambien probado con WinZip y WinRar) advierte que hay bytes de sobra, pero lo descomprime satisfactoriamente y sin errores. Podemos hacer lo mismo con cualquier tipo de archivos; videos, musica, documentos de texto, etc.

nota: Gracias a la aclacarión de Alejandro Saez, he agregado el termino “Esteganografía” al título, para evitar confusiones.

16 comentarios

  1. Se entiende perfecto

  2. Con unzip perfecto, pero no con rar 🙁

    Conste lo he probado tanto con la versión de rar de Debian/GNU Linus Testing como con la bajada de la página web oficial (por si las moscas), sin éxito. En ambos casos, la versión es la 3.9.3. ¿Cómo lo hiciste tú?

  3. Zerial

    octubre 28, 2010 a las 8:34 am

    jors: El “unrar” que estoy probando es el:

    UNRAR 3.93 freeware Copyright (c) 1993-2010 Alexander Roshal

  4. Al parecer con el unrar open source no ignora los bytes iniciales (imagen) pero el unrar free en efecto funciona sin problemas.

    Recuerdo que este método se usaba para subir archivos a servicios de posteo de imagenes como imageshack

  5. Zerial

    octubre 28, 2010 a las 5:12 pm

    @Akranus: Claro. Mi idea es en la segunda parte explicar como “separar” los archivos, una vez unidos. Para evitar este tipo de problemas.

  6. excelente post zerial, me llamó mucho la atención.

    saludos

  7. Hola Zerial, te felicito por tan buen sitio, no se donde estaba yo que nunca lo vi, hasta hora claro.
    Sabes, me gustaría que me respondieras estas preguntas, ¿Por donde empiezo?, ¿Que temas serian los principales? ¿Que tipo de pruebas podría hacer? Referente al hacking y seguridad.
    Saludos desde México.

  8. jeje funciona funciona, bonito truco!

  9. No quiero ser quisquilloso porque la información está bien y te he leído desde hace tiempo y se tienes un nivel bueno (mucho mayor que el mio). Pero eso no es ofuscación… eso es esteganografía.

    La ofuscación es escribir código tan lioso y enrevesado que solo tu lo entiendas.

  10. Por nivel bueno quería decir un nivel muy bueno pero voló el muy ¬¬

    Saludos 🙂

  11. Zerial

    noviembre 2, 2010 a las 9:08 pm

    Hola Alejandro Saez: eso que te refieres es especificamente ofuscacion de codigo; pero ofuscar como verbo es dejar ilegible o esconder “algo”

  12. Hola, muy buen tutorial, yo hice un tutorial algo asi hace tiempo.

    Quiero aclarar 3 cosas:

    1.-Alejandro tien razon, esto seria Esteganografia EoF en entornos linux http://neobits.org/?p=276

    2.-Ofuscacion no es ocultar y aqui cae el problema, la ofuscacion es hacer algo mas dificil de leer o entender (sin dejar de ser legible por *algo o alguien*) Y la estegano es OCULTAR NADA MAS, no hacer algo dificil de leer

    3.-El post 2 de este tema si es mas enfocado a ofuscacion 😉

    Saludos 😉

  13. Hola, hace algún tiempo conocí esto de la esteganografía y si bien no sé mucho ni he practicado bastante, me parece un arte bastante interesante y útil en muchos casos.

    En cuanto a tu post, más o menos es lo mismo que se puede hacer con un aplicación llamada Steghide, aunque debo decir que sólo la he probado insertando una imagen dentro de otra.

    También hay un método que me parece más entretenido que es LSB, que trata sobre modificar el bit menos significativo de un archivo.

    Pero como te decía, no conozco mucho sobre esto, sería interesante que nos mostraras un poco más de este arte, si puedes, claro.

    Saludos y muy buen blog!

  14. alert(‘¡Hackeado!’);

  15. I see you don’t monetize your website, but
    you can earn additional cash every day. It is very easy even for noobs,
    if you are interested simply search in gooogle: pandatsor’s tools

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.