
Respuesta a Incidentes - Buscador rápido de archivos sospechosos

# FastFinder
**Una herramienta ligera de respuesta a incidentes para la caza de amenazas y el triage forense**
[](https://golang.org)
[](LICENSE)
[](https://github.com/codeyourweb/fastfinder/releases)
[](https://github.com/codeyourweb/fastfinder/actions)
[](https://github.com/codeyourweb/fastfinder/actions)
[](#installation)
## ✨ Descripción general
FastFinder es una herramienta de respuesta a incidentes potente y ligera diseñada para profesionales de la ciberseguridad que realizan caza de amenazas, análisis forense en vivo y triage de endpoints. Construida para las plataformas Windows y Linux, sobresale en el descubrimiento rápido de archivos sospechosos utilizando múltiples criterios de detección.
### 🔍 Capacidades clave de detección
- **Detección basada en ruta**: Coincidencia de patrones de ruta y nombre de archivo
- **Verificación de hash**: Validación de suma de comprobación MD5, SHA1 y SHA256
- **Análisis de contenido**: Coincidencia de cadenas simple y evaluación compleja de reglas YARA
- **Soporte multiplataforma**: Compatibilidad nativa con Windows y Linux
### 🛡️ Probado en batalla
- ✅ **Listo para producción**: Desplegado con éxito en escenarios reales de respuesta a incidentes
- ✅ **Validado por la industria**: Utilizado por múltiples equipos CERT, CSIRT y SOC
- ✅ **Ejemplos completos**: Incluye muestras reales de malware y escenarios de escaneo de vulnerabilidades
## 📸 Capturas de pantalla

*Interfaz de usuario básica*

*Selección de configuración*

*Resultados del escaneo y coincidencias*
</details>
## 🚀 Instalación
### Inicio rápido (Recomendado)
**📥 [Descargar Última Versión](https://github.com/codeyourweb/fastfinder/releases/latest)**
### Compilación desde el código fuente
> ⚠️ **Nota**: La compilación requiere dependencias CGO y YARA. Consulte las guías específicas de cada plataforma:
- 🪟 **Windows**: [Guía de compilación](https://github.com/codeyourweb/fastfinder/blob/master/README.windows-compilation.md)
- 🐧 **Linux**: [Guía de compilación](https://github.com/codeyourweb/fastfinder/blob/master/README.linux-compilation.md)
### Instalación con Docker (¡Sin dependencias requeridas!)
La forma más fácil de compilar FastFinder sin instalar dependencias:
```bash
# Build binaries for Linux and Windows
cd docker
make build-binaries
# Binaries will be in ./bin/
# - fastfinder-linux-amd64
# - fastfinder-windows-amd64.exe
```
#### Contenedor de ejecución Docker
Ejecute FastFinder dentro de un contenedor Docker privilegiado para escanear volúmenes o sistemas de archivos montados:
```powershell
# Build the runtime image (includes FastFinder + YARA + editors)
.\docker-helper.ps1 build-runtime
# Run scan with configuration directory
.\docker-helper.ps1 run-runtime -ConfigPath "C:\path\to\config_folder" -ScanPath "C:\data\to\scan"
# Interactive shell mode (no scan, just shell access)
.\docker-helper.ps1 run-runtime -Interactive
```
### Requisitos
- **Tiempo de ejecución**: No se requieren dependencias para binarios precompilados
- **Compilación**: Go 1.24+, CGO, libyara
- **Privilegios**: Se recomiendan derechos de administrador para acceso completo al sistema
## 📖 Uso
### Interfaz de línea de comandos
```bash
fastfinder [OPTIONS]
```
### Opciones disponibles
| Opción | Descripción | Predeterminado |
|--------|-------------|----------|
| `-h, --help` | Muestra información de ayuda | |
| `-c, --configuration <yaml config file>` | Ruta del archivo de configuración | |
| `-b, --build <output executable>` | Crea un binario independiente con configuración incrustada (solo arquitectura x64) | |
| `-r, --root <Path>` | Ruta raíz de escaneo (anula la enumeración de unidades) | |
| `-s, --silent` | Modo silencioso - ejecutar sin ninguna ventana o consola visible | |
| `-v, --verbosity <verbosityLevel>` | Nivel de verbosidad de registro (1-5) | `3` |
| `-t, --triage` | Modo de monitoreo continuo | `false` |
### Niveles de verbosidad
- **Nivel 1**: Solo alertas
- **Nivel 2**: Alertas y advertencias
- **Nivel 3**: Alertas y errores (predeterminado)
- **Nivel 4**: Alertas, errores y operaciones de E/S
- **Nivel 5**: Verbosidad completa (con fines de depuración o registro realmente avanzado)
### Ejemplos rápidos
```bash
# Basic scan with configuration file
./fastfinder -c config.yaml
# Continuous monitoring mode
./fastfinder -c config.yaml -t
# Create standalone executable (x64 architecture only)
./fastfinder -c config.yaml -b standalone_scanner.exe
```
> 💡 **Consejo**: FastFinder puede ejecutarse con privilegios de usuario estándar, pero los derechos de administrador proporcionan acceso a todos los archivos del sistema.
### Escanear y exportar coincidencias de archivos según sus necesidades
Los ejemplos de configuración están disponibles [allí](https://github.com/codeyourweb/fastfinder/blob/master/examples). Aquí hay un ejemplo completo de configuración en blanco. No es necesario implementar todos los atributos si no se utiliza todo.
```yaml
input:
path: [] # match file path AND / OR file name based on simple string
content:
grep: [] # match literal string value inside file content
yara: [] # use yara rule and specify rules path(s) for more complex pattern search (wildcards / regex / conditions)
checksum: [] # parse for md5/sha1/sha256 in file content
options:
contentMatchDependsOnPathMatch: true # if true, paths are a pre-filter for grep (string) searches only. YARA and Checksums are always evaluated.
findInHardDrives: true # enumerate hard drive content
findInRemovableDrives: true # enumerate removable drive content
findInNetworkDrives: true # enumerate network drive content
findInCDRomDrives: true # enumerate physical CD-ROM and mounted iso / vhd...
findInMemory: true # check for results in processes memory
output:
copyMatchingFiles: true # create a copy of every matching file
base64Files: true # base64 matched content before copy
filesCopyPath: '' # empty value will copy matched files in the fastfinder.exe folder
advancedparameters:
yaraRC4Key: '' # yara rules can be (un)/ciphered using the specified RC4 key
maxScanFilesize: 2048 # ignore files up to maxScanFileSize Mb (default: 2048)
cleanMemoryIfFileGreaterThanSize: 512 # clean fastfinder internal memory after heavy file scan (default: 512Mb)
eventforwarding:
enabled: true
buffer_size: 5
flush_time_seconds: 10
file: # save app activity in jsonl files
enabled: true
directory_path: "./event_logs"
rotate_minutes: 1 # Rotate every minute for testing
max_file_size_mb: 1 # Rotate at 1MB for testing
retain_files: 5 # Keep 5 old files
http: # forward app activity with HTTP POST json data
enabled: false
url: "https://your-forwarder-url.com/api/events"
ssl_verify: false
timeout_seconds: 10
headers:
Authorization: "Bearer YOUR_API_KEY"
MY-CUSTOM-HEADER: "My-Header-Value"
retry_count: 3
filters:
event_types:
- "error"
- "warning"
- "alert"
- "info"
```
### Buscar en todas partes o en rutas especificadas:
* use '?' en rutas para comodín de un carácter (ej. powershe??.exe)
* use '\\\*' en rutas para comodín de múltiples caracteres (ej. \\\*.exe)
* las expresiones regulares también están disponibles, solo encierre las rutas con barras (ej. /[0-9]{8}\\.exe/)
* también se pueden usar variables de entorno (ej. %TEMP%\\myfile.exe)
### Resolución de rutas de reglas YARA
**Las rutas relativas en la configuración YAML se resuelven en relación con la ubicación del archivo de configuración:**
```yaml
input:
content:
yara:
- "./example_rule_linux.yar" # Looks in same folder as config.yaml
- "./subfolder/custom_rules.yar" # Looks in subfolder relative to config
- "/absolute/path/to/rule.yar" # Absolute paths work as-is
- "https://example.com/rules.yar" # URLs are also supported
```
Estructura de directorios de ejemplo:
```
project/
├── config.yaml
├── example_rule_linux.yar # ✅ Found by "./example_rule_linux.yar"
└── rules/
└── custom.yar # ✅ Found by "./rules/custom.yar"
```
### Notas importantes
* las rutas de entrada siempre son INSENSIBLES a mayúsculas/minúsculas
* la búsqueda de contenido en cadenas (grep) siempre es SENSIBLE a mayúsculas/minúsculas
* las barras invertidas DEBEN escaparse (excepto con expresiones regulares)
* **Las reglas YARA deben existir** - la falta de reglas hará que FastFinder se cierre con un error
Para más información, eche un vistazo a los [ejemplos](https://github.com/codeyourweb/fastfinder/blob/master/examples)
## 🤝 Contribuciones
¡Agradecemos las contribuciones! Consulte nuestras pautas de contribución:
1. **Haga un fork** del repositorio
2. **Cree** una rama de características (`git checkout -b feature/amazing-feature`)
3. **Confirme** sus cambios (`git commit -m 'Add amazing feature'`)
4. **Empuje** a la rama (`git push origin feature/amazing-feature`)
5. **Abra** un Pull Request
### Configuración de desarrollo
```bash
# Clone the repository
git clone https://github.com/codeyourweb/fastfinder.git
cd fastfinder
# Install dependencies (see compilation guides)
# Build from source
go build -tags yara_static,gio -a -ldflags '-s -w' .
# Run tests
go test ./...
```
## 📜 Licencia
Este proyecto está bajo la licencia AGPL - consulte el archivo [LICENSE](https://github.com/codeyourweb/fastfinder/blob/master/LICENSE) para más detalles.
## 🚀 Soporte
- **🐛 Reportar problemas**: [GitHub Issues](https://github.com/codeyourweb/fastfinder/issues)
- **💬 Discusiones**: [GitHub Discussions](https://github.com/codeyourweb/fastfinder/discussions)
- **📧 Seguridad**: Reporte vulnerabilidades de seguridad de forma privada
## 📊 Estadísticas del proyecto


## 🙏 Agradecimientos
* **Hilko Bengen (@hillu)** por su maravillosa [implementación de yara en Go](https://github.com/hillu/go-yara) y también por su valiosa ayuda depurando problemas de CGO
* **Marc Ochsenmeier** por su valiosa ayuda, comentarios y también por haber hablado sobre mi proyecto
* **Vitali Kremez** ✝ por inspirarme en muchos aspectos que me llevaron a construir fastfinder
* **m0n4** (https://github.com/m0n4) por desafiarme técnicamente con regularidad y contribuir mucho más al nacimiento de este proyecto de lo que él podría imaginar.
---
**Hecho con ❤️ por la comunidad de ciberseguridad**
Creado por Jean-Pierre GARNIER (@codeyourweb) • 2021-2026