Superbug

Information Security Community

Atmosfer IO Siber Güvenlik Yarışması Çözümleri





Merhabalar,

İlkini NOPcon Bilgi Güvenliği Konferansı için hazırlamış olduğumuz Atmosfer IO yarışmasının çözümlerini paylaşmadan önce kısa bir tanıtım yapmak istiyorum. Atmosfer IO, ”bitmeyen hikaye” konseptine göre oluşturuldu. Sürekli karanlık projeler üzerine çalışan bir firma yani Atmosfer ve karşısında onu sürekli onu engellemeye çalışan Aura ajanları bulunuyor.

Platforma kaydolduğunuzda Aura ajanları tarafına geçiyorsunuz. Evet! artık siz de bir Aura ajanısınız ve bir Aura ajanı olarak amacınız zor görevlerin üstesinden gelmek.

Görev içeriği size Atmosfer şirketine bir şekilde sızmış olan Aura ajanları tarafından veriliyor. Eğer görevleri doğru bir şekilde tamamlayıp doğru anahtar veya bayrak değerlerini sisteme girerseniz AP(Ajan Puanı) kazanıyorsunuz. Kazandığınız bu puanlar ile birlikte hem mevcut yarışma için hem de genel puan durumunda yükselmeye başlıyorsunuz.

Şekil 1 - Örnek Bir Profil Ekranı



Video - Kung Fury

Ayrıca yarışma kazandıkça sizin için özel olarak hazırlanmış armalar profil sayfanıza ekleniyor. Aşağıdaki görselde NOPcon konferansı için hazırlamış olduğumuz armayı görebilirsiniz.

Şekil 2 - NOPcon Arması

Kısaca bir giriş yaptıktan sonra ilk yarışmamıza ait çözümlere anlatmaya başlayalım.

İlk olarak Atmosfer şirketinin Facebook sayfası sizlerle paylaşıldı. Atılan postları inceleyip “Hasan Aydın” ismine ulaşmanız  ve bu ismi diğer sosyal ağlarda aramanız gerekiyordu.

Şekil 3 - Atmosfer Şirketine Ait Facebook Sayfası


Hasan Aydın’ın bir Atmosfer çalışanı olduğunu öğrendiğimiz için, ilk akla gelen Linkedin platformu olmalıydı. Daha sonra bu kişinin profilini incelediğinizde web sitesi alanında unutulmuş bir sunucunun IP adresini farketmeniz gerekiyordu. Buradaki önemli nokta; web sitesi bilgisi profili açtığınızda gözükmüyordu. Ya arkadaşlık isteği göndecektiniz ya da mobil olarak profil ziyareti gerçekleştirmeniz gerekiyordu.

Şekil 4- Hasan Aydın'a Ait Linkedin Hesabı

Hasan Aydın adlı kişinin varlığını unutmuş olduğu sunucuyu incelemeye aldığınızda index.php dosyasına yani giriş paneline ulaşmalıydınız. 

Şekil 5 - Varsayılan Sunucu Sayfası


Bu noktada Sqlmap aracının sıkça kullanıldığını gördük fakat esas girdi noktası çerezler kısmıydı.

Şekil 6 - Yönetici Paneli Giriş Ekranı


Şekil 7 - Yönetici Paneli Kaynak Kodu


Çerezleri incelediğinizde 2 tane oturum çerezi olduğunu farketmenizi bekledik. Biri sha1 ile hashlenmişti. İlk değeri Google arama motorundan arattığınızda bulabiliyordunuz. Diğer değeri de 1 yaptıktan sonra index.php dosyasını çağırdınızda sisteme oturum açıyordunuz. Bu görevde ajanlarımızın çoğu 2 çerezi aynı anda değiştirmedikleri ve index.php dosyası yerine login.php dosyasına istek yaptıkları için bu görevi tamamlamakta biraz zorlandılar.

Şekil 8 - Çerez Değerleri

Şekil 9 - Hash Değerleri

Oturum açtıktan sonra karşınıza bir iframe kodu gelecekti. Web sayfasının kaynak kodunu incelediğinize iframe kodunda UUencode edilmiş bir veri olduğunu farketmeliydiniz. Bu web içeriğinin kaynak kodunu incelediğinizde iframe kaynağının içeriğini decode etmeniz bekleniyordu. Veriyi çözümlediğiniz zaman içerisinden başka bir web sayfası çıkıyordu.

Şekil 10 - Iframe Alanı


Şekil 11 - Iframe Kaynak Kodu

atmos094509435admin.php dosyasına ilerlediğinizde diğer görevlerden farklı olarak eksta 2 tane görev bulunmaktaydı.

Şekil 12 - atmos094509435admin.php Kaynak Kodu

Birincisinde img html etiketinin kaynağında bulunan sifrele.jpg dosyası mevcuttu. sifreli.jpg dosyasını file komutuyla incelediğinizde aslında sıkıştırılmış bir dosya olduğunu farketmeniz bekleniyordu. Dosyanın uzantısını ".gz" olarak değiştirdikten sonra içeriğinde sifreli.enc adlı bir dosyaya ulaşacaktınız. Bu dosyayı incelediğinizde AES ile şifrelendiğini görecektiniz. Parolası için aynı ekranda bulunan anahtar değerini kullanarak bu dosyayı açabilirdiniz.

Şekil 13 - sifreli.enc Dosyasının Açık Halini Elde Etme 

Alternatif aşama ise mobil url yolu üzerindeydi. Dosyayı açıp incelediğimizde yazılımın kime ait olduğunu keşfetmeniz ve scriptin çalışma mantığını anlamanız beklenmekteydi. Bunu keşfettiğinizde kilit ekranının sadece rakamlarla açıldığını farkedecektiniz ki kilidi açan değeri 1-2 yani 12 olarak belirledik. Sadece bu bilgiyle bu görevi geçebilirdiniz.

(Not : İpucu olarak içinde 12 rakamı olan bir wordlist paylaşıldı.)

Bu sorunun başka bir çözüm yolu daha bulunmaktaydı. JavaScript kodlarını biraz daha incelediğinizde kodun bir parçanın XOR işleminden geçmiş olduğunu farketmeliydiniz. Yorum satırlarına baktığınızda XOR çıktı değerinin 8 karakter olduğunu ve bu sebeple girdinin de 8 karakter, yani "atmosfer" değeri olduğunu tahmin etmeliydiniz. Çıktı değerini girdi olarak kullanıp, "atmosfer" değeri ile XOR işlemine soktuğunuzda RC4’ün anahtarını elde edecek ve şifrelenmiş konuşmanın açık halini ele geçirmiş olacaktınız.


Şekil 14 - Mobil Aşaması

Şekil 15- JS Kodunun Bir Parçası

Şekil 16 - RC4 İle Şifrelenmiş Konuşma


Konuşmayı incelediğinizde ".lnk" uzantlı zararlı dosyayı indirmeniz ve inceleyip dosya yolu değerinde bulunan "bitsadmin" komutunun ulaştığı sunucuya ulaşmanız gerekiyordu.

Şekil 17 - Konuşmalar ve LNK Bağlantısı

Şekil 18 - Sunucu Adresi

Hedefi nmap ile tarattığınızda 1337 portunun açık olduğunu farkedecektiniz.

NOPcon Hatırası

Telnet ile bağlantı gerçekleştiğinde Haize-Belza (Atmosfer şirketinin yeraltı projesinin ismi) adlı haberleşme sistemine bağlanacaktınız.

Bu arada şunu da unutmadan geçmeyelim:

Bu konuda bir Bask sözü de vardı: Hegoak hegala ureandu. Yani, güney rüzgârının bir kanadı suyun içinde uçar.Güneybatı rüzgârının yağmuru yere dik düşerdi. Buyüzden toprak icin iyiydi. Ama o da hemen geçer, yerini Haize-belza'ya, kara rüzgâra bırakırdı. O zaman yağmurlar sanki enine yağar, şemsiyeleri anlamsız olurdu. Ve sonunda bir gece gökyüzünün rengi birden açılır, yüzeydeki rüzgâr kalakalır, alçak bulutlar kayıplarakarışırken üst düzeylerde aydınlık bulutlar tepeye birikmeyi sürdürürdü. (Shibumi alıntı)

Daha sonra telnet bağlantısı üzerinden belli karakterleri denemeniz gerekiyordu. Bazı karakterler belli süre sizi bekletmekteydi. Bu durumu farkedip karakterleri tek tek deneyerek geri dönüş zamanlarını tespit etmeniz ve bu geri dönüş değerlerini en azdan en çoğa doğru arttırmanız gerekiyordu.

Son olarak tespit ettiğiniz bu karakterleri yanyana dizip tekrar girdi olarak yolladığınızda Atmosfer şirketinin zararlı yazılım aktivitesini sonlandırmış oluyordunuz.

Şekil 17 - C Harfi İçin Bekleme Süresi

Şekil 18 - Kaynak Kodunun Bir Parçası

Mutlu son! Ajanlarımız 2 gün boyunca mükemmel bir yarışma çıkardı ve Atmosfer firması yine amacına ulaşamadı.

Bonus Track :



Ve biraz teşekkür:


NOPcon Ödül töreni 

Superbug ekibine, değerli sponsorlara, yarışma katılımcılarına heyecanlı ve eğlenceli bu yarışma için teşekkür ederim. CTF yarışmalarının insanların kendilerini denemeleri, farklı bakış açıları kazanmaları, yarışma sonrasında da çözümlerle meraklılarına bilgi katabilmesi açısından önemli olduğunu düşünüyorum. Atmosfer de bunun güzel bir uygulamasıydı ve Nopcon'a daha fazla ilgi çekilmesi için iyi bir adım oldu.

Bilgi birikimini arttırmak, bilginin paylaşılabileceği, bu konuda çalışan insanların tanışabileceği, kar amacı olmayan Nopcon gibi etkinliklerin desteklenmesi gerekiyor. Ülkemizde çokça yapılan güvenlik konferanslarının birçoğu malesef ürün tanıtımından ileri gidemiyor, konu güvenlikten kayıp memlekete en çok yabancı ürünü ithal etmiş satıcının "başarısı"'nın ödüllendirilmesi ile son buluyor. Bunların aksine Nopcon, güvenliğin mutfağındaki insanlar için aradıklarını bulabilecekleri bir topluluk konferansı olarak göz dolduruyor.

Jason Bourne(Atmosfer IO birincisi)

Ayrıca bu yarışma için yoğun emek harcayan Melih Zeytun ve Ali Burak Alper’e çok teşekkür ediyoruz.

EOF