miércoles, 5 de noviembre de 2008

Ataques clásicos: El gusano de Morris

Hace unos pocos días, el 2 de Noviembre, se cumplieron 20 años de la aparición del primer gusano de Internet, el Gusano de Morris, llamado así por su creador, Robert Tappan Morris, por aquel entonces estudiante de 23 años que liberó en la entonces Arpanet el primer software (conocido) diseñado para auto-replicarse a través de la red.

El gusano no pretendía realizar ninguna acción especificamente maliciosa al infectar equipos, simplemente pretendía infectar el máximo número de sistemas posibles pero, debido a un bug en el código, el gusano provocó unos efectos no deseados, degradando en gran medida el funcionamiento de la red.

El Gusano de Morris explotaba para propagarse vulnerabilidades de los servicios SendMail y Finger, que permitieron que la infección afectara al 10% de los sistemas conectados a la red (unos 60.000 máquinas conectadas en total).
  • SendMail: La vulnerabilidad de SendMail explotada consistía en aprovechar un bug en la opción DEBUG, que si bien no estaba activada por defecto sí que era activada frecuentemente por muchos administradores en tiempo de compilación para facilitar la configuración del complicado SendMail. Este ataque permitía al Gusano de Morris ejecutar en la máquina atacada comandos shell que tenían como objetivo descargar un fichero de código C al que se le pasaban el nombre de Host, Usuario y Contraseña de la máquina origen del ataque para que este descargara una serie de ficheros que posteriormente ejecutaba, enmascarandolos con el nombre de "sh" para intentar que pareciaran ejecuciones de una Shell.
  • Finger: La vulnerabilidad de Finger explotada era debido a un bug que permitiría realizar un Buffer Overflow al pasarle una entrada de datos de más de 512 bytes, proporcionando un acceso Shell al gusano una vez explotado. Esta, según dicen, fue la vía más exitosa de infección del gusano.
  • Rsh/Rexec: Además de explotar las vulnerabilidades anteriormente mencionadas, el Gusano de Morris, una vez dentro de un sistema, intentaba aprovechar las relaciones de confianza del mismo (ficheros .rhosts y /etc/hosts.equiv) para acceder a nuevos sistemas. Para ello en primer lugar necesitaba acceder a las cuentas de los usuarios de la máquina, ya que a través de la explotación de vulnerabilidades anteriores obtenía privilegios de ejecución como "daemon", pero no como "root". Para obtener esas contraseñas utilizaba el campo de descripción del fichero /etc/passwd (llamado campo GECOS) para obtener su nombre y apellido, y de esta manera utilizar combinaciones con este nombre y una lista de contraseñas "habituales" para obtener acceso a las cuentas de los usuarios, y desde ahí aprovechar sus relaciones de confianza para propagare nuevamente.
Para los curiosos, el código fuente del gusano está publicado.

El que tenga algún detalle más sobre este gusano que lo ponga como comentarios, siempre resulta interesante conocer los detalles sobre estos "ataques clásicos".

No hay comentarios :