Has visto 10 de 15 páginas de este material
Vista previa del material en texto
Análisis y explotación de vulnerabilidades Índice 3 3 4 5 10 10 11 1 | Análisis de vulnerabilidades 1.1 | Introducción 1.2 | MBSA, Microsoft Baseline Security Analyzer 1.3 | Nessus 2 | Explotación de vulnerabilidades 2.1 | Introducción 2.2 | Tipos de explotación Análisis y explotación de vulnerabilidades | TELEFÓNICA // 3 La fase de fingerprint permite averiguar información sobre los objetivos o máquinas remotas. En la fase de análisis de vulnerabilidades se procesa la información recopilada en la fase anterior y se determina la existencia de vulnerabilidades en los sistemas analizados. En muchas ocasiones se puede determinar si una aplicación es vulnerable o no, por ejemplo, a través de la identificación de la versión, o analizando la respuesta de la aplicación o el sistema operativo. Existen diversas herramientas que pueden ser utilizadas para automatizar este proceso. Para poder aprender más sobre las herramientas y los objetivos de éstas se pueden agrupar por ámbitos. Los escáneres de vulnerabilidades a nivel de sistemas se presentan los siguientes: • MBSA. • Nessus. • PSI Secunia. Los escáneres de vulnerabilidades web que se presentan los siguientes: • W3af. • Vega. • Acunetix. • Wikto/Nikto. • Webcruiser. • Web Security Scanner. • App Scan. • ZAProxy. 1. Análisis de vulnerabilidades 1.1 | Introducción Análisis y explotación de vulnerabilidades | TELEFÓNICA // 4 Esta herramienta permite identificar sistemas Windows vulnerables. La herramienta es de ejecución local, es decir, se necesita tener acceso a la máquina o disponer de credenciales para ejecutar la herramienta en remoto, por lo que podemos entender como una caja blanca. La herramienta escanea buscando actualizaciones no aplicadas en el sistema y fallos en la configuración del software. Escanea distintas versiones de Windows y distintas aplicaciones, por ejemplo, IIS o SQL Server. Se generan informes en formato XML sobre los resultados de cada equipo. El potencial de la herramienta es poder escanear un dominio Windows, es decir, todas las máquinas del dominio, siempre y cuando se dispongan de credenciales para ello, por ejemplo, un administrador de dominio. 1.2 | MBSA1, Microsoft Baseline Security Analyzer Imagen 88 MBSA - InformeImagen 87 MBSA 1 https://technet.microsoft.com/es-es/security/cc184924.aspx http://technet.microsoft.com/es-es/security/cc184924.aspx Análisis y explotación de vulnerabilidades | TELEFÓNICA // 5 Nessus es un escáner de vulnerabilidades que permite ser gestionado a través de un portal web. Nessus implementa diferentes plugins, los cuales se encargan de realizar distintas verificaciones. El auditor puede elegir qué tipo de plugins quiere o necesita lanzar, por ejemplo, en función del ámbito de la auditoría (si es caja blanca o negra). Cuando Nessus encuentra vulnerabilidades, a través de sus plugins, las engloba en Info, Low, Medium, High y Critical. El auditor que quiere lanzar un escaneo con Nessus debe tener claro diferentes circunstancias. A modo de ejemplo, en las siguientes líneas, se va a ir realizando un paso a paso de un escaneo con la herramienta. En primer lugar, y una vez se tiene acceso al portal web tras la instalación, en la barra de menú superior se encuentra la palabra “Scans”. Se debe seleccionar y, posteriormente, clicar sobre el botón “New Scan”, con el objetivo de añadir un nuevo escaneo con Nessus. Imagen 89 Logo Nessus Imagen 90 Nessus 1.3 | Nessus2 2 https://www.tenable.com/products/nessus-vulnerability-scanner http://www.tenable.com/products/nessus-vulnerability-scanner Análisis y explotación de vulnerabilidades | TELEFÓNICA // 6 La adición de un nuevo escaneo llevará al auditor a una nueva vista dónde podrá seleccionar diferentes opciones. Se puede programar el escaneo en una fecha concreta, pero quizá lo más importante es la política de escaneo o scan policy. Este valor indica qué ámbito o tipo de escaneo es, por lo que se indicará qué tipo de pruebas o de plugins se tienen que utilizar en este caso. Además, en el apartado scan targets se debe indicar el rango de máquinas que serán escaneadas. Imagen 91 Nessus - Tipos de escaneo Análisis y explotación de vulnerabilidades | TELEFÓNICA // 7 En el caso de que el auditor quiera configurar su propia política de escaneo, y no utilizar una de las que vienen predefinidas, puede clicar en la barra superior en “Policies”. Al acceder a esta vista el auditor encontrará las políticas creadas en el sistema. En la parte derecha de la página se encuentra el botón “Add”, el cual deberá ser activado si se quiere añadir una nueva política de escaneo. Hay que recordar que lo que se busca con la creación de una nueva política es poder elegir el tipo de pruebas que se quiere realizar en un escaneo. El formulario para crear una nueva política presenta 4 elementos importantes: compliance, credentials, plugins y settings. Las partes importantes son tanto credentials como plugins. En credentials lo que se indica es la posibilidad de utilizar credenciales en el proceso de escaneo. En otras palabras, el auditor en una auditoría de caja blanca podría tener acceso a un servicio o un sistema y comprobar la configuración de éste o políticas aplicadas a éste. Imagen 92 Nessus - Políticas Análisis y explotación de vulnerabilidades | TELEFÓNICA // 8 En la pestaña de plugins se pueden ir seleccionando cuales se quieren tener disponibles en la política. De este modo cuando el auditor cree un nuevo escaneo y seleccione la nueva política de escaneo, los plugins seleccionados aquí serán los lanzados en el proceso. Lo ideal sería disponer de diferentes políticas de escaneo en función del ámbito del trabajo que se esté realizando. Una vez se ha creado la nueva política se puede utilizar un nuevo escaneo. Cuando se lanza un escaneo con Nessus el proceso puede llevar bastante tiempo dependiendo del número de máquinas, número de plugins, ... Imagen 92 Nessus - Políticas Análisis y explotación de vulnerabilidades | TELEFÓNICA // 9 En la pestaña de plugins se pueden ir seleccionando cuales se quieren tener disponibles en la política. De este modo cuando el auditor cree un nuevo escaneo y seleccione la nueva política de escaneo, los plugins seleccionados aquí serán los lanzados en el proceso. Lo ideal sería disponer de diferentes políticas de escaneo en función del ámbito del trabajo que se esté realizando. Una vez se ha creado la nueva política se puede utilizar un nuevo escaneo. Cuando se lanza un escaneo con Nessus el proceso puede llevar bastante tiempo dependiendo del número de máquinas, número de plugins, ... Imagen 93 Nessus - Configuración política Análisis y explotación de vulnerabilidades | TELEFÓNICA // 10 En este apartado se hace un resumen de los tipos de vulnerabilidades que se pueden encontrar en el software. En este apartado no se hablarán de vulnerabilidades web y se centrará en vulnerabilidades de aplicaciones como pueden ser servidores ftp, servidores web, servidores ssh, aplicaciones de escritorio, ... A continuación, se describen algunos tipos de vulnerabilidades: • Desbordamiento de buffer. Esta es quizá la vulnerabilidad más clásica e histórica de todas. Es un error que se produce cuando se intenta copiar una cantidad de datos mayor que la zona de datos que tenemos reservada para almacenar. Es decir, imagina que se tiene un buffer de 60 bytes para almacenar información e intentamos almacenar 80 bytes. Si esto no se controla los 80 bytes sobrescribirán los 60 bytes del buffer destino y los 20 bytes restantes se escribirán en posiciones contiguas de memoria al buffer destino. Las consecuencias de escribir en una zona de memoria imprevista pueden ser impredecibles. Este tipo de vulnerabilidades pueden provocar la parada de un servicio (denegación de servicio) o, incluso, la ejecución de código arbitrario, es decir, poder tomar el control de la máquina.• Race condition. Generalmente este tipo de problemas suelen darse bien por la interacción entre hilos en un proceso multihilo o bien por la concurrencia de otros procesos ajenos al proceso vulnerable. • Integer overflow. Generalmente suceden al intentar almacenar un valor demasiado grande en la variable asociada generando un resultado inesperado (valores negativos, valores inferiores, ...). Este tipo de error puede tener consecuencias graves cuando el valor que genera el integer overflow es resultado de alguna entrada de usuario (es decir, que puede ser controlado por el mismo) y cuando, de este valor, se toman decisiones de seguridad, se toma como base para hacer asignaciones de memoria, índice de un array, concatenar datos, hacer bucles. ... En el año 2016 Apple tuvo un grave problema con la gestión de la fecha por parte del sistema operativo iOS. • Cadenas de formato o String format. Durante el diseño de un programa puede resultar útil permitir que un usuario introduzca datos de entrada para posteriormente ser mostrados por pantalla. En algunos lenguajes de programación se debe identificar el tipo de dato que se desea mostrar, de forma que el programador deberá describir si el dato a mostrar va a ser en hexadecimal, un carácter, un string, un número entero, un número real, ... La mejor manera de evitar los desbordamientos de buffer es mediante una programación segura, hay que tener mucho cuidado siempre que se escriba en un buffer, cuidando no sobrepasar el tamaño de éste. Los programadores que usan C deben evitar usar funciones que no comprueban los límites: strcpy(), strcat(), sprintf(), scanf(), sscanf(), fscanf(), vfscanf(), vsprintf, vscanf(), vsscanf(), streadd(), strecpy(), strtrns(). 2. Explotación de vulnerabilidades 2.1 | Introducción Análisis y explotación de vulnerabilidades | TELEFÓNICA // 11 La explotación de sistemas puede ser altamente compleja, pero existen frameworks que simplifican la tarea. Es el caso de Metasploit framework, el cual es una de las herramientas de auditoría más utilizada, potente y versátil. Después de la fase de análisis de vulnerabilidades se debe tener en cuenta la fase de explotación, quizá una de las que más adrenalina proporciona al auditor, ya que en muchos casos conseguirá control sobre diferentes máquinas. En este apartado se tratarán diferentes tipos de explotación, ejemplificándose cada uno de ellos. A continuación, se enumeran los diferentes tipos: • Explotación remota con conectividad directa entre máquinas. • Explotación local de vulnerabilidades, generalmente para lograr elevar privilegios en la máquina. • Explotación a través de ataques en el lugar del cliente, conocidos como Client-Side Attacks. • Explotación a través de ataques Fileformat. Explotación remota con conectividad directa El escenario es sencillo la máquina A es la del atacante y tiene conectividad con la máquina B, por ejemplo, la máquina de una organización que tiene un servidor FTP, web o SSH, por ejemplo. El software FTP, Web o SSH de la máquina B es vulnerable a alguna vulnerabilidad conocida, y simplemente por tener conectividad el atacante de la máquina A podría lanzar un exploit contra la máquina B y tomar el control de dicha máquina. Para ejemplificar esto con imágenes, se supone que la máquina B tiene un servidor FTP denominado Easy File Sharing FTP Server versión 3.5. La aplicación está siendo ejecutada en una máquina Windows 8.1 y tiene una vulnerabilidad de tipo Stack Buffer Overflow. El exploit no es más que un código, por ejemplo, escrito en lenguaje C, Ruby o Python, que sabe aprovecharse de la vulnerabilidad y conseguir ejecutar un código arbitrario. 2.2 | Tipos de explotación Análisis y explotación de vulnerabilidades | TELEFÓNICA // 12 Aquí es dónde se mostrará la facilidad de uso de Metasploit. No hace falta saber de exploiting para utilizar Metasploit, sencillamente vale con saber qué módulo utilizar y configurar una serie de atributos. Los módulos de tipo exploit en Metasploit reflejan qué vulnerabilidad se quiere aprovechar, no hace falta saber más del exploit, ni como está hecho por debajo. Imagen 94 Metasploit - Exploit En la máquina A, el atacante configura el módulo indicándole la dirección IP de la máquina B, el payload que quiere utilizar, en este caso un Meterpreter, el cual proporciona gran cantidad de funcionalidad. Al payload se le indica a qué dirección IP debe devolver el control si el exploit tiene éxito. Por eso el atributo LHOST indica la dirección IP de la máquina del atacante. El atributo RHOST es la dirección IP de la máquina con el servidor FTP. Como se puede ver Metasploit simplifica el proceso bastante. Una vez se obtiene el Meterpreter, comienza la fase de post-explotación, es decir, todas las cosas que se puede hacer desde esa máquina hacia otras. Explotación local de vulnerabilidades La explotación local de vulnerabilidades permite a un usuario sin privilegio o con privilegios reducidos poder saltar los mecanismos de seguridad de un sistema operativo con el objetivo de poder ejecutar acciones privilegiadas. Metasploit tiene una serie de módulos de tipo exploit que permiten, una vez se disponga de una sesión remota ejecutar un exploit local a través de dicha sesión. Esto es potente, ya que en el apartado anterior puede que hayamos conseguido solo el privilegio del usuario “normal”, pero con este tipo de vulnerabilidades se consiga obtener el máximo privilegio, por ejemplo “System” en Windows o “root” en Linux. Para ejemplificar el uso de una vulnerabilidad local en un sistema Windows 7 se hablará de la vulnerabilidad con CVE-2014-4113 apareció en octubre de 2014 y fue un 0day que permitía la escalada de privilegio sobre sistemas Windows. La vulnerabilidad fue parcheada por Microsoft en el boletín MS14-058. Un grupo de hackers publicó un exploit con el que se podía realizar una escalada de privilegio a los sistemas Windows, hasta la versión 7 SP1, aunque la vulnerabilidad afecta a sistemas Windows 8, pero el exploit público no era válido para dichas versiones. Análisis y explotación de vulnerabilidades | TELEFÓNICA // 13 En este ejemplo es importante entender que un usuario con acceso físico a la máquina y a la sesión de usuario, y sin privilegio ninguno, puede ejecutar un exploit que le permita obtener una cmd como System. Partiendo de que el usuario no tiene ningún privilegio, y será miembro del grupo de usuarios normales del sistema, se logrará elevar el privilegio y poder lanzar acciones cómo si se fuera “System”. En otras palabras, se englobaría en una escalada de privilegio total sobre el sistema, ya que en la prueba de concepto se partirá como usuario normal no perteneciente al grupo administradores, y tras la ejecución del exploit se obtendrá una cmd con privilegio máximo. Imagen 95 Escalado de privilegios Como se puede visualizar en la imagen es realmente sencillo conseguir la escalada de privilegio y disponer de una cmd como System. Hay que tener en cuenta que se debe conocer el tipo de código que se está ejecutando, y no es recomendable ejecutar exploits en auditorías de los cuales no se tiene control. Algo que puede ser muy interesante, una vez se tiene la cmd con el privilegio de System, es la ejecución de un binario, dll o script de PowerShell que devuelva una Meterpreter en remoto. De esta manera el proceso de la Meterpreter se ejecutará con identidad de System, por lo que se devuelve el control de la máquina a otra máquina controlada o gestionada por el usuario en remoto, y se gana con todas las funcionalidades que Meterpreter aporta. El exploit se encuentra disponible para versiones de 32 y 64 bits. Además, el módulo de Metasploit para explotar la vulnerabilidad, se encuentra en exploit/windows/local/ms14_058_track_popup_menu. Explotación local con OS X En el año 2015, el sistema operativo OS X fue afectado por varias vulnerabilidades que permitían elevar privilegios enel sistema3. En muchas ocasiones se piensa que solo existen exploits para Windows, pero esto no es verdad. Cualquier sistema operativo es afectado por vulnerabilidades, y por consiguiente existen exploits que se aprovechan de dichas vulnerabilidades. Una vulnerabilidad conocida como Rootpipe permitía elevar priviliegio, y pasar de un usuario sin privilegio a ser root en un sistema OS X.. El punto de partida en este ejemplo será una sesión de Metasploit sobre un sistema OS X. Una vez tenemos la sesión se debe colocar la shell en background, aunque antes podemos visualizar los permisos que se tienen en la shell obtenida. Se puede visualizar el uid del usuario logueado, y otros grupos a los que dicho usuario pertenece. Imagen 96 Metasploit sobre OS X 3 El exploit está accesible en la siguiente dirección URL http://www.exploit-db.com/exploits/36692/ http://www.exploit-db.com/exploits/36692/ Análisis y explotación de vulnerabilidades | TELEFÓNICA // 14 Cuando dejemos la shell en background configuramos el módulo de explotación local de Rootpipe. Hay varios atributos que configurar como son la sesión por la que se lanzará el exploit, en este caso utilizaremos el identificador obtenido anteriormente. Además, el exploit permite configurar que directorio será utilizado por Rootpipe para escribir, tanto exploit como payload. Si lo dejamos por defecto escribiremos en /.Trashes, la cual es una carpeta que necesita privilegio para escribir, por lo que si podemos escribir tendrá buena pinta. Imagen 97 - Metasplloit - Comando exploit Una vez lanzado el exploit a través de la sesión se ejecutará como si estuviera en local. Si la elevación de privilegios funciona, se abrirá una nueva shell como root, es decir, uid=0. Explotación a través de Client-Side Los ataques client side son ataques que son llevados a cabo en el lugar del cliente, es decir, es un usuario el que tiene que realizar una petición a un servidor controlado por un atacante para que éste le devuelva una respuesta maliciosa. Por ejemplo, un exploit. El ejemplo básico sería el siguiente: • El usuario “normal” navega por Internet tranquilamente. Accede a un foro y lee un mensaje que le llama la atención. En ese mensaje se anuncia un producto que le interesa y hay un link para acceder a más información. Cuando el usuario pincha sobre el link, el navegador se dirige a otra ubicación. El sitio web al que se accede puede ser legítimo, pero supongamos que alguien de forma malintencionada ha colocado un código HTML en ese sitio que obligue al navegador del usuario a realizar una petición a otro dominio. • El dominio en cuestión es malicioso, y está gestionado por el atacante. Al recibir la petición, la cual se ha hecho de formar trasparente, se envía un HTML malicioso, el cual contiene un exploit para una versión concreta del navegador de la víctima. • Cuando el navegador ejecuta el fichero HTML se encuentra que el exploit aprovecha la vulnerabilidad y se consigue ejecutar código arbitrario de forma remota. Un ejemplo gráfico sería el siguiente: Imagen 98 Esquema Client-Side VULNERABLE WEB SERVER ATTACKER VICTIM USER (3) Malicious Payload Reply (2) Malicious Request URL (1) Malicious e-Mail Message (4) Shell Spawn
Compartir