viernes, 4 de abril de 2008

Mecánica del hacker: entendiendo sus movimientos para prevenir accesos de intrusos

De una u otra manera todos quienes tienen incluso una mínima participación con el mundo de la computación y sobre todo Internet se hacen parte o comprenden en algún grado el concepto de "hacker". Más allá de cualquier discusión sobre el correcto uso de esta palabra, entenderemos en este post por "hacker" a todo atacante que amenace la seguridad de un sistema.

Los expertos en seguridad informática coinciden en describir los pasos que realiza un hacker para realizar una intrusión en un sistema ajeno, y también las técnicas necesarias en cada paso para continuar al siguiente hasta que logran su máximo objetivo: obtener acceso root o Administrador en la máquina comprometida. Aquí pretendo hacer un breve resumen de la línea de vida de un ataque común.

Recopilación de Información
Lo primero que hará un hacker será recopilar la mayor cantidad de información disponible sobre el sistema que tiene como objetivo. En primer lugar... consultará todas las fuentes de información pública, como pueden ser las bases de datos WHOIS o información de dominios (ejemplo, consultar en NIC.CL). Una vez que se hayan identificado personas asociadas a los servicios (ej, administrador de red, gerentes, operadores, etc), una búsqueda en Internet podría devolver más datos sobre estas personas lo cual serviría para comenzar a tener un perfil armado.
Otra cosa importante y que muchas veces las empresas descuidan es la información corporativa en los sitios web. Quizá un dato menor pero sin duda será muy interesante para el atacante es saber quienes son los gerentes o gente que puede tener un alto nivel de privilegios dentro de los sistemas. Lo recomendable es no entregar esta información de manera pública.
Direcciones IP, segmentos de red, nombres, direcciones, teléfonos, correos electrónicos y similares pueden ser fácilmente recopilados en Internet.

Utilizando estos datos públicos se pueden lanzar ataques de ingeniería social con los cuales se accederá a muchos más datos que son privados. Existen técnicas bastante llamativas sobre el uso de la ingeniería social, pero las cubriremos en otro post más adelante.

Identificación de servicios
Una vez que se haya adquirido la información necesaria de forma pública, se procederá a identificar los servicios y aplicaciones que se ejecuten en los sistemas del objetivo.
Con programas tipo NMAP u otros scanners de puertos se obtendrá una lista de los puertos y servicios. Si la máquina no está muy protegida, en este paso se entregará mucha información que ayudará y facilitará la tarea del hacker.

Un dato bastante preciado es saber con certeza cuales son las versiones de los software instalados, como puede ser por ejemplo Apache 2.0.59 o PHP 4.2.3, Joomla 10.0.12, etc.

Identificación de vulnerabilidades y explotación
Cuando ya se tiene certeza de los software que están instalados en el objetivo y además sus versiones, el hacker buscará en la base de datos de vulnerabilidades públicas (SecurityFocus por ejemplo) si es que los software detectados han presentado anteriormente o en la actualidad algún problema de seguridad. (Los más expertos tendrán su propia base de datos privadas).

Conociendo la vulnerabilidad, sacará a la batalla una de sus armas más poderosas: los exploits. (haga click en el enlace para ver más detalles de qué son y cómo funcionan los exploits).
Cuando entregamos libremente las versiones de los software instalados en nuestro servidor (MySQL, phpMyAdmin, etc), el hacker tendrá que acotar mucho menos sus ataques ya que sabrá con precisión qué exploit elegir.

Compromiso del sistema remoto
Si el atacante tiene suerte y el exploit elegido funcionó correctamente, es muy probable que ya tenga acceso LIMITADO a la aplicación remota que encontró vulnerable. En realidad va a depender del exploit si es que es posible acceder al sistema o causar otro tipo de inconvenientes (como un ataque de denegación de servicio, DoS, por ejemplo).
En este punto el hacker ya habrá infiltrado el sistema y tendrá la libertad de moverse libremente por él de acuerdo a los privilegios que tenga la aplicación afectada. Por ejemplo si encontró una vulnerabilidad en MySQL, solamente podrá ingresar a aquellas partes donde la aplicación MySQL pueda acceder.

