Введение

Данная публикация - перевод статьи - Linux Incident Response от Jeenali Kothari. Статья о том, какие действия может выполнить сотрудник кибербезопасности при подозрении на компрометации системы на базе Linux.

Что такое реагирование на инцидент

Реагирование на инцидент можно определить как план действий, который предпринимается тогда, когда происходит инцидент (или событие с подозрением на инцидент) кибербезопасности. Сотрудники кибербезопасности должны быть в курсе того, что должно присутствовать в системе, а чего там быть недолжно.

Данные, которые могут помочь разобраться с инцидентом кибербезопасности:

  • запущенные процессы;

  • содержимое физической памяти;

  • информация об имени хоста, IP-адресе, операционной системе;

  • информация о системных службах;

  • идентификация всех известных и неизвестных пользователей, вошедших в систему;

  • сетевые подключения, открытые порты и любая имеющаяся в системе сетевая активность;

  • анализ присутствующих в системе файлов.

Учетные записи пользователей

Для реагирования на инцидент очень важно расследовать активность учетных записей пользователей. Нужно определить перечень вошедших в систему пользователей, существующих пользователей, обычных или нетиповых логинов, наличие неудачных попыток входа в систему, разрешения, доступ со стороны sudo и т.д. 

Чтобы определить, есть ли подозрительные учетные записи в системе Linux:

cat /etc/passwd

Параметр ’Setuid’ в Linux - это уникальное разрешение на доступ к файлам. Таким образом, в системе Linux, когда пользователь хочет сменить пароль, он может запустить команду "passwd".

passwd -S [User_Name]

Grep используется для поиска в обычном тексте строк, соответствующих регулярному выражению. :0: используется для отображения файлов с идентификатором ‘UID 0’ в файле /etc/passwd.

grep :0: /etc/passwd

Чтобы определить, создал ли злоумышленник какого-либо временного пользователя для выполнения атаки, введите:

find / -nouser -print

Файл /etc/shadow содержит зашифрованный пароль, подробную информацию о паролях и доступен только пользователям root.

cat /etc/shadow

В файле группы отображается информация о группах, используемых пользователем. Чтобы просмотреть подробную информацию, введите

cat /etc/group

Если вы хотите просмотреть информацию о правах пользователя и группы, которая будет отображаться, можно просмотреть файл/ etc/sudoers

cat /etc/sudoers

Записи в журнале событий

Чтобы просмотреть информацию о последнем входе в систему определенного пользователя или всех пользователей в системе Linux, вы можете ввести:

lastlog

Чтобы идентифицировать неуспешные попытки аутентификации в системе, вы можете ввести

journalctl -u ssh.service | grep Failed

Чтобы просмотреть историю введенных пользователем команд, вы можете ввести:

history | less

Системные ресурсы

Данные системного журнала могут вам рассказать о времени непрерывной работы системы, объеме памяти и утилизации системы и т.д. чтобы узнать, как долго работал сервер, текущее время в системе, сколько пользователей в данный момент вошли в систему.

uptime

Чтобы просмотреть использование памяти системой в Linux, используемую физическую память и swap память, а также буферы, используемые ядром, вы можете ввести

free

Чтобы проверить подробную информацию об оперативной памяти, доступном пространстве в памяти, буферах и подкачке в системе, вы можете ввести:

cat /proc/meminfo

Чтобы проверить наличие подключений в вашей системе, вы можете ввести

cat /proc/mounts

Процессы

Чтобы получить динамическое представление обо всех процессах, запущенных в системе Linux, в режиме реального времени, сводную информацию о системе, а также список процессов и их идентификационные номера или потоки, управляемые ядром Linux, вы можете воспользоваться

top

Чтобы увидеть состояние процесса в вашей системе Linux и текущие запущенные процессы, а также PID. для выявления нелегитимных процессов, которые могут указывать на любую вредоносную активность в системе Linux, вы можете использовать

ps aux

Чтобы отобразить более подробную информацию о конкретном процессе, вы можете использовать

lsof –p [pid]

Службы

При анализе служб важно посмотреть статус служб, cron, передачу файлов, разрешение доменных имен, брандмауэры и т.д. Чтобы найти какие-либо отклонения от нормальной работы служб, вы можете использовать

service --status-all

Чтобы найти запланированные задачи, вы можете использовать

cat /etc/crontab

Чтобы устранить проблемы с конфигурацией DNS вы можете использовать

more /etc/resolv.conf

Чтобы проверить файл, который преобразует имена хостов или доменов в IP-адреса, вы можете использовать

more /etc/hosts

Для проверки и управления фильтрацией пакетов IPv4 и NAT в системах Linux вы можете использовать iptables и различные команды, такие как:

iptables -L -n

Файлы

Иерархия файлов Linux

Чтобы определить файлы слишком большого размера в вашей системе и их права доступа, вы можете использовать:

find /home/ -type f -size +512k -exec ls -lh {} \;

Каждый раз, когда выполняется какая-либо команда, в которой установлен SUID, ее эффективный UID становится владельцем этого файла. Если вы хотите найти все те файлы, которые содержат SUID, то их можно получить, введя команду:

find /etc/ -readable -type f 2>/dev/null

Если вы хотите увидеть аномальный файл, который присутствует в системе в течение 2 дней, вы можете использовать команду

find / -mtime -2 -ls

Сетевые настройки

Крайне важно определить общую картину состояния системной сети и ее работоспособности. Для получения информации о сетевой активности вы можете использовать различные команды. Чтобы просмотреть свои сетевые интерфейсы в системе, вы можете использовать:

ifconfig

Чтобы перечислить все процессы, которые прослушивают порты с их PID, вы можете использовать

lsof -i

Чтобы отобразить все прослушивающие порты в сети, используйте

netstat -nap

Таблица ARP, также известная как кэш ARP, является временным хранилищем для сопоставлений IP-адресов с MAC-адресами в системе Linux. Протокол разрешения адресов (ARP) — это протокол связи, используемый для сопоставления IP-адреса с физическим (MAC) адресом в локальной сети. Он работает на канальном уровне модели OSI, позволяя устройствам в одном сегменте сети обнаруживать друг друга и эффективно взаимодействовать.

Чтобы отобразить системный ARP-кэш, вы можете ввести

arp -a

Когда вы запускаете программу из терминала или скрипта, то обычно пишете только имя файла программы. Однако, ОС Linux спроектирована так, что исполняемые и связанные с ними файлы программ распределяются по различным специализированным каталогам. Например, библиотеки устанавливаются в /lib или /usr/lib, конфигурационные файлы в /etc, а исполняемые файлы в /sbin/, /usr/bin или /bin.

Таких местоположений несколько. Откуда операционная система знает где искать требуемую программу или её компонент? Всё просто — для этого используется переменная PATH. Эта переменная позволяет существенно сократить длину набираемых команд в терминале или в скрипте, освобождая от необходимости каждый раз указывать полные пути к требуемым файлам. В этой статье мы разберёмся зачем нужна переменная PATH Linux, а также как добавить к её значению имена своих пользовательских каталогов.

Для того, чтобы посмотреть содержимое переменной PATH в Linux, выполните в терминале команду:

echo $PATH

Комментарии (6)


  1. def-hub-community Автор
    03.10.2024 09:58

    Велкам к нам в тг @defhubcommunity там много интересного и полезного про кибербезопасность.


    1. atomlib
      03.10.2024 09:58
      +2


  1. BrSlava
    03.10.2024 09:58
    +2

    service --status-all
    ifconfig

    аж олдскулы свело...


  1. jsirex
    03.10.2024 09:58
    +1

    может, если случилось страшное, сделать что-то типа mount -o remount,ro / или echo 1> /sys/block/sda/ro или ещё что-то подобное, чтоб не становилось хуже. потом кильнуть все подозрительные и ненужные процессы. И уже заниматься исследованием. ну и такому серверу больше доверять нельзя, его нужно переустановить с нуля в любом случае.


    1. def-hub-community Автор
      03.10.2024 09:58

      Добрый день! полезная рекомендация. Однако есть нюанс с точки зрения реагирования на киберинциденты - важно проанализировать всю имеющуюся фактуру на скомпрометированных серверах перед их вайпом, для того чтобы получить объективную информацию о реализованных механиках и задействованных в атаке компонентах инфраструктуры. Хорошей практикой является изоляция сервера на уровне сети, без отключения или вайпа сервера. Хотя на практике, мы обычно настраиваем на авто-респонс EDR (агент детектирования признаком компрометации - endpoint detection and response) на изоляцию хоста с использованием host-based firewall (в случае с Linux-based это, например, iptables ACL).


  1. Alextan
    03.10.2024 09:58
    +2

    Идея для статьи хорошая, вот только по теме в статье ничего не увидел толком. Если уж и смотреть пользователей новых, то по времени создания пользователя. Зачем шедоу смотреть? Чтобы найти и попытаться подобрать пароль на основе хэш нового неизвестного пользователя? history less вам покажет ваши же команды. Если хотите команды другого пользователя, то в домашнем каталоге этого пользователя смотрите файл .bash_history. Команды ifconfig вообще нет в современных дистрибутивах - надо ставить net-tools, лучше уж привести пример на команде ip. И зачем искать файлы большого размера? Пэйлоды злоумышленников обычно наоборот маленькие. Возможен конечно вариант, когда человек вредоносный фильмец или игру загрузил, но это скорее не про Линукс, да и это может быть любой другой фал любого размера. Есть IOC-сканер Loki - я бы с него начал проверку на следы компрометации. Было бы интересно посмотреть на реальный инцидент с подобными командами.