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:
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