Tema 43.docx
Document Details
Uploaded by Oganesson93
Universidad de Valladolid
Tags
Full Transcript
Tema 43. Amenazas y vulnerabilidades en los sistemas de información y en las comunicaciones. Definición y ejemplos de phising, DoS (denegación de servicio), ramsonware, Inyección de código (comandos del SO, SQL y Xpath), directory transversal, inclusión de ficheros locales/remotos. Técnicas y dispos...
Tema 43. Amenazas y vulnerabilidades en los sistemas de información y en las comunicaciones. Definición y ejemplos de phising, DoS (denegación de servicio), ramsonware, Inyección de código (comandos del SO, SQL y Xpath), directory transversal, inclusión de ficheros locales/remotos. Técnicas y dispositivos para la prevención de ataques. Casi todas las organizaciones públicas o privadas, al igual que las personas, dependen de alguna manera de la tecnología de los [sistemas de información] como herramienta esencial para lograr sus objetivos de negocio o para poder desarrollar actividades de su vida cotidiana. [Y todos ellos tienen que enfrentarse con una amplia gama de amenazas y vulnerabilidades asociadas a los entornos informáticos de hoy]. [Las amenazas pueden aprovechar las vulnerabilidades de un activo y pueden venir de cualquier parte, interna o externa]. Las vulnerabilidades son una debilidad o un defecto en la tecnología o en los procesos relacionados con la información, y como tal, se consideran características propias de los sistemas de información o de la infraestructura que los contienen. Una vulnerabilidad de una manera muy general es un fallo en un sistema que puede ser explotada por un atacante generando un riesgo para la organización o para el mismo sistema. [Tipos de vulnerabilidades] Según su origen, existen distintos tipos de vulnerabilidad informática: [[https://es.linkedin.com/pulse/tipos-de-vulnerabilidad-inform%C3%A1tica-ub%C3%ADcalos-y-prot%C3%A9gete-alestra]](https://es.linkedin.com/pulse/tipos-de-vulnerabilidad-inform%C3%A1tica-ub%C3%ADcalos-y-prot%C3%A9gete-alestra) - **Vulnerabilidades de red:** Las vulnerabilidades de red se ubican en la infraestructura del hardware, en el software o en procesos organizacionales del sistema. Este tipo de vulnerabilidad informática puede ser física o no física: - Físicas: como alojar el servidor en un lugar cuyas condiciones no son aptas y pueden dañarlo ―por ejemplo, en un área poco ventilada, húmeda, con riesgo de inundaciones o incendios― o donde personas no autorizadas pueden acceder de forma fácil. - No físicas: como un acceso inalámbrico mal protegido, cortafuegos mal configurados o un software obsoleto que no tiene los parches adecuados para nuevas amenazas. Hay muchas vulnerabilidades de red que los ciberdelincuentes pueden aprovechar para acceder a información valiosa usando métodos como malware (gusanos, virus o troyanos) que se infiltran en un dispositivo e infectan la red con ataques de ingeniería social, es decir, engañando a los usuarios de la red para que entreguen datos confidenciales y contraseñas. También, pueden aprovechar las vulnerabilidades en un software conocido para atacar a sus usuarios. - **Vulnerabilidades de sistema operativo:** Las vulnerabilidades del sistema operativo (SO) permiten el acceso a [atacantes que dañan los dispositivos](https://www.alestra.mx/blog/que-es-el-spyware?trk=article-ssr-frontend-pulse_little-text-block) donde está instalado. En Windows, se han dado casos graves de gusanos que atacaron vulnerabilidades de su sistema operativo, como CodeRed, Slammer y Sasser; mientras que Ramen y Slapper atacaron vulnerabilidades del sistema operativo Linux. Las páginas web pueden distribuir códigos maliciosos, de manera que, cuando un usuario las visita, se descarga automáticamente un archivo que infecta el dispositivo. Para generar visitas al sitio, los ciberdelincuentes usan diversos métodos, por ejemplo, envían correos o SMS con una liga hacia la página infectada o, incluso, a través de los motores de búsqueda. - **Vulnerabilidades de procesos:** Las vulnerabilidades de procesos surgen cuando los métodos que supuestamente deben actuar para proteger los equipos y sistemas informáticos son insuficientes. Un ejemplo claro de esto es cuando los usuarios usan contraseñas débiles o cuando los administradores de TI no implementan sistemas de autenticación más eficientes. - **Vulnerabilidades humanas:** Las vulnerabilidades humanas, como su nombre indica, abarca todos los errores de los usuarios que ponen en riesgo al hardware, a las redes y a los datos confidenciales. - Se podría decir que este tipo de vulnerabilidades son la amenaza más crítica para una empresa, sobre todo con el incremento del trabajo colaborativo y remoto. En este sentido, si el personal no está capacitado en ciberseguridad, este podría no ser consciente de los riesgos que supone abrir archivos adjuntos potencialmente peligrosos o no actualizar el software. - **Vulnerabilidades de día cero:** Este es un tipo de vulnerabilidad de red donde el atacante descubre alguna brecha dentro de un software que el fabricante desconoce. Se le conoce como vulnerabilidad de día cero porque el fabricante tiene "0" días para actuar, ya que solo es consciente de la vulnerabilidad de su producto cuando este ya ha sido atacado, y los usuarios están sufriendo las consecuencias. **Definición y ejemplos de phising** El phishing es una técnica de ingeniería social utilizada por los ciberdelincuentes para engañar a los usuarios y obtener información confidencial, como contraseñas, números de tarjetas de crédito y otra información personal. Los ciberdelincuentes utilizan correos electrónicos, mensajes de texto, mensajes instantáneos y sitios web fraudulentos para llevar a cabo el phishing. Estos mensajes suelen ser muy convincentes y pueden parecer que provienen de una fuente confiable, como un banco, una empresa de servicios en línea o un servicio gubernamental. A menudo, se les pide a los destinatarios que hagan clic en un enlace que los lleva a un sitio web fraudulento que parece legítimo, donde se les solicita que ingresen su información personal. Por ejemplo, un ciberdelincuente podría enviar un correo electrónico que parece provenir de una empresa de servicios financieros y pedirle al destinatario que haga clic en un enlace para actualizar su información de cuenta. El enlace llevaría al destinatario a un sitio web fraudulento que parecería legítimo, y se le pediría que ingresara su información de inicio de sesión y otra información personal. Otro ejemplo de phishing podría ser un mensaje de texto que parezca provenir de una compañía de entrega y que informe al destinatario que se ha intentado entregar un paquete y se necesita que proporcione información adicional para completar la entrega. El destinatario sería dirigido a un sitio web fraudulento que parece legítimo, donde se le pediría que ingresara información personal, incluyendo detalles de su tarjeta de crédito. **DoS (denegación de servicio)** Un ataque de denegación de servicio, tiene como objetivo inhabilitar el uso de un sistema, una aplicación o una máquina, con el fin de bloquear el servicio para el que está destinado. Este ataque puede afectar, tanto a la fuente que ofrece la información como puede ser una aplicación o el canal de transmisión, como a la red informática. [La manera de atacar al servidor es mandando a la IP concreta una cantidad ingente de paquetes (bloques en los que se divide la información), que superen lo que el servidor puede soportar, de manera que se colapsa al no tener los recursos suficientes para afrontar tales peticiones. ] [Otra forma consiste en consumir todo el ancho de banda del que dispone el servidor, impidiendo a este ofrecer sus servicios a los usuarios y, por lo tanto, denegando el servicio del mismo, ya que la conexión tendrá una velocidad tan lenta que no podrá desarrollarse la actividad con normalidad.] Existen dos técnicas de este tipo de ataques: la denegación de servicio o DoS (por sus siglas en inglés Denial of Service) y la denegación de servicio distribuido o DDoS (por sus siglas en inglés Destributed Denial of Service). La diferencia entre ambos es el número de ordenadores o IP´s que realizan el ataque. En los ataques DoS se generan una cantidad masiva de peticiones al servicio desde una misma máquina o dirección IP, consumiendo así los recursos que ofrece el servicio hasta que llega un momento en que no tiene capacidad de respuesta y comienza a rechazar peticiones, esto es cuando se materializa la denegación del servicio. En el caso de los ataques DDoS, se realizan peticiones o conexiones empleando un gran número de ordenadores o direcciones IP. Estas peticiones se realizan todas al mismo tiempo y hacia el mismo servicio objeto del ataque. Un ataque DDoS es más difícil de detectar, ya que el número de peticiones proviene desde diferentes IP´s y el administrador no puede bloquear la IP que está realizando las peticiones, como sí ocurre en el ataque DoS. Los ordenadores que realizan el ataque DDoS son reclutados mediante la infección de un malware, convirtiéndose así en bots o zombis, capaces de ser controlados de forma remota por un ciberdelincuente. Un conjunto de bots, es decir, de ordenadores infectados por el mismo malware, forman una botnet o también conocida como red zombi. Obviamente, esta red tiene mayor capacidad para derribar servidores que un ataque realizado por sólo una máquina. Los ataques DoS pueden ser particularmente dañinos para empresas y organizaciones que dependen de su sitio web o servicios en línea para operar. Los ataques DoS pueden resultar en una pérdida significativa de ingresos, una disminución en la reputación de la marca y una interrupción en la prestación de servicios críticos. [Vectores de ataque]: Los dispositivos se pueden infectar a través de distintos métodos, según el tipo de dispositivo que pretenden infectar. Los métodos de infección (también denominados vectores de ataque) más utilizados son: - Troyanos. Este método suele afectar a dispositivos de usuario como ordenadores, smartphones o tablets. El ciberdelincuente, utilizando técnicas de ingeniería social consigue que la víctima descargue y ejecute un archivo malicioso infectado con malware. El troyano puede esconderse en diferentes sitios, como documentos adjuntos en correos electrónicos, ficheros enviados en servicios de mensajería instantánea o redes sociales, sitios web comprometidos, webs de descarga no oficiales, etc. - Rootkit: que se instalan en nuestro ordenador y son muy difíciles de detectar. Las forma de contagiarse es la misma que los troyanos. - Vulnerabilidades no parcheadas. Este vector de ataque puede afectar a cualquier dispositivo, ya que todos ellos pueden contar con vulnerabilidades no parcheadas que pueden llegar a ser explotadas por los ciberdelincuentes. - Configuraciones inseguras. Algunos dispositivos como routers y sobre todo, los que forman parte del IoT suelen contar con configuraciones por defecto poco seguras, así como, con contraseñas débiles. Estas configuraciones débiles son usadas por los ciberdelincuentes para obtener acceso al dispositivo y convertirlo en parte de la botnet. Para protegerse contra los ataques DoS, las empresas y organizaciones pueden implementar: - Soluciones de seguridad que monitorean el tráfico de red en busca de patrones sospechosos y bloquean el tráfico malintencionado. - Trabajar con proveedores de servicios en la nube para implementar medidas de mitigación de ataques DoS, como la distribución geográfica de sus recursos de servidor para evitar la sobrecarga en un solo punto. Además, es importante que las empresas y organizaciones mantengan sus sistemas y software actualizados con los últimos parches de seguridad para evitar vulnerabilidades conocidas. **Ramsonware** El ransomware es un tipo de malware que cifra los archivos de un usuario o bloquea el acceso a su sistema y luego exige un rescate para restaurar el acceso. Este tipo de ataque ha evolucionado a lo largo del tiempo. El primer ataque se conoce en 1989 a través de un disquete. En un principio se cifraban los archivos de los ordenadores personales y no era muy difícil romper ese cifrado pero con el tiempo se fue sofisticando el tipo de cifrado como fue el cifrado RSA. Otra evolución consistió, no en el cifrado de los archivos, si no en bloquear el acceso a la máquina y en la forma de pago para no ser rastreado, llegando a solicitar el rescate en forma de criptomoneda, como Bitcoin, para que el atacante pueda mantener el anonimato. Otra evolución surgió cuando apareció un ramsonware que no solo infectaba a la máquina desde donde se producía el ataque si no que se distribuía a través de la red y llegaba al mayor número de víctimas. Con la aparición de móviles y tablets, se añadió los dispositivos que podían ser objeto de este malware. El ransomware puede infectar un sistema a través de diversos vectores como: - Correos electrónicos que utilizan la ingeniería social para que la víctima descargue adjuntos infectados o acceda a un sitio web malicioso a través de un enlace. - Ataques usando el protocolo de escritorio remoto (RDP), ya sea aprovechando alguna vulnerabilidad en el sistema o con ataques de fuerza bruta. - Vulnerabilidades de servicios expuestos a internet (FTP, SSH, TELNET, etc.). - Vulnerabilidades en los sistemas operativos y en navegadores que facilitan la infección al visitar sitios fraudulentos. - Dispositivos externos infectados que se conectan a los equipos corporativos. El ransomware es un negocio muy lucrativo para los atacantes, ya que el pago de rescates puede ser rentable y fácil de conseguir, especialmente cuando las víctimas no tienen copias de seguridad adecuadas. Además, los atacantes pueden utilizar la amenaza del cifrado permanente o la divulgación de datos sensibles como forma de presión para forzar el pago del rescate. Un ejemplo de ransomware es el ataque WannaCry que ocurrió en 2017. Este ransomware se propagó a través de una vulnerabilidad en el sistema operativo Windows, afectando a cientos de miles de dispositivos en todo el mundo. Una vez infectado el sistema, WannaCry cifraba los archivos de la víctima y exigía un rescate en Bitcoin a cambio de la clave de descifrado. El ataque fue especialmente grave en instituciones como hospitales y empresas de servicios públicos, que dependían de sus sistemas informáticos para operar. El costo total del ataque se estima en miles de millones de dólares. **Inyección de código (comandos del SO, SQL y Xpath)** La inyección de código es una técnica de ataque en la que se inserta código malicioso en una aplicación con el fin de alterar su comportamiento y obtener acceso no autorizado a los datos o sistemas. Los tres tipos más comunes de inyección de código son la inyección de comandos del sistema operativo, la inyección de SQL y la inyección de Xpath. **Comandos del SO** La inyección de comandos del sistema operativo permite a un atacante inyectar y ejecutar comandos directamente en el sistema operativo en el que se ejecuta tu aplicación. La inyección de comandos del sistema operativo funciona al explotar una vulnerabilidad en la forma en que un sistema procesa la entrada del usuario. En la mayoría de los casos, la vulnerabilidad surge de la falta de validación, saneamiento o escape adecuados de la entrada del usuario antes de pasar a un shell del sistema para su ejecución. Ejemplo: La aplicación acepta una entrada que se utiliza para seleccionar qué programa ejecutar, así como los comandos para su uso. La aplicación simplemente redirige este comando entero al sistema operativo. Por ejemplo, el programa podría usar \"exec (\[COMANDO\])\" para ejecutar el comando \[\] que fue suministrado por el usuario. Si el comando está bajo control atacante, entonces el atacante puede ejecutar código arbitrario o programas. **Inyección de código SQL** **Una inyección de SQL es un tipo de vulnerabilidad en la que un atacante usa un trozo de código SQL para manipular una base de datos y acceder a información potencialmente valiosa. Es uno de los tipos de ataques más frecuentes y amenazadores, ya que puede atacar prácticamente cualquier sitio o aplicación web que use una base de datos basada en SQL.** **Por ejemplo, asumiendo que el siguiente código reside en una aplicación web y que existe un parámetro \"nombreUsuario\" que contiene el nombre de usuario a consultar, una inyección SQL se podría provocar de la siguiente forma:** **El código SQL original y vulnerable es:** **consulta := \"SELECT \* FROM usuarios WHERE nombre = \'\" + nombreUsuario + \"\';\"** **Si el operador escribe un nombre, por ejemplo \"Pepe\", nada anormal sucederá, la aplicación generaría una sentencia SQL similar a la siguiente, que es perfectamente correcta, en donde se seleccionarían todos los registros con el nombre \"Pepe\" en la base de datos:** **SELECT \* FROM usuarios WHERE nombre = \'Pepe\';** **Pero si un operador malintencionado escribe como nombre de usuario a consultar:** **Juan'; DROP TABLE usuarios; SELECT \* FROM datos WHERE nombre LIKE \'%'** **, se generaría la siguiente consulta SQL:** **SELECT \* FROM usuarios WHERE nombre = Juan;** **DROP TABLE usuarios;** **SELECT \* FROM datos WHERE nombre LIKE \'%\';** **Existe otra forma clásica de inyección de código SQL y es con la concatenación del predicado: "or '1'='1'" a la entrada que se haga del usuario. Esto devolverá todos los registros de la consulta que utilizase la entrada de usuario.** **Inyección de código Xpath** De manera similar a las inyecciones de SQL, ataques de inyección XPath se producen cuando un sitio web utiliza la información suministrada por el usuario para construir una consulta XPath para datos XML. Mediante el envío de sentencias intencionalmente mal formadas, un atacante puede descubrir cómo se estructuran los datos XML, incluso acceder a todos sus datos. El atacante incluso puede ser capaz de elevar sus privilegios en el sitio web si los datos XML se utilizan para la autentificación (como un archivo de usuario basado en XML). La consulta XML se realiza con XPath, un tipo de declaración descriptiva simple que permite la consulta XML para localizar información. Al igual que SQL, puede especificar ciertos atributos para encontrar y patrones para que coincidan. Cuando se hace uso de XML en un sitio web es común aceptar algún tipo de entrada en la cadena de consulta para identificar el contenido a localizar y mostrar en la página. Esta entrada debe ser desinfectada para verificar que no se mete hasta la consulta XPath y devuelva datos incorrectos o indeseados. XPath es un lenguaje estándar, y su notación / sintaxis es siempre independiente de la implementación, lo que significa que el ataque puede ser automatizado. Se deberán eliminar las entradas con los siguientes caracteres: \" \' / @ = \* \[ \] ( y ). En todas ellas, lo importante es validar muy bien las entradas de los usuarios y limpiar los caracteres especiales para la inyección de código malicioso. **Directory transversal** Directory traversal, o también conocido como transversal de directorios o traversal attack, es un tipo de ataque en el que un atacante intenta acceder a archivos o directorios que se encuentran fuera del directorio raíz permitido en una aplicación web. Esta técnica es posible cuando una aplicación web no valida adecuadamente las entradas de usuario, permitiendo que los atacantes accedan a archivos y directorios no autorizados. Un atacante ingresa información en un formulario web, línea de dirección URL u otro método de input que le da acceso a un archivo o directorio al que no deberían tener acceso. Directory traversal también es conocido como el ataque../ (en UNIX y en LINUX) o..\\ (En Windows) porque permite el escalado de directorios y backtracking. Se verá el ejemplo en el siguiente tipo de ataque (inclusión local de ficheros) en el que se podrá apreciar la combinación de ambos ataques. **Inclusión de ficheros locales/remotos** La inclusión de ficheros locales/remotos es una técnica utilizada por los atacantes para obtener acceso no autorizado a los sistemas informáticos. También se conoce como Local/Remote File Inclusion (LFI/RFI). Es una vulnerabilidad web que permite a un ciberatacante engañar a una aplicación para que ejecute comandos y/o exponga archivos a través de un servidor web. La **inclusión de ficheros locales** es una vulnerabilidad web que permite a un ciberatacante engañar a una aplicación web para que ejecute comandos y/o exponga archivos a través de un servidor web. Ocurre cuando una aplicación usa una ruta de archivo como entrada, la aplicación trata esa entrada como confiable y segura. Seguidamente se puede inyectar un archivo local en la instrucción incluida. Este tipo de ataque puede combinarse con el directory transversal para navegar por los directorios y poder exponer ficheros de la máquina local. La principal diferencia entre inclusión local de ficheros locales y el path traversal es que con la inclusión de ficheros locales se permite la ejecución de comandos. Un ejemplo, sería una página web en PHP que muestra contenido de ficheros locales para formar la página web. Si en vez de esos ficheros locales logramos engañar a la aplicación y cambiar esa entrada por el fichero, por ejemplo: etc/passwd si la vulnerabilidad existe y es explotable nos mostrará el archivo etc/passwd que contiene información sobre todas las cuentas de los usuarios del sistema operativo: Para tener en cuenta y estar atentos a la hora de programar un sitio, así es como se ven los respectivos códigos en PHP: Código vulnerable: \