
una herramienta para pentesters para ayudar a encontrar deliciosos caramelos, por @l0ss y @Sh3r4 ( Twitter: @/mikeloss y @/sh3r4_hax )

Snaffler es una herramienta para pentesters y red teamers que ayuda a encontrar deliciosas agujas de caramelo (credenciales principalmente, pero es flexible) en un montón de horribles y aburridos pajares (un entorno masivo de Windows/AD).
También podría ser útil para otras personas que hacen otras cosas, pero explícitamente NO está pensada para ser una herramienta de "auditoría".
Uf, está bien. Pero no somos responsables de los resultados. Escribimos todo esto para ti, pero está bien. No estamos enfadados, solo decepcionados.
snaffler.exe -s -o snaffler.log
En términos generales: obtiene una lista de equipos Windows de Active Directory, luego extiende sus apéndices rastreadores a todos ellos para averiguar cuáles tienen recursos compartidos y si puedes leerlos.
Luego, AÚN MÁS apéndices rastreadores enumeran todos los archivos en esos recursos compartidos y utilizan INTELIGENCIA ARTEFACTUAL APRENDIDA para MÁQUINAS para determinar cuáles podría querer un hacker sucio como tú.
En realidad, no hace nada de ML, porque hacerlo bien requeriría datos de entrenamiento, y eso requeriría una cantidad enorme de tiempo que no tenemos. En su lugar, como todos los buenos proyectos de "ML", simplemente usa un montón de sentencias if y expresiones regulares.
¡Así!
Si "ejecutas literalmente el EXE en una máquina unida al dominio en el contexto de un usuario de dominio" (como se instruyó a la gente que hiciera con Grouper2, justo antes de que lo ejecutaran con todos los modificadores verbose/debug activados, gritando varios cientos de megabytes de trazas de pila), básicamente no hará nada. Esta es nuestra idea de una bromaTM para aquellos que no leen los archivos README, porque somos monstruos.
SIN EMBARGO... si agregas los conjuros correctos, activará el mencionado I.A.A.M. y las rutas de archivos donde puede haber caramelo se revelarán.
Los conjuros clave son:
-o Habilita la salida de resultados a un archivo. Probablemente quieras esto si no estás usando -s. Por ejemplo, -o C:\users\cosa\snaffler.log
-s Habilita la salida de resultados a la salida estándar tan pronto como se encuentren. Probablemente quieras esto si no estás usando -o.
-v Controla el nivel de verbosidad, las opciones son Trace (más verboso), Debug (menos verboso, menos bichos), Info (aún menos verboso, predeterminado) y Data (solo resultados). Por ejemplo, -v debug
-m Habilita y asigna un directorio de salida para que Snaffler copie automáticamente (o "Snaffle", si se quiere) cualquier archivo encontrado que le guste.
-l Tamaño máximo de archivos (en bytes) a "Snafflear". El valor predeterminado es 10000000, que es aproximadamente 10 MB.
-i Deshabilita el descubrimiento de equipos y recursos compartidos, requiere una ruta a un directorio en el que realizar el descubrimiento de archivos.
-n Deshabilita el descubrimiento de equipos, toma una lista separada por comas de hosts o un archivo de entrada para realizar el descubrimiento de recursos compartidos y archivos. Nota: si se proporciona un archivo, la entrada debe ser una ruta, por ejemplo, C:\targets.txt o .\targets.txt.
-y Formatea la salida en TSV.
-b Omite las reglas LAIM que encontrarán cosas menos interesantes, ajústalo con un número entre 0 y 3.
-f Limita a Snaffler a encontrar recursos compartidos de archivos mediante DFS (Sistema de Archivos Distribuido); esto debería ser bastante más sigiloso que el valor predeterminado, aunque cubre los recursos compartidos más grandes en muchas organizaciones.
-a Omite la enumeración de archivos, solo te da una lista de recursos compartidos legibles en los hosts objetivo.
-u Hace que Snaffler obtenga una lista de nombres de cuentas de AD, elija los que parezcan más interesantes y luego los use en una regla de búsqueda.
-d Dominio para buscar equipos en los que buscar recursos compartidos para buscar archivos. Fácil.
-c Controlador de dominio para consultar la lista de equipos del dominio.
-r Tamaño máximo de archivo (en bytes) para buscar dentro de cadenas interesantes. El valor predeterminado es 500k.
-j Cuántos bytes de contexto a cada lado de las cadenas encontradas en los archivos mostrar, por ejemplo, -j 200
-z Ruta a un archivo de configuración que define todo lo anterior, ¡y mucho más! Consulta abajo para más detalles. Dale -z generate para generar un archivo de configuración de muestra llamado .\default.toml.
-t Tipo de registro que deseas generar. Las opciones admitidas actualmente son plain y JSON. El valor predeterminado es plain.
-x Número máximo de hilos a usar. No lo pongas por debajo de 4 o se romperá.
-p Ruta a un directorio lleno de archivos de reglas en formato .toml. Snaffler cargará todos ellos en lugar del conjunto de reglas predeterminado.
Con suerte, este ejemplo anotado ayudará:
Esta entrada de registro debe leerse aproximadamente de izquierda a derecha como:
... y el resto de la línea (en gris) es un pequeño fragmento de contexto del archivo donde se encontró la coincidencia.
En este caso, hemos encontrado valores de validationKey y decryptionKey de ASP.NET, lo que podría permitirnos RCE en la aplicación web mediante algún truco de deserialización. ¡Hurra!
Nota: después de que se tomó esta captura de pantalla, Sh3r4 agregó una función para anteponer el usuario actual y el nombre de host a cada línea. No quiero repetir la captura de pantalla.
Cada método mágico de búsqueda de archivos de I.A.A.M. hace cosas como:
Buscar por coincidencia exacta de extensión de archivo, lo que significa que cualquier archivo con una extensión que coincida con la lista de palabras relevante será devuelto. Esto está pensado para extensiones de archivo que casi siempre contienen caramelo, por ejemplo, .kdbx, .vmdk, .ppk, etc.
Buscar por coincidencia exacta de nombre de archivo (sin distinción de mayúsculas/minúsculas). Esto está pensado para nombres de archivo que casi siempre contienen caramelo, por ejemplo, id_rsa, shadow, NTDS.DIT, etc.