Основи криміналістичної методики (Частина 1)

15 березня 2024 11 хвилин Автор: Cyber Witcher

Основи криміналістичної методики – це важливий компонент криміналістичної науки, який вивчає методи та прийоми проведення розслідування кримінальних справ. Ця галузь об’єднує теоретичні засади та практичні навички, необхідні для ефективного виявлення, фіксації, зберігання та аналізу доказів.

Базовий моніторинг

Базовий рівень

Базовий рівень складається зі створення знімка певних частин системи для порівняння з майбутнім станом, щоб виділити зміни .

Наприклад, ви можете обчислити та зберегти хеш кожного файлу файлової системи, щоб мати можливість дізнатися, які файли були змінені. Це також можна зробити за допомогою створених облікових записів користувачів, запущених процесів, запущених служб і будь-якого іншого, що не повинно змінюватися суттєво або взагалі.

Моніторинг цілісності файлів

Моніторинг цілісності файлів (FIM) є критично важливою технікою безпеки, яка захищає ІТ-середовища та дані шляхом відстеження змін у файлах. Він включає два ключові кроки:

  1. Порівняння базової лінії: встановіть базову лінію за допомогою атрибутів файлів або криптографічних контрольних сум (наприклад, MD5 або SHA-2) для майбутніх порівнянь для виявлення змін.

  2. Сповіщення про зміни в реальному часі: отримуйте миттєві сповіщення про доступ до файлів або їх зміну, зазвичай через розширення ядра ОС.

Інструменти

Антикриміналістичні методи

Мітки часу

Зловмисник може бути зацікавлений у зміні часових позначок файлів , щоб уникнути виявлення. Мітки часу можна знайти всередині MFT в атрибутах $STANDARD_INFORMATION__ і __ $FILE_NAME.

Обидва атрибути мають 4 позначки часу: модифікація , доступ , створення та модифікація реєстру MFT (MACE або MACB).

Провідник Windows та інші інструменти показують інформацію з $STANDARD_INFORMATION.

TimeStomp – антикриміналістичний інструмент

Цей інструмент змінює інформацію про мітку часу всередині $STANDARD_INFORMATION , але не інформацію всередині $FILE_NAME. Таким чином, можна виявити підозрілу активність .

Usnjrnl

Журнал USN (журнал порядкових номерів оновлення) — це функція NTFS (файлової системи Windows NT), яка відстежує зміни томів. Інструмент UsnJrnl2Csv дозволяє перевірити ці зміни.

Попереднє зображення – це результат , показаний інструментом , де можна помітити, що до файлу внесено деякі зміни .

$LogFile

Усі зміни метаданих у файловій системі реєструються в процесі, відомому як ведення журналу з попереднім записом . Зареєстровані метадані зберігаються у файлі з іменем **$LogFile**, розташованому в кореневому каталозі файлової системи NTFS. Такі інструменти, як LogFileParser , можна використовувати для аналізу цього файлу та визначення змін.

Знову ж таки, у вихідних даних інструменту можна побачити, що внесено деякі зміни . Використовуючи той самий інструмент, можна визначити, до якого часу були змінені позначки часу :

  • CTIME: час створення файлу

  • ATIME: час модифікації файлу

  • MTIME: модифікація реєстру MFT файлу

  • RTIME: час доступу до файлу

$STANDARD_INFORMATIONі $FILE_NAME порівняння

Іншим способом ідентифікації підозрілих змінених файлів було б порівняти час на обох атрибутах на предмет невідповідностей .

Наносекунди

Мітки часу NTFS мають точність 100 наносекунд . Тоді пошук файлів із часовими мітками на зразок 2010-10-10 10:10: 00.000:0000 є дуже підозрілим .

SetMace – інструмент для захисту від криміналістики

Цей інструмент може змінювати як атрибути, $STARNDAR_INFORMATIONтак і $FILE_NAME. Однак у Windows Vista для зміни цієї інформації потрібна активна ОС.

