
Сканер энтропии для Linux для обнаружения упакованных или зашифрованных двоичных файлов, связанных с вредоносным ПО. Находит вредоносные файлы и процессы Linux и выводит результат с криптографическими хэшами.
sandfly-entropyscan — это утилита для быстрого сканирования файлов или запущенных процессов и отчета об их энтропии (мере случайности) и о том, являются ли они исполняемыми файлами типа ELF для Linux/Unix. Некоторые вредоносные программы для Linux упакованы или зашифрованы и показывают очень высокую энтропию. Этот инструмент может быстро находить исполняемые файлы и процессы с высокой энтропией, которые часто являются вредоносными.
Энтропия — это мера случайности. Для двоичных данных 0.0 означает «не случайно», а 8.0 — «идеально случайно». Хорошая криптография выглядит как случайный белый шум и будет близка к 8.0. Хорошее сжатие удаляет избыточные данные, делая их более случайными, чем несжатые, и обычно составляет 7.7 или выше.
Многие вредоносные исполняемые файлы упакованы, чтобы избежать обнаружения и усложнить обратную разработку. Большинство стандартных бинарных файлов Linux не упакованы, потому что они не пытаются скрыть свою сущность. Поиск файлов с высокой энтропией — хороший способ найти программы, которые могут быть вредоносными, просто по двум признакам: высокая энтропия и исполняемость.
Использование sandfly-entropyscan:
-csv
вывод результатов в формате CSV (имя_файла, путь, энтропия, elf_file [true|false], MD5, SHA1, SHA256, SHA512)
-delim
изменяет разделитель по умолчанию для CSV-файлов с "," на выбранный вами ("|" и т.д.)
-dir string
имя каталога для анализа
-file string
полный путь к одному файлу для анализа
-proc
проверка запущенных процессов (по умолчанию только проверка ELF)
-elf
проверять только исполняемые файлы ELF
-entropy float
показывать любой файл/процесс с энтропией, большей или равной этому значению (мин. 0.0, макс. 8.0, по умолчанию 0 для отображения всех файлов)
-version
показать версию и выйти
Поиск любого исполняемого файла в /tmp:
sandfly-entropyscan -dir /tmp -elf
Поиск исполняемых файлов с высокой энтропией (7.7 и выше) (часто упакованных или зашифрованных) в /var/www:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Генерация энтропии и криптографических хэшей всех запущенных процессов в формате CSV:
sandfly-entropyscan -proc -csv
Поиск любого процесса с энтропией выше 7.7, указывающей на то, что он, вероятно, упакован или зашифрован:
sandfly-entropyscan -proc -entropy 7.7
Генерация энтропии и криптографических хэш-значений всех файлов в /bin и вывод в формате CSV (например, для сохранения и сравнения хэшей):
sandfly-entropyscan -dir /bin -csv
Сканирование каталога на наличие всех файлов (ELF или нет) с энтропией выше 7.7: (потенциально большой список файлов, таких как сжатые, png, jpg, объектные файлы и т.д.)
sandfly-entropyscan -dir /path/to/dir -entropy 7.7
Быстрая проверка файла с генерацией энтропии, криптографических хэшей и отображением, является ли он исполняемым:
sandfly-entropyscan -file /dev/shm/suspicious_file
Проводите выборочные проверки систем, в которых подозреваете наличие вредоносного ПО. Или автоматизируйте сканирование, чтобы получать вывод, если мы найдем что-то с высокой энтропией в неожиданном месте. Или просто помечайте любой исполняемый файл типа ELF, который находится в странном месте (например, в /tmp или в HTML-каталоге пользователя). Например:
Появился ли бинарный файл с высокой энтропией в каталоге /var/www? Возможно, кто-то разместил дроппер вредоносного ПО на вашем сайте:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Настройте задание cron для сканирования каталогов /tmp, /var/tmp и /dev/shm на наличие любых исполняемых файлов, независимо от их энтропии. Исполняемые файлы во временных каталогах часто могут быть дропперами вредоносного ПО.
sandfly-entropyscan -dir /tmp -elf
sandfly-entropyscan -dir /var/tmp -elf
sandfly-entropyscan -dir /dev/shm -elf
Настройте еще одно cron-задание или автоматическую проверку безопасности для выборочной проверки систем на наличие сильно сжатых или зашифрованных бинарных файлов, которые выполняются:
sandfly-entropyscan -proc -entropy 7.7
git clone https://github.com/sandflysecurity/sandfly-entropyscan.git
go build
./sandfly-entropyscan
Имеются несколько базовых скриптов сборки для различных платформ. Вы можете использовать их или изменить по своему усмотрению. Для специалистов по реагированию на инциденты может быть полезно держать готовые предварительно скомпилированные бинарные файлы на вашем инструментальном компьютере.
build.sh — сборка для текущей ОС, на которой вы выполняете скрипт.
Мы используем простой метод для определения, является ли файл исполняемым типом ELF. Мы можем обнаруживать файлы формата ELF для нескольких платформ. Даже если вредоносное ПО содержит бинарные файлы-дропперы для Intel/AMD, MIPS и Arm, мы все равно сможем их обнаружить.
Возможно срабатывание на легитимный бинарный файл с высокой энтропией из-за того, как он был скомпилирован, или потому что он был упакован по легитимным причинам. Другие файлы, такие как .zip, .gz, .png, .jpg и подобные, также имеют очень высокую энтропию, поскольку они являются сжатыми форматами. Сжатие удаляет избыточность в файле, что делает его более случайным и увеличивает энтропию.
В Linux вы можете обнаружить, что некоторые типы библиотек (.so файлы) отмечаются при сканировании каталогов библиотек.
Однако, по нашему опыту, исполняемые бинарные файлы с высокой энтропией часто являются вредоносными. Это особенно верно, если они находятся в областях, где исполняемые файлы обычно не должны быть (например, в каталогах tmp или html).
Расчет энтропии требует чтения всех байтов файла и их подсчета для получения конечного числа. Это может потреблять много процессорного времени и операций ввода-вывода, особенно для очень больших файловых систем или очень больших файлов. Программа имеет внутренний предел: она не будет вычислять энтропию для файлов размером более 2 ГБ, а также не будет пытаться вычислить энтропию для файлов, не являющихся обычными файлами (например, не будет пытаться вычислить энтропию для устройств типа /dev/zero).
Затем мы вычисляем хэши MD5, SHA1, SHA256 и SHA512. Каждый из них требует повторного прохода по файлу. Скорость работы адекватна на современных системах, но если вы сканируете очень большую файловую систему, это может занять некоторое время.
Если вы укажете программе проверять только файлы ELF, то вычисления энтропии/хэшей не будут выполняться, если файл не является типом ELF, что сэкономит много времени (например, будут игнорироваться массивные файлы баз данных, которые не являются исполняемыми).
Если вы хотите автоматизировать эту программу, лучше не заставлять ее обходить всю корневую файловую систему, если вам это не нужно. Целевой подход будет быстрее и полезнее для выборочных проверок. Кроме того, используйте флаг ELF, так как это значительно сократит время поиска за счет обработки только исполняемых типов файлов.
Для специалистов по реагированию на инциденты запуск sandfly-entropyscan против всего корневого каталога "/" может быть хорошей идеей, чтобы быстро получить список вероятных упакованных кандидатов для расследования. Это вызовет пиковую нагрузку на процессор и дисковый ввод-вывод. Однако, вероятно, вам уже все равно на этом этапе, так как система к моменту обнаружения администраторами майнила криптовалюту уже 598 часов.
Опять же, используйте флаг ELF, чтобы добраться до вероятных проблемных исполняемых файлов-кандидатов и игнорировать шум.
Есть скрипт с именем scripts/testfiles.sh, который создаст два файла. Один будет заполнен случайными данными, а другой — не случайными вовсе. При запуске скрипта он создаст файлы и запустит sandfly-entropyscan в режиме обнаружения исполняемых файлов. Вы должны увидеть два файла. Один с очень высокой энтропией (на уровне или около 8.0) и один, полный неслучайных данных, с энтропией около 0.00 (низкая энтропия). Пример:
./testfiles.sh
Creating high entropy random executable-like file in current directory.
Creating low entropy executable-like file in current directory.
high.entropy.test, entropy: 8.00, elf: true
low.entropy.test, entropy: 0.00, elf: true
Вы также можете загрузить утилиту upx и сжать исполняемый файл, чтобы увидеть, какие значения она возвращает.
Sandfly Security создает платформу обнаружения конечных точек и реагирования на инциденты (EDR) для Linux без использования агентов. Автоматизированные проверки энтропии — лишь одна из тысяч вещей, которые мы ищем для обнаружения злоумышленников без загрузки какого-либо программного обеспечения на ваши конечные точки Linux.
Получите бесплатную лицензию и узнайте больше ниже:
https://www.sandflysecurity.com @SandflySecurity