Translated ['', 'src/generic-methodologies-and-resources/basic-forensic-

This commit is contained in:
Translator 2025-08-21 02:33:55 +00:00
parent d5f2d42e3d
commit ca67b7b1a2
2 changed files with 153 additions and 47 deletions

View File

@ -9,7 +9,7 @@
Обидва атрибути мають 4 часові мітки: **Зміна**, **доступ**, **створення** та **зміна реєстрації MFT** (MACE або MACB). Обидва атрибути мають 4 часові мітки: **Зміна**, **доступ**, **створення** та **зміна реєстрації MFT** (MACE або MACB).
**Windows explorer** та інші інструменти показують інформацію з **`$STANDARD_INFORMATION`**. **Провідник Windows** та інші інструменти показують інформацію з **`$STANDARD_INFORMATION`**.
### TimeStomp - Анти-слідчий інструмент ### TimeStomp - Анти-слідчий інструмент
@ -17,7 +17,7 @@
### Usnjrnl ### Usnjrnl
**USN Journal** (Журнал номерів послідовності оновлень) є функцією NTFS (файлова система Windows NT), яка відстежує зміни обсягу. Інструмент [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) дозволяє досліджувати ці зміни. **USN Journal** (Журнал номерів послідовності оновлень) є функцією NTFS (файлова система Windows NT), яка відстежує зміни обсягу. Інструмент [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) дозволяє перевіряти ці зміни.
![](<../../images/image (801).png>) ![](<../../images/image (801).png>)
@ -36,13 +36,13 @@
![](<../../images/image (1089).png>) ![](<../../images/image (1089).png>)
- CTIME: Час створення файлу - CTIME: Час створення файлу
- ATIME: Час зміни файлу - ATIME: Час модифікації файлу
- MTIME: Зміна реєстрації MFT файлу - MTIME: Зміна реєстрації MFT файлу
- RTIME: Час доступу до файлу - RTIME: Час доступу до файлу
### Порівняння `$STANDARD_INFORMATION` та `$FILE_NAME` ### Порівняння `$STANDARD_INFORMATION` та `$FILE_NAME`
Ще один спосіб виявити підозрілі змінені файли - це порівняти час на обох атрибутах, шукаючи **невідповідності**. Ще один спосіб виявити підозрілі модифіковані файли - це порівняти час на обох атрибутах, шукаючи **невідповідності**.
### Наносекунди ### Наносекунди
@ -54,13 +54,13 @@
## Сховані дані ## Сховані дані
NFTS використовує кластер і мінімальний розмір інформації. Це означає, що якщо файл займає кластер і півтора, **залишкова половина ніколи не буде використана**, поки файл не буде видалено. Тоді можливо **сховати дані в цьому слек-просторі**. NFTS використовує кластер і мінімальний розмір інформації. Це означає, що якщо файл займає кластер і півтора, то **залишкова половина ніколи не буде використана** до тих пір, поки файл не буде видалено. Тоді можливо **сховати дані в цьому слек-просторі**.
Існують інструменти, такі як slacker, які дозволяють ховати дані в цьому "схованому" просторі. Однак аналіз `$logfile` та `$usnjrnl` може показати, що деякі дані були додані: Існують інструменти, такі як slacker, які дозволяють ховати дані в цьому "схованому" просторі. Однак аналіз `$logfile` та `$usnjrnl` може показати, що деякі дані були додані:
![](<../../images/image (1060).png>) ![](<../../images/image (1060).png>)
Тоді можливо відновити слек-простір, використовуючи інструменти, такі як FTK Imager. Зверніть увагу, що цей тип інструменту може зберігати вміст в обфусцированому або навіть зашифрованому вигляді. Тоді можливо відновити слек-простір, використовуючи інструменти, такі як FTK Imager. Зверніть увагу, що такі інструменти можуть зберігати вміст у зашифрованому або навіть обфусцированому вигляді.
## UsbKill ## UsbKill
@ -85,7 +85,7 @@ NFTS використовує кластер і мінімальний розм
Вимкнення UserAssist вимагає двох кроків: Вимкнення UserAssist вимагає двох кроків:
1. Встановіть два ключі реєстру, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` та `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, обидва на нуль, щоб сигналізувати, що ми хочемо вимкнути UserAssist. 1. Встановіть два ключі реєстру, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` та `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, обидва на нуль, щоб сигналізувати про те, що ми хочемо вимкнути UserAssist.
2. Очистіть свої піддерева реєстру, які виглядають як `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`. 2. Очистіть свої піддерева реєстру, які виглядають як `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`.
### Вимкнути часові мітки - Prefetch ### Вимкнути часові мітки - Prefetch
@ -109,7 +109,7 @@ NFTS використовує кластер і мінімальний розм
### Видалити історію USB ### Видалити історію USB
Всі **USB Device Entries** зберігаються в реєстрі Windows під ключем **USBSTOR**, який містить підключі, які створюються щоразу, коли ви підключаєте USB-пристрій до свого ПК або ноутбука. Ви можете знайти цей ключ тут H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Видаливши це**, ви видалите історію USB.\ Всі **USB-пристрої** зберігаються в реєстрі Windows під ключем **USBSTOR**, який містить підключі, які створюються щоразу, коли ви підключаєте USB-пристрій до свого ПК або ноутбука. Ви можете знайти цей ключ тут H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Видаливши це**, ви видалите історію USB.\
Ви також можете використовувати інструмент [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html), щоб переконатися, що ви їх видалили (і щоб видалити їх). Ви також можете використовувати інструмент [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html), щоб переконатися, що ви їх видалили (і щоб видалити їх).
Ще один файл, який зберігає інформацію про USB, - це файл `setupapi.dev.log` всередині `C:\Windows\INF`. Цей файл також слід видалити. Ще один файл, який зберігає інформацію про USB, - це файл `setupapi.dev.log` всередині `C:\Windows\INF`. Цей файл також слід видалити.
@ -143,7 +143,7 @@ NFTS використовує кластер і мінімальний розм
### Вимкнути журнали подій Windows ### Вимкнути журнали подій Windows
- `reg add 'HKLM\\SYSTEM\\CurrentControlSet\\Services\\eventlog' /v Start /t REG_DWORD /d 4 /f` - `reg add 'HKLM\\SYSTEM\\CurrentControlSet\\Services\\eventlog' /v Start /t REG_DWORD /d 4 /f`
- У розділі служб вимкніть службу "Windows Event Log" - У розділі служб вимкніть службу "Журнал подій Windows"
- `WEvtUtil.exec clear-log` або `WEvtUtil.exe cl` - `WEvtUtil.exec clear-log` або `WEvtUtil.exe cl`
### Вимкнути $UsnJrnl ### Вимкнути $UsnJrnl
@ -152,7 +152,7 @@ NFTS використовує кластер і мінімальний розм
--- ---
## Розширене ведення журналів та підробка трас (2023-2025) ## Розширене ведення журналів та підробка слідів (2023-2025)
### Ведення журналів PowerShell ScriptBlock/Module ### Ведення журналів PowerShell ScriptBlock/Module
@ -172,9 +172,11 @@ Remove-WinEvent # requires admin & Win11 23H2+
``` ```
Захисники повинні стежити за змінами в цих ключах реєстру та за великим обсягом видалення подій PowerShell. Захисники повинні стежити за змінами в цих ключах реєстру та за великим обсягом видалення подій PowerShell.
### ETW (Event Tracing for Windows) Патч ### ETW (Event Tracing for Windows) Patch
Продукти безпеки кінцевих точок сильно покладаються на ETW. Популярний метод ухилення 2024 року полягає в патчуванні `ntdll!EtwEventWrite`/`EtwEventWriteFull` в пам'яті, щоб кожен виклик ETW повертав `STATUS_SUCCESS` без виведення події: Продукти безпеки кінцевих точок сильно покладаються на ETW. Популярний метод ухилення 2024 року полягає в тому, щоб
виправити `ntdll!EtwEventWrite`/`EtwEventWriteFull` в пам'яті, щоб кожен виклик ETW повертав `STATUS_SUCCESS`
без виведення події:
```c ```c
// 0xC3 = RET on x64 // 0xC3 = RET on x64
unsigned char patch[1] = { 0xC3 }; unsigned char patch[1] = { 0xC3 };
@ -184,7 +186,7 @@ patch, sizeof(patch), NULL);
``` ```
Public PoCs (e.g. `EtwTiSwallow`) реалізують ту ж саму примітиву в PowerShell або C++. Public PoCs (e.g. `EtwTiSwallow`) реалізують ту ж саму примітиву в PowerShell або C++.
Оскільки патч є **локальним для процесу**, EDR, що працюють в інших процесах, можуть його пропустити. Оскільки патч є **локальним для процесу**, EDR, що працюють в інших процесах, можуть його пропустити.
Виявлення: порівняйте `ntdll` в пам'яті з диском або перехопіть перед режимом користувача. Виявлення: порівняти `ntdll` в пам'яті з на диску, або перехопити перед режимом користувача.
### Відродження альтернативних потоків даних (ADS) ### Відродження альтернативних потоків даних (ADS)
@ -205,16 +207,92 @@ AuKill.exe -e "C:\\Program Files\\Windows Defender\\MsMpEng.exe"
AuKill.exe -k CrowdStrike AuKill.exe -k CrowdStrike
``` ```
Драйвер видаляється після цього, залишаючи мінімальні артефакти. Драйвер видаляється після цього, залишаючи мінімальні артефакти.
Заходи пом'якшення: увімкніть чорний список вразливих драйверів Microsoft (HVCI/SAC) Заходи пом'якшення: увімкніть чорний список вразливих драйверів Microsoft (HVCI/SAC) і сповіщайте про створення служб ядра з шляхів, доступних для запису користувачем.
та сповіщайте про створення служб ядра з шляхів, доступних для запису користувачем.
--- ---
## Посилання ## Linux Anti-Forensics: Самостійне виправлення та Cloud C2 (20232025)
- Sophos X-Ops “AuKill: Зброя для вразливого драйвера для відключення EDR” (березень 2023) ### Самостійне виправлення скомпрометованих служб для зменшення виявлення (Linux)
https://news.sophos.com/en-us/2023/03/07/aukill-a-weaponized-vulnerable-driver-for-disabling-edr Супротивники все частіше "самостійно виправляють" службу відразу після її експлуатації, щоб запобігти повторній експлуатації та пригнічувати виявлення на основі вразливостей. Ідея полягає в тому, щоб замінити вразливі компоненти на останні легітимні бінарні файли/JAR з верхнього рівня, щоб сканери повідомляли, що хост виправлений, в той час як стійкість і C2 залишаються.
- Red Canary “Виправлення EtwEventWrite для прихованості: Виявлення та полювання” (червень 2024)
https://redcanary.com/blog/etw-patching-detection Приклад: Apache ActiveMQ OpenWire RCE (CVE202346604)
- Після експлуатації зловмисники отримали легітимні JAR з Maven Central (repo1.maven.org), видалили вразливі JAR у встановленні ActiveMQ і перезапустили брокера.
- Це закрило початковий RCE, зберігаючи інші точки доступу (cron, зміни конфігурації SSH, окремі імпланти C2).
Операційний приклад (ілюстративний)
```bash
# ActiveMQ install root (adjust as needed)
AMQ_DIR=/opt/activemq
cd "$AMQ_DIR"/lib
# Fetch patched JARs from Maven Central (versions as appropriate)
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-client/5.18.3/activemq-client-5.18.3.jar
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-openwire-legacy/5.18.3/activemq-openwire-legacy-5.18.3.jar
# Remove vulnerable files and ensure the service uses the patched ones
rm -f activemq-client-5.18.2.jar activemq-openwire-legacy-5.18.2.jar || true
ln -sf activemq-client-5.18.3.jar activemq-client.jar
ln -sf activemq-openwire-legacy-5.18.3.jar activemq-openwire-legacy.jar
# Apply changes without removing persistence
systemctl restart activemq || service activemq restart
```
Forensic/hunting tips
- Перегляньте каталоги служб на наявність незапланованих замін бінарних/JAR файлів:
- Debian/Ubuntu: `dpkg -V activemq` та порівняйте хеші/шляхи файлів з дзеркалами репозиторіїв.
- RHEL/CentOS: `rpm -Va 'activemq*'`
- Шукайте версії JAR, які присутні на диску, але не належать менеджеру пакетів, або символічні посилання, оновлені поза межами.
- Хронологія: `find "$AMQ_DIR" -type f -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort` для кореляції ctime/mtime з вікном компрометації.
- Історія оболонки/телеметрія процесів: докази `curl`/`wget` до `repo1.maven.org` або інших CDN артефактів відразу після початкової експлуатації.
- Управління змінами: перевірте, хто застосував "патч" і чому, а не лише те, що присутня патчена версія.
### Cloudservice C2 with bearer tokens and antianalysis stagers
Спостережуване ремесло поєднувало кілька довгострокових C2 шляхів та пакування для протидії аналізу:
- Завантажувачі ELF з PyInstaller, захищені паролем, щоб ускладнити пісочницю та статичний аналіз (наприклад, зашифрований PYZ, тимчасове витягування під `/_MEI*`).
- Індикатори: `strings` хіти, такі як `PyInstaller`, `pyi-archive`, `PYZ-00.pyz`, `MEIPASS`.
- Артефакти під час виконання: витягування до `/tmp/_MEI*` або користувацькі `--runtime-tmpdir` шляхи.
- C2 на базі Dropbox з жорстко закодованими OAuth Bearer токенами
- Мережеві маркери: `api.dropboxapi.com` / `content.dropboxapi.com` з `Authorization: Bearer <token>`.
- Шукайте в проксі/NetFlow/Zeek/Suricata вихідний HTTPS до доменів Dropbox з серверних навантажень, які зазвичай не синхронізують файли.
- Паралельний/резервний C2 через тунелювання (наприклад, Cloudflare Tunnel `cloudflared`), зберігаючи контроль, якщо один канал заблоковано.
- Хост IOCs: процеси/одиниці `cloudflared`, конфігурація в `~/.cloudflared/*.json`, вихідний 443 до Cloudflare edges.
### Persistence and “hardening rollback” to maintain access (Linux examples)
Зловмисники часто поєднують самопатчинг з надійними шляхами доступу:
- Cron/Anacron: редагування `0anacron` стуба в кожному каталозі `/etc/cron.*/` для періодичного виконання.
- Шукайте:
```bash
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
grep -R --line-number -E 'curl|wget|python|/bin/sh' /etc/cron.*/* 2>/dev/null
```
- Відкат жорсткості конфігурації SSH: увімкнення входу root та зміна стандартних оболонок для облікових записів з низькими привілеями.
- Шукайте увімкнення входу root:
```bash
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
# значення прапорців, такі як "yes" або надто поблажливі налаштування
```
- Шукайте підозрілі інтерактивні оболонки на системних облікових записах (наприклад, `games`):
```bash
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
```
- Випадкові, коротко названі артефакти маяків (8 алфавітних символів), які скидаються на диск і також контактують з хмарним C2:
- Шукайте:
```bash
find / -maxdepth 3 -type f -regextype posix-extended -regex '.*/[A-Za-z]{8}$' \
-exec stat -c '%n %s %y' {} \; 2>/dev/null | sort
```
Захисники повинні корелювати ці артефакти з зовнішнім впливом та подіями патчування служб, щоб виявити антифорензічне самовиправлення, використане для приховування початкової експлуатації.
## References
- Sophos X-Ops “AuKill: A Weaponized Vulnerable Driver for Disabling EDR” (March 2023)
https://news.sophos.com/en-us/2023/03/07/aukill-a-weaponized-vulnerable-driver-for-disabling-edr
- Red Canary “Patching EtwEventWrite for Stealth: Detection & Hunting” (June 2024)
https://redcanary.com/blog/etw-patching-detection
- [Red Canary Patching for persistence: How DripDropper Linux malware moves through the cloud](https://redcanary.com/blog/threat-intelligence/dripdropper-linux-malware/)
- [CVE202346604 Apache ActiveMQ OpenWire RCE (NVD)](https://nvd.nist.gov/vuln/detail/CVE-2023-46604)
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}

View File

@ -11,7 +11,7 @@
export PATH=/mnt/usb/bin:/mnt/usb/sbin export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
``` ```
Якщо ви налаштували систему на використання хороших і відомих бінарних файлів, ви можете почати **витягувати деяку базову інформацію**: Як тільки ви налаштували систему на використання хороших і відомих бінарних файлів, ви можете почати **витягувати деяку базову інформацію**:
```bash ```bash
date #Date and time (Clock may be skewed, Might be at a different timezone) date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info uname -a #OS info
@ -35,14 +35,14 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
- **Root процеси** зазвичай працюють з низькими PID, тому якщо ви знайдете root процес з великим PID, ви можете підозрювати - **Root процеси** зазвичай працюють з низькими PID, тому якщо ви знайдете root процес з великим PID, ви можете підозрювати
- Перевірте **зареєстровані логіни** користувачів без оболонки в `/etc/passwd` - Перевірте **зареєстровані логіни** користувачів без оболонки в `/etc/passwd`
- Перевірте **хеші паролів** в `/etc/shadow` для користувачів без оболонки - Перевірте наявність **хешів паролів** в `/etc/shadow` для користувачів без оболонки
### Дамп пам'яті ### Дамп пам'яті
Щоб отримати пам'ять працюючої системи, рекомендується використовувати [**LiME**](https://github.com/504ensicsLabs/LiME).\ Щоб отримати пам'ять працюючої системи, рекомендується використовувати [**LiME**](https://github.com/504ensicsLabs/LiME).\
Щоб **скомпілювати** його, вам потрібно використовувати **той самий ядро**, яке використовує машина жертви. Щоб **скомпілювати** його, вам потрібно використовувати **той самий ядро**, яке використовує машина жертви.
> [!NOTE] > [!TIP]
> Пам'ятайте, що ви **не можете встановити LiME або будь-що інше** на машині жертви, оскільки це призведе до кількох змін у ній > Пам'ятайте, що ви **не можете встановити LiME або будь-що інше** на машині жертви, оскільки це призведе до кількох змін у ній
Отже, якщо у вас є ідентична версія Ubuntu, ви можете використовувати `apt-get install lime-forensics-dkms`\ Отже, якщо у вас є ідентична версія Ubuntu, ви можете використовувати `apt-get install lime-forensics-dkms`\
@ -53,7 +53,7 @@ sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
``` ```
LiME підтримує 3 **формати**: LiME підтримує 3 **формати**:
- Raw (кожен сегмент з'єднаний разом) - Raw (кожен сегмент об'єднаний разом)
- Padded (той же, що й raw, але з нулями в правих бітах) - Padded (той же, що й raw, але з нулями в правих бітах)
- Lime (рекомендований формат з метаданими) - Lime (рекомендований формат з метаданими)
@ -64,7 +64,7 @@ LiME також може бути використаний для **відпра
#### Вимкнення #### Вимкнення
По-перше, вам потрібно буде **вимкнути систему**. Це не завжди можливо, оскільки іноді система буде виробничим сервером, який компанія не може дозволити собі вимкнути.\ По-перше, вам потрібно буде **вимкнути систему**. Це не завжди можливо, оскільки іноді система буде виробничим сервером, який компанія не може дозволити собі вимкнути.\
Є **2 способи** вимкнення системи: **нормальне вимкнення** та **вимкнення "вийняти штекер"**. Перше дозволить **процесам завершитися як зазвичай** і **файловій системі** бути **синхронізованою**, але також дозволить можливому **шкідливому ПЗ** **знищити докази**. Підхід "вийняти штекер" може призвести до **втрати деякої інформації** (не багато інформації буде втрачено, оскільки ми вже зробили зображення пам'яті) і **шкідливе ПЗ не матиме жодної можливості** щось з цим зробити. Тому, якщо ви **підозрюєте**, що може бути **шкідливе ПЗ**, просто виконайте **команду** **`sync`** на системі і вийміть штекер. Існує **2 способи** вимкнення системи: **нормальне вимкнення** та **вимкнення "вийняти шнур"**. Перше дозволить **процесам завершитися як зазвичай** і **файловій системі** бути **синхронізованою**, але також дозволить можливому **шкідливому ПЗ** **знищити докази**. Підхід "вийняти шнур" може призвести до **втрати деякої інформації** (не багато інформації буде втрачено, оскільки ми вже зробили знімок пам'яті) і **шкідливе ПЗ не матиме жодної можливості** щось з цим зробити. Тому, якщо ви **підозрюєте**, що може бути **шкідливе ПЗ**, просто виконайте **команду** **`sync`** на системі і вийміть шнур.
#### Зняття зображення диска #### Зняття зображення диска
@ -79,7 +79,7 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
``` ```
### Попередній аналіз образу диска ### Попередній аналіз образу диска
Імідж образу диска без додаткових даних. Іміджування образу диска без додаткових даних.
```bash ```bash
#Find out if it's a disk image using "file" command #Find out if it's a disk image using "file" command
file disk.img file disk.img
@ -139,7 +139,7 @@ ThisisTheMasterSecret
Linux пропонує інструменти для забезпечення цілісності системних компонентів, що є критично важливим для виявлення потенційно проблемних файлів. Linux пропонує інструменти для забезпечення цілісності системних компонентів, що є критично важливим для виявлення потенційно проблемних файлів.
- **Системи на базі RedHat**: Використовуйте `rpm -Va` для всебічної перевірки. - **Системи на базі RedHat**: Використовуйте `rpm -Va` для всебічної перевірки.
- **Системи на базі Debian**: `dpkg --verify` для початкової перевірки, після чого виконайте `debsums | grep -v "OK$"` (після встановлення `debsums` за допомогою `apt-get install debsums`) для виявлення будь-яких проблем. - **Системи на базі Debian**: `dpkg --verify` для початкової перевірки, а потім `debsums | grep -v "OK$"` (після встановлення `debsums` за допомогою `apt-get install debsums`) для виявлення будь-яких проблем.
### Детектори шкідливого ПЗ/Rootkit ### Детектори шкідливого ПЗ/Rootkit
@ -153,10 +153,10 @@ malware-analysis.md
Щоб ефективно шукати встановлені програми на системах Debian і RedHat, розгляньте можливість використання системних журналів і баз даних разом із ручними перевірками в загальних каталогах. Щоб ефективно шукати встановлені програми на системах Debian і RedHat, розгляньте можливість використання системних журналів і баз даних разом із ручними перевірками в загальних каталогах.
- Для Debian перевірте _**`/var/lib/dpkg/status`**_ і _**`/var/log/dpkg.log`**_ для отримання деталей про встановлення пакетів, використовуючи `grep` для фільтрації конкретної інформації. - Для Debian перевірте _**`/var/lib/dpkg/status`**_ і _**`/var/log/dpkg.log`**_, щоб отримати деталі про встановлення пакетів, використовуючи `grep` для фільтрації конкретної інформації.
- Користувачі RedHat можуть запитувати базу даних RPM за допомогою `rpm -qa --root=/mntpath/var/lib/rpm`, щоб перерахувати встановлені пакети. - Користувачі RedHat можуть запитати базу даних RPM за допомогою `rpm -qa --root=/mntpath/var/lib/rpm`, щоб перерахувати встановлені пакети.
Щоб виявити програмне забезпечення, встановлене вручну або поза цими менеджерами пакетів, досліджуйте каталоги, такі як _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, і _**`/sbin`**_. Поєднайте списки каталогів із командами, специфічними для системи, щоб ідентифікувати виконувані файли, не пов'язані з відомими пакетами, що покращить ваш пошук усіх встановлених програм. Щоб виявити програмне забезпечення, встановлене вручну або поза цими менеджерами пакетів, досліджуйте каталоги, такі як _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, і _**`/sbin`**_. Поєднайте списки каталогів із системно-специфічними командами, щоб ідентифікувати виконувані файли, не пов'язані з відомими пакетами, що покращить ваш пошук усіх встановлених програм.
```bash ```bash
# Debian package and log details # Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:" cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -174,7 +174,7 @@ find / -type f -executable | grep <something>
``` ```
## Відновлення видалених запущених бінарних файлів ## Відновлення видалених запущених бінарних файлів
Уявіть процес, який був виконаний з /tmp/exec і потім видалений. Можливо, його витягти. Уявіть процес, який був виконаний з /tmp/exec і потім видалений. Можливо, його витягти
```bash ```bash
cd /proc/3746/ #PID with the exec file deleted cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000 head -1 maps #Get address of the file. It was 08048000-08049000
@ -196,6 +196,32 @@ cat /var/spool/cron/crontabs/* \
#MacOS #MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
``` ```
#### Hunt: Зловживання Cron/Anacron через 0anacron та підозрілі стуби
Атакуючі часто редагують стуб 0anacron, що знаходиться в кожному каталозі /etc/cron.*/ для забезпечення періодичного виконання.
```bash
# List 0anacron files and their timestamps/sizes
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
# Look for obvious execution of shells or downloaders embedded in cron stubs
grep -R --line-number -E 'curl|wget|/bin/sh|python|bash -c' /etc/cron.*/* 2>/dev/null
```
#### Hunt: SSH hardening rollback and backdoor shells
Зміни в sshd_config та системних облікових записах оболонок є звичайними після експлуатації для збереження доступу.
```bash
# Root login enablement (flag "yes" or lax values)
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
# System accounts with interactive shells (e.g., games → /bin/sh)
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
```
#### Hunt: Cloud C2 markers (Dropbox/Cloudflare Tunnel)
- API-мітки Dropbox зазвичай використовують api.dropboxapi.com або content.dropboxapi.com через HTTPS з Authorization: Bearer токенами.
- Шукайте в proxy/Zeek/NetFlow несподіваний вихід Dropbox з серверів.
- Cloudflare Tunnel (`cloudflared`) забезпечує резервний C2 через вихідний 443.
```bash
ps aux | grep -E '[c]loudflared|trycloudflare'
systemctl list-units | grep -i cloudflared
```
### Послуги ### Послуги
Шляхи, де шкідливе ПЗ може бути встановлено як служба: Шляхи, де шкідливе ПЗ може бути встановлено як служба:
@ -210,9 +236,9 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
- **\~/.config/autostart/**: Для автоматичних програм запуску, специфічних для користувача, які можуть бути прихованим місцем для шкідливого ПЗ, націленого на користувача. - **\~/.config/autostart/**: Для автоматичних програм запуску, специфічних для користувача, які можуть бути прихованим місцем для шкідливого ПЗ, націленого на користувача.
- **/lib/systemd/system/**: Стандартні файли одиниць системи, надані встановленими пакетами. - **/lib/systemd/system/**: Стандартні файли одиниць системи, надані встановленими пакетами.
### Ядрові модулі ### Модулі ядра
Ядрові модулі Linux, які часто використовуються шкідливим ПЗ як компоненти руткітів, завантажуються під час завантаження системи. Директорії та файли, критично важливі для цих модулів, включають: Модулі ядра Linux, які часто використовуються шкідливим ПЗ як компоненти руткітів, завантажуються під час завантаження системи. Директорії та файли, критично важливі для цих модулів, включають:
- **/lib/modules/$(uname -r)**: Містить модулі для версії ядра, що працює. - **/lib/modules/$(uname -r)**: Містить модулі для версії ядра, що працює.
- **/etc/modprobe.d**: Містить конфігураційні файли для контролю завантаження модулів. - **/etc/modprobe.d**: Містить конфігураційні файли для контролю завантаження модулів.
@ -246,10 +272,10 @@ Linux використовує різні файли для автоматичн
- **/var/log/xferlog**: Записує FTP-передачі файлів. - **/var/log/xferlog**: Записує FTP-передачі файлів.
- **/var/log/**: Завжди перевіряйте на наявність несподіваних журналів тут. - **/var/log/**: Завжди перевіряйте на наявність несподіваних журналів тут.
> [!NOTE] > [!TIP]
> Журнали системи Linux та підсистеми аудиту можуть бути вимкнені або видалені під час вторгнення або інциденту з шкідливим ПЗ. Оскільки журнали на системах Linux зазвичай містять деяку з найкорисніших інформації про злочинні дії, зловмисники регулярно їх видаляють. Тому, перевіряючи доступні журнали, важливо шукати прогалини або записи в неправильному порядку, які можуть свідчити про видалення або підробку. > Журнали системи Linux та підсистеми аудиту можуть бути вимкнені або видалені під час вторгнення або інциденту з шкідливим ПЗ. Оскільки журнали на системах Linux зазвичай містять деяку з найкорисніших інформацій про злочинні дії, зловмисники регулярно їх видаляють. Тому, перевіряючи доступні журнали, важливо шукати прогалини або записи в неправильному порядку, які можуть свідчити про видалення або підробку.
**Linux зберігає історію команд для кожного користувача**, що зберігається в: **Linux зберігає історію команд для кожного користувача**, яка зберігається в:
- \~/.bash_history - \~/.bash_history
- \~/.zsh_history - \~/.zsh_history
@ -282,7 +308,7 @@ Linux використовує різні файли для автоматичн
[**usbrip**](https://github.com/snovvcrash/usbrip) - це невеликий програмний продукт, написаний на чистому Python 3, який аналізує журнали Linux (`/var/log/syslog*` або `/var/log/messages*` залежно від дистрибутива) для створення таблиць історії подій USB. [**usbrip**](https://github.com/snovvcrash/usbrip) - це невеликий програмний продукт, написаний на чистому Python 3, який аналізує журнали Linux (`/var/log/syslog*` або `/var/log/messages*` залежно від дистрибутива) для створення таблиць історії подій USB.
Цікаво знати **всі USB, які були використані**, і це буде ще корисніше, якщо у вас є авторизований список USB для виявлення "порушень" (використання USB, які не входять до цього списку). Цікаво знати **всі USB, які були використані**, і це буде ще корисніше, якщо у вас є авторизований список USB для виявлення "інцидентів порушення" (використання USB, які не входять до цього списку).
### Встановлення ### Встановлення
```bash ```bash
@ -302,24 +328,24 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
## Перегляд облікових записів користувачів та активності входу ## Перегляд облікових записів користувачів та активності входу
Перевірте _**/etc/passwd**_, _**/etc/shadow**_ та **журнали безпеки** на наявність незвичних імен або облікових записів, створених або використаних у близькій близькості до відомих несанкціонованих подій. Також перевірте можливі атаки грубої сили на sudo.\ Перевірте _**/etc/passwd**_, _**/etc/shadow**_ та **журнали безпеки** на наявність незвичних імен або облікових записів, створених або використаних у близькій близькості до відомих несанкціонованих подій. Також перевірте можливі атаки грубої сили на sudo.\
Крім того, перевірте файли, такі як _**/etc/sudoers**_ та _**/etc/groups**_, на предмет несподіваних привілеїв, наданих користувачам.\ Крім того, перевірте файли, такі як _**/etc/sudoers**_ та _**/etc/groups**_, на наявність несподіваних привілеїв, наданих користувачам.\
Нарешті, шукайте облікові записи з **без паролів** або **легко вгадуваними** паролями. Нарешті, шукайте облікові записи з **без паролів** або **легко вгадуваними** паролями.
## Перевірка файлової системи ## Перевірка файлової системи
### Аналіз структур файлової системи в розслідуванні шкідливого ПЗ ### Аналіз структур файлової системи в розслідуванні шкідливого ПЗ
Під час розслідування інцидентів з шкідливим ПЗ структура файлової системи є важливим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого ПЗ. Однак автори шкідливого ПЗ розробляють методи, щоб ускладнити цей аналіз, такі як зміна часових міток файлів або уникнення файлової системи для зберігання даних. Під час розслідування інцидентів з шкідливим ПЗ структура файлової системи є важливим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого ПЗ. Однак автори шкідливого ПЗ розробляють техніки, щоб ускладнити цей аналіз, такі як зміна часових міток файлів або уникнення файлової системи для зберігання даних.
Щоб протидіяти цим антифорензічним методам, важливо: Щоб протидіяти цим антифорензічним методам, важливо:
- **Провести ретельний аналіз хронології** за допомогою інструментів, таких як **Autopsy** для візуалізації хронологій подій або **Sleuth Kit's** `mactime` для детальних даних хронології. - **Провести детальний аналіз хронології** за допомогою інструментів, таких як **Autopsy** для візуалізації хронологій подій або **Sleuth Kit's** `mactime` для детальних даних хронології.
- **Дослідити несподівані скрипти** в $PATH системи, які можуть включати shell або PHP скрипти, що використовуються зловмисниками. - **Дослідити несподівані скрипти** в $PATH системи, які можуть включати shell або PHP скрипти, що використовуються зловмисниками.
- **Перевірити `/dev` на наявність нетипових файлів**, оскільки він традиційно містить спеціальні файли, але може містити файли, пов'язані зі шкідливим ПЗ. - **Перевірити `/dev` на наявність нетипових файлів**, оскільки традиційно він містить спеціальні файли, але може містити файли, пов'язані зі шкідливим ПЗ.
- **Шукати приховані файли або каталоги** з іменами, такими як ".. " (крапка крапка пробіл) або "..^G" (крапка крапка контроль-G), які можуть приховувати шкідливий вміст. - **Шукати приховані файли або каталоги** з іменами, такими як ".. " (крапка крапка пробіл) або "..^G" (крапка крапка контроль-G), які можуть приховувати шкідливий вміст.
- **Визначити файли setuid root** за допомогою команди: `find / -user root -perm -04000 -print` Це знаходить файли з підвищеними привілеями, які можуть бути зловживані зловмисниками. - **Визначити файли setuid root** за допомогою команди: `find / -user root -perm -04000 -print` Це знаходить файли з підвищеними привілеями, які можуть бути зловживані зловмисниками.
- **Переглянути часові мітки видалення** в таблицях inode, щоб виявити масові видалення файлів, що може вказувати на наявність rootkit або троянів. - **Переглянути часові мітки видалення** в таблицях inode, щоб виявити масові видалення файлів, що може вказувати на наявність rootkit або троянів.
- **Перевірити послідовні inode** на наявність сусідніх шкідливих файлів після виявлення одного, оскільки вони могли бути розміщені разом. - **Перевірити послідовні inodes** на наявність сусідніх шкідливих файлів після виявлення одного, оскільки вони могли бути розміщені разом.
- **Перевірити загальні каталоги бінарних файлів** (_/bin_, _/sbin_) на наявність нещодавно змінених файлів, оскільки ці файли могли бути змінені шкідливим ПЗ. - **Перевірити загальні каталоги бінарних файлів** (_/bin_, _/sbin_) на наявність нещодавно змінених файлів, оскільки ці файли могли бути змінені шкідливим ПЗ.
````bash ````bash
# List recent files in a directory: # List recent files in a directory:
@ -328,20 +354,20 @@ ls -laR --sort=time /bin```
# Sort files in a directory by inode: # Sort files in a directory by inode:
ls -lai /bin | sort -n``` ls -lai /bin | sort -n```
```` ````
> [!NOTE] > [!TIP]
> Зверніть увагу, що **зловмисник** може **змінити** **час**, щоб **файли виглядали** **легітимними**, але він **не може** змінити **inode**. Якщо ви виявите, що **файл** вказує на те, що він був створений і змінений в **один і той же час** з іншими файлами в тій же папці, але **inode** є **неочікувано більшим**, то **часові мітки цього файлу були змінені**. > Зверніть увагу, що **зловмисник** може **змінити** **час**, щоб **файли виглядали** **легітимними**, але він **не може** змінити **inode**. Якщо ви виявите, що **файл** вказує на те, що він був створений і змінений в **один і той же час** з іншими файлами в тій же папці, але **inode** є **неочікувано більшим**, то **часові мітки цього файлу були змінені**.
## Порівняння файлів різних версій файлової системи ## Порівняння файлів різних версій файлової системи
### Резюме порівняння версій файлової системи ### Резюме порівняння версій файлової системи
Щоб порівняти версії файлової системи та виявити зміни, ми використовуємо спрощені команди `git diff`: Щоб порівняти версії файлових систем і виявити зміни, ми використовуємо спрощені команди `git diff`:
- **Щоб знайти нові файли**, порівняйте дві директорії: - **Щоб знайти нові файли**, порівняйте дві директорії:
```bash ```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
``` ```
- **Для зміненого контенту**, перерахувати зміни, ігноруючи конкретні рядки: - **Для зміненого контенту** перерахувати зміни, ігноруючи конкретні рядки:
```bash ```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
``` ```
@ -349,7 +375,7 @@ git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ |
```bash ```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
``` ```
- **Опції фільтра** (`--diff-filter`) допомагають звузити до конкретних змін, таких як додані (`A`), видалені (`D`) або змінені (`M`) файли. - **Опції фільтрації** (`--diff-filter`) допомагають звузити до конкретних змін, таких як додані (`A`), видалені (`D`) або змінені (`M`) файли.
- `A`: Додані файли - `A`: Додані файли
- `C`: Скопійовані файли - `C`: Скопійовані файли
- `D`: Видалені файли - `D`: Видалені файли
@ -365,6 +391,8 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
- [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems_Ch3.pdf) - [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems_Ch3.pdf)
- [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/) - [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
- [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203) - [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
- **Книга: Посібник з комп'ютерної криміналістики для Linux-систем: Посібники з цифрової криміналістики** - **Книга: Посібник з комп'ютерної криміналістики для Linux: Полеві посібники з цифрової криміналістики**
- [Red Canary Патчинг для стійкості: Як шкідливе ПЗ DripDropper для Linux переміщується через хмару](https://redcanary.com/blog/threat-intelligence/dripdropper-linux-malware/)
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}