From 7a103f15bcd866b5ad78ccfd57183fcda9d85a8b Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Sun, 4 Feb 2024 15:03:46 +0100 Subject: [PATCH] Add scanner scripts in bash --- Introduccion-hacking-hack4u/README.md | 69 +++++++++++++++----- Introduccion-hacking-hack4u/hostDiscovery.sh | 33 ++++++++++ Introduccion-hacking-hack4u/portScan.sh | 38 +++++++++++ 3 files changed, 125 insertions(+), 15 deletions(-) create mode 100755 Introduccion-hacking-hack4u/hostDiscovery.sh create mode 100755 Introduccion-hacking-hack4u/portScan.sh diff --git a/Introduccion-hacking-hack4u/README.md b/Introduccion-hacking-hack4u/README.md index 6d9b2b0..1410ad1 100644 --- a/Introduccion-hacking-hack4u/README.md +++ b/Introduccion-hacking-hack4u/README.md @@ -18,6 +18,8 @@ Recuerda, - [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 @@ -249,21 +251,58 @@ Una vez que se ha creado un script de Lua personalizado en Nmap, se puede invoca [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 +``` diff --git a/Introduccion-hacking-hack4u/hostDiscovery.sh b/Introduccion-hacking-hack4u/hostDiscovery.sh new file mode 100755 index 0000000..be4e1ea --- /dev/null +++ b/Introduccion-hacking-hack4u/hostDiscovery.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +function ctrl_c(){ + echo -e "\n\n[!] Saliendo...\n" + tput cnorm; exit 0 + +} + +tput civis + +# Ctrl+C +trap ctrl_c SIGINT + +echo -e "\n\n[+] Comprobar IPs mediante ping\n" +# Comprobar IPs +for i in $(seq 1 254); do + timeout 1 bash -c "ping -c 1 192.168.2.$i" &>/dev/null && echo "192.168.2.$i is up" & +done + +wait + +echo -e "\n\n[+] Comprobar puertos mediante tcp\n" + +# Comprobar puertos +for j in $(seq 1 254); do + for port in 21 22 23 25 80 139 443 445 8080; do + timeout 1 bash -c "echo >/dev/tcp/192.168.2.$j/$port" 2>/dev/null && echo "192.168.2.$j:$port is up" & + done +done + +wait + +tput cnorm diff --git a/Introduccion-hacking-hack4u/portScan.sh b/Introduccion-hacking-hack4u/portScan.sh new file mode 100755 index 0000000..de7c3e5 --- /dev/null +++ b/Introduccion-hacking-hack4u/portScan.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +function ctrl_c() { + echo -e "\n\n[!] Saliendo... \n" + tput cnorm; exit 1 +} + +# Ctrl+C +trap ctrl_c SIGINT + +declare -a ports=($(seq 1 65535)) + +function checkPort() { + + (exec 3<> /dev/tcp/$1/$2) 2>/dev/null + + if [ $? -eq 0 ]; then + echo -e "[+] Host $1 - Puerto $2 (abierto)" + fi + + exec 3>&- + exec 3<&- + +} + +tput civis # Ocultar cursor + +if [ $1 ]; then + for port in "${ports[@]}"; do + checkPort $1 $port & + done +else + echo -e "\n[!] Uso: $0 \n" +fi + +wait + +tput cnorm # Mostrar cursor