Volatility - CheatSheet

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

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

Якщо ви хочете щось швидке та безумовне, що запустить кілька плагінів Volatility паралельно, ви можете використовувати: https://github.com/carlospolop/autoVolatility

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)

Установка

volatility3

git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 setup.py install
python3 vol.py —h

volatility2

Download the executable from https://www.volatilityfoundation.org/26

Команди Volatility

Открийте офіційну документацію за посиланням Volatility command reference

Примітка щодо плагінів "list" та "scan"

Volatility має два основних підходи до плагінів, які іноді відображаються у їх назвах. Плагіни "list" спробують навігувати через структури ядра Windows для отримання інформації, такої як процеси (знаходження та пройдення зв'язаного списку структур _EPROCESS в пам'яті), обробники ОС (знаходження та перелік таблиці обробників, розіменування будь-яких знайдених вказівників і т. д.). Вони більш-менш працюють так, як робила б Windows API, якщо було б запитано, наприклад, список процесів.

Це робить "list" плагіни досить швидкими, але такими ж вразливими, як Windows API до маніпулювання зловмисним ПЗ. Наприклад, якщо зловмисне ПЗ використовує DKOM для відкріплення процесу від зв'язаного списку _EPROCESS, він не відображатиметься в диспетчері завдань, і його також не буде в pslist.

Плагіни "scan", з іншого боку, будуть використовувати підхід, схожий на вирізання пам'яті для речей, які можуть мати сенс при розіменуванні як конкретні структури. Наприклад, psscan буде читати пам'ять і намагатися створити об'єкти _EPROCESS з неї (він використовує сканування тегів пулу, яке полягає в пошуку рядків по 4 байти, що вказують на наявність цікавої структури). Перевага полягає в тому, що він може витягти процеси, які вийшли, і навіть якщо зловмисне ПЗ втручається у зв'язаний список _EPROCESS, плагін все одно знайде структуру, що лежить в пам'яті (оскільки вона все ще повинна існувати для того, щоб процес працював). Недолік полягає в тому, що плагіни "scan" трохи повільніші за плагіни "list" і іноді можуть давати помилкові результати (процес, який вийшов занадто давно і частини його структури були перезаписані іншими операціями).

З: http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/

Профілі ОС

Volatility3

Як пояснено в readme, вам потрібно помістити таблицю символів ОС, яку ви хочете підтримувати, в volatility3/volatility/symbols. Пакети таблиці символів для різних операційних систем доступні для завантаження за наступними посиланнями:

Volatility2

Зовнішній профіль

Ви можете отримати список підтримуваних профілів, виконавши:

./volatility_2.6_lin64_standalone --info | grep "Profile"

Якщо ви хочете використовувати новий профіль, який ви завантажили (наприклад, linux), вам потрібно створити десь наступну структуру папок: plugins/overlays/linux та помістити всередину цієї папки zip-файл, що містить профіль. Потім отримайте номер профілів, використовуючи:

./vol --plugins=/home/kali/Desktop/ctfs/final/plugins --info
Volatility Foundation Volatility Framework 2.6


Profiles
--------
LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 - A Profile for Linux CentOS7_3.10.0-123.el7.x86_64_profile x64
VistaSP0x64                                   - A Profile for Windows Vista SP0 x64
VistaSP0x86                                   - A Profile for Windows Vista SP0 x86

Ви можете завантажити профілі Linux та Mac з https://github.com/volatilityfoundation/profiles

У попередньому фрагменті ви можете побачити, що профіль називається LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64, і ви можете використовувати його для виконання чогось на зразок:

./vol -f file.dmp --plugins=. --profile=LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 linux_netscan

Виявлення профілю

volatility imageinfo -f file.dmp
volatility kdbgscan -f file.dmp

Відмінності між imageinfo та kdbgscan