Escalamiento de Privilegios
Pero la guerra no termina aquí. El objetivo final del hacker será acceder como root y para eso SIEMPRE intentará aprovecharse de algún descuido del administrador, ya sea porque utilizó programas de tipo SUID o GUID con permiso de escritura, porque dejó un respaldo del archivo de contraseñas el cual se puede leer y crackear o bien porque alguna aplicación vulnerable permite ejecutar comandos con permisos de administrador.
Los respaldos del servidor NO SE DEBEN GUARDAR EN EL MISMO SERVIDOR. Lo recomendable es que exista una máquina remota ubicado en otra área geográfica que gestione los respaldos.
Se deben actualizar los software que interactúan directamente con el núcleo de los sistemas operativos o bien para el caso de Linux actualizar el Kernel. Para comprender mejor esto, simplemente haga click aquí y escriba Linux Kernel en el cuadro de búsqueda. Obtendrá una lista de los exploits más conocidos para el kernel de Linux y su grado de compromiso.

Utilización de la máquina comprometida
Las razones por las cuales el hacker querrá atacar nuestro sistema son variadas:
- El simple deseo de destruir la información existente en él. (Claro, más de alguno cuando esté leyendo esto alegará que entonces el hacker se habría convertido en un cracker, pero ya acordamos que utilizaríamos el término hacker para referirnos en forma general a los atacantes).
- Conseguir información privilegiada de los sistemas.
- Generar ataques de denegación de servicio (DoS - Denial of Service).
- Utilizar la máquina comprometida para lanzar ataques contra otros objetivos de la red Interna.
- Utilizar la máquina comprometida para lanzar ataques contra otros objetivos de Internet y así mantener su anonimato.
- Espiar a los usuarios de la red que guarden información en la máquina o en el caso de un router, poder capturar contraseñas, nombres de usuarios, correos, conversaciones, etc.
- etc.

Borrando las huellas
El paso obligatorio para todo hacker que se digne de serlo será borrar todas sus huellas. Para eso irá directamente a los archivos de registro también llamados "logs" (de la máquina misma, de login, de cortafuegos, de aplicaciones, etc) y los modificará o bien los eliminará.
Si los administradores han sido minuciosos, debiesen haber montado un sistema de registro remoto (Servidor Syslog) donde todos los eventos de las máquinas irán a almacenarse también en otro servidor remoto. De esta manera el hacker deberá obtener acceso también a esa máquina para borrar todas sus huellas, lo que complica la tarea de ocultamiento de huellas.

Una forma muy utilizada de ocultar el "hackeo" es troyanizar ejecutables de sistema. Se conoce como troyanizar al hecho de instalar versiones modificadas de los programas que corren en la máquina comprometida de tal manera que oculten la información que el administrador trata de encontrar.
Por ejemplo, si usamos Linux es posible instalar en el sistema una copia del comando top el cual esté escrito de tal manera que NO muestre la ejecución de ciertos comandos o exploits en la memoria del sistema. Así, cuando el administrador comience a buscar huellas de intrusión y ejecute "top", no notará nada extraño. O en el caso de Windows, se puede troyanizar el Administrador de Tareas y así ocultar las aplicaciones que están permitiendo el acceso al hacker.

Lo más recomendable es que al momento de auditar los sistemas se hagan pruebas con binarios y aplicaciones externas y no con las mismas que posee el sistema, ya que de hacerlo así no podríamos encontrar lo que buscamos si es que éstas han sido troyanizadas.

Como verán, lo que se muestra aquí se ha resumido bastante. Sin embargo la idea es mostrar todo el proceso que involucra el hacking y comprender de mejor forma porqué muchos entendidos consideran estas prácticas como un verdadero arte.

Se pueden sacar un par de conclusiones importantes:
1- Los hackers SIEMPRE se aprovecharán de vulnerabilidades. Las vulnerabilidades son sus amigas y nuestras enemigas. SIEMPRE se aprovecharán de un descuido o de un error de gestión. Si se aplican los controles necesarios, los riesgos de sufrir un ataque serán considerablemente más bajos que los sistemas que no tengan un cuidado apropiado.

2.- Es necesario conocer el hacking para poder defendernos de él. Esa es la principal motivación de crear este portal de seguridad informática.

3.- Las técnicas de hacking evolucionan cada día y es probable que lo que hoy consideramos seguro mañana sea el punto de accedo para los intrusos en nuestros sistemas.


Segu-info.
www.segu-info.com.ar

No hay comentarios: