VMware Açığından Etkilenen Sanal Sunucuyu Kurtarma

ESXi 6.x sürümleri bir açık nedeniyle CryptoLocker virüsüne maruz kaldı ve sanal sunucular kullanılmaz hale geldi. Bu virüsü yaşayan kullanıcılar için sanal sunucuyu nasıl kurtaracaklarını anlatacağım. Virüs .vmdk .vmx gibi ufak boyutlu dosyaları şifreliyor fakat server-flat.vmdk dosyasını şifrelemiyor. ESXi yapısında asıl veriler flat.vmdk içinde tutuluyor. flat.vmdk kullanarak nasıl geri dönüş yapacağınızı anlatacağım.

Not : Bu kurtarma işlemi disk yapısı thin olan sanal sunucularda işe yarıyor. Eğer sanal sunucu kurulumu yaparken thick disk yapısı seçtiyseniz bu kurtarma işlemi sonrasında sanal sunucunuz açılırken işletim sistemi yok uyarısı verecektir. Eğer thick disk yapınız varsa önerim sıfırdan bir Windows kurup kurtardığınız .vmdk dosyasını 2. disk olarak oraya ekleyerek Windows içinden dosyaları almanızdır.

Öncelikle ESXi sunucunuza girdiğinizde SSH üzerinde şöyle bir uyarı göreceksiniz ;

Bu ekranı gördüğünüzde ESXi ara yüzünün tekrar gelmesi için öncelikle ESXi reboot atın. Sunucu açıldıktan sonra SSH' a girin. Kurtarmak istediğiniz sanal sunucunun klasörüne cd komutu ve yolu belirterek girin. Siz FTP den datastorexxx olarak girersiniz fakat adı 6094xxx gibi değişir. Klasöre girdikten sonra ls -la komutunu yazın, burada flat.vmdk nın boyutunu alacağız. Aşağıdaki görselde de göründüğü gibi -flat.vmdk dosyasının boyutu 64424509440 yazıyor.

64424509440 olarak bir köşeye not aldık. Şimdi virüslü .vmdk dosyasını sileceğiz. Bunun için rm -rf xxx.vmdk yazın ve .vmdk dosyasını silin. NOT : xxx.vmdk dosyasını silin. Kesinlikle xxx-flat.vmdk dosyasını silmeyin.

xxx.vmdk dosyasını sildik. Şimdi vmkfstools kullanarak yeni .vmdk oluşturacağız. vmkfstools -c 64424509440 -d thin temp.vmdk komutunu yazıyoruz. Buradaki 64424509440 boyutu ls -la yaptığımızda çıkan -flat.vmdk boyutu olmalı buna dikkat edin.

temp.vmdk dosyamızı oluşturdu. Filezilla ile klasöre girdiğinizde aşağıdaki gibi temp.vmdk ve temp-flat.vmdk dosyalarının oluştuğunu göreceksiniz.

Şimdi temp.vmdk dosyasını Notepad++ ile açın. Aşağıdaki gibi bir ekranla karşılaşacaksınız.

9. satırda "temp-flat.vmdk" yazıyor. Burayı orjinal -flat.vdmk ile değiştireceğiz. Konudaki 2. SS' e baktığınızda benim orjinal flat.vmdk ismim 185.88.172.17-flat.vmdk böyleydi buna göre düzenliyorum.
Ayrıca 19. satırda yazan ddb.thinProvisioned = "1" satırını siliyorum.

9. satırı "185.88.172.17-flat.vmdk" olarak düzenledim (kendi orjinal -flat.vmdk dosya adımı yazdım) ve 19. satırdaki ddb.thinProvisioned = "1" satırını sildim.
Düzenlenmiş son hali aşağıdaki görseldeki gibi olmalı. Sadece 2 satırda işlem yaptık ve kaydettik.

.vmdk dosyamı düzenleyip kaydettikten sonra temp-flat.vmdk dosyasını siliyorum. FTP den delete yapabilir veya SSH' dan rm -rf komutu ile silebilirsiniz. Aşağıdaki görseldeki gibi siliyorum.

Şimdi temp.vmdk dosyasının adını ise flat.vmdk ile aynı yapıyorum. SS' ler de benim flat.vmdk adım 185.88.172.17-flat.vmdk şeklinde. Bu yüzden temp.vmdk dosya adını 185.88.172.17.vmdk yaptım yani sadece -flat satırını sildim. Son hali aşağıdaki gibi oldu.

