Bu sitede bulunan bütün bilgi ve araçlar SADECE eğitim amaçlıdır, ne niyetle kullandığınız sizi bağlar ve sizin sorumluluğunuzdadır! [Demedi deme]

Hacker'ın Olmazsa Olmazı - Assembly #3 Bremen Mızıkçıları

Tarih 06 Nisan 2013. KATEGORI Bilisim

Serimize crack konusuyla devam ediyoruz.Bundan önceki yazıları okumadıysanız, Seriler Listesine göz atmanızı ve anlatılan konulara vakıf olduğunuzu teyit etmenizi tavsiye ederim.Kes traşı işimize bakalım diyorsanız,kimmiş bu Bremen Mızıkçıları anlatalım.Konu başlıklarımız:

Günlerce,aylarca uğraştınız, yanınızda elemanlar çalıştırdınız,maaşı sigortası derken ufaktan bir servet harcadınız, "hele bir bitirelim programı,güzel paralar kazanacağız inşAllah" hayaliyle.Programınız hazırdı artık,sağda solda gezmeye başladı. Çakal karlosun birinin eline geçti program ve yükledi bilgisayarına. Çalışması için kurulum gerekiyordu...

Çakal Karlos

ka@ka-vm ~/c $ ./kurulum
4 haneli pin numarasi girmediniz!
'./kurulum pin' seklinde giriniz
ka@ka-vm ~/c $ ./kurulum 1111
Yanlis PIN!

PIN numarası lazımdı ona,pis pis sırıtmaya başladı.Çünkü zat-ı alileri emeğe saygı duymaz,kul hakkı nedir bilmez cracker denilen arkadaşlardan biriydi.Sigarasından bir fırt çekti ve parmaklarını kullanmaya başladı.

Önce programı yakinen tanımalıyım dedi,bakalım hangi dilde yazmışlar.Hemen file komutu ile bi yokladı, ardından ldd komutuyla emin oldu,program C diliyle yazılmıştı.

ka@ka-vm ~/c $ file kurulum
kurulum: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xec82f2429fe89721909d0785958ff76669a92201, not stripped
ka@ka-vm ~/c $ ldd kurulum
	linux-gate.so.1 =>  (0xb7775000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75b3000)
	/lib/ld-linux.so.2 (0xb7776000)

Düşündüğünden kolay olacaktı bu iş,devam etti derinlere inmeye önce objdump ile sonra readelf ile. Son darbeyi strings komutuyla vurdu,ihtiyacı olan herşey karşısındaydı.Bu kadar kolay olmasını beklemiyordu. [Bu kadar basitini gerçek hayatta zor bulursunuz :)]

ka@ka-vm ~/c $ objdump -S kurulum -M intel
kurulum:     file format elf32-i386
...
Disassembly of section .text:
...
0804846c 
: 804846c: 55 push ebp 804846d: 89 e5 mov ebp,esp ... ka@ka-vm ~/c $ readelf -s kurulum Symbol table '.dynsym' contains 7 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000 0 FUNC GLOBAL DEFAULT UND strcmp@GLIBC_2.0 (2) 2: 00000000 0 FUNC GLOBAL DEFAULT UND printf@GLIBC_2.0 (2) ... ka@ka-vm ~/c $ strings kurulum ... 4 haneli pin numarasi girmediniz! '%s pin' seklinde giriniz 6161 Belesci olmadiginiz icin tesekkur ederiz Yanlis PIN! ....

4 haneli PIN karşısında duruyordu,içinden "Allaaann lazına bak" dedi.Program kuruluma hazırdı artık,yazdı pin numarasını ve hiç hak etmediği mesaj karşısındaydı.

ka@ka-vm ~/c $ ./kurulum 6161
Belesci olmadiginiz icin tesekkur ederiz

Bu kadar basit olmasa da her programın kaderidir bir çakal karlosun hedefi olmak.Programı yazan bir sistemle korumaya çalışır programını,sistemi çözdüğünüz an,program emrinizdedir.Peki bu iş her zaman bu kadar basit midir? Daha zoruna bir sonraki başlığımızda bakalım.

Vurun Programa

Program 4 haneli pin istiyordu ama bizim çakal karlos bir türlü bulamamıştı [Farzı-ı misal :)].Karar verdi,bruteforce kaba kuvvet uygulayıp çözecekti bu işi.Hem ufak bir ayrıntı işini çok kolaylaştırıyordu.Neydi bu ayrıntı?

ka@ka-vm ~/c $ ./kurulum
4 haneli pin numarasi girmediniz!
'./kurulum pin' seklinde giriniz
ka@ka-vm ~/c $ echo $?
2
ka@ka-vm ~/c $ ./kurulum 1111
Yanlis PIN!
ka@ka-vm ~/c $ echo $?
1

Demek ki doğru pin verirsem çıkış kodu sıfır olucaktı.Zaten genelde böyleydi,herşey yolunda gittiyse çıkış kodu sıfır olurdu linuxte.Bu ayrıntıyı bilince kabakuvvet işlemi çok basitleşiyordu,dört haneli sayıları dene hangisinin çıkış kodu sıfırsa o kodu bana söyle.3 5 satırlık bir program yazması yeterliydi bu iş için.Python öğrenmişti biraz,gün gelir lazım olur diye.

ka@ka-vm ~/c $ cat kabakuvvet.py 
#!/usr/bin/env python
import os
import subprocess as sub

for i in range(1000,9999):
    if sub.call(["./kurulum","%d"%(i)], stdout=open(os.devnull,"w")) == 0:
        print "Sifre bulundu -> %d"%(i)
	break
ka@ka-vm ~/c $ chmod +x kabakuvvet.py 
ka@ka-vm ~/c $ ./kabakuvvet.py 
Sifre bulundu -> 6161

Bu örnekten de anladığımız üzere,hedefe ulaşmak için kullanılacak birçok yöntemler vardır.Her ne kadar verdiğimiz örnekler çok basit de olsa,en zorunu çözmek için de kullanılacak yöntemler ya aynıdır ya da benzer.Tek değişen şey sizi uğraştırdığı süredir.Sonuç olarak her program kırılmaya mahkumdur,yeter ki cracker, programı yazan arkadaştan daha dişli çıksın.

Bir sonraki başlıkta mızıkçılığın doruk noktası patch olayı nedir,inceliyoruz.Gelsin başlığımız:

74 75'e karşı

Kurulum düşündüğünden dişli çıkmıştı, doğrulama süreci düşündüğünden karmaşıktı [yok daha neler :)].Baktı ki iş sarpa sarıcak programı patchlemeye karar verdi.Programı hex editor'de açıcak ve doğru adresi bulacak ve karşılaştırmayı tam tersine çevirecekti.

(gdb) x/s 0x080485bc
0x80485bc:	"Belesci olmadiginiz icin tesekkur ederiz"
(gdb)q
ka@ka-vm ~/c $ hte kurulum
...

Şimdi tek yapması gereken doğru adresteki eşit değilse atla jne (veya jnz) opcode olarak 75i bulmak ve onu tersine çevirmekti. Buldu,değiştirdi ve saklayarak çıktı.Kontrol etme zamanı geldiğinde kazanan yine o olmuştu.

(Değiştirmeden önce)
ka@ka-vm ~/c $ ./kurulum 1111
Yanlis PIN!

(Değiştirdikten sonra)
ka@ka-vm ~/c $ ./kurulum 1111
Belesci olmadiginiz icin tesekkur ederiz

Yazı için hazırlanan videoda patch olayını nasıl yaptığımızı görebilirsiniz.Crack konusunda kendinizi geliştirmek isterseniz, internette birçok crackme kırbeni denilen programlar mevcut.Bu programları yazan arkadaşlar da cracker olduğu için en basitinden çok zoruna kadar birçok program mevcut.Benim de favorim olan crackmes.de adresini tavsiye ederim.

Bir sonraki başlığımızda konunun sosyal ve dini yönünü inceleyip yazımızı bitiyoruz.

Sosyal Sorumluluk

Bazılarınız sorgulayabilir,hem cracker arkadaşlara çakal karlos diyorsun,hem de gelmiş millete crack öğretiyorsun. Bu ne perhiz,bu ne lahana turşusu durumu.Arkadaşlar bu yazının,daha doğrusu tüm serinin amacı meraklı arkadaşlara kötü niyetli karlosların bildiklerini anlatmak,öğretmek ve ona göre ayaklarını denk almalarını sağlamak.

Burada anlatılanları bilen birisi program yazarken çok daha iyi önlemler alabilir.Kırılmayacak program yoktur,kıramayacak adam vardır felsefesini savunmakla birlikte,emeğinizi hepten çoluk çocuğun elinde oyuncak etmeyin diye paylaşıyoruz bildiklerimizi.Niyet bozuk olsa niye anlatayım,çekilirim yeraltı dünyasına,tabiri caizse lağıma, piyasada 3000, 5000 liraya satılan programları kırar,satarım 300, 500'e, değil mi?

Bir de öldükten sonra hesap vericem inancındaki arkadaşlara birkaç tavsiyem olucak.Özellikle işletim sistemleri lisanssız rahatça kullanılıyor.Hak hukuk mevzusu, hesabı düşünülmeden yeniyor. Yapmayın,etmeyin acı biberi löp löp götürenler bunun bir de çıkışı olduğunu unutmasın.Maykrosoft amcanın programlarını crackli indirip kullanan arkadaşlar,gayr-i müslimin hakkı bir tek günahlarını yüklenerek ödenir, müslümana sevaplarından verir kurtulursun belki ama ona sevaplarından da veremezsin,unutma!