Звідси: На відміну від imageinfo, який просто надає рекомендації профілю, kdbgscan призначений для позитивної ідентифікації правильного профілю та правильної адреси KDBG (якщо є кілька). Цей плагін сканує підписи KDBGHeader, пов'язані з профілями Volatility, та застосовує перевірки на адекватність для зменшення помилкових сигналів. Рівень докладності виводу та кількість перевірок на адекватність, які можна виконати, залежить від того, чи може Volatility знайти DTB, тому якщо ви вже знаєте правильний профіль (або якщо у вас є рекомендація профілю від imageinfo), то переконайтеся, що використовуєте його з .

Завжди подивіться на кількість процесів, які знайшов kdbgscan. Іноді imageinfo та kdbgscan можуть знайти більше одного підходящого профілю, але лише правильний буде мати деякі пов'язані з процесами (Це через те, що для видобутку процесів потрібна правильна адреса KDBG)

# GOOD
PsActiveProcessHead           : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList            : 0xfffff8000119aae0 (116 modules)
# BAD
PsActiveProcessHead           : 0xfffff800011947f0 (0 processes)
PsLoadedModuleList            : 0xfffff80001197ac0 (0 modules)

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 -f file.dmp windows.info.Info

Плагін banners.Banners може бути використаний в vol3 для спроби знайти банери linux в дампі.

Хеші/Паролі

Витягніть хеші SAM, кешовані облікові дані домену та секрети lsa.

./vol.py -f file.dmp windows.hashdump.Hashdump #Grab common windows hashes (SAM+SYSTEM)
./vol.py -f file.dmp windows.cachedump.Cachedump #Grab domain cache hashes inside the registry
./vol.py -f file.dmp windows.lsadump.Lsadump #Grab lsa secrets

volatility --profile=Win7SP1x86_23418 hashdump -f file.dmp #Grab common windows hashes (SAM+SYSTEM)
volatility --profile=Win7SP1x86_23418 cachedump -f file.dmp #Grab domain cache hashes inside the registry
volatility --profile=Win7SP1x86_23418 lsadump -f file.dmp #Grab lsa secrets

Дамп пам'яті

Дамп пам'яті процесу витягне все поточний стан процесу. Модуль procdump витягне лише код.

volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/

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

Процеси

Список процесів

Спробуйте знайти підозрілі процеси (за назвою) або неочікувані дочірні процеси (наприклад, cmd.exe як дочірній процес iexplorer.exe). Можливо, буде цікаво порівняти результат pslist з результатом psscan, щоб ідентифікувати приховані процеси.

python3 vol.py -f file.dmp windows.pstree.PsTree # Get processes tree (not hidden)
python3 vol.py -f file.dmp windows.pslist.PsList # Get process list (EPROCESS)
python3 vol.py -f file.dmp windows.psscan.PsScan # Get hidden process list(malware)

volatility --profile=PROFILE pstree -f file.dmp # Get process tree (not hidden)
volatility --profile=PROFILE pslist -f file.dmp # Get process list (EPROCESS)
volatility --profile=PROFILE psscan -f file.dmp # Get hidden process list(malware)
volatility --profile=PROFILE psxview -f file.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

  1. Встановлення Volatility

    • sudo apt-get install volatility

  2. Вибір профілю

    • volatility -f memory.dmp imageinfo

  3. Аналіз процесів

    • volatility -f memory.dmp --profile=Profile pslist

  4. Аналіз сокетів

    • volatility -f memory.dmp --profile=Profile sockscan

  5. Аналіз з'єднань

    • volatility -f memory.dmp --profile=Profile connections

  6. Аналіз модулів ядра

    • volatility -f memory.dmp --profile=Profile modules

  7. Аналіз реєстру Windows

    • volatility -f memory.dmp --profile=Profile hivelist

    • volatility -f memory.dmp --profile=Profile printkey -o OFFSET

  8. Аналіз файлів

    • volatility -f memory.dmp --profile=Profile filescan

  9. Аналіз потоків

    • volatility -f memory.dmp --profile=Profile pstree

  10. Аналіз об'єктів

    • volatility -f memory.dmp --profile=Profile handles

  11. Аналіз розкладу

    • volatility -f memory.dmp --profile=Profile timeliner

  12. Аналіз робочих станів

    • volatility -f memory.dmp --profile=Profile wintree

  13. Аналіз реєстраційних ключів

    • volatility -f memory.dmp --profile=Profile printkey -o OFFSET

  14. Аналіз автозапуску

    • volatility -f memory.dmp --profile=Profile autoruns

  15. Аналіз кешу

    • volatility -f memory.dmp --profile=Profile shimcache

  16. Аналіз драйверів

    • volatility -f memory.dmp --profile=Profile driverscan

  17. Аналіз середовища

    • volatility -f memory.dmp --profile=Profile envars

  18. Аналіз середовища виконання

    • volatility -f memory.dmp --profile=Profile consoles

  19. Аналіз потоків команд

    • volatility -f memory.dmp --profile=Profile cmdscan

  20. Аналіз потоків мережі

    • volatility -f memory.dmp --profile=Profile netscan

  21. Аналіз потоків реєстрації

    • volatility -f memory.dmp --profile=Profile userassist

  22. Аналіз потоків URL

    • volatility -f memory.dmp --profile=Profile urlscan

  23. Аналіз потоків робочого столу

    • volatility -f memory.dmp --profile=Profile desktops

  24. Аналіз потоків робочого столу

    • volatility -f memory.dmp --profile=Profile deskscan

  25. Аналіз потоків робочого столу

    • volatility -f memory.dmp --profile=Profile screenshot

  26. Аналіз потоків робочого столу

    • volatility -f memory.dmp --profile=Profile windows

  27. Аналіз потоків робочого столу

    • volatility -f memory.dmp --profile=Profile wndscan

  28. Аналіз потоків робочого столу

    • volatility -f memory.dmp --profile=Profile clipboard

  29. Аналіз потоків робочого столу

    • volatility -f memory.dmp --profile=Profile consoles

volatility --profile=Win7SP1x86_23418 procdump --pid=3152 -n --dump-dir=. -f file.dmp

Командний рядок

Чи було виконано щось підозріле?

python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments

Швидкий довідник з Volatility

Основні команди

  • imageinfo - визначає тип системи та версію ОС

  • pslist - виводить список процесів

  • pstree - виводить дерево процесів

  • psscan - виводить список процесів з використанням дескрипторів

  • dlllist - виводить список завантажених DLL

  • handles - виводить список відкритих дескрипторів

  • filescan - виводить список відкритих файлів

  • cmdline - виводить командний рядок для кожного процесу

  • consoles - виводить список консолей

  • malfind - виявляє підозрілі процеси

  • apihooks - виводить API-захоплення

  • svcscan - виводить список служб

  • connections - виводить активні мережеві з'єднання

  • sockets - виводить активні сокети

  • modules - виводить завантажені модулі

  • modscan - виводить модулі ядра

  • ssdt - виводить таблицю дескрипторів системних служб

  • callbacks - виводить зареєстровані зворотні виклики

  • driverirp - виводить таблицю перенаправлення запитів драйвера

  • idt - виводить таблицю дескрипторів переривань

  • gdt - виводить таблицю дескрипторів задач

  • 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=PROFILE cmdline -f file.dmp #Display process command-line arguments
volatility --profile=PROFILE consoles -f file.dmp #command history by scanning for _CONSOLE_INFORMATION

Команди, виконані в cmd.exe, керуються conhost.exe (або csrss.exe на системах до Windows 7). Це означає, що якщо cmd.exe було завершено зловмисником перед отриманням дампу пам'яті, все ще можливо відновити історію команд сеансу з пам'яті conhost.exe. Для цього, якщо виявлено незвичайну активність в модулях консолі, пам'ять пов'язаного процесу conhost.exe повинна бути вивантажена. Потім, шляхом пошуку рядків у цьому дампі, можна потенційно видобути використані в сеансі рядки команд.

Середовище

Отримайте змінні середовища кожного запущеного процесу. Тут можуть бути цікаві значення.

python3 vol.py -f file.dmp windows.envars.Envars [--pid <pid>] #Display process environment variables
volatility --profile=PROFILE envars -f file.dmp [--pid <pid>] #Display process environment variables

volatility --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 processes
python3 vol.py -f file.dmp windows.privileges.Privs [--pid <pid>]
#Get all processes with interesting privileges
python3 vol.py -f file.dmp windows.privileges.Privs | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"
#Get enabled privileges of some processes
volatility --profile=Win7SP1x86_23418 privs --pid=3152 -f file.dmp | grep Enabled
#Get all processes with interesting privileges
volatility --profile=Win7SP1x86_23418 privs -f file.dmp | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"

SIDs

Перевірте кожний SSID, що належить процесу. Можливо, буде цікаво перелічити процеси, які використовують SID привілеїв (і процеси, які використовують деякі службові SID).

./vol.py -f file.dmp windows.getsids.GetSIDs [--pid <pid>] #Get SIDs of processes
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services

volatility --profile=Win7SP1x86_23418 getsids -f file.dmp #Get the SID owned by each process
volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp #Get the SID of each service

Використання

Корисно знати, до яких інших файлів, ключів, потоків, процесів... процес має дескриптор (відкрито)

vol.py -f file.dmp windows.handles.Handles [--pid <pid>]

Основна методологія та ресурси

Аналіз дампу пам'яті

Volatility Cheatsheet

  1. Встановлення Volatility

    sudo apt install volatility
  2. Виведення списку підтримуваних профілів

    volatility -f <memory_dump> imageinfo
  3. Аналіз процесів

    volatility -f <memory_dump> --profile=<profile> pslist
  4. Аналсіз сокетів

    volatility -f <memory_dump> --profile=<profile> sockscan
  5. Аналіз файлової системи

    volatility -f <memory_dump> --profile=<profile> filescan
  6. Відновлення видалених файлів

    volatility -f <memory_dump> --profile=<profile> file_recovery
  7. Аналіз реєстру

    volatility -f <memory_dump> --profile=<profile> hivelist
  8. Відображення вмісту реєстру

    volatility -f <memory_dump> --profile=<profile> printkey -o <offset>
  9. Аналіз мережевої активності

    volatility -f <memory_dump> --profile=<profile> connscan
  10. Аналіз автозапуску

    volatility -f <memory_dump> --profile=<profile> autoruns
  11. Аналіз DLL

    volatility -f <memory_dump> --profile=<profile> dlllist
  12. Аналіз драйверів

    volatility -f <memory_dump> --profile=<profile> driverscan
  13. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> pstree
  14. Аналіз об'єктів

    volatility -f <memory_dump> --profile=<profile> handles
  15. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> timeliner
  16. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> cmdline
  17. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> consoles
  18. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> getsids
  19. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> getservicesids
  20. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> svcscan
  21. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> malfind
  22. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> yarascan
  23. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> malsysproc
  24. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> modscan
  25. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> ldrmodules
  26. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> threads
  27. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  28. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> mutantscan
  29. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> devicetree
  30. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> idt
  31. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> gdt
  32. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> ssdt
  33. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> driversirp
  34. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> driverirp
  35. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> drivermodule
  36. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> ssdtshadow
  37. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  38. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  39. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  40. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  41. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  42. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  43. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  44. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  45. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  46. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  47. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  48. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  49. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
  50. Аналіз розкладу завдань

    volatility -f <memory_dump> --profile=<profile> callbacks
volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=<pid>]

DLLs

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

​​​​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

volatility --profile=Win7SP1x86_23418 netscan -f file.dmp
volatility --profile=Win7SP1x86_23418 connections -f file.dmp#XP and 2003 only
volatility --profile=Win7SP1x86_23418 connscan -f file.dmp#TCP connections
volatility --profile=Win7SP1x86_23418 sockscan -f file.dmp#Open sockets
volatility --profile=Win7SP1x86_23418 sockets -f file.dmp#Scanner for tcp socket objects

