diff --git a/Introduccion-hacking-hack4u/README.md b/Introduccion-hacking-hack4u/README.md index 1410ad1..6f4ecac 100644 --- a/Introduccion-hacking-hack4u/README.md +++ b/Introduccion-hacking-hack4u/README.md @@ -11,298 +11,14 @@ Recuerda, "Quien se corta su propia leña se calienta dos veces" -Índice: -- [Apuntes Introducción al hacking - hack4u](#apuntes-introducción-al-hacking---hack4u) - - [TEMA 1 - Reconocimiento](#tema-1---reconocimiento) - - [1.1. - nmap](#11---nmap) - - [1.2. - Técnicas de evasión de Firewalls (MTU, Data Length, Source Port, Decoy, etc)](#12---técnicas-de-evasión-de-firewalls-mtu-data-length-source-port-decoy-etc) - - [1.3. - scripts y categorías en nmap](#13---scripts-y-categorías-en-nmap) - - [1.4. - scripts propios en Lua para nmap](#14---scripts-propios-en-lua-para-nmap) - - [1.5 Alternativas para la enumeración de puertos usando descriptores de archivo](#15-alternativas-para-la-enumeración-de-puertos-usando-descriptores-de-archivo) - - [1.6 Descubrimiento de equipos en la red local (ARP e ICMP) y Tips](#16-descubrimiento-de-equipos-en-la-red-local-arp-e-icmp-y-tips) - -## TEMA 1 - Reconocimiento -### 1.1. - nmap -Nmap es una herramienta de escaneo de red gratuita y de código abierto que se utiliza en pruebas de penetración (pentesting) para explorar y auditar redes y sistemas informáticos. - -Con Nmap, los profesionales de seguridad pueden identificar los hosts conectados a una red, los servicios que se están ejecutando en ellos y las vulnerabilidades que podrían ser explotadas por un atacante. La herramienta es capaz de detectar una amplia gama de dispositivos, incluyendo enrutadores, servidores web, impresoras, cámaras IP, sistemas operativos y otros dispositivos conectados a una red. - -Asimismo, esta herramienta posee una variedad de funciones y características avanzadas que permiten a los profesionales de seguridad adaptar la misma a sus necesidades específicas. Estas incluyen técnicas de escaneo agresivas, capacidades de scripting personalizadas, y un conjunto de herramientas auxiliares que pueden ser utilizadas para obtener información adicional sobre los hosts objetivo. - -| Opción | Descripción | -| ------------- | -------------------------------------------------------------------------------------------------------------------- | -| -p | Puertos. Si no pones está opción te enumera los puertos más usados. Para ver todos los puertos puedes usar un guión. | -| --top-ports | Puertos más usados | -| --open | Puertos abiertos | -| -v | Verbose | -| -n | No aplica resolución DNS. | -| -sT | Escaneo de tipo TCP | -| -sS | Escaneo de tipo SYN | -| -sU | Escaneo de tipo UDP | -| -sN | Escaneo de tipo NULL | -| -sF | Escaneo de tipo FIN | -| -sX | Escaneo de tipo XMAS | -| -sA | Escaneo de tipo ACK | -| -sW | Escaneo de tipo WINDOW | -| -sM | Escaneo de tipo Maimon | -| -sR | Escaneo de tipo RPC | -| -sP | Escaneo de tipo Ping | -| -sO | Escaneo de tipo IP | -| -sI | Escaneo de tipo Idle | -| -sY | Escaneo de tipo SCTP INIT | -| -sZ | Escaneo de tipo SCTP COOKIE ECHO | -| -sN | Escaneo de tipo SCTP HEARTBEAT | -| -sQ | Escaneo de tipo SCTP ABORT | -| -sL | Escaneo de tipo SCTP SHUTDOWN | -| -T | Temporizador (paranoid , sneaky , polite , normal , aggressive , insane) | -| -s | Escaneo de tipo Scaneo SYN → (RST (cerrado) , SYN/ACK (abierto) . ACK (established)) | -| -Pn | Para que de por hecho de que el host está activo | -| -sU | Escaneo por UDP (Más lento que TCP) | -| -sn | Comprobar mediante ping que equipos están activos escaneando la red | -| -O | Trata de obtener información del SO (Muy agresivo, hace muchas peticiones) | -| -sV | Versión y servicio que corre por los puertos | -| -f | Fragmentar paquetes | -| --mtu | Para eludir firewall. Tienes que darle un valor multiplo de 8 | -| -D | Recoge tambien otras IPs que envían tráfico. Se añade un valor de IP | -| --data-length | Manipula el tamaño del length de los paquetes | -| --spoof-mac | Manipulas la MAC. Por ejemplo, Dell , 00:00:97:96:9C:88 | -| -sS | Shell Scan – Agiliza el escaneo | -| --min-rate | Controlar el total de paquetes que quieres tramitar. Suele usar 5000 paquetes, da garantias del estado del puerto. | -| -sC | Para llamar a los scripts más populares. Scripts: locate .nse | -| --script | Llamar a los scripts por categorias. Ej. "vuln and safe", "vuln or safe" | - - - -Enumerar interfaces: -``` -route -n -``` - -Escaneo puerto 22, escaneo temporizado, verbose, sin DNS: -``` -nmap -p22 -sT –open 192.168.1.1 -v -n -``` - -Capturar en un fichero el tráfico TCP de una interfaz -``` -tcpdum -i wlo1 -w Captura.cap -v -``` - -Con wireshark puedes abrir la Captura.cap: -``` -wireshark Captura.cap &>/dev/null & disown -``` - -Puedes filtrar en nmap con tcp.port == 22 -``` -arp-scan -I wlo1 --localnet -``` - -Para escanear las redes y ver solo las Ips puedes aplicar un filtro regex con grep: -``` -nmap -sn 192.168.1.0/24 | grep -oP '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' | sort -``` - -### 1.2. - Técnicas de evasión de Firewalls (MTU, Data Length, Source Port, Decoy, etc) - -Cuando se realizan pruebas de penetración, uno de los mayores desafíos es evadir la detección de los Firewalls, que son diseñados para proteger las redes y sistemas de posibles amenazas. Para superar este obstáculo, Nmap ofrece una variedad de técnicas de evasión que permiten a los profesionales de seguridad realizar escaneos sigilosos y evitar así la detección de los mismos. - -Algunos de los parámetros vistos en esta clase son los siguientes: - - **MTU (–mtu)**: La técnica de evasión de MTU o “Maximum Transmission Unit” implica ajustar el tamaño de los paquetes que se envían para evitar la detección por parte del Firewall. Nmap permite configurar manualmente el tamaño máximo de los paquetes para garantizar que sean lo suficientemente pequeños para pasar por el Firewall sin ser detectados. - - **Data Length (–data-length)**: Esta técnica se basa en ajustar la longitud de los datos enviados para que sean lo suficientemente cortos como para pasar por el Firewall sin ser detectados. Nmap permite a los usuarios configurar manualmente la longitud de los datos enviados para que sean lo suficientemente pequeños para evadir la detección del Firewall. - - **Source Port (–source-port)**: Esta técnica consiste en configurar manualmente el número de puerto de origen de los paquetes enviados para evitar la detección por parte del Firewall. Nmap permite a los usuarios especificar manualmente un puerto de origen aleatorio o un puerto específico para evadir la detección del Firewall. - - **Decoy (-D)**: Esta técnica de evasión en Nmap permite al usuario enviar paquetes falsos a la red para confundir a los sistemas de detección de intrusos y evitar la detección del Firewall. El comando -D permite al usuario enviar paquetes falsos junto con los paquetes reales de escaneo para ocultar su actividad. - - **Fragmented (-f)**: Esta técnica se basa en fragmentar los paquetes enviados para que el Firewall no pueda reconocer el tráfico como un escaneo. La opción -f en Nmap permite fragmentar los paquetes y enviarlos por separado para evitar la detección del Firewall. - - **Spoof-Mac (–spoof-mac)**: Esta técnica de evasión se basa en cambiar la dirección MAC del paquete para evitar la detección del Firewall. Nmap permite al usuario configurar manualmente la dirección MAC para evitar ser detectado por el Firewall. - - **Stealth Scan (-sS)**: Esta técnica es una de las más utilizadas para realizar escaneos sigilosos y evitar la detección del Firewall. El comando -sS permite a los usuarios realizar un escaneo de tipo SYN sin establecer una conexión completa, lo que permite evitar la detección del Firewall. - - **min-rate (–min-rate)**: Esta técnica permite al usuario controlar la velocidad de los paquetes enviados para evitar la detección del Firewall. El comando –min-rate permite al usuario reducir la velocidad de los paquetes enviados para evitar ser detectado por el Firewall. - -Es importante destacar que, además de las técnicas de evasión mencionadas anteriormente, existen muchas otras opciones en Nmap que pueden ser utilizadas para realizar pruebas de penetración efectivas y evadir la detección del Firewall. Sin embargo, las técnicas que hemos mencionado son algunas de las más populares y ampliamente utilizadas por los profesionales de seguridad para superar los obstáculos que presentan los Firewalls en la realización de pruebas de penetración. - -En nmap fragmentas los paquetes con -f. Luego, en wireshark puedes ver los paquetes fragmentados con `ip.flags.mg == 0` -En wireshark se puede filtrar por el destino de los paquetes con `ip.dst == 192.168.1.1` - -En las capturas se puede el tamaño length que puede determinar si se está escaneando los paquetes. Para manipular este valor se puede añadir la opción –data-length a nmap: -``` -nmap -p22 192.168.1.1 --data-length 21 -``` - -Se puede falsificar direcciones mac con `--spoof-mac` - - -### 1.3. - scripts y categorías en nmap -Una de las características más poderosas de Nmap es su capacidad para automatizar tareas utilizando scripts personalizados. - -Los scripts de Nmap permiten a los profesionales de seguridad automatizar las tareas de reconocimiento y descubrimiento en la red, además de obtener información valiosa sobre los sistemas y servicios que se están ejecutando en ellos. El parámetro –script de Nmap permite al usuario seleccionar un conjunto de scripts para ejecutar en un objetivo de escaneo específico. - -Existen diferentes categorías de scripts disponibles en Nmap, cada una diseñada para realizar una tarea específica. Algunas de las categorías más comunes incluyen: - - - **default**: Esta es la categoría predeterminada en Nmap, que incluye una gran cantidad de scripts de reconocimiento básicos y útiles para la mayoría de los escaneos. - - discovery: Esta categoría se enfoca en descubrir información sobre la red, como la detección de hosts y dispositivos activos, y la resolución de nombres de dominio. - - **safe**: Esta categoría incluye scripts que son considerados seguros y que no realizan actividades invasivas que puedan desencadenar una alerta de seguridad en la red. - - **intrusive**: Esta categoría incluye scripts más invasivos que pueden ser detectados fácilmente por un sistema de detección de intrusos o un Firewall, pero que pueden proporcionar información valiosa sobre vulnerabilidades y debilidades en la red. - - **vuln**: Esta categoría se enfoca específicamente en la detección de vulnerabilidades y debilidades en los sistemas y servicios que se están ejecutando en la red. - -Con `locate .nse` podemos ver todos los scripts de nmap que podemos usar. - -Ejemplo de scripts populares que se llaman con la opción -sC: - -- **ftp-anon.nse** – Comprueba si en el servicio de ftp está habilitado el usuario anonymous. -- **http-robots.txt.nse** – Comprueba si existe el fichero robots.txt y te reporta su contenido. - -Puedes ver las categorias de los scripts con el siguiente comando: -``` -locate .nse | xargs grep "categories" | grep -oP '".*?"' | sort -u -``` -- locate buscar los ficheros. -- xargs emplea una búsqueda en cada una de las líneas (cada fichero) -- grep -oP con un regex extrae el contenido entre comillas. -- sort -u ordena alfabéticamente y muestra líneas únicas. - -Categorias: - - "auth" - - "broadcast" - - "brute" - - "default" - - "discovery" - - "dos" - - "exploit" - - "external" - - "fuzzer" - - "intrusive" - - "malware" - - "safe" - - "version" - - "vuln" - -Si levantamos un servidor web con: -``` -python3 -m http:server 80 -``` - -podemos comprobar con el siguiente comando el servicio que ocupa el puerto 80 y nos saldrá: -``` -lsof -i:80 -``` - -Nos saldrá el pid, con este podemos comprobar la ruta donde se está montando el servidor: -``` -pwdx -``` - -Ahora podemos lanzar un script que nos diga las carpetas que tiene la web, actuando como fuzzing -``` -nmap -p80 localhost --script http-enum -``` - -Podemos utilizar tcpdump para comprobar lo que hace el script. -``` -tcpdump -i lo -w output.cap -``` - -Luego comprobarlo con wireshark o con tshark: -``` -tshark -r output.cap 2>/dev/null -``` - -Puedes filtrar con -Y. Por ejemplo: -``` -tshark -r output.cap -Y "http" 2>/dev/null -``` - -Puedes leerlo en formato json: -``` -tshark -r output.cap -Y "http" -Tjson 2>/dev/null -``` - -Puedes filtrar por el campo tcp.payload. Se debe convertir el hexadecimal para poder leerlo en claro: -``` -tshark -r output.cap -Y "http" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r -``` - -A esto, filtras las líneas GET y a estas por el segundo argumento para obtener todas las rutas que prueba el script: -``` -tshark -r output.cap -Y "http" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r | grep "GET" | awk '{print $2}' -``` - -Con un sort con rutas únicas y el wc podemos enumerar todas las rutas que prueba el script -``` -tshark -r output.cap -Y "http" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r | grep "GET" | awk '{print $2}' | sort -u | wc -l -``` - -Salen 1074 o_O - -### 1.4. - scripts propios en Lua para nmap -Nmap permite a los profesionales de seguridad personalizar y extender sus capacidades mediante la creación de scripts personalizados en el lenguaje de programación Lua. Lua es un lenguaje de scripting simple, flexible y poderoso que es fácil de aprender y de usar para cualquier persona interesada en crear scripts personalizados para Nmap. - -Para utilizar Lua como un script personalizado en Nmap, es necesario tener conocimientos básicos del lenguaje de programación Lua y comprender la estructura básica que debe tener el script. La estructura básica de un script de Lua en Nmap incluye la definición de una tabla, que contiene diferentes campos y valores que describen la funcionalidad del script. - -Los campos más comunes que se definen en la tabla de un script de Lua en Nmap incluyen: - - **description**: Este campo se utiliza para proporcionar una descripción corta del script y su funcionalidad. - - **categories**: Este campo se utiliza para especificar las categorías a las que pertenece el script, como descubrimiento, explotación, enumeración, etc. - - **author**: Este campo se utiliza para identificar al autor del script. - - **license**: Este campo se utiliza para especificar los términos de la licencia bajo la cual se distribuye el script. - - **dependencies**: Este campo se utiliza para especificar cualquier dependencia de biblioteca o software que requiera el script para funcionar correctamente. - - **actions**: Este campo se utiliza para definir la funcionalidad específica del script, como la realización de un escaneo de puertos, la detección de vulnerabilidades, etc. - -Una vez que se ha creado un script de Lua personalizado en Nmap, se puede invocar utilizando el parámetro –script y el nombre del archivo del script. Con la creación de scripts personalizados en Lua, es posible personalizar aún más las capacidades de Nmap y obtener información valiosa sobre los sistemas y servicios en la red. - -[Script sencillo](example.nse) en lua para ver puertos abiertos - -Para ejecutarlo: -``` -nmap --script /home/v/Documents/projectes/lab/example.nse -p22,80 192.168.1.1 -``` - -### 1.5 Alternativas para la enumeración de puertos usando descriptores de archivo - -La enumeración de puertos es una tarea crucial en las pruebas de penetración y seguridad de redes. Tal y como hemos visto, Nmap es una herramienta de línea de comandos ampliamente utilizada para esta tarea, pero existen alternativas para realizar la enumeración de puertos de manera efectiva sin utilizar herramientas externas. - -Una alternativa a la enumeración de puertos utilizando herramientas externas es aprovechar el poder de los descriptores de archivo en sistemas Unix. Los descriptores de archivo son una forma de acceder y manipular archivos y dispositivos en sistemas Unix. En particular, la utilización de /dev/tcp permite la conexión a un host y puerto específicos como si se tratara de un archivo en el sistema. - -Para realizar la enumeración de puertos utilizando /dev/tcp en Bash, es posible crear un script que realice una conexión a cada puerto de interés y compruebe si el puerto está abierto o cerrado en función de si se puede enviar o recibir datos. Una forma de hacer esto es mediante el uso de comandos como “echo” o “cat“, aplicando redireccionamientos al /dev/tcp. El código de estado devuelto por el comando se puede utilizar para determinar si el puerto está abierto o cerrado. - -Aunque esta alternativa puede ser menos precisa y más lenta que el uso de herramientas especializadas como Nmap, es una opción interesante y viable para aquellos que buscan una solución rápida y sencilla para la enumeración de puertos en sistemas Unix. Además, este enfoque puede proporcionar una mejor comprensión de cómo funcionan los descriptores de archivo en los sistemas Unix y cómo se pueden utilizar para realizar tareas de red. - -[Script en bash](portScan.sh) para descubrir puertos abiertos. - -### 1.6 Descubrimiento de equipos en la red local (ARP e ICMP) y Tips - -El descubrimiento de equipos en la red local es una tarea fundamental en la gestión de redes y en las pruebas de seguridad. Existen diferentes herramientas y técnicas para realizar esta tarea, que van desde el escaneo de puertos hasta el análisis de tráfico de red. - -En esta clase, nos enfocaremos en las técnicas de descubrimiento de equipos basadas en los protocolos ARP e ICMP. Además, se presentarán diferentes herramientas que pueden ser útiles para esta tarea, como Nmap, netdiscover, arp-scan y masscan. - -Entre los modos de escaneo que se explican en la clase, se encuentra el uso del parámetro ‘-sn‘ de Nmap, que permite realizar un escaneo de hosts sin realizar el escaneo de puertos. También se presentan las herramientas netdiscover, arp-scan y masscan, que utilizan el protocolo ARP para descubrir hosts en la red. - -Cada herramienta tiene sus propias ventajas y limitaciones. Por ejemplo, netdiscover es una herramienta simple y fácil de usar, pero puede ser menos precisa que arp-scan o masscan. Por otro lado, arp-scan y masscan son herramientas más potentes, capaces de descubrir hosts más rápido y en redes más grandes, pero también son más complejas y pueden requerir más recursos. - -En definitiva, el descubrimiento de equipos en la red local es una tarea fundamental para cualquier administrador de redes o profesional de seguridad de la información. Con las técnicas y herramientas adecuadas, es posible realizar esta tarea de manera efectiva y eficiente. - -Ejemplos de comandos para detectas IPs activas en la red local: -``` -nmap -sn 192.168.1.1/24 -``` - -``` -netdiscover -i wlo1 -``` - -``` -arp-scan -I wlo1 --localnet -``` - -``` -for i in {1..255}; do timeout 1 bash -c "ping -c 1 192.168.1.$i" &>/dev/null && echo "IP activa: 192.168.1.$i"; done - -``` - -[Script bash](./hostDiscovery.sh) para descubrir IPs activas y sus puertos en la red local - -masscan es una herramienta de escaneo de puertos de alto rendimiento que puede escanear millones de IPs en un minuto. - -``` -masscan -p1-65535 -Pn 192.168.1.1 --rate 5000 -``` +| TEMAS | +| --- | +| [1. Conceptos básicos](./tema_1_conceptos_basicos/README.md) | +| [2. Reconocimiento](./tema_2_Reconocimiento/README.md) | +| [3. Configuración de laboratorios locales de Docker](./tema_3_laboratorios/README.md) | +| [4. Enumeración de servicios comunes y gestores de contenido](./tema_4_enumeracion/README.md) | +| [5. Conceptos básicos de enumeración y explotación](./tema_5_conceptos/README.md) | +| [6. OWASP TOP 10 y vulnerabilidades web](./tema_6_owasp/README.md) | diff --git a/Introduccion-hacking-hack4u/tema_1_conceptos_basicos/README.md b/Introduccion-hacking-hack4u/tema_1_conceptos_basicos/README.md new file mode 100644 index 0000000..6adfce5 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_1_conceptos_basicos/README.md @@ -0,0 +1 @@ +# TEMA 1 - Conceptos básicos diff --git a/Introduccion-hacking-hack4u/tema_2_Reconocimiento/README.md b/Introduccion-hacking-hack4u/tema_2_Reconocimiento/README.md new file mode 100644 index 0000000..1a3e76b --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_2_Reconocimiento/README.md @@ -0,0 +1,379 @@ +# TEMA 2 - Reconocimiento + +Índice: +- [TEMA 2 - Reconocimiento](#tema-2---reconocimiento) + - [1.1. - nmap](#11---nmap) + - [1.2. - Técnicas de evasión de Firewalls (MTU, Data Length, Source Port, Decoy, etc)](#12---técnicas-de-evasión-de-firewalls-mtu-data-length-source-port-decoy-etc) + - [1.3. - scripts y categorías en nmap](#13---scripts-y-categorías-en-nmap) + - [1.4. - scripts propios en Lua para nmap](#14---scripts-propios-en-lua-para-nmap) + - [1.5 Alternativas para la enumeración de puertos usando descriptores de archivo](#15-alternativas-para-la-enumeración-de-puertos-usando-descriptores-de-archivo) + - [1.6 Descubrimiento de equipos en la red local (ARP e ICMP) y Tips](#16-descubrimiento-de-equipos-en-la-red-local-arp-e-icmp-y-tips) + - [1.7 Fijando un target en HackerOne](#17-fijando-un-target-en-hackerone) + - [1.8 Descubrimiento de correos electrónicos](#18-descubrimiento-de-correos-electrónicos) + - [1.9 Reconocimiento de imágenes](#19-reconocimiento-de-imágenes) + - [1.10 Enumeración de subdominios](#110-enumeración-de-subdominios) + - [1.11 Credenciales y brechas de seguridad](#111-credenciales-y-brechas-de-seguridad) + + + +## 1.1. - nmap +Nmap es una herramienta de escaneo de red gratuita y de código abierto que se utiliza en pruebas de penetración (pentesting) para explorar y auditar redes y sistemas informáticos. + +Con Nmap, los profesionales de seguridad pueden identificar los hosts conectados a una red, los servicios que se están ejecutando en ellos y las vulnerabilidades que podrían ser explotadas por un atacante. La herramienta es capaz de detectar una amplia gama de dispositivos, incluyendo enrutadores, servidores web, impresoras, cámaras IP, sistemas operativos y otros dispositivos conectados a una red. + +Asimismo, esta herramienta posee una variedad de funciones y características avanzadas que permiten a los profesionales de seguridad adaptar la misma a sus necesidades específicas. Estas incluyen técnicas de escaneo agresivas, capacidades de scripting personalizadas, y un conjunto de herramientas auxiliares que pueden ser utilizadas para obtener información adicional sobre los hosts objetivo. + +| Opción | Descripción | +| ------------- | -------------------------------------------------------------------------------------------------------------------- | +| -p | Puertos. Si no pones está opción te enumera los puertos más usados. Para ver todos los puertos puedes usar un guión. | +| --top-ports | Puertos más usados | +| --open | Puertos abiertos | +| -v | Verbose | +| -n | No aplica resolución DNS. | +| -sT | Escaneo de tipo TCP | +| -sS | Escaneo de tipo SYN | +| -sU | Escaneo de tipo UDP | +| -sN | Escaneo de tipo NULL | +| -sF | Escaneo de tipo FIN | +| -sX | Escaneo de tipo XMAS | +| -sA | Escaneo de tipo ACK | +| -sW | Escaneo de tipo WINDOW | +| -sM | Escaneo de tipo Maimon | +| -sR | Escaneo de tipo RPC | +| -sP | Escaneo de tipo Ping | +| -sO | Escaneo de tipo IP | +| -sI | Escaneo de tipo Idle | +| -sY | Escaneo de tipo SCTP INIT | +| -sZ | Escaneo de tipo SCTP COOKIE ECHO | +| -sN | Escaneo de tipo SCTP HEARTBEAT | +| -sQ | Escaneo de tipo SCTP ABORT | +| -sL | Escaneo de tipo SCTP SHUTDOWN | +| -T | Temporizador (paranoid , sneaky , polite , normal , aggressive , insane) | +| -s | Escaneo de tipo Scaneo SYN → (RST (cerrado) , SYN/ACK (abierto) . ACK (established)) | +| -Pn | Para que de por hecho de que el host está activo | +| -sU | Escaneo por UDP (Más lento que TCP) | +| -sn | Comprobar mediante ping que equipos están activos escaneando la red | +| -O | Trata de obtener información del SO (Muy agresivo, hace muchas peticiones) | +| -sV | Versión y servicio que corre por los puertos | +| -f | Fragmentar paquetes | +| --mtu | Para eludir firewall. Tienes que darle un valor multiplo de 8 | +| -D | Recoge tambien otras IPs que envían tráfico. Se añade un valor de IP | +| --data-length | Manipula el tamaño del length de los paquetes | +| --spoof-mac | Manipulas la MAC. Por ejemplo, Dell , 00:00:97:96:9C:88 | +| -sS | Shell Scan – Agiliza el escaneo | +| --min-rate | Controlar el total de paquetes que quieres tramitar. Suele usar 5000 paquetes, da garantias del estado del puerto. | +| -sC | Para llamar a los scripts más populares. Scripts: locate .nse | +| --script | Llamar a los scripts por categorias. Ej. "vuln and safe", "vuln or safe" | + + + +Enumerar interfaces: +``` +route -n +``` + +Escaneo puerto 22, escaneo temporizado, verbose, sin DNS: +``` +nmap -p22 -sT –open 192.168.1.1 -v -n +``` + +Capturar en un fichero el tráfico TCP de una interfaz +``` +tcpdum -i wlo1 -w Captura.cap -v +``` + +Con wireshark puedes abrir la Captura.cap: +``` +wireshark Captura.cap &>/dev/null & disown +``` + +Puedes filtrar en nmap con tcp.port == 22 +``` +arp-scan -I wlo1 --localnet +``` + +Para escanear las redes y ver solo las Ips puedes aplicar un filtro regex con grep: +``` +nmap -sn 192.168.1.0/24 | grep -oP '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' | sort +``` + +## 1.2. - Técnicas de evasión de Firewalls (MTU, Data Length, Source Port, Decoy, etc) + +Cuando se realizan pruebas de penetración, uno de los mayores desafíos es evadir la detección de los Firewalls, que son diseñados para proteger las redes y sistemas de posibles amenazas. Para superar este obstáculo, Nmap ofrece una variedad de técnicas de evasión que permiten a los profesionales de seguridad realizar escaneos sigilosos y evitar así la detección de los mismos. + +Algunos de los parámetros vistos en esta clase son los siguientes: + - **MTU (–mtu)**: La técnica de evasión de MTU o “Maximum Transmission Unit” implica ajustar el tamaño de los paquetes que se envían para evitar la detección por parte del Firewall. Nmap permite configurar manualmente el tamaño máximo de los paquetes para garantizar que sean lo suficientemente pequeños para pasar por el Firewall sin ser detectados. + - **Data Length (–data-length)**: Esta técnica se basa en ajustar la longitud de los datos enviados para que sean lo suficientemente cortos como para pasar por el Firewall sin ser detectados. Nmap permite a los usuarios configurar manualmente la longitud de los datos enviados para que sean lo suficientemente pequeños para evadir la detección del Firewall. + - **Source Port (–source-port)**: Esta técnica consiste en configurar manualmente el número de puerto de origen de los paquetes enviados para evitar la detección por parte del Firewall. Nmap permite a los usuarios especificar manualmente un puerto de origen aleatorio o un puerto específico para evadir la detección del Firewall. + - **Decoy (-D)**: Esta técnica de evasión en Nmap permite al usuario enviar paquetes falsos a la red para confundir a los sistemas de detección de intrusos y evitar la detección del Firewall. El comando -D permite al usuario enviar paquetes falsos junto con los paquetes reales de escaneo para ocultar su actividad. + - **Fragmented (-f)**: Esta técnica se basa en fragmentar los paquetes enviados para que el Firewall no pueda reconocer el tráfico como un escaneo. La opción -f en Nmap permite fragmentar los paquetes y enviarlos por separado para evitar la detección del Firewall. + - **Spoof-Mac (–spoof-mac)**: Esta técnica de evasión se basa en cambiar la dirección MAC del paquete para evitar la detección del Firewall. Nmap permite al usuario configurar manualmente la dirección MAC para evitar ser detectado por el Firewall. + - **Stealth Scan (-sS)**: Esta técnica es una de las más utilizadas para realizar escaneos sigilosos y evitar la detección del Firewall. El comando -sS permite a los usuarios realizar un escaneo de tipo SYN sin establecer una conexión completa, lo que permite evitar la detección del Firewall. + - **min-rate (–min-rate)**: Esta técnica permite al usuario controlar la velocidad de los paquetes enviados para evitar la detección del Firewall. El comando –min-rate permite al usuario reducir la velocidad de los paquetes enviados para evitar ser detectado por el Firewall. + +Es importante destacar que, además de las técnicas de evasión mencionadas anteriormente, existen muchas otras opciones en Nmap que pueden ser utilizadas para realizar pruebas de penetración efectivas y evadir la detección del Firewall. Sin embargo, las técnicas que hemos mencionado son algunas de las más populares y ampliamente utilizadas por los profesionales de seguridad para superar los obstáculos que presentan los Firewalls en la realización de pruebas de penetración. + +En nmap fragmentas los paquetes con -f. Luego, en wireshark puedes ver los paquetes fragmentados con `ip.flags.mg == 0` +En wireshark se puede filtrar por el destino de los paquetes con `ip.dst == 192.168.1.1` + +En las capturas se puede el tamaño length que puede determinar si se está escaneando los paquetes. Para manipular este valor se puede añadir la opción –data-length a nmap: +``` +nmap -p22 192.168.1.1 --data-length 21 +``` + +Se puede falsificar direcciones mac con `--spoof-mac` + + +## 1.3. - scripts y categorías en nmap +Una de las características más poderosas de Nmap es su capacidad para automatizar tareas utilizando scripts personalizados. + +Los scripts de Nmap permiten a los profesionales de seguridad automatizar las tareas de reconocimiento y descubrimiento en la red, además de obtener información valiosa sobre los sistemas y servicios que se están ejecutando en ellos. El parámetro –script de Nmap permite al usuario seleccionar un conjunto de scripts para ejecutar en un objetivo de escaneo específico. + +Existen diferentes categorías de scripts disponibles en Nmap, cada una diseñada para realizar una tarea específica. Algunas de las categorías más comunes incluyen: + + - **default**: Esta es la categoría predeterminada en Nmap, que incluye una gran cantidad de scripts de reconocimiento básicos y útiles para la mayoría de los escaneos. + - discovery: Esta categoría se enfoca en descubrir información sobre la red, como la detección de hosts y dispositivos activos, y la resolución de nombres de dominio. + - **safe**: Esta categoría incluye scripts que son considerados seguros y que no realizan actividades invasivas que puedan desencadenar una alerta de seguridad en la red. + - **intrusive**: Esta categoría incluye scripts más invasivos que pueden ser detectados fácilmente por un sistema de detección de intrusos o un Firewall, pero que pueden proporcionar información valiosa sobre vulnerabilidades y debilidades en la red. + - **vuln**: Esta categoría se enfoca específicamente en la detección de vulnerabilidades y debilidades en los sistemas y servicios que se están ejecutando en la red. + +Con `locate .nse` podemos ver todos los scripts de nmap que podemos usar. + +Ejemplo de scripts populares que se llaman con la opción -sC: + +- **ftp-anon.nse** – Comprueba si en el servicio de ftp está habilitado el usuario anonymous. +- **http-robots.txt.nse** – Comprueba si existe el fichero robots.txt y te reporta su contenido. + +Puedes ver las categorias de los scripts con el siguiente comando: +``` +locate .nse | xargs grep "categories" | grep -oP '".*?"' | sort -u +``` +- locate buscar los ficheros. +- xargs emplea una búsqueda en cada una de las líneas (cada fichero) +- grep -oP con un regex extrae el contenido entre comillas. +- sort -u ordena alfabéticamente y muestra líneas únicas. + +Categorias: + - "auth" + - "broadcast" + - "brute" + - "default" + - "discovery" + - "dos" + - "exploit" + - "external" + - "fuzzer" + - "intrusive" + - "malware" + - "safe" + - "version" + - "vuln" + +Si levantamos un servidor web con: +``` +python3 -m http:server 80 +``` + +podemos comprobar con el siguiente comando el servicio que ocupa el puerto 80 y nos saldrá: +``` +lsof -i:80 +``` + +Nos saldrá el pid, con este podemos comprobar la ruta donde se está montando el servidor: +``` +pwdx +``` + +Ahora podemos lanzar un script que nos diga las carpetas que tiene la web, actuando como fuzzing +``` +nmap -p80 localhost --script http-enum +``` + +Podemos utilizar tcpdump para comprobar lo que hace el script. +``` +tcpdump -i lo -w output.cap +``` + +Luego comprobarlo con wireshark o con tshark: +``` +tshark -r output.cap 2>/dev/null +``` + +Puedes filtrar con -Y. Por ejemplo: +``` +tshark -r output.cap -Y "http" 2>/dev/null +``` + +Puedes leerlo en formato json: +``` +tshark -r output.cap -Y "http" -Tjson 2>/dev/null +``` + +Puedes filtrar por el campo tcp.payload. Se debe convertir el hexadecimal para poder leerlo en claro: +``` +tshark -r output.cap -Y "http" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r +``` + +A esto, filtras las líneas GET y a estas por el segundo argumento para obtener todas las rutas que prueba el script: +``` +tshark -r output.cap -Y "http" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r | grep "GET" | awk '{print $2}' +``` + +Con un sort con rutas únicas y el wc podemos enumerar todas las rutas que prueba el script +``` +tshark -r output.cap -Y "http" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r | grep "GET" | awk '{print $2}' | sort -u | wc -l +``` + +Salen 1074 o_O + +## 1.4. - scripts propios en Lua para nmap +Nmap permite a los profesionales de seguridad personalizar y extender sus capacidades mediante la creación de scripts personalizados en el lenguaje de programación Lua. Lua es un lenguaje de scripting simple, flexible y poderoso que es fácil de aprender y de usar para cualquier persona interesada en crear scripts personalizados para Nmap. + +Para utilizar Lua como un script personalizado en Nmap, es necesario tener conocimientos básicos del lenguaje de programación Lua y comprender la estructura básica que debe tener el script. La estructura básica de un script de Lua en Nmap incluye la definición de una tabla, que contiene diferentes campos y valores que describen la funcionalidad del script. + +Los campos más comunes que se definen en la tabla de un script de Lua en Nmap incluyen: + - **description**: Este campo se utiliza para proporcionar una descripción corta del script y su funcionalidad. + - **categories**: Este campo se utiliza para especificar las categorías a las que pertenece el script, como descubrimiento, explotación, enumeración, etc. + - **author**: Este campo se utiliza para identificar al autor del script. + - **license**: Este campo se utiliza para especificar los términos de la licencia bajo la cual se distribuye el script. + - **dependencies**: Este campo se utiliza para especificar cualquier dependencia de biblioteca o software que requiera el script para funcionar correctamente. + - **actions**: Este campo se utiliza para definir la funcionalidad específica del script, como la realización de un escaneo de puertos, la detección de vulnerabilidades, etc. + +Una vez que se ha creado un script de Lua personalizado en Nmap, se puede invocar utilizando el parámetro –script y el nombre del archivo del script. Con la creación de scripts personalizados en Lua, es posible personalizar aún más las capacidades de Nmap y obtener información valiosa sobre los sistemas y servicios en la red. + +[Script sencillo](example.nse) en lua para ver puertos abiertos + +Para ejecutarlo: +``` +nmap --script /home/v/Documents/projectes/lab/example.nse -p22,80 192.168.1.1 +``` + +## 1.5 Alternativas para la enumeración de puertos usando descriptores de archivo + +La enumeración de puertos es una tarea crucial en las pruebas de penetración y seguridad de redes. Tal y como hemos visto, Nmap es una herramienta de línea de comandos ampliamente utilizada para esta tarea, pero existen alternativas para realizar la enumeración de puertos de manera efectiva sin utilizar herramientas externas. + +Una alternativa a la enumeración de puertos utilizando herramientas externas es aprovechar el poder de los descriptores de archivo en sistemas Unix. Los descriptores de archivo son una forma de acceder y manipular archivos y dispositivos en sistemas Unix. En particular, la utilización de /dev/tcp permite la conexión a un host y puerto específicos como si se tratara de un archivo en el sistema. + +Para realizar la enumeración de puertos utilizando /dev/tcp en Bash, es posible crear un script que realice una conexión a cada puerto de interés y compruebe si el puerto está abierto o cerrado en función de si se puede enviar o recibir datos. Una forma de hacer esto es mediante el uso de comandos como “echo” o “cat“, aplicando redireccionamientos al /dev/tcp. El código de estado devuelto por el comando se puede utilizar para determinar si el puerto está abierto o cerrado. + +Aunque esta alternativa puede ser menos precisa y más lenta que el uso de herramientas especializadas como Nmap, es una opción interesante y viable para aquellos que buscan una solución rápida y sencilla para la enumeración de puertos en sistemas Unix. Además, este enfoque puede proporcionar una mejor comprensión de cómo funcionan los descriptores de archivo en los sistemas Unix y cómo se pueden utilizar para realizar tareas de red. + +[Script en bash](portScan.sh) para descubrir puertos abiertos. + +## 1.6 Descubrimiento de equipos en la red local (ARP e ICMP) y Tips + +El descubrimiento de equipos en la red local es una tarea fundamental en la gestión de redes y en las pruebas de seguridad. Existen diferentes herramientas y técnicas para realizar esta tarea, que van desde el escaneo de puertos hasta el análisis de tráfico de red. + +En esta clase, nos enfocaremos en las técnicas de descubrimiento de equipos basadas en los protocolos ARP e ICMP. Además, se presentarán diferentes herramientas que pueden ser útiles para esta tarea, como Nmap, netdiscover, arp-scan y masscan. + +Entre los modos de escaneo que se explican en la clase, se encuentra el uso del parámetro ‘-sn‘ de Nmap, que permite realizar un escaneo de hosts sin realizar el escaneo de puertos. También se presentan las herramientas netdiscover, arp-scan y masscan, que utilizan el protocolo ARP para descubrir hosts en la red. + +Cada herramienta tiene sus propias ventajas y limitaciones. Por ejemplo, netdiscover es una herramienta simple y fácil de usar, pero puede ser menos precisa que arp-scan o masscan. Por otro lado, arp-scan y masscan son herramientas más potentes, capaces de descubrir hosts más rápido y en redes más grandes, pero también son más complejas y pueden requerir más recursos. + +En definitiva, el descubrimiento de equipos en la red local es una tarea fundamental para cualquier administrador de redes o profesional de seguridad de la información. Con las técnicas y herramientas adecuadas, es posible realizar esta tarea de manera efectiva y eficiente. + +Ejemplos de comandos para detectas IPs activas en la red local: +``` +nmap -sn 192.168.1.1/24 +``` + +``` +netdiscover -i wlo1 +``` + +``` +arp-scan -I wlo1 --localnet +``` + +``` +for i in {1..255}; do timeout 1 bash -c "ping -c 1 192.168.1.$i" &>/dev/null && echo "IP activa: 192.168.1.$i"; done + +``` + +[Script bash](./hostDiscovery.sh) para descubrir IPs activas y sus puertos en la red local + +masscan es una herramienta de escaneo de puertos de alto rendimiento que puede escanear millones de IPs en un minuto. + +``` +masscan -p1-65535 -Pn 192.168.1.1 --rate 5000 +``` + + +## 1.7 Fijando un target en HackerOne + +En esta clase exploraremos la plataforma HackerOne, una plataforma de BugBounty que permite a empresas y organizaciones que desean ser auditadas, “conectar” con hackers éticos para encontrar vulnerabilidades de seguridad en sus sistemas y aplicaciones de forma legal. + +Antes de iniciar una auditoría en esta plataforma, es fundamental fijar un objetivo claro, además de definir el alcance de la auditoría. Esto se logra a través del concepto de “Scope“, que establece los límites de la auditoría, así como los sistemas y aplicaciones que pueden ser auditados. + +En esta clase, se explicará cómo validar un objetivo en HackerOne y cómo definir el alcance de la auditoría a través del Scope. Además, se discutirán los impedimentos y limitaciones que se pueden encontrar durante la fase de auditoría, evitando así posibles malentendidos durante el proceso de reporte de vulnerabilidades. + +- Enlace a la web de HackerOne: https://www.hackerone.com/ + +## 1.8 Descubrimiento de correos electrónicos + + + +En esta clase exploraremos la importancia de la recolección de información en la fase de OSINT durante una auditoría, en particular, la recolección de correos electrónicos. Los correos electrónicos pueden ser una valiosa fuente de información para la vulneración de posibles paneles de autenticación y la realización de campañas de Phishing. + +Durante la clase se presentan diferentes herramientas online que pueden ayudar en este proceso. Por ejemplo, se explica cómo usar ‘hunter.io‘ para buscar correos electrónicos asociados a un dominio en particular. También se muestra cómo utilizar ‘intelx.io‘ para buscar información relacionada con direcciones de correo electrónico, nombres de usuarios y otros detalles. + +Otra herramienta interesante que se presenta en la clase es ‘phonebook.cz‘, que permite buscar correos electrónicos y otros datos de contacto relacionados con empresas de todo el mundo. + +Finalmente, se habla sobre el plugin ‘Clearbit Connect‘ para Gmail, que permite obtener información de contacto en tiempo real y añadirla directamente a los contactos de Gmail. + +A continuación, se proporcionan los enlaces a las herramientas online vistas en esta clase: + +- Hunter: https://hunter.io/ +- Intelligence X: https://intelx.io/ +- Phonebook.cz: https://phonebook.cz/ +- Clearbit Connect: Chrome Extension + +En conclusión, la recolección de correos electrónicos es una tarea importante en la fase inicial de OSINT y puede proporcionar información valiosa. Sin embargo, es importante tener en cuenta que la recolección de correos electrónicos por sí sola no permite identificar directamente posibles vulnerabilidades en una red o sistema. + +## 1.9 Reconocimiento de imágenes + +En esta clase, exploraremos cómo las tecnologías de reconocimiento de imágenes pueden ser utilizadas para obtener información valiosa sobre las personas y los lugares. + +Una de las herramientas en línea que vemos en esta clase es ‘PimEyes‘. PimEyes es una plataforma en línea que utiliza tecnología de reconocimiento facial para buscar imágenes similares en Internet en función de una imagen que se le proporciona como entrada. Esta herramienta puede ser útil en la detección de información personal de una persona, como sus perfiles en redes sociales, direcciones de correo electrónico, números de teléfono, nombres y apellidos, etc. + +El funcionamiento de PimEyes se basa en el análisis de patrones faciales, que son comparados con una base de datos de imágenes en línea para encontrar similitudes. La plataforma también permite buscar imágenes de personas que aparecen en una foto en particular, lo que puede ser útil en la investigación de casos de acoso o en la búsqueda de personas desaparecidas. + +- Enlace a la web de PimEyes: https://pimeyes.com/en + + +## 1.10 Enumeración de subdominios + +IMPORTANTE: Recientemente, hemos notado un problema con la herramienta “sublist3r” del repositorio que presentamos en el vídeo: no está mostrando los subdominios del dominio que introduces durante el proceso de reconocimiento. + +Aunque es probable que este error se corrija pronto, para quienes necesiten usar la herramienta sin inconvenientes en este momento, os sugiero descargarla desde este repositorio alternativo: + +- https://github.com/huntergregal/Sublist3r + + +La enumeración de subdominios es una de las fases cruciales en la seguridad informática para identificar los subdominios asociados a un dominio principal. + +Los subdominios son parte de un dominio más grande y a menudo están configurados para apuntar a diferentes recursos de la red, como servidores web, servidores de correo electrónico, sistemas de bases de datos, sistemas de gestión de contenido, entre otros. + +Al identificar los subdominios vinculados a un dominio principal, un atacante podría obtener información valiosa para cada uno de estos, lo que le podría llevar a encontrar vectores de ataque potenciales. Por ejemplo, si se identifica un subdominio que apunta a un servidor web vulnerable, el atacante podría utilizar esta información para intentar explotar la vulnerabilidad y acceder al servidor en cuestión. + +Existen diferentes herramientas y técnicas para la enumeración de subdominios, tanto pasivas como activas. Las herramientas pasivas permiten obtener información sobre los subdominios sin enviar ninguna solicitud a los servidores identificados, mientras que las herramientas activas envían solicitudes a los servidores identificados para encontrar subdominios bajo el dominio principal. + +Algunas de las herramientas pasivas más utilizadas para la enumeración de subdominios incluyen la búsqueda en motores de búsqueda como Google, Bing o Yahoo, y la búsqueda en registros DNS públicos como PassiveTotal o Censys. Estas herramientas permiten identificar subdominios asociados con un dominio, aunque no siempre son exhaustivas. Además, existen herramientas como CTFR que utilizan registros de certificados SSL/TLS para encontrar subdominios asociados a un dominio. + +También se pueden utilizar páginas online como Phonebook.cz e Intelx.io, o herramientas como sublist3r, para buscar información relacionada con los dominios, incluyendo subdominios. + +Por otro lado, las herramientas activas para la enumeración de subdominios incluyen herramientas de fuzzing como wfuzz o gobuster. Estas herramientas envían solicitudes a los servidores mediante ataques de fuerza bruta, con el objetivo de encontrar subdominios válidos bajo el dominio principal. + +A continuación, os adjuntamos los enlaces a las herramientas vistas en esta clase: + +- Phonebook (Herramienta pasiva): https://phonebook.cz/ +- Intelx (Herramienta pasiva): https://intelx.io/ +- CTFR (Herramienta pasiva): https://github.com/UnaPibaGeek/ctfr +- Gobuster (Herramienta activa): https://github.com/OJ/gobuster +- Wfuzz (Herramienta activa): https://github.com/xmendez/wfuzz +- Sublist3r (Herramienta pasiva): https://github.com/huntergregal/Sublist3r + +## 1.11 Credenciales y brechas de seguridad + + + diff --git a/Introduccion-hacking-hack4u/example.nse b/Introduccion-hacking-hack4u/tema_2_Reconocimiento/example.nse similarity index 100% rename from Introduccion-hacking-hack4u/example.nse rename to Introduccion-hacking-hack4u/tema_2_Reconocimiento/example.nse diff --git a/Introduccion-hacking-hack4u/hostDiscovery.sh b/Introduccion-hacking-hack4u/tema_2_Reconocimiento/hostDiscovery.sh similarity index 100% rename from Introduccion-hacking-hack4u/hostDiscovery.sh rename to Introduccion-hacking-hack4u/tema_2_Reconocimiento/hostDiscovery.sh diff --git a/Introduccion-hacking-hack4u/portScan.sh b/Introduccion-hacking-hack4u/tema_2_Reconocimiento/portScan.sh similarity index 100% rename from Introduccion-hacking-hack4u/portScan.sh rename to Introduccion-hacking-hack4u/tema_2_Reconocimiento/portScan.sh diff --git a/Introduccion-hacking-hack4u/tema_3_laboratorios/README.md b/Introduccion-hacking-hack4u/tema_3_laboratorios/README.md new file mode 100644 index 0000000..712c5e6 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_3_laboratorios/README.md @@ -0,0 +1 @@ +# TEMA 3 - Configuración de laboratorios locales de Docker diff --git a/Introduccion-hacking-hack4u/tema_4_enumeracion/README.md b/Introduccion-hacking-hack4u/tema_4_enumeracion/README.md new file mode 100644 index 0000000..c7967c0 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_4_enumeracion/README.md @@ -0,0 +1 @@ +# TEMA 4 - Enumeración de servicios comunes y gestores de contenido diff --git a/Introduccion-hacking-hack4u/tema_5_conceptos/README.md b/Introduccion-hacking-hack4u/tema_5_conceptos/README.md new file mode 100644 index 0000000..2acecc0 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_5_conceptos/README.md @@ -0,0 +1 @@ +# TEMA 5 - Conceptos básicos de enumeración y explotación diff --git a/Introduccion-hacking-hack4u/tema_6_owasp/README.md b/Introduccion-hacking-hack4u/tema_6_owasp/README.md new file mode 100644 index 0000000..b4d0820 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_6_owasp/README.md @@ -0,0 +1 @@ +# TEMA 6 - OWASP TOP 10 y vulnerabilidades web