
Una utilidad para detectar varias tecnologías para una dirección IP dada.
Características • Instalación • Uso • Unirse a Discord
cdncheck es una herramienta para identificar la tecnología asociada con direcciones de red dns / ip.

cdncheck requiere go1.19 para instalarse correctamente. Ejecute el siguiente comando para instalar la última versión:
go install -v github.com/projectdiscovery/cdncheck/cmd/cdncheck@latest
cdncheck -h
Esto mostrará la ayuda de la herramienta. Aquí están todos los parámetros que soporta.
Uso:
./cdncheck [flags]
Flags:
ENTRADA:
-i, -input string[] lista de ips/dns a procesar
DETECCIÓN:
-cdn mostrar solo cdn en la salida de cli
-cloud mostrar solo cloud en la salida de cli
-waf mostrar solo waf en la salida de cli
COINCIDENCIA:
-mcdn, -match-cdn string[] coincidir host con el proveedor cdn especificado (cloudfront, fastly, google, leaseweb)
-mcloud, -match-cloud string[] coincidir host con el proveedor cloud especificado (aws, google, oracle)
-mwaf, -match-waf string[] coincidir host con el proveedor waf especificado (cloudflare, incapsula, sucuri, akamai)
FILTRO:
-fcdn, -filter-cdn string[] filtrar host con el proveedor cdn especificado (cloudfront, fastly, google, leaseweb)
-fcloud, -filter-cloud string[] filtrar host con el proveedor cloud especificado (aws, google, oracle)
-fwaf, -filter-waf string[] filtrar host con el proveedor waf especificado (cloudflare, incapsula, sucuri, akamai)
SALIDA:
-resp mostrar el nombre de la tecnología en la salida de cli
-o, -output string escribir la salida en formato plano a un archivo
-v, -verbose mostrar salida detallada
-j, -jsonl escribir la salida en formato json(line)
-nc, -no-color deshabilitar colores en la salida de cli
-version mostrar la versión del proyecto
-silent mostrar solo resultados en la salida
CONFIGURACIÓN:
-r, -resolver string[] lista de resolutores a usar (archivo o separados por comas)
-e, -exclude excluir la ip detectada de la salida
-retry int número máximo de reintentos para resolución dns (debe ser al menos 1) (por defecto 2)
ACTUALIZACIÓN:
-up, -update actualizar cdncheck a la última versión
-duc, -disable-update-check deshabilitar la comprobación automática de actualización de cdncheck
El archivo provider.yaml contiene la lista de proveedores CDN, WAF y Cloud. La lista contiene URLs, ASNs y CIDRs que luego se compilan en un archivo final sources_data.json usando el programa generate-index.
Ejemplo del archivo provider.yaml:
cdn:
# asn contiene los números ASN para los proveedores
asn:
leaseweb:
- AS60626
# urls contiene una lista de URLs para proveedores CDN
urls:
cloudfront:
- https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips
fastly:
- https://api.fastly.com/public-ip-list
# cidr contiene los rangos CIDR para los proveedores
cidr:
akamai:
- "23.235.32.0/20"
- "43.249.72.0/22"
- "103.244.50.0/24"
- "103.245.222.0/23"
- "103.245.224.0/24"
- "104.156.80.0/20"
Se pueden agregar nuevos proveedores que se puedan obtener de una URL, ASN o una lista de CIDR estáticos al archivo provider.yaml siguiendo los sencillos pasos que se indican a continuación:
cmd/generate-index/provider.yaml.cmd/generate-index.provider.yaml y localice la sección para el tipo de proveedor que desea agregar (CDN, WAF o Cloud).provider.yaml.Las adiciones basadas en CNAME y Wappalyzer se pueden realizar en el archivo other.go. Simplemente agregue los valores a las variables y listo.
// cdnCnameDomains contiene un mapa de CNAME a dominios y cdns
var cdnCnameDomains = map[string]string{
"cloudfront.net": "amazon",
"amazonaws.com": "amazon",
...
}
// cdnWappalyzerTechnologies contiene un mapa de tecnologías wappalyzer a cdns
var cdnWappalyzerTechnologies = map[string]string{
"imperva": "imperva",
"incapsula": "incapsula",
...
}
Biblioteca auxiliar que verifica si una IP determinada se ejecuta en Cloud / CDN / WAF.
La biblioteca se puede utilizar importando github.com/projectdiscovery/cdncheck. A continuación se muestra un ejemplo básico:
package main
import (
"fmt"
"net"
"github.com/projectdiscovery/cdncheck"
)
func main() {
client := cdncheck.New()
ip := net.ParseIP("173.245.48.12")
// verifica si una IP está contenida en la lista negra de cdn
matched, val, err := client.CheckCDN(ip)
if err != nil {
panic(err)
}
if matched {
fmt.Printf("%v es un %v\n", ip, val)
} else {
fmt.Printf("%v no es un CDN\n", ip)
}
// verifica si una IP está contenida en la lista negra de cloud
matched, val, err = client.CheckCloud(ip)
if err != nil {
panic(err)
}
if matched {
fmt.Printf("%v es un %v\n", ip, val)
} else {
fmt.Printf("%v no es un Cloud\n", ip)
}
// verifica si una IP está contenida en la lista negra de waf
matched, val, err = client.CheckWAF(ip)
if err != nil {
panic(err)
}
if matched {
fmt.Printf("%v WAF es %v\n", ip, val)
} else {
fmt.Printf("%v no es un WAF\n", ip)
}
}
cdncheck está hecho con ❤️ por el equipo de projectdiscovery y distribuido bajo Licencia MIT.