Está en la página 1de 11

Anticodigo malicioso

Programas anti código malicioso


Detección
Métodos
Según código esté en ejecució

Estático (no)

Escáner

Escáner con heurística

Comprobador de integridad

Dinámico (sí)

Monitor/Bloqueador de
comportamiento

Emulador

Escáner (Estático)
Firma: secuencia de bytes que caracteriza cada código malicioso

Ej: 0400 B801 020E 07BB 0002 33C9 8BD1 419C + nº de diferencias
0400 B801 020E 07BB ?? 02 %3 33C9 8BD1 419C

Escaneo: proceso de búsqueda de firmas en archivo

Fundamental: algoritmo de búsqueda eficiente

Tipos

Por petición: Iniciado explícitamente por usuario

Cuando instala/actualiza anti código malicioso o su base de datos

Cuando hay sospecha de infección

Por acceso: Continuamente en ejecución

Escanea cada archivo cada vez que se accede a él

Anticodigo malicioso 1
Supone consumo de recursos → Rendimiento de máquina
disminuye

Algunos permiten configurar condiciones de escaneo

Escáner con heurística (Estático)


Busca trozos de código que parecen código malicioso

Pasos

Recolección de datos

Buscar firmas cortas indicativas de código sospechoso (evidencia


positiva) o de cosas que código malicioso no hace normalmente
(evidencia negativa)

Comparar valores de punto de entrada y fin de ejecutable con


valores de ejecutables no infectados

Buscar elementos que no cumplan la ley de Benford

...

Análisis

Elemental: Combinación lineal de resultado de varias heurísticas y


comparación con umbral

Más elaborado: aprendizaje automático, minería de datos, ...

Comprobador de integridad (Estático)


Busca cambios no autorizados en archivos

Procedimiento

Calcula y almacena valor de verificación para cada archivo

Más adelante (por ej., antes de ejecución) recalcula valor de


verificación y compara con almacenado

Tipos

Autónomo: Aplicación comprueba valores de verificación: por acceso,


periódicamente, ...

Autocomprobación: Ejecutables se analizan a sí mismos cuando se


ejecutan

Anticodigo malicioso 2
Necesario modificarlos (mecanismo parecido a virus)

En general cualquier tipo de anti código malicioso se autoanaliza

Consola de integridad: Comprobación de valor de verificación justo


antes de ejecución. Por ej., incorporado a núcleo de sistema operativo

Monitor (/ bloqueador) de comportamiento (Dinámico)


Sigue comportamiento de programa en tiempo real y si encuentra
actividad sospechosa, puede evitar que se haga, parar programa,
preguntar a usuario qué hacer, ...

Algoritmos

Como escáner, pero con firma


generada dinámicamente. Ejemplo

Código no infectado es ejecutado y se


miran sus acciones

Firmas de longitud K, secuencias


producidas de K acciones

Cuando se ejecuta ese código,


demasiadas secuencias de acciones
nuevas indican comportamiento
anormal

También posible usar heurísticas. Ej., mejora acierto si se tiene en cuenta


contexto (por ej., propiedad)

Emulador (Dinámico)
Código analizado se ejecuta en entorno emulado. Evita daño real

Tipos

Heurísticas dinámicas

Se diferencian de estáticas en que datos se recogen de emulador

Pueden buscar mismas características que monitor de


comportamiento

Efectivas para encontrar firmas dinámicas de código malicioso


mutante

Anticodigo malicioso 3
Descifrado general

Se confía en propio mecanismo de código malicioso para


descifrarlo en lugar de intentar hacerlo propio anti código
malicioso

Pueden usarse heurísticas para detectar cuándo ha ocurrido


descifrado

Búsqueda de firmas periódicamente durante y tras emulación

Aspecto clave: cuándo parar. Reglas y heurísticas

Repetición de emulación si no se tiene éxito

Probar con otros valores para parámetros de CPU

Ejecutar cada posible punto de entrada de código malicioso

Probar con ramas no exploradas

Intentar ejecutar áreas de memoria no usadas

Infectar archivo con propiedades conocidas para deducir


información sobre código malicioso