Ardından .vmx dosyanızı düzenleyeceğiz. Mevcut .vmx dosyanız virüslü olduğu için bunun yedeği .vmx~ olarak duruyor. Klasörünüzde xxxx.vmx ve xxxx.vmx~ şeklinde 2 adet dosya göreceksiniz.
Benim klasörümdeki .vmx adı 185.88.172.17.vmx~ şeklinde. Bunu not defteri ile açıyorum tüm kodları alıp orjinal .vmx içerisine yapıştırıyorum. Yani .vmx~ dosyasının içindeki tüm kodları alıp .vmx dosyasına yapıştırıyorum ve kayıt ediyorum.
.vmx dosyanızın son hali aşağıdaki gibi olmalıdır.

Ardından yine klasör içerisinde bulunan .vmsd dosyasını siliyorum. Buda virüslü ve sanal sunucunun açılmasını engeller bu yüzden xxxx.vmsd dosyasını da silin.

Filezilla ile işimiz bitti. Şimdi SSH' a tekrar dönün ve vmkfstools -e xxxx.vmdk komutunu çalıştırın. Benim .vmdk dosya adım 185.88.172.17.vmdk olduğu için " vmkfstools -e 185.88.172.17 .vmdk " yazdım ve çalıştırdım.

SSH ve Filezilla ile işimiz bitti. Şimdi ESXi içerisinde sanal sunucuyu tekrar tanımlayacağız.
Bunun için ESXi içinde datastore' e girin ve düzenlediğiniz klasör içerisinde xxxx.vmx e sağ tıklayıp Register VM yapın. Benim .vmx dosya adım 185.88.172.17.vmx olduğu için buna sağ tıkladım ve Register VM yaptım.
Eğer VM eklenirken zaten var diye hata alırsanız önce ESXi ana ekranında Virtual Machines alanında sanal sunucuyu bulup ona sağ tıklayıp Unregister yapın yani ESXi ara yüzünden kaldırın sonra .vmx e sağ tıklayıp Register VM yapın.
NOT : Mevcut sanal sunucuyu kaldırırken kesinlikle Unregister yapın Delete yapmayın aksi halde kalıcı olarak silersiniz.

Register VM yaptıktan sonra sanal sunucum normal bir şekilde Virtual Machines alanına geldi. Buradan artık sunucunuzu normal bir şekilde açıp kullanmaya devam edebilirsiniz.

Bu işlemler bittikten sonra ESXi' a format atıp dışarıya kapatmayı unutmayın. Firewall alanından ;

SSH Server
vSphere Web Client
vSphere Web Access
NFC
VMware vCenter Agent

Ayrıca açığı kapatmak için ssh ekranına aşağıdaki komutları girmeniz gerekir.

/etc/init.d/slpd stop

chkconfig slpd off

bu alanları sadece belirli IP adreslerine açmanız yeterlidir.

işletim sisteminin arızası nedeniyle sanal sunucuları boot edemediyseniz telaş etmeyin. Boot olmayan veya onaramadığınız vmdk içerisinden nasıl dosyalarınızı alacağınızı anlatacağım.

1. Öncelikle yukarıdaki makalede yazanları adım adım uygulayıp .vmdk dosyanızı onarın bu şart.
2 http://junknas.download/bootable/WinPE10_8_Sergei_Strelec_x86_x64_2021.10.15_English.iso adresinden WinPE10_8_Sergei_Strelec_x86_x64_2021.10.15_Englis h.iso dosyasını indirin ve sunucunuzda bir klasöre atın.
3. ESXi üzerinde bir sanal sunucu oluşturun adım adım anlatıyorum ;

Sanal sunucunuzu oluştururken aşağıdaki gibi Windows - Windows Server 2012 Seçin

Ardından aşağıdaki gibi Hard Disk 1 alanında Thin Provisioned seçin ve disk boyutunu size yetecek kadar yapın. Mesela benim kurtaracağım .vmdk boyutu 30GB. Dosyalarımı Hard Disk 1 içerisine atacağım için ne olur olmaz diye boyutunu 50GB yaptım;

Şimdi Add Hard Disk alanına tıklayın ve Existing Hard Disk' e tıklayın

Burada kurtaracağız .vmdk yı seçin. Benim bozuk olan ve kurtaracağım .vmdk dosyası C7-RDS1.vmdk isimli bunu seçiyorum.

Gördüğünüz gibi New Hard disk olarak seçtiğim .vmdk ekranıma geldi.

Şimdi CD/DVD Drive 1 alanından Datastore ISO file seçeneğine tıklayın

Burada yüklediğimiz Win10_8_Sergei... iso dosyamızı seçiyoruz.

Son hali aşağıdaki gibi olacaktır. ISO dosyamızı seçtik. Connect ve Connect at power on seçenekleri aktif. Şimdi Next ve Finish yapıp bitiriyoruz. Ardından sanal sunucumuzu başlatıyoruz ve açıyoruz.

Sanal sunucuyu açtığımızda karşımıza bu ekran geliyor. En üstteki Boot USB Sergei Strelec Win10 seçili halde Enter ile devam ediyoruz.

Windows açıldı. Şimdi masaüstünde yer alan Windows Disk Management programını açıyoruz.

Karşımıza şöyle bir ekran gelecek direkt OK seçeneğini seçiyoruz.

Gördüğünüz gibi 2 diskte online oldu. Buradaki Disk 0 olan benim yedekleri atacağım yeni diskim hatırlasanız 50GB yapmıştım. Alttaki Disk1 30GB ise benim .vmdk diskim. Burada dikkatli olun yanlış diske işlem yapmayın.
Disk 0' a sağ tıklayıp New Simple Volume diyorum. Çıkan ekranda sürekli next yapıyorum ve bitiriyorum.

Görüldüğü gibi 50GB Yerel Disk C alanım oluştu. Şimdi dosyalarımı buraya kurtaracağım.

Sol Alt Windows Logosuna Tıklıyorum > Data recovery > R-Studio 8.16 programını açıyorum.

Programı açtığımda karşıma aşağıdaki gibi bir ekran geliyor. VMware Virtual Disk 2.0 gördüğünüz gibi 30GB yani bu benim .vmdk dosyam. Empty Space10 (Size Empty Spacexxx gibi olabilir) üzerine sağ tıklıyorum ve Partition Search yapıyorum.

İşlem bittikten sonra böyle bir ekran geliyor. Bende Recognized0 ve Recognized1 mevcut. Sizde bu sayı fazla olabilir. Hangisinin boyutu yüksekse ona çift tıklayıp girin. Benim Recognized1 gördüğünüz gibi 26GB yani ana sistemim burada. Üzerine çift tıklayıp açıyorum.

Görüldüğü gibi .vmdk içerisi açıldı. Şimdi buradan istediğiniz dosyayı veya komple kurtarma yapabilirsiniz.

Mesela ben tek 1 dosya kurtarmak istiyorum. home içerisinde Cyber adlı bir .bin dosyası var bunu almak istiyorum. Kurtarmak istediğim dosyanın başındaki kutucuğu tikliyorum ve Recover Marked seçeneğine tıklıyorum.

Karşıma aşağıdaki gibi bir ekran çıkıyor. Output Folder benim dosyayı aktaracağım yer. ... kutucuğa tıklıyorum

Buradan Yerel Disk C' ye girip Select Folder diyorum. Hatırlarsanız 50GB olarak bunu açmıştık ve dosyaları buraya aktaracağımızı söylemiştik. Bu yüzden burayı seçiyorum.

Output Folder C: olarak seçtim şimdi Ok butonuna basıyorum ve bitiriyorum.

İşlem bittikten sonra görüldüğü gibi seçtiğim dosya Yerel Disk C içerisine geldi.

Eğer komple tüm dosyaları her şeyi kurtarmak istiyorsanız aşağıdaki gibi hiç direkt Recover butonuna tıklayın.

Output Folder aynı şekilde C: olmalı ve aşağıdaki gibi işaretli kutucukları sizde işaretleyin ve Ok ile bitirin.

İşlem sırasında karşınıza aşağıdaki gibi bir uyarı gelirse. "Apply the answer to all recovered files" kutucuğunu işaretleyip Rename seçeneğine tıklayın.

İşlemin bittikten sonra Yerel Disk C içerisinde dosyalarınızı görebilirsiniz.

Dosyalarınızı kurtardıktan sonra bu açık olan Windows' a denetim masasından bir IP adresi verin. Normal bir Windows gibi kullanabilirsiniz. Dosyalarınızı arşivleyip tarayıcıdan Google Drive gibi bir yere upload edebilir, Uzak Masa Üstü' nü aktif ettikten sonra bağlanarak dosyalarınızı alabilir, Anydesk veya teamviewer ile bağlanıp alabilir veya FileZilla programı ile (Windows içinde hazır yüklü) bir FTP' ye bağlanıp dosyalarınızı upload edebilirsiniz. Bu Windows kurulum gerektirmeyen ve içerisinde bir çok program olan bir Windows 10 sürümüdür dosyalarınızı kurtardıktan sonra normal bir Windows gibi kullanabilirsiniz.