Приховування даних

NFTS використовує кластер і мінімальний розмір інформації. Це означає, що якщо файл займає півтора кластера, нагадування ніколи не використовуватиметься, доки файл не буде видалено. Тоді можна приховати дані в цьому вільному просторі .

Існують такі інструменти, як slacker, які дозволяють приховувати дані в цьому «прихованому» просторі. Однак аналіз $logfileі $usnjrnlможе показати, що деякі дані були додані:

Потім можна отримати вільний простір за допомогою таких інструментів, як FTK Imager. Зауважте, що цей вид інструменту може зберігати вміст у заплутаному або навіть зашифрованому вигляді.

UsbKill

Це інструмент, який вимикає комп’ютер у разі виявлення будь-яких змін у USB-портах. Спосіб виявити це — перевірити запущені процеси та переглянути кожен запущений сценарій python .

Живі дистрибутиви Linux

Ці дистрибутиви виконуються в оперативній пам’яті. Єдиний спосіб виявити їх — якщо файлова система NTFS змонтована з дозволом на запис . Якщо його встановлено лише з дозволом на читання, виявити вторгнення буде неможливо.

Безпечне видалення

Конфігурація Windows

Можна вимкнути кілька методів журналювання Windows, щоб значно ускладнити судове розслідування.

Вимкнути мітки часу – 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.

  2. Очистіть піддерева реєстру, які виглядають як HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>.

Вимкнути часові мітки – Попередня вибірка

Це збереже інформацію про програми, запущені з метою покращення продуктивності системи Windows. Однак це також може бути корисним для практики криміналістики.

  • Виконатиregedit

  • Виберіть шлях до файлуHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters

  • Клацніть правою кнопкою миші на обох EnablePrefetcherіEnableSuperfetch

  • Виберіть «Змінити» для кожного з них, щоб змінити значення з 1 (або 3) на 0

  • Перезапустіть

Вимкнути мітки часу – час останнього доступу

Щоразу, коли папка відкривається з тома NTFS на сервері Windows NT, системі потрібен час, щоб оновити поле позначки часу в кожній папці зі списку , що називається часом останнього доступу. На томі NTFS, який активно використовується, це може вплинути на продуктивність.

  1. Відкрийте редактор реєстру (Regedit.exe).

  2. Перейдіть до HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem.

  3. Шукати NtfsDisableLastAccessUpdate. Якщо він не існує, додайте цей DWORD і встановіть для нього значення 1, що вимкне процес.

  4. Закрийте редактор реєстру та перезавантажте сервер.

Видалити історію USB

Усі записи USB-пристроїв зберігаються в реєстрі Windows у розділі реєстру USBSTOR , який містить підключі, які створюються щоразу, коли ви підключаєте USB-пристрій до ПК або ноутбука. Ви можете знайти цей ключ тут H KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR. Видаливши це, ви видалите історію USB. Ви також можете скористатися інструментом USBDeview , щоб переконатися, що ви видалили їх (і видалити).

Ще один файл, який зберігає інформацію про USB, це файл setupapi.dev.logусередині C:\Windows\INF. Це також слід видалити.

Вимкнути тіньові копії

Перелік тіньових копій із запущеною функцією vssadmin list shadowstorage «Видалити» .vssadmin delete shadow

Ви також можете видалити їх за допомогою графічного інтерфейсу користувача, дотримуючись інструкцій, запропонованих у https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html

Щоб вимкнути тіньові копії, виконайте такі дії :

  1. Відкрийте програму «Служби», ввівши «служби» у текстовому полі пошуку після натискання кнопки запуску Windows.

  2. У списку знайдіть «Тіньове копіювання тома», виберіть його, а потім відкрийте «Властивості», клацнувши правою кнопкою миші.

  3. У спадному меню «Тип запуску» виберіть «Вимкнено», а потім підтвердьте зміни, натиснувши «Застосувати» та «ОК».

