Loki IOC y Escáner de Respuesta a Incidentes
Loki IOC y Escáner de Respuesta a Incidentes

Loki: IOC Simple y Escáner de Respuesta a Incidentes

Escáner simple de indicador de compromiso o IOC.

La detección se basa en cuatro métodos de detección:

  1. Nombre de archivo IOC: La coincidencia Regex en la ruta/nombre del archivo completo
  2. 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
  3. Comprobación Hash: Compara los hashe s(MD5, SHA1, SHA256) maliciosos conocidos con los archivos escaneados
  4. 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:

  1. Comprobación del sistema de archivos Regin (mediante --reginfs)
  2. Comprobación de anomalías de proceso (basado en Sysforensics)
  3. Escaneo descomprimido de SWF (nuevo desde la versión v0.8)
  4. Comprobación de volcado SAM
  5. Comprobación de DoublePulsar – intenta detectar la puerta trasera de DoublePulsar en el puerto 445/tcp y 3389/tcp
  6. 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:
    1. subiendo muestras no confidenciales a Virustotal.com
    2. Busca en la web el nombre del archivo
    3. Busca en la web palabras clave del nombre de la regla (por ejemplo, EQUATIONGroupMalware_1 > busca “Equation Group”)
    4. Busca en la web el hash MD5 de la muestra
    5. 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

Escáner Loki
Escáner Loki

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

Loki con CMD
Loki con CMD

Hash basados en IOC

Loki y Hash
Loki y Hash

Nombre de archivo basado en IOC

Loki y nombre de archivo
Loki y nombre de archivo

Archivo de registro generado

Registros en Loki
Registros en Loki

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.

Escáner alternativo a LOKI
Escáner alternativo a LOKI

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.

Más artículos
Información del Clima con PowerShell
Como ver la Información del Clima con PowerShell