2.1Kпросмотров
67.7%от подписчиков
10 февраля 2026 г.
question📷 ФотоScore: 2.3K
Что делать с вредоносным файлом? Часть 2
Продолжим историю с предварительным анализом в статике. На очереди ELF, исполняемые файлы Linux: хоть некоторые шаги пересекаются с анализом PE, но все же есть своя специфика 1. Определяем формат файла
В Linux расширение часто отсутствует, смотрим magic bytes. Для ELF это 7F 45 4C 46 (.ELF в ASCII)
⚙️ file, hexedit, HIEW (любой hex-редактор) или DiE 2. Хеши Считаем MD5, SHA-1, SHA-256 и проверяем в VirusTotal, ANY.RUN, в отдельных случаях выручает OpenTIP. Загружать куда-то? Ну, можно, только осторожно ;) Идём в Malpedia, если хотя бы в каком-то виде получилось определить семейство. Гуглим хеши в кавычках, а сам семпл проверяем через имеющиеся YARA-правила (начать можно с этих наборов) 3. Заголовки и структура ELF
⚙️ readelf (встроена) или ⚙️ elfparser-ng — ближайший аналог pestudio для Linux (в идеале, собирать из исходников, в релизах версия от 2022 года)
Смотрим:
— Общую информацию можно получить readelf -h sample.bin
— Секции: readelf -S sample.bin, либо objdump -h sample.bin. Обращаем внимание на отличные от стандартных имен, размер секций и подозрительные флаги, например, RWX (read-write-eXecute) одновременно или .rodata внезапно исполняемая. Если секций нет совсем, это тоже не ок и, вероятно, файл упакован
— Секции .comment и .rodata могут содержать артефакты компиляции или захардкоженные данные. Посмотреть интересующую секцию можно, например:
objdump -s -j .rodata sample.bin | head -32
— Чтобы определить, какие внешние библиотеки использованы, можно брать ldd sample.bin (аналог анализа импортов в PE). На реальном вредоносе в бою лучше использовать а) objdump -x sample | grep NEEDED, б) readelf -d sample.bin т.к. ldd может триггернуть выполнение кода 4. Энтропия и упаковщики
⚙️ DiE покажет энтропию с визуализацией. Для любителей консоли можно использовать diec -e sample.bin
Лучше смотреть посекционно. UPX снимается классически: upx -d sample.bin, из простеньких лайфхаков: если сигнатура модифицирована (например, #EPU вместо привычного UPX!), заменяем через hex-редактор все вхождения и повторяем операцию 5. Строки
Ищем IP/домены/URL (потенциальные C2), пути (~/.ssh, /etc/, /proc/, /dev/, /run/, директории автозапуска..), переменные окружения, shell-команды. Для приоритизации строк есть проект StringSifter с ML-ранжированием. Найденные сетевые индикаторы прогоняем через VirusTotal, URLhaus, интересные ("уникальные") строки тоже не стесняемся гуглить
⚙️ strings, bstrings или floss с параметром --only static 6. Анализ возможностей
Здесь не все идеально, но ⚙️ capa работает и с ELF (без упаковки) — покажет предполагаемый функционал сэмпла. ⚙️ elfparser-ng также имеет вкладку Capabilities ✨ Из интересного, инструмент Linux Artifact Parser (LAP), увидевший свет буквально в январе этого года: выполняет львиную долю перечисленных пунктов, а также самостоятельно пытается подсветить аномалии по секциям и импортам. А вот уже следующим шагом, можно переходить на песочницы. Обращайте внимание в том числе на извлечённые ими конфиги — для известных семейств уже на этом этапе могут быть выявлены адреса C2, методы закрепления и прочие параметры!