Linux Forensics
Last updated
Last updated
Використовуйте 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/<kernel version>
на вашу машину, а потім скомпілювати LiME, використовуючи їх:
LiME підтримує 3 формати:
Raw (кожен сегмент об'єднаний разом)
Padded (той же, що й raw, але з нулями в правих бітах)
Lime (рекомендований формат з метаданими)
LiME також може бути використаний для відправки дампу через мережу замість зберігання його на системі, використовуючи щось на кшталт: path=tcp:4444
Перш за все, вам потрібно вимкнути систему. Це не завжди можливо, оскільки іноді система буде виробничим сервером, який компанія не може дозволити собі вимкнути.
Є 2 способи вимкнення системи: нормальне вимкнення та вимкнення "вийняти штепсель". Перше дозволить процесам завершитися як зазвичай і файловій системі бути синхронізованою, але це також дозволить можливому шкідливому ПЗ знищити докази. Підхід "вийняти штепсель" може призвести до втрати деякої інформації (не багато інформації буде втрачено, оскільки ми вже зробили зображення пам'яті) і шкідливе ПЗ не матиме жодної можливості щось з цим зробити. Тому, якщо ви підозрюєте, що може бути шкідливе ПЗ, просто виконайте команду sync
на системі і вийміть штепсель.
Важливо зазначити, що перед підключенням вашого комп'ютера до чогось, що стосується справи, вам потрібно бути впевненим, що він буде підключений тільки для читання, щоб уникнути зміни будь-якої інформації.
Іміджування диска без додаткових даних.
Використовуйте Trickest для легкого створення та автоматизації робочих процесів, підтримуваних найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:
Linux пропонує інструменти для забезпечення цілісності системних компонентів, що є критично важливим для виявлення потенційно проблемних файлів.
Системи на базі RedHat: Використовуйте rpm -Va
для всебічної перевірки.
Системи на базі Debian: dpkg --verify
для початкової перевірки, після чого виконайте debsums | grep -v "OK$"
(після встановлення debsums
за допомогою apt-get install debsums
), щоб виявити будь-які проблеми.
Прочитайте наступну сторінку, щоб дізнатися про інструменти, які можуть бути корисними для виявлення шкідливого ПЗ:
Щоб ефективно шукати встановлені програми на системах 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, які часто використовуються шкідливим ПЗ як компоненти руткітів, завантажуються під час завантаження системи. Директорії та файли, критично важливі для цих модулів, включають:
/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 на предмет змін у репозиторіях.
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 для візуалізації хронологій подій або 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-систем: Посібники з цифрової криміналістики
Використовуйте Trickest для легкого створення та автоматизації робочих процесів, підтримуваних найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)