Optimización de emulador

Para tamaño y complejidad. Usar sistema de archivos real

Para rendimiento. Usar caché de emulaciones previas

Comparación de técnicas
Escáner

Pros: Identificación precisa de código malicioso encontrado

Contras: Necesaria base de datos de firmas actualizada. Solo


encuentra código malicioso conocido (y alguna variante menor)

Escáner con heurística

Pros: Encuentra código malicioso conocido y desconocido

Contras: Falsos positivos, código detectado no es identificado por lo


que si es desinfectado usa métodos genéricos

Comprobador de integridad

Pros: Encuentra código malicioso conocido y desconocido

Anticodigo malicioso 4
Contras: Muchos falsos positivos, código detectado no es identificado
por lo que si es desinfectado usa métodos genéricos, valor de
verificación almacenado debe corresponder a estado limpio, no
aconsejable para archivos de datos ...

Monitor/bloqueador de comportamiento

Pros: Encuentra código malicioso conocido y desconocido, se deshace


de parte de ofuscación

Contras: Falsos positivos, código detectado no es identificado por lo


que si es desinfectado usa métodos genéricos, consumo de recursos
durante ejecución, puede detectar cuando ya se han producido
problemas

Emulador

Pros: Encuentra código malicioso conocido y desconocido, se deshace


de parte de ofuscación, en entorno seguro

Contras: Falsos positivos, código detectado no es identificado por lo


que si es desinfectado usa métodos genéricos, consumo de recursos
durante ejecución, puede detectar antes de que código malicioso
actúe realmente

Mejoras de rendimiento
Reducir cantidad analizada en archivo: Búsqueda en localización específica
según suposiciones sobre
comportamiento viral

Dónde se ubica código malicioso

Tamaño de código malicioso

Reducir cantidad de archivos analizados:

Analizar o no dependiendo de su tipo: Fiable, Firmado, Ejecutable, ...

Analizar sólo si archivo ha cambiado


• Qué información es necesaria y dónde guardarla
• Qué cambio se ha producido y cómo comprobarlo

Cambiar algoritmo

Mejorar algoritmo de búsqueda, análisis, comparación, ...

Anticodigo malicioso 5
Hacerlo específico para tipo de archivo

Cambiar implementación de algoritmo

Adaptarlo a compilador, CPU, memoria

Convertir datos (tablas) en código directamente ejecutable

Reducir requisitos de recursos

Usar conjunto de firmas menor y menos preciso (↓demanda de CPU y


memoria)

Heurísticas se pueden ver como modo de reducir requisitos de


recursos con respecto a escáneres

¡Cuidado! Intentar mejorar rendimiento puede aumentar fallos

Parada
Hacer que código malicioso deje de ejecutarse (y replicarse)

Considerar que código malicioso puede

ejecutarse en varias tareas para evitar ser parado

descargar más código malicioso, que también se ha de


desinfectar/eliminar

parar herramienta de desinfección

tener acción especial asociada a detección de posible herramienta de


desinfección

Identificación
Para

Reducir falsos positivos

Identificar código malicioso de forma concluyente

Funcionamiento

Recopilar toda información posible: Puede ser necesario transformar


(ej., descifrar cuerpo de virus cifrado)

Alternativas

Comparar código malicioso con copia conocida

Anticodigo malicioso 6
Comparar valor de verificación con el de código malicioso
conocido

Usar firma (mayor en caso de técnica basada en firma)

Usar código especial

Cuarentena

Aislar código malicioso de resto de sistema

Mover a directorio específico (oculto)

Cifrarlo

Temporal, hasta decidir qué hacer

Desinfección
Alternativas

Restaurar archivos afectados con copias de seguridad

Puede conllevar pérdida de datos

Código malicioso (o su efecto) puede estar en copia de seguridad

Usar método específico para código malicioso

Puede emplear subrutinas genéricas

Usar método específico para comportamiento de código malicioso

Para grupos con mismo comportamiento

Usar propio código malicioso

Anti código malicioso puede aprovechar que código malicioso oculto


proporciona contenido no infectado de archivo y ‘pedírselo’

