Thursday, November 20, 2008

Pentest, una breve guia


Un Pentest es el método utilizado para verificar la seguridad de los sistemas de una empresa.

Tenemos tres tipos de Pentests :

Black-box : El pentester no tiene conocimiento del sistema. En gral se utiliza cuando se contrata una empresa para que realice el trabajo desde el punto de vista de un posible atacante externo.

White-box: El pentester tiene conocimiento del funcionamiento del sistema, arquitectura de la red, sistemas operativos utilizados..etc. Si bien no representa la vision de un atacante externo, si representa el peor escenario ya que es el caso en el que un atacante ya cuenta con información ante de accesar al sistema.

Gray-box : Este es el caso en el cual el pentester simula un empleado interno, para esto se le da un usuario y clave de los sistemas. La idea es encontrar posibles problemas que puedan ser aprovechados por usuarios internos ( ej : aumentos de privilegios )

Consideraciones Legales

Ante la realización de un pentest se deben considerar las implicaciones legales que esto puede acarrear. Dependiendo la localización de los servidores se estara expuesto a diferentes leyes.
Es importante dejar documentado por medio de un contrato si es para un tercero o mediante un documento interno con las aprobaciones de las jerarquías superiores si el pentest es realizado internamente.

Ejemplos de leyes que pueden ser infringidas en caso de no contar con la autorización previa :

EEUU :

1973 U.S Code of Fair Information Practices

1986 Computer Fraud and Abuse Act ( CFAA )

ARGENTINA :

2008 Ley 26388 Delitos Informaticos

ALEMANIA

2007 Seccion "202c" codigo Legal


Por otra parte tenemos normas que promueven este tipo de trabajos, por ejemplo PCI-DSS , SOX.


Planeamiento

La realización de un pentest requiere una planificación previa que tiene mínimamente los siguientes pasos :

- Reunión de alineamiento.

- Realización del Pentest

- Reporte

- Presentación de resultados


Veamos cada uno de los pasos :

- Reunión de alineamiento.

En esta reunión a realizarse previa al pentest debe definirse el alcance del trabajo. Dentro de esto tenemos :

- Que tipo de Pentest ( Black-box, White-box o Grey-box )

- Horario de realización del pentest ( durante las horas laborales o fuera del horario laboral )

- Se permitira DOS ?

- Se pueden instalar Backdoors ?

- Se pueden realizar Defacement de los sitios ?

- Se pueden borrar logs ?

- Conocera el personal la realizacion del pentest ?

- Se puede utilizar Ingenieria Social ?

Luego de esta reunión se realizara un documento en forma de contrato o de memo interno indicando el alcance del pentest y otorgando el permiso necesario para la realización.

Es interesante aclarar que en algunos casos, durante la el trabajo pueden darse condiciones en las cuales durante la ejecución de una aplicación se produzca un DOS. El documento debe aclarar que no se puede garantizar que este tipo de situaciones no se produzcan.

- Realizacion del Pentest




La realización del pentest básicamente esta dividida en los siguientes pasos :

Reconocimiento : Que a su vez esta divido en Footprint y Scanning

Adquisición de Objetivo : Comprende Enumeración de vulnerabilidades, Acceso, Escalacion de Privilegios y Búsqueda de nuevos objetivos.

Eliminación de Huellas : Eliminación de rastros en logs.


Luego dependiendo de los acordado, se pueden realizar pruebas de Denegación de Servicios o dejar instalados Backdoors.



Adquisicion de Objetivo

La adquisición de objetivos se divide en Reconocimiento Pasivo y Reconocimiento Activo :

Reconocimiento Pasivo :




Para esta fase del trabajo podemos utilizar varias herramientas.

Herramientas como Maltego cubren en verdad varias fuentes:

Maltego es una aplicación de recolección de datos que permite ver en forma visual las relaciones entre los datos y además permite hacer una enumeración de diferentes tipos de información de red y dominio como :

  • Domain Names
  • Whois Information
  • DNS Names
  • Netblocks
  • IP Addresses

Maltego permite enumerar información de personas como :

  • Direcciones de email asociados al nombre de una persona.
  • Web sites asociados al nombre de una persona.
  • Numeros de telefono asociados al nombre de una persona.
  • Grupos Sociales asociados al nombre de una persona.
  • Compañias y organizaciones asociados al nombre de una persona.

Tambiénpermite :

  • Verificar direcciones de email
  • Buscar en Blogs por tags y palabras.
  • Identificar links de websites
  • Extraer metadata de archivos obtenidos de dominios que estamos investigando.

Las herramientas que se encuentran en el sitio nettools , permiten recolectar información del dominio, teléfonos, emails.

Netcraft por otra parte nos da información sobre SO y versión de Webserver.

Veamos como se comporta Netcraft con un sitio como Clarin.

Vamos a ver el dominio www.servicios.clarin.com

Netcraft nos indica que tiene un Sistema Operativo Linux y una versión de Webserver
Sun-ONE-Application-Server/7.0.0_05 instalada en enero del 2006.

Podemos verificar esto directamente de Clarin, veamos el webserver que esta ejecutando.
Para esto no es necesario ejecutar ninguna herramienta de footprinting, Clarin nos muestra en la root page el webserver que esta ejecutando.

Y el sistema operativo sera Linux ? Veamos.


Si, evidentemente la gente de Netcraft esta haciendo la cosas bien.


Traceroute y Hping nos permiten obtener informacion de las reglas del Firewall.


Google puede utilizarse para buscar informacion actual e historica del dominio o los dominios que estamos investigando.

El sitio de johnny Long tiene innumerables ejemplos


Por ultimo para la adquisición pasiva podemos utilizar la ingeniería social, en posts anteriores se hablo de los diferentes métodos a utilizar, desde Dumpster Diving hasta Shoulder Surfing


Reconocimiento Activo



Para verificar ports abiertos tenemos las siguientes herramientas :


Superscan v4
es una buena herramienta para verificar los puertos abiertos y para grabar los banners.

Nmap es una herramienta que nos puede ayudar a detectar las versiones de los Sistemas Operativos.

Httprint se utiliza para conocer la versión del Webserver, es importante conocer que tipo de extensiones maneja el sitio ( asp, html, ajax )

Winhttrack Nos permite copiar el sitio a nuestro disco en forma recursiva, para luego poder trabajar offline.


Resultado : Después de la etapa de recolección de datos , estamos listos para armar un mapa de la red conteniendo información como.

  • Hostnames
  • Direcciones IP´s
  • Puertos abiertos
  • Sistemas operativos
  • Aplicaciones Directorios


Enumeracion de vulnerabilidades



Basado en los resultados previos, pasaremos a identificar las vulnerabilidades existentes en los objetivos identificados en la fase anterior.
La idea es realizar un test quirurgico y no malgastar energia probando al azar.

Estas vulnerabilidades pueden ser el resultado de una mala implementación, errores específicos de los sistemas, patchs no aplicados.

Aqui se utilizaran herramientas especificas para cada tipo de vulnerabilidad, nessus, openvas,metaexploit , proxy de aplicaciones...


OpenVAS significa Open Vulnerability Assessment System y es un scanner de seguridad de red que tiene una interfaz grafica. Esta dividido en dos aplicaciones, el server el cual tiene las aplicaciones y plugins con diferentes vectores de ataque y el cliente el cual puede ejecutarse en una máquina separada.

Dado que es un rama Open Source de Nessus los módulos son bastante similares, hay que tener cuidado de no producir un DOS con este tipo de herramientas.



Paros Proxy es una aplicación que nos permite poner entre el server y la aplicación cliente.
De esta manera poder interceptar toda la comunicación y modificarla a voluntad.
Las posibilidades con la que cuenta es la de realizar un spider del webserver, test de sqlinjection, verificación de Cross site scripting.


Wikto nos permite encontrar directorio y archivos no publicados que pueden estar alojados en el server. Es una herramienta poderosa ya que esta integrada a google y permite realizar busquedas de información no solo en el server, también el google. Es bastante ruidosa ya que al hacer pruebas de cada una de las variables que tiene en su base, deja mucha informacion en los logs. De todas maneras es muy util para ver aun lo que no se publico.


Sqlpowerinjector
es una aplicacion que ayuda a encontrar exploits de SQL injection en paginas web. Es compliant con SQLServer, Oracle,MySQL, Sybase y DB2. Trabajo en modo normal y en modo blind.


Spike Proxy es un proxy que nos permite realizar ingreso de parametros en forma aleatoria, y de esta manera verificar como se comporta la aplicacion. Los resultados pueden ser problemas de SQL injection, bufferoverflow o Cross Site scripting.


Ok en este momento estamos en la mitad del trabajo, en los proximos posts completo la serie de Pentests.

Un Mind Map





Esta seria un CheatSheet de lo visto.

No comments: