Skip to content

Repository files navigation

whois — IP de quien es

Shell Python License

whois es una colección de scripts en Bash/Shell y Python pensada para automatizar tareas de consulta y reconocimiento de direcciones IP (IPv4 e IPv6): quién es el titular de una IP, a qué rango/AS pertenece, qué puertos y certificados TLS expone, y cómo cruzar esa información con Shodan y nmap.

Es un proyecto de utilidades de línea de comandos orientado a tareas de OSINT, pentesting y análisis de seguridad, mantenido por hackingyseguridad.com (Antonio Taboada — @antonio_taboada).


Tabla de contenidos


¿Qué hace este repositorio?

Todos los scripts giran en torno a una misma pregunta: "esta IP, ¿de quién es?". Para responderla combinan varias fuentes:

  1. whois — consulta a los registros regionales de Internet (RIPE, ARIN, LACNIC, APNIC, AFRINIC) para obtener el titular (descr:), el rango (route:) y el sistema autónomo (AS) de una IP.
  2. host / dig -x — resolución DNS inversa (PTR) para obtener el nombre de host asociado a la IP.
  3. nmap — escaneo de puertos habituales (correo, web, VPN, paneles de administración) y extracción de certificados TLS (--script=ssl-cert), que a menudo revelan el dominio real detrás de la IP.
  4. Shodan — motor de búsqueda de dispositivos conectados a Internet, usado para enriquecer la información de cada host (banners, servicios, vulnerabilidades conocidas, geolocalización).
  5. Favicon hashing (mmh3) — calcula el hash MurmurHash3 del favicon de un sitio web para buscar en Shodan otros servidores que compartan el mismo icono (técnica típica de fingerprinting de infraestructuras).

El repositorio incluye variantes para IP única o listas de IPs en fichero, y para IPv4 o IPv6.


Requisitos previos

Herramienta Función Instalación (Debian/Ubuntu/Kali)
whois Consulta a los registros RIR (RIPE, ARIN, etc.) sudo apt install whois
nmap Escaneo de puertos y extracción de certificados TLS sudo apt install nmap
host / dig Resolución DNS directa e inversa sudo apt install bind9-dnsutils
shodan (CLI) Consultas a la API de Shodan pip3 install shodan
python3 + mmh3, requests Ejecutar favicon.py pip3 install -r requirements.txt

Además, para usar el CLI de Shodan necesitas una API key gratuita o de pago obtenida en shodan.io e inicializarla una vez con:

shodan init TU_API_KEY

Instalación

# Clonar el repositorio
git clone https://github.com/hackingyseguridad/whois.git
cd whois

# Instalar dependencias del sistema y de shodan
sh instalar.sh

# (Opcional) Instalar dependencias de Python para favicon.py
pip3 install -r requirements.txt

# Dar permisos de ejecución si instalar.sh no lo ha hecho ya
chmod +x *.sh

Estructura del repositorio

whois/
├── LICENSE              # Licencia GPL-3.0
├── README.md            # Este documento
├── instalar.sh           # Instala nmap, shodan CLI y da permisos a los scripts
├── requirements.txt       # Dependencias Python (mmh3, requests) para favicon.py
│
├── who.sh                # Whois + nmap + Shodan de UNA ip (IPv4)
├── who2.sh                # Consulta rápida a Shodan de una IP
├── who6.sh                # Whois + nmap de UNA ip (IPv6)
├── whois.sh               # Whois + nmap MASIVO desde ip.txt (IPv4)
├── whois6.sh               # Whois + nmap MASIVO desde ipv6.txt (IPv6)
│
├── rango.sh                # Escaneo de puertos sobre un rango CIDR
├── iprango.sh               # Obtiene el rango (route:) de una IP vía whois
│
├── depura.sh                 # Limpia/deduplica IPs extraídas de resultado.txt
├── shodan.sh                  # Consulta Shodan para cada IP de ip.txt
├── favicon.py                  # Hash de favicon (mmh3) para buscar en Shodan
│
├── ip.txt                       # Lista de IPs de ejemplo/trabajo (IPv4)
├── dorks.txt                     # Google/Shodan dorks
├── buscadores.txt                 # Listado de buscadores/motores OSINT
├── busquedas.txt                   # Cadenas o plantillas de búsqueda
├── shodan.io                        # Notas/enlaces relacionados con Shodan
└── shodan.md                         # Documentación adicional sobre uso de Shodan

Tabla resumen de scripts

