Jest to zmienność poleceń, którą można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online MAC OS
PROGRAM:
IMIĘ
zmienność - zaawansowana struktura analizy pamięci
STRESZCZENIE
zmienność [opcja]
zmienność -f [obraz] --profil=[profil] [wtyczka]
OPIS
Volatility Framework to całkowicie otwarty zbiór narzędzi do ekstrakcji
cyfrowe artefakty z próbek pamięci ulotnej (RAM). Jest to przydatne w analizie kryminalistycznej.
Techniki ekstrakcji są wykonywane całkowicie niezależnie od systemu
zbadane, ale oferują bezprecedensowy wgląd w stan środowiska wykonawczego systemu.
Volatility obsługuje kilka wersji systemów MS Windows, Linux i MAC OSX:
MS Windows:
· 32-bitowy system Windows XP z dodatkiem Service Pack 2 i 3
· 32-bitowy system Windows 2003 z dodatkiem Service Pack 0, 1, 2
· 32-bitowy system Windows Vista z dodatkiem Service Pack 0, 1, 2
· 32-bitowy Windows 2008 Server Service Pack 1, 2 (nie ma dodatku SP0)
· 32-bitowy system Windows 7 z dodatkiem Service Pack 0, 1
· 32-bitowe Windows 8, 8.1 i 8.1 Update 1
· 32-bitowy system Windows 10 (wstępne wsparcie)
· 64-bitowy system Windows XP Service Pack 1 i 2 (nie ma dodatku SP0)
· 64-bitowy system Windows 2003 Server z dodatkiem Service Pack 1 i 2 (nie ma dodatku SP0)
· 64-bitowy system Windows Vista z dodatkiem Service Pack 0, 1, 2
· 64-bitowy system Windows 2008 Server z dodatkiem Service Pack 1 i 2 (nie ma dodatku SP0)
· 64-bitowy system Windows 2008 R2 Server z dodatkiem Service Pack 0 i 1
· 64-bitowy system Windows 7 z dodatkiem Service Pack 0 i 1
· 64-bitowe Windows 8, 8.1 i 8.1 Update 1
· 64-bitowy system Windows Server 2012 i 2012 R2
· 64-bitowy system Windows 10 (wstępne wsparcie)
Linux:
· 32-bitowe jądra Linuksa od 2.6.11 do 4.2.3
· 64-bitowe jądra Linuksa od 2.6.11 do 4.2.3
· OpenSuSE, Ubuntu, Debian, CentOS, Fedora, Mandriva itp
Mac OS X:
· 32-bitowy 10.5.x Leopard (jedyny 64-bitowy 10.5 to serwer, który nie jest obsługiwany)
· 32-bitowy 10.6.x Snow Leopard
· 64-bitowy 10.6.x Snow Leopard
· 32-bitowy 10.7.x Lew
· 64-bitowy 10.7.x Lew
· 64-bitowy 10.8.x Mountain Lion (nie ma wersji 32-bitowej)
· 64-bitowy 10.9.x Mavericks (nie ma wersji 32-bitowej)
· 64-bitowy 10.10.x Yosemite (nie ma wersji 32-bitowej)
· 64-bitowy 10.11.x El Capitan (nie ma wersji 32-bitowej)
Obsługiwane formaty pamięci to:
· Surowa próbka liniowa (dd)
· Plik hibernacji
· Plik zrzutu awaryjnego
· Zrzut rdzenia VirtualBox ELF64
· VMware zapisane stany i pliki migawek
· Format EWF (E01)
· Format LiME (Linux Memory Extractor).
· Format pliku Mach-o
· Zrzuty maszyny wirtualnej QEMU
· FireWire
· HPAK (FDPro)
Obsługiwane przestrzenie adresowe (typy pamięci RAM) to:
· AMD64PagedMemory — standardowa 64-bitowa przestrzeń adresowa AMD
· ArmAddressSpace - Przestrzeń adresowa dla procesorów ARM
· FileAddressSpace – Jest to bezpośredni plik AS
· HPAKAddressSpace — ten AS obsługuje format HPAK
· IA32PagedMemoryPae — ta klasa implementuje przestrzeń adresową stronicowania IA-32 PAE.
To jest odpowiedzialne
· IA32PagedMemory — standardowa przestrzeń adresowa stronicowania IA-32
· LimeAddressSpace - Przestrzeń adresowa dla Lime
· MachOAddressSpace - Przestrzeń adresowa dla plików mach-o do obsługi pamięci atc-ny
czytelnik
· OSXPmemELF — ten AS obsługuje format coredump VirtualBox ELF64
· QemuCoreDumpElf — ten AS obsługuje format coredump Qemu ELF32 i ELF64
· VirtualBoxCoreDumpElf64 — ten AS obsługuje format coredump VirtualBox ELF64
· VMWareAddressSpace — ten AS obsługuje migawkę VMware (VMSS) i zapisany stan
(VMSS).
· VMWareMetaAddressSpace — ten AS obsługuje format VMEM z VMSN/VMSS
metadanych
· WindowsCrashDumpSpace32 — ten AS obsługuje format Windows Crash Dump
· WindowsCrashDumpSpace64BitMap — ten AS obsługuje Windows BitMap Crash Dump
format
· WindowsCrashDumpSpace64 — ten AS obsługuje format Windows Crash Dump
· WindowsHiberFileSpace32 — Jest to hibernacja przestrzeni adresowej dla systemu Windows
pliki hibernacji
Przykładowe obrazy pamięci do testów znajdują się pod adresem
https://github.com/volatilityfoundation/zmienność/wiki/Próbki-pamięci.
OPCJE
-H, --help
Wypisz wszystkie dostępne opcje i ich wartości domyślne. Można ustawić wartości domyślne
plik konfiguracyjny (/etc/volatilityrc).
--conf-file=/root/.volatilityrc
Plik konfiguracyjny oparty na użytkownikach.
-D, --odpluskwić
Zmienność debugowania.
--plugins=WTYCZKI
Dodatkowy wtyczka katalogi do użycia (oddzielone dwukropkami).
--informacje Drukuj informacje o wszystkich zarejestrowanych obiektach.
--cache-directory=/root/.cache/volatility
Katalog, w którym przechowywane są pliki pamięci podręcznej.
--Pamięć podręczna
Użyj buforowania.
--tz=TZ
Ustaw strefę czasową do wyświetlania znaczników czasu za pomocą pytz (jeśli jest zainstalowany) lub tzset
-f NAZWA PLIKU, --filename=NAZWAPLIKU
Nazwa pliku do użycia podczas otwierania pliku obraz.
--profile=WinXPSP2x86
Nazwa profilu do załadowania (use --informacje aby wyświetlić listę obsługiwanych profili).
-l LOKALIZACJA, --lokalizacja=LOKALIZACJA
Lokalizacja URN, z której ma zostać załadowana przestrzeń adresowa.
-w, --pisać
Włącz obsługę zapisu.
--dtb=DTB
Adres DTB.
--shift=PRZESUNIĘCIE
Adres zmiany Mac KASLR.
--wyjście=tekst
Wyjście w tym formacie.
--plik-wyjściowy=PLIK_WYJŚCIOWY
Zapisz dane wyjściowe w tym pliku.
-v, --gadatliwy
Pełne informacje.
-g KDBG, --kdbg=KDBG
Określ konkretny adres wirtualny KDBG. Dla 64-bitowego systemu Windows 8 i nowszych jest to
adres KdCopyDataBlock.
--siła
Wymuś wykorzystanie profilu podejrzanego.
-k KPCR, --kpcr=KPCR
Określ konkretny adres KPCR.
--cookie=CIASTECZKO
Podaj adres pliku nt!ObHeaderCookie (dotyczy tylko systemu Windows 10).
WTYCZKI ROLNICZE PROFILE
Obsługiwane wtyczka polecenia i profile można przeglądać za pomocą polecenia „$
zmienność --informacje'. Pamiętaj, że dozwolone wtyczki dla systemów Linux i MAC OSX będą miały rozszerzenie „linux_”
i przedrostków „mac_”. Wtyczki bez tych przedrostków zostały zaprojektowane dla MS Windows.
Profile to mapy używane przez Volatility do zrozumienia systemów operacyjnych. Dozwolone MS
Profile Windows są dostarczane przez Volatility.
Musisz utworzyć własne profile dla systemów Linux i MAC OSX. W tym celu w systemach Debian przeczytaj
plik README.Debian dostarczony przez zmienność-pakiet narzędzi.
W systemie MS Windows do określenia typu systemu operacyjnego można użyć:
$ zmienność -f informacje o obrazie
or
$ zmienność -f kdbgscan
ŚRODOWISKO ZMIENNE
W systemie GNU/Linux lub OS X można ustawić te zmienne:
· VOLATILITY_PROFILE - Określa profil, który ma być używany jako domyślny, dzięki czemu
niepotrzebne--profil' opcja.
· VOLATILITY_LOCATION - Określa ścieżkę do pliku obraz. A więc polecenie zmienności
nie będzie potrzebować nazwy pliku przez „-f' opcja.
· VOLATILITY_KDBG - Określa adres KDBG. Zobacz PROCEDURY DODATKOWE, aby uzyskać więcej informacji
detale.
Inne wtyczka w ten sposób można wykorzystać flagi, na przykład KPCR, DTB lub PLUGINS. Gdy
eksportując zmienne, po prostu poprzedź VOLATILITY_ przed nazwą flagi (np
VOLATILITY_KPCR). W przeciwnym razie nazwa flagi pozostaje taka sama podczas dodawania jej do pliku
plik konfiguracyjny.
Jeśli masz ścieżkę ze spacją lub większą liczbą w nazwie, spacje należy zastąpić %20
zamiast tego (np. LOCATION=file:///tmp/my%20image.img).
Przykład:
$ wyeksportuj VOLATILITY_PROFILE=Win7SP0x86
$ eksport VOLATILITY_LOCATION=file:///tmp/myimage.img
$ eksport VOLATILITY_KDBG=0x82944c28
KONFIGURACJA AKTA
Pliki konfiguracyjne to zazwyczaj „volatilityrc” w bieżącym katalogu lub
'~/.zmiennośćrc' w katalogu domowym użytkownika lub w ścieżce określonej przez użytkownika, używając --konf-
filet opcja. Poniżej przedstawiono przykładową zawartość pliku:
[DEFAULT]
PROFIL=Win7SP0x86
LOKALIZACJA=plik:///tmp/mójobraz.img
KDBG=0x82944c28
Inne wtyczka w ten sposób można wykorzystać flagi, na przykład KPCR, DTB lub PLUGINS. Gdy
eksportując zmienne, po prostu poprzedź VOLATILITY_ przed nazwą flagi (np
VOLATILITY_KPCR). W przeciwnym razie nazwa flagi pozostaje taka sama podczas dodawania jej do pliku
plik konfiguracyjny.
Jeśli masz ścieżkę ze spacją lub większą liczbą w nazwie, spacje należy zastąpić %20
zamiast tego (np. LOCATION=file:///tmp/my%20image.img).
DODATKOWY PROCEDURY
Ustawianie strefy czasowej
Znaczniki czasu wyodrębnione z pamięci mogą być w czasie lokalnym systemu lub w czasie uniwersalnym
Współrzędne (UTC). Jeśli są w UTC, Volatility może zostać poinstruowane, aby wyświetlało je w czasie
strefa wybrana przez analityka. Aby wybrać strefę czasową, użyj jednej ze standardowych stref czasowych
nazwy (takie jak strefy czasowe America/Sao_Paulo, Europe/London, US/Eastern lub większość stref czasowych Olson) z
flaga --tz=STREFA CZASOWA.
Volatility próbuje użyć pytz, jeśli jest zainstalowany, w przeciwnym razie używa tzset.
Należy pamiętać, że określenie strefy czasowej nie wpłynie na sposób wyświetlania czasu lokalnego w systemie. Jeśli
zidentyfikujesz godzinę, o której wiesz, że jest oparta na UTC, zgłoś to jako problem w narzędziu do śledzenia problemów.
Domyślnie sygnatury czasowe _EPROCESS CreateTime i ExitTime są w formacie UTC.
Ustawianie DTB
DTB (Directory Table Base) jest tym, czego Volatility używa do tłumaczenia adresów wirtualnych na fizyczne
adresy. Domyślnie używany jest DTB jądra (z procesu Idle/System). Jeśli chcesz użyć A
DTB innego procesu podczas uzyskiwania dostępu do danych, podaj adres do --dtb=ADRES.
Ustawianie adresu KDBG (tylko w systemie Windows opcja)
Skany zmienności w poszukiwaniu struktury „_KDDEBUGGER_DATA64” przy użyciu zakodowanych na stałe podpisów „KDBG” i
seria kontroli trzeźwości. Podpisy te nie są krytyczne dla działania systemu operacyjnego
poprawnie, więc złośliwe oprogramowanie może je zastąpić, próbując odrzucić narzędzia, które polegają na
podpis. Ponadto w niektórych przypadkach może istnieć więcej niż jeden „_KDDEBUGGER_DATA64” (np
przykład, jeśli zastosujesz główną aktualizację systemu operacyjnego i nie uruchomisz ponownie), co może powodować zamieszanie i prowadzić do
między innymi nieprawidłowe zestawienia procesów i modułów. Jeśli znasz adres
dodaj „_KDDEBUGGER_DATA64”, możesz to określić za pomocą --kdbg=ADDRESS i to zastąpi automatyczne
skany. Aby uzyskać więcej informacji, zobacz wtyczkę kdbgscan.
Ustawianie adresu KPCR (tylko w systemie Windows opcja)
Istnieje jeden KPCR (Kernel Processor Control Region) dla każdego procesora w systemie. Pewna zmienność
wtyczki wyświetlają informacje o procesorze. Tak więc, jeśli chcesz wyświetlić dane dla określonego procesora, np
przykład CPU 3 zamiast CPU 1, możesz przekazać adres KPCR tego procesora za pomocą --kpcr=ADDRESS.
Aby zlokalizować KPCR dla wszystkich procesorów, zobacz wtyczkę kpcrscan. Należy również pamiętać, że począwszy od Volatility 2.2,
wiele wtyczek, takich jak idt i gdt, automatycznie przegląda listę KPCR.
Włączanie obsługi zapisu
Obsługa zapisu w Volatility powinna być używana ostrożnie. Dlatego, aby faktycznie go włączyć, musisz
nie tylko wpisz --write w wierszu poleceń, ale musisz wpisać „hasło” w odpowiedzi na to pytanie
zostaniesz poproszony o. W większości przypadków nie będziesz chciał korzystać z obsługi zapisu, ponieważ może to prowadzić do
uszkodzenie lub modyfikacja danych w zrzucie pamięci. Istnieją jednak szczególne przypadki, które to powodują
funkcja naprawdę interesująca. Na przykład możesz wyczyścić aktywny system z określonego złośliwego oprogramowania za pomocą
zapisywanie do pamięci RAM przez firewire lub możesz włamać się na zablokowaną stację roboczą poprzez łatanie bajtów w pliku
biblioteki DLL winlogon.
Określanie dodatkowych wtyczka katalogi
Architektura wtyczek Volatility może ładować pliki wtyczek z wielu katalogów jednocześnie. w
Kod źródłowy zmienności, większość wtyczek znajduje się w zmienności/wtyczkach. Jest jednak inny
katalog (volatility/contrib), który jest zarezerwowany dla wkładów zewnętrznych programistów, lub
słabo obsługiwane wtyczki, które po prostu nie są domyślnie włączone. Aby uzyskać dostęp do tych wtyczek, wystarczy
wpisz --plugins=contrib/plugins w wierszu poleceń. Umożliwia także utworzenie oddzielnego katalogu
własnych wtyczek, którymi możesz zarządzać bez konieczności dodawania/usuwania/modyfikowania plików w rdzeniu
Katalogi zmienności.
Uwagi:
* W systemach Debian katalog contrib/plugins znajduje się w /usr/share/volatility/contrib/plugins.
* Podkatalogi będą również przeglądane, o ile istnieje plik __init__.py (który może być pusty)
w nich.
* Parametr --plugins może być również plikiem ZIP zawierającym takie wtyczki
jako --plugins=myplugins.zip. Ze względu na sposób ładowania wtyczek, zewnętrzny katalog wtyczek
lub zip należy podać przed argumentami specyficznymi dla wtyczki (w tym nazwą pliku
podłącz). Przykład:
$ volatility --plugins=contrib/plugins -f Przykład XPSP3x86.vmem
Wybór formatu wyjściowego
Domyślnie wtyczki używają rendererów tekstu do standardowego wyjścia. Jeśli chcesz przekierować do pliku, ty
możesz oczywiście użyć przekierowania konsoli (tj. > out.txt) lub możesz użyć --output-file=out.txt.
Powodem, dla którego możesz również wybrać opcję --output=FORMAT, jest umożliwienie wtyczkom renderowania danych wyjściowych jako HTML,
JSON, SQL lub cokolwiek innego. Jednak nie ma wtyczek z tymi alternatywnymi formatami wyjściowymi
wstępnie skonfigurowany do użytku, więc musisz dodać funkcję o nazwie render_html, render_json, render_sql,
odpowiednio do każdej wtyczki przed użyciem --output=HTML.
Opcje specyficzne dla wtyczki
Wiele wtyczek akceptuje własne argumenty, które są niezależne od opcji globalnych. Aby zobaczyć
listę dostępnych opcji, wpisz zarówno nazwę wtyczki, jak i -h/--help w wierszu poleceń.
$ lista dll zmienności -h
Tryb debugowania
Jeśli coś nie dzieje się w Volatility w oczekiwany sposób, spróbuj uruchomić polecenie z opcją -d/--debug.
Umożliwi to drukowanie komunikatów debugowania do standardowego błędu. Aby uzyskać więcej poziomów debugowania, jak w przypadku używania
debugger pdb), dodaj -d -d -d do polecenia.
Używanie zmienności jako biblioteki
Chociaż możliwe jest użycie Volatility jako biblioteki (istnieją plany lepszego wspierania go w
przyszły). Obecnie, aby zaimportować zmienność ze skryptu Pythona, można użyć następującego przykładowego kodu:
$ pyton
>>> import volatility.conf jako conf
>>> zaimportuj volatility.registry jako rejestr
>>> rejestr.PluginImporter()
>>> config = conf.ConfObject()
>>> importuj volatility.commands jako polecenia
>>> import volatility.addrspace jako adresadres
>>> register.register_global_options(config, commands.Command)
>>> register.register_global_options(config, addrspace.BaseAddressSpace)
>>> config.parse_options()
>>> config.PROFILE="WinXPSP2x86"
>>> config.LOCATION = "file:///media/memory/private/image.dmp"
>>> import volatility.plugins.taskmods jako taskmods
>>> p = taskmods.PSList(config)
>>> dla procesu w p.calculate():
... proces drukowania
PRZYKŁADY
Aby zobaczyć wszystkie dostępne wtyczki, profile, testy skanera i przestrzenie adresowe:
$ zmienność --informacje
Aby wyświetlić listę wszystkich aktywnych procesów znalezionych w MS Windows 8 SP0 obraz:
$ zmienność -f win8.raw --profile=Win8SP0x86 pslist
Aby wyświetlić listę wszystkich aktywnych procesów znalezionych w MS Windows 8 SP0 obraz, używając strefy czasowej:
$ volatility -f win8.raw --profile=Win8SP0x86 pslist --tz=Ameryka/Sao_Paulo
Aby wyświetlić bufor jądra z systemu Linux 3.2.63 obraz:
$ zmienność -f mem.dd --profile=Linux_3_2_63_x64 linux_dmesg
UWAGI
Ta strona została oparta na kilku testach i kilku oficjalnych dokumentach dotyczących zmienności. Dla
inne informacje i samouczki, patrz:
· http://www.volatilityfoundation.org
· https://github.com/volatilityfoundation/zmienność/wiki
Korzystaj ze zmienności online, korzystając z usług onworks.net