Está en la página 1de 21

GUÍA DE ACTIVIDADES Y RÚBRICA DE EVALUACIÓN - FASE 2.

IDENTIFICAR DIFERENTES VECTORES ATAQUES INFORMÁTICOS

CRISTIAN CAMILO SABOGAL BELTRÁN

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA

CIENCIAS BÁSICAS, TECNOLOGÍA E INGENIERÍA

PROGRAMA: ESPECIALIZACIÓN EN SEGURIDAD INFORMÁTICA

BOGOTÁ

2020
Tabla de contenido
Resumen.........................................................................................................................3
Abstract..........................................................................................................................4
Introducción...................................................................................................................5
Objetivo General.............................................................................................................6
Objetivos Específicos......................................................................................................6
1. TIPOS DE VULNERABILIDADS...........................................................................7
1.1. Vulnerabilidades de Cross Site Scripting (XSS)....................................................7
1.2. Vulnerabilidad SQL (Inyección)...........................................................................8
1.3. Vulnerabilidades de denegación del servicio DoS - DDoS...................................11
1.4. Vulnerabilidades de desbordamiento de búfer.....................................................14
1.5. Vulnerabilidades de condición de carrera...........................................................16
2. Metodología de intrusión PTES.............................................................................18
3. Herramienta de análisis de vulnerabilidades NESSUS...........................................18
Conclusiones................................................................................................................19
4. BIBLIOGRAFÍA...................................................................................................20
Resumen

A la par con el nacimiento de la computación, también surgieron los desarrollos de software que le
permitía a las maquinas, en ese entonces bastante primitivas, funcionar. Si bien es cierto que las
maquinas procesaban la información de forma correcta y precisa, lo cierto es que el software que las
controlaba era de desarrollo proveniente del hombre, tanto en su diseño como en su lógica y por
consiguiente bastante factible era que tuviera toda clase de errores.

Con el paso de los tiempos, los errores de código han disminuido, y gran parte de esta mejora se le
debe a los nuevos lenguajes de programación que son mas flexibles en su lógica y arquitectura y
también se debe a la facilidad de conseguir información en la red de cómo administrar dichos
lenguajes.

No obstante, aún, en pleno siglo XXI todavía se encuentran infinidad de errores de programación
cuando se ejecuta un software, lo cual da cabida a baches que son aprovechados por los
malintencionados.

Palabras clave:

Desarrollo de software: “cuando se hace referencia al desarrollo de software, se está hablando del
desarrollo de programas, los cuales deben cumplir una serie de etapas o fases, para poder funcionar
con otros métodos ya establecidos en otras disciplinas de ingeniería.”

(... Metodología de desarrollo de software. https://conceptodefinicion.de/metodologia-de-


desarrollo-de-software/)

Vulnerabilidad: "En materia de la Seguridad Informática, se define como una debilidad presente en
un sistema informático el cual afecta y/o compromete la Seguridad de este componente, lo que le
permitiría a un atacante explotar y violar la confidencialidad, integridad, disponibilidad y el control
de acceso, así como la consistencia del sistema y de la información contenida y resguardada en el
mismo."

(... ¿Qué es una vulnerabilidad? (s.f.). https://blog.cerounosoftware.com.mx/qu%C3%A9-es-


una-vulnerabilidad)
Abstract

Along with the birth of computing, there were also software developments that allowed the
machines, at that time quite primitive, to function. While it is true that the machines processed the
information correctly and accurately, the truth is that the software that controlled them was of
development from man, both in its design and in its logic and therefore quite feasible was that it had
all kinds of errors.

With the passage of time, code errors have decreased, and much of this improvement is due to the
new programming languages that are more flexible in their logic and architecture and also due to
the ease of obtaining information in the network of how to manage these languages.

However, even in the 21st century there are still plenty of programming errors when running a
software, which accommodates potholes that are exploited by the malicious.

Keywords:

Software development: "when referring to software development, we are talking about the
development of programs, which must meet a series of stages or phases, in order to work with other
methods already established in other engineering disciplines."

(... Software development methodology. Https://conceptodefinicion.de/metodologia-de-


desarrollo-de-software/)

Vulnerability: "In terms of computer security, it is defined as a weakness present in a computer


system which affects and / or compromises the security of this component, which allows an attacker
to exploit and violate confidentiality, integrity, availability and" access control, as well as the
consistency of the system and the information contained and protected therein. "

(... What is a vulnerability? (S.f.) Https://blog.cerounosoftware.com.mx/qu%C3%A9-es-una-


vulnerabilidad)
Introducción

En este documento se explorarán diferentes tipos de vulnerabilidades en sistemas, sus


generalidades, como se comportan y de que forma se puede prevenir y mitigar, pero para llegar a
entender dichas vulnerabilidades, hay que partir desde el concepto, por tal motivo se plantea la
siguiente pregunta: ¿Qué es una vulnerabilidad?

Básicamente, una vulnerabilidad, hablando netamente de sistemas informáticos, es una debilidad en


un sistema operativo, software o sistema de información como quiera que se llame, dichas
debilidades, permiten al atacante violar protocolos de seguridad y de esta forma tener acceso a la
confidencialidad, integridad, disponibilidad, controles de acceso, consistencia del sistema, datos,
aplicaciones, etc.

Dichas vulnerabilidades son el resultado de fallos en la construcción del software, no obstante, una
vulnerabilidad, también puede ser producto de limitaciones que tiene el mismo sistema, se puede
decir que tecnológicamente no fue diseñado para ciertas tareas que se le obligan a realizar bajo
ciertos criterios.

Se pueden catalogar las vulnerabilidades en dos grupos grandes, el primero de ellos se denomina
vulnerabilidad teórica, y el segundo (el que nos interesa ahora mismo) se conoce como
vulnerabilidad real o popularmente en el mundo de la ingeniería el Exploit.

Los exploits son todas las conocidas vulnerabilidades en aplicaciones y SO que se corrigen
mediante el famoso parcheo, a grandes rasgos, las vulnerabilidades de software y sistemas
informáticos son causales de problemas constantes para las compañías y usuarios, como bien se
menciona anteriormente, nos internaremos en un espacio donde se describen algunos casos de
vulnerabilidades para entender mejor la problemática.
Objetivo General

Desarrollar firmes conocimientos acerca de la definición e importancia de una vulnerabilidad en


sistemas de información con el fin de entender la dimensión y responsabilidad que se tiene como
profesional de ingeniería de sistemas de proteger los sistemas operativos e informáticos.

Objetivos Específicos

 Reconocer los diferentes tipos de vulnerabilidades en sistemas con el objetivo de conocer su


funcionamiento, metodologías de intrusión y riesgos para los sistemas.

 Desarrollar habilidades para mitigar los riesgos que generan las vulnerabilidades en los
sistemas.
1. TIPOS DE VULNERABILIDADS

1.1. Vulnerabilidades de Cross Site Scripting (XSS)

Generalidades:

También conocida como ejecución de comandos en sitios cruzados es una de las mas populares, a
continuación, se describirá como funciona, como afecta a las victimas y como prevenirlo.

Lo primero que hay que tener en cuenta es que con esta vulnerabilidad el atacante explota la
confianza que un usuario tiene en un sitio en particular, esta vulnerabilidad puede ser explotada de
de dos formas: la primera de ellas es la forma reflejada y la segunda se denomina almacenada, a
continuación, se explica cada una.

Reflejada: Consiste en alterar valores que una aplicación web utiliza para pasar variables entre dos
paginas, en ejemplo usual es hacer que a través de una navegador se ejecute un mensaje de alerta en
JS, usando XSS el atacante logra robar las cookies para posteriormente robar la identidad, sin
embargo para esto, el atacante debe conseguir que la victima ejecute un determinado comando
dentro de su dirección web, teniendo en cuenta esto los criminales informáticos suelen enviar mails
engañosos con el fin de que sus victimas hagan clic en un enlace disfrazado y que de esta manera se
produzca el robo.

Almacenada: Consiste en insertar código HTML peligroso en sitios que lo permitan, de esa manera
la modificación quedará visible

Hablamos anteriormente de modificación, alteración de valores y otros conceptos en sitios web,


pero ¿Qué significa que un sitio web es vulnerable a XSS?

Cuando un sitio web tiene dicha vulnerabilidad el atacante puede realizar varios tipos de ataques
basándose en la confianza que el sitio produce en el usuario y posterior victima, desde redirigir a
otro sitio para robar información mediante la técnica de phishing, hasta lograr que la victima
descargue alguna amenaza y posteriormente se ejecute en el sistema, a fin de cuentas, la técnica
XSS puede ser peligrosa para el usuario incluso en un sitio legítimo.

¿Cómo se produce?

Usualmente se debe a la nula o baja frecuencia en controles necesarios en los sitios web, el
administrador debe pensar como se puede vulnerar su sitio y buscar la forma de bloquear la
ejecución de comandos o modificaciones en su código, pero al no hacerlo los ciberdelincuentes
pueden lograr ejecutar scripts en lenguajes populares como JS, HTML u otros lenguajes, estos
scripts son una cadena de ordenes a ejecutar y de esta manera realizar modificaciones en una web
que se cree visualmente confiable.

Como se comporta el XSS en la práctica

A modo de ejemplo se planteará a continuación una situación que perfectamente puede ser replicada
en un entorno real:

 Server X pertenece al dominio www.bancoejemplo.com y este es vulnerable a XSS


 Desde otro extremo, el atacante logra introducir un código malicioso en
www.bancoejemplo.com por medio de la explotación de XSS, el código que introdujo logra
que, cuando el usuario acceda, sea re direccionado a un sitio que se ve exactamente igual a
www.bancoejemplo.com
 El usuario y posterior victima accede desde el navegador Y a www.bancoejemplo.com, no
obstante, cuando se ejecuta el código malicioso introducido por el atacante, estará
registrando sus datos financieros en un sitio clon del original y de esta forma
comprometiendo sus cuentas e información personal.

¿Cómo evitar ser victima de XSS?

1. Fundamental es una solución de seguridad instala y actualizada, es importante puesto a que


si se intentan ejecutar aplicaciones maliciosas como malwara o xploits de manera
automática serán bloqueadas.
2. Prestar especial atención a los sitios a donde se ingresa, siempre es bueno volver a revisar la
URL a la cual se está accediendo.
3. Nunca está de mas utilizar navegadores alternativos como Opera, Comodo o Chromium,
usualmente los ciberdelincuentes introducir scripts maliciosos en los navegadores comunes
como Firefox, Chrome o Edge.

1.2. Vulnerabilidad SQL (Inyección)

Generalidades:
Se puede hablar de que se produjo una “inyección SQL” cuando, de alguna forma se logró insertar o
inyectar un código SQL malicioso dentro de un código SQL programado, eso con el fin de
modificar el programa y hacerlo funcionar de manera incorrecta para lograr que en efecto se ejecute
un porcentaje del código invasor que se inyectó en la BD, como se menciona anteriormente esta
intrusión es de carácter malicioso, tienda a dañar o espiar y por lo tanto es un problema en cuando a
la seguridad informática se refiere y por supuesto debe ser tenido en consideración por quién
programa la aplicación con el objetivo de prevenirlo.

Cuando un software se elabora con descuido o desconocimiento de este riesgo, podrá ser vulnerable
y por ende la seguridad del sistema (BD) podrá quedar altamente comprometida. Esta intrusión se
puede presentar durante la ejecución del software que fue vulnerado, bien sea desde un PC de
escritorio o desde un sitio web, para este caso, obviamente se debe ejecutar en el servidor que aloja
la aplicación.

A continuación, se describen los tipos de SQL Injection:

Inyección por error: Es el más común y por ende el más fácil de encontrar pues la misma
aplicación va mostrando los errores de la BD cuando se están usando ataques de SQL Injection, con
este error es muy sencillo conseguir cualquier información de la base, pues se puede tener acceso a
estructuras, nombres de campos y en algunos casos datos.

Inyección por unión: Este ataque básicamente consiste en que una pagina web devuelve un
resultado, por ejemplo, todos los restaurantes gourmet en Bogotá, ahí es donde el atacante añade al
resultado original el resultado de otra query, ejemplo, todos los usuarios y contraseñas de la pagina
web y hace que las dos querys salgan en esa página de resultados.

Inyección ciega: Es el ataque mas complejo y avanzado, cuando el ataque por error y por unión no
resultan favorables para el atacante se usa esta alternativa. Hay dos tipos de ataque ciego:

 Basada en contenido: todos los restaurantes gourmet en Bogotá, muestra el resultado si la


consulta es exacta, sino no muestra resultado
 Basada en tiempo: tarda 5-10 segundos en mostrar todos los restaurantes gourmet en
Bogotá, si viene con intrusión de código devuelve el resultado al instante.

Datos Exfiltración: La exfiltración de datos a través de inyección de SQL consiste en encontrar una
vulnerabilidad que le permite al atacante la lista de todas las tablas y volcar las cuentas de usuario,
mails y passwords, este tipo de ataque ha contribuido a algunas de las violaciones de seguridad más
grandes de la historia hasta la fecha.
¿Cómo se produce?

A continuación, se platea un ejemplo practico para entender el ataque:

Se asume que el siguiente código se encuentra en una aplicación web y que hay un parámetro
“N_User” que tiene el nombre de un usuario que se quiere consultar, una inyección de SQL se
puede producir de la siguiente forma:

El código original vulnerable es "SELECT * FROM USUARIOS WHERE NOMBRE = '" +


N_User + "';"

Si el ingeniero escribe un nombre, por ejemplo “CAMILO”, no sucederá nada fuera de lo normal,
simplemente la aplicación generará una sentencia SQL similar a la que será descrita a continuación,
que es perfectamente correcta en donde se listaran todos los registros con coincidan con el nombre
“CAMILO” en la BD:

SELECT * FROM USUARIOS WHERE NOMBRE = 'CAMILO'

Sin embargo, si un atacante escribe la siguiente sentencia para consultar el nombre:

CAMILO'; DROP TABLE USUARIOS; SELECT * FROM DATOS WHERE NOMBRE LIKE '%

Se produciría la siguiente consulta SQL:

SELECT * FROM USUARIOS WHERE NOMBRE = 'CAMILO';

DROP TABLE USUARIOS;

SELECT * FROM DATOS WHERE NOMBRE LIKE '%';

En la BD se ejecutará la consulta en el orden entregado, se seleccionarán todos los registros con el


nombre 'CAMILO', se borrarán la tabla USUARIO y por ultimo se borrará la tabla DATOS que en
ninguna circunstancia debe estar disponible para usuarios comunes, en conclusión, cualquier dato
de la BD puede quedar disponible para ser consultado o alterado por el atacante.

¿Cómo evitar ser víctima de inyecciones de SQL?

1. Escapar caracteres especiales usados en consultas SQL: cuando se habla de escapar


caracteres se hace referencia añadir al backslash “\” por delante de las cadenas usadas en
consultas SQL, esto con el fin de prevenir la corrupción en la consulta, otros caracteres
especiales que es recomendable escapar con las comillas dobles, las sencillas y los \x00 o
\x1a que son considerados peligrosos a la hora de ser utilizados en un ataque.
2. Delimitar los valores de las consultas: Es aconsejable delimitar los valores entre comillas
simples, usualmente recomendable cuando se trata de valores enteros, ejemplo:

SELECT nombre FROM usuarios WHERE id_user = $id

Será mucho más fácilmente inyectable que:

SELECT nombre FROM usuarios WHERE id_user = ‘$id’

Donde $id es un número entero.

3. Siempre verificar los datos que ingresa el usuario: Si en una consulta se espera recibir un
dato tipo int, no hay que esperar que efectivamente así sea, es aconsejable tomar medidas
preventivas de seguridad y realizar una comprobación para identificar que efectivamente se
trata de un dato tipo int, para esto, la mayoría de los lenguajes de programación ofrecen
funciones que realizan dicha comprobación. También se aconseja validar la cantidad de
caracteres que se reciben, por ejemplo, si se quiere capturar el número de celular (contiene
13 dígitos) y se percibe una entrada con muchos mas caracteres se puede suponer que se
trata de un ataque de SQL Injection.

4. Mínimos privilegios: El usuario que se use para conectarse a la BD desde el código propio
con el fin de realizar cualquier acción de administración debe contar con los privilegios
justos para dichas acciones, es recomendable no usar usuario tipo ROOT con acceso a todas
las BD, pues ingresar con tantos privilegios le da oportunidad al atacante de poder acceder a
la información por medio de un ataque.

1.3. Vulnerabilidades de denegación del servicio DoS - DDoS

Generalidades:

Un ataque de denegación de servicios (DoS – Denial Of Service) tiene como propósito impedir el
ingreso a los servicios y recursos de una organización por un espacio indefinido de tiempo,
usualmente este tipo de ataques se dirige a los servidores de una empresa con el fin de que no
puedan usarse ni consultarse.

La DoS es una compilación que puede afectar a cualquier servidor en una compañía o a usuarios
conectados en la red, su propósito no es recuperar ni alterar información, sino en damnificar la
reputación de las empresas que tienen presencia en internet y de esta manera afectar el desarrollo
normar de sus actividades.

Entrando en la materia técnica, estos ataques no son muy complejos, sin embargo, no por esto dejan
de ser efectivos de cara a atacar sistemas operativos Windows, Linux o cualquier otro OS, en su
mayoría, los ataques DoS aprovechan las vulnerabilidades relacionadas con la implementación de
protocolos TCP/IP.

¿Cómo se genera? Mediante la saturación de puertos por los cuales fluye información, consiguiendo
que el servidor se sobrecargue y no consiga seguir prestando su servicio normal, es por esto que se
le denomina “denegación”, pues logra que el servidor no dé abasto a todas las solicitudes que
recibe.

Hay tipos de ataques de DoS que se describen a continuación:

DoS por saturación: Saturan el equipo (servidor) con solicitudes para que no puedan responder a las
solicitudes reales que se le realizan.

DoS por explotación de vulnerabilidades: Aprovechan una vulnerabilidad para hacer que el sistema
sea inestable.

Los DoS envían paquetes IP o datos con tamaños anormales o formatos atípicos para el sistema que
saturan los equipos de destino y los hacen inestables, por lo tanto, imposibilitan el funcionamiento
normal de los servicios de red que se brindan, cuando varios equipos activan una DoS, el proceso se
conoce como sistema distribuido de denegación de servicios (DDoS), entre los más populares están
Tribal Flood, Network TFN y Trinoo.

¿Cómo se produce?

Hay varios métodos de ataque relacionados con el DoS, a continuación, se referencia cada uno:

Inundación SYN: Una inundación SYN es un ataque DoS que buscar dejar sin disponibilidad un
servidor con el objetivo de legitimar el trafico al consumir todos los recursos disponibles del server.
Esto ataques funcionan bajo la explotación de procesos de protocolo en una conexión TCP. Se
envían paquetes TDC/SYN, en la mayoría de veces con la dirección de origen falsa, cada uno de
estos paquetes que se reciben son tratados por el destino como una solicitud de conexión, esto causa
que el servidor intentes establecer conexiones respondiendo con paquetes TCP/SYN-ACK y
esperando un paquete de respuesta TCP/ACK, no obstante, teniendo en cuenta que la dirección de
origen no es real o la IP real no ha solicitado conexiones, nunca llega una respuesta y como
conclusión, como se mencionó anteriormente, dichos intentos de conexión consumen recursos del
servidor y saturan la cantidad de conexiones que se pueden establecer, reduciendo así la
disponibilidad del servidor para responder a solicitudes reales de conexión.

Inundación ICMP: Es una técnica DoS que pretende saturar y agotar el ancho de banda del
afectado, consiste básicamente en enviar de manera constante una gran cantidad de paquetes ICMP
request (ping) de un tamaño considerable, de tal manera que va a responder con paquetes ICMP
reply (pong) lo que se traducirá en una sobrecarga de la red y del sistema de la víctima. Si en la
relación en capacidad de procesamiento del atacante y la victima es mayor la capacidad del atacante
será más rápido que la red y sistema de la víctima se degrade.

Inundación UDP: Este ataque se basa en generar cantidades abundantes de paquetes UDP contra la
víctima, teniendo en cuenta las características de conexión del protocolo UDP, este tipo de ataques
usualmente vienen de la mano con una IP spoofing, normalmente este ataque va dirigido a
maquinas que ejecutan servicios Echo (Reques y Reply), de tal manera que se generan mensajes
Echo de un gran tamaño hasta saturar el protocolo.

¿Cómo evitar ser víctima de DoS?

Si se trata de proteger una red interna, las recomendaciones de seguridad para evitar ser victima de
DoS son las siguientes:

1. Ubicar el servidor en una DMZ, evitando así que un delincuente informático logre ingresar
a la red interna y vulnerar el server.
2. Implementar un sistema de detección y prevención de intrusiones (IDS/IPS) que monitoree
las conexiones y alerte en caso de detección de intentos de acceso no autorizados o una
mala utilización de los protocolos.
3. Usar software con funcionalidad mixta (antivirus, cortafuegos), como un UMT que permita
gestionar de forma unificada las amenazas que puedan afectar a la compañía.

Si se trata de proteger un hosting las medidas básicas de seguridad son las siguientes:
1. El ancho de banda: se debe contar con el mayor ancho de banda posible, de esta manera, es
posible gestionar de manera mas eficaz los picos de trafico que causan las denegaciones de
servicio.
2. Redundancia y balance de carga: la redundancia consiste en tener un servidor igual y un
balanceador de cargas que se mueva de un servidor a otro en función de la carga de trabajo
que se esté soportando, con esto se logra reducir el riesgo de ataques DoS, pues la
probabilidad de detener el server por sobrecarga es mas remota, teniendo en cuenta que
tiene otro servidor que hace la redundancia.

1.4. Vulnerabilidades de desbordamiento de búfer.

Generalidades:

El desbordamiento de búfer es un error de software que se genera cuando un programa no controla


de manera correcta la cantidad de datos que se copian en un área de memoria que se reserva para tal
fin (búfer), de manera que, si esta cantidad es superior a la capacidad preasignada al búfer, los bytes
que sobran se van almacenando en espacios de memoria adyacentes, haciendo que se sobre escriba
su contenido original.

Los ataques por desbordamiento de búfer están diseñados para iniciar una ejecución de un código x
en un software para que llegue una cantidad desmedida de datos mayor al que tiene capacidad de
recibir, un software que permite datos de entrada con parámetros, los almacenan de forma temporal
en el espacio de memoria denominado búfer, cuando se logra saturar ese búfer es cuando se puede
ejecutar un código malicioso en la aplicación y permitir acceso al sistema.

¿Cómo se produce?

A continuación, se describe un ejemplo practico para entender de manera más simple el ataque por
desbordamiento de búfer:

En un software se definieron dos elementos de datos en memoria: un búfer de 8 bytes tipo string
que denominaremos X y otro elemento de 2 bytes tipo int que llamaremos Z
A continuación, el software intenta almacenar una cadena de caracteres en el búfer X, seguido de
bytes nulos con el fin de marcar el final de la cadena string, al no validarse la longitud de la cadena
se sobre escribe en el valor de Z a pesar de que el desarrollador no quería cambiar el tamaño del
búfer Z, el valor de este ha sido reemplazado por un número equivalente a parte de la cadena de
caracteres.

Un ejemplo de un programa desbordable sería el siguiente:

#include <stdio.h>

main()

char userinput[50];

printf("Introduce una cadena: ");

scanf("%s", &userinput); /* posible buffer overflow */

return 0;

En el programa anterior, si el usuario ingresa una cadena superior a 50 caracteres generaría


desbordamiento, pues la misma se utiliza para llenar un búfer, si validar antes su longitud, cadenas
menores a 50 caracteres no provocarían inconvenientes.

¿Cómo evitar ser víctima de Desbordamiento de búfer?

1. Programación: es importante desarrollar aplicaciones que utilicen lenguajes avanzados para


garantizar una administración adecuada de la memoria asignada o usar un lenguaje con bajo
nivel de programación, pero con bibliotecas seguras.

2. Boletines de alerta: Los boletines de alerta se publican frecuentemente, estos informan


acerca de vulnerabilidades en aplicaciones, los desarrolladores de software afectados
usualmente publican versiones nuevas corrigiendo los bugs, la recomendación principal es
que los administradores de sistemas estén informados acerca de alertas de seguridad para
poder realizar revisiones preventivas.
1.5. Vulnerabilidades de condición de carrera.

Generalidades:

La también conocida como race condition es una vulnerabilidad bastante común, estos errores se
generan en situaciones de concurrencia de muchos hilos en los que se compite por los recursos que
entrega un SO.

Hay ocasiones donde se presenta la eventualidad en la cual dos o mas procesos tiene que hacer
tareas de write y read en un área común que comparten, lo ideal es que las acciones llevadas a cabo
por cada recurso se pudiera dar de manera simultanea sin afectar al sistema, sin embargo hay
ocasiones donde esto no sucede y generan datos inconsistentes y adicional a esto, dejan la puerta
abierta en intervalos de tiempo en el cual un atacante podría tener privilegios, leer, editar, escribir y
otras acciones sobre ficheros que usualmente están protegidos.

¿Cómo se produce?

A continuación, un ejemplo practico para entender de manera más sencilla como actúa la
vulnerabilidad de condición de carrera:

Se tiene la siguiente rutina:

Var x=10

Sub decrementar {

If (x>0) {

X–

X es una variable local compartida, si un único proceso es el que se ejecuta, esta variable no tomará
nunca un valor negativo, no obstante, en un entorno donde hay diferentes procesos corriendo la
misma rutina compitiendo por el tiempo de CPU, si un proceso no iniciara la ejecución de la rutina
hasta que otro no finalice la ejecución de la misma no habría problemas. No obstante, podría darse
un evento en donde un proceso que denominaré N1 inicie la ejecución de la rutina para un valor de
X=1, N1 realiza la comprobación x>0 también se cumple y se ejecuta el código contenido en la
comprobación, con lo que x toma el valor 0.

El proceso N2 termina su ejecución en el mismo punto en el que se paró, es decir, decrementando la


variable x, ya que la comprobación la realizo anteriormente, con lo que el final de esta rutina
devuelve un valor negativo en la variable x.

Hay que tener en cuenta que la vulnerabilidad de condición de carrera puede generar daños
irreparables para los ficheros en una máquina que se vulnerable.
2. Metodología de intrusión PTES

Basa su accionar en la ejecución de las pruebas, se desarrolla en 7 fases:

 Preacuerdo: definición del objetivo


 Recopilación de inteligencia: recolección de información teniendo en cuenta las fuentes abiertas
 Modelado de amenazas: identificación de posibles riesgos
 Análisis de vulnerabilidades: se descubren todos los riesgos que puedan ser ejecutados
 Explotación: trabajar en las vulnerabilidades identificadas
 Post explotación: continuación del proceso previo
 Reporte: comunicación al cliente acerca de la información y posibles soluciones al problema

Todo lo anterior conteniendo primeramente las razones por las cuales se hicieron las pruebas,
seguido de los posibles riesgos y su valoración, luego el análisis de las vulnerabilidades encontradas
y la confirmación de que las mismas han sido podido ser explotadas junto con las contramedidas
propuestas y probadas. Así también las métricas utilizadas y las contramedidas propuestas para los
riesgos analizados, esto es, el grado de exposición que tienen los activos de la empresa y
organización.

3. Herramienta de análisis de vulnerabilidades NESSUS

Nessus es una herramienta de análisis de vulnerabilidades de seguridad, cuya funcionalidad es


ayudar a detectar posibles vulnerabilidades en las maquinas testeadas.

Nessus es un producto de la empresa Tenable Network Security, es conocido como uno de los
analizadores más completos de la actualidad, utiliza una tecnología denominada Nessus
Professional-Feed, que, al mismo tiempo es atendida y se somete a constante actualización por parte
de equipos expertos en investigación y búsqueda de vulnerabilidades.
La compañía Tenable se encuentra en búsqueda constante de vulnerabilidades, cuando descubre una
nueva, genera un plug-in para Nessus, cuando se aprueba, lo pone disponible para su descarga con
el fin de que su producto siempre pueda realizar testeos de red y host más actualizados.

Permite realizar escaneo de vulnerabilidades en servidores web, servicios web, además de las
vulnerabilidades de OWASP. También ayuda a verificar la configuración errónea del sistema y
parches faltantes. Muestra informes personalizados en formato XML, CVS, PDF nativo y HTML, la
herramienta es de tipo scanner y aplica para sistemas operativos como Windows, Linux, BSD,
Solaris y otros Unix.

Conclusiones

Se analizaron varias clases de vulnerabilidades en sistemas informáticos, en donde se entendió la


diferencia entre ataque y vulnerabilidad, sus características generales, los métodos de intrusión de
cada uno y como mitigarlos o reducir el riesgo.

Se obtuvieron conocimientos por medio de portales web, revistas científicas y libros relacionados
con la temática que aportaron a la construcción de este documento y a mi desarrollo profesional.

A partir de la finalización de este documento, se crea una conciencia, profesionalmente hablando de


las diversas posibilidades que tienen los atacantes de vulnerar nuestra información, por ende, más
que pensar como implementar excelentes sistemas (que es sumamente importe) se debe velar en
primera instancia por la seguridad del mismo, y construir, a partir de este principio un software de
calidad en cuanto a seguridad se refiere.
4. BIBLIOGRAFÍA

G. Wassermann and Z. Su, "Static detection of cross-site scripting vulnerabilities," 2008


ACM/IEEE 30th International Conference on Software Engineering, Leipzig, 2008, pp. 171-
180.

Ignacio Pérez, I. P. (2015a, 29 abril). Comprendiendo la vulnerabilidad XSS (Cross-site


Scripting) en sitios web | WeLiveSecurity. Recuperado 5 marzo, 2020, de
https://www.welivesecurity.com/la-es/2015/04/29/vulnerabilidad-xss-cross-site-scripting-
sitios-web/

Vulnerabilidades informáticas. (2019, 27 marzo). Recuperado 5 marzo, 2020, de


https://www.tecnologia-informatica.com/vulnerabilidades-informaticas/

Vulnerabilidad inyección sql. (2020). Recuperado 7 marzo 2020, de https://mundo-


hackers.weebly.com/vulnerabilidad-sql-inyeccioacuten.html

JESUS ANTONIO ALVAREZ CEDILLO, J. A. (2020, 3 marzo). Unidad Profesional


interdisciplinaria de Ingeniería y Ciencias Sociales y Administrativas: Aplicación para la
detección de vulnerabilidades de inyección SQL en portales web. Recuperado 7 marzo,
2020, de http://repositorio.upiicsa.ipn.mx/handle/20.500.12271/1275

(2020). Recuperado 7 marzo 2020, de


https://s3.amazonaws.com/academia.edu.documents/37010957/Paper_Seguridad_Chicaiza_
Ponce_Velasquez.pdf?response-content- disposition=inline%3B%20filename
%3DINYECCION_DE_SQL_CASO_DE_ESTUDIO_ WASP.pdf&X-Amz-
Algorithm=AWS4-HMAC-SHA256&X-Amz- redential=AKIAIWOWYYGZ2Y53UL3A
%2F20200307%2Fus-east- %2Fs3%2Faws4_request&X-Amz-Date=20200307T203633Z&X-
Amz-Expires=3600&X- mz-SignedHeaders=host&X-Amz-
ignature=16823376848368be64b215054e3a60a4e3e107549a5afd54a2bb94c5c657bfc9

Ataques de inyección SQL: qué son y cómo protegerse | Hostalia – Pressroom. (2013, 26
diciembre). recuperado 7 marzo, 2020, de https://pressroom.hostalia.com/white-papers/ataques-
inyeccion-sql/
EcuRed. (s.f.). Ataque de denegación de servicio - EcuRed. Recuperado 8 marzo, 2020,
de https://www.ecured.cu/Ataque_de_denegaci%C3%B3n_de_servicio

Fornaroli, Mauro F, M. F. (2018, 10 agosto). Vulnerabilidades en HTTP/2. Recuperado


7 marzo, 2020, de http://sedici.unlp.edu.ar/handle/10915/68348

Medidas de prevención contra ataques de denegación de servicio. (2019, 9 julio).


Recuperado 8 arzo, 2020, de https://www.incibe.es/protege-tu-empresa/blog/medidas-
prevencion-ataques- denegacion-servicio

EcuRed. (s.f.-b). Desbordamiento de búfer - EcuRed. Recuperado 8 marzo, 2020, de


https://www.ecured.cu/Desbordamiento_de_b%C3%BAfer

La condición de carrera. (2013, 24 septiembre). Recuperado 8 marzo, 2020, de


https://www.internetlab.es/post/2548/condicion-de-carrera/
Rapid7. (2017, 1 enero). Vulnerability Scanning Software Features. Recuperado 12
marzo, 2020, de https://www.rapid7.com/products/nexpose/features/

Hoja de datos de Nessus Professional. (2020, 27 febrero). Recuperado 13 marzo, 2020,


de https://es-la.tenable.com/data-sheets/nessus-professional

Alonso, C. G. I. L. M., Gabriel, D. O., Ignacio, A. A., & Elio, S. R. (2014). PROCESOS
Y HERRAMIENTAS PARA LA SEGURIDAD DE REDES (15ª ed.). N/A: UNED.

También podría gustarte