0% encontró este documento útil (0 votos)
106 vistas48 páginas

Unidad 5

Temario correspondiente a la asignatura de Seguridad Informática del grado de Ingeniería Informática URJC

Cargado por

Alejandro Haba
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
106 vistas48 páginas

Unidad 5

Temario correspondiente a la asignatura de Seguridad Informática del grado de Ingeniería Informática URJC

Cargado por

Alejandro Haba
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Ataques y

contramedidas
UNIDAD 5 – ATAQUES A APLICACIONES Y SERVICIOS
CURSO 2023-2024

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 1


Índice
Introducción
Desbordamiento
Inyecciones (Inyecciones en servidor)
Forgeries (Inyecciones en cliente)

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 2


Introducción

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 3


Introducción
• OWASP
• Acrónimo Open Web Application Security Project (Proyecto abierto de seguridad de aplicaciones web).
• Comunidad abierta
• Todas sus herramientas, documentos y foros tienen licencia libre.
• Dedicada a capacitar a las organizaciones para:
• Concebir
• Desarrollar
• Adquirir Aplicaciones confiables y seguras.
• Operar
• Mantener

Desarrollo
• En la OWASP hay dos categorías de principales de proyectos
Documentación

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 4


Introducción
Proyectos de Documentación:
• Guía OWASP: Guía sobre la seguridad de aplicaciones web.
• OWASP Top 10: Documento que se centra en exponer las 10 vulnerabilidades más críticas de las
aplicaciones web.
• Métricas: Definir métricas que sean aplicables a la seguridad de las aplicaciones web.
• Legal: Enfocado en ayudar a comerciantes y contratantes de software para negociar los aspectos de
seguridad en los contratos que se firmen.
• Guía de pruebas: Pruebas para verificar la seguridad en las aplicaciones web.
• ISO 17799: Sirve para ayudar a hacer revisiones de la ISO 17799 (Código para la práctica de la gestión de
la seguridad de la información).
• AppSec FAQ: Preguntas frecuentes sobre seguridad de aplicaciones web.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 5


Introducción
Proyectos de desarrollo:
• WebScarab: Aplicación de chequeo de vulnerabilidades para aplicaciones web.
• Filtros de Validación(Stringer para J2EE y Filters para PHP): Filtros genéricos de seguridad perimetral
que los desarrolladores pueden usar en sus propias aplicaciones.
• WebGoat: Una herramienta interactiva de formación y benchmarking (Técnicas de comparación y
benchmarks a productos) para que los usuarios aprendan sobre seguridad de aplicaciones web de
forma segura y legal.
• DotNet: Un conjunto de herramientas para securizar los entornos .NET.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 6


Introducción

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 7


Introducción

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 8


Introducción

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 9


Introducción

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 10


Introducción

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 11


Introducción
Hay iniciativas generalistas que intentan clasificar de alguna manera todas las
vulnerabilidades/debilidades conocidas para el software

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 12


Desbordamiento

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 13


Desbordamiento
Un ataque por desbordamiento (overflow) para aprovechar una vulnerabilidad del software, que
consiste en no comprobar el tamaño de los parámetros que se le pasan a una función o
procedimiento en tiempo de ejecución.
El objetivo principal del ataque es lograr:
• Ejecutar código en el sistema victima con los mismos permisos que la aplicación vulnerable.

Aunque se conoce desde los años 80, multitud de sistemas operativos, aplicaciones y
navegadores siguen siendo vulnerables.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 14


Desbordamiento

Buffer
Overflow

Heap Stack
Overflow Overlow

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 15


Desbordamiento - buffer overflow

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 16


Desbordamiento – buffer overflow
¿Cómo se organiza la memoria de un proceso?
EIP: Puntero de siguiente Instrucción.
Shared Libraries: Bibliotecas compartidas.
.text_start: Segmento que contiene las instrucciones ejecutables.
.bss: variables globales o estáticas no inicializadas en tiempo de
compilación.
Heap: Memoria dinámica. (Crece hacia arriba, mismo sentido que las
direcciones de memoria). Para reservar memoria usamos funciones de
asignación como malloc(), calloc(), etc en C.
Stack: variables locales, variables de referencia, parámetros y valores de
retorno. Control de invocación y retorno de los métodos. (Crece hacia
abajo).
Argc, argv, envp: Argumentos de líneas de comandos y variables de
entorno.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 17


