Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Crawlector — Crawlector es un framework de caza de amenazas diseñado para explorar sitios web en busca de objetos maliciosos. | Kitploit
Herramientas/GitHubGitHub/mfmokbel/crawlector
OSINT (Inteligencia de Fuentes Abiertas)Escáneres de VulnerabilidadesFeeds y Agregadores de AmenazasRecopilación de InformaciónSeguridad WebAnálisis de MalwareInteligencia de AmenazasCrawler
GitHubmfmokbel/crawlector

Crawlector

Crawlector es un framework de caza de amenazas diseñado para explorar sitios web en busca de objetos maliciosos.

Ver Repositorio
1231016hace 9 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

Crawlector

Crawlector (el nombre Crawlector es una combinación de Crawler & *Detector) es un framework de caza de amenazas diseñado para escanear sitios web en busca de objetos maliciosos.

Nota-1: El framework se presentó por primera vez en la conferencia No Hat en Bérgamo, Italia, el 22 de octubre de 2022 (Diapositivas, Grabación de YouTube). Además, se presentó por segunda vez en la conferencia AVAR, en Singapur, el 2 de diciembre de 2022.

Nota-2: La herramienta complementaria EKFiddle2Yara (es una herramienta que toma las reglas de EKFiddle y las convierte en reglas Yara) mencionada en la charla también fue publicada en ambas conferencias.

Nota-3: La versión 2.0 (Photoid Build:180923), un lanzamiento histórico, se publicó el 18 de septiembre de 2023.

Nota-4: La versión 2.1 (Universe-647 Build:031023) se publicó el 3 de octubre de 2023. Una adición importante es la funcionalidad de Notificación de Alertas por Slack.

Nota-5: La versión 2.2 (Hallstatt Build:051123) se publicó el 5 de noviembre de 2023. Una adición importante es la funcionalidad de Control Remoto por Slack.

Nota-6: La versión 2.3 (Munich Build:241123) se publicó el 24 de noviembre de 2023. Una adición importante es la funcionalidad de Servidores de Nombres DNS.

Nota-6: La versión 2.3.1 {Nero Build:131225} se publicó el 13 de diciembre de 2025. Esta es una versión de mantenimiento.

Características

  • Admite el spidering de sitios web para encontrar enlaces adicionales para escanear (solo hasta 2 niveles)
  • Integra Yara como motor backend para el escaneo de reglas
  • Admite escaneo en línea y fuera de línea
  • Admite el rastreo de certificados digitales de dominios/sitios
  • Admite consultas a URLhaus para encontrar URLs maliciosas en la página
  • Extracción Profunda de Objetos (DOE)
  • Notificación de Alertas por Slack
  • Soporte parametrizado para redirección HTTP
  • Obtención de información Whois
  • Admite el hashing del contenido de la página con TLSH (Trend Micro Locality Sensitive Hash), y otras funciones hash criptográficas estándar como md5, sha1, sha256 y ripemd128, entre otras
    • TLSH no devolverá un valor si el tamaño de la página es inferior a 50 bytes, o si no hay suficiente aleatoriedad en los datos
  • Admite consultar la calificación y categoría de cada URL
  • Admite expandir un sitio dado intentando encontrar todos los TLD y/o subdominios disponibles para el mismo dominio
    • Esta característica utiliza las API de Omnisint Labs (este sitio está caído desde el 10 de marzo de 2023) y RapidAPI
    • La implementación de expansión de TLD es nativa
    • Esta característica, junto con la calificación y categorización, proporciona la capacidad de encontrar dominios de estafa/phishing/maliciosos para el dominio original
  • Admite resolución de dominios (IPv4 e IPv6)
  • Guarda las páginas web escaneadas para análisis posterior (se puede guardar comprimido en zip)
  • La totalidad de la configuración del framework se controla mediante un único archivo de configuración personalizable
  • Todas las sesiones de escaneo se guardan en un archivo CSV bien estructurado con una gran cantidad de información sobre el sitio web analizado, además de información sobre las reglas Yara que se han activado
  • Muchas otras características...
  • Todas las comunicaciones HTTP(S) son conscientes de proxy
  • Un solo ejecutable
  • Escrito en C++

Escaneo e Integración con API de URLHaus

Esto es para comprobar la presencia de URLs maliciosas en cada página que se escanea. El framework puede consultar la lista de URLs maliciosas desde el servidor de URLHaus (configuración: url_list_web), o desde un archivo en disco (configuración: url_list_file). Si se especifica esta última, tiene prioridad sobre la primera.

Funciona buscando en el contenido de cada página todas las entradas de URL en url_list_web o url_list_file, verificando todas las ocurrencias. Además, ante una coincidencia, y si la opción de configuración check_url_api está configurada como true, Crawlector enviará una solicitud POST a la URL de la API establecida en la opción de configuración url_api, que devuelve un objeto JSON con información adicional sobre la URL coincidente. Dicha información incluye urlh_status (ej., online, offline, unknown), urlh_threat (ej., malware_download), urlh_tags (ej., elf, Mozi) y urlh_reference (ej., https://urlhaus.abuse.ch/url/1116455/). Esta información se incluirá en el archivo de registro cl_mlog_<fecha_actual><hora_actual><(am|pm)>.csv (ver más abajo), solo si check_url_api está configurado como true. De lo contrario, el archivo de registro incluirá las columnas urlh_url (lista de URLs maliciosas coincidentes) y urlh_hit (número de ocurrencias por cada URL maliciosa coincidente), condicionado a que check_url esté configurado como true.

La funcionalidad de URLHaus se puede deshabilitar por completo estableciendo la opción de configuración check_url como false.

Es importante tener en cuenta que esta característica puede ralentizar el escaneo, considerando la enorme cantidad de URLs maliciosas (~130 millones de entradas al momento de escribir esto) que deben verificarse, y el tiempo que lleva obtener información adicional del servidor de URLHaus (si la opción check_url_api está configurada como true).

Estructuras de Archivos y Carpetas

  1. \cl_sites
    • aquí es donde se almacena la lista de sitios a visitar o rastrear.
    • admite múltiples archivos y directorios.
  2. \crawled
    • donde todas las URLs rastreadas/spidered se guardan en un archivo de texto.
  3. \certs
    • donde se almacenan todos los certificados digitales de dominios/sitios (en formato .der).
  4. \results
    • donde se guardan los sitios web visitados. Esto es configurable mediante la opción results_dir
  5. \pg_cache
    • caché del programa para sitios que no forman parte de la funcionalidad de spider. Esto es configurable mediante la opción cache_dir, sección [default].
  6. \cl_cache
    • caché del rastreador para sitios que forman parte de la funcionalidad de spider. Esto es configurable mediante la opción cache_dir, sección [spider].
  7. \yara_rules
    • aquí es donde se almacenan todas las reglas Yara. Todas las reglas existentes en este directorio serán cargadas por el motor, analizadas, validadas y evaluadas antes de la ejecución.
  8. cl_config.ini
    • este archivo contiene todos los parámetros de configuración que se pueden ajustar para influir en el comportamiento del framework.
  9. cl_mlog_<fecha_actual><hora_actual><(am|pm)>.csv
    • archivo de registro que contiene una gran cantidad de información sobre los sitios web visitados
    • fecha, hora, estado del escaneo Yara, lista de reglas Yara activadas con los desplazamientos y longitudes de cada coincidencia, id, URL, código de estado HTTP, estado de conexión, cabeceras HTTP, tamaño de página, ruta a la página guardada en disco, y otras columnas relacionadas con los resultados de URLHaus.
    • el nombre del archivo es único por sesión.
  10. cl_offl_mlog_<fecha_actual><hora_actual><(am|pm)>.csv
    • archivo de registro que contiene información sobre archivos escaneados fuera de línea.
    • lista de reglas Yara activadas con los desplazamientos y longitudes de las coincidencias, y ruta a la página guardada en disco.
    • el nombre del archivo es único por sesión.
  11. cl_certs_<fecha_actual><hora_actual><(am|pm)>.csv
    • archivo de registro que contiene una gran cantidad de información sobre los certificados digitales encontrados

Archivo de Configuración (cl_config.ini)

Debe familiarizarse con el archivo de configuración cl_config.ini antes de ejecutar cualquier sesión. Todas las secciones y parámetros están documentados en el propio archivo de configuración.

La funcionalidad de escaneo fuera de línea de Yara es una opción independiente, lo que significa que, si está habilitada, Crawlector ejecutará solo esta característica, independientemente de otras características habilitadas. Y lo mismo ocurre con la funcionalidad de rastreo de certificados digitales de dominios/sitios. En cualquier caso, se recomienda deshabilitar todas las características no utilizadas en el archivo de configuración.

  • Dependiendo de la configuración (log_to_file o log_to_cons), si una regla Yara hace referencia solo a los atributos de un módulo (ej., PE, ELF, Hash, etc.), entonces Crawlector mostrará solo el nombre de la regla ante una coincidencia, excluyendo los datos de desplazamiento y longitud.

Nota: para cualquier opción que requiera una ruta, proporcione siempre la ruta absoluta.

Formato de Patrón de Sitios

Para visitar/escanear un sitio web, la lista de URLs debe almacenarse en archivos de texto, en el directorio "cl_sites".

Crawlector acepta tres tipos de URLs:

  1. Tipo 1: una URL por línea
    • Crawlector asignará un nombre único a cada URL, derivado del nombre de host de la URL
  2. Tipo 2: una URL por línea, con un nombre único [a-zA-Z0-9_-]{1,128} = <url>
  3. Tipo 3: para la funcionalidad de spider, se utiliza un formato único. Una URL por línea es la siguiente:

<id>[depth:<0|1>-><\d+>,total:<\d+>,sleep:<\d+>] = <url>

Por ejemplo,

mfmokbel[depth:1->3,total:10,sleep:0] = https://www.mfmokbel.com

que es equivalente a: mfmokbel[d:1->3,t:10,s:0] = https://www.mfmokbel.com

donde, <id> := [a-zA-Z0-9_-]{1,128}

depth, total y sleep también se pueden reemplazar con sus versiones abreviadas d, t y s, respectivamente.

  • depth: el spider admite hasta dos niveles de profundidad para encontrar URLs adicionales (esto es una decisión de diseño).
  • Un valor de 0 indica una profundidad de nivel 1, ignorando el valor después de "->".
  • Una profundidad de nivel 1 está controlada por el parámetro total. Entonces, primero, el spider intenta encontrar tantas URLs adicionales como sea posible a partir de la URL especificada.
  • El valor después de "->" representa el número máximo de URLs a spider para cada una de las URLs encontradas (según el valor del parámetro total).
  • Un valor de 1 indica una profundidad de nivel 2, con el valor después de "->" representando el número máximo de URLs a encontrar, para cada URL encontrada según el parámetro total. Para mayor claridad, y como se muestra en el ejemplo anterior, primero, el spider buscará 10 URLs (como se especifica en el parámetro total), y luego, cada una de esas URLs encontradas será spidered hasta un máximo de 3 URLs; por lo tanto, en el mejor de los casos, terminaríamos con 40 (10 + (10*3)) URLs.
  • El parámetro sleep toma un valor entero que representa la cantidad de milisegundos a esperar entre cada solicitud HTTP.

Nota 1: Una URL de Tipo 3 se puede convertir en una URL de Tipo 1 estableciendo el parámetro de configuración live_crawler como false en el archivo de configuración, en la sección spider.

Nota 2: Las líneas vacías y las líneas que comienzan con ";", "#" o "//" se ignoran.

La Funcionalidad de Spider

La funcionalidad de spider es lo que le da a Crawlector la capacidad de encontrar enlaces adicionales en la página objetivo. El spider admite las siguientes características:

  • El dominio debe ser de Tipo 3 para que la funcionalidad de spider funcione
  • Puede especificar una lista de patrones con comodines (separados por tuberías) para evitar que el spider procese URLs coincidentes mediante la opción de configuración exclude_url. Por ejemplo, *.zip|*.exe|*.rar|*.zip|*.7z|*.pdf|.*bat|*.db
  • Puede especificar una lista de patrones con comodines (separados por tuberías) para que el spider solo procese URLs que coincidan con el patrón mediante la opción de configuración include_url. Por ejemplo, */checkout/*|*/products/*
  • Puede excluir URLs HTTPS mediante la opción de configuración exclude_https
  • También puede tener en cuenta enlaces externos/salientes, solo para la página principal, mediante la opción de configuración add_ext_links. Esta característica respeta las opciones de configuración exclude_url e include_url.
  • Puede tener en cuenta solo los enlaces externos/salientes de la página principal, excluyendo todas las demás URLs, mediante la opción de configuración ext_links_only. Esta característica respeta las opciones de configuración e .

Tipos de IDs

En la versión 2.0, los IDs tienen sus tipos asignados explícitamente añadiendo uno de los siguientes tipos al propio ID:

Tener cada ID con su tipo asociado facilita la navegación y el filtrado de los resultados. Además, esto se utiliza internamente por diversas razones.

Funcionalidad de Clasificación de Sitios

  • Esto es para verificar la clasificación del sitio web
  • Se proporciona un archivo con una lista de sitios web, con su clasificación, en formato de archivo CSV
  • Los servicios que proporcionan listas de clasificación de sitios web incluyen Alexa top-1m (descontinuado desde mayo de 2022), Cisco Umbrella, Majestic, Quantcast, Farsight y Tranco, entre otros
  • Formato de archivo CSV (solo 2 columnas): la primera columna contiene la clasificación y la segunda columna contiene el nombre de dominio
  • Si una celda contiene datos entre comillas, se descomillarán automáticamente
  • No se permiten saltos de línea en texto entre comillas
  • Se recortan los espacios iniciales y finales de las celdas leídas
  • Se omiten las líneas vacías y de comentarios
  • La sección site_ranking en el archivo de configuración proporciona algunas opciones para modificar la forma en que se lee el archivo CSV
  • El rendimiento de esta consulta depende de la cantidad de registros en el archivo CSV
  • Crawlector compara cada entrada en el archivo CSV con el dominio que se está investigando, y no al revés
  • Solo se compara el dominio registrado/de nivel de pago

Encontrar TLDs y Subdominios - Sección [site]

  • La sección site proporciona la capacidad de expandir un sitio dado intentando encontrar todos los dominios de nivel superior (TLD) y/o subdominios disponibles para el mismo dominio. Si se encuentran, los nuevos TLDs/subdominios se verificarán como cualquier otro dominio
  • Esta característica utiliza las API de Omnisint Labs (https://omnisint.io/) y RapidAPI
  • La API de Omnisint Labs devuelve subdominios y TLDs, mientras que RapidAPI devuelve solo subdominios (la API de Omnisint Labs está caída desde el 10 de marzo de 2023; sin embargo, la implementación aún está disponible en caso de que el sitio vuelva a estar activo)
  • Para RapidAPI, necesita una clave de API de "Domains records" válida que puede solicitar a RapidAPI e insertarla en la clave rapid_api_key en el archivo de configuración
  • Con find_tlds habilitado, además de los resultados de TLDs de la API de Omnisint Labs, el framework intenta encontrar otros dominios activos/registrados recorriendo cada entrada de TLD, ya sea en el tlds_file o en el tlds_url
  • Si se establece tlds_url, debe apuntar a una URL que contenga TLDs, cada uno en una nueva línea (las líneas que comienzan con los caracteres ';', '#' o '//' se ignoran)
  • tlds_file contiene el nombre del archivo con la lista de TLDs (igual que tlds_url; solo está presente el TLD, excluyendo el '.', por ejemplo, "com", "org")
  • Si se establece tlds_file, tiene prioridad sobre

Funcionalidad de Redirección

La funcionalidad de redirección de URLs en versiones anteriores estaba rota. Esta versión proporciona una reescritura completa de la funcionalidad de redirección, con un alto grado de parametrización para controlar su operación. En la versión 2.0, la redirección tiene una sección dedicada en el archivo de configuración, llamada [redirect]. Toda la funcionalidad de redirección se puede activar/desactivar mediante la opción follow_redir, en la sección [default].

La función de redirección verifica los códigos de estado de respuesta HTTP: 301, 302, 303, 307 y 308. En caso de coincidencia, Crawlector analizará la cabecera Location para redirigir a la URL, teniendo en cuenta tanto las URLs de redirección absolutas como relativas. La funcionalidad de redirección en Crawlector fue diseñada para rendimiento y agilidad. La sección [redirect] proporciona la siguiente lista de opciones:

[redirect]

  • depth = all ; (t: string)
  • max_redirect = 200 ; (t: uint16_t)
  • visit = true ; (t: bool)
  • skip_similar = true ; (t: bool)

La opción depth acepta uno de los valores, last o all. Controla qué URLs de redirección encontradas visitar, dependiendo de si la opción visit está habilitada o no. all es para visitar todas las URLs de redirección encontradas. last es para visitar la última URL de redirección. La visita de esas URLs ocurre en la misma sesión actual. Tenga en cuenta que, independientemente del valor de depth, Crawlector registrará la lista de todas las redirecciones encontradas a URLs, junto con el número total, en forma absoluta. Se escribirán en el archivo CSV cl_mlog, en las columnas redirect_urls y redirect_total.

La opción max_redirect establece un límite superior en el número total de redirecciones de URL a descubrir.

La opción skip_similar se explica mejor mediante el siguiente ejemplo:

Suponga que la URL original dada a Crawlector para rastrear es "https://www.mfa.gov.law" y una de las redirect_urls encontradas es "https://mfa.gov.law/". Como puede ver, la única diferencia es la barra inclinada al final de la URL. Estas dos URLs son iguales, y el servidor responderá con la misma página. Si la opción visit está configurada como true, Crawlector rastreará ambas URLs, desperdiciando recursos y realizando la misma tarea dos veces. Esto puede no ser un problema para 1 o 2 URLs, pero si tiene miles de URLs para rastrear y la opción visit está habilitada, es muy probable que más de la mitad de ellas tengan una URL descubierta de este tipo, en cuyo caso, esto se convierte en un problema apremiante a considerar. Por lo tanto, establecer la opción skip_similar como true ayudará a resolver este problema saltándose la visita de URLs similares. Además del escenario de la barra inclinada, la opción skip_similar también considera los siguientes dos escenarios: si la URL de redirección difiere solo por uno o ambos prefijos, "https://" y "www.".

Extracción Profunda de Objetos (DOE)

Una de las principales adiciones a la versión 2.0 es la capacidad de extraer diferentes tipos de objetos de la página, guardarlos en disco, escanearlos con Yara y URLHaus, y guardar los resultados en el archivo CSV. Para habilitar esta característica, configure la opción extract_obj como true, en la sección [page].La implementación de la función de extracción profunda de objetos funciona creando un archivo de archivo web MHT a partir de la página web, incluyendo scripts externos, imágenes y archivos CSS. Todos los archivos incrustados se extraerán en la ruta especificada por la opción obj_dir (ruta: obj_dir/objects/), donde se escaneará cada archivo. La implementación no debe confundirse con la funcionalidad del navegador sin cabeza. DOE es diferente y no implica cargar la página para recuperar todas las URL consultadas dinámicamente. Por lo tanto, tiene sus limitaciones.

Todos los objetos extraídos tendrán algunos de sus metadatos escritos en el archivo CSV. Cosas a tener en cuenta al leer el archivo CSV: el ID del dominio con el objeto extraído tiene un formato único, como sigue, <domain_id>_<type>_p_obj_<counter> (por ejemplo, _mfa_gov_cef40bc5-ba6a-41_t1_p_obj_0_). Y, la URL tendrá el siguiente formato, <url>__<object_filename> (por ejemplo, https://www.mfa.gov.law__bilmur.min.js).

Si la opción delete_obj está configurada como verdadera, todos los objetos extraídos que no sean detectados por Yara se eliminan del disco. Si la opción log_all_objs está configurada como verdadera, entonces registre todos los metadatos de objetos extraídos en el mismo archivo CSV cl_mlog. Si la opción check_urlhaus bajo la sección [page] está configurada como verdadera, entonces cada objeto extraído será escaneado por URLHaus. Tenga en cuenta que las opciones de esta opción se heredan de la sección [urlhaus].

Nota: si el dominio que se está rastreando redirige a otro dominio, entonces la última redirección a la URL debe pasarse a DOE para que funcione. Además, el dominio debe comenzar con "HTTP(S)://" para que DOE funcione.

Notificación de alerta de Slack

A veces, es posible que desee ejecutar sesiones de Crawlector que pueden tardar días en completarse, por ejemplo, al rastrear el top 1 millón de sitios web de Alexa, y para tal escenario, necesita una forma de monitorear la operación y el progreso del marco de trabajo de forma remota. Por lo tanto, en la versión 2.1, agregué la función de notificación de alerta de Slack para proporcionar un mecanismo para monitorear la ejecución de Crawlector en tiempo real, enviando alertas de Yara, eventos std::exit() y advertencias y errores del proceso, a un canal de Slack de su elección. Además de eso, Crawlector instala un controlador de consola en un intento de monitorear ciertos tipos de eventos, incluyendo ctrl_c, ctrl_close, ctrl_break, ctrl_logoff y ctrl_shutdown. Es importante tener en cuenta que Crawlector no cambia/altera el comportamiento del controlador predeterminado; simplemente informa al canal de Slack la recepción de cualquiera de los eventos listados. Esto podría extenderse en el futuro para tener en cuenta otros tipos de eventos.

Esta función utiliza la API REST de Slack, y para la autenticación con el servidor, utiliza OAuth 2.0. Necesitará un token de API de Slack para usarlo, y un canal configurado con los permisos correctos. Esta función solo publica mensajes en el canal de Slack y no recibe ni procesa ningún mensaje entrante.

La sección [slack_alert] proporciona la siguiente lista de opciones:

[slack_alert]

  • alert = true ; (t: bool)
  • api_token = ; (t: string)
  • channel = ; (t: string)
  • sleep = ; (t: uint32_t) en milisegundos

Para deshabilitar o habilitar esta función, simplemente configure la opción alert en true o false. Además, debe especificar el api_token, con un nombre de channel.

Nota-1: En la fase de inicialización de Crawlector, prueba si el token de autenticación proporcionado es válido o no, o si el canal está configurado, y en caso de falla, esta función se deshabilita automáticamente.

Todas las alertas reportadas al canal de Slack se reportan bajo el nombre de usuario Crawlector v<version_number>, por ejemplo, Crawlector v2.1. El usuario tiene el icono de una telaraña. Además, todas las alertas están enhebradas, lo que significa que todas las alertas posteriores al primer mensaje de inicio se publican como respuestas. Esta fue una decisión de diseño y ayuda en caso de que esté ejecutando múltiples sesiones al mismo tiempo, todas reportando al mismo canal. Algunas alertas utilizan el lenguaje de marcado markdown para el formato.

Cuando el proceso ha finalizado con éxito y está a punto de salir, publica el siguiente mensaje:

Crawlector ha finalizado y se está cerrando correctamente

Nota-2: El límite de tasa de Slack en la API de mensajes de publicación es un mensaje por segundo, con margen para algunos picos. Crawlector no pone en cola mensajes para tener en cuenta más publicaciones por segundo. Esto podría cambiar en el futuro si es necesario; sin embargo, la opción sleep permite que el proceso duerma durante una cantidad de tiempo especificada después de cada mensaje publicado con éxito.

Control remoto de Slack

Con la versión 2.2 (nombre en clave Hallstatt), estoy introduciendo la capacidad de controlar remotamente Crawlector a través de un conjunto seleccionado de comandos de control especialmente diseñados. La razón para introducir esta funcionalidad es monitorear y controlar ciertos comportamientos de sesiones que se supone que deben ejecutarse durante horas o días. Por ejemplo, es posible que desee activar/desactivar la funcionalidad de alerta de Slack, terminar Crawlector y cargar un archivo de configuración, entre otros.

Esta función utiliza la API REST de Slack, y para la autenticación con el servidor, utiliza OAuth 2.0. Necesitará un token de API de Slack para usarlo, y un canal configurado con los permisos correctos. El token de API es el mismo que se utiliza en la sección [slack_alert], opción api_token.

La sección [slack_alert] proporciona la siguiente lista adicional de opciones para la funcionalidad de control remoto:

[slack_alert] (opciones de control)

  • control = true ; (t: bool)
  • ctrl_channel = ; (t: string) tiene que ser el ID del canal y no el nombre del canal
  • ctrl_sleep = ; (t: uint32_t) en milisegundos

Para deshabilitar o habilitar esta función, simplemente configure la opción control en true o false. El nombre ctrl_channel tiene que ser el ID del canal y no el nombre del canal. Puede obtenerlo haciendo clic derecho en el nombre del canal -> Ver detalles del canal -> Desplácese hasta la parte inferior de la ventana, y verá el campo ID del canal: <channel_id>.

La opción ctrl_sleep determina la frecuencia de llamada al canal de control especificado en la opción ctrl_channel para recuperar comandos de control. También puede actualizar esta opción a través del comando de control cl_update_delay <time_in_ms>.

La lista de comandos de control admitidos es la siguiente:

Nota-1: En la fase de inicialización de Crawlector, prueba si el token de autenticación proporcionado es válido o no, o si el canal está configurado, y en caso de falla, esta función se deshabilita automáticamente.

Si esta funcionalidad está habilitada, y una vez que pasa la validación del token API, Crawlector envía el mensaje "Crawlector está listo para recibir comandos de control. Escriba el comando cl_help para obtener una lista de los comandos de control admitidos." al ctrl_channel designado.

Todas las respuestas a un comando de control dado están enhebradas. Además, los comandos de control se leen por sesión, desde el momento en que se inicia una sesión.

Nota-2: El límite de tasa de Slack en la API de recuperación (historial de conversación) de mensajes es una solicitud por segundo, con margen para algunos picos. Por lo tanto, si la opción ctrl_sleep está configurada en un valor menor a un segundo o mayor a un segundo, Crawlector sí pone en cola mensajes para tener en cuenta más comandos de control por segundo, y los ejecuta en el orden recibido.

Servidores de nombres DNS

Con la versión 2.3 (nombre en clave Munich), se introduce la capacidad de especificar una lista de servidores de nombres DNS para todas las consultas DNS y resoluciones DNS a IP realizadas por Crawlector con un alto nivel de control. Esto es importante en caso de que esté rastreando sitios web bloqueados o maliciosos. Esta función se aplica a cada función en Crawlector donde se realiza una consulta DNS o solicitud DNS a IP. Más importante aún, proporciona la capacidad de realizar DNS sobre TLS para cada servidor de nombres que lo soporte.

La sección [dns_ns] proporciona la siguiente lista de opciones para administrar esta funcionalidad:

[dns_ns]

  • enable = false ; (t: bool)
  • name_servers = 8.8.8.8(e_tls),12.13.14.15(d_tls) ; (t: string)
  • dns_tls = yes ; (t: string) (yes, no o force)
  • keep_default = false ; (t: bool)
  • conn_time_out = 3000 ; (t: uint32_t) en milisegundos (0 para esperar indefinidamente)

La opción name_servers toma una lista parametrizada de servidores de nombres DNS a utilizar, separados por comas. El valor de esta opción tiene el formato: <IPv4_address>(<tls_option>) donde <tls_option> toma cualquiera de los valores "d_tls" o "e_tls". Las opciones "d_tls" o "e_tls" indican si el servidor de nombres en cuestión soporta DNS sobre TLS o no, respectivamente. Esta opción se aplicará dependiendo del valor establecido para la opción dns_tls. Por ejemplo, la entrada 8.8.8.8(e_tls) indica usar el servidor DNS de Google 8.8.8.8 con soporte TLS, mientras que la entrada 12.13.14.15(d_tls) indica usar el servidor DNS 12.13.14.15 sin soporte TLS.

La opción dns_tls especifica el nivel requerido de cumplimiento TLS. Esta opción toma cualquiera de los valores, "yes", "no" o "force".

  • yes
    • Se intentarán primero los servidores de nombres DNS con soporte TLS, y si no se encuentra un NS con soporte TLS, se intentará la resolución UDP/TCP en su lugar.
  • no
    • sin soporte TLS (no usar servidores de nombres DNS con soporte TLS)
  • force
    • solo se utilizarán servidores de nombres DNS con soporte TLS, y cualquier consulta DNS iniciada por Crawlector usará DoT (DNS sobre TLS).

La opción keep_default es para si agregar el(los) servidor(es) de nombres predeterminado(s) a la lista de servidores de nombres. Se asume que un servidor de nombres predeterminado no soporta TLS.

La opción conn_time_out especifica el tiempo en milisegundos para esperar una respuesta a una consulta DNS.

La opción enable activa o desactiva esta funcionalidad.

Mejoras diversas en la versión 2.0

  • Se agregaron las opciones de línea de comandos "-v" y "-c". La opción "-v" es para imprimir información de versión en la consola. La opción "-c" es para leer un archivo de configuración diferente, que no sea el predeterminado "cl_config.ini".
  • Varias optimizaciones de código y mejoras menores
  • Para cada dominio leído (sin subdominio), Crawlector antepondrá "www." a cada entrada de sitio leída, si aún no existe. Por ejemplo, en el caso de la consulta de enumeración de subdominios de RapidAPI, el dominio que se está consultando debe comenzar con "www.".
  • Se agregaron las opciones clear_dns y upg_2_https a la sección [default]. La primera limpia la caché DNS del nombre de host a la IP, y la segunda actualiza cada sitio a HTTPS anteponiendo "https://". Del mismo modo, la opción tld_upgrd_2_https se ha agregado a la sección [site], para actualizar dominios activos con diferentes TLD a https.
  • Se agregaron las opciones rapid_api_weeks y rapid_api_limit a la sección [site] para configurar la solicitud API a RapidAPI. Ambas opciones son opcionales. La primera especifica el número de semanas a consultar en la base de datos, mientras que la segunda especifica el número de subdominios a devolver por sitio.
  • En la versión 2.0, puede especificar un directorio de caché diferente para las secciones [spider] y [default], a través de la opción cache_dir.
  • Se agregaron muchas opciones a la sección page en la versión 2.0, incluyendo:
  • La opción whois_info recupera información del dominio whois que incluye, registrador, registrado_el, expira_el y actualizado_el. Estos datos se obtienen de https://www.whois.com/whois/. Los datos se guardan en el archivo CSV cl_mlog.
  • La opción page_title guarda el título de la página en el archivo CSV cl_mlog.
  • Se agregó la opción results_dir para proporcionar la capacidad de guardar páginas bajo una ruta diferente. Si no se establece, la carpeta "results" se creará en el mismo directorio que Crawlector.
  • Motor Yara actualizado a 4.3.2

Consideraciones de diseño

  • Una página URL se recupera enviando una solicitud GET al servidor, leyendo el cuerpo de la respuesta del servidor y pasándolo al motor Yara para su detección.
  • Algunos de los atributos de la solicitud GET se definen en la sección [default] en el archivo de configuración, incluidos los encabezados User-Agent y Referer, y el tiempo de espera de conexión, entre otras opciones.
  • Aunque Crawlector registra los datos de una sesión en un archivo CSV, se recomienda convertirlo a un archivo SQL para un mejor rendimiento, manipulación y recuperación de datos. Esto se vuelve evidente cuando se rastrean miles de dominios.
  • Se permiten dominios/URL repetidos en cl_sites.

Limitaciones

  • Monohilo
  • Detección estática (sin evaluación dinámica del contenido de una página determinada). Consulte la función DOE en su lugar.
  • Sin soporte de navegador sin cabeza, ¡todavía!

Bibliotecas de terceros utilizadas

  • Chilkat: biblioteca para spidering de sitios web, comunicaciones HTTP, hashing, análisis JSON y compresión de archivos (ZIP), entre otros
  • Yara: para escaneo de reglas (v4.5.4)
  • CrossGuid: para generar GUID/UUID
  • Inih: para analizar archivos de configuración
  • Rapidcsv: para analizar archivos CSV
  • Color Console: para colorear la consola
  • TLSH (Trend Micro Locality Sensitive Hash) (v4.8.2)

Contribuir

Abierto para solicitudes de extracción y problemas. Los comentarios y sugerencias son muy apreciados.

Autor

Mohamad Mokbel (@MFMokbel)

Descargar herramienta
  • \expanded\exp_subdominio_<am|pm>.txt
    • contiene subdominios descubiertos (parte de la sección [site])
  • \expanded\exp_tld_<am|pm>.txt
    • contiene dominios descubiertos (parte de la sección [site])
  • exclude_url
    include_url
    id_postfix (tipo)descripción
    _t1_ptipo 1 simple sin id
    _sdsubtipo para subdominios
    _tldsubtipo para tlds
    _t2_ptipo 2 simple con id
    _t3_stipo 3 dominios spidered
    _t3_sctipo 3 dominios spidered con un nodo hijo
    _t3_sstipo 3 cuando una URL tipo 3 (_t3_s) se convierte en URL tipo 1
    _t3_s_etipo 3 enlaces externos de dominios spidered
    _obj_para escaneo profundo y extracción de objetos
    _t4_rupara URL de redirección (para todos los tipos)
    tlds_url
  • tld_dl_time_out es para establecer el tiempo de espera máximo para la función de búsqueda DNS al intentar verificar si el dominio en cuestión se resuelve o no
  • tld_use_connect habilita la funcionalidad de conectarse al dominio en cuestión a través de una lista de puertos, definidos en la opción tlds_connect_ports
  • La opción tlds_connect_ports acepta una lista de puertos, separados por comas, o una lista de rangos, como 25-40,90-100,80,443,8443 (el inicio y fin del rango son inclusivos)
    • tld_con_time_out es para establecer el tiempo de espera máximo para la función de conexión
  • tld_con_use_ssl habilita/deshabilita el uso de SSL al intentar conectarse al dominio
  • Si save_to_file_subd está configurado como true, los subdominios descubiertos se guardarán en "\expanded\exp_subdominio_<am|pm>.txt"
  • Si save_to_file_tld está configurado como true, los dominios descubiertos se guardarán en "\expanded\exp_tld_<am|pm>.txt"
  • Si exit_here está configurado como true, entonces Crawlector sale después de ejecutar esta función [site], independientemente de otras opciones habilitadas. Esto significa que los sitios encontrados no serán rastreados/spidered
  • Comando de ControlDescripción
    cl_get_dateRecupera la fecha y hora en que se inició Crawlector y la fecha y hora actuales.
    cl_pingEnvía de vuelta el mensaje "Pong...". Esto es para comprobar que el canal C&C está funcionando.
    cl_get_configSube el archivo de configuración utilizado actualmente (por ejemplo, cl_config.ini) como un archivo de texto.
    cl_update_delay <entero_en_milisegundos>Actualiza el tiempo de check-in entre cada solicitud de extracción de comandos de control.

    - Cambia el valor (ctrl_sleep) solo para la sesión actual.

    cl_turn_off_slack_alertDesactiva la función de alerta de Slack para la sesión activa actual.
    cl_turn_on_slack_alertActiva la función de alerta de Slack para la sesión activa actual.
    cl_helpMuestra este mensaje de ayuda.
    cl_exitTermina Crawlector, de forma forzada.