Módulo 2 Examen
Módulo 2 Examen
Módulo 2 Examen
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.
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.
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.
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.
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
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).
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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):
Herramientas de malware
A continuación, se enumeran algunas herramientas de malware clasificadas por categoría:
Investigacion forense
FastIR Collector - https ://github.com/SekoiaLab/Fastir Collector
Volatility Foundation - http: www. volatilityfoundation or,
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
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.
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.
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.
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.
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.
En esta sección se describen algunos de los ejemplos de APT ocurridas en los últimos años.
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)
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.
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.
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.
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
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.
¿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.
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.
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.
¿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.
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?:
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")+">";
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.
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:
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.
La aplicación utiliza datos no verificados en una llamada SQL que accede a información
sobre la cuenta:
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
http-//example.com/app'getappinfo
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.
¿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?
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.
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?:
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
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.
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.
http-/example.com/apptransferFunds?
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.
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 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.
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:
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.
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.