investigación y descubrimiento de vulnerabilidades

35
Investigación y Descubrimiento de Vulnerabilidades Lic. Julio C. Ardita Lic. Julio C. Ardita [email protected] [email protected]

Upload: others

Post on 25-Mar-2022

14 views

Category:

Documents


0 download

TRANSCRIPT

Investigación y Descubrimiento de Vulnerabilidades

Lic. Julio C. ArditaLic. Julio C. [email protected]@cybsec.com

2

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

AgendaAgenda

- El mundo de las vulnerabilidades de seguridad

- Descubriendo vulnerabilidades

- Experiencias en la investigación de vulnerabilidades

3

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

El mundo de lasvulnerabilidades

de seguridad

4

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Es un falla o limitación en el diseño, procedimiento o implementación

de un sistema.

El mundo de las vulnerabilidades de seguridad

¿Qué es una vulnerabilidad?

¿Qué es una vulnerabilidad “explotable”?

Es aquélla que representa un riesgo de seguridad para un sistema. En

caso de ser aprovechada o “explotada” podría violarse la seguridad

de la información que reside en el mismo.

¿Qué es un “exploit”?

Es el programa o técnica utilizado para aprovechar una

vulnerabilidad.

5

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Cantidad de vulnerabilidades de seguridad reportadas

© http://www.securityfocus.com/print/news/11436

0100020003000400050006000700080009000

2001 2002 2003 2004 2005 2006

Vulnerabilidades CERT

El mundo de las vulnerabilidades de seguridad

6

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Tendencias en el descubrimiento de vulnerabilidades

200719XX 2006200119951989

AplicacionesBases de

DatosAplicaciones

Clientes

Sistemas

Operativos

Networking Aplicaciones

Web

El mundo de las vulnerabilidades de seguridad

7

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Técnicamente hablando, un 0-day es un exploit que aprovecha una

nueva vulnerabilidad para la cual no existe un parche o solución.

Ejemplo: Microsoft Security Bulletin MS06-001 (WMF)

Zero-days (“0-day”s)

28-12-05

Aviso de MS

donde se informa

la vulnerabilidad.

6-1-06

MS lanza un Boletín

y los parches.

xx-xx-06

Usuarios finales aplican

los parches.

WildPúblico – Masiva

explotación Parches – Media

explotación

Baja

Explotación

El mundo de las vulnerabilidades de seguridad

8

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Las condiciones que determinar el “valor” son las siguientes:

Afectación (software de uso masivo)

Origen de la explotación (remota o local)

Posibilidad de ejecutar código

Conocimiento de la vulnerabilidad en el mercado

El valor de una vulnerabilidad de seguridad

El mundo de las vulnerabilidades de seguridad

9

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Verisign iDefense Vulnerability Contributor Program (VCP)

Desde 2002. Durante el 2006, compró 81 vulnerabilidades.

TippingPoint ZDI – Zero Day Initiative. Desde 2005.

En 2006, compró 54 vulnerabilidades.

NetRagard SNOSOFT Exploit Acquisition Program.

Desde 2007. Broker de vulnerabilidades.

Precio por vulnerabilidad de hasta U$S 75.000.

Compra de conocimiento

© http://www.securityfocus.com/print/news/11437

El mundo de las vulnerabilidades de seguridad

10

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Publicación responsable

Muchas “personas” buscando vulnerabilidades

Investigación básica (“grep” research)

Mayor disponibilidad de herramientas automatizadas

Google Code Search

Novatos centrados en búsqueda de vulnerabilidades en

aplicaciones web (45%)

Concursos “El mes de... Windows, Browsers, Databases, etc”

Descubrimiento de vulnerabilidades hoy

El mundo de las vulnerabilidades de seguridad

11

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

DescubriendoVulnerabilidades

12

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Descubriendo vulnerabilidades

Metodologías para el descubrimiento de vulnerabilidades

Básicamente existen dos formas de detectar vulnerabilidades:

White-Box (Auditoría del código fuente)

Black-Box (Inyección de fallas, Ingeniería reversa,

Function Hooking y Análisis de parches)

Para cada una de estas metodologías de detección de vulnerabilidades existen herramientas que realizan el trabajo de manera automatizada. Sin embargo, de nuestra experiencia se desprende que el mejor resultado se obtiene combinando herramientas automatizadas y análisis manual.

13

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Vulnerabilidades más comunes

Buffer Overflows

Format Strings

Off-by-one

Conversiones entre distintos tipos de datos (signed,

unsigned, long, short)

Double free

Errores lógicos

y muchas, muchas más…

Descubriendo vulnerabilidades

14

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

White-Box Auditoría de código fuente

Este método para encontrar vulnerabilidades en software posee la

siguiente ventaja:

- Alcance, ya que es posible encontrar vulnerabilidades que de

otra forma serían muy difíciles de encontrar.

Pero también presenta las siguientes desventajas:

- Se requieren conocimientos relativamente avanzados de

programación y del lenguaje que se desea auditar.

- Consume una gran cantidad de tiempo.

