Основи криміналістичної методики – це важливий компонент криміналістичної науки, який вивчає методи та прийоми проведення розслідування кримінальних справ. Ця галузь об’єднує теоретичні засади та практичні навички, необхідні для ефективного виявлення, фіксації, зберігання та аналізу доказів.
Базовий рівень складається зі створення знімка певних частин системи для порівняння з майбутнім станом, щоб виділити зміни .
Наприклад, ви можете обчислити та зберегти хеш кожного файлу файлової системи, щоб мати можливість дізнатися, які файли були змінені. Це також можна зробити за допомогою створених облікових записів користувачів, запущених процесів, запущених служб і будь-якого іншого, що не повинно змінюватися суттєво або взагалі.
Моніторинг цілісності файлів (FIM) є критично важливою технікою безпеки, яка захищає ІТ-середовища та дані шляхом відстеження змін у файлах. Він включає два ключові кроки:
Порівняння базової лінії: встановіть базову лінію за допомогою атрибутів файлів або криптографічних контрольних сум (наприклад, MD5 або SHA-2) для майбутніх порівнянь для виявлення змін.
Сповіщення про зміни в реальному часі: отримуйте миттєві сповіщення про доступ до файлів або їх зміну, зазвичай через розширення ядра ОС.
Зловмисник може бути зацікавлений у зміні часових позначок файлів , щоб уникнути виявлення. Мітки часу можна знайти всередині MFT в атрибутах $STANDARD_INFORMATION
__ і __ $FILE_NAME
.
Обидва атрибути мають 4 позначки часу: модифікація , доступ , створення та модифікація реєстру MFT (MACE або MACB).
Провідник Windows та інші інструменти показують інформацію з $STANDARD_INFORMATION.
Цей інструмент змінює інформацію про мітку часу всередині $STANDARD_INFORMATION , але не інформацію всередині $FILE_NAME. Таким чином, можна виявити підозрілу активність .
Журнал USN (журнал порядкових номерів оновлення) — це функція NTFS (файлової системи Windows NT), яка відстежує зміни томів. Інструмент UsnJrnl2Csv дозволяє перевірити ці зміни.
Попереднє зображення – це результат , показаний інструментом , де можна помітити, що до файлу внесено деякі зміни .
Усі зміни метаданих у файловій системі реєструються в процесі, відомому як ведення журналу з попереднім записом . Зареєстровані метадані зберігаються у файлі з іменем **$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. Зауважте, що цей вид інструменту може зберігати вміст у заплутаному або навіть зашифрованому вигляді.
Це інструмент, який вимикає комп’ютер у разі виявлення будь-яких змін у USB-портах. Спосіб виявити це — перевірити запущені процеси та переглянути кожен запущений сценарій python .
Ці дистрибутиви виконуються в оперативній пам’яті. Єдиний спосіб виявити їх — якщо файлова система NTFS змонтована з дозволом на запис . Якщо його встановлено лише з дозволом на читання, виявити вторгнення буде неможливо.
Можна вимкнути кілька методів журналювання Windows, щоб значно ускладнити судове розслідування.
Це ключ реєстру, який підтримує дати та години, коли кожен виконуваний файл був запущений користувачем.
Для вимкнення UserAssist потрібно виконати два кроки:
Установіть два розділи реєстру
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs
таHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled
обидва на нуль, щоб сигналізувати про те, що ми хочемо вимкнути UserAssist.
Очистіть піддерева реєстру, які виглядають як
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, який активно використовується, це може вплинути на продуктивність.
Відкрийте редактор реєстру (Regedit.exe).
Перейдіть до
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
.
Шукати
NtfsDisableLastAccessUpdate
. Якщо він не існує, додайте цей DWORD і встановіть для нього значення 1, що вимкне процес.
Закрийте редактор реєстру та перезавантажте сервер.
Усі записи 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
Щоб вимкнути тіньові копії, виконайте такі дії :
Відкрийте програму «Служби», ввівши «служби» у текстовому полі пошуку після натискання кнопки запуску Windows.
У списку знайдіть «Тіньове копіювання тома», виберіть його, а потім відкрийте «Властивості», клацнувши правою кнопкою миші.
У спадному меню «Тип запуску» виберіть «Вимкнено», а потім підтвердьте зміни, натиснувши «Застосувати» та «ОК».
Також можна змінити конфігурацію файлів, які будуть скопійовані в тіньову копію реєстру:
HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot
Ви можете скористатися інструментом Windows :
cipher /w:C
це вкаже шифр для видалення будь-яких даних із доступного невикористаного дискового простору всередині диска C.
Ви також можете використовувати такі інструменти, як Ластик
reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f
У розділі служб вимкніть службу «Журнал подій Windows»
WEvtUtil.exec clear-log
абоWEvtUtil.exe
fsutil usn deletejournal /d c:
Є підозри, що якийсь контейнер докерів було зламано:
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 тут .
ftkimager /dev/sdb evidence --e01 --case-number 1 --evidence-number 1 --description 'A description' --examiner 'Your name'
Ви можете створити образ диска за допомогою інструментів 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
#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
Це програма 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))
Перш за все, рекомендується мати 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 на наявність змін у сховищах.
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 виявляє потенційно шкідливі можливості у виконуваних файлах: 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 Malware Detect (LMD) — це сканер зловмисного програмного забезпечення для Linux, випущений за ліцензією GNU GPLv2, розроблений для виявлення загроз у спільно використовуваних середовищах. Він використовує дані про загрози з мережевих систем виявлення вторгнень, щоб витягти зловмисне програмне забезпечення, яке активно використовується в атаках, і генерує сигнатури для виявлення. Крім того, дані про загрози також отримуються з повідомлень користувачів за допомогою функції перевірки LMD та ресурсів спільноти зловмисних програм.
Такі інструменти, як 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 , які часто використовуються у шкідливих програмах /веб-оболонках.
Перевіряючи зразок зловмисного програмного забезпечення, ви завжди повинні перевіряти підпис двійкового файлу, оскільки розробник , який його підписав, може бути вже пов’язаний із шкідливим програмним забезпеченням.
#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
Якщо ви знаєте, що деяка папка, що містить файли веб-сервера, востаннє оновлювалася певної дати . Перевірте дату , коли всі файли на веб-сервері були створені та змінені , і якщо якась дата є підозрілою , перевірте цей файл.
Якщо файли папки не слід було змінювати , ви можете обчислити хеш вихідних файлів папки та порівняти їх із поточними . Будь-яка зміна буде підозрілою .
Коли інформація зберігається в журналах, ви можете перевірити статистичні дані, наприклад, скільки разів зверталися до кожного файлу веб-сервера, оскільки веб-оболонка може бути однією з найбільших .