• Saltar al contenido principal
  • Saltar a la barra lateral principal

DiegoAltF4

agosto 12, 2019 Por diegoaltf4

Operaciones básicas con dd

Definición

Dataset Definition, dd, es un comando que nos permite copiar y convertir datos de archivos​ a bajo nivel con solo unas pocas líneas de código. Generalmente, se usa para realizar operaciones avanzadas sobre dispositivos o archivos, como pueden ser: transferencias de datos específicos o copias de seguridad de la información en crudo. Es una herramienta muy potente que al igual que nos permite copiar un disco, también nos lo puede borrar. 

La sintaxis de dd es:

dd if=<archivo de origen> of<archivo de destino> [Opciones]

if=origen 

  • “i” proviene de input por lo que aquí vamos a especificar la ruta de origen.

of=destino 

  • “o” proviene de output aquí vamos a especificar la ruta de destino

Por lo que si nosotros ejecutamos:

dd if=/dev/urandom of=/dev/sda

Lo que estamos haciendo es escribir los datos que se encuentran en el dispositivo urandom en la unidad que se encuentra en /dev/sda 

En este caso en la ruta /dev/urandom lo que encontramos es un archivo especial que genera números aleatorios. Esto es lo que hemos escrito en nuestra unidad

 

Copias completas

Si por ejemplo nosotros queremos hacer una copia entera de disco a disco, lo que haremos será:

dd if=/dev/sda of=/dev/sdb

Esto solo funciona si el segundo dispositivo es igual o más grande que el primero. De lo contrario, tendremos particiones truncadas.

El comando dd tiene muchos parámetros que podemos utilizar para configurarlo. Podemos añadir la opción bs para reducir la duración de este proceso 

bs=BYTES Establece el tamaño de los bloques de entrada y salida en BYTES. Esto hace que ‘dd’ lea y escriba BYTES por bloque. 

Por lo que nuestro comando sería

dd if=/dev/sda of=/dev/sdb bs=4096

Estoy utilizando un disco duro externo de 1 TB

Un tamaño de bloque entre 4096 y 512 KB deben ser suficientes.  

Si usamos un bs menor que el del sector sería horriblemente lento.

Ahora vamos a crear un archivo .img de la unidad /dev/sdb y lo vamos a guardar en nuestro escritorio 

dd if=/dev/sdb of=/home/Diego/Desktop/disco_sdb.img

Esta imagen no tiene que ser creada del disco completo, también podemos crearla de una partición. 

dd if=/dev/sdb3 of=/home/Diego/Desktop/particion3.img bs=4096

En este caso he vuelto a utilizar el parámetro bs para establecer el número de bytes que vamos a copiar de una sola vez, en este caso al estar utilizando un disco duro de 1 TB tendrá un impacto en la velocidad de la operación. Este valor depende de su hardware.

Restaurar esta imagen que hemos creado es muy fácil, solo tendremos que invertir los valores de if y of. Por lo que nos quedaría así el comando:

dd if=particion3.img of=/dev/sdb3

Uso avanzado

Todos estos comandos podemos ejecutarlos en un solo comando utilizando pipe “|”

Ahora crearemos una imagen comprimida de una unidad remota utilizando SSH y guardaremos el archivo resultante en nuestro equipo local:

ssh Diego@192.168.1.143 "dd if=/dev/sda | bzip2 -1 -" | dd of=backup.bz2

Para no sobrecargar la máquina remota se puede hacer el bzip2 en local, como a continuación:

ssh Diego@192.168.1.143 "dd if=/dev/sda" | bzip2 -1 - | dd of=backup.bz2

Este comando lo que hace es copiar los archivos que se encuentran en el directorio /dev/sda del ssh. Vamos a comprimirlo desde el servidor remoto y después vamos a copiar los archivos que hemos cifrado en nuestra máquina local. 

Esta operación durará bastante tiempo. Si queremos reducir un poco este tiempo, en vez de usar ssh podemos emplear netcat, es cierto que netcat no está cifrado, por lo que la gente podrá ver qué hay en nuestro disco duro, pero si estamos haciendo esta operación en un entorno seguro, recomiendo utilizar netcat.

En este artículo podéis ver una comparación de las velocidades.

Espero que os haya sido de utilidad

Un saludo

DiegoAltF4

Inicio

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

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

Barra lateral principal

Buscar

advertencia

Toda la información proporcionada es de uso y fines educativos, DiegoAltF4 no se responsabiliza de los daños causados por la gente que haga un mal uso de la información proporcionada. Hacer un mal uso de esta información es un delito tipificado en el articulo 197.3 del código penal.

Entradas recientes

  • Heap Exploitation 0x02 | House of Force
  • Heap Exploitation 0x01 | Chunks
  • Writeup Una Al Mes – Junio 2022
  • Writeup Challenge 7 | pwn101 TryHackMe
  • Writeup VulnLawyers ctfchallenge

¿Quieres colaborar conmigo ?

Contáctame

si quieres aprender más

Base64
Underc0de
LinuxSeguridad
Security News
© 2023

DiegoAltF4