Forensics Challenge – Keep Tryin’

Merhabalar, 

bu yazıda HackTheBox içerisinde bulunan “Keep Tryin’” isimli Forensics challenge çözümünü inceleyeceğiz.

İlk olarak uygulama hakkında bize ipucu vermesi için challenge başlığı incelenir. Burada “Elde edilen bu paket şüpheli bir trafik içermektedir” ifadesi ile karşılaşılmaktadır.

Daha sonra challenge için paylaşılan zip dosyası indirilir ve herhangi bir arşiv açma aracı kullanılarak içerisindeki dosyaların dışarı çıkartılması sağlanır.

“keeptryin.pcap” isimli bir dosyanın dışarı çıkartıldığı görülmektedir. Bir sonraki aşamada Wireshark aracı ile “keeptryin.pcap” dosyasının incelenmesi gerçekleştirilir.

Dosya içerisindeki trafik incelendiğinde ilk dikkat çeken alanlar “/flag” ve “/lootz” adreslerine gerçekleştirilen “POST” işlemleri olmaktadır.

“/flag” adresine gönderilen istek sonucunda “TryHarder” cevabının alındığı görülmektedir.

“lootz” adresine gönderilen istek sonucunda ise base64 encode edilmiş bir ifadenin cevap olarak elde edildiği görülmektedir.

Elde edilen ifadenin decode edilmiş hali aşağıdaki şekildedir.

“HTTP” istekleri üzerinden herhangi bir bilgi elde edilememesinin ardından trafik analizine devam edilmektedir.  Bu esnada gerçekleştirilmiş olan DNS sorguları dikkat çekmektedir.

İlk olarak “init.c2VjcmV0LnR4dHwx.totallylegit.com” subdomain adresi içerisinde bulunan “c2VjcmV0LnR4dHwx” ifadesinin “base64” yöntemi ile decode edilmesi denenmektedir.

İşlem sonucunda “secret.txt|1” şeklinde bir ifade elde edildiği görülmektedir. DNS sorguları içerisinden farklı

türden veriler gönderiliyor olması ilgili sorunun, “DNS Tunelling” zafiyeti ile ilgili bir senaryoya sahip olduğunu düşündürmektedir. (Bknz. DNS Tunelling)

Bir sonraki aşamada ikinci DNS sorgusuna ait istek içeriğinin “base64” yöntemi ile decode edilmesi hedeflenmektedir. Fakat istek içeriğinin DNS sorgusu olarak aktarılmış olması için, “Base64Url” encoding işleminden geçirilmiş olması gerektiği bilinmektedir (“Base64” yöntemine ait  “+”, “/” ve “=” karakterlerinin URL ve HEADER alanları için anlamları farklı olabilmektedir)

Bu nedenle elde edilen istek içeriğinin “Base64Url” decoding işleminden geçirilmesi gerekmektedir. (Bknz. Base64Url Decoding)

İşlem için yazılan betik dosyası aşağıdaki şekildedir.

Görüldüğü üzere, “totallylegit.com” ile ilk “0” arasında bulunan ifadenin “.” karakterlerinin çıkartılarak birleştirilmesi sağlanmaktadır. Betiğin çalışması sonucunda elde edilen ifade aşağıdaki şekildedir.

Elde edilen ifadenin “base64” formatında decode edilmesi sonucunda oluşan görüntü aşağıdaki şekildedir.

Görüleceği üzere çok anlamlı bir sonuç elde edilememiştir. İlk DNS sorgusu içerisinde yer alan “init” ifadesinin özel bir anlam taşıyabileceği düşünülerek, bu anahtar kelime yardımı ile Google üzerinden araştırılma yapılmaktadır.

Araştırma esnasında https://github.com/Arno0x/DNSExfiltrator/blob/master/dnsExfiltrator.cs adresinde bulunan “DNS Exfiltration” örneği ile karşılaşılmaktadır. Ekran görüntüsü incelendiğinde ise incelemiş olduğumuz DNS sorgusuna benzer bir yapı üzerinde işlem yapıldığı görülmektedir.

Bunlara ek olarak “main” bloğu içerisi incelendiğinde oluşturulan DNS isteğinin “Base64Url” yöntemi ile encode edildiği ve daha sonra “RC4” yöntemi ile şifrelendiği görülmektedir.

Elde edilen bilgiler doğrultusunda “RC4” yöntemi ile şifre çözme işlemi barındıran “DNS Exfiltration” yöntemleri hakkında araştırma gerçekleştirilmektedir. Aram sonucunda https://gist.github.com/Mister2Tone/3327c76b702f1e2d1e5cc53bc41052dc adresinde bulunan örnek betik tespit edilmektedir.

Gerçekleştirilen araştırma işlemleri sonucunda elde edilen bilgiler ile betik dosyamız üzerinde güncelleştirmeler gerçekleştirilmiştir. Betik dosyasının son görüntüsü aşağıdaki şekildedir.

Görüleceği üzere “base64” decode işlemi sonucunda elde edilen ifade üzerinde “RC4” yöntemi ile şifre çözme işlemi gerçekleştirilmektedir. Bu noktada tek eksik “şifre” bilgisidir.

Trafik içerisindeki “POST” istekleri ve cevaplarının şifre bilgisine sahip olabileceği göz önünde bulundurularak aşağıdaki şifre listesi oluşturulmaktadır.

  1. flag
  2. lootz
  3. TryHarder
  4. secret
  5. buffy

“TryHarder” ifadesinin şifre olarak belirtildiği işlem sonucunda “secret.zip” dosyasının düzgün bir şekilde elde edildiği görülmektedir. “secret.zip” arşivi içerisinde bulunan dosyaların dışarı çıkartılması ile “secret.txt” elde edilmektedir.

“secret.txt” dosyası içerisinde ise flag değerinin bulunduğu görülmektedir.

Yazar: Ahmet Akan

2016 Karabük Üniversitesi Bilgisayar Mühendisliği Mezunu. Kariyerine Uygulama Güvenliği Analisti olarak başladı ve bu alanda görev almaya devam etmekte.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir