En cualquier revisión de seguridad ya sea un test de intrusión, revisión de una aplicación web o de código fuente el Attack Surface Analysis (ASA) es una poderosa metodología que podemos utilizar para identificar los vectores de ataque del sistema. Personalmente siempre realizo este ejercicio en cualquier proyecto para determinar los puntos vulnerables y luego otro ejercicio llamado Attack Surface Reduction (ASR) para evaluar y mitigar los vectores de ataque.
In any security review whether is a pentesting, a web application or source code review Attack Surface Analysis (ASA) is a powerful methodology that we can use to identify the system attack vectors. Personally I always do this exercise in any project to determine the vulnerabilities and then another exercise called Attack Surface Reduction (ASR) to assess and mitigate attack vectors.
Por lo que podemos definir ASA como un análisis sistemático del sistema para identificar los vectores de ataque y ASR como el proceso de validación y mitigación de los vectores de ataque.
We can define ASA as a systematic analysis of the system to identify attack vectors and ASR as the process of validation and mitigation of attack vectors.
Las organizaciones tienen multitud de vectores de ataques desde sus redes corporativas, aplicaciones, personas, etc. que pueden ser explotados. Los atacantes solo necesitan encontrar un vector de ataque que les permita conseguir su objetivo mientras que los defensores deben identificar todos los vectores de ataques y realizar un ASR.
Organizations have many attack vectors from their corporate networks, applications, people, etc. that can be exploited. Attackers just need to find a single attack vector that enables them to achieve their goal while defenders must identify all attack vectors and perform an ASR.
Como dice un proverbio chino “Si das pescado a un hombre hambriento, le nutres una jornada. Si le enseñas a pescar, le nutrirás toda la vida”, veamos algunos ejemplos prácticos de ASA.
As said by a Chinese quote “Give a man a fish and you feed him for a day. Teach him how to fish and you feed him for a lifetime”, let’s look at some practical examples of ASA.
ASA Corp. Network
El siguiente grafico es un diagrama de una red corporativo típico que podemos encontrar en muchas organizaciones.
The following graphic is a diagram of a typical corporate network found in many organizations.
http://oahucomputers.com/_library/images/visio%20diagram.jpg
Realizando un ASA superficial algunos vectores de ataque podrían ser:
- ¿Está el Firewall y/o routers correctamente configurados? ¿Tienen vulnerabilidades?
- ¿Cuál es la relación de confianza de las oficinas remotas?
- ¿Atacar el Access Point (AP) y/o a los clientes?
- ¿Acceder a un ordenador portátil, PDA y/o Smartphone?
- ¿Atacar a los clientes (navegador, ficheros malicioso, email, etc.)?
- ¿La postura de seguridad de los servidores (parches, configuraciones, etc.)?
- ¿Atacar la red?
Performing a superficial ASA some attacks vectors could be:
- ¿Is the Firewall and/or routers properly configured? ¿Have vulnerabilities?
- ¿What is the trusted relationship of remote offices?
- ¿Can you attack the access Point (AP) and/or clients?
- ¿Having access to a laptop, PDA or Smartphone?
- ¿Can you attack clients systems (browser, malicious files, email, etc.)?
- ¿What is the security posture of servers (patches, configurations, etc.)?
- ¿Can you attack the network?
Herramientas / Tools
- Bing & Google queries
- Nmap
- Maltego
- Nessus / Openvas
- Metasploit / CANVAS / Core Impact / Inguna / Ronin
ASA Web App
En este ejemplo realizaremos un ASA de una aplicación web.
In this example we will make an ASA of a web application.
Realizando un ASA superficial algunos vectores de ataque podrían ser:
- ¿Es el usuario el usuario? ¿Puede el usuario realizar mas acciones de las necesarias?
- ¿Hasta dónde llega el admin?
- ¿Servidor web inseguro?
- ¿Aplicación web desarrollado sin SDL-LOB?
- ¿Comprometer la información en tránsito (MITM) y/o en reposo?
- ¿Atacar la base de datos?
- ¿Cómo gestiona la aplicación la información?
Performing a superficial ASA some attacks vectors could be:
- ¿Is the user the user? ¿Can the user perform more actions than necessary?
- ¿How far can the admin go?
- ¿Insecure web server?
- ¿Was the web application developed without SDL-LOB?
- ¿Can you compromise information in transit (MITM) and/or rest?
- ¿Can you attack the database?
- ¿How the app manages information?
Herramientas / Tools
ASA Code Review
En una revisión de código fuente el ASA podría ser:
- ¿Lee la aplicación de ficheros, sockets, registro, memoria compartida, etc.?
- ¿Realiza algún tipo de autenticación y autorización?
- ¿Encripta información? ¿Algoritmo de cifrado?
- ¿Tiene código antiguo?
- ¿Interactúa con otras aplicaciones?
- ¿Qué permisos necesita para ejecutarse?
- ¿Tecnologías que utiliza la aplicación?
For a code review source ASA could be:
- ¿Reads the application from files, sockets, registry, shared memory, etc.?
- ¿Does some kind of authentication and authorization?
- ¿is information encrypted? ¿What encryption algorithm?
- ¿Have the app old code?
- ¿Does the app interact with other applications?
- ¿What permissions it needs to run?
- ¿What technologies is the app using?
Herramientas / Tools
Lo cierto es que me he quedado muy lejos de realizar un ASA completo pero como bien refleja el título de este post existen multitud de vectores de ataque en las organizaciones pero es un ejercicio que debemos realizar a consciencia y constantemente.
Para ello tenemos mucha documentación, metodologías (Attack Trees, Threat Models, etc.) y herramientas a nuestra disposición.
¿Y vosotros como realizáis un ASA en vuestras revisiones de seguridad?
The truth is that I’m far away for a full ASA but as reflected in the post title there are many different attack vectors in organizations but is an exercise we must perform consciousness and constantly.
We have lots of documentation, methodologies (Attack Trees, Threat Models, etc.) and tools at our disposal.
¿How do you do your ASA in your security reviews?
Links:
- Mitigate Security Risks by Minimizing the Code You Expose to Untrusted Users
http://msdn.microsoft.com/en-us/magazine/cc163882.aspx - Attack Surface Measurement
http://www.cs.cmu.edu/~pratyus/as.html#introduction - Minimize attack surface area
http://www.owasp.org/index.php/Minimize_attack_surface_area - Windows Vista: Network Attack Surface Analysis
http://www.symantec.com/connect/blogs/windows-vista-network-attack-surface-analysis - Using Attack Surface in Threat Models
http://1raindrop.typepad.com/1_raindrop/2009/06/using-attack-surface-in-threat-models.html
— SRF