HackTheBox Challenges | CrackThis! Çözümü // Phemis | Tersine Mühendislik #5

anonuser23532

Kıdemli Üye
9 Ara 2017
2,602
12
IT23OH.png



x1BBWJ.png

: Kullanılan Programlar :
Scanner / Detect It Easy (Die)
Decompiler / dnSpy

Cleaners / Constant Decrypter , Proxy Call Fixer , Switch Killer , De4dot
CrackMe Link İçin Tıklayın !


x1BBWJ.png



Öncelikle bu programın Unpack edilişi youtube'de zaten var fakat Unpackten sonrası hiçbir yerde yok. Bugün bu crackme yi tamamı ile çözeceğiz.


Programımızı Taratalım.
3BvX5w.png

Programımızda standart bir Confuser varmış gibi duruyor.
Direkt de4dot'a verdiğimiz zaman hata çıktığını göreceğiz. Daha sonrasında hatayı görmezden gelip dnSpy üzerinde programı decompile ettiğimiz zaman uygulamanın tam temizlenmediğni de göreceğiz.
Programımızı sırası ile şu cleanerlardan Geçirelim ;
Constant Decryptor
Proxy Call Fixer
Switch Killer
De4dot
Daha sonrasında programı tekrar decompile edip modül üzerinde patch işlemi uygulayarak programın açılmasını sağlayalım.. (Burayı çok yüzeysel anlattığımın farkındayım ama zaten videoda görüntülü bir şekilde anlatılmış o yüzden fazla üstünde durmuyorum.)
Gelelim asıl işimiz olan nasıl çözüldüğüne.


Programımızı decompile ettikten sonra Main fonksiyonuna gidince karşımıza çıkan ekran budur ;
pmcpXy.png

Program bir crackMe uygulaması yani bir XML okuyucu değil. Dolayısıyla bu ekran da gördüğünüz XML okuyucu kodlarının hepsi gereksiz ve method içerisinde ki dosyaları incelerseniz Sürekli kapatmaya yönelik komutlar var. Sürekli bir debugger engeli yapıp kapatıyor fakat işimiz bununla değil.
Dolayısıyla programın XML okuyucu olan kısımlarını editleyerek siliyoruz.
Düzenledikten sonra bu hali alacaktır ;

VZr9oe.png

Şimdi methodları açıklayacak olursak ;
smethod_3 : Debugger kontrolü yapan kısım
smethod_2 : Uygulamadan direkt çıkış yapan kısım
smethod_1 : Lisans işini yapan kısım (string değer döndüren kısım)

Dolayısıyla smethod_3 ve smethod_2 kısımlarını programdan tekrar editleyerek siliyoruz.
Zi4mE1.png

Fakat arkadaşlar bir sorun daha var.
Görecek olursanız bir console uygulaması ve sonunda programa durmasını emreden hiçbir kod yok.
Gördüğümüz gibi text değişkenine yazdığımız passwordu alıyor ve daha sonrasında text'i smethod_1 ' den dönen değer ile kontrol ediyor.
Ve eğer doğru ise sonunda bir doğru mesajı göstererek direkt flagı veriyor.
dolayısıyla doğru yaptığımız zaman programın durmasını sağlayacak kod bloğunu da ekleyelim.
Kod:
Console.ReadKey();
iwxBXJ.png

Programımızın tam olarak son hali bu şekilde oluyor.
Şimdi gelelim lisans olayına gördüğümüz gibi sadece bir kontrol işlemi var ve oldukça basit bir durum.
smethod_1 ' in üstüne bir kez tıklayarak olayın içine girelim.
2fqGst.png

Karşımıza bu kodlar gelecek zaten bakarsanız burdada sadece iki değer return ediyor ya üstteki veya bir olaydan daha geçirip alttakini return edecek.
Üstteki tamamen kafa karışıklığı yaratsın diye yapılmış bir durum.
Kendisinden kendisini çıkartıyor ve sonuç 500 ' den büyük mü diye kontrol ediyor :D?

Şimdi gelelim devamına

method_2 ' nin içine girelim.
Ve gördüğünüz gibi yine kafa karışıklığına sebep verebilecek bir durum olarak iki şey return ettirilmiş fakat yine aynı kontrol işlemi var kendisinden kendisini çıkartarak 500 den büyük mü diye kontrol ettiriyor. oradan da atlatarak sadece string_0 ve string_1 değişkenini yan yana yazdırılmış halini return ediyor. Oraya bp koyarak programı debuglayalım.

qHLlGc.png
Evet password girdikten sonra Locals kısmında string_0 ve string_1 değerini görüyorsunuz.
UgrUoK.png


Yani Password :
Kod:
systemadmin
BreakPoint'i oradan kaldırarak programı baştan çalıştıralım
TkIb7g.png

Mutlu son :))

Flag :
Kod:
HTB{SySt3m4dmin}


Tam Temizlenmiş Hali Exe İndir :
https://yadi.sk/d/iMFM9A7v4Eb8Eg


Unpack Ediliş Videosu : (Bana ait değildir)
https://www.youtube.com/watch?v=ShQBAvRXJZA
 
Moderatör tarafında düzenlendi:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.