Linux Forensics
Використовуйте Trickest для легкої побудови та автоматизації робочих процесів, які працюють на найбільш продвинутих інструментах спільноти. Отримайте доступ сьогодні:
Початковий Збір Інформації
Основна Інформація
По-перше, рекомендується мати USB з відомими хорошими бінарниками та бібліотеками на ньому (ви можете просто взяти Ubuntu та скопіювати папки /bin, /sbin, /lib, та /lib64), потім підключити USB, та змінити змінні середовища для використання цих бінарників:
Після того, як ви налаштували систему для використання надійних та відомих бінарних файлів, ви можете почати витягувати деяку базову інформацію:
Підозріла інформація
Під час отримання базової інформації варто перевірити на дивні речі, такі як:
Процеси root зазвичай працюють з низькими PID, тому якщо ви знаходите процес root з великим PID, ви можете підозрювати
Перевірте зареєстровані входи користувачів без оболонки в
/etc/passwd
Перевірте хеші паролів в
/etc/shadow
для користувачів без оболонки
Дамп пам'яті
Для отримання пам'яті робочої системи рекомендується використовувати LiME. Для компіляції його вам потрібно використовувати таке ж ядро, яке використовує машина-жертва.
Пам'ятайте, що ви не можете встановлювати LiME або будь-що інше на машину-жертву, оскільки це призведе до кількох змін в ній
Тому, якщо у вас є ідентична версія Ubuntu, ви можете використовувати apt-get install lime-forensics-dkms
У інших випадках вам потрібно завантажити LiME з github та скомпілювати його з правильними заголовками ядра. Для отримання точних заголовків ядра машини-жертви ви можете просто скопіювати каталог /lib/modules/<версія ядра>
на свою машину, а потім скомпілювати LiME, використовуючи їх:
LiME підтримує 3 формати:
Raw (кожний сегмент об'єднаний разом)
Padded (такий самий, як raw, але з нулями в правих бітах)
Lime (рекомендований формат з метаданими)
LiME також може бути використаний для відправлення дампу через мережу замість зберігання його в системі, використовуючи щось на зразок: path=tcp:4444
Диск Imaging
Вимкнення
По-перше, вам потрібно вимкнути систему. Це не завжди можливо, оскільки деякі системи є серверами виробничого призначення, які компанія не може собі дозволити вимкнути.
Є 2 способи вимкнення системи, звичайне вимкнення та вимкнення "від'єднати штепсель". Перше дозволить процесам завершити роботу як зазвичай та синхронізувати файлову систему, але також дозволить можливому шкідливому програмному забезпеченню знищити докази. Підхід "від'єднати штепсель" може призвести до втрати деякої інформації (багато інформації не буде втрачено, оскільки ми вже взяли зображення пам'яті) та шкідливе програмне забезпечення не матиме можливості щодо цього нічого зробити. Тому, якщо ви підозрюєте, що може бути шкідливе програмне забезпечення, просто виконайте команду sync
на системі та від'єднайте штепсель.
Взяття зображення диска
Важливо зауважити, що перед підключенням вашого комп'ютера до чого-небудь, що стосується справи, вам потрібно бути впевненим, що він буде підключений як тільки для читання, щоб уникнути зміни будь-якої інформації.
Попередній аналіз образу диска
Створення образу диска без додаткових даних.
Використовуйте Trickest для легкої побудови та автоматизації робочих процесів, що працюють на найбільш продвинутих інструментах спільноти у світі. Отримайте доступ сьогодні:
Пошук відомого шкідливого програмного забезпечення
Змінені системні файли
Linux пропонує інструменти для забезпечення цілісності компонентів системи, що є важливим для виявлення потенційно проблемних файлів.
Системи на основі RedHat: Використовуйте
rpm -Va
для комплексної перевірки.Системи на основі Debian:
dpkg --verify
для початкової перевірки, а потімdebsums | grep -v "OK$"
(після встановленняdebsums
за допомогоюapt-get install debsums
) для ідентифікації будь-яких проблем.
Виявлення шкідливого програмного забезпечення/кітових програм
Прочитайте наступну сторінку, щоб дізнатися про інструменти, які можуть бути корисними для пошуку шкідливого програмного забезпечення:
pageMalware AnalysisПошук встановлених програм
Для ефективного пошуку встановлених програм як на системах Debian, так і на RedHat, розгляньте можливість використання системних журналів та баз даних разом із ручними перевірками в загальних каталогах.
Для Debian перевірте
/var/lib/dpkg/status
та/var/log/dpkg.log
для отримання деталей про встановлені пакети, використовуючиgrep
для фільтрації конкретної інформації.Користувачі RedHat можуть запитувати базу даних RPM за допомогою
rpm -qa --root=/mntpath/var/lib/rpm
, щоб перелічити встановлені пакети.
Щоб виявити програмне забезпечення, встановлене вручну або поза цими менеджерами пакунків, дослідіть каталоги, такі як /usr/local
, /opt
, /usr/sbin
, /usr/bin
, /bin
та /sbin
. Поєднайте переліки каталогів з системними командами, щоб ідентифікувати виконувані файли, які не пов'язані з відомими пакетами, покращуючи пошук всіх встановлених програм.
Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси, які працюють на найбільш продвинутих інструментах спільноти у світі. Отримайте доступ сьогодні:
Відновлення видалених виконуваних файлів
Уявіть процес, який був виконаний з /tmp/exec та видалений. Є можливість його видобути
Перевірка місць автозапуску
Заплановані завдання
Сервіси
Шляхи, де може бути встановлений шкідливий ПЗ як сервіс:
/etc/inittab: Викликає ініціалізаційні скрипти, наприклад rc.sysinit, спрямовуючи далі до скриптів запуску.
/etc/rc.d/ та /etc/rc.boot/: Містять скрипти для запуску сервісів, останній з яких знаходиться в старіших версіях Linux.
/etc/init.d/: Використовується в певних версіях Linux, наприклад Debian, для зберігання скриптів запуску.
Сервіси також можуть бути активовані через /etc/inetd.conf або /etc/xinetd/, залежно від варіанту Linux.
/etc/systemd/system: Каталог для системних та скриптів керування сервісами.
/etc/systemd/system/multi-user.target.wants/: Містить посилання на сервіси, які повинні бути запущені в режимі багатокористувацького рівня.
/usr/local/etc/rc.d/: Для власних або сторонніх сервісів.
~/.config/autostart/: Для автоматичного запуску програм, специфічних для користувача, що може бути прихованим місцем для шкідливого ПЗ, спрямованого на користувача.
/lib/systemd/system/: Системні файли одиниць за замовчуванням, надані встановленими пакетами.
Модулі ядра
Модулі ядра Linux, часто використовувані шкідливим ПЗ як компоненти rootkit, завантажуються при завантаженні системи. Критичні для цих модулів каталоги та файли включають:
/lib/modules/$(uname -r): Містить модулі для версії ядра, що працює.
/etc/modprobe.d: Містить файли конфігурації для керування завантаженням модулів.
/etc/modprobe та /etc/modprobe.conf: Файли для глобальних налаштувань модулів.
Інші місця автозапуску
Linux використовує різні файли для автоматичного виконання програм при вході користувача, що потенційно можуть приховувати шкідливе ПЗ:
/etc/profile.d/*, /etc/profile, та /etc/bash.bashrc: Виконуються при будь-якому вході користувача.
~/.bashrc, ~/.bash_profile, ~/.profile, та ~/.config/autostart: Файли, специфічні для користувача, які запускаються при їх вході.
/etc/rc.local: Запускається після того, як всі системні служби стартують, позначаючи завершення переходу до середовища багатокористувацького рівня.
Аналіз журналів
Системи Linux відстежують дії користувачів та події системи через різні файли журналів. Ці журнали є ключовими для ідентифікації несанкціонованого доступу, інфікування шкідливим ПЗ та інших інцидентів безпеки. Основні файли журналів включають:
/var/log/syslog (Debian) або /var/log/messages (RedHat): Записують повідомлення та дії на рівні системи.
/var/log/auth.log (Debian) або /var/log/secure (RedHat): Фіксують спроби аутентифікації, успішні та невдачні входи.
Використовуйте
grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log
для фільтрації відповідних подій аутентифікації./var/log/boot.log: Містить повідомлення про запуск системи.
/var/log/maillog або /var/log/mail.log: Журнали дій поштового сервера, корисні для відстеження поштових сервісів.
/var/log/kern.log: Зберігає повідомлення ядра, включаючи помилки та попередження.
/var/log/dmesg: Містить повідомлення драйвера пристрою.
/var/log/faillog: Фіксує невдачі входу, допомагаючи в розслідуванні порушень безпеки.
/var/log/cron: Журнали виконання завдань cron.
/var/log/daemon.log: Відстежує діяльність фонових служб.
/var/log/btmp: Документує невдачі входу.
/var/log/httpd/: Містить журнали помилок та доступу Apache HTTPD.
/var/log/mysqld.log або /var/log/mysql.log: Журнали дій бази даних MySQL.
/var/log/xferlog: Фіксує передачі файлів FTP.
/var/log/: Завжди перевіряйте наявність неочікуваних журналів тут.
Системні журнали та підсистеми аудиту Linux можуть бути вимкнені або видалені під час вторгнення або інциденту з шкідливим ПЗ. Оскільки журнали в системах Linux, як правило, містять деяку з найкориснішою інформацією про зловмисну діяльність, зловмисники регулярно їх видаляють. Тому при аналізі наявних файлів журналів важливо шукати прогалини або неузгоджені записи, які можуть свідчити про видалення або втручання.
Linux зберігає історію команд для кожного користувача, зберігається в:
~/.bash_history
~/.zsh_history
~/.zsh_sessions/*
~/.python_history
~/.*_history
Крім того, команда last -Faiwx
надає список входів користувачів. Перевірте його на невідомі або неочікувані входи.
Перевірте файли, які можуть надати додаткові привілеї:
Перегляньте
/etc/sudoers
на непередбачені привілеї користувача, які можуть бути надані.Перегляньте
/etc/sudoers.d/
на непередбачені привілеї користувача, які можуть бути надані.Дослідіть
/etc/groups
, щоб виявити незвичайні членства в групах або дозволи.Дослідіть
/etc/passwd
, щоб виявити незвичайні членства в групах або дозволи.
Деякі програми також генерують власні журнали:
SSH: Перевірте ~/.ssh/authorized_keys та ~/.ssh/known_hosts на несанкціоновані віддалені підключення.
Gnome Desktop: Перегляньте ~/.recently-used.xbel для нещодавно відкритих файлів через додатки Gnome.
Firefox/Chrome: Перевірте історію браузера та завантаження в ~/.mozilla/firefox або ~/.config/google-chrome на підозрілі дії.
VIM: Перегляньте ~/.viminfo для деталей використання, таких як шляхи до файлів та історія пошуку.
Open Office: Перевірте нещодавній доступ до документів, що може вказувати на компрометовані файли.
FTP/SFTP: Перегляньте журнали в ~/.ftp_history або ~/.sftp_history для передач файлів, які можуть бути несанкціонованими.
MySQL: Дослідіть ~/.mysql_history для виконаних запитів MySQL, що може розкрити несанкціоновану діяльність бази даних.
Less: Проаналізуйте ~/.lesshst для історії використання, включаючи переглянуті файли та виконані команди.
Git: Перегляньте ~/.gitconfig та проект .git/logs для змін у репозиторіях.
Журнали USB
usbrip - це невеликий програмний засіб, написаний на чистому Python 3, який аналізує файли журналів Linux (/var/log/syslog*
або /var/log/messages*
в залежності від дистрибутиву) для побудови таблиць історії подій USB.
Цікаво знати всі USB, які були використані, і це буде корисно, якщо у вас є авторизований список USB для пошуку "порушень" (використання USB, які не входять до цього списку).
Встановлення
Приклади
Більше прикладів та інформації у GitHub: https://github.com/snovvcrash/usbrip
Використовуйте Trickest для легкої побудови та автоматизації робочих процесів, які працюють за допомогою найбільш продвинутих інструментів у спільноті. Отримайте доступ сьогодні:
Перегляд облікових записів користувачів та активностей входу в систему
Перевірте файли /etc/passwd, /etc/shadow та журнали безпеки на наявність незвичайних імен або облікових записів, створених або використаних поруч з відомими несанкціонованими подіями. Також перевірте можливі атаки на sudo методом перебору паролів. Крім того, перевірте файли, такі як /etc/sudoers та /etc/groups на непередбачені привілеї, надані користувачам. Нарешті, шукайте облікові записи без паролів або з легко вгадуваними паролями.
Аналіз файлової системи
Аналіз структур файлової системи при розслідуванні випадків шкідливого програмного забезпечення
При розслідуванні випадків шкідливого програмного забезпечення структура файлової системи є важливим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого програмного забезпечення. Однак автори шкідливого програмного забезпечення розробляють техніки для ускладнення цього аналізу, такі як зміна часів штампів файлів або уникання файлової системи для зберігання даних.
Для протидії цим анти-форензичним методам важливо:
Провести ретельний аналіз часової шкали за допомогою інструментів, таких як Autopsy для візуалізації часових шкал подій або
mactime
від Sleuth Kit для детальних даних часової шкали.Дослідити неочікувані скрипти у $PATH системи, які можуть містити скрипти оболонки або PHP, використовані зловмисниками.
Перевірте
/dev
на атипові файли, оскільки традиційно тут містяться спеціальні файли, але можуть містити файли, пов'язані з шкідливим програмним забезпеченням.Шукайте приховані файли або каталоги з назвами, такими як ".. " (крапка крапка пробіл) або "..^G" (крапка крапка керування-G), які можуть приховувати зловмисний вміст.
Визначте файли setuid root за допомогою команди:
find / -user root -perm -04000 -print
Це знаходить файли з підвищеними дозволами, які можуть бути використані зловмисниками.Перевірте часи видалення в таблицях inode, щоб виявити масове видалення файлів, що може вказувати на наявність rootkit або троянців.
Огляньте послідовні inode для поруч знаходячихся зловмисних файлів після ідентифікації одного, оскільки вони можуть бути розміщені разом.
Перевірте загальні бінарні каталоги (/bin, /sbin) на недавно змінені файли, оскільки їх може бути змінено шкідливим програмним забезпеченням.
Зверніть увагу, що зловмисник може змінити час, щоб файли виглядали легітимними, але він не може змінити інод. Якщо ви помітили, що файл вказує на те, що він був створений і змінений у один і той же час, що й решта файлів у тій самій папці, але інод неочікувано більший, то часи змінені для цього файлу.
Порівняння файлів різних версій файлової системи
Зведення порівняння версій файлової системи
Для порівняння версій файлової системи та визначення змін використовуємо спрощені команди git diff
:
Для пошуку нових файлів порівняйте дві теки:
Для зміненого вмісту, перерахуйте зміни, ігноруючи конкретні рядки:
Для виявлення видалених файлів:
Опції фільтрації (
--diff-filter
) допомагають звузити вибір до конкретних змін, таких як додані (A
), видалені (D
) або змінені (M
) файли.A
: Додані файлиC
: Скопійовані файлиD
: Видалені файлиM
: Змінені файлиR
: Перейменовані файлиT
: Зміни типу (наприклад, файл на символьне посилання)U
: Несполучені файлиX
: Невідомі файлиB
: Пошкоджені файли
Посилання
Книга: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides
Last updated