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.