Saltar al contenido principal

La imagen del administrador (300)

Alerta de Seguridad: Acceso No Autorizado

Nuestro equipo de monitorización ha detectado actividad sospechosa en uno de los servidores de control alojados en una Raspberry Pi. Creemos que un administrador no autorizado ha comprometido el sistema para extraer información.

Hemos conseguido capturar una imagen forense (.img) del disco duro justo antes de que el intruso pudiese borrar sus rastros. Tu misión como analista es examinar esta imagen y recuperar cualquier evidencia dejada por el usuario maliciososo.

Descargar la imagen forense

Análisis inicial

Para analizar la imagen forense de la Raspberry Pi, podemos utilizar herramientas como fdisk, mount y binwalk para explorar su contenido.

Primero, identificamos las particiones presentes en la imagen:

fdisk -l rpi.img
Disk rpi.img: 1,83 GiB, 1967128576 bytes, 3842048 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4c4e106f

Device Boot Start End Sectors Size Id Type
rpi.img1 8192 532479 524288 256M c W95 FAT32 (LBA)
rpi.img2 532480 3842047 3309568 1,6G 83 Linux

Montaje y exploración de la imagen

Observamos dos particiones: una FAT32 y otra Linux. Montamos la partición Linux para examinar su contenido:

mkdir /mnt/rpi
sudo mount -o loop,offset=$((532480*512)) rpi.img /mnt/rpi
nota

La opción loop permite montar una imagen de disco como si fuera un dispositivo de bloque, es decir, como un disco físico.

La opción offset especifica el punto de inicio de la partición dentro de la imagen, calculado en bytes. La hemos obtenido multiplicando el número de sector de inicio de la partición (532480) por el tamaño del sector (512 bytes).

Navegamos por el sistema de archivos montado para buscar archivos sospechosos o inusuales:

cd /mnt/rpi
ls -la
total 76K
lrwxrwxrwx 1 root root 7 may 3 2023 bin -> usr/bin
drwxr-xr-x 2 root root 4,0K may 3 2023 boot
drwxr-xr-x 4 root root 4,0K may 3 2023 dev
drwxr-xr-x 81 root root 4,0K may 3 2023 etc
drwxr-xr-x 4 root root 4,0K oct 6 17:20 home
lrwxrwxrwx 1 root root 7 may 3 2023 lib -> usr/lib
drwx------ 2 root root 16K may 3 2023 lost+found
drwxr-xr-x 2 root root 4,0K may 3 2023 media
drwxr-xr-x 2 root root 4,0K may 3 2023 mnt
drwxr-xr-x 2 root root 4,0K may 3 2023 opt
drwxr-xr-x 2 root root 4,0K dic 18 2022 proc
drwx------ 2 root root 4,0K may 3 2023 root
drwxr-xr-x 4 root root 4,0K may 3 2023 run
lrwxrwxrwx 1 root root 8 may 3 2023 sbin -> usr/sbin
drwxr-xr-x 2 root root 4,0K may 3 2023 srv
drwxr-xr-x 2 root root 4,0K dic 18 2022 sys
drwxrwxrwt 2 root root 4,0K may 3 2023 tmp
drwxr-xr-x 11 root root 4,0K may 3 2023 usr
drwxr-xr-x 11 root root 4,0K may 3 2023 var

Exploramos el directorio /home para buscar usuarios y archivos relevantes:

cd /mnt/rpi/home
tree -a # Usamos la opción -a para listar archivos ocultos
.
├── admin
│   └── .secret
│   └── hidden.txt
└── pi
├── .bash_logout
├── .bashrc
└── .profile

4 directories, 4 files

Obtención de la flag

Encontramos un archivo oculto hidden.txt en el directorio del usuario admin. Procedemos a leer su contenido:

cat /mnt/rpi/home/admin/.secret/hidden.txt
aWtlcmxhbnttMHVudDFuZ19pbTRnM3NfMXNfbTRnMWN9

El contenido parece estar codificado en Base64. Decodificamos el texto y obtenemos la flag:

echo "aWtlcmxhbnttMHVudDFuZ19pbTRnM3NfMXNfbTRnMWN9" | base64 --decode
ikerlan{m0unt1ng_im4g3s_1s_m4g1c}
tip

¿Nunca se te habría ocurrido que pudiera ser Base64? Es muy habitual en CTFs usar esta codificación para ocultar información de manera sencilla. La próxima vez que te encuentres con un texto que no tiene sentido, pruébalo.