Introducción al Pentesting y Kali Linux
¿Qué es un test de penetración?
Podemos definir un Test de Penetración como el conjunto de técnicas utilizadas para evaluar la seguridad en redes, sistemas de computación y aplicaciones involucradas en los mismos. Puede formar parte de una auditoría de seguridad a los sistemas de una empresa o corporación. Se usan diferentes mecanismos de evaluación de las medidas de protección de una organización y de sus servicios expuestos a internet. Con el test de intrusión se analiza la efectividad de los controles
de
seguridad
implantados
realizándose
una
batería
de
acciones
planificadas que simulan el comportamiento de un atacante. El objetivo del test de penetración es vulnerar la seguridad del sistema de información de la organización para conseguir accesos no autorizados, interrumpir un servicio u obtener información sensible entre otros. El test de penetración tiene el propósito de generar un informe técnico en el que se ponga de manifiesto la identificación del riesgo, la probabilidad de su ocurrencia, el impacto en la organización y la estimación de su gravedad así como las correspondientes recomendaciones. Es importante saber que existen metodologías formales para la realización de los test de penetración. La realización de un test de intrusión y las técnicas que conlleva pueden poner en peligro los sistemas de información de la organización en la que se ejecute, por esto motivo se han de establecer términos claros sobre su alcance. Una de las metodologías, Open Source además, para la realización de la evaluaciones de seguridad incluidos los test de p enetración es:
OSSTMM (Open Source Security Testing Methodology Manual)
Otras metodologías a destacar son:
ISSAF (Information Systems Security Assessment Framework)
OWASP Testing Guide de OWASP (exclusiva para seguridad web)
Podemos diferenciar tres tipos de test de penetración: Black box pentest.
En este tipo de test de intrusión, el atacante no posee ninguna información previa sobre el cliente, excepto lo que este publica voluntariamente en sus sistemas de información. El atacante deberá actuar de la misma forma que lo haría un atacante externo que intenta explotar vulnerabilidades del sistema o extraer información privada contenida en este. Pocas personas de la organización saben que esta será
atacada. Este tipo de test puede llegar a ser muy costoso tanto en tiempo como en términos económicos. White box pentest.
Se posee un amplio conocimiento de la organización, principalmente su estructura, y de la red (topología, dispositivos, SS.OO. Bases de datos, etc.). Se realiza con toda la colaboración posible por parte de la organización. Simula un atacante con un conocimiento exhaustivo del sistema tomando de este modo el punto de vista, por ejemplo, de un administrador o usuario que cuentan con acceso al sistema de información de la organización. El inconveniente de este test es que su alcance es muy amplio. Grey box pentest.
Es una combinación de los dos métodos anteriores, usando técnicas de un atacante real con conocimiento del sistema analizado.
Fases de un test de penetración.
Genéricamente las etapas para realizar un test de pen etración son: 1.
Recopilación de información (Rastreo y exploración)
2. Análisis de vulnerabilidades (Enumeración) 3. Explotación (Acceso, escalada de privilegios, daño, borrado de huellas) 4. Generación de informes. Fase 1. Recopilación de información.
Consiste en obtener información del sistema/organización/red/máquina bajo un análisis y con el uso de diferentes herramientas que cumplen este propósito. Así se buscarán nombres de dominio, direcciones IP, posibles nombres de usuario, bases de datos públicas, etc. (ejemplo de herramientas implicadas: maltego). Tienen en esta fase especial interés las técnicas y ataques de ingeniería social. Se analizará el sistema objetivo para identificar servicios activos, máquinas disponibles, mapeo de red, sistemas operativos, … (ejemplo de herramientas
implicadas: nmap).
Fase 2. Análisis de vulnerabilidades.
Se realizan pruebas y test para identificar recursos específicos y características concretas. Se buscan las versiones de los sistemas operativos y los servicios, los parches de seguridad, cuentas de usuario válidas. Se intenta localizar las posibles y potenciales vulnerabilidades (ejemplo de herramientas implicadas: openvas/nmap).
Fase 3. Explotación.
Se obtiene el acceso no autorizado a los recursos o servicios identificados en el sistema objetivo. Se rompen contraseñas, se escucha el tráfico de red, se procede
al
uso
de
exploits,
etc.
(ejemplo
de
herramientas
implicadas:
hydra/wireshark/metasploit). Una vez se tiene acceso al sistema se persigue el control completo del mismo adquiriendo permisos, credenciales y privilegios de los administradores, esta técnica se conoce como pivotar, es decir, saltar de un equipo a otro con la intención de controlar todos los equipos de la organización. (ejemplo de herramientas implicadas: metasploit). En esta etapa se valora y evalúa la capacidad del atacante que ha escalado privilegios para realizar acciones maliciosas. También se verifica hasta que punto el potencial atacante tendría capacidad de eliminar el rastro de sus acciones y mantener el control del sistema de forma permanente.
Fase 4. Generación de informes.
Esta parte es considerada la más importante del test y es en la que se informa al cliente sobre cada una de las acciones y pruebas que se han realizado. Deben incluirse las técnicas y herramientas utilizadas en la realización del test así como las vulnerabilidades descubiertas y el nivel de gravedad que supone para la organización. Es conveniente la realización de un doble informe: un informe técnico y un informe ejecutivo.
Kali Linux, distribución linux orientada a la seguridad de la información
¿Qué es Kali Linux?
Kali Linux es una distribución linux deriva de Debian GNU/Linux 7.0, la última versión estable de Debian. Su propósito es la auditoría y seguridad informática. Está disponible para arquitecturas tradicionales así como para arquitectura ARM.
Kali Linux y el pentester.
Kali Linux persigue tener la mejor colección de herramientas de código abierto destinadas a pruebas de penetración, aunque lógicamente no es la única opción, permite tener en un mismo sistema, sin la necesidad de tediosas instalaciones que muchas de estas herramientas requieren, todo lo que el pentester pueda necesitar para realizar su trabajo. Kali Linux – Boot menu.
1. Ejecución en vivo (sobre arquitectura i686/i686-Physical Addres Extension-/x86_64 / ARM [1]). 2. Ejecución en vivo con modo a prueba de fallos. 3. Ejecución en vivo en modo forense. 4. Instalación (modo texto). 5. Instalación (modo gráfico). 6. Instalación guiada por voz. 7. Opciones avanzadas (Herramienta de detección de hardware).
[1] Arquitectura ARM: arquitectura desarrollada por ARM Holdings, de 32 bits y conjunto reducido de instrucciones. Consideraciones:
El arranque de Kali Linux en modo forense ha sido heredado de su distribución predecesora BackTrack Linux y es muy útil cuando surge una necesidad forense dado que permite el uso rápido de la distribución que contiene preinstalado el software de código abierto de propósito forense más popular. Cambios importantes en el arranque forense: 1. El disco duro del equipo en el que se ejecuta Kali Linux en modo forense no se modifica, es decir, ni serán montados los discos internos ni se hará uso de la partición swap si la hubiera. 2. No existe soporte automático para los medios externos, es decir, memorias USB, por ejemplo, no serán montadas cuando sean insertadas.
El modo forense de Kali Linux tiene como objeto que nada debe suceder en los medios de almacenamiento sin la acción del usuario.
Inicio de Kali Linux.
El usuario por defecto en Kali Linux (modo Live) es el superusuarioroot. Su contraseña de acceso es toor. Gran parte de las aplicaciones que incorpora Kali Linux precisan de permisos de superusuario para poder ser correctamente ejecutadas y debidamente aprovechadas. Evidentemente durante la instalación podremos definir usuarios con privilegios restringidos, no obstante, dado el propósito de la distribución y dependiendo del uso que se le de elegiremos uno u otro modo de operación. En cualquier caso cabe señalar que es una distribución orienta a pruebas de intrusión y auditorías informáticas en el campo de la seguridad, Kali no es una distribución linux apropiada para un usuario de escritorio.
Al ser una distribución derivada de Debian, incorpora su escritorio por defecto, Gnome. No todos los paquetes que incorpora Debian + Gnome han sido incorporados a Kali Linux y además este incorpora diferentes herramientas que no incorpora aquel. Centraremos nuestra atención en el conjunto de herramientas Kali Linux.
Como podemos observar las aplicaciones están bien agrupadas en categorías. Disponemos de aplicaciones para diferentes propósitos como son: Recopilación de información: gran cantidad de herramientas para realizar análisis de
tráfico, análisis de diferentes protocolos, identificación de sistemas operativos, escáner de redes y un largo etcétera. Análisis de vulnerabilidades : entre otras, herramientas para la auditoría de dispositivos
cisco. Destaca en esta sección el escáner de vulnerabilidades OpanVAS del que hablaremos con posterioridad. Aplicaciones
Web:
herramientas para la explotación de bases de datos, la
identificación de CMS, escáneres de vulnerabilidades web y otros. Ataques de contraseña: diferentes herramientas para la obtención de credenciales
válidas. Cabría destacar en este sentido a hydra. Hydra usa una técnica denominada “fuerza bruta” que consiste en probar palabras, hasta encontrar la
válida cuando se desconoce uno de los datos necesarios para autenticarnos. Loas ataques por fuerza bruta pueden estar basados en diccionario (caso de hydra) y en rango. En el primer caso, se trata del uso de un archivo con una lista de contraseñas/usuarios comunes o términos relacionados con lo auditado, por ejemplo palabras encontradas en páginas web que guarden relación con el objetivo. En los ataques basados en rango son más lentos y tienen el propósito de encontrar la contraseña de un usuario determinado con el uso de todas las combinaciones dentro de un patrón dado. Es bueno señalar que los estudios sobre contraseñas arrojan que con las 500 palabras de uso más común se obtiene casi el 20% de acierto cuando se busca una contraseña y el 10% si se trata de las 100 palabras más comunes.
Otros conjuntos de herramientas son: ataques wireless, donde destaca aircrackng, herramientas de sniffing, muy especialmente wireshark, y envenenamiento de red donde se persigue suplantar la identidad de un dispositivo de la red. Herramientas de acceso para la consecución de puertas traseras en sistemas operativos y web con las
que podemos inyectar shellcode en un proceso existente en el objetivo. Una shellcode es un conjunto de órdenes que normalmente forman parte de un exploit y es utilizada para obtener una shell del objetivo sobre el que se inyecta. Herramientas de ingeniería inversa, herramientas para la realización de diferentes pruebas de stress.
Herramientas de diferente propósito para android y arduino. Herramientas de análisis forense, una completa lista de propósitos diferentes. Herramientas de reporte que
ayudan a la generación de informes y documentación de los test realizados, la grabación de escritorio, etc. Finalmente las herramientas de explotación permiten la realización de ataques a dispositivos Cisco, la consulta de bases de datos de exploits, el desarrollo de exploits, la realización de ataques de ingeniería social y muyespecialmente metasploit del que hablaremos en profundidad. Son de especial interés los ataques de ingeniería social dada su proliferación y alto impacto. Se basan en diferentes técnicas como la creación de sitios web falsos (esto es ahora mucho más efectivo gracias a la tendencia de acortar las url) o el envío masivo de correos con adjuntos maliciosos con el ánimo de obtener acceso a la máquina de la víctima. También destacan en estos ataques la ejecución automática de exploits contenidos en dispositivos extraíbles que al ser introducidos en el equipo de la víctima realizarán una conexión remota a la máquina del auditor. Otras muchas técnicas son usadas en los ataques de ingeniería social que aprovechan la confianza conseguida de los usuarios (víctimas) mediante su manipulación. En la seguridad de un sistema informático los usuarios son el eslabón más débil y este es el
principio en el que se sustenta la ingeniería social. Detalle de setoolkit Social-Engineer Toolkit
Diez aplicaciones destacadas en Kali Linux. aircrack-ng: software de seguridad y auditoría inalámbrica que entre otros permite
crakear redes con seguridad WEP y WPA.
brupsuite: herramienta para la realización de test de intrusión en aplicaciones web
permitiendo una completa metodología hasta la explotación de la aplicación. hydra: crackeador de contraseñas al que ya hemos hecho referencia, con él es
posible crackear servicios como POP3,IMAP,SMB,SSH etc. john: permite, fundamentalmente a los administradores de sistemas, comprobar la
seguridad de las contraseñas. maltego: aplicación para la recolección de información. Obtiene la información de
diferentes fuentes en internet y la presenta de diferentes modos gráficos, con ella podemos investigar empresas, personas, sitios, etc. Así mismo permite una búsqueda con múltiples criterios (IP, zona o zonas geografías del objetivo, alias de redes sociales, etc). nmap: de nmap hablaremos posteriormente, es un escáner de redes que permite
descubrir objetivos ofreciendo información sobre puertos y servicios. owasp-zap / zapproxy: herramienta para encontrar vulnerabilidades en aplicaciones
web. sqlmap: automatiza el proceso de detección y explotación de fallos del tipo SQL
Injection. Podemos con ella obtener información del servidores de bases de datos. wireshark : analizador de paquetes de red con el que podemos analizar tanto el
tráfico de una red viva como archivos salvados de captura de tráfico capturado con anterioridad. metasploit framework : con metasploit podríamos cubrir la totalidad de la metodología
seguida en la realización de un test de penetración. Contiene gran cantidad de funcionalidades entre las que destacan su ayuda en la creación y ejecución de exploits contra equipos remotos.