
🐍 Escáner YARA & IOC de alto rendimiento y multi-hilo

Una reescritura de Loki en Rust. Escáner YARA e IOC de alto rendimiento y múltiples hilos en un único binario.
Estado: Beta. Funciona, pero aún en desarrollo activo.
El escaneo de memoria de procesos en macOS se realiza con el mejor esfuerzo y normalmente requiere capacidades de depuración o privilegios elevados. Sin ellos, Loki-RS seguirá escaneando archivos pero no podrá leer la mayoría de la memoria de procesos. Use --no-procs para omitir el escaneo de procesos si es necesario.
En Linux, Loki-RS omite los mapeos de procesos respaldados por dispositivos y los especiales del kernel antes de leer /proc/<pid>/mem. Esto evita la inestabilidad conocida con algunas VMA gestionadas por controladores, mientras preserva el escaneo normal de memoria anónima, heap/stack y archivos regulares respaldados. Si aún encuentra problemas específicos del entorno, use --no-procs para deshabilitar el escaneo de procesos.
Descargue el binario precompilado para su plataforma desde la Página de Lanzamientos.
# Extraer
tar -xzvf loki-linux-*.tar.gz
cd loki-linux-*
# Actualizar firmas (recomendado)
./loki-util update
# Ejecutar
sudo ./loki --help
Las firmas se incluyen con el lanzamiento pero quedan obsoletas rápidamente. Ejecute loki-util update para obtener las últimas reglas YARA-Forge Core.
Loki-RS utiliza YARA Forge como fuente de firmas predeterminada. Loki-RS incluye y actualiza el conjunto de reglas Core (alta precisión, bajos falsos positivos, optimizado para rendimiento). Si necesita una cobertura más amplia, puede reemplazarlo por los conjuntos Extended o Full de YARA Forge.
Los archivos IOC en signatures/iocs/ siguen siendo compatibles como contenido local/personalizado opcional.
# Escaneo básico (TUI habilitada por defecto)
sudo ./loki
# Escanear carpeta específica
sudo ./loki --folder /tmp
# Deshabilitar TUI, usar salida estándar de línea de comandos
sudo ./loki --no-tui
# Escanear una imagen montada (omitir escaneo de procesos, usar todos los núcleos)
sudo ./loki --no-procs --folder ~/image1 --threads 0
# Escaneo lento y cauteloso (límite de CPU bajo, un solo hilo)
sudo ./loki --cpu-limit 60 --threads 1
# Escanear y enviar logs a syslog remoto
sudo ./loki --remote syslog-host.internal:514 --remote-proto udp


| Opción | Predeterminado | Descripción |
|---|---|---|
-f, --folder <RUTA> | / | Carpeta a escanear. Use comillas en rutas con espacios, p.ej. -f "J:\SteamLibrary\steamapps\common\SpaceCraft beta" |
| Opción | Predeterminado | Descripción |
|---|---|---|
--no-procs | false | Omitir escaneo de memoria de procesos |
--no-fs | false | Omitir escaneo del sistema de archivos |
--no-archive | false | Omitir escaneo dentro de archivos comprimidos (ZIP) |
--scan-all-drives | false | Escanear todas las unidades, incluyendo montadas/red/nube |
--scan-all-files | false | Escanear todos los archivos independientemente de extensión/tipo |
| Opción | Predeterminado | Descripción |
|---|---|---|
-l, --log <ARCHIVO> | auto | Archivo de log en texto plano |
--no-log | false | Deshabilitar salida de log en texto plano |
-j, --jsonl <ARCHIVO> | auto | Archivo de salida JSONL |
--no-jsonl | false | Deshabilitar salida JSONL |
--no-html | false | Deshabilitar generación de informe HTML |
--no-tui | false | Deshabilitar TUI, usar salida estándar de línea de comandos |
-r, --remote <HOST:PUERTO> | none | Destino syslog remoto |
-p, --remote-proto <PROTO> | udp | Protocolo remoto (udp/tcp) |
--remote-format <FORMATO> | syslog | Formato remoto (syslog/json) |
| Opción | Predeterminado | Descripción |
|---|---|---|
--alert-level <PUNTUACIÓN> | 80 | Umbral de puntuación para ALERTA |
--warning-level <PUNTUACIÓN> | 60 | Umbral de puntuación para ADVERTENCIA |
--notice-level <PUNTUACIÓN> | 40 | Umbral de puntuación para AVISO |
--max-reasons <NÚM> | 2 | Máximo de razones de coincidencia a mostrar por hallazgo |
-m, --max-file-size <BYTES> | 64000000 | Tamaño máximo de archivo a escanear (64MB) |
--yara-timeout <SEGUNDOS> | 10 | Tiempo máximo de escaneo YARA para cada archivo o búfer de memoria de proceso (mínimo: 1 segundo) |
-c, --cpu-limit <PORCENTAJE> | 100 | Límite de uso de CPU (1-100) |
--threads <NÚM> | -2 | Número de hilos (0=todos, -1=todos-1, -2=todos-2) |
| Opción | Predeterminado | Descripción |
|---|---|---|
--version | - | Mostrar versión y salir |
-d, --debug | false | Mostrar salida de depuración |
--trace | false | Mostrar salida detallada de traza |
--show-access-errors | false | Mostrar errores de acceso a archivos/procesos |
Loki-RS proporciona múltiples mecanismos para excluir archivos y carpetas de los escaneos.
Por defecto, Loki-RS excluye automáticamente:
Directorios del sistema (Linux/macOS):
/proc, /dev, /sys/kernel/debug, /sys/kernel/slab, /sys/kernel/tracing, /sys/devices/run, /var/runDirectorios de almacenamiento en la nube (a menos que se use --scan-all-drives):
Unidades de red y montadas (a menos que se use --scan-all-drives):
/media, /volumesDirectorio del programa:
| Opción | Descripción |
|---|---|
--scan-all-drives | Incluir unidades montadas, de red y almacenamiento en la nube |
--scan-all-files | Escanear todos los archivos independientemente de tipo/extensión (por defecto, solo se escanean tipos de archivo relevantes) |
-m, --max-file-size <BYTES> | Omitir archivos más grandes que este tamaño (por defecto: 64MB) |
--no-procs | Omitir escaneo de memoria de procesos por completo |
--no-fs | Omitir escaneo del sistema de archivos por completo |
--no-archive | Omitir escaneo dentro de archivos comprimidos (ZIP) |