
Scanneur basé sur les IOC et YARA pour détecter les indicateurs de compromission via des regex sur les noms de fichiers, des signatures YARA, la correspondance de hachages et des vérifications de connexion retour C2 sur les endpoints.
J'ai écrit un nouveau scanner YARA open source appelé LOKI RS (Rust). LOKI (Python) est désormais officiellement déprécié.
Ce projet est maintenant en mode de maintenance inactive. Cela signifie que bien que je fusionne les pull requests pour les corrections de bugs et les problèmes simples, je manque actuellement de temps pour ajouter de nouvelles fonctionnalités ou étendre les existantes. Depuis des années, mon attention s'est portée sur le développement d'un scanner plus avancé, THOR, qui offre une série d'améliorations par rapport à ce projet. Une version gratuite, THOR Lite, est disponible ; elle est plus rapide, plus stable et rigoureusement testée dans nos environnements CI — tout simplement une meilleure solution. Vous pouvez trouver une comparaison des scanners open source, gratuits et commerciaux ici.
J'ai également commencé à travailler sur une version de LOKI basée sur Rust appelée LOKI 2. Cependant, je ne sais pas quand elle atteindra la parité fonctionnelle avec la version actuelle de LOKI. De plus, j'ai créé un organigramme pour vous aider à décider quel scanner correspond le mieux à vos besoins.