Desbordamiento - buffer overflow
La pila almacena en cada llamada a una función o procedimiento:
• Las variables internas.
• Una serie de punteros.
• La dirección de retorno.
• Los punteros a los parámetros que se le pasan.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 18


Desbordamiento - buffer overflow
Por ejemplo:
void copia_cadena(char *cadena) {
char buffer[16]; //declaración de variable
strcpy(buffer,cadena); //ponemos el valor de buffer con el valor que se ha pasado a cadena
}

void main() {
char frase[16]; //declaración de variables
int i;
for( i = 0; i < 15; i++) //Metemos valores en frase (Un total de 16 letras)
frase[i] = ‘M’;
copia_cadena(frase); //pasamos al subprograma la variable frase
}

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 19


Desbordamiento - buffer overflow
Por ejemplo:
void copia_cadena(char *cadena) {
char buffer[16]; //declaración de variable
strcpy(buffer,cadena); //ponemos el valor de buffer con el valor que se ha pasado a cadena
}

void main() {
char frase[16]; //declaración de variables
int i;
for( i = 0; i < 15; i++) //Metemos valores en frase (Un total de 16 letras)
frase[i] = ‘M’;
copia_cadena(frase); //pasamos al subprograma la variable frase
}

El programa funcionaría correctamente sin problema alguno

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 20


Desbordamiento - buffer overflow

Return Address

buffer0- buffer4- buffer8- buffer12-


buffer3 buffer7 buffer11 buffer15
punt RA *cadena

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 21


Desbordamiento - buffer overflow
Otro posible caso:
void copia_cadena(char *cadena) {
char buffer[16]; //declaración de variable
strcpy(buffer,cadena);
//ponemos el valor de buffer con el valor que se ha pasado a cadena
}

void main() {
char frase[256]; //declaración de variables
int i;
for( i = 0; i < 255; i++) //Metemos valores en frase (Un total de 256 letras)
frase[i] = ‘M’;
copia_cadena(frase); //pasamos al subprograma la variable frase
}

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 22


Desbordamiento - buffer overflow

La dirección de retorno se sobrescribe y el programa leerá una dirección de memoria no válida, generando una violación de
segmento en la aplicación. Return Address

buffer0- buffer4- buffer8- Buffer


buffer12- buffer16- buffer20- buffer 24-
buffer3 buffer7 buffer11 buffer15 buffer19 buffer23
20-23 buffer27

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 23


Desbordamiento - buffer overflow

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 24


Desbordamiento - buffer overflow –
Defensas y contramedidas
En tiempo de compilación:
• Elegir lenguajes de alto nivel que obliguen a buenas practicas de programación (safe coding).
• Algunos compiladores fuerzan la comprobación de parámetros pasados a las funciones o incluyen
mecanismos de protección de la dirección de retorno o la pila, …

En tiempo de ejecución:
• Impedir la ejecución de código en el espacio de la pila.
• Aleatorizar la asignación de espacio para los programas.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 25


Inyecciones

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 26


Inyecciones - Introducción
Hay 2 tipos de Inyecciones:
• En cliente (Forgeries):
• XSS (Cross-site scripting)
• XFS
• XSCR o CSRF (Cross Site Request Forgery)
• HTTP Response Split (CRLF Injection Attack)
• En servidor:
• Inyección de comandos del SO
• Inyección SQL
• Blind SQL Injection
• Inyección Xpath

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 27


Inyecciones – Introducción – Inyecciones
en Cliente (Forgeries)
XSS (Cross-site scripting): Es un tipo de vulnerabilidad típico de las aplicaciones Web, que puede
permitir a una tercera persona inyectar en páginas web visitadas por el usuario código JavaScript
u otro lenguaje de scripting similar.
XFS: El ataque explota un error específico entre marcos de scripts en un navegador web para
acceder a los datos privados en un sitio web de terceros.
XSCR o CSRF (Cross Site Request Forgery): Falsificación de solicitud entre sitios. Es un ataque
contra aplicaciones hospedadas en web mediante el cual una aplicación web malintencionado
puede influir en la interacción entre un explorador cliente y una aplicación web que confíe en
ese explorador.
HTTP Response Split (CRLF Injection Attack): es la técnica en la que un atacante se vale de la
inyección de retornos de carro y de línea para alterar una respuesta HTTP y separarla en dos.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 28


Inyecciones – Introducción – Inyecciones
en Servidor
Inyección de comandos del SO: Ataque que ejecuta los comandos que pueden poner en peligro
el sistema operativo de forma inesperada. Usando comandos del SO.
Inyección SQL: Usar instrucciones de código SQL para obtener información usando una
vulnerabilidad.
Blind SQL Injection (Inyecciones SQL a ciegas): También usando instrucciones de código de SQL
para averiguar contraseñas u otras informaciones que puedan estar almacenadas en una base
de datos.
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.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 29


Inyecciones – Inyecciones en Servidor –
Inyecciones SQL
Supongamos que la aplicación web tiene:
• Un front-end donde se solicita el usuario y contraseña de los usuarios para loguearse.
• Un back-end donde hay una tabla de usuarios.

Tabla Users
User Pass
User alfredo 12345
cesar 54321
Password
marta 02468
isaac 13579

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 30


Inyecciones – Inyecciones en Servidor –
Inyecciones SQL
Pero ¿Qué ocurre si introducimos una cadena de texto que se encadene con el código de la
consulta? Por ejemplo:

SELECT * FROM TablaUsers WHERE user=‘xxx’ AND pass=‘yyy’;


xxx  alfredo , yyy  ’ OR ‘1’=‘1
El Resultado es:
SELECT * FROM TablaUsers WHERE
user=‘alfredo’ AND pass=‘’ OR ‘1’=‘1’;

FALSE OR TRUE

TRUE
¡¡ La consulta es correcta también ➔ logramos acceso !!
SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 31
Inyecciones – Inyecciones en Servidor –
Inyecciones Blind SQL
Inyectando código SQL también se puede lograr:
• Averiguar contraseñas u otra información almacenada en la base de datos.
• Agregar, eliminar, editar registros y tablas en una BD.
• Leer o descargarse archivos completos.

Para ello frecuentemente hay que conocer la estructura de la tabla…


… pero esta información está en el servidor victima, y el atacante accede desde un cliente
¿Cómo procede?
Se denomina sondas a las inyecciones con las que el atacante intenta averiguar información a
partir respuestas que recibe

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 32


Inyecciones – Inyecciones en Servidor –
Inyecciones Blind SQL
Ejemplo de sonda:
• Normalmente esta consulta SQL es un string que se completa con los parámetros recibidos (“user” y
“pass”), y después un lenguaje como PHP, en el servidor, interpreta dicho string.
• Por tanto la consulta va entre comillas, “…” o ‘…’
• El primer paso es averiguar que tipo de comillas enmarca la consulta.
• Insertando ” la instrucción es correcta pero NO da acceso.

“SELECT * FROM TablaUsers WHERE


user=‘alfredo’ AND pass=‘”;

• Insertando ’ la instrucción tiene un error de sintaxix que se reporta.

“SELECT * FROM TablaUsers WHERE


user=‘alfredo’ AND pass=‘’;

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 33


Inyecciones – Inyecciones en Servidor –
Inyecciones Blind SQL
El atacante utiliza dos tipos principales de sondas:
• Basada en contenido: Sería como la del ejemplo anterior.
• Basada en tiempo:
• Si el desarrollador ha filtrado los mensajes que se generan
• Aun es posible obtener información mediante un “If” que cuando la condición es cierta, lanza una espera de tiempo.

Por ejemplo: ¿Cómo averiguar una contraseña?


• Consultar si la primera letra de la contraseña es una A
• Error no lo es probar con la siguiente letra, ¿es B?, ¿es C?...
• No hay error / hay espera ¡ es A !
• Averiguar la siguiente letra por el mismo método ¿es AA?

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 34


Forgeries (Inyecciones
en cliente)

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 35


Forgeries
Las inyecciones de código pueden aprovechar cualquier punto de entrada de parámetros (no
solo los campos de un formulario).
• Parámetros en la URL.
• Valores almacenados en Cookies.

Cookie: Información enviada por un sitio web y


almacenada en el navegador del usuario, de
manera que el sitio web pueda conocer el
estado de la sesión, la combinación de
computador-navegador-usuario, las preferencias
de usuarios, etc.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 36


Forgeries
Un ataque por falsificación (forgery):
• Pretende crear, imitar o adaptar un entorno, aplicación o servicio real con el propósito de engañar al
cliente con intenciones maliciosas.
• El ataque más común es:
• Cross Site Scripting (XSS) a aplicaciones web.
• Diferentes estudios cuantifican que al menos un 40% de los sitios web que presentan vulnerabilidades que permiten realizar este
tipo de ataques.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 37


Forgeries - XSS
Ejemplo: Página con un foro
• La web que se muestra está programada con HTML estático.
• También tiene HTML dinámico con los mensajes enviados por los usuarios.
• Un usuario malicioso puede aprovechar el componente de entrada de texto para insertar código
javascript.
• Dicho código se almacena en la BD
• Cuando se actualiza la página se lee esta BD. Cuando se lee el código javascript el navegador lo
renderiza, y por ser javascript, necesariamente lo interpreta.
• De este modo el atacante logra su objetivo contra cualquiera que intente acceder a esa web.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 38


Forgeries - XSS
Existen varios tipos de ataques XSS:
• Almacenado: (Persistente o de tipo 1)
• El código XSS se almacena en una BD del servidor.
• El navegador de la victima (Alguien que accede a la aplicación) renderiza el código cuando lo recibe.
• Reflejado:
• El código XSS no queda almacenado.
• En su lugar, el servidor lo lanza contra la víctima, por ejemplo: En forma de correo electrónico con un enlace para que haga click.
• DOM Scripting:
• El código XSS inyectado modifica el DOM (Document Object Model). Por ejemplo: En la URL escribimos código JavaScript y la web
tiene un script que añade la URL sin sanear como parte del HTML y al cargar la web el código JavaScript se ejecutará.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 39


Forgeries - XSS
Ejemplos de XSS:
Ejemplo 1:

Ejemplo 2:

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 40


Forgeries - XSRF
Existe un tipo concreto de ataque XSS que se denomina Cross Site Request Forgery (XSRF)
• En el que la víctima accede legítimamente a un servidor A.
• Por otro lado el atacante inyecta código en un servidor B.
• En el trascurso normal de su actividad, la victima encuentra un enlace al servidor B y hace clic.
• Al recibir la respuesta de B, que incluye el código inyectado, el navegador de la victima hace peticiones
al servidor A, en el cual está logueada la víctima, sin que el usuario victima lo sepa.

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 41


Forgeries - XSRF
Ejemplo:
Tenemos una web con el siguiente código en el servidor A:

Mostraría lo siguiente en nuestro navegador:

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 42


Forgeries - XSRF
Ejemplo:
En el servidor B tenemos el siguiente código:

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 43


Forgeries - Clickjacking
También tenemos que tener en cuenta otro posible ataque: Clickjacking
• El objetivo de este ataque es conseguir que un usuario pulse un enlace (y realice una acción) sin que lo
sepa o creyendo que lo hace en otro enlace y con otro fin.
• Por ejemplo: Votar a alguien no deseado o “Me gusta” en Facebook. Se usa:
• Varias capas de HTML
• Iframe (Técnica para cargar una web dentro de otra)

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 44


Forgeries
Capa Visible Capa invisible

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 45


Forgeries
La web maliciosa se carga, pero la web legítima se carga delante, pero lo hace de forma
trasnprente (Con opacidad cero).
Se posicionan todos los elementos unos sobre otros
El usuario lleva el ratón hacia lo que vé, pero ¡¡ Pero hace clic en lo que NO ve !!

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 46


Forgeries - HTTP Response Split (CRLF
Injection Attack)

Http response splitting. Sharath Unni

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 47


Ataques y
contramedidas
UNIDAD 5 – ATAQUES A APLICACIONES Y SERVICIOS
CURSO 2023-2024

SEGURIDAD INFORMÁTICA - UNIDAD 6 – ATAQUES A APLICACIONES Y SERVICIOS 48

También podría gustarte