Linux Forensics
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=55a3d9f2&sv=1)
Використовуйте Trickest для легкого створення та автоматизації робочих процесів, підтримуваних найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Початкове збирання інформації
Основна інформація
По-перше, рекомендується мати 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/<kernel version>
на вашу машину, а потім скомпілювати LiME, використовуючи їх:
LiME підтримує 3 формати:
Raw (кожен сегмент з'єднаний разом)
Padded (той же, що й raw, але з нулями в правих бітах)
Lime (рекомендований формат з метаданими)
LiME також може бути використаний для відправки дампу через мережу замість зберігання його на системі, використовуючи щось на кшталт: path=tcp:4444
Диск Imaging
Вимкнення
Перш за все, вам потрібно буде вимкнути систему. Це не завжди можливо, оскільки іноді система буде виробничим сервером, який компанія не може дозволити собі вимкнути.
Є 2 способи вимкнення системи: нормальне вимкнення та вимкнення "вийняти штепсель". Перше дозволить процесам завершитися як зазвичай і файловій системі бути синхронізованою, але також дозволить можливому шкідливому ПЗ знищити докази. Підхід "вийняти штепсель" може призвести до втрати деякої інформації (не багато інформації буде втрачено, оскільки ми вже зробили зображення пам'яті) і шкідливе ПЗ не матиме жодної можливості щось з цим зробити. Тому, якщо ви підозрюєте, що може бути шкідливе ПЗ, просто виконайте команду sync
на системі і вийміть штепсель.
Зняття зображення диска
Важливо зазначити, що перед підключенням вашого комп'ютера до чогось, що стосується справи, вам потрібно бути впевненим, що він буде підключений тільки для читання, щоб уникнути зміни будь-якої інформації.
Disk Image pre-analysis
Іміджування диска без додаткових даних.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=55a3d9f2&sv=1)
Використовуйте Trickest для легкого створення та автоматизації робочих процесів, підтримуваних найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:
Пошук відомого шкідливого ПЗ
Модифіковані системні файли
Linux пропонує інструменти для забезпечення цілісності системних компонентів, що є критично важливим для виявлення потенційно проблемних файлів.
Системи на базі RedHat: Використовуйте
rpm -Va
для всебічної перевірки.Системи на базі Debian:
dpkg --verify
для початкової перевірки, після чого використовуйтеdebsums | grep -v "OK$"
(після встановленняdebsums
за допомогоюapt-get install debsums
) для виявлення будь-яких проблем.
Детектори шкідливого ПЗ/Rootkit
Прочитайте наступну сторінку, щоб дізнатися про інструменти, які можуть бути корисними для виявлення шкідливого ПЗ:
Malware 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
. Поєднайте списки каталогів з командами, специфічними для системи, щоб ідентифікувати виконувані файли, не пов'язані з відомими пакетами, що покращить ваш пошук усіх встановлених програм.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=55a3d9f2&sv=1)
Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси, підтримувані найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:
Відновлення видалених запущених бінарних файлів
Уявіть процес, який був виконаний з /tmp/exec і потім видалений. Можливо, його можна витягти
Перевірка місць автозапуску
Заплановані завдання
Services
Шляхи, де шкідливе ПЗ може бути встановлено як сервіс:
/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/: Стандартні файли одиниць системи, надані встановленими пакетами.
Kernel Modules
Модулі ядра Linux, які часто використовуються шкідливим ПЗ як компоненти руткітів, завантажуються під час завантаження системи. Директорії та файли, критично важливі для цих модулів, включають:
/lib/modules/$(uname -r): Містить модулі для версії ядра, що працює.
/etc/modprobe.d: Містить конфігураційні файли для контролю завантаження модулів.
/etc/modprobe та /etc/modprobe.conf: Файли для глобальних налаштувань модулів.
Other Autostart Locations
Linux використовує різні файли для автоматичного виконання програм під час входу користувача, що потенційно може приховувати шкідливе ПЗ:
/etc/profile.d/*, /etc/profile, та /etc/bash.bashrc: Виконуються для будь-якого входу користувача.
~/.bashrc, ~/.bash_profile, ~/.profile, та ~/.config/autostart: Файли, специфічні для користувача, які виконуються під час їх входу.
/etc/rc.local: Виконується після того, як всі системні сервіси були запущені, що позначає кінець переходу до багатокористувацького середовища.
Examine Logs
Системи 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 Logs
usbrip - це невеликий програмний продукт, написаний на чистому Python 3, який аналізує журнали Linux (/var/log/syslog*
або /var/log/messages*
залежно від дистрибутива) для створення таблиць історії подій USB.
Цікаво знати всі USB, які були використані, і це буде більш корисно, якщо у вас є авторизований список USB для виявлення "порушень" (використання USB, які не входять до цього списку).
Installation
Приклади
Більше прикладів та інформації всередині github: https://github.com/snovvcrash/usbrip
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=55a3d9f2&sv=1)
Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси, підтримувані найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:
Перегляд облікових записів користувачів та активності входу
Перевірте /etc/passwd, /etc/shadow та журнали безпеки на наявність незвичних імен або облікових записів, створених або використаних у близькості до відомих несанкціонованих подій. Також перевірте можливі атаки грубої сили на sudo. Крім того, перевірте файли, такі як /etc/sudoers та /etc/groups, на предмет несподіваних привілеїв, наданих користувачам. Нарешті, шукайте облікові записи з відсутніми паролями або легко вгадуваними паролями.
Перевірка файлової системи
Аналіз структур файлової системи в розслідуванні шкідливого ПЗ
Під час розслідування інцидентів з шкідливим ПЗ структура файлової системи є важливим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого ПЗ. Однак автори шкідливого ПЗ розробляють техніки, щоб ускладнити цей аналіз, такі як зміна часових міток файлів або уникнення файлової системи для зберігання даних.
Щоб протидіяти цим антифорензічним методам, важливо:
Провести ретельний аналіз хронології за допомогою інструментів, таких як Autopsy для візуалізації хронологій подій або Sleuth Kit's
mactime
для детальних даних хронології.Дослідити несподівані скрипти в $PATH системи, які можуть включати shell або PHP скрипти, що використовуються зловмисниками.
Перевірити
/dev
на наявність нетипових файлів, оскільки він традиційно містить спеціальні файли, але може містити файли, пов'язані зі шкідливим ПЗ.Шукати приховані файли або каталоги з іменами, такими як ".. " (крапка крапка пробіл) або "..^G" (крапка крапка контроль-G), які можуть приховувати шкідливий вміст.
Визначити файли setuid root за допомогою команди:
find / -user root -perm -04000 -print
Це знаходить файли з підвищеними привілеями, які можуть бути зловживані зловмисниками.Переглянути часові мітки видалення в таблицях inode, щоб виявити масові видалення файлів, що може вказувати на наявність rootkit або троянів.
Перевірити послідовні inodes на наявність сусідніх шкідливих файлів після виявлення одного, оскільки вони могли бути розміщені разом.
Перевірити загальні каталоги бінарних файлів (/bin, /sbin) на наявність нещодавно змінених файлів, оскільки їх могли змінити шкідливе ПЗ.
Зверніть увагу, що зловмисник може змінити час, щоб файли виглядали легітимними, але він не може змінити inode. Якщо ви виявите, що файл вказує на те, що він був створений і змінений в один і той же час з іншими файлами в тій же папці, але inode є неочікувано більшим, то часові мітки цього файлу були змінені.
Порівняння файлів різних версій файлової системи
Резюме порівняння версій файлової системи
Щоб порівняти версії файлових систем і виявити зміни, ми використовуємо спрощені команди git diff
:
Щоб знайти нові файли, порівняйте дві директорії:
Для зміненого вмісту, перерахувати зміни, ігноруючи конкретні рядки:
Щоб виявити видалені файли:
Фільтрувальні опції (
--diff-filter
) допомагають звузити до конкретних змін, таких як додані (A
), видалені (D
) або змінені (M
) файли.A
: Додані файлиC
: Скопійовані файлиD
: Видалені файлиM
: Змінені файлиR
: Перейменовані файлиT
: Зміни типу (наприклад, файл на символічне посилання)U
: Невирішені файлиX
: Невідомі файлиB
: Пошкоджені файли
Посилання
Книга: Посібник з комп'ютерної криміналістики для Linux-систем: Посібники з цифрової криміналістики
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=55a3d9f2&sv=1)
Використовуйте Trickest для легкого створення та автоматизації робочих процесів, підтримуваних найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:
Last updated