volatility --profile=SomeLinux -f file.dmp linux_ifconfig
volatility --profile=SomeLinux -f file.dmp linux_netstat
volatility --profile=SomeLinux -f file.dmp linux_netfilter
volatility --profile=SomeLinux -f file.dmp linux_arp #ARP table
volatility --profile=SomeLinux -f file.dmp linux_list_raw #Processes using promiscuous raw sockets (comm between processes)
volatility --profile=SomeLinux -f file.dmp linux_route_cache

Реєстр Hive

Виведення доступних Hive

./vol.py -f file.dmp windows.registry.hivelist.HiveList #List roots
./vol.py -f file.dmp windows.registry.printkey.PrintKey #List roots and get initial subkeys

volatility --profile=Win7SP1x86_23418 -f file.dmp hivelist #List roots
volatility --profile=Win7SP1x86_23418 -f file.dmp printkey #List roots and get initial subkeys

Отримати значення

./vol.py -f file.dmp windows.registry.printkey.PrintKey --key "Software\Microsoft\Windows NT\CurrentVersion"

volatility --profile=Win7SP1x86_23418 printkey -K "Software\Microsoft\Windows NT\CurrentVersion" -f file.dmp
# Get Run binaries registry value
volatility -f file.dmp --profile=Win7SP1x86 printkey -o 0x9670e9d0 -K 'Software\Microsoft\Windows\CurrentVersion\Run'

Дамп

#Dump a hive
volatility --profile=Win7SP1x86_23418 hivedump -o 0x9aad6148 -f file.dmp #Offset extracted by hivelist
#Dump all hives
volatility --profile=Win7SP1x86_23418 hivedump -f file.dmp

Файлова система

Підключення

#See vol2

volatility --profile=SomeLinux -f file.dmp linux_mount
volatility --profile=SomeLinux -f file.dmp linux_recover_filesystem #Dump the entire filesystem (if possible)

Сканування/вивантаження

./vol.py -f file.dmp windows.filescan.FileScan #Scan for files inside the dump
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --physaddr <0xAAAAA> #Offset from previous command

Автозапуск

Завантажте його з https://github.com/tomchop/volatility-autoruns

volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns

М'ютекси

./vol.py -f file.dmp windows.mutantscan.MutantScan

volatility --profile=Win7SP1x86_23418 mutantscan -f file.dmp
volatility --profile=Win7SP1x86_23418 -f file.dmp handles -p <PID> -t mutant

Символічні посилання

./vol.py -f file.dmp windows.symlinkscan.SymlinkScan
volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan

Bash

Можливо читати історію bash з пам'яті. Ви також можете витягти файл .bash_history, але якщо він вимкнений, ви будете раді використовувати цей модуль volatility

./vol.py -f file.dmp linux.bash.Bash

Основна методологія аналізу дампу пам'яті

Кроки аналізу дампу пам'яті:

  1. Ідентифікація процесів та сервісів: Використовуйте команду pslist для перегляду списку процесів та їх атрибутів.

  2. Аналіз потоків: Використовуйте команду pstree для візуалізації зв'язків між процесами.

  3. Аналіз портів та сокетів: Використовуйте команди sockets та socketscan для виявлення відкритих портів та мережевих з'єднань.

  4. Аналіз файлів та дескрипторів файлів: Використовуйте команди filescan та filescan для виявлення відкритих файлів та дескрипторів файлів.

  5. Аналіз реєстру: Використовуйте команду hivelist для виявлення віртуальних адрес реєстру.

  6. Аналіз модулів ядра: Використовуйте команду modules для перегляду завантажених модулів ядра.

  7. Аналіз об'єктів та драйверів: Використовуйте команди objscan та driverirp для виявлення об'єктів та драйверів.

  8. Аналіз потоків та стеків викликів: Використовуйте команди threads та stacks для аналізу потоків та стеків викликів.

  9. Аналіз кешу пам'яті: Використовуйте команду memmap для відображення кешу пам'яті та виявлення потенційної шкідливої діяльності.

  10. Аналіз автозапуску: Використовуйте команду autoruns для виявлення автозапускових програм та сервісів.

Корисні команди Volatility:

  • imageinfo: Відображення основної інформації про образ.

  • kdbgscan: Пошук потенційних значень KDBG.

  • pslist: Відображення списку процесів.

  • pstree: Відображення дерева процесів.

  • sockets: Відображення відкритих сокетів.

  • socketscan: Сканування сокетів для виявлення відкритих портів.

  • filescan: Сканування файлів для виявлення відкритих файлів.

  • filescan: Відображення відкритих файлів та дескрипторів файлів.

  • hivelist: Відображення віртуальних адрес реєстру.

  • modules: Відображення завантажених модулів ядра.

  • objscan: Сканування об'єктів для виявлення об'єктів та драйверів.

  • driverirp: Відображення драйверів та їх IRP.

  • threads: Відображення списку потоків.

  • stacks: Відображення стеків викликів.

  • memmap: Відображення кешу пам'яті.

  • autoruns: Відображення автозапускових програм та сервісів.

volatility --profile=Win7SP1x86_23418 -f file.dmp linux_bash

Часова шкала

./vol.py -f file.dmp timeLiner.TimeLiner

Основна методологія та ресурси

Аналіз дампу пам'яті

Volatility Cheatsheet

  1. Встановлення Volatility

sudo apt-get install volatility
  1. Виведення списку підтримуваних профілів

volatility -f <memory_dump> imageinfo
  1. Аналіз процесів

volatility -f <memory_dump> --profile=<profile> pslist
  1. Аналіз сокетів

volatility -f <memory_dump> --profile=<profile> sockscan
  1. Аналіз файлової системи

volatility -f <memory_dump> --profile=<profile> filescan
  1. Відновлення видалених файлів

volatility -f <memory_dump> --profile=<profile> file_recovery
  1. Аналіз реєстру Windows

volatility -f <memory_dump> --profile=<profile> hivelist
volatility -f <memory_dump> --profile=<profile> printkey -o <offset>
  1. Аналіз мережевої активності

volatility -f <memory_dump> --profile=<profile> connscan
  1. Аналіз автозапуску

volatility -f <memory_dump> --profile=<profile> autoruns
  1. Аналіз драйверів

volatility -f <memory_dump> --profile=<profile> driverscan
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз модулів ядра

volatility -f <memory_dump> --profile=<profile> modscan
  1. Аналіз об'єктів

volatility -f <memory_dump> --profile=<profile> handles
  1. Аналіз кешу

volatility -f <memory_dump> --profile=<profile> shimcache
  1. Аналіз робочих наборів

volatility -f <memory_dump> --profile=<profile> memmap
  1. Аналіз потоків

volatility -f <memory_dump> --profile=<profile> threads
  1. Аналіз середовища

volatility -f <memory_dump> --profile=<profile> envars
  1. Аналіз відкритих файлів

volatility -f <memory_dump> --profile=<profile> filescan
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
  1. Аналіз розкладу завдань

volatility -f <memory_dump> --profile=<profile> pstree
volatility --profile=Win7SP1x86_23418 -f timeliner

Драйвери

./vol.py -f file.dmp windows.driverscan.DriverScan

Отримати буфер обміну

#Just vol2
volatility --profile=Win7SP1x86_23418 clipboard -f file.dmp

Отримати історію IE

#Just vol2
volatility --profile=Win7SP1x86_23418 iehistory -f file.dmp

Отримати текст з блокнота

#Just vol2
volatility --profile=Win7SP1x86_23418 notepad -f file.dmp

Знімок екрану

#Just vol2
volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp

Загрузочная запись мастера (MBR)

volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp

Master Boot Record (MBR) відіграє важливу роль у керуванні логічними розділами носія даних, які структуровані за допомогою різних файлових систем. Він не лише містить інформацію про розташування розділів, але також містить виконуваний код, який діє як завантажувач. Цей завантажувач або безпосередньо ініціює процес завантаження другого етапу ОС (див. завантажувач другого етапу), або працює у взаємодії з записом завантаження тома (VBR) кожного розділу. Для глибоких знань звертайтеся до сторінки Вікіпедії про MBR.

Посилання

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

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated