Мониторинг API и перехват

Вопрос или проблема

В настоящее время я читаю книгу “Кулинарная книга и DVD для аналитиков вредоносного ПО”. Есть глава “Динамический анализ”, а также несколько рецептов о перехвате и мониторинге вызовов API процессов, но это для Windows.

Я хочу сделать то же самое, что объясняется в рецептах 9-10, но для Linux. 9-10 называется “Уловление событий создания процесса, потока и загрузки изображения”. В этом рецепте показано, “как реализовать драйвер, который уведомляет вас, когда на системе происходят какие-либо события, пока ваш образец вредоносного ПО выполняется”. Он использует функции API набора драйверов Windows (WDK) для вызова функции обратного вызова, определенной пользователем. Используются следующие функции обратного вызова:

  • Функция обратного вызова создания процессов, называемая PsSetCreateProcessNotifyRoutine(…)
  • Функция обратного вызова создания потоков, называемая PsSetCreateThreadNotifyRoutine(…)
  • Функция обратного вызова загрузки изображения, называемая PsSetLoadImageNotifyRoutine(…).

И когда происходят какие-либо события, они будут отображаться как отладочное сообщение, которое затем можно просмотреть в, например, DebugView.

Для Windows это кажется хорошо документированным, и легко найти информацию по этому вопросу, но у меня возникли трудности с поиском информации для 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. Она предоставляет возможность отслеживать различные события, включая создание новых процессов. Для настройки:

  1. Установите auditd:

    sudo apt-get install auditd
  2. Настройте правила аудита:

    echo "-a always,exit -F arch=b64 -S execve -k exec_events" | sudo tee -a /etc/audit/rules.d/audit.rules
  3. Перезапустите службу:

    sudo service auditd restart
  4. Для просмотра событий используйте команду:

    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(); }'

Таким образом, вы сможете отслеживать создание новых задач и использовать эту информацию для анализа.

NetlinkSockets позволяют взаимодействовать между пользовательским пространством и пространством ядра. Они полезны для получения уведомлений о различных системных событиях, включая создание процессов. Понадобится небольшой C-код для создания проводника, который будет слушать уведомления о процессе.

Рекомендации по Чтению

Чтобы углубить свои знания в области мониторинга API и анализа вредоносного ПО на Linux, стоит обратить внимание на следующие ресурсы:

  • Книги по Linux Kernel Programming — они помогут вам разобраться в механизмах работы ядра Linux.
  • Документация по ToolKit BPF — обширный ресурс, который объясняет, как писать eBPF программы для отслеживания и анализа системных событий.
  • Раздел о безопасности в Red Hat Enterprise Linux — здесь вы найдете много полезного о auditd и других инструментах безопасности.

Заключение

Мониторинг API и системных вызовов на Linux представляет собой не менее важную задачу, чем на Windows. Используя такие инструменты, как strace, auditd, eBPF и Netlink, можно эффективно анализировать поведение вредоносного ПО и защищать системы от потенциальных угроз. Выбор конкретного инструмента зависит от целей анализа и глубины, которой вы хотите достигнуть.

Оцените материал
Добавить комментарий

Капча загружается...