Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Mesaj gönderen G.Arkas »

Merhaba;

Bu konu birçok defa forumda gündeme gelmiş, çeşitli tezler ortaya atılmış ve formumuzun deneyimli üstatları gerekli açıklamaları yapmışlardı. Ancak benim aklıma bir fikir geldi. Gerçi bu bahsedeceğim şey zaten bilinen bir şey ancak biraz daha modifiye edilmiş hali gibi düşünebiliriz.

Single Sign On Nedir?

http://cisn.metu.edu.tr/sso.php

Kısaca açıklamak gerekirse Web Servisler aracılığı ile yetkilendirme yapabilmemize olanak tanıyan, aynı zamanda facebook'un uzun zamandır kullandığı (Hatta diğer sosyal medya uygulamalarının da) bir teknoloji olan SSO tek bir kullanıcı ile bir çok yere erişmemizi sağlayan oldukça basit mantıklı bir teknoloji.

Şimdi aslında bu teknolojinin en güzel yanı her tip uygulama ile (Mobil, Web, Desktop vs.) entegre olunabilmesi. Geçenlerde şirketimizin tüm uygulamalarını buna geçirdik. Her uygulama için ayrı User tablosu tutmak ya da sürekli db ye ulaşmak yerine web servis ile bu işi çözüp, tek bir login sayfası aracılığıyla bütün uygulamalarımıza erişebilmekteyiz.

Şimdi bunu bizim uygulamaya nasıl entegre edebiliriz?

Uygulamamız ilk açıldığında bizim önceden hazırladığımız ve içerisinde kullanıcılarımızı tuttuğumuz tablomuzun da olduğu bir web sayfasına gitse, oradan sanki web sayfasına login oluyormuş gibi daha önceden bizim ona temin ettiğimiz kullanıcı adı ve parolayı girse, doğrulma işlemi gerçekleştikten sonra servisimiz aracılığı ile dinamik bir key döndürsek (Oturum açma Başarılı yada Değil) ve buna göre uygulamamız açılsa nasıl olur?

Şimdi kafanızdaki soru işaretlerini görebiliyorum bu yüzden hemen riskleri sıralayalım!

- Crackçi amca uygulama açılışında açılan ekranı by-pass edebilir mi? Elbette edebilir!
- Hadi edemedi diyelim. Fake bir server yazıp, uygulamayı bu servere yönlendirip (desktop app bile olabilir) gelen giden veriyi sniff edip ona göre bir değer döndürebilir mi? Bu da olabilir!


En tehlikeli ihtimal bu iki ihtimal olduğu için bunların üzerinden gideceğim.