Також можна змінити конфігурацію файлів, які будуть скопійовані в тіньову копію реєстру:

HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot

Перезаписати видалені файли

  • Ви можете скористатися інструментом Windows : cipher /w:Cце вкаже шифр для видалення будь-яких даних із доступного невикористаного дискового простору всередині диска C.

  • Ви також можете використовувати такі інструменти, як Ластик

Видаліть журнали подій Windows

  • reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f

  • У розділі служб вимкніть службу «Журнал подій Windows»

  • WEvtUtil.exec clear-logабоWEvtUtil.exe

Вимкнути $UsnJrnl

fsutil usn deletejournal /d c:

Docker Forensics

Модифікація контейнера

Є підозри, що якийсь контейнер докерів було зламано:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
cc03e43a052a        lamp-wordpress      "./run.sh"          2 minutes ago       Up 2 minutes        80/tcp              wordpress

Ви можете легко знайти зміни, внесені до цього контейнера щодо зображення, за допомогою:

docker diff wordpress
C /var
C /var/lib
C /var/lib/mysql
A /var/lib/mysql/ib_logfile0
A /var/lib/mysql/ib_logfile1
A /var/lib/mysql/ibdata1
A /var/lib/mysql/mysql
A /var/lib/mysql/mysql/time_zone_leap_second.MYI
A /var/lib/mysql/mysql/general_log.CSV
...

У попередній команді C означає Змінено , а A – Додано . Якщо ви виявите, що якийсь цікавий файл, як-от, /etc/shadowбуло змінено, ви можете завантажити його з контейнера, щоб перевірити наявність зловмисної активності за допомогою:

docker cp wordpress:/etc/shadow.

Ви також можете порівняти його з оригінальним, що запускає новий контейнер і витягує з нього файл:

docker run -d lamp-wordpress
docker cp b5d53e8b468e:/etc/shadow original_shadow #Get the file from the newly created container
diff original_shadow shadow

Якщо ви виявите, що додано якийсь підозрілий файл, ви можете отримати доступ до контейнера та перевірити його:

docker exec -it wordpress bash

Модифікації зображень

Коли вам надається експортоване зображення докера (ймовірно, у .tarформаті), ви можете використати контейнер-diff , щоб витягнути підсумок змін :

docker save <image> > image.tar #Export the image to a .tar file
container-diff analyze -t sizelayer image.tar
container-diff analyze -t history image.tar
container-diff analyze -t metadata image.tar

Потім ви можете розпакувати зображення та отримати доступ до blobs для пошуку підозрілих файлів, які ви могли знайти в історії змін:

tar -xf image.tar

Базовий аналіз

Ви можете отримати основну інформацію з запущеного зображення:

docker inspect <image>

Ви також можете отримати зведену історію змін за допомогою:

docker history --no-trunc <image>

Ви також можете створити докер-файл із зображення за допомогою:

alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage -sV=1.36 madhuakula/k8s-goat-hidden-in-layers>

Пірнати

Щоб знайти додані/змінені файли в образах докерів, ви також можете скористатися утилітою dive (завантажте її з випусків ):

#First you need to load the image in your docker repo
sudo docker load < image.tar                                                                                                                                                                                                         1 ⨯
Loaded image: flask:latest

#And then open it with dive:
sudo dive flask:latest

Це дозволяє вам переміщатися між різними блоками зображень докерів і перевіряти, які файли було змінено/додано. Червоний означає додане, а жовтий означає змінене. Використовуйте вкладку , щоб перейти до іншого перегляду, і пробіл , щоб згортати/відкривати папки.

За допомогою die ви не зможете отримати доступ до вмісту різних етапів зображення. Для цього вам потрібно буде розпакувати кожен шар і отримати до нього доступ . Ви можете розпакувати всі шари зображення з каталогу, де було розпаковано зображення, виконавши:

tar -xf image.tar
for d in `find * -maxdepth 0 -type d`; do cd $d; tar -xf ./layer.tar; cd ..; done

