Bienvenidos a un nuevo post en ByteMind. En el caso de hoy les vamos a enseñar como recuperar ficheros que han sido eliminados con la herramienta Foremost.
¿Qué es Foremost?
Foremost es una herramienta forense para la recuperación de ficheros basado en sus cabeceras, footer y estructuras de datos internas. Foremost puede trabajar con imágenes, como las generadas por dd, Safeback, Encase, etc, o directamente sobre un disco. Las cabeceras y footers pueden ser especificadas mediante un fichero de configuración o utilizar la línea de comandos para especificar el tipo que se desea buscar.
Estos tipos integrados observan las estructuras de datos del formato de un archivo dado permitiendo una recuperación más rápida y fiable.
Por defecto, realiza la búsqueda de los siguientes tipos de fichero:
- jpg -> soportado para los formatos JFIF y Exif
- gif
- png
- bmp
- avi
- exe -> soporte para binarios PE de windows, en este caso extrae DLL y ficheros EXE
- mpg -> soporta la mayoría de ficheros MPEG (siempre que comiencen por 0x000001BA)
- waf
- riff -> en este caso extraerá AVI y RIFF ya que utilizan el mismo formato de fichero (RIFF)
- wmv
- mov
- ole -> en este caso tomará cualquier archivo utilizando la estructura OLE. Lo que incluye ficheros powerpoint, word, excel, access y starwriter
- doc
- zip
- rar
- htm
- cpp -> detección de código fuente en C
Además de todas estas, es posible añadir o editar algunas más editando el fichero de configuración situado en /etc/foremost.conf
Instalación
Los usuarios de Kali Linux, por defecto, ya disponen de esta herramienta instalada.
Para los usuarios de distribuciones linux basadas en debian, pueden instalarla con el siguiente comando:
1 |
sudo apt-get install foremost |
Para el resto de usuarios, pueden hacerlo de dos formas.
Descargando el instalador desde sourceforge.
O desde el repositorio de kali en gitlab. En esta segunda opción se deberán seguir los siguientes pasos.
El primero clonarnos el repositorio:
1 |
git clone https://gitlab.com/kalilinux/packages/foremost.git |
Y posteriormente se deberá compilar e instalar el mismo. Dejo a continuación la descripción para cada uno de los diferentes sistemas operativos:
Linux:
1 2 3 |
$ cd foremost $ make $ make install |
BSD:
1 2 3 |
$ cd foremost $ make unix $ make install |
Solaris:
1 2 3 |
$ cd foremost $ make solaris $ make install |
OSX:
1 2 3 |
$ cd foremost $ make mac $ make macinstall |
Cómo utilizar Foremost
Al igual que la gran mayoría de herramientas dispone de una ayuda con la opción -h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ foremost -h foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus. $ foremost [-v|-V|-h|-T|-Q|-q|-a|-w-d] [-t <type>] [-s <blocks>] [-k <size>] [-b <size>] [-c <file>] [-o <dir>] [-i <file] -V - display copyright information and exit -t - specify file type. (-t jpeg,pdf ...) -d - turn on indirect block detection (for UNIX file-systems) -i - specify input file (default is stdin) -a - Write all headers, perform no error detection (corrupted files) -w - Only write the audit file, do not write any detected files to the disk -o - set output directory (defaults to output) -c - set configuration file to use (defaults to foremost.conf) -q - enables quick mode. Search are performed on 512 byte boundaries. -Q - enables quiet mode. Suppress output messages. -v - verbose mode. Logs all messages to screen |
O mediante el uso de man:
1 |
$ man foremost |
Vamos a verlo en funcionamiento con un ejemplo.
Para ello vamos a eliminar un fichero .jpg y posteriormente vamos a recuperar el mismo. El fichero será el siguiente:
1 2 |
$ ls -l imagetest.jpg -rw-r--r-- 1 root root 324380 may 6 18:58 imagetest.jpg |
Y eliminamos dicho fichero:
1 |
$ rm -f imagetest.jpg |
Lanzamos foremost para recuperar dicho fichero:
1 2 3 |
$ foremost -t jpeg -i /dev/mapper/kali--vg-root Processing: /dev/mapper/kali--vg-root |***************************************************************| |
En nuestro caso se encuentra en /dev/mapper/kali–vg-root pero si no sabe en que discos están disponibles puede hacer uso del comando mount para ver las unidades montadas en el sistema, dejo un ejemplo a continuación
1 2 3 4 5 6 7 |
$ mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,noexec,relatime,size=3014992k,nr_inodes=753748,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=609336k,mode=755) /dev/mapper/kali--vg-root on / type ext4 (rw,relatime,errors=remount-ro |
Completado el comando de foremost, se habrá creado una carpeta llamada output en la ruta donde se ha ejecutado:
1 2 3 4 |
$ ls -l output/ total 4 -rw-r--r-- 1 root root 714 may 6 19:03 audit.txt drwxr-xr-- 2 root root 69632 may 6 19:08 jpg |
Y vemos la salida del comando en el fichero audit.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$ cat audit.txt Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus Audit File Foremost started at Wed May 6 19:03:29 2020 Invocation: foremost -t jpeg -i /dev/mapper/kali--vg-root Output directory: /root/output Configuration file: /etc/foremost.conf ------------------------------------------------------------------ File: /dev/mapper/kali--vg-root Start: Wed May 6 19:03:29 2020 Length: 53 GB (57722011648 bytes) Num Name (bs=512) Size File Offset Comment 0: 13578240.jpg 1 MB 6952058880 1: 18341888.jpg 324 KB 9391046656 Finish: Wed May 6 19:09:39 2020 2 FILES EXTRACTED jpg:= 2 ------------------------------------------------------------------ Foremost finished at Wed May 6 19:09:39 2020 |
Y tenemos nuestra imagen en la carpeta jpg:
1 2 3 4 |
$ ls -l jpg/ total 1763 -rw-r--r-- 1 root root 1481598 may 6 19:03 13578240.jpg -rw-r--r-- 1 root root 324380 may 6 19:03 18341888.jpg |
Y vemos como hemos conseguido recuperar correctamente la imagen 18341888.jpg que corresponde con la imagen imagetest.jpg eliminada antes.
Otro ejemplo, si quisiéramos recuperar varios ficheros a partir de una imagen generada con dd sería el siguiente:
1 |
$ foremost -t doc,jpg,pdf,xls -i image.dd |
Y esto es todo por el momento, espero les sea de utilidad y como siempre cualquier aporte, duda o sugerencia es bienvenida en la sección de comentarios.