Script Lenguaje Entrada Objetivo IP Uso típico Requiere fichero
who.sh Bash 1 IP (argumento $1) IPv4 Investigar una IP puntual: whois + PTR + nmap + certificado TLS + Shodan No
who2.sh Bash 1 IP (argumento $1) IPv4/IPv6 Consulta rápida y directa a Shodan de una IP No
who6.sh Bash/sh 1 IP (argumento $1) IPv6 Igual que who.sh pero adaptado a IPv6 (usa nmap -6) No
whois.sh Bash Lista de IPs IPv4 Repetir la investigación de who.sh para todas las IPs de ip.txt Sí — ip.txt
whois6.sh Bash/sh Lista de IPs IPv6 Igual que whois.sh pero para IPv6 Sí — ipv6.txt
rango.sh Bash Rango CIDR (argumento $1) IPv4 Escanear puertos de correo/web de todo un rango/subred No
iprango.sh Bash 1 IP (argumento $1) IPv4/IPv6 Averiguar el rango de red (route:) al que pertenece una IP No
depura.sh Bash resultado.txt (salida de nmap) IPv4 Extraer y deduplicar IPs detectadas en escaneos previos Sí — resultado.txt
shodan.sh Bash Lista de IPs IPv4/IPv6 Consultar Shodan (shodan host) para cada IP de ip.txt Sí — ip.txt
favicon.py Python 3 URL de un favicon (argumento) N/A (web) Calcular el hash del favicon y buscar sitios gemelos en Shodan No
instalar.sh Bash — — Instalar nmap, shodan (pip) y dar permisos a todos los scripts No

Detalle de cada script

who.sh — Consulta whois de una única IP (IPv4)

Script principal para analizar una sola IP. Encadena cuatro fuentes de información en una sola ejecución.

sh who.sh 8.8.8.8

Qué hace internamente:

Paso Comando Propósito
1 host $1 / dig -x $1 +short Resolución DNS inversa (PTR)
2 whois $1 | grep descr: Titular / descripción registrada de la IP
3 nmap ... --script=ssl-cert -oG resultado.txt Escanea puertos de correo/web comunes y extrae el certificado TLS (revela el dominio real)
4 nmap -Pn -sT -p0 --script=whois-ip Consulta whois nativa vía script de nmap
5 shodan host $1 Información enriquecida desde Shodan (servicios, banners, geolocalización)

Los puertos analizados incluyen: 110, 993, 995, 143, 443, 587, 465, 5061, 8000, 7443, 8443, 8080, 8888, 10443 (correo IMAP/POP3/SMTP seguro y paneles web/administración habituales).


who2.sh — Consulta rápida en Shodan

El script más simple del repositorio: una única línea que delega toda la consulta en Shodan.

sh who2.sh 8.8.8.8
shodan host $1

Útil cuando solo necesitas el resumen que ofrece Shodan sin pasar por whois ni nmap.


who6.sh — Consulta whois de una única IP (IPv6)

Versión de who.sh adaptada a IPv6, usando nmap -6 y un servidor DNS distinto para las resoluciones.

sh who6.sh 2001:4860:4860::8888
Paso Comando Propósito
1 host $1 / dig -x $1 +short PTR sobre la IPv6
2 whois $1 | grep descr: Titular registrado
3 nmap -6 ... --script=ssl-cert -oG resultado.txt Puertos + certificado TLS sobre IPv6
4 nmap -6 -Pn -sT -p0 --script=whois-ip Whois vía script nmap sobre IPv6

whois.sh — Consulta whois masiva IPv4 (desde fichero)

Igual que who.sh, pero iterando sobre una lista de IPs contenida en ip.txt (una IP por línea).

# Edita ip.txt con tus IPs, una por línea, y ejecuta:
sh whois.sh

Repite para cada línea de ip.txt: resolución PTR, whois (con sudo), escaneo nmap de puertos con extracción de certificado TLS, y whois vía script nmap. El resultado del escaneo se acumula en resultado.txt.


whois6.sh — Consulta whois masiva IPv6 (desde fichero)

Variante IPv6 de whois.sh. Lee las direcciones desde ipv6.txt (no incluido por defecto, hay que crearlo) y ejecuta el mismo proceso con nmap -6.

sh whois6.sh

rango.sh — Escaneo de un rango CIDR

Permite lanzar el escaneo de puertos directamente sobre un rango de red completo en formato CIDR, en lugar de una IP individual.

sh rango.sh 192.168.1.0/24

Escanea los mismos puertos de correo/web que who.sh (110,993,995,143,443,587,465,8000,7443,8443,8080,8888,10443) con --script=ssl-cert y filtra las líneas con información de DNS: (nombres de host extraídos del certificado).


iprango.sh — Obtener el rango (route:) de una IP

En lugar de buscar el titular (descr:), este script consulta a whois el bloque de red (route:) al que pertenece la IP indicada — útil para saber qué rango completo escanear después con rango.sh.

sh iprango.sh 8.8.8.8
whois $1 $2 |grep route:

depura.sh — Limpieza y deduplicado de IPs

Script de utilidad para procesar la salida de los escaneos nmap (resultado.txt, generado por who.sh, whois.sh, etc.). Extrae únicamente las direcciones IPv4 válidas mediante expresión regular, elimina duplicados y genera un fichero ip.txt limpio listo para reutilizar en otro script (por ejemplo shodan.sh).

sh depura.sh

Flujo interno:

  1. grep -Eo "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" resultado.txt > resultado1.txt — extrae solo IPs con formato válido.
  2. awk '!visited[$0]++' resultado1.txt > resultado2.txt — elimina líneas duplicadas conservando el orden.
  3. cp resultado2.txt ip.txt — sobrescribe ip.txt con el resultado limpio, listo para usarse en whois.sh o shodan.sh.

shodan.sh — Consulta masiva en Shodan

Recorre el fichero ip.txt y ejecuta shodan host para cada IP, mostrando la información disponible en Shodan de todas ellas de forma secuencial.

sh shodan.sh
for n in `cat ip.txt`; do echo $n; shodan host $n; done

Requiere tener el CLI de Shodan instalado e inicializado (shodan init APIKEY).


favicon.py — Huella de favicon para Shodan

Script en Python 3 independiente del resto (no usa whois ni nmap). Descarga el favicon de una URL, calcula su hash MurmurHash3 (mmh3) — el mismo algoritmo que usa Shodan internamente — y genera un enlace directo de búsqueda en Shodan (http.favicon.hash:) para encontrar otros servidores que usen el mismo icono, una técnica clásica de reconocimiento de infraestructura (p. ej. detectar paneles de phishing clonados o servidores C2 que reutilizan plantillas).

python3 favicon.py http://hackingyseguridad.com/favicon.ico

Salida esperada:

[!] http.favicon.hash:116323821
[*] Ver sitios con:
> https://www.shodan.io/search?query=http.favicon.hash%3A116323821
Dependencia Motivo
mmh3 Cálculo del hash MurmurHash3 del favicon (formato que espera Shodan)
requests Descarga del contenido del favicon vía HTTP/HTTPS
codecs Codificación en base64 antes de aplicar el hash

instalar.sh — Instalación de dependencias

Script de preparación del entorno. Instala nmap, el cliente de línea de comandos de Shodan (pip3 install shodan) y otorga permisos de ejecución a todos los ficheros del repositorio.

sh instalar.sh
apt-get install nmap
pip3 install shodan
chmod 777 *

El script usa chmod 777, que otorga permisos totales a todos los usuarios del sistema. En entornos multiusuario es recomendable sustituirlo por chmod +x *.sh para dar solo permiso de ejecución.


Ficheros de datos y diccionarios

Fichero Contenido
ip.txt Lista de trabajo de IPs (IPv4), leída por whois.sh y shodan.sh, y regenerada por depura.sh
dorks.txt Conjunto de dorks (cadenas de búsqueda avanzada) para motores como Google o Shodan
buscadores.txt Listado de motores de búsqueda / fuentes OSINT de referencia
busquedas.txt Plantillas o cadenas de búsqueda auxiliares
shodan.io Notas y enlaces relacionados con el uso de Shodan
shodan.md Documentación adicional sobre consultas y filtros de Shodan

Flujo de trabajo recomendado

  1. Preparar el entorno: sh instalar.sh y, si vas a usar favicon.py, pip3 install -r requirements.txt.
  2. Investigar una IP puntual con who.sh (IPv4) o who6.sh (IPv6) para obtener titular, PTR, certificado TLS y datos de Shodan.
  3. Si quieres conocer el rango completo al que pertenece esa IP, usa iprango.sh y después escanea ese rango con rango.sh.
  4. Vuelca las IPs objetivo en ip.txt (una por línea) y lanza whois.sh para procesarlas todas en bloque; la salida se guarda en resultado.txt.
  5. Ejecuta depura.sh para limpiar y deduplicar las IPs detectadas en resultado.txt, regenerando ip.txt.
  6. Enriquece el listado depurado con shodan.sh, que consulta Shodan para cada IP.
  7. Si detectas un sitio sospechoso y quieres encontrar infraestructura relacionada, usa favicon.py sobre su favicon para localizar sitios gemelos en Shodan.

Ejemplo de flujo completo

# 1. Instalar dependencias
sh instalar.sh

# 2. Analizar una IP concreta
sh who.sh 203.0.113.10

# 3. Averiguar su rango de red
sh iprango.sh 203.0.113.10
# -> route: 203.0.113.0/24

# 4. Escanear todo el rango
sh rango.sh 203.0.113.0/24

# 5. Depurar y deduplicar las IPs detectadas en resultado.txt
sh depura.sh

# 6. Consultar Shodan para cada IP depurada
sh shodan.sh

# 7. Buscar servidores con el mismo favicon
python3 favicon.py https://203.0.113.10/favicon.ico


http://www.hackingyseguridad.com - @antonio_taboada @antonio_taboada

About

IP de quien es

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages