Prácticas 3, 4, 5 PDF
Document Details
Uploaded by DelightfulPink2629
UCA Universidad de Cádiz
Tags
Summary
This document provides information on gathering information through different sources, including Google Dorks, Shodan, and Wayback Machine. It includes details on techniques for recognizing and exploiting vulnerabilities in different systems and networks, including DNS analysis, web technologies, and server scanning.
Full Transcript
3. RECOLECCIÓN DE INFORMACIÓN EN FUENTES ABIERTAS: I 1. GOOGLE DORKS Google nos provee de la opción de búsqueda avanzada para filtrar información a través de diferentes filtros conocidos como dorks Operadores que se pueden usar con otros: - : se suprime el argumento que sigue en la búsqueda | : equi...
3. RECOLECCIÓN DE INFORMACIÓN EN FUENTES ABIERTAS: I 1. GOOGLE DORKS Google nos provee de la opción de búsqueda avanzada para filtrar información a través de diferentes filtros conocidos como dorks Operadores que se pueden usar con otros: - : se suprime el argumento que sigue en la búsqueda | : equivale al OR lógico, nos permite hacer una búsqueda de más de un término site:dominio.com : filtra la búsqueda para que solo busque en esa web Intitle:texto : filtra para buscar solo archivos de esa extensión Inurl:texto : busca texto en la URL, igual que el anterior pero relacionando lo indicado con el contenido en sí de la web Author:texto : busca artículos o noticias escritos por dicho autor Operadores que no se usan con otros: Allintext:texto : busca únicamente el texto especificado en el contenido de la web Allintitle:texto : devuelve las páginas web que tienen el texto indicado en el título Allinurl:texto : busca el texto solo en la URL Cache:dominio.com : accedemos a la versión de la página web que Google tiene guardada en la caché Link:dominio.com : buscamos páginas web con enlaces a la página especificada Related:dominio.com : busca páginas web que son similares a la proporcionada 1.1. USUARIOS Podemos encontrar desde una lista de usuarios y contraseñas, hasta una página web en la que podamos acceder como administradores. Ejemplo, filetype:xls ‘’username | password’’ 1.2. CONTRASEÑAS Buscaremos ficheros con contraseñas realizando búsquedas más complejas mediante: inurl: ‘’passes’’ OR inurl:’’password’’ OR inurl:’’credentials’’ -serach -download -techsupt -git -games -gz -bypass -exe filetype:txt En esta búsqueda, con inurl buscamos archivos que contengan esos términos, con OR establecemos OR lógico entre los términos y con - eliminamos los elementos que no nos interesan. Por último especificamos que sean archivos de tipo.txt 1.3. DETECCIÓN DE SERVIDORES Ejemplo: intitle:’’Apache Status’’ ‘’Apache Server Status for’’ 1.4. MENSAJE DE ERROR Si logramos encontrar este tipo de información sobre una web, seguramente estos mensajes de error apunten a brechas de seguridad que podamos aprovechar. Ejemplo, ‘’Warning: mysql.query()’’ ‘’invalid query’’ -foro -help -ayuda -como 1.5. ESCANEO DE SERVIDORES VULNERABLES Podemos encontrar todos los servidores que presenten puertas traseras y otras vulnerabilidades 1.6. BÚSQUEDA DE INFORMACIÓN SENSIBLE DNIs, documentos no públicos del gobierno, o cualquier tipo de información cuyo dueño no imaginaba que sería pública. Ejemplo: ‘’not for public release’’ inurl:gob OR inurl:edu OR inurl:mil -.com -.net -.es 2. BUSCADORES ESPECIALIZADOS 2.1. SHODAN Tiene como objetivo ubicar en una misma herramienta todo tipo de dispositivos conectados a Internet, desde routers hasta cámaras de seguridad, pasando por todo lo que compete IoT Nos da mucha información como: IP, puertos abiertos, país al que pertenece, red de la organización, tecnología web utilizada, CVE descubiertos, etc Ejemplos de filtros usados: country: podemos obtener resultados de un país específico os: podemos filtrar los resultados dependiendo del sistema operativo, así como versiones port: podemos obtener resultados específicos de los puertos que queramos isp: Internet Service Provider hostname: si queremos buscar por nombre de dominio 2.2. WAYBACKMACHINE Es un motor de búsqueda / Base de Datos que contiene copias de una gran cantidad de páginas de Internet. En la actualidad recoge más de 330 mil millones de páginas web y otros documentos, se suele llamar la hemeroteca digital Este motor toma snapshots en varios momentos de cada página web que tenga, pudiendo nosotros acceder a todas ellas 3. RECOLECCIÓN DE INFORMACIÓN EN FUENTES ABIERTAS: II 1. TÉCNICAS PARA EL RECONOCIMIENTO ESPECIALIZADO 1.1. REGISTROS DNS Y RESOLUCIONES DE DOMINIO Las empresas usan normalmente subdominios propios para mantener diversas aplicaciones bajo un mismo dominio. Para poder acceder a estos normalmente se habilita un registro DNS que permite acceder a este subdominio mediante su resolución → DNS Dumpster Es una interfaz web para la herramienta del mismo nombre. Es limitada aunque cuenta con una funcionalidad que no poseen el resto de herramientas, genera un mapa visual de los subdominios hallados. → DNS Trails Es el mayor repositorio mundial de información sobre DNS a nivel histórico. Gracias a esta herramienta no solo podremos obtener información sobre los registros DNS actuales de un dominio, sino que podremos acceder a los cambios de registros que ha tenido dicho dominio a lo largo de su historia. Mediante la capacidad de comprobar el histórico de direcciones IP y registros DNS, podemos prevenir o detectar actividad criminal → WHOIS Lookup Es una herramienta provista por DomainTools capaz de entregarnos información variada sobre el dominio que estamos investigando. Podemos saber, por ejemplo, el número de cambios que ha habido en el hosting donde está alojada la web, o ver capturas de pantalla del dominio. 1.2. TECNOLOGÍAS WEB En muchas ocasiones, las tecnologías utilizadas no son versiones únicas, sino que son partes o productos de una empresa de software que va actualizando sus aplicaciones o creando parches de actualización para sus productos. Estos comienzan a desarrollarse por alguna falla en el código detectada que genera una amenaza para la aplicación. → Wappalyzer Es un software que recopila datos de forma anónima de un sitio web a través del navegador. Se presenta de forma de extensión de navegador de código abierto y descubre las tecnologías usadas por los sitios web. Es capaz de identificar 1222 tecnologías en 65 categorías diferentes. Detecta patrones únicos en el código fuente de la página web, encabezados, variables de script y herramientas de análisis con las que cuenta la web. Una vez introducida la dirección a buscar, pusimos el botón technology lookup y se mostrarán 2. BÚSQUEDA Y RECONOCIMIENTO POR DE REDES SOCIALES La mayoría de los datos permanecen ocultos y son solo accesibles por parte de la empresa que hay detrás de cada red social. No obstante, todavía podemos acceder a todos los otros datos que las aplicaciones hacen visibles para los usuarios. Además, si hacemos uso de herramientas que utilicen la API de cada red social, la tarea se facilita 2.1. NAMECHECK Es una página web muy útil si queremos comprobar si un determinado nombre, para una cuenta o marca, está disponible en Internet. Namecheck realizará búsquedas en docenas de sitios web y bases de datos, devolviéndonos en un solo clic un informe de la disponibilidad del nombre a buscar en dominios y redes sociales. Si pulsamos el botón view que aparece a la izquierda de cada red social, seremos redireccionados hacia la URL del usuario 2.2. PHONEBOOK.CZ Es una herramienta web capaz de listar todos los dominios, correos electrónicos asociados y enlaces provenientes de un dominio entregado como input. No es una herramienta para recolectar información de redes sociales de forma directa, pero es el complemento perfecto a la recolección que queramos hacer. Introducimos el dominio del que queremos recolectar información en el cuadro de búsqueda. También deberemos seleccionar entre Domains, Email addresses y URLs del dominio a buscar. 4. ESCANEO Y ENUMERACIÓN DE ACTIVOS 1. CONFIGURACIÓN DEL LABORATORIO DE HACKING 1.1. HOST OBJETIVO: TRYHACKME → ¿Qué es TryHackMe? TryHackMe es un a plataforma web que nos permitirá levantar diversos entornos virtuales de prueba sin necesidad de desplegar varias máquinas virtuales de manera local, permitiéndonos sacar todo el rendimiento a nuestro equipo 1.2. HOST ATACANTE Para la realización de las diferentes pruebas de pentesting, podemos usar como host atacante una máquina proporcionada por TryHackMe o la máquina virtual de Kali Linux. Lo haremos pulsando el botón Start AttackBox 1.3. OTRO OBJETIVO: METASPLOITABLE Utilizamos Metasploitable versión 2, una distribución basada en Ubuntu, configurada de forma intencionada con fallos en su seguridad y puertos abiertos, perfecta para aprender a realizar ataques informáticos en un entorno seguro 1.4. RED NAT Creamos la red ‘red-NAT-SSI’ con red CIDR 192.168.1.0/24 e indicamos DHCP 2. ESCANEO Y ENUMERACIÓN Tras obtener el rango de direcciones IP de nuestro objetivo durante la primera fase de reconocimiento de un pentesting, en esta segunda fase de escaneo: - Identificaremos hosts activos - Buscaremos los puertos abiertos en dichas máquinas - Gracias a estos obtendremos información del sistema operativo, apps, servicios… Una vez identificados el sistema operativo y servicio, podremos decidir si realizar la enumeración (escaneo más intenso) para obtener cuentas de usuario, procesos, etc 3. PING SWEEPERS Son herramientas de barrido de ping, estas nos permiten definir un rango de IPs donde enviar solicitudes de respuesta (echo request) usando el protocolo ICMP, marcando como activos aquellos hosts que respondan a la solicitud Por ello debemos tener en cuenta las siguientes consideraciones: - Los firewalls suelen bloquear las solicitudes de ping realizadas desde el exterior - Los sistemas de prevención de intrusos o IDS podrían detectar el escaneo y enviar órdenes al firewall para bloquear ciertas IPs 4. TCP-PING Permite comprobar si un host está activo utilizando el protocolo TCP en vez de ICMP. Hay casos en los que el host ha bloqueado el tráfico ICMP, por lo que no podemos comprobar su presencia en la red, ya que estaríamos enviando paquetes a un puerto conocido, o directamente tratando de establecer conexión TCP Cuando intentamos realizar conexión TCP con el host, este aceptará o rechazará la conexión, lo cual es información suficiente para saber si existe o no en la red. Tenemos dos métodos para saber si el host está en la red: 1. Estableciendo conexión a los puertos más conocidos, los que usan HTTP, FTP, etc 2. Obteniendo un error del tipo conexión rechazada al tratar de conectarnos Una herramienta conocida para realizar TCP-ping es tcpping, la instalamos usando el comando sudo apt-get install tcptraceroute 5. ESTADO DE PUERTOS 5.1. NMAP Es la herramienta de escaneo de puertos más conocida, se instala con sudo apt-get install nmap. Esta herramienta define los siguientes estados: - Abierto: disponible y escuchando, UDP/53, TCP/80, TCP/443 - Cerrado: accesible pero no tiene un servicio/aplicación que responda a solicitudes de conexión - Filtrado: no está accesible. Un router con firewall impide saber si está abierto o no - No-filtrado: accesible, pero no se sabe si está abierto o no - Abierto/Filtrado: el escáner no sabe si está abierto o filtrado - Cerrado/Filtrado: el escáner no sabe si está cerrado o filtrado 6. TÉCNICAS DE ESCANEO Escaneo SYN o half-open: - Identifica puertos con servicios que usan TCP como protocolo de transporte - En primer lugar, se envía una SYN a la víctima - Si se recibe como respuesta de la víctima: 1. SYN + ACK : puerto abierto 2. RST : puerto cerrado 3. Sin respuesta: puerto filtrado Escaneo full o connect-scan: - También utiliza el protocolo TCP - Sí se finaliza la conexión con el envío del ACK final a la máquina objetivo - Requiere más tiempo para ejecutarse - Podría quedar un registro de la conexión en los logs de eventos del objetivo Escaneo UDP: - Utiliza el protocolo de transporte UDP - Envía un paquete UDP a los puertos de hosts remotos y espera respuesta - Si la respuesta es: 1. Un segmento UDP: puerto abierto 2. Un mensaje ICMP port-unreachable: puerto cerrado 3. Otro tipo de error ICMP: puerto filtrado Escaneo ACK: - Permite comprobar si existe un firewall - Envía un segmento con flag ACK encendida al puerto destino de la víctima - Si la respuesta es: 1. RST: puerto unfiltered, accesible (puerto abierto o cerrado) 2. Sin respuesta o mensaje de error ICMP: puerto filtrado 6.1. FURIOUS Es una herramienta que permite realizar escaneos de tipo SYN a una velocidad mucho mayor de lo que lo hace Nmap. Esto lo hace ideal para tareas de enumeración de puertos Su sintaxis es: furious -s connect $IP Para examinar un simple host bastaría con: furious $IP Para la instalación de esta herramienta en Kali Linux se requiere la biblioteca libcap 7. ANALIZADORES DE VULNERABILIDADES Los analizadores de vulnerabilidades permiten ejecutar escaneos y enumeraciones sobre el objetivo. Las vulnerabilidades identificadas del objetivo pueden ser clasificadas según el riesgo: - Alto: el equipo objetivo tiene una o más vulnerabilidades críticas explotables fácilmente por un atacante. Se requiere una acción correctiva inmediata - Medio: tiene una o más vulnerabilidades severas que requieren una mayor complejidad para ser explotadas. Se requiere atención a corto plazo - Bajo: tiene una o más vulnerabilidades moderadas que podrían ofrecer información al atacante. No requiere atención urgente Algunos de los analizadores más conocidos son OpenVas, Nexpose y Nessus. Para instalar Nessus en Kali usamos dpkg -i Nessus-X.Y.Z-debian6_amd64.deb 8. ENUMERACIÓN DE VARIOS PROTOCOLOS CON NETCAT Netcat es una herramienta de código abierto que permite: - Escanear puertos - Abrir puertos de escucha en un equipo y realizar conexiones remotas - Transferir ficheros 5. EXPLOTACIÓN DE SISTEMAS, REDES Y CONTRASEÑAS: I 1. CONCEPTOS RELEVANTES Metasploit es un framework programado en Ruby y desarrollado por la empresa Rapid7 para realizar pruebas de intrusión. La herramienta dispone de cuatro versiones: framework, community, express y pro. Según el tipo de vulnerabilidad a explotar, Metasploit pone a nuestra disposición diferentes comandos, algunos los podemos ver en las Cheat Sheets. - Exploit: procedimiento creado con el fin de aprovechar una vulnerabilidad específica de un sistema, que puede venir dada por un fallo en la configuración, programación, diseño… Suelen utilizarse junto a los payloads. - Payload: programa que ejecutamos de manera remota una vez que nuestro exploit ha tenido éxito - Vectores de entrada: formas que permiten el acceso a un equipo - Encoders/decoders: son los encargados de codificar/decodificar los payloads de un exploit. - Sniffer: aplicación informática cuya misión es capturar distintos paquetes que circulan por la red como, por ejemplo, Wireshark - Módulos auxiliares: son módulos externos que proveen funcionalidades para ejecutar tareas sobre un equipo remoto 2. INSTALANDO METASPLOIT En la terminal aplicamos apt-get install metasploit-framework y accedemos a su consola con el comando msfconsole al hacerlo se nos otorga un prompt msf> 3. INFORMATION GATHERING 3.1. FOOTPRINTING Recabaremos toda la información de carácter público que podamos usando Google Dorks, una vez obtenida una gran cantidad nos quedamos con la que nos interesa 3.2. FINGERPRINTING Utilizaremos Nmap, es un programa de código abierto creado para el rastreo de puertos y las auditorías de redes informáticas. Lanzamos con el comando nmap y podemos obtener una observación de los puertos del sistema atacado usando el comando nmap ip objetivo -p 1-65535. Para saber la ip del objetivo usamos el comando ifconfig Para hacer un escaneo más intenso hacemos nmap -sV ip objetivo -p puerto 4. ATAQUES A SISTEMAS Este se hace en el momento que realizamos una intrusión a un sistema, podemos querer realizar esto para extraer datos confidenciales, modificar o robar algún archivo del sistema, escalar privilegios en el sistema con algún propósito, etc. Antes de utilizar el framework haremos apt update o apt install metasploit-framework para tener la última versión del mismo con los parches. 1. Para continuar debemos determinar si a partir de este servicio, nuestra máquina atacada se vuelve vulnerable, con search [servicio a buscar] 2. Seleccionamos el exploit que queramos usar para hacer la intrusión y lo ejecutamos gracias al comando use [ruta del exploit] 3. Tenemos que configurar los parámetros necesarios, usamos show options para ver todos los parámetros. Para configurarlos usamos set [nombre del parámetro] [valor del parámetro] 4. Ahora investigaremos los payloads con las distintas funcionalidades para cada tipo de arquitectura, lo haremos utilizando show payloads 5. Seleccionamos el que queremos con set payload [ruta del paylaod] 6. Después de configurarlo todo haremos exploit 5. ATAQUE A REDES Un envenenamiento de la tabla ARP es una técnica de hacking en la que el atacante envía paquetes ARP falsificados para inundar la tabla ARP del equipo atacado, consiguiendo una DoS en este o suplantar a otro equipo con una dirección física determinada gracias a los paquetes falsificados 1. La información necesaria la obtenemos con ifconfig en Metasploitable, necesitamos la IP de esta, la interfaz en la que está y su gateway 2. Usamos search poisoning para buscar un exploit que nos ayude 3. Seleccionamos el deseado con use [exploit a utilizar] 4. Configuramos los parámetro usando set [nombre] [valor] - DHOSTS: ponemos la IP del equipo destino - INTERFACE: interfaz de la IP destino - SHOSTS: rango de IP enviadas en el envenenamiento, junto a la máscara de subred - VERBOSE: lo cambiamos a TRUE para ver el envenenamiento 5. Hacemos el exploit 6. ATAQUES A CONTRASEÑAS Los usaremos ya sea para acceder a un servidor, conseguir contraseñas de alguna cuenta, romper un archivo, etc. Existen muchos tipos de ataques a contraseñas: fuerza bruta (probar todas las combinaciones), phishing (el atacante engaña a una víctima suplantando), ataques con diccionario (probando todas las palabras del diccionario), con keylogger (software encargado de detectar, y guardar o enviar, las pulsaciones que se realizan en el teclado), etc Nosotros usamos el ataque por fuerza bruta para entrar en un servidor SSH (protocolo que facilita la comunicación segura entre dos sistemas gracias a la arquitectura cliente/servidor y permite a los usuarios conectarse a un host de forma remota) 1. Buscamos información con el comando search ssh 2. Utilizamos un módulo auxiliar para hacer el exploit use [ruta del exploit] 3. Configuramos los parámetros con set [nombre] [valor del parámetro] - VERBOSE: a FALSE para no mostrar los intentos - USERPASS_FILE: colocamos la ruta del diccionario auxiliar /usr/share/metasploit-framework/data/wordlists/root_userpass.txt - RHOSTS: colocamos la IP de la máquina atacada 4. Ejecutamos el módulo auxiliar con run 5. Cuando, a partir del fichero root_userpass.txt se encuentra la coincidencia entre la contraseña real y una de las de nuestro fichero, habremos accedido al servidor SSH. Podemos ver las sesiones activas con sessions y usarlas con sessions -i [número de sesión a utilizar] 5. EXPLOTACIÓN DE SISTEMAS, REDES Y CONTRASEÑAS: II 1. ATAQUES POR FUERZA BRUTA Consisten en probar todas las opciones posibles para encontrar la contraseña o credencial correcta. En la actualidad son muchas las páginas web y aplicaciones que implementan métodos de protección contra ataques de fuerza bruta, como el captcha 1.1. SIMPLE BRUTE FORCE ATTACKS El atacante intenta adivinar las credenciales del usuario sin la ayuda de herramientas especializadas u otros medios. Este fue el origen de los ataques de fuerza bruta, y es funcional cuando no existe protección contra ellos y las credenciales son sencillas o fáciles de adivinar. 1.2. DICTIONARY ATTACKS El atacante escoge, o crea, un diccionario y ejecuta todas las posibles contraseñas que aparecen en él gracias a una herramienta especializada que prueba las combinaciones por él. Un diccionario es un archivo.txt en el que aparecen las diferentes contraseñas a probar para iniciar sesión en la cuenta del objetivo. Estos se pueden crear por simple scripting en cualquier lenguaje como Python, o con herramientas como John the Ripper. Uno de los diccionarios más conocidos es rockyou.txt 1.3. REVERSE BRUTE FORCE ATTACKS Consiste en hallar el usuario en vez de la contraseña, es necesario conocer una contraseña válida para iniciar sesión en el sistema. Una vez que sepamos la contraseña correcta, buscaremos y probaremos millones de nombres de usuario hasta encontrar las credenciales absolutas. Si queremos saber si nuestra contraseña se ha filtrado en algún momento podemos usar aplicaciones como haveibeenpwned 1.4. CRACKMAPEXEC Es una herramienta que nos ayuda a automatizar la evaluación de la seguridad dentro de redes Active Directory y se aprovecha de diversas características y protocolos presentes en las redes. Una red AD no es más que un conjunto de servicios y una base de datos que conectan a los usuarios con los recursos de red que necesitan para realizar su trabajo crackmapexec -u username1 username2 -p password1 si queremos usar diccionarios usamos crackmapexec -u ~/file_containing_usernames -p ~/file_containing_poasswords 1.5. HYDRA Es una herramienta especializada en realizar ataques de fuerza bruta contra servicios de login o activos cliente/servidor. Gracias a esta herramienta podremos acceder de forma no autorizada a un sistema de forma remota. Se usa con hydra ssh -l -p -s 22 -vV O hydra -L -P ftp://>target_IP> 2. EXPLOTACIÓN DE PROTOCOLOS Los protocolos cambian y evolucionan con el tiempo junto a la tecnología, pero no son sustituidos en la mayoría de los casos. Por este motivo, si somos capaces de reconocer uno de estos protocolos y saber sus vulnerabilidades durante face escaneo podremos aprovecharnos de ello 2.1. SMB Es un protocolo cliente/servidor que gobierna el acceso a archivos, directorios y recursos de una red como impresoras o interfaces compartidas. Este permite al cliente comunicarse con otros participantes de la red para acceder a los archivos compartidos. Explotando este protocolo podemos conseguir desde el acceso a información o archivos que se comparten en la red hasta ejecutar comandos de forma remota en la gestión de los archivos compartidos. 2.2. FTP Es un protocolo de transferencia de archivos, nos permite transferir archivos directamente de un dispositivo a otro. Estos se comparten entre ordenadores que estén conectados a Internet de forma directa y sin ningún intermediario. Por defecto se usa el puerto 21 para la conexión con el servidor y el 20 para las transferencias de archivos 2.3. TELNET Nos proporciona un método estándar para establecer una sesión de línea de comandos en un dispositivo de forma remota a través de una red. De forma predeterminada se usa el 23 Explotando este protocolo podríamos conseguir el acceso al dispositivo en el que estuviese habilitado, además de obtener información de la conexión. Esto se debe a que dentro de este protocolo la información viaja sin ningún tipo de cifrado, solamente en texto plano 2.4. SSH Es un protocolo de administración remota que permite a los usuarios que lo utilicen controlar, manejar y modificar servicios de forma remota a través de Internet gracias a un mecanismo de autenticación. Se usa por defecto el puerto 22 Gracias a este protocolo podríamos usar SSH en nuestro servidor para conectarnos a él de forma remota desde una terminal. Si usamos Linux o Mac, podremos hacer uso de este protocolo con el comando ssh user@host Si usamos Windows debemos hacer uso de un cliente SSH como PuTTY Lo explotamos por ejemplo hallando las credenciales de conexión para un determinado servidor y, una vez lo tengamos, conectarnos a él mediante SSH 2.5. ENUM4LINUX Herramienta de enumeración capaz de detectar y extraer datos de los sistemas operativos Windows y Linux, incluidos aquellos que son hosts en una red. Podemos conocer recursos compartidos en un dispositivo, el sistema operativo del objetivo, políticas de contraseña de un objetivo, e incluso listado de usuarios, explotando el protocolo SMB Un ejemplo de uso es enum4linux -a 192.168.1.4, siendo la flag -a para enumerar y otra flag es -U para obtener una lista de usuarios como enum4linux -U -o 192.168.1.4 2.6. SMBMAP Es una herramienta que permite enumerar las unidades y contenidos compartidos en todo un dominio, así como permisos de las unidades, e incluso ejecución de comandos remotos. Se usa como smbmap -H 192.168.1.4, podemos listar con la flag -r el contenido del directorio