Uygulamadaki tüm modüller o key’e göre şifrelenecek. Eğer o şifre gelmezse ya da farklı bir şifre gelirse doğal olarak çalışmayacak. (C# Attribute mantığı)Bu key’i oluşturan ana unsur müşterinizin kimlik bilgilerinden üretilen bir key olmalı. Satın alınırken verilen bilgiler ışığında yazdığımız uygulamamız bu keyi üretecek. Mesela adı, soyadı, tc nosu ve cep telefonu bilgilerinin karışımından (algoritma ile şifrelenmiş olarak tabii ki) olabilir. Üretilen key müşteri tablomuz da saklanacak.

İki aşamalı doğrulama;

Müşteriden ilk kurulumda kayıt esnasında size verdiği bu bilgileri girmesini isteyeceğiz. (Henüz doğrulama gerçekleşmedi. Bu bilgiler zaten elimizde var satın alırken vermişti müşteri. Ve bizde bu bilgilerden bir key oluşturmuştuk.) Bu aşamadan sonra müşterimize web sayfamızı açıp daha önceden kendisine verdiğimiz kullanıcı adı ve şifresini girmesini isteyeceğiz. Müşterimiz bu bilgileri girdikten sonra uygulamamıza tabloda oluşturduğumuz keyimizi döndüreceğiz. (Hala doğrulama gerçekleşmedi) Uygulamamız bu keyi alıp, henüz uygulama açılmadan önceki girilen bilgiler ile içerisinde yazdığımız aynı algoritmayı çalıştırarak bir key daha üretecek. Ve son olarak dönen key ve oluşturulan key karşılaştırılıp doğrulama gerçekleştirilecek.

Crackçinin bu uygulamayı aşması için önce kullanıcı bilgilerinin istendiği ekranı by-pass edip, sonra teker teker tüm modülleri bu keyden temizlemesi gerekecek. Daha sonra da web doğrulamasını geçmesi gerekecek. Yapılabilir mi yapılır ama uğraşılır mı orasını bilmem işte.

Hatta isterseniz uygulamayı bir downloader olarak yazıp, bu aşamaları geçtikten sonra indirilmesine izin verebilirsiniz bu daha acımasız olur. Çünkü crackleyecek bir şey kalmaz ortada. Bu sefer dönen sonuca göre “Uygulamayı Başlat” butonu çıkarıp indirtip doğrudan çalıştırtabilirsiniz.

Fake server olayı içinde ssl kullanmanız yeterli. Ssl bağlantısı olmayan servera bağlandırmazsanız uygulama başka bir server’a bağlanmayacaktır.
Bu bir nebzede olsa içimizi rahatlatabilir diye düşünüyorum.

İyi çalışmalar.
Resim
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Mesaj gönderen SimaWB »

Paylaşım için teşekkürler. Emeğinize sağlık...
There's no place like 127.0.0.1
mehmetantalya
Üye
Mesajlar: 189
Kayıt: 30 Eyl 2013 10:17

Re: Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Mesaj gönderen mehmetantalya »

teşekkürler.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Mesaj gönderen mkysoft »

Key kontrol etmek için kullandığınız kodlar manupule edilebilir. "... algoritmayı çalıştırarak bir key daha üretecek ..." üretilen her veri RAM'de tutulduğu için kolayca erişilebbilir/yakalanabilir. Bu tür key kontrollerinde kesinlikle key'i üretip girilenle karşılaştırmayın. Girilen key üzerinden parça parça doğrulama yapacak bir sistemi geçmek daha zor olacaktır.

Kırılan uygulamalar genellikle üreticinin sitesinden sağlanmaz. Mevcut kurulu uygualamardan yola çıkılır. Çünkü akış karşılaştırması daha kolaydır. Uygulamanın lisanslı makinadaki kod akışı ile lisansız makinadıki kod akışı kolayca karşılaştırılır. Hangi noktaradan saptığı çok kolay tespit edilir.
Kullanıcı avatarı
yakupbaser
Üye
Mesajlar: 11
Kayıt: 29 Haz 2013 01:07

Re: Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Mesaj gönderen yakupbaser »

bir zamanlar az buçuk cracking ile ilgilenmiş biri olarak şunu söyleyebilirim. Evet yazılımda bir koruma olmalı. Ama bu korumaya çok da enerji harcamaya değmez. Her türlü kırılır. Projeyi büyütüp uzun vadede yasal olarak koruma yollarına başvurmak bence daha makul daha mantıklı.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2130
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Mesaj gönderen sadettinpolat »

Uygulamanın biri soyle yapmis

1- Setup sirasinda sizden sisteme kayitli oldugunuz kimlik numarasini istiyor.
2- kimlik numarasini gonderince sistemde kayitli mail adresinize kuruluma devam etmek icin gerekli olan sifreyi gonderiyor.
3- Kurulumdan sonra programa girerken kullanici adi olarak sizden yine kimlik numarasini istiyor ve bu kimlik numarasi ile web servise gidip ordan gerekli bilgileri alarak program calisiyor.

servisten gelen bilgiler dogru degilse program zaten hata verip kapaniyor , duzgun calismiyor. servisi by pass etseniz bile servisten gelen bilgileri bilemediginiz icin programi calistirmak oldukca zor
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Mesaj gönderen G.Arkas »

sadettinpolat yazdı:Uygulamanın biri soyle yapmis

1- Setup sirasinda sizden sisteme kayitli oldugunuz kimlik numarasini istiyor.
2- kimlik numarasini gonderince sistemde kayitli mail adresinize kuruluma devam etmek icin gerekli olan sifreyi gonderiyor.
3- Kurulumdan sonra programa girerken kullanici adi olarak sizden yine kimlik numarasini istiyor ve bu kimlik numarasi ile web servise gidip ordan gerekli bilgileri alarak program calisiyor.

servisten gelen bilgiler dogru degilse program zaten hata verip kapaniyor , duzgun calismiyor. servisi by pass etseniz bile servisten gelen bilgileri bilemediginiz icin programi calistirmak oldukca zor
Hocam ben Crew'de bunu yaptım. En azından kontrolü bu şekilde daha çok bizim tarafta tutabiliriz diye düşünüyorum.
Resim
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: Uygulamamızın Kırılmasını Geciktirmek(!) İçin Bir Fikrim Var!

Mesaj gönderen Lost Soul »

Şimdiye kadar forumda önerilen en etkili (gördüğüm) çözüm serial-login neyse onu aldıktan hemen sonra karşılaştırma yapıp kapanmaması random bir zamanda kapanması idi böylelikle şifrenin nerede compare edildiği (çok daha zor bulunacak) bulunamayacak :)
Cevapla