
Сканер энтропии для 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, что сэкономит много времени (например, будут игнорироваться массивные файлы баз данных, которые не являются исполняемыми).