Scanner pour indicateurs simples de compromission
La détection est basée sur quatre méthodes de détection :
1. IOC de nom de fichier
Correspondance regex sur le chemin/nom complet du fichier
2. Vérification de règle Yara
Correspondance de signature Yara sur les données de fichiers et la mémoire des processus
3. Vérification de hachage
Compare des hachages malveillants connus (MD5, SHA1, SHA256) avec les fichiers scannés
4. Vérification de connexion retour C2
Compare les points de terminaison de connexion des processus avec les IOC C2 (nouveau depuis la version v.10)
Vérifications supplémentaires :
1. Vérification du système de fichiers Regin (via --reginfs)
2. Vérification d'anomalies de processus (basée sur [Sysforensics](http://goo.gl/P99QZQ)
3. Scan SWF décompressé (nouveau depuis la version v0.8)
4. Vérification de vidage SAM
Le binaire Windows est compilé avec PyInstaller et devrait s'exécuter comme une application x86 sur les systèmes x86 et x64.
Aucun prérequis si vous utilisez l'EXE compilé.
Si vous voulez le compiler vous-même :
usage: loki.py [-h] [-p path] [-s kilobyte] [-l log-file] [-r remote-loghost]
[-t remote-syslog-port] [-a alert-level] [-w warning-level]
[-n notice-level] [--allhds] [--alldrives] [--printall]
[--allreasons] [--noprocscan] [--nofilescan] [--vulnchecks]
[--nolevcheck] [--scriptanalysis] [--rootkit] [--noindicator]
[--dontwait] [--intense] [--csv] [--onlyrelevant] [--nolog]
[--update] [--debug] [--maxworkingset MAXWORKINGSET]
[--syslogtcp] [--logfolder log-folder] [--nopesieve]
[--pesieveshellc] [--nolisten]
[--excludeprocess EXCLUDEPROCESS] [--force]
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
-t remote-syslog-port
Remote syslog port
-a alert-level Alert score
-w warning-level Warning score
-n notice-level Notice score
--allhds Scan all local hard drives (Windows only)
--alldrives Scan all drives (including network drives and
removable media)
--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
--vulnchecks Run the vulnerability checks
--nolevcheck Skip the Levenshtein distance check
--scriptanalysis Statistical analysis for scripts to detect obfuscated
code (beta)
--rootkit Skip the rootkit check
--noindicator Do not show a progress indicator
--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
--maxworkingset MAXWORKINGSET
Maximum working set size of processes to scan (in MB,
default 100 MB)
--syslogtcp Use TCP instead of UDP for syslog logging
--logfolder log-folder
Folder to use for logging when log file is not
specified
--nopesieve Do not perform pe-sieve scans
--pesieveshellc Perform pe-sieve shellcode scan
--nolisten Dot not show listening connections
--excludeprocess EXCLUDEPROCESS
Specify an executable name to exclude from scans, can
be used multiple times
--force Force the scan on a certain folder (even if excluded
with hard exclude in LOKI's code
Depuis la version 0.15, les signatures Yara résident dans le sous-dépôt signature-base. Vous n'obtiendrez pas le sous-dépôt en téléchargeant LOKI en tant que fichier ZIP. Il sera inclus lorsque vous clonerez le dépôt.
Les fichiers IOC pour les hachages et les noms de fichier sont stockés dans le dossier './signature-base/iocs'. Tous les fichiers '.yar' placés dans le dossier './signature-base/yara' seront initialisés avec l'ensemble de règles déjà inclus. Utilisez la valeur 'score' pour définir le niveau du message lors d'une correspondance de signature.
Vous pouvez ajouter des IOC de hachage, c2 et de nom de fichier en ajoutant des fichiers dans le sous-dossier './signature-base/iocs'. Tous les fichiers IOC de hachage et de nom de fichier doivent être au format utilisé par LOKI (voir les fichiers par défaut). Les fichiers doivent contenir les chaînes "hash", "filename" ou "c2" dans leur nom pour être récupérés lors de l'initialisation.
Pour les IOC de hachage (séparés par une nouvelle ligne)
Hash;Description [Reference]
Pour les IOC de nom de fichier (séparés par une nouvelle ligne)
# (optional) Description [Reference]
Filename as Regex[;Score as integer[;False-positive as Regex]]
Depuis la version v0.16.2, LOKI prend en charge la définition d'exclusions définies par l'utilisateur via "excludes.cfg" dans le nouveau dossier "./config". Chaque ligne représente une expression régulière qui est appliquée au chemin complet du fichier lors du parcours des répertoires. De cette façon, vous pouvez exclure certains répertoires quel que soit leur nom de lecteur, des extensions de fichier dans certains dossiers, et tous les fichiers et répertoires appartenant à un produit sensible à l'analyse antivirale.
Le fichier '''exclude.cfg''' ressemble à ceci :
# 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
Scan Loki

Correspondances Regin

Faux positifs Regin

IOC basés sur les hachages

IOC basés sur les noms de fichier

Fichier journal généré

Scanner LOKI sur notre page d'accueil d'entreprise https://www.nextron-systems.com/loki/
Twitter @cyb3rOps @thor_scanner
Si vous êtes intéressé par une solution d'entreprise pour le scan d'APT, jetez un œil au grand frère de Loki, THOR.
Téléchargez PyInstaller, accédez au répertoire du programme pyinstaller et exécutez :
python ./pyinstaller.py -F C:\path\to\loki.py
Cela créera un loki.exe dans le sous-dossier ./loki/dist.
Pour inclure la msvcr100.dll afin d'améliorer la compatibilité du système d'exploitation cible, modifiez la ligne du fichier ./loki/loki.spec qui contient a.binaries, comme suit :
a.binaries + [('msvcr100.dll', 'C:\Windows\System32\msvcr100.dll', 'BINARY')],
venv, puis exécutez python -m venv path/to/venv où path/to/venv est le chemin vers votre environnement virtuel. Testez votre environnement virtuel en exécutant path/to/venv/bin/python --version.
Mettez à niveau les modules de votre environnement virtuel pour pip, setuptools et wheel en exécutant path/to/venv/bin/python -m pip install --upgrade pip setuptools wheel.path/to/venv/bin/python -m pip install colorama yara-python psutil rfc5424-logging-handler netaddrpath/to/venv/bin/python path/to/loki/loki-upgrader.py où path/to/loki est le chemin du dépôt Loki.Téléchargez les sources Yara ici
Le scanner compilé peut être détecté par les moteurs antivirus. Cela est dû au fait que le scanner est un script python compilé qui implémente certaines fonctionnalités de scan de système de fichiers et de processus qui sont également utilisées dans le code malveillant compilé.
Si vous ne faites pas confiance à l'exécutable compilé, veuillez le compiler vous-même.
Loki - Scanner simple d'IOC Copyright (c) 2015 Florian Roth
Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la GNU General Public License telle que publiée par la Free Software Foundation, soit la version 3 de la Licence, soit (à votre discrétion) toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. Voir la GNU General Public License pour plus de détails.
Vous devriez avoir reçu une copie de la GNU General Public License avec ce programme. Sinon, voir http://www.gnu.org/licenses/
sudo path/to/venv/bin/python loki.py