Escáner simple de indicador de compromiso o IOC.
La detección se basa en cuatro métodos de detección:
- Nombre de archivo IOC: La coincidencia Regex en la ruta/nombre del archivo completo
- Comprobación de las reglas de Yara: La firma de Yara coincide con la de los datos de los archivos y la memoria del proceso
- Comprobación Hash: Compara los hashe s(MD5, SHA1, SHA256) maliciosos conocidos con los archivos escaneados
- Comprobación conexión trasera C2: Compara los puntos finales de conexión de los procesos con las C2 de IOC (nuevo desde la versión v.10)
Chequeos adicionales:
- Comprobación del sistema de archivos Regin (mediante
--reginfs
) - Comprobación de anomalías de proceso (basado en Sysforensics)
- Escaneo descomprimido de SWF (nuevo desde la versión v0.8)
- Comprobación de volcado SAM
- Comprobación de DoublePulsar – intenta detectar la puerta trasera de DoublePulsar en el puerto 445/tcp y 3389/tcp
- Comprobación del proceso PE-Sieve
El binario de Windows está compilado con PyInstaller 2.1 y debería funcionar como una aplicación x86 en sistemas basados en x86 y x64.
Descargar
Descarga la última versión de LOKI de la sección de lanzamientos.
Cómo ejecutar LOKI y analizar los informes
EJECUCIÓN
- Descarga la última versión de LOKI de la sección releases
- Ejecutarlo una vez para recuperar el último repositorio de la base de firmas
- Proporcionar la carpeta a un sistema de destino que debe ser escaneado: medios extraíbles, compartir en red, carpeta en el sistema de destino
- Haz clic con el botón derecho del ratón en loki.exe y seleccione “Ejecutar como Administrador” o abre una línea de comandos “cmd.exe” como Administrador y ejecútala desde allí (también puedes ejecutar LOKI sin privilegios administrativos, pero algunas comprobaciones se desactivarán y los objetos relevantes del disco no serán accesibles)
REPORTES
- El informe resultante mostrará una línea de resultado VERDE, AMARILLA o ROJA.
- Por favor, analiza los resultados:
- subiendo muestras no confidenciales a Virustotal.com
- Busca en la web el nombre del archivo
- Busca en la web palabras clave del nombre de la regla (por ejemplo, EQUATIONGroupMalware_1 > busca “Equation Group”)
- Busca en la web el hash MD5 de la muestra
- Buscar en el motor de búsqueda cliente APT los nombres de archivo o identificadores customer APT search engine
- Por favor, informa de los falsos positivos a través de la sección de Issues Issues (mencione el indicador de falso positivo como un hash y/o nombre de archivo y el nombre de la regla que lo provocó)
Actualizar
Desde la versión 0.21.0 LOKI incluye una herramienta actualizadora separada llamada loki-upgrader.exe
o loki-upgrader.py
.
usage: loki-upgrader.py [-h] [-l log-file] [--sigsonly] [--progonly] [--nolog]
[--debug]
Loki - Upgrader
optional arguments:
-h, --help show this help message and exit
-l log-file Log file
--sigsonly Update the signatures only
--progonly Update the program files only
--nolog Don't write a local log file
--debug Debug output
Permite actualizar el loki.exe compilado para Windows y las fuentes de la base de firmas.
Al ejecutar loki.exe --update
creará un nuevo proceso de actualización y saldrá de LOKI para reemplazar el loki.exe por el nuevo, que de otra manera estaría bloqueado.
Uso
usage: loki.exe [-h] [-p path] [-s kilobyte] [-l log-file] [-r remote-loghost]
[-a alert-level] [-w warning-level] [-n notice-level]
[--printAll] [--allreasons] [--noprocscan] [--nofilescan]
[--scriptanalysis] [--rootkit] [--noindicator] [--reginfs]
[--dontwait] [--intense] [--csv] [--onlyrelevant] [--nolog]
[--update] [--debug]
Loki - Simple IOC Scanner
optional arguments:
-h, --help show this help message and exit
-p path Path to scan
-s kilobyte Maximum file size to check in KB (default 5000 KB)
-l log-file Log file
-r remote-loghost Remote syslog system
-a alert-level Alert score
-w warning-level Warning score
-n notice-level Notice score
--printAll Print all files that are scanned
--allreasons Print all reasons that caused the score
--noprocscan Skip the process scan
--nofilescan Skip the file scan
--scriptanalysis Activate script analysis (beta)
--rootkit Skip the rootkit check
--noindicator Do not show a progress indicator
--reginfs Do check for Regin virtual file system
--dontwait Do not wait on exit
--intense Intense scan mode (also scan unknown file types and all
extensions)
--csv Write CSV log format to STDOUT (machine processing)
--onlyrelevant Only print warnings or alerts
--nolog Don't write a local log file
--update Update the signatures from the "signature-base" sub
repository
--debug Debug output
Construir LOKI
No hay requisitos si utiliza los ejecutables precompilados en la sección de releases de este repo.
Si quieres construir LOKI por ti mismo:
Linux o OS X
- yara : sólo tienes que usar el código fuente de la última versión, compilarlo e instalarlo (o instalarlo a través de pip install yara-python)
- Algunos paquetes de Python:
pip install yara-python psutil netaddr pylzma colorama
Windows
- yara: Se recomienda utilizar la versión más reciente de los paquetes compilados para Windows
- pywin32: conversiones de rutas (issue con PyInstaller; sólo para Windows)
- Microsoft Visual C++ 2010 Redistributable Package (aquí)
- Microsoft Visual C++ Compiler for Python 2.7 (aquí): para pylzma
c:\Python27[-x64]\python.exe -m pip install --upgrade pip
pip.exe install psutil netaddr wmi colorama pylzma pycrypto yara-python pywin32 rfc5424-logging-handler setuptools==19.2 pyinstaller==2.1
Empaquetar LOKI con conjunto de reglas privadas
LOKI puede ser empaquetado con un conjunto de reglas encriptadas personalizadas, que está incrustado en el paquete pyinstaller. Para incluir tus propias reglas colóquelas en un directorio llamado private-signatures
en el directorio de LOKI y ejecuta build.bat
.
loki/
├── private-signatures/ <-- YARA rules places in here will by added to loki.exe
├── signature-base/ <-- clear text and still required (retrieved by loki-upgrader.exe)
│ ├── iocs/
│ ├── yara/
Para poder ejecutar con éxito el script de construcción, necesitas instalar PyInstaller. Usamos PyInstaller 2.1 debido al problema de que los paquetes construidos con PyInstaller 3 no funcionan en sistemas basados en Windows 2003 y XP. (sí, necesitamos eso en respuesta a incidentes – hay incluso sistemas productivos que funcionan con Windows 2000 o Windows NT)
La forma más fácil de hacer la instalación de PyInstaller es:
pip install pyinstaller==2.1
Después de eso, puedes ejecutar el script build.
build.bat
Puede verificar si el conjunto de firmas es válido llamando a loki-package-builder.py
manualmente.
C:\Python27[-x64]\python.exe loki-package-builder.py --ruledir signatures --target rules
El uso de esta herramienta es:
usage: loki-package-builder.py [-h] --ruledir RULEDIR --target TARGET
Package builder for Loki
optional arguments:
-h, --help show this help message and exit
--ruledir RULEDIR directory containing the rules to build into Loki
--target TARGET target where to store the compiled ruleset
Exclusiones definidas por el usuario
Desde la versión v0.16.2 LOKI soporta la definición de exclusiones definidas por el usuario a través de “excludes.cfg” en la nueva carpeta “./config“. Cada línea representa una expresión regular que se aplica a la ruta completa del archivo durante el recorrido del directorio. De esta forma, se pueden excluir determinados directorios independientemente del nombre de la unidad o de las extensiones de archivo de determinadas carpetas y todos los archivos y directorios que pertenezcan a un producto que sea sensible al análisis antivirus.
El archivo ” exclude.cfg” tiene el siguiente aspecto:
# Excluded directories
#
# - add directories you want to exclude from the scan
# - double escape back slashes
# - values are case-insensitive
# - remember to use back slashes on Windows and slashes on Linux / Unix / OSX
# - each line contains a regex that matches somewhere in the full path (case insensitive)
# e.g.:
# Regex: \\System32\\
# Matches C:\Windows\System32\cmd.exe
#
# Regex: /var/log/[^/]+\.log
# Matches: /var/log/test.log
# Not Matches: /var/log/test.gz
#
# Useful examples
\\Ntfrs\\
\\Ntds\\
\\EDB[^\.]+\.log
Sysvol\\Staging\\Nntfrs_cmp
\\System Volume Information\\DFSR
Capturas de Pantalla
Escáner Loki

Salida del escáner de la línea de comando

Hash basados en IOC

Nombre de archivo basado en IOC

Archivo de registro generado

Compilar el escáner
Descarga PyInstaller v2.1, cambie al directorio del programa pyinstaller y ejecútalo:
python ./pyinstaller.py -F C:\path\to\loki.py
Esto creará un loki.exe
en la subcarpeta./loki/dist
.
Usar LOKI en Mac OS X
- Descarg las fuentes desde aquí
- Instala openssl
brew install openssl
sudo cp -r /usr/local/Cellar/openssl/1.0.2h_1/include /usr/local)
./build.sh
sudo make install
cd yara-python
python setup.py install
sudo pip install colorama ... (#more)
- Descarga y desempaqueta esto en la carpeta Loki
cd loki
sudo python loki.py -p /
Alternativas
Aunque LOKI es el único escáner de código abierto en nuestra línea de escáneres y un proyecto puramente privado, puede que también te interese el nuevo escáner gratuito SPARK Core, que no es de código abierto sino precompilado para Windows, Linux y macOS.

Antivirus – Falsos positivos
El escáner compilado puede ser detectado por los motores antivirus. Esto se debe a que el escáner es un script python compilado que implementa algunas características de escaneo de sistemas de archivos y procesos que también se utilizan en el código de malware compilado.
Si no confías en el ejecutable compilado, compílalo tú mismo.
Loki (este enlace se abre en una nueva ventana) por Neo23x0 (este enlace se abre en una nueva ventana)
Loki – Simple IOC and Incident Response Scanner