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
smbcrawler — smbcrawler es una herramienta sin rodeos que toma credenciales y una lista de hosts y 'rastrea' (o 'araña') a través de esos recursos compartidos | Kitploit
Herramientas/GitHubGitHub/syss-research/smbcrawler
ReconocimientoAnálisis de VulnerabilidadesExfiltración de DatosRecopilación de InformaciónSeguridad de RedesPruebas de Penetración
GitHubsyss-research/smbcrawler

smbcrawler

smbcrawler es una herramienta sin rodeos que toma credenciales y una lista de hosts y 'rastrea' (o 'araña') a través de esos recursos compartidos

Ver Repositorio
189263hace 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

SmbCrawler

SmbCrawler es una herramienta directa que toma credenciales y una lista de hosts y 'rastrea' (o 'araña') a través de estos recursos compartidos. Características:

  • acepta nombres de host, direcciones IP, rangos de IP, o un archivo xml de nmap como entrada
  • verifica permisos (la comprobación de permisos de 'escritura' es opcional, porque requiere crear un directorio vacío en el recurso compartido)
  • la profundidad de rastreo es personalizable
  • genera resultados en formatos legibles por máquina o como un informe HTML interactivo
  • soporte de pass-the-hash
  • descarga automática de archivos interesantes
  • reportar posibles secretos
  • multihilo
  • pausable
  • saltar interactivamente recursos compartidos y hosts individuales

Instalación

Si necesitas instrucciones sobre cómo instalar un paquete de Python, te recomiendo que te asegures de tener pipx instalado y ejecutes pipx install smbcrawler.

SmbCrawler puede convertir automáticamente algunos archivos binarios como PDF, XLSX, DOCX, ZIP, etc. a texto plano usando MarkItDown. Debido a que este paquete trae muchas dependencias, está marcado como extra. Sin embargo, se recomienda encarecidamente para obtener los mejores resultados. Si deseas convertir binarios automáticamente, instala SmbCrawler de esta manera:

root@kitploit:~
pipx install 'smbcrawler[binary-conversion]'

Agregar la finalización del shell es muy recomendable. Como una aplicación Python que usa la librería click, puedes agregar la finalización por tabulación a bash, zsh y fish usando el mecanismo habitual.

Ejemplo

Ejecútalo así (10 hilos, profundidad máxima 5):

root@kitploit:~
$ smbcrawler crawl -i hosts.txt -u pen.tester -p iluvb0b -d contoso.local -t 10 -D 5

Cambios importantes en la versión 1.0

SmbCrawler ha sufrido una revisión importante. Los cambios más significativos son:

  • Limpiamos la CLI e introdujimos un mecanismo de 'perfil' para dirigir el comportamiento del rastreador
  • La salida ahora es una base de datos sqlite en lugar de archivos JSON dispersos
  • Los permisos ahora se reportan de forma más granular

Los antiguos argumentos de CLI sobre 'archivos interesantes', 'recursos compartidos aburridos' y demás eran torpes y confusos. En su lugar, ahora usamos 'perfiles'; vea abajo para más detalles.

Además, me di cuenta de que básicamente reinventé las bases de datos relacionales, pero lo hice muy mal, así que ¿por qué no usar sqlite directamente? El enfoque sqlite nos permite producir un buen informe HTML interactivo con buen rendimiento. Todavía puedes exportar resultados en varios formatos si necesitas usar los datos en algún flujo de herramientas.

La forma antigua en que SmbCrawler reportaba permisos a veces no era muy útil. Por ejemplo, no es raro tener permisos de lectura en el directorio raíz del recurso compartido, pero todos los subdirectorios están protegidos, por ejemplo, para perfiles de usuario. Ahora SmbCrawler reportará qué tan profundo pudo leer el árbol de directorios de un recurso compartido y si llegó al máximo o podría haber ido más profundo si hubieras proporcionado un valor mayor para el argumento de profundidad máxima.

Si prefieres la versión anterior, todavía está disponible en PyPI y se puede instalar con pipx install smbcrawler==0.2.0, por ejemplo.

Uso

Durante la ejecución, puedes usar las siguientes teclas:

  • p: pausar el rastreador y saltar hosts o recursos compartidos individuales
  • <espacio>: mostrar el progreso actual
  • s: mostrar una actualización de estado más detallada

Para más información, ejecuta smbcrawler -h.

Notas

Incluso en redes de tamaño mediano, SmbCrawler encontrará toneladas de datos. El desafío es reducir los falsos positivos.

Notas sobre permisos

Es importante darse cuenta de que los permisos pueden aplicarse a nivel de servicio y a nivel del sistema de archivos. El servicio SMB remoto puede permitirte autenticarte y tu cuenta de usuario puede tener permisos de lectura en principio, pero podría carecer de estos permisos en el sistema de archivos.

SmbCrawler reportará si tienes permisos para:

  • autenticarte contra un objetivo como invitado y listar los recursos compartidos
  • autenticarte contra un objetivo con las credenciales del usuario
  • acceder a un recurso compartido como invitado
  • acceder a un recurso compartido con las credenciales del usuario
  • crear un directorio en el directorio raíz del recurso compartido
  • el nivel de directorio más profundo de un recurso compartido al que se pudo acceder (limitado por el argumento --depth)

Debido a que no es trivial verificar los permisos de los recursos compartidos SMB sin intentar la acción en cuestión, SmbCrawler intentará crear un directorio en cada recurso compartido. Su nombre es smbcrawler_DELETEME_<8 caracteres aleatorios> y se eliminará inmediatamente, pero ten cuidado de todos modos.

[!WARNING] A veces tienes permiso para crear directorios, pero no para eliminarlos, por lo que dejarás un directorio vacío allí.

Perfiles

Para decidir qué hacer con ciertos recursos compartidos, archivos o directorios, SmbCrawler tiene una característica llamada 'perfiles'. Echa un vistazo al perfil predeterminado.

Los perfiles se cargan desde archivos con extensiones *.yml o *.yaml desde estas ubicaciones:

  • El perfil predeterminado integrado
  • $XDG_DATA_HOME/smbcrawler/ (por defecto ~/.local/share/smbcrawler)
  • El directorio adicional definido por --extra-profile-directory
  • Los archivos adicionales definidos por --extra-profile-file

Los perfiles de cada ubicación sobrescriben las definiciones anteriores.

El valor regex define si un perfil coincide, y se usará el último perfil que coincida. Todas las expresiones regulares no distinguen entre mayúsculas y minúsculas, reflejando el comportamiento más común en el mundo Windows.

Dado que puede ser confuso cómo los perfiles de diferentes fuentes funcionan juntos, asegúrate de usar el parámetro --dry-run. Te muestra la configuración efectiva y no hace nada más.

Veamos cada sección, que siempre es una lista de diccionarios. Cada una de las claves del diccionario es una etiqueta arbitraria y cada uno de los valores es a su vez un diccionario con diferentes propiedades.

Archivos

  • comment: Una cadena útil que describe este perfil
  • regex: Una expresión regular que define a qué archivos se aplica este perfil. La última expresión regular que coincida es la que cuenta.
  • regex_flags: Un arreglo de banderas que se pasarán a la función match de la expresión regular
  • high_value (por defecto: false): Si un archivo es de 'alto valor', se reportará su presencia, pero no se descargará necesariamente (piensa en discos duros virtuales: importantes, pero demasiado grandes para descargarlos automáticamente)
  • download (por defecto: true): Si es true, se descargarán los primeros 200KiBi (o el archivo completo si high_value=true) y se analizará en busca de secretos

Recursos compartidos y directorios

  • comment, regex, regex_flags: Igual que arriba
  • high_value: se reportará su presencia y la profundidad de rastreo se cambiará a infinito
  • crawl_depth: Rastrear este recurso compartido o directorio hasta una profundidad diferente a la definida por el argumento --depth

Secretos

  • comment, regex_flags: Igual que arriba
  • regex: Una expresión regular que coincide con el secreto. El secreto en sí puede ser un grupo nombrado con el nombre secret.

Flujo de trabajo típico

Tiene sentido ejecutar primero SmbCrawler con profundidad de rastreo 1 para tener una idea de con qué estás lidiando. En esta primera ejecución, puedes habilitar la verificación de escritura con -w:

root@kitploit:~
$ smbcrawler -C permissions_check.crwl crawl -D1 -t10 -w \
    -i <INPUT FILE> -u <USER> -d <DOMAIN> -p <PASSWORD>

Ten en cuenta que esto solo verifica los permisos de escritura y lectura en el directorio raíz de cada recurso compartido. Solo una ejecución completa te dirá más sobre hasta qué profundidad llegan los permisos de lectura.

Después de la verificación inicial de permisos, puedes identificar recursos compartidos interesantes y aburridos para tu próxima ejecución o varias ejecuciones. Algunos recursos compartidos como SYSVOL y NETLOGON aparecen muchas veces, por lo que debes establecer la profundidad de rastreo a cero en tu próxima ejecución y elegir un host para escanear estos recursos compartidos duplicados en una tercera ejecución. Aquí hay un ejemplo:

root@kitploit:~
$ smbcrawler -C dc_only.crwl crawl -D -1 <DC IP> \
    -u <USER> -d <DOMAIN> -p <PASSWORD>
$ smbcrawler -C full.crwl crawl -D5 -t10 -i <NEW INPUT FILE> \
    -u <USER> -d <DOMAIN> -p <PASSWORD> \
    --extra-profile-file skip_sysvol.yml

Aquí, skip_sysvol.yml sería:

root@kitploit:~
shares:
  sysvol:
    comment: "Skip sysvol and netlogon share"
    regex: 'SYSVOL|NETLOGON'
    crawl_depth: 0

Siéntete libre de incluir aquí otros recursos compartidos que consideres que no valga la pena rastrear.

Salida

Los datos sin procesar están contenidos en una base de datos SQLite y un directorio (output.crwl y output.crwl.d por defecto). El directorio contiene dos directorios más: uno con los archivos descargados, únicos por el hash de su contenido, y un directorio que refleja todos los recursos compartidos con enlaces simbólicos que apuntan a los archivos de contenido. Este último es bueno para buscar mediante grep en todos los archivos descargados.

Los datos se pueden transformar a varios formatos. También puedes simplemente acceder a la base de datos con sqlitebrowser, por ejemplo. Se han predefinido algunas vistas útiles. O puedes generar JSON y usar jq para manipular los datos.

Si deseas mostrar todos los recursos compartidos que pudiste leer más allá del directorio raíz en una tabla LaTeX, por ejemplo, usa esta consulta:

root@kitploit:~
SELECT target_id || " & " || name || " & " || remark || " \\"
FROM share
WHERE read_level > 0
ORDER BY target_id, name

También hay una característica experimental de salida HTML. Puede que aún no sea completamente útil para grandes cantidades de datos.

Ayuda

Si notas muchos falsos positivos o falsos negativos en los secretos reportados, por favor ayuda y házmelo saber. La aportación de la comunidad es importante al intentar mejorar la detección automática. El mejor escenario: proporciona una solicitud de extracción (pull request) con cambios en el archivo de perfil predeterminado.

Créditos

Adrian Vollmer, SySS GmbH

Licencia

Licencia MIT; consulta LICENSE para más detalles.

Descargar herramienta