Hackerlar’ın Gözünden Flash Uygulamaları

Ah o Netsec etkinliğinde bende olsaydım deyipte katılamayanlar için yapmış olduğum sunumu kısaca yazıya dökmeye karar verdim.

Ön bilgi olarak Flash kısaca web sayfalarına animasyon, video ve etkileşim eklemek amacıyla kullanılan ve Actionscript adında nesne yönelimli (object oriented) programlama dili içeren bir multimedya platformudur. Flash uygulamalarına çoğunlukla reklamlarda ve oyunlarda rastlarız. Flash dosyaları çoğunlukla SWF (ShockWave Flash) formatında olur ve aslında bir sanal makine olan Flash oynatıcısı tarafından çalıştırılır. Flash oynatıcısının bir sanal makine olması sayesinde SWF formatındaki bu dosyalar her platformda çalıştırılabilir. Durum böyle olunca Java’da da olduğu gibi SWF formatındaki bir dosya kolaylıkla baytkoddan (bytecode) kaynak koduna çevrilebilir (decompile). Actionscript, ilk olarak animasyonları kontrol etmek için tasarlanmıştır fakat geliştirilen yeni sürümleri ile web tabanlı oyunlardan görüntü ve ses yayını yapmaya imkan tanıyan zengin internet uygulamaları geliştirilebilmesine imkan tanımaktadır ve Javascript ile aynı kodlama imlasına (syntax) sahiptir. Actionscript’in 2. sürümü, Flash oynatıcı 8 ve öncesi sürümlerde, 3. sürümü ise 9 ve sonrası sürümlerde çalışmaktadır.


Aralık 2010 yılında Millward Brown tarafından gerçekleştirilen ankete göre Adobe Flash oynatıcısı, internet erişimi olan bilgisayarların %99’unda yüklüymüş. Anket bir yana zaten gün içinde gezdiğimiz sitelerin içeriğine biraz daha dikkat edecek olursak çoğunda Flash ile geliştirilmiş bir kısım olduğunu görebiliriz. Web uygulama güvenliğinde çoğunlukla Flash uygulama güvenliği göz ardı edilmekte ve art niyetli kişilerin hedefi haline gelebilmektedir.

Örnek olarak Flash ile geliştirilmiş oyunları ele alarak art niyetli kişilerin çoğunlukla yoğunlaştığı noktalara kısa göz atalım;

  • Flash oynatıcı ile sunucu arasında gerçekleşen trafiğin manipüle edilmesi: Özellikle Flash ile geliştirilmiş olan oyunlarda istemci tarafına güvenilerek kontrollerin istemci tarafında gerçekleştirilmesi sağlanmakta ve istemci tarafında işlenen veri sorgusuz sualsiz sunucu tarafında işleme alınmaktadır. Durum böyle oluncada ödüllü oyunlarda ve yarışmalarda bu durumu istismar eden hileciler ortaya çıkmakta ve haksız kazanç sağlamaktadırlar. Örnek olarak aşağıdaki ekran görüntüsünde yer alan oyunu inceleyecek olursanız sunucudan istemci tarafına sorulara ilave olarak yanıtların da gönderildiğini görebilirsiniz. Bu trafiği görebilmek ve gerekirse manipüle edebilmek için yapmanız gereken Burp, Paros ve benzer proxy araçları ile internet tarayıcısı ile sunucusu arasına girmektir.

Flash Zafiyetleri
Flash Zafiyetleri
Flash Zafiyetleri

  • Kaynak koduna çevirme: Az öncede bahsettiğim gibi baytkod olmasından ötürü Flash uygulamalarını kaynak koduna 3. parti bir araç ile çevirmek oldukça kolaydır bu nedenle uygulama içine statik kullanıcı adı ve şifre koymak doğru bir yaklaşım olmaz.  Aşağıdaki ekran görüntüsü bu hatayı gözler önüne seren güzel bir örnek olabilir.

Flash Zafiyetleri
Flash Zafiyetleri
Flash Zafiyetleri

  • Hafızaya müdahale etme: Diğer tüm uygulamalarda olduğu gibi Flash uygulamaları tarafından kullanılan verilerin bir kısmıda hafızada saklanmaktadır.  Hafızaya müdahale ederek uygulamanın akışını değiştirmek, sahip olmadığınız bir yetkiye sahip olabilmek mümkün olabilir. Özellikle oyunlarda hafızaya müdahale ederek gücünüzü yükseltmek veya sanal paranızı arttırmak haksız kazanca yol açabilir. Aşağıdaki ekran görüntüsünde bu amaçla kullanılan Cheat Engine aracı ile bir Poker oyununda sahip olunan paranın nasıl yükseltilebildiğini görebilirsiniz. Bunun için yapmanız gereken o an sahip olduğunuz paranın karşılığını hafızada bulmak ve istediğiniz değer ile değiştirmektir.

Flash Zafiyetleri
Flash Zafiyetleri
Flash Zafiyetleri
Flash Zafiyetleri

  • Tersine çevirme(disassembling): Flash uygulamasına ait SWF dosyasını analiz etmek için kaynak koduna çeviremediğimiz durumlarda baytkodu okunabilir hale çevirebilir ve analizimizi gerçekleştirebiliriz. Analizle yetinmeyerek baytkoda müdahale edebilir ve SWF dosyasını yamayabiliriz. Kaynak koduna çevirdiğimiz ancak tekrar derleyemediğimiz durumlarda da bu yola başvurabiliriz. Bu iki durumda da hem tersine çevirme hem de yamama için RABCDasm aracından faydalanabilirsiniz. Örnek olarak bir oyun düşünün, kaynak koduna çevirmek mümkün ve analiz neticesinde yönetim paneli SWF dosyasının içinde yer alıyor ancak uygulamayı derleyenler tarafından bu yönetim paneline ulaşmak mümkün değil çünkü bu actionscriptte yer alan ve bu panel ile ilgili olan fonksiyon oyunun yüklenmesi esnasında görünür değil. Ancak bu dosyayı tersine çevirerek (disassembling) müdahale edebilirseniz (patching) bu panelin yüklenme esnasında görünür hale gelmesini sağlayabilir ve yönetici paneline erişebilirsiniz. İşte tam olarak bu durumu konu alan bir zafiyeti geçtiğimiz aylarda kaşfederek oyunu geliştiren firma ile paylaştım ve düzeltilmesini sağladım. (Firma çalışanlarının samimi ve profesyönelce yaklaşımından dolayı kendilerini tebrik etmeden geçmeyeceğim. Farkındalığın arttırılması adına firma adını gizleyerek videoyu yayınlamamı sağladıkları içinde kendilerine ayrıca teşekkür etmek isterim.

  • Zafiyet tarama araçları: Actionscript programlama dilide güvenli bir şekilde kullanılmadığı taktirde XSS, XSRF gibi zafiyetlere yol açabilmektedir. Özellikle URL kabul eden, işleyen fonksiyonlarda ve HTML kullanılan parametrelerde bu zafiyetlere sıkça rastlayabiliriz. Örnek olarak Flash ile hazırlanmış olan reklamlarda kullanılan clickTAG değişkeni güvenli kullanılmadığı taktirde XSS zafiyetine yol açabilmektedir.  Bu ve benzer sorunları tespit etmek için Actionscript kodunu detaylı olarak analiz etmek gerekir ancak bu zaman alıcı bir iş ve çoğu kimse için uzmanlık gerektirebildiği için bunu gerçekleştiren programlardan faydalanabiliriz. HP SWFScan bu amaçla geliştirilmiş, hedef SWF dosyasını tersine çevirerek analiz eden ve 60’dan fazla güvenlik zafiyetini tespit edebilen ve raporlayabilen faydalı bir araçtır. Aşağıdaki ekran görüntüsüne bakacak olursanız rastgele olarak seçilmiş örnek bir sitedeki SWF dosyasında yer alan XSS (cross-site scripting) güvenlik zafiyetini başarıyla tespit edebildiğini görebilirsiniz. (SWFScan Actionscript 2 ve 3 sürümlerini desteklemektedir. 2 sürümü için ayrıca SWFIntruder aracınıda kullanabilirsiniz.) Bu tür araçlar kimi zaman güvenlik zafiyetlerini tespit edemeyebilirler bu nedenle her ihtimale karşı actionscripti analiz etmekte yarar olduğunu söyleyebilirim.

Flash Zafiyetleri
Flash Zafiyetleri
Flash Zafiyetleri
Flash Zafiyetleri

Art niyetli kişilerin Flash uygulamalarınızı istismar etmesini zorlaştırmak için mutlaka action scriptinizi gizlemeli (obfuscation), Adobe tarafından güvenli uygulama geliştirme önerilerini dikkate almalı, hafızaya müdahale için saklanan değerleri kullanım sonrasında hemen değiştirmeli ve trafiğe müdahaleyi zorlaştırma adına sunucu ile uygulama arasındaki değerleri hashlemenizi tavsiye ederim.

Bir sonraki yazıda görüşmek dileğiyle…

Sunum dosyası: Powerpoint sürümü

image_pdfShow this post in PDF formatimage_printPrint this page
21 comments
  1. Merhabalar, Mert bey.

    Bir dosyada yardımınıza çok ihtiyacım var. Açıklayıcı yazınızdan ötürü size danışmak ve teknik yardım almak isterim. Ücret dâhi isteseniz karşılıksız bırakmam.

    .swf dosyasında bulunan actionscriptleri çözemiyorum çözsemde istediğim bazı kodlara ulaşamıyorum. Server kısmı python ile yazılmış bir client.

    Client üzerinde değişiklikler yapmam gerekiyor fakat Flash Decompiler gibi pprogramlarda grafiklere veya metinlerin hepsine ulaşamıyorum. Bunlar nerede barınıyor anlam veremedim.

    Mail adresime dönüş yaparsanız sevinirim.

    [email protected]

    Sevgiler

  2. Merhaba flash programlamaya yeni merak sardım ve araştırıyorum avantajları dezavantajları nedir diye, sizin **net okeyi hacklediğinizi gördüm ve kafamda soru işaretleri oluştu flash bi oyun yazmış olsak nasıl güvenlik önlemi alabiliriz, sonuç olarak oyun kodları istemci tarafında çalışmakta server tarafında nasıl bi doğrulama yapmak gerekir.

  3. o bu değilda sen bi Darkorbite bakarmısın buna nasıl bir müdahalede bulunuruz bu oyuna cheat engine ilede müdahele edilmiyor sadece oyun hızlandırılıyordu ama sadece kendi ekranında ama gerçekte sen eski yerindesin :D bu aralar çalıştırınca c.e. oyunda çöküyor hangi programla müdahele edilinir. ?

  4. Slm Emre,
    Oynadığım bir oyun var ban yedim ve sanırım banı kaldırmak imkansız gibi bişey. Banlanan hesaplara bi çözüm önerebilirmisin acaba.
    Tşkler.

  5. guzel anlatmıssın da keske daha detaylı anlatsaymıssın :(

    peki sizden bir ricam olacak mail atar msıınız bana? Bir konu hakkında yardım almak istiyorum

  6. Php gibi düşünelim, örnek verdiğiniz poker uygulamasından bahsedecek olursak sayfa kaynağındaki 3000 para değerini değiştirdiğimiz zaman ve sayfayı yenilediğimiz zaman hafıza değerine tekrar döner sizin yani sonuç olarak ekrana değil hafızayı yönetmek gerekiyor net birşey söylememişsiniz fakat değiştirdiğiniz para birimi uygulamada başka değişikliğe sebep oldumu?

    1. PHP gibi düşünürsek doğru olmaz çünkü flash uygulamaları istemci tarafında (client-side) çalıştığı için çoğu zaman tüm hesaplamalar (kart oyunu veya bir bulmacayı düşünün) burada yapılmakta ve sunucuya gönderildiğinde doğrulanmamaktadır bu durum da hafızaya müdahale ederek oyunlarda veya uygulamalarda hile yapmaya/yetkisiz erişime imkan tanımaktadır. Para birimini değiştirdikten sonra etik olmayacağı için devamını getirmedim ancak Youtube’da cheat engine diye aratacak olursanız çok sayıda flash ile hazırlanmış oyunda (poker oyunları da dahil) nasıl puan yükseltilebildiğini görebilirsiniz.

    1. O halde Flash uygulaması geliştirenlerin/geliştireceklerin incelemesini tavsiye edelim, Flash maceram bu yazı ile şimdilik son bulur :)

  7. Acaba benzer teknikler Silverlight uygulamları için de geçerli midir? Zira ben Sillverlight uygulamalarında swf gibi derlenmiş bir kod hiç göremedim.Onun yerine safi JavaScript kodu bulunmakta.

Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

e-Devlet Hacklendi mi?

If you are looking for an English version of this article, please visit here. Öncelikle yazının sonunda söyleyeceğimi başta söyleyeyim, “Hayır, hack-len-me-di!” Peki bu durumda vatandaş olarak rahat bir nefes alabilir misiniz ? Maalesef hayır. Bunun sebebini de yazının devamında okuyabilirsiniz. Zaman zaman hortlayan “e-Devlet Hacklendi!”, “e-Devlet verileri çalındı!”, “85…
Read More
Read More

LinkedIn Dolandırıcıları

If you are looking for an English version of this article, please visit here. Uzun yıllardan beri sosyal ağları ve medyayı etkin kullanan bir siber güvenlik araştırmacısı olarak bağlantılarım arasında yer alanlarınız özellikle hafta içi LinkedIn ve Twitter üzerinden okuduğum ve beğendiğim siber güvenlik makalelerini, haberleri paylaştıklarımı farkediyorlardır. Twitter hesabımın…
Read More
Read More

WhatsApp Dolandırıcıları

If you are looking for an English version of this article, please visit here. Başlangıç Son günlerde hemen hemen WhatsApp uygulaması kullanan herkesi rahatsız eden yabancı cep telefonu numaralarından gelen çağrılardan, mesajlardan ben de yakın zamanda nasibimi aldım ve tabii ki diğer dolandırıcılıklarla ilgili yazılarımda (Kripto Para Dolandırıcıları, LinkedIn Dolandırıcıları,…
Read More
Read More

Profilime Kim Baktı?

If you are looking for an English version of this article, please visit here. 23 Eylül 2020 tarihinde Twitter’da siber güvenlik ile ilgili haberlere göz gezdirirken gündem olan başlıklarda #profilimekimbaktı etiketi dikkatimi çekti. Beni oldukça şüphelendiren bu etiketin gündem olmasının arkasında yatan sebebi bulmak için bu etiketi paylaşan hesaplara göz…
Read More