- No se evalúan los problemas de compilación ni escenarios

de implementación.

Descubriendo vulnerabilidades

15

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Auditoría de código fuente

Mencionaremos dos metodologías para el análisis de código de forma

manual:

•Bottom-up, en la cual se comienza leyendo el código de la

función principal del programa y luego se leen en orden de

llamada todas las funciones del programa.

• Top-down, se seleccionan funciones específicas que por la

experiencia del investigador podrían llegar a poseer

vulnerabilidades y se focaliza el análisis únicamente en ellas.

Descubriendo vulnerabilidades

16

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Auditoría de código fuente

Existen herramientas que realizan la tarea de auditoría de código en

forma automatizada, las mismas poseen las siguientes propiedades:

- Dependientes del lenguaje de programación.

- Fallan en descubrir errores en la lógica del programa.

- Barren con gran velocidad el código fuente generando una

auditoria del código en segundos.

- Generan falsos positivos los cuales deben ser verificados por el

investigador de forma manual.

Debemos encontrar un balance entre las herramientas automáticas y

el trabajo de los investigadores.

Descubriendo vulnerabilidades

17

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Black-Box

El análisis de vulnerabilidades Black-Box presenta un nivel de

dificultad mucho mayor: la ausencia del código fuente.

El investigador tiene acceso únicamente al conjunto de ejecutables y/o

librerías (y con suerte alguna información de debugging...).

Frente a este desafío se pueden utilizar diferentes enfoques:

- Inyección de fallas (Fuzzing).

- Ingeniería Reversa.

- Function Hooking.

- Análisis de parches.

Descubriendo vulnerabilidades

18

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Inyección de fallas - Fuzzing

Desde principios de 1990 esta metodología es utilizada para detectar

vulnerabilidades en software.

Básicamente la idea es ingresar fallas utilizando todos los métodos

de entrada que el software provea. Por ejemplo, si el software sobre

el cual deseamos encontrar vulnerabilidades es un servidor Web,

podremos ingresar fallas por medio del puerto 80 TCP.

GET / HTTP/1.1

GGGGGGGGGGGGGGGGGGGGGGGET / HTTP/1.1

GET /////////////////////// HTTP/1.1

GET / HHHHHHHHHHHHHHHHHHHHHHHTTP/1.1

GET / HTTP///////////////////////1.1

GET / HTTP/11111111111111111111111.1

GET / HTTP/1.......................1

GET / HTTP/1.11111111111111111111111

Request original

Requests modificados

Descubriendo vulnerabilidades

19

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Inyección de fallas - Fuzzing

Las herramientas automatizadas para inyección de fallas (fuzzers),

actualmente se encuentran en pleno desarrollo y aún son algo

primitivas, pero sin duda alguna, ahorran una gran cantidad de

tiempo. Algunas de las herramientas que utilizamos son:

SPIKE

Autodafe

Fuzzers desarrollados internamente.

Estas herramientas realizan un trabajo repetitivo y en general es

posible encontrar vulnerabilidades utilizándolas. De todas formas,

nada puede reemplazar a una persona debidamente capacitada y

experimentada para detectar vulnerabilidades en software.

Descubriendo vulnerabilidades

20

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Ingeniería Reversa

La Ingeniería Reversa es el proceso que intenta reproducir el diseño

de un sistema a partir del producto terminado.

Se originó para brindar compatibilidad con diversos sistemas de

código cerrado y carentes de documentación.

El objetivo es realizar la siguiente transformación:

…mov [ebx+7], almov [ebx+8], ebxmov [ebx+12], eaxmov al, 11lea ecx, [ebx+8] lea edx, [ebx+12] int 0x80…

void funcion1(char *str) {int i;…if (i == 20) {

*str = ‘a’;}…funcion2(str);

}

Descubriendo vulnerabilidades

21

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Ingeniería Reversa

Una vez que se obtiene una aproximación del código original, se

analiza si el mismo posee vulnerabilidades.

Ventajas:

- Conocimiento “exacto” del funcionamiento de la Aplicación.

- Identificación de vulnerabilidades lógicas o extremadamente

complejas de detectar por fuzzing.

Desventajas:

- Profundo conocimiento de Assembler, compiladores y

programación.

- Proceso arduo y tedioso.

- Complejidad para identificar código “alcanzable”.

Descubriendo vulnerabilidades

22

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Function Hooking

Esta técnica se basa en reemplazar funciones en librerías por

nuestras propias funciones. El objetivo es interceptar las llamadas,

analizar los parámetros recibidos y derivar la ejecución a la

verdadera función.

Microsoft Research ha desarrollado una herramienta que permite

realizar este tipo de análisis: Detours.

Con esta herramienta, nuestra librería (dll) se inyecta en el espacio de

direcciones del proceso objetivo.

Descubriendo vulnerabilidades

23

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Ejemplo de Function Hooking

Aplicacióna auditar

(buggy.exe)LibBuggy.dll

call convertirString(...)

retorna

Descubriendo vulnerabilidades

24

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Ejemplo de Function Hooking

Aplicacióna auditar

(buggy.exe)LibBuggy.dll

MiAudit.dll

Función:ConvertString

call convertirString(...)

retorna

call convertirString(...)

retorna

Descubriendo vulnerabilidades

25

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Análisis de Parches

Cuando una nueva vulnerabilidad es reportada, el fabricante desarrolla

el parche y lo libera para que los usuarios puedan actualizarse y

protegerse.

Estructura e implementación de un parche, según el tipo de Aplicación

Aplicaciones de Código Abierto:

- Archivos .diff. Implementación y recompilación.

- Binarios. Reemplazo completo del binario vulnerable.

Aplicaciones de Código Cerrado:

- Binarios. Reemplazo completo del binario vulnerable.

Descubriendo vulnerabilidades

26

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Si el parche soluciona la vulnerabilidad...agrega o elimina código. La

técnica consiste en analizar la “diferencia” entre el parche y el

componente vulnerable.

Diferentes procedimientos y herramientas:

Archivos .diff- Análisis directo del código fuente agregado o eliminado.

Binarios:

- Comparar versiones. Herramientas automáticas (BinDiff,

EBDS).

- Analizar el código modificado (si, a leer assembler otra vez).

Análisis de Parches

Descubriendo vulnerabilidades

27

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Experiencias en la investigación de vulnerabilidades

28

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Experiencias en la investigación de vulnerabilidades

CYBSEC-LABS

CYBSEC-LABS es un área de CYBSEC, cuyo objetivo es investigar y

desarrollar nuevas técnicas y herramientas de Seguridad Informática

para suplir al área de Consultoría.

Paralelamente se realizan investigaciones sobre productos o

sistemas utilizados masivamente, analizando la seguridad de los

mismos en busca de nuevas vulnerabilidades.

Durante el año 2006 hemos descubierto 16 vulnerabilidades, las

cuales afectan a sistemas críticos.

29

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Vulnerabilidad en Microsoft Windows - Servicio DHCP Cliente

• Severidad: Alta

• Tipo de Vulnerabilidad: Buffer Overflow.

• Afecta: Todas las versiones de Microsoft Windows (2000, XP,

2003).

• Posibilita la ejecución de código en forma remota.

Experiencias en la investigación de vulnerabilidades

30

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Vulnerabilidad en SAP – Internet Graphics Service (IGS)

• Severidad: Alta

• Tipo de Vulnerabilidad: Buffer Overflow.

• Afecta: Todas las plataformas de SAP IGS (AIX, HP-UX, Linux,

Windows, etc).

• Posibilita la ejecución de código en forma remota.

INTERNET O LAN

Experiencias en la investigación de vulnerabilidades

31

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Vulnerabilidad en IPS TippingPoint

• Severidad: Alta

• Tipo de Vulnerabilidad: Falla de diseño• Afecta todas las versiones del hardware previo al reporte de la

vulnerabilidad al vendor

• Posibilita el bypass de las funcionalidades de bloqueo y detección

del IPS

Experiencias en la investigación de vulnerabilidades

32

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

RFC es el protocolo de comunicación utilizado por SAP para la

interconexión interna de SAP y también entre SAP y sistemas externos.

Investigación de vulnerabilidades en la interfaz y en la librería de RFC.

Duración del proyecto: 3 meses.

Resultado: 7 vulnerabilidades descubiertas y reportadas. 6 con parche

disponible a la fecha.

Release coordinado con SAP para Abril de 2007.

Desarrollo y lanzamiento de una herramienta para realizar PenTest

a sistemas SAP.

Investigación sobre RFC de SAP

Experiencias en la investigación de vulnerabilidades

33

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Nuevas vulnerabilidades. Durante 2007, en CYBSEC descubrimos:

- 2 vulnerabilidades que afectan a MS Windows.

- 1 vulnerabilidad al cliente de SAP (SAPGui).

- 1 vulnerabilidad nueva en SAP.

Las mismas están siendo solucionadas por los Vendors y

próximamente saldrán los avisos correspondientes.

Desarrollo de herramientas para el descubrimiento de nuevas

vulnerabilidades.

Lo que viene...

Experiencias en la investigación de vulnerabilidades

34

Investigación y Descubrimiento de Vulnerabilidades

Segurinfo 2007 – Tercer Congreso Argentino de Seguridad de la Información – www.segurinfo.org.ar

Conclusiones

- La cantidad de vulnerabilidades va a seguir en aumento. Es necesario definir e implementar un política efectiva de Patch Management.

- Las empresas desarrolladoras deben capacitarse más y actualizarse sobre las nuevas vulnerabilidades existentes.

- Se deben aplicar metodologías y herramientas de testing para realizar evaluaciones de seguridad a los productos antes de lanzarlos al mercado.

¿¿Preguntas?Preguntas?

www.cybsec.com

Lic. Julio C. ArditaLic. Julio C. [email protected]@cybsec.com

CYBSEC S.A. Security SystemsCYBSEC S.A. Security Systems