Эксперт OTUS Алексей Цикунов приглашает всех желающих на день открытых дверей по курсу "Administrator Linux. Professional". В рамках вебинара вы сможете подробно узнать о курсе и программе обучения, а также задать интересующие вас вопросы.
Автор статьи: Александр Колесников
На протяжении долгого периода времени главной фишкой и гордостью операционной системы Linux был тот факт, что для нее «не было вирусов», которые могли бы нарушить работоспособность системы или украсть пользовательские данные. Сейчас наступил конец 2020 года — давайте попробуем разобраться, действительно ли это так на сегодняшний день.
В статье будет рассмотрен подход к поиску вредоносных приложений для операционной системы Linux на общедоступных ресурсах и их поверхностный анализ. Главная цель — получить идентификаторы компрометации из найденных объектов, которые помогут нам обнаружить заражение на своей машине.
Действительно ли нет «вирусов»?
Начнем анализ с отчетов вендоров, которые занимаются исследованием вредоносов на постоянной основе. Вот здесь можно найти информацию о динамике распространения вредоносных объектов для операционной системы Linux на протяжении 3-4 кварталов 2019 года и 1 квартала 2020 года:
Вот здесь можно найти более актуальную информацию:
Данных за 3 и 4 квартал найти не удалось, но даже без них можно заметить определенную тенденцию — вредоносы есть и регулярно распространяются на пользовательские хосты. Разобрать все 150 000 файлов за одну статью у нас не получится, поэтому давайте попробуем найти хотя бы несколько штук вредоносных объектов под ОС Linux, чтобы исследовать их поведение и оставляемые в системе следы.
Подбор экземпляров
Не хотелось бы инфицировать реальную машину, поэтому все манипуляции, которые будем проводить, необходимо анализировать внутри отдельной виртуальной машины.
Попробуем найти хотя бы несколько наименований вредоносов, о которых писали в статьях исследователи или упоминали СМИ. По запросу “Linux Malware TOP” предлагается установить кучу антивирусов. Не самый плохой вариант решения проблемы, но мы занимаемся самостоятельным исследованием, поэтому пока обойдемся без этого. На всякий случай, фильтровать выдачу можно использованием оператора «-». Снимок выдачи поисковика по запросу:
Не густо, но нам будет достаточно для старта. Пройдя по ссылкам, имеем названия: Doki, RansomEXX. Найти вредонос собственной персоной на просторах сети для операционной системы Linux весьма проблематично, но возможно.
В каждой из найденных выше статей можно обнаружить ссылки на VirusTotal, AlenVault, которые могут предоставить md5, sha1 контрольную сумму файла, но возможность бесплатной загрузки отсутствует. Однако обнаружить общедоступные ресурсы, предоставляющие вредоносные объекты по md5 или sha1, спустя некоторое время, возможно. Из соображений этики упоминать в этой статье их не будем. Для дальнейших исследований будем использовать следующие файлы:
28E8E43BFEDC80242C1998594E0FA341A4000F52
CDC86D6B627A54C155C5E8A2EC790DCD5D40DA90
Анализ вредоносов
Операционная система Linux содержит в себе большое количество механизмов, которые достаточно сильно упрощают процесс исследования поведения приложения. На базе этих механизмов построены инструменты:
ltrace
— трассировщик для вызовов библиотечных функций;ptrace
— трассировщик системных вызовов для процесса;strace
— трассировщик системных вызовов и сигналов.
Также есть инструменты для чтения структуры файлов:
readelf
— чтение, дезассемблирование ELF;objdump
— чтение, дизаcсемблирование любого объекта, который передан в качестве параметра;file
— идентификация по magic word типа файла;strings
— поиск паттернов строк в бинарных данных.
Инструменты полезные, но, чтобы в полной мере их применять, нужны определенные навыки. Мы же ставим себя на место обычного пользователя или администратора системы, который случайно обнаружил файл в системе и хочет разобраться, для чего он тут лежит.
Первый файл для исследования — Doki (sha1: 28E8E43BFEDC80242C1998594E0FA341A4000F52)
.
Попробуем установить, что он делает. Судя по информации из СМИ, это вредонос, который работает в контейнерах Docker и его сложно обнаружить. Перед тем, как начать анализировать файл, стоит взять на вооружение следующие данные:
Вредонос, который производится на потоке и нацелен на приобретение выгоды, вряд ли будет иметь большое количество сложных механизмов защиты функционала. Об основных функциях можно судить по строкам, которые находятся в файле. Утилита
strings
может помочь установить, с чем работает файл.Если файл скрывает строки или они не информативны, то можно попробовать запустить его с
strace
илиptrace
инструментом. Вы увидите все ключевые изменения, которые производит файл.
Вывод утилиты strings
:
Красным выделены строки, которые явно имеют отношение к функционалу файла. Если их загуглить, то можно натолкнуться на вот такой ресурс:
Похоже, что перед нами майнер очередной криптовалюты. Такие поделки проще всего обнаруживать по нагрузке на ЦП, так как не на всех серверах стоят видеокарты. Идентифицировать же его в файловой системе может помочь сканирование, которое можно устроить даже обычной утилитой grep
:
Также стоит провести поиск файла “update.sh
” и система снова чиста от подобной заразы.
Следующий файл имеет sha1
равной CDC86D6B627A54C155C5E8A2EC790DCD5D40DA90
или более известный как RansomEXX. С ним всё еще проще, утилита strings
показывает следующие данные:
Найти в системе так же просто как и предыдущий файл, единственное отличие — если он уже запустился, удалять его нельзя! Он может содержать ключевую информацию, которую использовал для шифрования файлов. Его процесс лучше сдампить на отдельный носитель и передать специалистам по обратной разработке. Кстати, последовательность, которая указана на экране, вполне может служить ключом для этого файла.
Вывод
В данной статье мы рассмотрели только 2 вредоноса, и судя по их содержанию, их анализ не сильно отличается от обычных вредоносных приложений для операционной системы Windows или любой другой. К сожалению, в виртуальном пространстве не существует абсолютно безопасных систем, стойких к атакам путем использования вредоносных объектов. Как это предотвратить? Советы довольно просты и банальны:
— не загружать сомнительное ПО на хост;
— использовать хотя бы самый простой антивирусный продукт, чтобы избежать непоправимого ущерба;
— устанавливать все необходимые патчи безопасности.