RootedCONİspanya'daki en ilgili siber güvenlik etkinliği ve Avrupa'daki en önemli etkinliklerden biridir. Teknik bilgiyi teşvik etme misyonu ile bu kongre, her disiplinde teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.
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, bazen isimlerinde yansıtılan iki ana eklenti yaklaşımına sahiptir. “list” eklentileri, süreçler gibi bilgileri almak için Windows Kernel yapıları arasında gezinmeye çalışır (bellekteki _EPROCESS yapılarının bağlı listesini bulma ve yürütme), OS handle'ları (handle tablosunu bulma ve listeleme, bulunan herhangi bir işaretçiyi çözme vb.). Örneğin, süreçleri listelemesi istendiğinde Windows API'sinin davranışına benzer şekilde çalışırlar.
Bu, “list” eklentilerini oldukça hızlı hale getirir, ancak kötü amaçlı yazılımlar tarafından manipülasyona karşı Windows API'si kadar savunmasızdır. Örneğin, kötü amaçlı yazılım DKOM kullanarak bir süreci _EPROCESS bağlı listesinden ayırırsa, bu süreç Görev Yöneticisi'nde görünmeyecek ve pslist'te de görünmeyecektir.
Diğer yandan, “scan” eklentileri, belirli yapılar olarak çözümlendiğinde anlamlı olabilecek şeyler için belleği kazıma yaklaşımını benimseyecektir. Örneğin, psscan belleği okuyacak ve ondan _EPROCESS nesneleri oluşturmaya çalışacaktır (ilgi çekici bir yapının varlığını gösteren 4 baytlık dizeleri arayan havuz etiketi taraması kullanır). Avantajı, çıkmış süreçleri bulabilmesidir ve kötü amaçlı yazılım _EPROCESS bağlı listesiyle oynasa bile, eklenti hala bellekte yatan yapıyı bulacaktır (çünkü sürecin çalışması için hala var olması gerekir). Dezavantajı ise, “scan” eklentilerinin “list” eklentilerinden biraz daha yavaş olması ve bazen yanlış pozitifler verebilmesidir (çok uzun süre önce çıkmış ve yapısının bazı kısımları diğer işlemler tarafından üzerine yazılmış bir süreç).
Readme içinde açıklandığı gibi, desteklemek istediğiniz OS'nin sembol tablosunuvolatility3/volatility/symbols içine koymanız gerekir.
Çeşitli işletim sistemleri için sembol tablosu paketleri indirme için mevcuttur:
Eğer indirdiğiniz yeni bir profili (örneğin bir linux profili) kullanmak istiyorsanız, aşağıdaki klasör yapısını bir yere oluşturmanız gerekir: plugins/overlays/linux ve bu klasörün içine profili içeren zip dosyasını koymalısınız. Ardından, profillerin numarasını almak için:
Önceki bölümde profilin LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 olarak adlandırıldığını görebilirsiniz ve bunu şu şekilde bir şey çalıştırmak için kullanabilirsiniz:
Buradan: Sadece profil önerileri sunan imageinfo'nun aksine, kdbgscan doğru profili ve doğru KDBG adresini (birden fazla varsa) kesin olarak tanımlamak için tasarlanmıştır. Bu eklenti, Volatility profilleriyle bağlantılı KDBGHeader imzalarını tarar ve yanlış pozitifleri azaltmak için mantık kontrolleri uygular. Çıktının ayrıntı seviyesi ve gerçekleştirilebilecek mantık kontrolü sayısı, Volatility'nin bir DTB bulup bulamamasına bağlıdır, bu nedenle doğru profili zaten biliyorsanız (veya imageinfo'dan bir profil öneriniz varsa), bunu kullanmayı unutmayın.
Her zaman kdbgscan'ın bulduğu süreç sayısına bakın. Bazen imageinfo ve kdbgscan birden fazla uygun profil bulabilir, ancak yalnızca geçerli olanın bazı süreçlerle ilişkili olacaktır (Bu, süreçleri çıkarmak için doğru KDBG adresinin gerekli olmasındandır).
Kernel hata ayıklayıcı bloğu olarak adlandırılan KDBG, Volatility tarafından yapılan adli görevler için kritik öneme sahiptir. KdDebuggerDataBlock olarak tanımlanan ve _KDDEBUGGER_DATA64 türünde olan bu blok, PsActiveProcessHead gibi temel referanslar içerir. Bu özel referans, tüm süreçlerin listelenmesini sağlayan süreç listesinin başına işaret eder; bu da kapsamlı bellek analizi için temeldir.
OS Bilgisi
#vol3 has a plugin to give OS information (note that imageinfo from vol2 will give you OS info)./vol.py-ffile.dmpwindows.info.Info
The plugin banners.Bannersdump'ta linux banner'larını bulmak için vol3'te kullanılabilir.
./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
Bellek Dökümü
Bir sürecin bellek dökümü, sürecin mevcut durumunun her şeyiniçıkarır. procdump modülü yalnızca kodu çıkarır.
RootedCONİspanya'daki en ilgili siber güvenlik etkinliği ve Avrupa'daki en önemli etkinliklerden biridir. Teknik bilgiyi teşvik etme misyonu ile bu kongre, her disiplindeki teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.
Şüpheli süreçleri (isimle) veya beklenmedik çocuk süreçleri (örneğin, iexplorer.exe'nin bir çocuğu olarak cmd.exe) bulmaya çalışın.
Gizli süreçleri tanımlamak için pslist'in sonucunu psscan ile karşılaştırmak ilginç olabilir.
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
Dump proc
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory
python3vol.py-ffile.dmpwindows.cmdline.CmdLine#Display process command-line arguments
volatility--profile=PROFILEcmdline-ffile.dmp#Display process command-line argumentsvolatility--profile=PROFILEconsoles-ffile.dmp#command history by scanning for _CONSOLE_INFORMATION
cmd.exe içinde yürütülen komutlar conhost.exe (veya Windows 7'den önceki sistemlerde csrss.exe) tarafından yönetilmektedir. Bu, eğer bir saldırgan cmd.exe'yi bir bellek dökümü alınmadan önce sonlandırırsa, conhost.exe'nin belleğinden oturumun komut geçmişini geri kazanmanın hala mümkün olduğu anlamına gelir. Bunu yapmak için, konsolun modülleri içinde olağandışı bir etkinlik tespit edilirse, ilişkili conhost.exe sürecinin belleği dökülmelidir. Ardından, bu döküm içinde strings arayarak, oturumda kullanılan komut satırları potansiyel olarak çıkarılabilir.
Ortam
Her çalışan sürecin çevre değişkenlerini al. Bazı ilginç değerler olabilir.
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
Token ayrıcalıkları
Beklenmedik hizmetlerde ayrıcalıklı token'leri kontrol edin.
Bazı ayrıcalıklı token'leri kullanan süreçleri listelemek ilginç olabilir.
#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
Bir işlem tarafından sahip olunan her SSID'yi kontrol edin.
Bir ayrıcalıklı SID kullanan işlemleri (ve bazı hizmet SID'lerini kullanan işlemleri) listelemek ilginç olabilir.
./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
Handles
Bir işlemin bir handle'ı olduğu diğer dosyalara, anahtarlara, iş parçacıklarına, süreçlere... hangi bağlantıları kurduğunu bilmek faydalıdır.
./vol.py-ffile.dmpwindows.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_23418dlllist--pid=3152-ffile.dmp#Get dlls of a procvolatility--profile=Win7SP1x86_23418dlldump--pid=3152--dump-dir=.-ffile.dmp#Dump dlls of a proc
Süreç başına dizgiler
Volatility, bir dizginin hangi işleme ait olduğunu kontrol etmemize olanak tanır.
Windows, çalıştırdığınız programları UserAssist anahtarları adı verilen kayıt defteri özelliği ile takip eder. Bu anahtarlar, her programın ne kadar sıklıkla çalıştırıldığını ve en son ne zaman çalıştırıldığını kaydeder.
RootedCONİspanya'daki en ilgili siber güvenlik etkinliği ve Avrupa'daki en önemli etkinliklerden biridir. Teknik bilgiyi teşvik etme misyonu ile bu kongre, her disiplindeki teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.
./vol.py-ffile.dmpwindows.svcscan.SvcScan#List services./vol.py-ffile.dmpwindows.getservicesids.GetServiceSIDs#Get the SID of services
#Get services and binary pathvolatility--profile=Win7SP1x86_23418svcscan-ffile.dmp#Get name of the services and SID (slow)volatility--profile=Win7SP1x86_23418getservicesids-ffile.dmp
Ağ
./vol.py-ffile.dmpwindows.netscan.NetScan#For network info of linux use volatility2