SPYSE.PY Línea de Comando Motor de Búsqueda Activos en Internet
SPYSE.PY Línea de Comando Motor de Búsqueda Activos en Internet

SPYSE.PY: Línea de Comando para Motor de Búsqueda de Activos en Internet

Wrapper API de Python y cliente de línea de comandos para las herramientas alojadas en spyse.com.

Spyse es un desarrollador de soluciones DAAS (Data-As-A-Service) completas para profesionales de la seguridad en Internet, administradores de sistemas corporativos y remotos, proveedores de certificados de encriptación SSL / TLS, centros de datos y analistas de negocios. Todas las soluciones en línea de Spyse están representadas por servicios temáticos que cuentan con una única plataforma para recopilar, procesar y agregar información.”

spyse.com

Admite las siguientes API:

NOTA

Esta API está actualmente en desarrollo activo.

Captura de spyse.py
Captura de spyse.py

Instalación

Tan solo ejecuta el siguiente comando:

pip3 install spyse.py

Y para actualizar la herramienta:

pip3 install --no-cache-dir spyse.py

Uso del cliente

Argumentos necesarios

  • -target

Argumentos opcionales

  • -param
  • -page
  • -apikey
  • --raw

¿Cuál es el argumento del parámetro?

Spyse te permite buscar en su base de datos IPs, rangos de IPs, nombres de dominio, URLs, etc. El argumento parámetro está destinado a especificar el tipo de tu entrada.

A partir del 6 de julio de 2019, la mayoría de las funciones no requieren que establezcas un parámetro a menos que quieras anular el predeterminado.

Por ejemplo, el parámetro por defecto para --domains-on-ip es ip, sin embargo puedes anular este parámetro y buscar por CIDR, u organización en su lugar. Sólo deberías necesitar hacer esto si recibes un mensaje de error, ya que también se ha añadido la detección de parámetros.

La detección es bastante simple:

# detect whether input is cidr or ip or search query (q)
if "/" in args.target:
  param = "cidr"
elif ":" in args.target:
  param = "q"
else:
  param = "ip"

La detección varía de una función a otra, ya que ciertas funciones requieren diferentes parámetros por defecto.

Lista de parámetros

  • cidr
  • domain
  • ip
  • page
  • url
  • hash
  • q

Utilizar las consultas de búsqueda

Al igual que Shodan, Spyse permite utilizar consultas de búsqueda.

spyse -target "org: Microsoft" --ssl-certificates
  • Búsqueda de subdominios
spyse -target xbox.com --subdomains
  • Búsqueda inversa de IP
spyse -target 52.14.144.171 --domains-on-ip
  • Búsqueda de certificados SSL
spyse -target hotmail.com --ssl-certificates
spyse -target "org: Microsoft" --ssl-certificates
  • Obtención de todos los registros DNS
spyse -target xbox.com --dns-all

Anulación manual del argumento del parámetro

Navegación por varias páginas utilizando tu clave API

export SPYSEKEY="yourkeyhere"
spyse -target xbox.com -apikey $SPYSEKEY -page 2 ---ssl-certificates

Piping a jq y aquatone

Inicialmente, cuando se escribió este cliente, realmente querían que se centrara en la flexibilidad dentro de la línea de comandos, por lo que existe la opción --raw. Desde ahí puedes trabajar con el JSON crudo devuelto por la API.

spyse -target hackerone.com --dns-soa --raw | jq
spyse -target hackerone.com -param domain --subdomains --raw | aquatone

Otras opciones

usage: spyse [-h] [-target TARGET] [-param PARAM] [-page PAGE]
             [-apikey APIKEY] [--raw] [--dns-ptr] [--dns-soa] [--dns-mx]
             [--dns-aaaa] [--dns-ns] [--dns-a] [--dns-txt] [--dns-all]
             [--domains-with-same-ns] [--domains-using-as-mx]
             [--domains-on-ip] [--domains-with-same-mx]
             [--domains-using-as-ns] [--download-dns-aaaa]
             [--download-dns-soa] [--download-dns-ns] [--download-dns-ptr]
             [--download-dns-mx] [--download-dns-a] [--download-dns-txt]
             [--download-dns-all] [--ip-port-lookup]
             [--ip-port-lookup-aggregate] [--ssl-certificates] [--subdomains]

Client for Spyse.com

optional arguments:
  -h, --help            show this help message and exit
  -target TARGET        target
  -param PARAM          parameter to use (ip, domain, cidr, url, hash)
  -page PAGE            page
  -apikey APIKEY        set the api key
  --raw                 show raw json
  --dns-ptr             show dns ptr records
  --dns-soa             show dns soa records
  --dns-mx              show dns mx records
  --dns-aaaa            show dns aaaa records
  --dns-ns              show dns ns records
  --dns-a               show dns a records
  --dns-txt             show dns txt records
  --dns-all             show all dns records
  --domains-with-same-ns
                        show domains with same ns
  --domains-using-as-mx
                        show domains using as mx
  --domains-on-ip       show domains on ip
  --domains-with-same-mx
                        show domains with same mx
  --domains-using-as-ns
                        show domains using as ns
  --download-dns-aaaa   download dns aaaa records
  --download-dns-soa    download dns soa records
  --download-dns-ns     download dns ns records
  --download-dns-ptr    download dns ptr records
  --download-dns-mx     download dns mx records
  --download-dns-a      download dns a records
  --download-dns-txt    download dns txt records
  --download-dns-all    download all dns records
  --ip-port-lookup      show ip port lookup
  --ip-port-lookup-aggregate
                        show ip port lookup aggregate
  --ssl-certificates    show ssl certificates associated with a target
  --subdomains          show subdomains

Usage: spyse -target hackerone.com --subdomains

Uso de la Librería

Sin clave API

from spyse import spyse

s = spyse()
subdomains = s.subdomains("xbox.com", param="domain")

Con clave API

from spyse import spyse

# Using the API key allows us to go through multiple pages of results
s = spyse('API_TOKEN_GOES_HERE')
subdomains = s.subdomains_aggregate("xbox.com", param="domain", page=2)

Búsqueda mediante CIDR

from spyse import spyse

s = spyse()
results = s.domains_on_ip("172.217.1.0/24", param="cidr")

Trabajar con un archivo existente

from spyse import spyse

s = spyse()
results = []

with open("domains.txt") as d:
    for line in d:
        # default value for param="domain", so we don't
        # need to specify here
        r = s.subdomains_aggregate(line)
        results.append(r)

print(results)

Métodos disponibles

Todos los métodos que aparecen en https://api-doc.spyse.com/

  API_METHODS = {
    "DNS_PTR": "/dns-ptr",
    "DNS_SOA": "/dns-soa",
    "DNS_MX": "/dns-mx",
    "DNS_AAAA": "/dns-aaaa",
    "DNS_NS": "/dns-ns",
    "DNS_A": "/dns-a",
    "DNS_TXT": "/dns-txt",
    "domains_with_same_ns": "/domains-with-same-ns",
    "domains_using_as_mx": "/domains-using-as-mx",
    "domains_on_ip": "/domains-on-ip",
    "domains_with_same_mx": "/domains-with-same-mx",
    "domains_using_as_ns": "/domains-using-as-ns",
    "download_dns_aaaa": "/download-dns-aaaa",
    "download_dns_soa": "/download-dns-soa",
    "download_dns_ns": "/download-dns-ns",
    "download_dns_ptr": "/download-ns-ptr",
    "download_dns_mx": "/download-dns-mx",
    "download_dns_a": "/download-dns-a",
    "download_dns_txt": "/download-dns-txt",
    "download_domains_with_same_mx": "/download-domains-with-same-mx",
    "download_domains_on_ip": "/download-domains-on-ip",
    "download_domains_with_same_ns": "/download-domains-with-same-ns",
    "download_domains_using_as_ns": "/download-domains-using-as-ns",
    "download_domains_using_as_mx": "/download-domains-using-as-mx",
    "ip_port_lookup_aggregate": "/ip-port-lookup-aggregate",
    "ip_port_lookup": "/ip-port-lookup",
    "ssl_certificates": "/ssl-certificates",
    "ssl_certificate_raw": "/ssl-certificate-raw",
    "ssl_certificates_aggregate": "ssl-certificates-aggregate",
    "ssl_certificate": "/ssl-certificate",
    "ssl_certificate_public_key": "/ssl-certificate-public-key",
    "ssl_certificate_json": "/ssl-certificate-json",
    "subdomains": "/subdomains",
    "subdomains_aggregate": "/subdomains-aggregate",
    "domains_starts_with": "/domains-starts-with",
    "domains_starts_with_aggregate": "/domains-starts-with-aggregate"
  }
https://github.com/zeropwn/spyse.py

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda