Colección de scripts en Bash/POSIX sh, PowerShell y NSE para descubrimiento de hosts, escaneo de puertos, detección de firewalls y análisis de vulnerabilidades
- Descripción general
- Requisitos
- Instalación
- Ficheros de entrada/salida
- Tabla resumen general
- Detalle por categoría
- 1. Descubrimiento de hosts (alive/ping)
- 2. Escaneo de puertos TCP/UDP
- 3. IPv6
- 4. Firewalls, IDS y evasión
- 5. Escaneo web y servicios específicos
- 6. Detección de proxies abiertos
- 7. Vulnerabilidades y CVE
- 8. Información de IP / ASN / geolocalización
- 9. Traceroute y rutas
- 10. Sistema, monitorización y procesos en local
- 11. Utilidades varias
- Tablas de puertos de referencia
- Documentación adicional
- Licencia
- Autor
scan es una suite de subrutinas independientes (no un framework monolítico) pensadas para combinarse en flujos de auditoría de red: descubrimiento de hosts vivos → escaneo de puertos → identificación de servicio/SO → detección de vulnerabilidades → informe. Cada script hace una sola cosa y puede invocarse suelto desde la línea de comandos o encadenarse con otros mediante los ficheros de texto (ip.txt, resultado.txt, etc.) que actúan de "pegamento" entre pasos.
La mayoría de scripts están escritos para Kali Linux, con dependencia de nmap, masscan, whois, traceroute/mtr y utilidades estándar de red.
| Herramienta | Uso | Instalación (Debian/Kali) |
|---|---|---|
nmap |
Motor principal de escaneo de puertos, SO y NSE | apt-get install nmap |
masscan |
Escaneo masivo de rango de IP a alta velocidad | apt-get install masscan |
pwncat |
Escaneo de puertos alternativo (scan) |
apt-get install pwncat |
whois |
Consultas de rangos BGP/AS (bgp2ip, ip2bgp) |
apt-get install whois |
traceroute / mtr |
Trazado de rutas | apt-get install traceroute mtr |
ndisc6 |
Descubrimiento IPv6 (Neighbor Discovery) | apt-get install ndisc6 |
curl / wget |
Peticiones HTTP y descarga de IP pública | preinstalado en Kali |
jq |
Parseo JSON (vuln2.sh, cve-db.sh) |
apt-get install jq |
sqlite3 |
Base de datos local de CVE (cve-db.sh) |
apt-get install sqlite3 |
nrich |
Consulta de vulnerabilidades vía Shodan (vuln2.sh) |
ver gitlab.com/shodan-public/nrich |
asciidoc (a2x) |
Conversión de informes txt a PDF (txt2pdf.sh) |
apt-get install asciidoc |
| PowerShell 5.0+ | Solo para scan.ps1 (Windows) |
incluido en Windows / pwsh en Linux |
Algunos scripts requieren permisos de superusuario (
sudo) para escaneos SYN/OS fingerprinting (-sS,-O).
git clone https://github.com/hackingyseguridad/scan
cd scan
chmod +x instalar.sh
sudo bash instalar.shinstalar.sh instala las dependencias (nmap, masscan, traceroute, whois, pwncat, libpcap-dev), descarga los motores NSE de vulnerabilidades (nmap-vulners, scipag/vulscan, freevulnsearch) y copia las utilidades sueltas (scan, bgp2ip, ip2bgp, ip2pais, miip, miip2, tracebgp, scantcp) a /sbin/ para poder invocarlas como comandos del sistema.
Instalación rápida de un único script (sin clonar el repo):
wget https://raw.githubusercontent.com/hackingyseguridad/scan/master/scan.sh && chmod +x scan.sh && ./scan.shActualizar solo scan.sh a la última versión:
bash update.shLa suite se comunica entre scripts mediante ficheros de texto plano en el directorio de trabajo:
| Fichero | Tipo | Usado por | Contenido esperado |
|---|---|---|---|
ip.txt |
Entrada | scan.sh, alive*.sh, hostalive.sh, http.sh, trace.sh, rastreador.sh, depura.sh, coincideip.sh, scanport.sh |
Lista de IPs/rangos IPv4, una por línea |
ip2.txt |
Entrada | coincideip.sh |
Segunda lista de IPs a comparar con ip.txt |
ipv6.txt |
Entrada | ndisc6.sh, rastreador6.sh |
Lista de direcciones IPv6 |
todas.txt |
Entrada | scanpuerto, scanpuerto1, scanpuertoudp |
Lista de IPs/rangos para escaneo masivo |
dominios.txt |
Entrada | hsts.sh, httpstatus.sh |
Lista de FQDN |
subdominios.txt |
Entrada | resolver.sh |
Lista de subdominios a resolver |
proxy.txt |
Entrada | openproxy.sh, openproxy0.sh, openproxy2.sh |
Lista de IPs de proxies a comprobar |
resultado.txt / resultado1.txt / resultado2.txt |
Salida/intermedio | scan.sh, depura.sh, rastreador.sh, sistema.sh, so.sh, firewall2.sh, txt2pdf.sh |
Salida -oG/-oN de nmap y ficheros depurados de IPs |
| Categoría | Nº scripts | Scripts principales |
|---|---|---|
| Descubrimiento de hosts | 9 | alive.sh, hostalive.sh, pingscan.sh |
| Escaneo de puertos TCP/UDP | 17 | scan.sh, scanpuerto, scantcp2 |
| IPv6 | 4 | scanipv6.sh, mac2linklocal.sh |
| Firewalls / IDS / evasión | 4 | firewall.sh, tcpwrapped.sh |
| Escaneo web y servicios | 7 | iis.sh, nodejs.sh, hsts.sh |
| Proxies abiertos | 4 | openproxy.sh, proxyopen.sh |
| Vulnerabilidades / CVE | 7 | vuln.sh, vscan.sh, cve.sh |
| Info IP / ASN / GeoIP | 8 | mi-ip.sh, ip2bgp, bgp2ip |
| Traceroute / rutas | 6 | trace.sh, rastreador.sh, tracebgp |
| Sistema / monitorización local | 12 | local.sh, sistema.sh, proceso.sh |
| Utilidades varias | 6 | depura.sh, txt2pdf.sh, instalar.sh |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
alive.sh |
Barrido rápido de hosts vivos por ping usando masscan | sh alive.sh (lee ip.txt) |
masscan |
alive1.sh |
Envío masivo de ICMP Echo Request con nmap a alta velocidad | sh alive1.sh (lee ip.txt) |
nmap --min-rate 300 |
alive2.sh |
Ping scan estándar de nmap sin resolución de nombres | sh alive2.sh (lee ip.txt) |
nmap -sn |
alive3.sh |
Barrido de ping secuencial sobre una red /24 fija (192.168.1.0/24) |
bash alive3.sh |
ping nativo |
hostalive.sh |
Comprueba uno a uno "up"/"down" cada IP de ip.txt con ping |
bash hostalive.sh |
ping nativo |
pingscan.sh |
Barrido de ping sobre los últimos 254 hosts de una subred /24 indicada | sh pingscan.sh 192.168.1 |
ping nativo |
icmp_t8_c0.sh |
Prueba de respuesta a ICMP Echo Request (type 8 code 0) puntual | sh icmp_t8_c0.sh <IP> |
nping + nmap -PE |
ndisc6.sh |
Prueba de respuesta a Neighbor Discovery (ICMPv6 type 135) en ipv6.txt |
sh ndisc6.sh |
ndisc6 |
coincideip.sh |
Calcula la intersección entre ip.txt e ip2.txt (IPs vivas en ambos escaneos) |
sh coincideip.sh |
POSIX sh puro |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
scan.sh |
Script principal de la suite: escaneo de puertos con nmap sobre ip.txt, genera resultado.txt |
./scan.sh |
nmap |
scan2.sh |
Recorre los 65535 puertos invocando scanpuerto puerto a puerto |
bash scan2.sh |
wrapper de scanpuerto |
scan3.sh |
Escaneo SYN+versión rápido al puerto 80, filtra solo abiertos | sh scan3.sh <IP> |
nmap -sS -sV -T5 |
scan (sin ext.) |
Escaneo de todos los puertos (1-65535) con banner grabbing | ./scan <IP> |
pwncat |
scan.ps1 |
Escáner de puertos multihilo para rangos IPv4 privados con informe HTML, compatible PowerShell 5 | ./scan.ps1 (Windows) |
PowerShell runspaces |
scanport.sh |
Escanea el listado ip.txt con nmap (uso genérico) |
bash scanport.sh |
nmap |
scanpuerto |
Escaneo rápido masivo con masscan sobre todas.txt (hasta ~100.000 hosts/hora, ~50% fiabilidad) |
sh scanpuerto |
masscan |
scanpuerto1 |
Igual que scanpuerto pero usando zmap como motor |
sh scanpuerto1 |
zmap |
scanpuerto2 |
Escaneo rápido de puertos/servicios sobre IP, rango o FQDN | sh scanpuerto2 <objetivo> |
nmap |
scanpuertoipv6 |
Escaneo masivo de un puerto concreto sobre ipv6.txt (masscan + nmap) |
sh scanpuertoipv6 <puerto> |
masscan + nmap |
scanpuertoudp |
Escaneo UDP de un puerto concreto sobre todas.txt |
sh scanpuertoudp <puerto> |
nmap -sU |
scantcp |
Escáner TCP simple de todos los puertos con Netcat | ./scantcp <IP> |
nc -z -r |
scantcp2 |
Escáner TCP de los 65535 puertos usando /dev/tcp de Bash en paralelo |
bash scantcp2 <IP> |
Bash puro (sin dependencias) |
telnetscan |
Escaneo de puertos TCP mediante conexiones telnet secuenciales | bash telnetscan <IP> |
telnet |
telnetscan.sh |
Variante que prueba el puerto 80 en un rango /24 fijo vía telnet | bash telnetscan.sh |
telnet |
ncatscan.bat |
Escáner de puertos secuencial para MS-DOS/Windows con Ncat | ncatscan.bat <IP> |
ncat |
scantelnet.bat / telnetscan.bat |
Escaneo de puertos vía telnet.exe para entornos Windows/MS-DOS | telnetscan.bat <IP> |
telnet.exe + netstat |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
scanipv6.sh |
Escaneo rápido del puerto 22 sobre un bloque IPv6 global (2a02:9000::/23) |
sh scanipv6.sh |
nmap -6 --min-rate 9999 |
scanipv6local.sh |
Descubre vecinos IPv6 link-local en la LAN (ping multicast ff02::1) y escanea puertos |
sh scanipv6local.sh |
ping6 + nmap -6 |
mac2linklocal.sh |
Calcula la dirección IPv6 link-local (fe80::/10) a partir de una MAC |
sh mac2linklocal.sh 00:11:22:aa:bb:cc |
cálculo EUI-64 en Bash |
rastreador6.sh |
Traceroute masivo sobre ipv6.txt, extrae IPv6 de las rutas encontradas |
sh rastreador6.sh |
traceroute -6 |
Ver también
ipv6.md: guía de referencia sobre direccionamiento IPv4 vs IPv6, tipos de direcciones (unicast, multicast, anycast, link-local) y cálculo de prefijos.
| Script | Descripción | Uso | Motor |
|---|---|---|---|
firewall.sh |
Detecta puertos filtrados por ACL/firewall sobre un objetivo puntual (unfiltered = filtrado con RST) |
./firewall.sh <objetivo> |
nmap -F --open |
firewall2.sh |
Igual que firewall.sh pero de forma masiva sobre ip.txt, con scripts NSE firewall-bypass, http-waf-fingerprint, http-waf-detect |
bash firewall2.sh |
nmap -sACV -O |
tcpwrapped.sh |
Escaneo agresivo completo (-A) para confirmar respuestas tcpwrapped |
sh tcpwrapped.sh <IP> |
nmap -A |
ocultaversionSO.sh |
Referencia informativa de valores TTL por sistema operativo para dificultar el fingerprinting | sh ocultaversionSO.sh |
informativo (no escanea) |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
iis.sh |
Escáner rápido de vulnerabilidades/fingerprint en servidores IIS/ASP.NET sobre un rango CIDR | ./iis.sh 192.168.0.0/24 |
nmap NSE http-server-header, http-headers, http-title |
nodejs.sh |
Detecta servicios Node.js expuestos en puertos habituales (3000, 8080, 1337…) | sh nodejs.sh <objetivo> |
nmap NSE http-headers, http-devframework |
hsts.sh |
Comprueba si la cabecera HSTS (Strict-Transport-Security) está activa en dominios.txt |
bash hsts.sh |
curl |
http.sh |
Chequea la respuesta HTTP/2 de cada host en ip.txt (requiere MyRootCA.crt) |
./http.sh |
curl --http2-prior-knowledge |
httpstatus.sh |
Consulta el código de estado HTTP de cada FQDN en dominios.txt |
bash httpstatus.sh |
curl -I |
scanwebserver.sh |
Escaneo de banners sobre un listado extenso de puertos web habituales (80, 8080, 8443, paneles cPanel/Plesk…) | bash scanwebserver.sh <objetivo> |
nmap NSE banner |
ip2dominio.sh |
Extrae el/los dominio(s) del certificado TLS (SAN) de una IP o rango | sh ip2dominio.sh <IP/rango> |
nmap NSE ssl-cert |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
openproxy.sh |
Comprueba proxies HTTP abiertos en el puerto 8081 de proxy.txt, con cabeceras de navegador simuladas |
bash openproxy.sh |
curl -x http:// |
openproxy0.sh |
Igual, probando HTTP/HTTPS/SOCKS4/SOCKS5 en el puerto 1080 | bash openproxy0.sh |
curl -x (multi-protocolo) |
openproxy2.sh |
Igual que openproxy0.sh pero forzando SOCKS5 con cabeceras completas de navegador |
bash openproxy2.sh |
curl -x socks5:// |
proxyopen.sh |
Escaneo de proxies HTTP/SOCKS abiertos sobre un objetivo con NSE | sh proxyopen.sh <objetivo> |
nmap NSE http-open-proxy, socks-open-proxy |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
vuln.sh |
Menú/banner de escaneo de puertos, servicios y vulnerabilidades conocidas sobre un objetivo | sh vuln.sh <objetivo> |
nmap NSE |
vuln2.sh |
Consulta vulnerabilidades conocidas por IP contra la base de datos de Shodan/nrich | bash vuln2.sh (lee ip.txt) |
nrich + jq |
vscan.sh |
Ejecuta un script NSE concreto contra una IP/puerto y resalta hallazgos VULNERABLE |
sh vscan.sh <script_nse> <IP> [puerto] |
nmap --script |
cve.sh |
Instala/actualiza los motores NSE de CVE (nmap-vulners, referencias a vulscan, CVEScannerV2) |
sh cve.sh |
git + nmap NSE |
cve-db.sh |
Descarga el feed JSON de CVE recientes del NVD y lo importa a una base de datos SQLite local | sh cve-db.sh |
curl + jq + sqlite3 |
freevulnsearch.nse |
Script NSE que consulta vulnerabilidades conocidas por CPE contra una API externa | usado vía nmap --script freevulnsearch |
NSE (Lua) |
vulners.nse |
Script NSE que imprime CVE conocidas asociadas al CPE detectado por -sV |
nmap -sV --script vulners <objetivo> |
NSE (Lua) |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
mi-ip.sh |
Obtiene la IP pública propia (IPv4 e IPv6) | sh mi-ip.sh |
curl ifconfig.io |
miip |
Muestra IP pública, interfaces locales y gateway | ./miip |
wget + ifconfig + route |
miip2 |
Banner ASCII de bienvenida de la suite (sin lógica de red) | ./miip2 |
informativo |
miip3 |
Lista las interfaces de red disponibles para nmap | ./miip3 |
nmap -iflist |
miip4 |
Muestra dispositivos de red, hora NTP e IP pública | ./miip4 |
nmcli + curl |
ip2bgp |
Consulta el AS (Sistema Autónomo) al que pertenece una IP pública | ./ip2bgp <IP> |
ip-api.com |
ip2pais |
Consulta el país de origen de una IP pública | ./ip2pais <IP> |
ip-api.com |
bgp2ip |
Obtiene los rangos IPv4/IPv6 anunciados por un número de AS | ./bgp2ip <AS> |
whois.radb.net |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
trace |
Traceroute con salida extendida y nombres de host | sh trace <IP> |
mtr -e -b -rw |
trace.sh |
Traceroute sobre todas las IPs de ip.txt |
sh trace.sh |
traceroute -A -n -d |
trace1.sh |
Monitor de traceroute: detecta cambios de ruta respecto a ejecuciones previas (colores) | sh trace1.sh |
traceroute + diff |
trace2.sh |
Traceroute masivo sobre ip.txt usando mtr |
sh trace2.sh |
mtr -n -z -rw |
rastreador.sh |
Traceroute sobre ip.txt, extrae y depura las IP de cada salto |
sh rastreador.sh |
traceroute + grep/awk |
tracebgp |
Traceroute mostrando el AS de cada salto de la ruta | bash tracebgp <host> |
traceroute -A |
| Script | Descripción | Uso | Motor |
|---|---|---|---|
local.sh |
Muestra puertos abiertos en el equipo local (sockets, procesos, conexiones) — ejecutable remoto vía curl | bash |
bash local.sh |
ss, netstat, lsof |
scanlocal.sh |
Versión mínima de local.sh: sockets y procesos en escucha |
bash scanlocal.sh |
ss, netstat, lsof |
sistema.sh |
Detección de sistema operativo y versión de un objetivo, con tabla resumen IP → SO | sh sistema.sh <IP> |
nmap -O --osscan-guess |
sistema2.sh |
Variante de sistema.sh (mismo propósito) |
sh sistema2.sh <IP> |
nmap -O |
so.sh |
Detección de SO/kernel combinada con escaneo de puertos rápido (-F) y tabla resumen |
sh so.sh <IP> |
nmap -F -O --osscan-guess |
alarma.sh |
Monitor de conectividad a Internet (ping continuo a 8.8.8.8) con aviso sonoro si cae |
bash alarma.sh |
ping en bucle |
monitor6.sh |
Igual que alarma.sh pero monitorizando conectividad IPv6 (google.es) |
bash monitor6.sh |
ping6 en bucle |
proceso.sh |
Lanza un escaneo TCP en segundo plano y genera informe HTML (informe.htm) |
nohup ./proceso.sh <IP> & |
nmap en background |
proceso1.sh |
Variante POSIX sh de proceso.sh |
nohup sh proceso1.sh <IP> & |
nmap en background |
proceso2.sh |
Igual que proceso.sh pero para escaneo UDP (informe2.htm) |
nohup ./proceso2.sh <IP> & |
nmap -sU en background |
proceso3.sh / proceso4.sh |
Variantes adicionales de escaneo TCP en background (informe3.htm) |
nohup ./proceso3.sh <IP> & |
nmap en background |
reparardisco.sh |
Comprueba bloques defectuosos del disco /dev/sda en modo solo lectura |
sudo bash reparardisco.sh |
badblocks -n (no destructivo) |
| Script/Fichero | Descripción | Uso |
|---|---|---|
depura.sh |
Extrae direcciones IPv4 válidas de resultado.txt y elimina duplicados → resultado2.txt |
sh depura.sh |
resolver.sh |
Resuelve una lista de subdominios (subdominios.txt) a IP mediante host |
bash resolver.sh |
txt2pdf.sh |
Convierte resultado.txt a PDF usando AsciiDoc |
sh txt2pdf.sh |
instalar.sh |
Instalador de dependencias y utilidades de la suite (ver Instalación) | sudo bash instalar.sh |
update.sh |
Descarga la última versión de scan.sh desde GitHub |
bash update.sh |
version |
Fichero con la versión actual de la suite | — |
Listados de puertos usados internamente por varios scripts (scan.sh, scanwebserver.sh, firewall.sh…):
| Categoría | Puertos |
|---|---|
| Top 20 TCP (fast) | 21,22,23,25,53,80,139,389,443,554,445,631,966,1023,1723,1080,3389,5900,8080,8443,10000 |
| Top Telnet | 23,2323,85,70,5001,8000,8023,8083,10000,10001 |
| Top SSH | 22,23,26,80,221,222,443,1022,1024,2020,2022,2211,2222,2223,2233,2332,3001,4022,4118,4433,4444,5000,5001,5222,5555,6666,7102,7777,8022,8080,9000,9022,10000,10001,10022,20000,22022,22222,30022,50000 |
| Top VPN | 500,943,1194,1197,1500,1701,1723,4500,51820 |
| Top Backdoor | 944,4444,1337,31337,8081,12345,54321,60001,47145,27017,11211,20000,32764,49152,65535 |
| Top PostgreSQL/MySQL | 5432,5433,1433,3306,106 |
| Top Citrix | 80,135,443,1494,2598,7229,8008,8080,9095 |
| Top WebSocket | 8080,8443,3000,8089,2222,4444,3001,9090,8765 |
| Top Fortinet | 10443,5411,443,4433,8443,4443,444,9443,7443,1723,6443,8009,10000,55443,9000,8081,8880,8889,9001 |
| Top WEB (extenso) | 80,443,6443,8080,8834,10000,20000,2222,7000,9009,7443,2087,2096,8443,12443,4100,2082,2083,2086,9000,2052,9001,9002,7001,8188,8089,8189,8082,8084,8085,8010,2078,2080,2079,2053,2095,4000,5200,8888,9443,5000,8087,84,85,86,88,10125,9003,7071,8383,7547,3434,10443,3004,81,4567,7081,82,444,1935,3000,9998,4431,4443,83,90,8001,8099,300,591,593,832,981,1010,1311,2400,3128,3333,4243,4711,4612,4993,5104,5108,6543,7396,7474,8014,8042,8069,8118,8123,8172,8222,8243,8280,8281,8333,8500,8880,8983,9043,9060,9080,9091,9200,9800,9981,16000,18091,18092,20720,28017 |
| Top Comunes (general) | 21,22,80,110,111,113,123,137,138,139,143,179,443,445,500,646,1025,1158,1194,1195,1521,1630,1723,3306,3389,3938,4500,5432,5433,5520,5540,5560,5600,5601,5620,5900,8000,8001,8080,9200,10000,11111,1234,12345,20000,22222,27017,30000,33333,40000,44444,50000,55555,65535 |
ipv6.md— Guía de referencia IPv4 vs IPv6: tipos de direcciones, cálculo de prefijos, ejemplos de direccionamiento Dual Stack y enlaces a calculadoras de subredes.