En este caso, los fallos de seguridad que explotaremos serán los del propio sistema operativo Unix, a diferencia de cuando teníamos que introducirnos en el sistema, que explotábamos los agujeros de seguridad de los protocolos o servicios de red.
Nota: De todas formas, hay que tener en cuenta que aunque explotemos los bugs de los protocolos TCP/IP, esto no significa que estos bugs nos vayan a funcionar con cualquier sistema operativo. Más bien al contrario, estos bugs funcionan casi exclusivamente en el sistema operativo Unix pero en otros sistemas operativos como VMS o VM no funcionarán. Estos sistemas operativos tendrán sus propios bugs respecto a los protocolos TCP/IP (de los cuales existe muy poca información por no decir ninguna).
Una vez introducidos en el sistema, habrá que conseguir dos cosas:
1 - Conseguir privilegios de root.
Esto se puede conseguir mediante varios bugs dependiendo del tipo de Unix en el que nos estemos moviendo (aix, sun, solaris, hp-ux, etc...) y de cómo esté configurado dicho sistema.
Existen varias fuentes de información en Internet para conocer bugs, algunas de esas fuentes se limitan a indicar la existencia del bug señalando el tipo de unix en el que funciona y otras incluso publican en la red programas para explotarlos. Entre dichas fuentes de información (mailing lists la mayoría) están el CERT, BUGTRAQ, BoS, comp.security.unix, alt.2600 y un largo etc.
En general, los bugs se pueden clasificar en varias categorías, pero eso en todo caso se mencionará más adelante, por ahora esto es un pequeño resumen.
2 - Mantener los privilegios de root.
Existen diversas formas de mantener los privilegios de root, es decir, asegurarnos de que la próxima vez que entremos al sistema con la cuenta de un usuario que posea privilegios normales, podamos conseguir privilegios de root de forma fácil y sin complicaciones.
Quizá la forma más utilizada de conseguir esto sea el sushi (set-uid-shell) o también llamado "huevo". Consiste en que una vez alcanzados los privilegios de root, copiamos un shell (el fichero /bin/sh) a un directorio público (en el que un usuario normal pueda ejecutar los ficheros) y le cambiamos el nombre al que nosotros queramos. Nos aseguramos de que el shell copiado tenga como owner (propietario del fichero) al root y cambiamos los permisos del fichero con las cifras 4755. Por ahora no te preocupes de lo que significan dichas cifras, pero la primera cifra, el 4, significa que cualquier usuario que ejecute dicho fichero lo estará ejecutando con los privilegios del owner. Como en este caso el owner es el root y el fichero en cuestión es una shell, el sistema nos abrir un shell con privilegios de root.
De esta forma, la próxima vez que accedamos al sistema con la cuenta de un usuario normal, sólo tendremos que cambiarnos al directorio donde hayamos copiado el shell, ejecutarlo y ya seremos root sin las complicaciones de tener que explotar un bug.
Los sushis también tienen sus inconvenientes, ya que pueden ser fácilmente localizados por los administradores (mediante el comando find, por ejemplo) revelando nuestra presencia en el sistema. Para evitar esto hay otras formas de mantener los privilegios en el sistema o de modificar ligeramente los sushis para que no puedan ser detectados tan fácilmente. |