Artık alternatifler çok,işletim sistemi lazımsa Linux indir,kur bilgisayarına.Ofis programı mı lazım, kur LibreOffice ohh misler gibi,beleş.Yok illa mayk amcayı istiyorsan pamuk eller ceplere.Ya da acı biber muhabbetini hatırlatmak durumundayım.Son olarak babama dedesinin bir tavsiyesi varmış,bana kadar gelen, "Hırsızlığı bile bileceksin ama yapmayacaksın!"

Bir sonraki yazımızda seviyeyi bir basamak arttırıp crack konusunu işlemeye devam ediyoruz.Yazı için kullanacağımız program, crackmes.de adresinde bulunan bir keygen programı.Crack konusu ilginizi çekiyorsa, siteye üye olmanızı ve Very Easy kategorisinde bulunan programları kırmayı denemenizi tavsiye ederim.

Oynatalım Uğurcum

Yazı için hazırlanan videoyu YouTube'dan izleyebilirsiniz.

Videoda incelediğimiz programı indirip kendiniz de denemeler yapabilirsiniz.Kaynak kodu BURADA.

Bruteforce için yazılmış Python programı da BURADA.

Yorumlar (9)

  • yunus

    yunus

    24 Temmuz 2014 17:07 zamanında |
    merhabalar, assembly kodunu editing yapabiliyor musunuz? Bilginiz var mıdır bu konuda?

    yanıtla

    • K.A.

      K.A.

      25 Temmuz 2014 22:58 zamanında |
      Yunus,
      Videoda gösterdiğim gibi, hexeditor ile açıp istediğimiz yeri editleyebiliyoruz.Önemli olan nereyi ne ile değiştirmen gerektiğini çözmen..

      yanıtla

  • yunus

    yunus

    28 Temmuz 2014 12:24 zamanında |
    Kenan Bey,

    hayır, hayır, benim aslında söylemek istediğim, otomatik bir kod üretimi. derleyici gibi, aslına bakarsanız, bir ide gibi değil, derleyici gibi. yani uzaktan bir kullanıcı size erişiyor ve bir applation tasarımını online olarak yapıyor, siz buna bakarak daha önce temelde olan fonksiyonları ve süreçleri değiştirebiliyor musunuz?

    misal,

    fonksiyon1 işlevi();

    kullanıcının isediği işlemler,

    daha sonra fonksiyon2 işlevi();

    ama bunu assembly tarafında kodları parça parça ekle - çıkar işlemleri ile otomatik yapılıp yapılamayacağı hususu.

    elbette yapılabilir ama, bunu yapabilmek için, yani bir çok assembly kod bloğunu otomatik ekleyip çıkarmak için ve en öncemlisi tüm bu işlem sonrasında programın stabil çalışabilmesi için gereken bilgi önemli.

    aslına bakarsanız, dediğim gibi, kullanıcının istediği fonksiyonları ekleyip çıkarabilirsiniz, bunu bir .c texti ya da .cpp texti üzerinden de gerçekleştirebilirsiniz, ama kaynak kod yerine assembly üzerinden yapmak istenildiğinde tüm assembly syntaxının ayrıntıları ile bilinmesi ve taktir edersiniz ki ide kavramının da iyi anlaşılması gerekmekte.

    siz bir işte çalışıyor musunuz, ya da şuan mevcut bir projeniz var mı üzerinde bir çalıştığınız?

    bu arada iyi bayramlar...

    yanıtla

    • K.A.

      K.A.

      09 Ağustos 2014 02:01 zamanında |
      Yorumu gönderirken girmiş olduğunuz email adresine cevap gönderdim. Size de iyi bayramlar...

      yanıtla

  • eyup

    eyup

    14 Aralık 2015 23:14 zamanında |
    kurulum.c dosyayı nasıl derlerdiniz objet falan cıkmadı nasm denedim olmadı ld denedim oda hata verdi

    yanıtla

    • eyup

      eyup

      14 Aralık 2015 23:20 zamanında |
      pardon buldum ok
      gcc ornek.c -o ornek

      yanıtla

      • K.A.

        K.A.

        15 Aralık 2015 19:02 zamanında |
        Arayan neyi bulamıyor ki Eyüp, kolay gelsin..

        yanıtla

  • Recep bugra

    Recep bugra

    06 Şubat 2016 21:17 zamanında |
    valla saolun ellerinize saglık !!

    yanıtla

    • K.A.

      K.A.

      07 Şubat 2016 19:02 zamanında |
      Sen de sağol Recep !! :)

      yanıtla

Bir yorum yapın

Misafir olarak yorum yapıyorsunuz.