Emulador con descifrador genérico ejecuta código malicioso en


condiciones controladas para ver cuándo vuelve a código original (sin
cifrar)

Borrar archivo infectado

No restaura

Anticodigo malicioso 7
Bases de datos de firmas
Información por registro Actualización es
fundamental
Identificador
Amenazas
Nombre imprimible para presentar a
usuario Posible ataque a
máquina de vendedor
Datos de verificación
Posible suplantación de
Si firma en claro, otro anti código
vendedor
maliciosos puede detectar base de
datos como infectada Posible interceptación
y modificación durante
distribución

Posible ataque
(interno) a base de
datos

Alternativa: Almacenar firmas cifradas

Instrucciones de desinfección

Anti anti código malicioso


Retrovirus
Código malicioso que intenta deshabilitar anti código malicioso

Técnicas:

Matar los procesos que casan con lista de procesos usados por anti
código malicioso

Además puede deshabilitarlo aunque se reinicie sistema

Fácil darse cuenta de su acción

Hacer que anti código malicioso no tenga tiempo de CPU → Evitar que
se ejecute

Poco eficaz

Anticodigo malicioso 8
Evitar actualización de anti código malicioso y su base de datos

Blindaje (anti ingeniería inversa)


Hacer que análisis sea difícil

Métodos antidepuración contra análisis dinámico

Detectar depurador:

Buscar singularidades de depuradores conocidos

Buscar puntos de ruptura (incluso en su código o de funciones que


use)

Comprobar si hay ejecución paso a paso

Preguntar a sistema

Si detectado, hacer que código malicioso no funcione

Métodos antidesensamblaje contra análisis estático

Conseguir que desensamblaje sea difícil de automatizar

Usar problemas difíciles de resolver Ej., mezclar código y datos)

Conseguir que código completo no esté disponible hasta tiempo de


ejecución

Generar código dinámicamente como compilador JIT (just-in-time)

Modificar código malicioso durante su ejecución

Generar código usando parámetro de entorno de ejecució

Descifrar código cuando se necesite

Tunelado
Soslaya monitorización

Emplea técnicas similares a anti código malicioso para descubrir


monitorización

Análisis estático de código para buscar cambios en flujo de control

Métodos dinámicos: Paso a paso o emulación

Examina código unido a interrupción concreta para encontrar código


original de SO (o BIOS y ejecutarlo directamente saltando programas

Anticodigo malicioso 9
residentes (incluido monitor)

Adjuntar rutina de tunelado a interrupción

Encontrar segmento original de código

Si no hay separación entre procesos de usuario y de SO, fácil

Si la hay, usar llamadas a bibliotecas en lugar de a SO o instalarse


en núcleo de SO

Llamar a rutina (original) de interrupción

Antiemulación
Sobrevivir/durar más que emulación

Conseguir evadir la detección lo suficiente para que acabe emulador

Añadir código que no hace nada o algo inútil

Reducir frecuencia de replicación

Retrasar ejecución de código mediante ofuscación de punto de


entrada

Burlar: Reestructurar código viral para que no parezca sospechoso

Sobrepasar: Prever actuación por si código malicioso está en emulación

Usar instrucciones no documentadas esperando que emulador no las


emplee

Intentar acceder a ubicaciones de memoria inusuales que en máquina


real provocarían error

Buscar recursos externos (difíciles de emular)

Comprobar si se producen cambios donde debería (ej., hora de


llamada a función)

Hacer comprobaciones específicas para cierto emulador

Ataques a comprobador de integridad


Usar código malicioso que oculta indicios de infección

Aprovechar fallos de código (ej., modificar base de datos de códigos de


validación)

Anticodigo malicioso 10
Ofuscación de punto de entrada
No muy eficaz

Modificar dirección de comienzo de ejecutable

Elegir lugar aleatoriamente

Elección controlada de ubicación

Sustituir llamadas a salida de proceso

Sustituir secuencia repetitiva de instrucciones

Elusión/evitación
Ubicar (esconder) código malicioso donde no mira anti código malicioso

Poco eficaz

Anticodigo malicioso 11

También podría gustarte