Advergame Güvenliği Yunus ÇADIRCI
Ajanda Hakkında Advergame Nedir? Neden Advergame Güvenliği? Kullanılan Teknolojiler Manipülasyon Yöntemleri Hardening Peki Bu Bilgi Gerçek Hayatta Ne Đşime Yarayacak? Ülkemizden Örnekler Soru Cevap
Hakkında Haberleşme Mühendisi/2004 4 Yıldır Telekomünikasyon Sektöründe Developer Kökenli Series 60, Web Tabanlı, Masaüstü SIP, RTP, HTTP Kötü Kod Nasıl Yazılır Güvenli Yazılım Geliştirme Yaşam Döngüsü www.yunuscadirci.com
Advergame Nedir? Advergame = Advertisement + Game (Advergaming = Advertising + Gaming) Oyunların interaktiviteözelliği kullanılarak yapılan reklamlardır. Kullanıcı, ürün veya hizmeti aktif olarak oyunda kullanır. Sonucunda ödül dağıtımı gerçekleşebilir.
Neden Advergame Güvenliği? Hediyeler saldırganlar için motivasyon sağlıyor Oyunların %90 ı çok kolay kırılabilir Deloitte Hollanda/2008 Çok fazla kişisel bilgi mevcut PII Olaylar saldırganın ortamında/kontrolünde gerçekleşiyor Bilişim Hukuku dışında* Geliştiriciler tasarım kökenli
Kullanılan Teknolojiler Hedef olabildiğince çok kullanıcı Bundan dolayı genelde browser tabanlı, standartlaşmış teknolojiler kullanılıyor Adobe Flash HTML + Javascript Java Applet ios tabanlı Advergame ler yükselişte 5. Sonuç Değerlendirilir 2. Oyun İşlenir 1. Oyun Dosyası Oyuncuya Gönderilir HTTP Oyuncu 3. Oyun Oynanır 4. Oyun Sonucu Sunucuya Gönderilir HTTP
Manipülasyon Yöntemleri Amaç Advergamesunucusuna istenilen veriyi göndermek. Bu amaçla çeşitli yöntemler kullanılabilir Tampering Gönderilen veriyi on-the-fly değiştirmek Decompiling Hash Algoritması, Salt, Secret Key Erişimi Game Engine Erişimi Memory Editing Hafızadaki değerleri değiştirmek Bytecode u değiştirip game engine e mudahele etmek DOM Manipülasyonu HTML tabanlı oyunlara müdahele Zaman Manipülasyonu
Tampering Açık giden veriyi değiştirmek Basit HTTP Proxy veya Firefox eklentileri yeterli Fiddler HTTPAnalyzer Tamper Data
Decompiling Flash, Silverlightve Java gibi teknolojiler ile geliştirilen uygulamalar bytecode dan kaynak koda dönüştürülebilir Bu kod içerisinde gizli kalması gereken bilgilere erişmek mümkün www.showmycode.com private function Init() : void { var _loc_1:string = "I7Qe7XhwXdSCSXk9kSrGtUGEHFY6S2hBTVi/16E2rGQ I7Qe7XhwXdSCSXk9kSrGtUGEHFY6S2hBTVi/16E2rGQ="; keybytes = new ByteArray(); keybytes.writemultibyte(_loc_1, "utf-8"); hmac = Crypto.getHMAC("sha256"); return; }// end function
Decompiling Flash, Java standartlar açık Opcode bilgileri mevcut Memoryeditingile beraber kullanıldığında saldırgana tam kontrol sağlıyor
Memory Editing MemoryEditorprogramları ile hafızadaki değişkenlere direk erişim Cheat Engine sıkça kullanılıyor
Memory Editing Hafızaya yüklenen uygulamanın bytecode ları değiştirilebilir. Oyun yapısına müdahele edilebilir Manipülasyon tespiti oldukça zor //240a _as3_pushbyte 10 //68 81 08 _as3_initproperty bonus //60 bf 06 _as3_getlex_apple 24 0a68 81 01 60 bf06 _apple.bonus=10 24 6468 81 01 60 bf06 _apple.bonus=100 //5d 8204 _as3_findpropstrict stop //4f 82 04 00 _as3_callpropvoid stop(param count:0) 5d 82 04 4f 82 04 00 stop() 09 09 09 09 09 09 09 nop[hiçbirşey yapma]
DOM Manipülasyonu HTML tabanlı oyunlara uygulanıyor Bilgi yarışması tarzı oyunlarda kullanılabiliyor Greasemonkeyya da WebBrowsernesnesine sahip uygulamalar ile yapılabilir
Zaman Manipülasyonu Programın hız çarpanı değiştirilebiliyor Böylelikle uygulamanın daha yavaş veya daha hızlı çalıştırılması mümkün Tespiti kolay Cheat Engine Kullanılıyor
Hardening - Flash Flash tabanlı oyunlar obfuscate edilmelidir "Bir üvnseritnede ypalaın arşaıtramya gröe, kleimleirn hrfalreiinn hnagi srıdaa yzalıdkılraı ömneli dğeliimş. Öenlmi oaln brincii ve snonucnu hrfain yrenide omlsaımyış. Ardakai hfraliren srısaı krıaışk oslada ouknyuorumş. Çnükü kleimlrei hraf hraf dğeil bri btüün oalark oykuorumuşz.
Hardening - Flash Sunucuya gönderilen tüm veriler şifreli olmalıdır Key iyi saklanmalıdır Mümkün olduğu kadar plaintextveri aktarımından kaçınılmalı, mümkünse AMF kullanılmalıdır. Action Message Format Serialize ActionScript Objects Binarytemelli olduğu için plaintextveriler üzerinde yapılan tamperinge karşı koruma sağlar Securityby obscurity
Hardening - Flash Oyuncunun her hareketi, önemli nesnelerin durumu timestamp ile loglanmalıdır.,1,- 1,ig,1,299996,sg,1,298978,pb,1,295470,db,1,293731,sb,1,291317,pb,1,287568,db,1,286450,sb,1,284196,c s,1,282678,pb,1,279621,db,1,278516,sb,1,276272,cs,1,274722,pb,1,272091,db,1,270767,sb,1,267765,pb,1,264339,db,1,263205,sb,1,261657,ms,1,259952,pb,1,257808,db,1,256426,sb,1,254193,pb,1,251404,db,1,2 50071,sb,1,247845,cs,1,246349,pb,1,244129,db,1,243043,sb,1,241387,ms,1,239785,pb,1,237407,db,1,236 112,sb,1,233305,pb,1,230758,db,1,229493,sb,1,226739,pb,1,224551,db,1,223515,sb,1,221454,ms,1,2202 38,cs,1,218726,pb,1,216485,db,1,215248,sb,1,213106,cs,1,211564,pb,1,207015,db,1,205853,sb,1,203657, cs,1,202130,pg,1,202109,le,2,- 1,ig,2,300000,sg,2,298977,pb,2,294321,db,2,293436,sb,2,291662,ms,2,290103,pb,2,288034,db,2,286979,s b,2,284781,cs,2,283281,pb,2,280386,db,2,279373,sb,2,277790,ms,2,276861,ws,2,275826,pb,2,270580,db, 2,269580,sb,2,267791,ms,2,266238,pb,2,264204,db,2,263100,sb,2,260894,cs,2,259361,pb,2,256234,db,2, 254940,sb,2,253213,ms,2,252435,ws,2,251446,pb,2,245738,db,2,244683,sb,2,242991,ms,2,241340,pb,2,2 39418,db,2,238329,sb,2,236117,cs,2,234619,pb,2,232100,db,2,230962,sb,2,229101,ms,2,228987,ms,2,22 7429,pb,2,224350,db,2,223134,sb,2,220978,cs,2,219450,pb,2,216492,db,2,215088,sb,2,212957,pb,2,2102 35,db,2,208963,sb,2,206724,cs,2,205195,pb,2,203293,db,2,201958,sb,2,199775,cs,2,198250,pg,2,198234, le,3,- 1,ig,3,300000,sg,3,298995,pb,3,295628,db,3,294236,sb,3,291966,cs,3,290434,pb,3,288095,db,3,286804,s b,3,284631,cs,3,283109,pb,3,280925,db,3,279679,sb,3,277498,cs,3,275979,pb,3,274102,db,3,273137,sb,3,271475,ms,3,269831,pb,3,268497,db,3,267391,sb,3,265701,ms,3,265420,ms,3,264130,pb,3,261924,db,3, 260791,sb,3,259203,ms,3,258914,ms,3,257517,pb,3,252881,db,3,251647,sb,3,248637,pb,3,247169,db,3,2 46120,sb,3,243932,cs,3,242415,pb,3,239954,db,3,238839,sb,3,236742,ms,3,235247,pb,3,233781,db,3,232 539,sb,3,230809,ms,3,229173,pb,3,227124,db,3,225831,sb,3,223589,pb,3,221812,db,3,219838,sb,3,2178 28,pb,3,215328,db,3,214344,sb,3,212172,cs,3,210672,pb,3,208100,db,3,206926,sb,3,204624,cs,3,203131, pg,3,203108,le
Hardening - Flash Oyun PC leri takip edilmelidir IP Bloğu Cookie Local Shared Objects(Flash cookie) Google Analytics Ripe Proxy IP leri engellenebilir Karaliste Kullanım Şartları Bir oyunda manipülasyon yapan diğer oyunda da yapabilir
Hardening - Flash Zaman manipülasyonuna karşın çift sayaç kullanılabilir. Bir sayaç programa göre, diğeri sistem saatine göre çalıştırılıp sonuç karşılaştırılır. var PeriyodikKontrolTimer:Timer=new Timer(1000);// 1 second PeriyodikKontrolTimer.addEventListener(TimerEvent.TIMER, PeriyodikKontrol); var _startdate:date; var _time:uint = 0; function starttimer() : void { this.stoptimer(); this._startdate = new Date(); this._time = 0; this._timer = new Timer(1000, 9999); this._timer.addeventlistener(timerevent.timer, this.ontimer, false, 0, true); this._timer.start(); return; }// end function function stoptimer() : void { if (!this._timer) { return; }// end if this._timer.removeeventlistener(timerevent.timer, this.ontimer, false); this._timer.stop(); this._timer = null; return; }// end function function ontimer(param1:timerevent) : void { var _loc_2:* = new Date(); this._time = Math.round((_loc_2.getTime() - this._startdate.gettime()) / 1000); txtsystemtimer.text=string(this._time); return; }// end function } function Basla(event:MouseEvent):void { starttimer(); PeriyodikKontrolTimer.start(); return;
Hardening - Flash Oyun için kritik objeler korunmalıdır Score Time Uygulamanın farklı katmanlarında bütünsellik kontrolü yapılmalıdır Main loop içerisinde skorun farklı bir kopyası tutulabilir
Hardening Bilgi Yarışmaları Soru havuzu geniş olmalıdır Soru şıkları yer değiştirmelidir Günlük oyun limiti getirilmelidir. Bot Kontrolü yapılmalıdır CAPTCHA HTML DOM yapısı bozulabilir Soru ve cevaplar hep aynı DOM Element te gelmemelidir
Peki Bu Bilgi Gerçek Hayatta Ne İşime Yarayacak? Win32 ve Java Tabanlı Uygulamaların Güvenliğinde Hardening PenTest Multimedia Uygulamalarda Web Tabanlı Uygulamalarda Reverse Engineering Çalışmalarında
Ülkemizden Örnekler
Ülkemizden Örnekler Browser
Teşekkürler Yunus ÇADIRCI www.yunuscadirci.com yunuscadirci@yunuscadirci.com