- Вопрос или проблема
- Ответ или решение
- Мониторинг и Подмена API на Linux: Полное Руководство для Анализа Вредоносного ПО
- Почему Важно Мониторить API?
- Инструменты и Методы Мониторинга API на Linux
- 1. Использование strace
- 2. Использование auditd
- 3. Использование eBPF (Extended Berkeley Packet Filter)
- 4. Сетевые Уведомления с помощью Netlink
- Рекомендации по Чтению
- Заключение
Вопрос или проблема
В настоящее время я читаю книгу “Кулинарная книга и DVD для аналитиков вредоносного ПО”. Есть глава “Динамический анализ”, а также несколько рецептов о перехвате и мониторинге вызовов API процессов, но это для Windows.
Я хочу сделать то же самое, что объясняется в рецептах 9-10, но для Linux. 9-10 называется “Уловление событий создания процесса, потока и загрузки изображения”. В этом рецепте показано, “как реализовать драйвер, который уведомляет вас, когда на системе происходят какие-либо события, пока ваш образец вредоносного ПО выполняется”. Он использует функции API набора драйверов Windows (WDK) для вызова функции обратного вызова, определенной пользователем. Используются следующие функции обратного вызова:
- Функция обратного вызова создания процессов, называемая PsSetCreateProcessNotifyRoutine(…)
- Функция обратного вызова создания потоков, называемая PsSetCreateThreadNotifyRoutine(…)
- Функция обратного вызова загрузки изображения, называемая PsSetLoadImageNotifyRoutine(…).
И когда происходят какие-либо события, они будут отображаться как отладочное сообщение, которое затем можно просмотреть в, например, DebugView.
Для Windows это кажется хорошо документированным, и легко найти информацию по этому вопросу, но у меня возникли трудности с поиском информации для Linux.
Я нашел несколько общих введений в драйверы и одно по перехвату, но пока не нашел ничего более конкретного или хотя бы немного более сосредоточенного на анализе вредоносного ПО.
Я был бы рад советам по дальнейшему чтению или рекомендуемым учебным пособиям по этой теме.
Этот вопрос несколько лет назад, но все еще актуален.
Вот некоторые варианты:
- auditd : RHEL6 руководство по безопасности – Руководство по обеспечению безопасности Red Hat Enterprise Linux.
- trace : Ссылка на Stack Overflow – Инструменты трассировки процессов в Linux.
- netlink : Ссылка на Stack Overflow – (Ответ на) Обнаружение запуска программ на платформе Linux.
Самый простой способ – просто запустить ваш образец вредоносного ПО с помощью strace
.
strace
запускает указанную команду под трассировкой и выводит (в стандартный вывод ошибок или файл, если вы хотите) все системные вызовы и их аргументы, которые вызывает приложение.
Например, чтобы захватить все вызовы для создания новых процессов или новых потоков, можно выполнить:
strace -e trace=clone,fork -o trace.log -f malware
-e
указывает, какие системные вызовы нужно записывать. Если вы это не укажете, то получите все системные вызовы в журнале.-o
указывает файл, в который нужно записать трассировку-f
прикрепляет трассировки к порожденным процессам
Ответ или решение
Мониторинг и Подмена API на Linux: Полное Руководство для Анализа Вредоносного ПО
Во время работы с вредоносным ПО, динамический анализ является критически важным этапом, позволяющим выяснить, как рассматриваемый образец взаимодействует с операционной системой. В то время как Windows имеет хорошо документированные функции для перехвата и мониторинга событий (например, PsSetCreateProcessNotifyRoutine), Linux предлагает свои собственные инструменты и подходы.
Почему Важно Мониторить API?
Мониторинг API позволяет исследователю вредоносного ПО отследить создание процессов, потоков и загрузку изображений. Это помогает понять поведение вредоносного кода, определить его цели и выявить механизмы распространения. В Linux существует несколько подходов к реализации данной задачи, каждый из которых имеет свои преимущества и недостатки.
Инструменты и Методы Мониторинга API на Linux
1. Использование strace
strace — это мощный инструмент для трассировки системных вызовов и сигналов, позволяющий отслеживать взаимодействие между процессом и ядром операционной системы. Для мониторинга создания процессов и потоков можно запустить следующее:
strace -e trace=clone,fork -o trace.log -f ./malware
- -e: Указывает, какие системные вызовы нужно отслеживать. В данном случае это создание новых процессов.
- -o: Записывает вывод в указанный файл (trace.log).
- -f: Позволяет отслеживать дочерние процессы.
Этот метод подходит для быстрого анализа, однако он не подходит для перехвата API на более низком уровне или в реальном времени.
2. Использование auditd
auditd — это служба, которая отвечает за регистрацию событий безопасности в ядре Linux. Она предоставляет возможность отслеживать различные события, включая создание новых процессов. Для настройки:
-
Установите
auditd
:sudo apt-get install auditd
-
Настройте правила аудита:
echo "-a always,exit -F arch=b64 -S execve -k exec_events" | sudo tee -a /etc/audit/rules.d/audit.rules
-
Перезапустите службу:
sudo service auditd restart
-
Для просмотра событий используйте команду:
ausearch -k exec_events
3. Использование eBPF (Extended Berkeley Packet Filter)
eBPF является мощным инструментом, предоставляющим возможность выполнять произвольные программы в пространстве ядра. Это позволяет отслеживать события системы в реальном времени. После установки bcc
(BPF Compiler Collection) можно использовать скрипты для мониторинга создания процессов:
sudo bpftrace -e 'tracepoint:task:task_newtask { @num[comm] = count(); }'
Таким образом, вы сможете отслеживать создание новых задач и использовать эту информацию для анализа.
4. Сетевые Уведомления с помощью Netlink
NetlinkSockets позволяют взаимодействовать между пользовательским пространством и пространством ядра. Они полезны для получения уведомлений о различных системных событиях, включая создание процессов. Понадобится небольшой C-код для создания проводника, который будет слушать уведомления о процессе.
Рекомендации по Чтению
Чтобы углубить свои знания в области мониторинга API и анализа вредоносного ПО на Linux, стоит обратить внимание на следующие ресурсы:
- Книги по Linux Kernel Programming — они помогут вам разобраться в механизмах работы ядра Linux.
- Документация по ToolKit BPF — обширный ресурс, который объясняет, как писать eBPF программы для отслеживания и анализа системных событий.
- Раздел о безопасности в Red Hat Enterprise Linux — здесь вы найдете много полезного о
auditd
и других инструментах безопасности.
Заключение
Мониторинг API и системных вызовов на Linux представляет собой не менее важную задачу, чем на Windows. Используя такие инструменты, как strace
, auditd
, eBPF и Netlink, можно эффективно анализировать поведение вредоносного ПО и защищать системы от потенциальных угроз. Выбор конкретного инструмента зависит от целей анализа и глубины, которой вы хотите достигнуть.