Поділіться своїми хакерськими трюками, надсилайте PR доHackTricksіHackTricks Cloudрепозиторіїв на GitHub.
RootedCON є найбільш важливою подією з кібербезпеки в Іспанії та однією з найважливіших в Європі. З місією просування технічних знань, цей конгрес є кипучою точкою зустрічі для професіоналів технологій та кібербезпеки у кожній дисципліні.
python autoVolatility.py -f MEMFILE -d OUT_DIRECTORY -e /home/user/tools/volatility/vol.py # It will use the most important plugins (could use a lot of space depending on the size of the memory)
Volatility має два основних підходи до плагінів, які іноді відображаються у їх назвах. Плагіни "list" спробують навігувати через структури ядра Windows для отримання інформації, такої як процеси (знаходження та пройдення зв'язаного списку структур _EPROCESS в пам'яті), обробники ОС (знаходження та перелік таблиці обробників, розіменування будь-яких знайдених вказівників і т. д.). Вони більш-менш працюють так, як робила б Windows API, якщо було б запитано, наприклад, список процесів.
Це робить "list" плагіни досить швидкими, але такими ж вразливими, як Windows API до маніпулювання зловмисним ПЗ. Наприклад, якщо зловмисне ПЗ використовує DKOM для відкріплення процесу від зв'язаного списку _EPROCESS, він не відображатиметься в диспетчері завдань, і його також не буде в pslist.
Плагіни "scan", з іншого боку, будуть використовувати підхід, схожий на вирізання пам'яті для речей, які можуть мати сенс при розіменуванні як конкретні структури. Наприклад, psscan буде читати пам'ять і намагатися створити об'єкти _EPROCESS з неї (він використовує сканування тегів пулу, яке полягає в пошуку рядків по 4 байти, що вказують на наявність цікавої структури). Перевага полягає в тому, що він може витягти процеси, які вийшли, і навіть якщо зловмисне ПЗ втручається у зв'язаний список _EPROCESS, плагін все одно знайде структуру, що лежить в пам'яті (оскільки вона все ще повинна існувати для того, щоб процес працював). Недолік полягає в тому, що плагіни "scan" трохи повільніші за плагіни "list" і іноді можуть давати помилкові результати (процес, який вийшов занадто давно і частини його структури були перезаписані іншими операціями).
Як пояснено в readme, вам потрібно помістити таблицю символів ОС, яку ви хочете підтримувати, в volatility3/volatility/symbols.
Пакети таблиці символів для різних операційних систем доступні для завантаження за наступними посиланнями:
Якщо ви хочете використовувати новий профіль, який ви завантажили (наприклад, linux), вам потрібно створити десь наступну структуру папок: plugins/overlays/linux та помістити всередину цієї папки zip-файл, що містить профіль. Потім отримайте номер профілів, використовуючи:
У попередньому фрагменті ви можете побачити, що профіль називається LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64, і ви можете використовувати його для виконання чогось на зразок:
Звідси: На відміну від imageinfo, який просто надає рекомендації профілю, kdbgscan призначений для позитивної ідентифікації правильного профілю та правильної адреси KDBG (якщо є кілька). Цей плагін сканує підписи KDBGHeader, пов'язані з профілями Volatility, та застосовує перевірки на адекватність для зменшення помилкових сигналів. Рівень докладності виводу та кількість перевірок на адекватність, які можна виконати, залежить від того, чи може Volatility знайти DTB, тому якщо ви вже знаєте правильний профіль (або якщо у вас є рекомендація профілю від imageinfo), то переконайтеся, що використовуєте його з .
Завжди подивіться на кількість процесів, які знайшов kdbgscan. Іноді imageinfo та kdbgscan можуть знайти більше одного підходящого профілю, але лише правильний буде мати деякі пов'язані з процесами (Це через те, що для видобутку процесів потрібна правильна адреса KDBG)
Блок відладки ядра, відомий як KDBG у Volatility, є важливим для слідчих завдань, виконуваних за допомогою Volatility та різних відладчиків. Ідентифікований як KdDebuggerDataBlock та типу _KDDEBUGGER_DATA64, він містить важливі посилання, такі як PsActiveProcessHead. Це конкретне посилання вказує на початок списку процесів, що дозволяє вивести всі процеси, що є фундаментальним для ретельного аналізу пам'яті.
Інформація про ОС
#vol3 has a plugin to give OS information (note that imageinfo from vol2 will give you OS info)./vol.py-ffile.dmpwindows.info.Info
Плагін banners.Banners може бути використаний в vol3 для спроби знайти банери linux в дампі.
./vol.py-ffile.dmpwindows.hashdump.Hashdump#Grab common windows hashes (SAM+SYSTEM)./vol.py-ffile.dmpwindows.cachedump.Cachedump#Grab domain cache hashes inside the registry./vol.py-ffile.dmpwindows.lsadump.Lsadump#Grab lsa secrets
volatility--profile=Win7SP1x86_23418hashdump-ffile.dmp#Grab common windows hashes (SAM+SYSTEM)volatility--profile=Win7SP1x86_23418cachedump-ffile.dmp#Grab domain cache hashes inside the registryvolatility--profile=Win7SP1x86_23418lsadump-ffile.dmp#Grab lsa secrets
Дамп пам'яті
Дамп пам'яті процесу витягне все поточний стан процесу. Модуль procdump витягне лише код.
RootedCON є найбільш важливою подією з кібербезпеки в Іспанії та однією з найважливіших в Європі. З місією просування технічних знань, цей конгрес є кипучою точкою зустрічі для професіоналів технологій та кібербезпеки у будь-якій галузі.
Спробуйте знайти підозрілі процеси (за назвою) або неочікувані дочірні процеси (наприклад, cmd.exe як дочірній процес iexplorer.exe).
Можливо, буде цікаво порівняти результат pslist з результатом psscan, щоб ідентифікувати приховані процеси.
python3vol.py-ffile.dmpwindows.pstree.PsTree# Get processes tree (not hidden)python3vol.py-ffile.dmpwindows.pslist.PsList# Get process list (EPROCESS)python3vol.py-ffile.dmpwindows.psscan.PsScan# Get hidden process list(malware)
volatility--profile=PROFILEpstree-ffile.dmp# Get process tree (not hidden)volatility--profile=PROFILEpslist-ffile.dmp# Get process list (EPROCESS)volatility--profile=PROFILEpsscan-ffile.dmp# Get hidden process list(malware)volatility--profile=PROFILEpsxview-ffile.dmp# Get hidden process list
Дамп процесу
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory
Основна методологія аналізу дампу пам'яті з використанням Volatility
ldrmodules - виводить завантажені модулі з використанням LDR-структури
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атоми
atomscan - виводить атом
volatility--profile=PROFILEcmdline-ffile.dmp#Display process command-line argumentsvolatility--profile=PROFILEconsoles-ffile.dmp#command history by scanning for _CONSOLE_INFORMATION
Команди, виконані в cmd.exe, керуються conhost.exe (або csrss.exe на системах до Windows 7). Це означає, що якщо cmd.exe було завершено зловмисником перед отриманням дампу пам'яті, все ще можливо відновити історію команд сеансу з пам'яті conhost.exe. Для цього, якщо виявлено незвичайну активність в модулях консолі, пам'ять пов'язаного процесу conhost.exe повинна бути вивантажена. Потім, шляхом пошуку рядків у цьому дампі, можна потенційно видобути використані в сеансі рядки команд.
Середовище
Отримайте змінні середовища кожного запущеного процесу. Тут можуть бути цікаві значення.
python3vol.py-ffile.dmpwindows.envars.Envars [--pid <pid>]#Display process environment variables
volatility--profile=PROFILEenvars-ffile.dmp [--pid <pid>]#Display process environment variablesvolatility --profile=PROFILE -f file.dmp linux_psenv [-p <pid>] #Get env of process. runlevel var means the runlevel where the proc is initated
Привілеї токенів
Перевірте наявність токенів привілеїв у неочікуваних службах.
Можливо, буде цікаво перелічити процеси, які використовують деякий привілейований токен.
#Get enabled privileges of some processespython3vol.py-ffile.dmpwindows.privileges.Privs [--pid <pid>]#Get all processes with interesting privilegespython3 vol.py -f file.dmp windows.privileges.Privs | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"
#Get enabled privileges of some processesvolatility--profile=Win7SP1x86_23418privs--pid=3152-ffile.dmp|grepEnabled#Get all processes with interesting privilegesvolatility --profile=Win7SP1x86_23418 privs -f file.dmp | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"
SIDs
Перевірте кожний SSID, що належить процесу.
Можливо, буде цікаво перелічити процеси, які використовують SID привілеїв (і процеси, які використовують деякі службові SID).
./vol.py-ffile.dmpwindows.getsids.GetSIDs [--pid <pid>]#Get SIDs of processes./vol.py-ffile.dmpwindows.getservicesids.GetServiceSIDs#Get the SID of services
volatility--profile=Win7SP1x86_23418getsids-ffile.dmp#Get the SID owned by each processvolatility--profile=Win7SP1x86_23418getservicesids-ffile.dmp#Get the SID of each service
Використання
Корисно знати, до яких інших файлів, ключів, потоків, процесів... процес має дескриптор (відкрито)
./vol.py -f file.dmp windows.dlllist.DllList [--pid <pid>] #List dlls used by each
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory process
volatility --profile=Win7SP1x86_23418 dlllist --pid=3152 -f file.dmp #Get dlls of a proc
volatility --profile=Win7SP1x86_23418 dlldump --pid=3152 --dump-dir=. -f file.dmp #Dump dlls of a proc
Рядки на кожен процес
Volatility дозволяє нам перевірити, до якого процесу належить рядок.
Windows відстежує програми, які ви запускаєте, використовуючи функцію в реєстрі, яка називається Ключі UserAssist. Ці ключі записують, скільки разів кожна програма була запущена і коли вона востаннє запускалася.
RootedCON - найбільш важлива подія з кібербезпеки в Іспанії та одна з найважливіших в Європі. З місією просування технічних знань, цей конгрес є підігрітим місцем зустрічі для професіоналів у галузі технологій та кібербезпеки у кожній дисципліні.
./vol.py -f file.dmp windows.svcscan.SvcScan #List services
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services
#Get services and binary path
volatility --profile=Win7SP1x86_23418 svcscan -f file.dmp
#Get name of the services and SID (slow)
volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp
Мережа
./vol.py -f file.dmp windows.netscan.NetScan
#For network info of linux use volatility2
Файлова система NTFS використовує критичний компонент, відомий як таблиця майстра файлів (MFT). Ця таблиця включає принаймні один запис для кожного файлу на томі, охоплюючи саму MFT. Важливі деталі про кожен файл, такі як розмір, мітки часу, дозволи та фактичні дані, укладені в записах MFT або в областях, зовнішніх для MFT, але на які посилаються ці записи. Додаткові деталі можна знайти в офіційній документації.
Ключі/Сертифікати SSL
#vol3 allows to search for certificates inside the registry
./vol.py -f file.dmp windows.registry.certificates.Certificates
#vol2 allos you to search and dump certificates from memory
#Interesting options for this modules are: --pid, --name, --ssl
volatility --profile=Win7SP1x86_23418 dumpcerts --dump-dir=. -f file.dmp
Віруси
./vol.py -f file.dmp windows.malfind.Malfind [--dump] #Find hidden and injected code, [dump each suspicious section]
#Malfind will search for suspicious structures related to malware
./vol.py -f file.dmp windows.driverirp.DriverIrp #Driver IRP hook detection
./vol.py -f file.dmp windows.ssdt.SSDT #Check system call address from unexpected addresses
./vol.py -f file.dmp linux.check_afinfo.Check_afinfo #Verifies the operation function pointers of network protocols
./vol.py -f file.dmp linux.check_creds.Check_creds #Checks if any processes are sharing credential structures
./vol.py -f file.dmp linux.check_idt.Check_idt #Checks if the IDT has been altered
./vol.py -f file.dmp linux.check_syscall.Check_syscall #Check system call table for hooks
./vol.py -f file.dmp linux.check_modules.Check_modules #Compares module list to sysfs info, if available
./vol.py -f file.dmp linux.tty_check.tty_check #Checks tty devices for hooks
Використовуйте цей скрипт для завантаження та об'єднання всіх правил виявлення шкідливих програм yara з github: https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9
Створіть каталог rules та виконайте його. Це створить файл під назвою malware_rules.yar, який містить всі правила yara для виявлення шкідливих програм.
Можливо читати історію bash з пам'яті. Ви також можете витягти файл .bash_history, але якщо він вимкнений, ви будете раді використовувати цей модуль volatility
./vol.py -f file.dmp linux.bash.Bash
Основна методологія аналізу дампу пам'яті
Кроки аналізу дампу пам'яті:
Ідентифікація процесів та сервісів: Використовуйте команду pslist для перегляду списку процесів та їх атрибутів.
Аналіз потоків: Використовуйте команду pstree для візуалізації зв'язків між процесами.
Аналіз портів та сокетів: Використовуйте команди sockets та socketscan для виявлення відкритих портів та мережевих з'єднань.
Аналіз файлів та дескрипторів файлів: Використовуйте команди filescan та filescan для виявлення відкритих файлів та дескрипторів файлів.
Аналіз реєстру: Використовуйте команду hivelist для виявлення віртуальних адрес реєстру.
Аналіз модулів ядра: Використовуйте команду modules для перегляду завантажених модулів ядра.
Аналіз об'єктів та драйверів: Використовуйте команди objscan та driverirp для виявлення об'єктів та драйверів.
Аналіз потоків та стеків викликів: Використовуйте команди threads та stacks для аналізу потоків та стеків викликів.
Аналіз кешу пам'яті: Використовуйте команду memmap для відображення кешу пам'яті та виявлення потенційної шкідливої діяльності.
Аналіз автозапуску: Використовуйте команду autoruns для виявлення автозапускових програм та сервісів.
Корисні команди Volatility:
imageinfo: Відображення основної інформації про образ.
kdbgscan: Пошук потенційних значень KDBG.
pslist: Відображення списку процесів.
pstree: Відображення дерева процесів.
sockets: Відображення відкритих сокетів.
socketscan: Сканування сокетів для виявлення відкритих портів.
filescan: Сканування файлів для виявлення відкритих файлів.
filescan: Відображення відкритих файлів та дескрипторів файлів.
hivelist: Відображення віртуальних адрес реєстру.
modules: Відображення завантажених модулів ядра.
objscan: Сканування об'єктів для виявлення об'єктів та драйверів.
driverirp: Відображення драйверів та їх IRP.
threads: Відображення списку потоків.
stacks: Відображення стеків викликів.
memmap: Відображення кешу пам'яті.
autoruns: Відображення автозапускових програм та сервісів.
Master Boot Record (MBR) відіграє важливу роль у керуванні логічними розділами носія даних, які структуровані за допомогою різних файлових систем. Він не лише містить інформацію про розташування розділів, але також містить виконуваний код, який діє як завантажувач. Цей завантажувач або безпосередньо ініціює процес завантаження другого етапу ОС (див. завантажувач другого етапу), або працює у взаємодії з записом завантаження тома (VBR) кожного розділу. Для глибоких знань звертайтеся до сторінки Вікіпедії про MBR.
RootedCON - найбільш важлива подія з кібербезпеки в Іспанії та одна з найважливіших в Європі. З місією просування технічних знань, цей конгрес є плідним місцем зустрічі для професіоналів технологій та кібербезпеки у будь-якій галузі.