
Triaje de exposición de credenciales y datos sensibles para recursos compartidos de archivos
Triaje de exposición de credenciales y datos sensibles para recursos compartidos de archivos.
Cuando aparece un recurso compartido abierto, la pregunta nunca es "¿este repositorio tiene una clave filtrada". Es "¿qué se ha expuesto y qué tengo que rotar antes del cierre del día?" sift está construido para esa pregunta: alta exhaustividad, una cola de revisión rápida, y un bucle de retroalimentación para que cualquier cosa que detectes a simple vista se convierta en una regla que encuentre las otras doscientas copias.

Python 3.11+, solo biblioteca estándar. Sin pip install, sin internet, sin paso de compilación. Se ejecuta en un portátil de IR bloqueado, que es donde lo necesitas.```bash sift survey \fileserver\openshare # how big is this thing sift copy \fileserver\openshare C:\IR\case-4471 # take a throttled copy sift scan C:\IR\case-4471 # scan it, opens the triage UI
Escanear en el lugar también funciona. Pruébelo primero en un recurso compartido de credenciales fabricadas:```bash
sift demo C:\temp\demoshare
sift.cmd es un lanzador que funciona desde cualquier directorio. Para escribir sift en lugar
de la ruta completa, añade C:\Dev\sift a PATH:```bash
setx PATH "%PATH%;C:\Dev\sift"
Para una máquina sin Python en absoluto, `python build_portable.py` genera
`dist/sift-secrets-<version>-portable-win64.zip`: el runtime embebible oficial de python.org
más este árbol de fuentes, listo para descomprimir y ejecutar mediante el
`sift.cmd` incluido. ~11 MB, sin instalación, sin derechos de administrador, y nada en él está
compilado ni reempaquetado — consulta el docstring en `build_portable.py` para saber por qué
eso supera a un .exe congelado en un portátil de IR bloqueado.
---
## Por qué no simplemente gitleaks o trufflehog
Ambas son buenas herramientas que resuelven un problema distinto.
Son herramientas de **precisión** creadas para CI, donde un falso positivo le cuesta a un
desarrollador toda la tarde, así que disparan principalmente sobre cosas con forma de
clave API de un proveedor conocido. trufflehog va más allá y prefiere secretos que puede
*verificar* llamando a la API del proveedor, lo cual es una señal genuinamente excelente que
el regex no puede reproducir.
El triaje de recursos compartidos invierte la ecuación. Un humano ya está leyendo cada
resultado, así que un falso positivo cuesta tres segundos. Lo que te cuesta es un **falso negativo**.
Las claves API de proveedores definitivamente se filtran en los recursos compartidos: una
copia de seguridad de la raíz web, un script de despliegue, la carpeta de proyecto de alguien
copiada a la unidad departamental, y hay un `.env` con una clave de Stripe activa dentro.
Esos casos merecen detectarse, y sift los detecta. Pero también son la parte que gitleaks y
trufflehog ya manejan bien. El hueco está en todo lo demás, y en un recurso compartido es la
mayor parte:
| Lo que los escáneres de CI pasan por alto | Por qué lo ignoran |
|---|---|
| `web.config` con una cadena de conexión SQL | No es un formato de clave conocido, no hay proveedor contra el que verificar |
| `Map-Drives.ps1` con `net use ... /user:` | Solo un comando de shell con una palabra detrás |
| `New Hire Setup Guide.docx` | Archivo de Office, leído como binario, omitido por completo |
| `unattend.xml`, GPP `Groups.xml` | Artefactos de despliegue de Windows para los que nadie escribió un detector |
| `confCons.xml`, `.rdg`, WinSCP.ini | Contraseñas almacenadas de forma reversible, pero no un "formato de secreto" |
| `passwords.xlsx` | Es un ZIP. Los escáneres de texto plano ven binario y continúan |
| `.kdbx`, `.pfx`, `id_rsa` | Bytes opacos: el *nombre de archivo* es el hallazgo |
| Un `.bak` con una cadena de conexión dentro | Binario, por lo que nunca se lee |
sift cubre esos casos, incluye sus propias reglas de claves de proveedor e **importa los
paquetes de reglas y hallazgos de otras herramientas** — TOML de gitleaks, YAML de
Kingfisher/Titus y JSON de trufflehog — para que no tengas que elegir entre herramientas.
El trabajo previo más cercano es [Snaffler](https://github.com/SnaffCon/Snaffler), que es
excelente en la mitad de nombres de archivo y clasificación de esto y es la inspiración
directa de las reglas de nombres de archivo. Lo que no tiene — y lo que resulta ser el
auténtico cuello de botella cuando tienes 400 hallazgos — es un bucle de revisión.
---
## El bucle
1. **Escanea** el recurso compartido.
2. **Trabaja la cola.** Cada hallazgo muestra sus líneas circundantes con la coincidencia
resaltada. Las teclas de flecha amplían el contexto; un clic abre el archivo completo en
VS Code en esa línea, o en Notepad.
3. **Detecta un fallo.** Lo harás. Resáltalo en la vista previa y pulsa `r`.
4. **sift propone patrones** y te dice en vivo cuántas veces coincidiría cada uno con todo
lo ya leído.
5. **Guárdalo.** El re-escaneo en caché tarda aproximadamente un segundo, y los nuevos
hallazgos aparecen en la cola con tus decisiones de triaje intactas.
El paso 5 es la parte que hace que el resto valga la pena. Los hallazgos se identifican por
`(path, rule, line, value-hash)`, así que un re-escaneo vuelve a insertar las mismas filas y tu
estado, notas y propietario se mantienen. Sin eso, tendrías que revisar de nuevo los mismos
300 hallazgos en cada iteración y abandonarías en la tercera.
---
## Comandos```bash
# size it up first: file count, total bytes, biggest folders, transfer estimates
sift survey \\fileserver\share
# take a rate-limited local copy (resumable; gentle = 5 MB/s by default)
sift copy \\fileserver\share C:\IR\case-4471 --speed gentle
# scan a share and open the triage UI
sift scan \\fileserver\share
# maximum recall: more noise, but a human is reading anyway
sift scan D:\dfs\dept --tier 3
# re-open the UI over the most recent scan
sift ui
# build a share of fabricated credentials, scan it, open the UI
sift demo C:\temp\demoshare
# inherit other tools' vendor-key rules, then use them in the live rescan loop
sift import-rules gitleaks.toml # gitleaks TOML
sift import-rules path/to/kingfisher/data/rules # a directory of YAML
# pull in what the other scanners found, into the same queue
trufflehog filesystem \\fileserver\share --json > th.json
sift import-findings th.json
# hand off to the incident record (redacted unless you say otherwise)
sift export --fmt pdf --status confirmed --out ir-4471.pdf
sift export --fmt csv --out ir-4471.csv
sift export --fmt pdf --no-redact # plaintext; handle as evidence
sift rules # what is loaded
sift selftest # detection tests against a synthetic share
# ask vendors whether confirmed findings are still live. NETWORK. Opt-in.
sift validate --status confirmed
Anywhere sift appears you can use python -m sift instead, from the
C:\Dev\sift directory.