
Сканер на основе IOC и YARA для обнаружения индикаторов компрометации с помощью проверки имен файлов по регулярным выражениям, сигнатур YARA, сопоставления хэшей и проверок обратных соединений C2 на конечных точках.
Я написал новый сканер YARA с открытым исходным кодом под названием LOKI RS (Rust). LOKI (Python) теперь официально устарел.
Этот проект сейчас находится в режиме пассивного обслуживания. Это означает, что я принимаю запросы на исправление ошибок и простые проблемы, но в настоящее время у меня нет времени на добавление новых функций или расширение существующих. В течение многих лет я сосредоточен на разработке более продвинутого сканера THOR, который предлагает ряд улучшений по сравнению с этим проектом. Доступна бесплатная версия THOR Lite; она быстрее, стабильнее и тщательно протестирована в наших CI-средах — просто лучшее решение. Сравнение сканеров с открытым исходным кодом, бесплатных и коммерческих можно найти здесь.
Я также начал работу над версией LOKI на Rust под названием LOKI 2. Однако я не уверен, когда она достигнет функциональной полноты текущего релиза LOKI. Кроме того, я создал блок-схему, которая поможет вам решить, какой сканер лучше всего подходит для ваших нужд.

Сканер для простых индикаторов компрометации
Обнаружение основано на четырех методах:
1. IOC по имени файла
Регулярное выражение для полного пути/имени файла
2. Проверка правил Yara
Совпадение сигнатур Yara по данным файла и памяти процессов
3. Проверка хеша
Сравнивает известные вредоносные хеши (MD5, SHA1, SHA256) с отсканированными файлами
4. Проверка обратного подключения C2
Сравнивает конечные точки подключений процессов с IOC C2 (новое с версии v.10)
Дополнительные проверки:
1. Проверка файловой системы Regin (через --reginfs)
2. Проверка аномалий процессов (на основе [Sysforensics](http://goo.gl/P99QZQ))
3. Сканирование распакованных SWF-файлов (новое с версии v0.8)
4. Проверка дампа SAM
Двоичный файл для Windows скомпилирован с помощью PyInstaller и должен работать как x86-приложение как на x86, так и на x64 системах.
Требования отсутствуют, если вы используете скомпилированный EXE.
Если хотите собрать сами:
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