Облікові дані з пам’яті

Зауважте, що коли ви запускаєте докер-контейнер всередині хосту, ви можете бачити процеси, що виконуються в контейнері з хоста, що тільки що запущеноps -ef Таким чином (як root) ви можете отримати дамп пам’яті процесів із хоста та шукати облікові дані.

Отримання та монтування зображень

Придбання

DD

#This will generate a raw copy of the disk
dd if=/dev/sdb of=disk.img

dcfldd

#Raw copy with hashes along the way (more secur as it checks hashes while it's copying the data)
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes

Тепловізор FTK

Ви можете завантажити програму зображення FTK тут .

ftkimager /dev/sdb evidence --e01 --case-number 1 --evidence-number 1 --description 'A description' --examiner 'Your name'

EWF

Ви можете створити образ диска за допомогою інструментів ewf .

ewfacquire /dev/sdb
#Name: evidence
#Case number: 1
#Description: A description for the case
#Evidence number: 1
#Examiner Name: Your name
#Media type: fixed
#Media characteristics: physical
#File format: encase6
#Compression method: deflate
#Compression level: fast

#Then use default values
#It will generate the disk image in the current directory

У Windows ви можете спробувати використати безкоштовну версію Arsenal Image Mounter ( https://arsenalrecon.com/downloads/ ), щоб змонтувати криміналістичне зображення .

Сирий

#Get file type
file evidence.img 
evidence.img: Linux rev 1.0 ext4 filesystem data, UUID=1031571c-f398-4bfb-a414-b82b280cf299 (extents) (64bit) (large files) (huge files)

#Mount it
mount evidence.img /mnt

EWF

#Get file type
file evidence.E01 
evidence.E01: EWF/Expert Witness/EnCase image file format

#Transform to raw
mkdir output
ewfmount evidence.E01 output/
file output/ewf1 
output/ewf1: Linux rev 1.0 ext4 filesystem data, UUID=05acca66-d042-4ab2-9e9c-be813be09b24 (needs journal recovery) (extents) (64bit) (large files) (huge files)

#Mount
mount output/ewf1 -o ro,norecovery /mnt

ArsenalImageMounter

Це програма Windows для монтування томів. Ви можете завантажити його тут https://arsenalrecon.com/downloads/

Помилки

cannot mount /dev/loop0 read-onlyв цьому випадку потрібно використовувати прапори-o ro,norecovery

wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.у цьому випадку монтування не вдалося через те, що зміщення файлової системи відрізняється від зміщення образу диска. Вам потрібно знайти розмір сектора та початковий сектор:

fdisk -l disk.img 
Disk disk.img: 102 MiB, 106954648 bytes, 208896 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00495395

Device        Boot Start    End Sectors  Size Id Type
disk.img1       2048 208895  206848  101M  1 FAT12

Зауважте, що розмір сектора 512 , а початок 2048 . Потім змонтуйте зображення так:

mount disk.img /mnt -o ro,offset=$((2048*512))

Linux Forensics

Початковий збір інформації

Перш за все, рекомендується мати USB- накопичувач із відомими двійковими файлами та бібліотеками на ньому (ви можете просто отримати ubuntu та скопіювати папки /bin , /sbin , /lib та /lib64 ), потім підключити USB та змінити змінні env для використання цих двійкових файлів:

export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64

Після того, як ви налаштували систему на використання хороших і відомих двійкових файлів, ви можете почати отримувати деяку базову інформацію :

date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
ifconfig -a || ip a #Network interfaces (promiscuous mode?)
ps -ef #Running processes
netstat -anp #Proccess and ports
lsof -V #Open files
netstat -rn; route #Routing table
df; mount #Free space and mounted devices
free #Meam and swap space
w #Who is connected
last -Faiwx #Logins
lsmod #What is loaded
cat /etc/passwd #Unexpected data?
cat /etc/shadow #Unexpected data?
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
Підозріла інформація

Під час отримання базової інформації слід перевіряти такі дивні речі, як:

  • Кореневі процеси зазвичай виконуються з низьким PIDS, тому, якщо ви знайдете кореневий процес із великим PID, ви можете підозрювати

  • Перевірте зареєстровані логіни користувачів без внутрішньої оболонки/etc/passwd

  • Перевірте хеші паролів усередині /etc/shadowдля користувачів без оболонки

Дамп пам’яті

Щоб отримати пам’ять працюючої системи, рекомендується використовувати LiME . Щоб скомпілювати його, вам потрібно використовувати те саме ядро , яке використовує жертва.

Пам’ятайте, що ви не можете інсталювати LiME або будь-який інший компонент на комп’ютері-жертві, оскільки це призведе до кількох змін

Отже, якщо у вас є ідентична версія Ubuntu, яку ви можете використовувати apt-get install lime-forensics-dkms . В інших випадках вам потрібно завантажити LiME з github і скомпілювати його з правильними заголовками ядра. Щоб отримати точні заголовки ядра машини-жертви, ви можете просто скопіювати каталог /lib/modules/<kernel version> на свою машину, а потім скомпілювати LiME, використовуючи їх:

make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"

LiME підтримує 3 формати :

  • Необроблений (кожен сегмент об’єднаний разом)

  • Доповнений (те саме, що і raw, але з нулями в правих бітах)

  • Lime (рекомендований формат із метаданими

LiME також можна використовувати для надсилання дампа через мережу замість того, щоб зберігати його в системі, використовуючи щось на кшталт:path=tcp:4444

Зображення диска

Закриття

Перш за все, вам потрібно буде вимкнути систему . Це не завжди доступний варіант, оскільки інколи система буде робочим сервером, який компанія не може дозволити собі закрити. Існує 2 способи вимкнення системи: звичайне вимкнення та вимкнення за принципом «підключи» . Перший дозволить завершити процеси як зазвичай і синхронізувати файлову систему , але він також дозволить можливому зловмисному програмному забезпеченню знищити докази . Підхід «витягнути вилку» може спричинити певну втрату інформації (невелика частина інформації буде втрачена, оскільки ми вже зробили образ пам’яті), і зловмисне програмне забезпечення не матиме жодної можливості з цим зробити. Тому, якщо ви підозрюєте , що може бути зловмисне програмне забезпечення , просто виконайте команду в системі та витягніть вилку.sync

Створення образу диска

Важливо зазначити, що перед підключенням комп’ютера до чогось, пов’язаного з корпусом , ви повинні переконатися, що він буде змонтований як лише для читання , щоб уникнути зміни будь-якої інформації.

#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512

#Raw copy with hashes along the way (more secure as it checks hashes while it's copying the data)
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes

Попередній аналіз образу диска

Створення образу диска без даних.

#Find out if it's a disk image using "file" command
file disk.img 
disk.img: Linux rev 1.0 ext4 filesystem data, UUID=59e7a736-9c90-4fab-ae35-1d6a28e5de27 (extents) (64bit) (large files) (huge files)

#Check which type of disk image it's
img_stat -t evidence.img 
raw
#You can list supported types with
img_stat -i list
Supported image format types:
        raw (Single or split raw file (dd))
        aff (Advanced Forensic Format)
        afd (AFF Multiple File)
        afm (AFF with external metadata)
        afflib (All AFFLIB image formats (including beta ones))
        ewf (Expert Witness Format (EnCase))

#Data of the image
fsstat -i raw -f ext4 disk.img 
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: Ext4
Volume Name: 
Volume ID: 162850f203fd75afab4f1e4736a7e776

Last Written at: 2020-02-06 06:22:48 (UTC)
Last Checked at: 2020-02-06 06:15:09 (UTC)

Last Mounted at: 2020-02-06 06:15:18 (UTC)
Unmounted properly
Last mounted on: /mnt/disk0

Source OS: Linux
[...]

#ls inside the image
fls -i raw -f ext4 disk.img
d/d 11: lost+found
d/d 12: Documents
d/d 8193:       folder1
d/d 8194:       folder2
V/V 65537:      $OrphanFiles

#ls inside folder
fls -i raw -f ext4 disk.img 12
r/r 16: secret.txt

#cat file inside image
icat -i raw -f ext4 disk.img 16
ThisisTheMasterSecret

Пошук відомих зловмисних програм

Змінені системні файли

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

# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
cat /var/log/dpkg.log | grep installed
# RedHat RPM database query
rpm -qa --root=/mntpath/var/lib/rpm
# Listing directories for manual installations
ls /usr/sbin /usr/bin /bin /sbin
# Identifying non-package executables (Debian)
find /sbin/ -exec dpkg -S {} \; | grep "no path found"
# Identifying non-package executables (RedHat)
find /sbin/ –exec rpm -qf {} \; | grep "is not"
# Find exacuable files
find / -type f -executable | grep <something>

Відновлення видалених запущених двійкових файлів

Уявіть собі процес, який було виконано з /tmp/exec і видалено. Його можна витягти

cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it

Перевірте місця автозапуску. Заплановані завдання

cat /var/spool/cron/crontabs/*  \
/var/spool/cron/atjobs \
/var/spool/anacron \
/etc/cron* \
/etc/at* \
/etc/anacrontab \
/etc/incron.d/* \
/var/spool/incron/* \

#MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/

Послуги

Шляхи, за якими зловмисне програмне забезпечення може бути встановлено як послугу:

  • /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/ : містить журнали помилок HTTPD Apache і доступу.

  • /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

Крім того, last -Faiwxкоманда надає список логінів користувачів. Перевірте його на наявність невідомих або неочікуваних входів. Перевірте файли, які можуть надавати додаткові привілеї r:

  • Перегляньте /etc/sudoersнеочікувані привілеї користувача, які могли бути надані.

  • Перегляньте /etc/sudoers.d/неочікувані привілеї користувача, які могли бути надані.

  • Перевірте /etc/groups, щоб виявити незвичне членство в групах або дозволи.

  • Перевірте /etc/passwd, щоб виявити незвичне членство в групах або дозволи.

Деякі програми також створюють власні журнали:

  • SSH : Перевірте ~/.ssh/authorized_keys і ~/.ssh/known_hosts на наявність несанкціонованих віддалених з’єднань.

  • Робочий стіл Gnome : дивіться в ~/.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, яких немає в цьому списку).

монтаж

pip3 install usbrip
usbrip ids download #Download USB ID database

Приклади

usbrip events history #Get USB history of your curent linux machine
usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user
#Search for vid and/or pid
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid

Перегляньте облікові записи користувачів і заходи входу

Перевірте /etc/passwd , /etc/shadow і журнали безпеки на наявність незвичайних імен або облікових записів, створених і/або використаних у безпосередній близькості до відомих неавторизованих подій. Також перевірте можливі атаки sudo brute-force. Крім того, перевірте такі файли, як /etc/sudoers і /etc/groups, на наявність неочікуваних привілеїв, наданих користувачам. Нарешті, шукайте облікові записи без паролів або паролі , які легко вгадати .

Вивчіть файлову систему

Аналіз структур файлової системи під час розслідування шкідливих програм

Під час розслідування інцидентів зловмисного програмного забезпечення структура файлової системи є ключовим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого програмного забезпечення. Однак автори зловмисного програмного забезпечення розробляють методи, щоб перешкодити цьому аналізу, наприклад, змінюють позначки часу файлів або уникають файлової системи для зберігання даних.

Щоб протистояти цим антикриміналістичним методам, важливо:

  • Проведіть ретельний аналіз хронології , використовуючи такі інструменти, як Autopsy для візуалізації хронології подій або Sleuth Kit mactime для отримання детальних даних хронології.

  • Дослідіть неочікувані сценарії в $PATH системи, які можуть включати сценарії оболонки або PHP, які використовуються зловмисниками.

  • Перевірте /devнаявність нетипових файлів , оскільки він традиційно містить спеціальні файли, але може містити файли, пов’язані зі зловмисним програмним забезпеченням.

  • Шукайте приховані файли чи каталоги з іменами на зразок “.. ” (крапка крапка пробіл) або “..^G” (крапка крапка control-G), які можуть приховувати шкідливий вміст.

  • Визначте кореневі файли setuid за допомогою команди: find / -user root -perm -04000 -printце знаходить файли з підвищеними дозволами, якими можуть зловживати зловмисники.

  • Перегляньте мітки часу видалення в таблицях inode, щоб виявити масові видалення файлів, які, можливо, вказують на наявність руткітів або троянів.

  • Перевірте послідовні inode на наявність поруч зловмисних файлів після ідентифікації одного, оскільки вони могли бути розміщені разом.

  • Перевірте загальні бінарні каталоги ( /bin , /sbin ) на наявність нещодавно змінених файлів, оскільки вони можуть бути змінені зловмисним програмним забезпеченням.

# List recent files in a directory: 
ls -laR --sort=time /bin```

# Sort files in a directory by inode: 
ls -lai /bin | sort -n```

Зверніть увагу, що зловмисник може змінити час , щоб файли виглядали легітимними , але він не може змінити inode . Якщо ви виявите, що файл вказує на те, що він був створений і змінений одночасно з рештою файлів у тій самій папці, але inode неочікувано більший , тоді мітки часу цього файлу було змінено .

Порівняйте файли різних версій файлової системи

Резюме порівняння версій файлової системи

Щоб порівняти версії файлової системи та точно визначити зміни, ми використовуємо спрощені git diffкоманди:

Щоб знайти нові файли , порівняйте два каталоги:

git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/

Для зміненого вмісту перелічіть зміни, ігноруючи певні рядки:

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=D path/to/old_version/ path/to/new_version/

Параметри фільтра ( --diff-filter) допомагають звузити коло конкретних змін, наприклад доданих ( A), видалених ( D) або змінених ( M) файлів.

  • A: додані файли

  • C: скопійовані файли

  • D: Видалені файли

  • M: Змінені файли

  • R: Перейменовані файли

  • T: зміни типу (наприклад, файл до символічного посилання)

  • U: Необ’єднані файли

  • X: Невідомі файли

  • B: Зламані файли

Аналіз шкідливих програм

Шпаргалки з криміналістики

Онлайн-сервіси

Автономний антивірус і інструменти виявлення

Яра (встановити)

sudo apt-get install -y yara
Підготуйте правила

Використовуйте цей сценарій, щоб завантажити та об’єднати всі правила зловмисного ПЗ yara з github: https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9 Створіть каталог правил і виконайте його. Буде створено файл під назвою malware_rules.yar , який містить усі правила yara для шкідливих програм.

wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py

Сканувати

yara -w malware_rules.yar image  #Scan 1 file
yara -w malware_rules.yar folder #Scan the whole folder

ClamAV (встановити)

sudo apt-get install -y clamav

Сканувати

sudo freshclam      #Update rules
clamscan filepath   #Scan 1 file
clamscan folderpath #Scan the whole folder

Capa

Capa виявляє потенційно шкідливі можливості у виконуваних файлах: PE, ELF, .NET. Тож він знайде такі речі, як тактика Att&ck, або підозрілі можливості, такі як:

  • перевірте помилку OutputDebugString

  • запускати як службу

  • процес створення

Отримайте його в сховищі Github .

МОК

IOC означає індикатор компромісу. IOC – це набір умов, які визначають потенційно небажане програмне забезпечення або підтверджене зловмисне програмне забезпечення . Blue Teams використовує таке визначення для пошуку такого роду шкідливих файлів у своїх системах і мережах . Поділитися цими визначеннями дуже корисно, оскільки коли зловмисне програмне забезпечення ідентифікується на комп’ютері та створюється IOC для цього зловмисного програмного забезпечення, інші сині команди можуть використовувати його, щоб швидше ідентифікувати зловмисне програмне забезпечення.

Інструментом для створення або зміни IOC є IOC Editor . Ви можете використовувати такі інструменти, як Redline, для пошуку визначених IOC у пристрої .

Локі

Loki — це сканер простих індикаторів компромісу. Виявлення базується на чотирьох методах виявлення:

1. File Name IOC
   Regex match on full file path/name

2. Yara Rule Check
   Yara signature matches on file data and process memory

3. Hash Check
   Compares known malicious hashes (MD5, SHA1, SHA256) with scanned files
   
4. C2 Back Connect Check
   Compares process connection endpoints with C2 IOCs (new since version v.10)

Виявлення шкідливих програм Linux

Linux Malware Detect (LMD) — це сканер зловмисного програмного забезпечення для Linux, випущений за ліцензією GNU GPLv2, розроблений для виявлення загроз у спільно використовуваних середовищах. Він використовує дані про загрози з мережевих систем виявлення вторгнень, щоб витягти зловмисне програмне забезпечення, яке активно використовується в атаках, і генерує сигнатури для виявлення. Крім того, дані про загрози також отримуються з повідомлень користувачів за допомогою функції перевірки LMD та ресурсів спільноти зловмисних програм.

rkhunter

Такі інструменти, як rkhunter , можна використовувати для перевірки файлової системи на наявність можливих руткітів і шкідливих програм.

sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress]
  • FLOSS — це інструмент, який намагатиметься знайти обфусковані рядки у виконуваних файлах за допомогою різних методів.

  • PEpper перевіряє деякі основні речі всередині виконуваного файлу (двійкові дані, ентропія, URL-адреси та IP-адреси, деякі правила yara).

  • PEstudio — це інструмент, який дозволяє отримувати інформацію про виконувані файли Windows, як-от імпорт, експорт, заголовки, а також перевіряти загальну кількість вірусів і знаходити потенційні методи атаки.

  • DiE — це інструмент для визначення того, чи файл зашифровано , а також пошуку пакувальників .

  • NeoPI — це сценарій Python, який використовує різноманітні статистичні методи для виявлення обфускованого та зашифрованого вмісту в текстових файлах/файлах сценаріїв. Передбачувана мета NeoPI — допомогти у виявленні прихованого веб-коду оболонки .

  • PHP-malware-finder робить усе можливе, щоб виявити заплутаний / хитрий код , а також файли, які використовуютьфункції PHP , які часто використовуються у шкідливих програмах /веб-оболонках.

Бінарні підписи Apple

Перевіряючи зразок зловмисного програмного забезпечення, ви завжди повинні перевіряти підпис двійкового файлу, оскільки розробник , який його підписав, може бути вже пов’язаний із шкідливим програмним забезпеченням.

#Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"

#Check if the app’s contents have been modified
codesign --verify --verbose /Applications/Safari.app

#Check if the signature is valid
spctl --assess --verbose /Applications/Safari.app

Методи виявлення

Складання файлів

Якщо ви знаєте, що деяка папка, що містить файли веб-сервера, востаннє оновлювалася певної дати . Перевірте дату , коли всі файли на веб-сервері були створені та змінені , і якщо якась дата є підозрілою , перевірте цей файл.

Базові лінії

Якщо файли папки не слід було змінювати , ви можете обчислити хеш вихідних файлів папки та порівняти їх із поточними . Будь-яка зміна буде підозрілою .

Статистичний аналіз

Коли інформація зберігається в журналах, ви можете перевірити статистичні дані, наприклад, скільки разів зверталися до кожного файлу веб-сервера, оскільки веб-оболонка може бути однією з найбільших .

Продовження у другій частині

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.