http://www.slideshare.net/AhmetGrel1/linuxa-giris-ve-kurulum
Bu döküman linkte ki bir önceki dökümanın devamıdır.Bu sunumda Temel Linux Kullanımı ve Komutlarını anlatmaya çalıştım.şinize yaraması dileğiyle iyi çalışmalar.Soru,görüş ve önerileriniz için ahmetgurel.yazilim@gmail.com a mail atabilirsiniz.
Pentest ekiplerinin kullandığı Kali dağıtımı ile Linux dünyasına giriş dökümanıdır. Bu döküman; güvenlik alanına giriş yapmak isteyen insanların Türkçe kaynak problemini gidermeyi amaçlayarak hazırlanmıştır. Bu açık kaynak projesine katkı sağlamak isteyen gönüllü linux kullanıcıları ise bize ulaşabilirler. Yazım hatası, anlam karmaşası, yanlış bilgi veya iyileştirmeler için mehmet.ince@intelrad.com adresine mail atabilirsiniz. İyi çalışmalar.
Man in the Middle Atack (Ortadaki Adam Saldırısı)Ahmet Gürel
Süleyman Demirel Üniversitesi Siber Güvenlik Laboratuvarında yapmış olduğum Man in the Middle Atack (Ortadaki Adam Saldırısı) sunumu. Mail : info@gurelahmet.com | Blog: www.gurelahmet.com | Twitter: @ahmettgurell
http://www.slideshare.net/AhmetGrel1/linuxa-giris-ve-kurulum
Bu döküman linkte ki bir önceki dökümanın devamıdır.Bu sunumda Temel Linux Kullanımı ve Komutlarını anlatmaya çalıştım.şinize yaraması dileğiyle iyi çalışmalar.Soru,görüş ve önerileriniz için ahmetgurel.yazilim@gmail.com a mail atabilirsiniz.
Pentest ekiplerinin kullandığı Kali dağıtımı ile Linux dünyasına giriş dökümanıdır. Bu döküman; güvenlik alanına giriş yapmak isteyen insanların Türkçe kaynak problemini gidermeyi amaçlayarak hazırlanmıştır. Bu açık kaynak projesine katkı sağlamak isteyen gönüllü linux kullanıcıları ise bize ulaşabilirler. Yazım hatası, anlam karmaşası, yanlış bilgi veya iyileştirmeler için mehmet.ince@intelrad.com adresine mail atabilirsiniz. İyi çalışmalar.
Man in the Middle Atack (Ortadaki Adam Saldırısı)Ahmet Gürel
Süleyman Demirel Üniversitesi Siber Güvenlik Laboratuvarında yapmış olduğum Man in the Middle Atack (Ortadaki Adam Saldırısı) sunumu. Mail : info@gurelahmet.com | Blog: www.gurelahmet.com | Twitter: @ahmettgurell
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriLemi Orhan Ergin
Bu sunum, 23 Mart 2013 tarihinde Dinamikler 2013 Proje Yönetim Kongresi Agile Panelinde yaptığım konuşmanın yansılarından oluşuyor.
http://www.dinamikler.org/sunum5.asp
Konuşmamın ana fikri şöyle özetlenebilir:
Her yıl geliştirilen yazılım projelerinin yarısı çöpe gidiyor. Birçok şirket, uzayan, bitmeyen, kalitesiz projeler nedeniyle yüklü miktarda para kaybediyor. Her projede projenin kapsamı, donanımsal ve yazılımsal gereksinimler, projenin kaç kişi ile geliştirileceği, projenin kaç adam gün süreceği ve ne kadar bütçe ayrılacağı gibi sorular için cevap aranırken çoğu kez bir şey gözden kaçıyor: Yazılımın doğası.
Yazılımın doğası gereği kaynaklar kısıtlı ve gereksinimler belirsizdir. Belirsizlik ve kısıtlı kaynaklarla başadebilmenin tek yolu oyunu onun kurallarıyla oynamaktır. Değişken gereksinimleri kısıtlı kaynaklarla belirlenen süre zarfında bitirebilmek, yani daha azla daha çok şey başarmak için, çevik olmak, kaliteli yazılım geliştirmek, belirsizliğe değişimle anında cevap vermek gerekir.
Yazılım geliştirmek, özellikle de takım halinde yazılım geliştirmek belli bir disipline sahip olmayı gerektirir. Hızla değişen teknolojilere, belirsiz gereksinimlere, projelerin türlü ihtiyaçlarına ayak uydururken, kalıcı, dayanıklı, esnek ve kaliteli yazılım geliştirmek için elinizde size yol gösterecek tek şey yazılım ilkeleridir. Yazılım ilkeleri sizin ve takımınızın kültürdür, disiplinidir.
Çevik yazılım geliştirme uygulamaları tam da bu noktada sahneye çıkar. Bu uygulamalar, projelerinizin başarıya ulaşabilmesi adına gereken yazılım kültürünün yapıtaşlarını oluşturur. Bu oturumda, başarılı projelerde yazılım kültürüne şekil veren çevik yazılım geliştirme uygulamalarından ve etkilerinden bahsedeceğim.
Aşağıda gerçekleştirilen projeler, daha önceden başka ekipler tarafından yapılan projelerin analizlerinde elde ettiğim tecrübelerimi paylaşmaya çalıştım. Aşağıda teknik unsurlar özetlenmeye çalışılacak. Bununla birlikte bir projenin başarılı olabilmesi için proje ekibinin çok önemli bir etken olduğu unutulmamalıdır.
Android mimarisinin linux çekirdeğine extradan yaptığı bazı değişiklikler anlatıldı ayrıca android de linux un init fonksiyonunun çalışma mantığı ve yaşam döngüsü anlatıldı.
4. Tersine Mühendislik Nedir?
• Tersine mühendislik basitçe derlenmiş bir binary veya bir exe uzantılı,
yani çalıştırılabilir bir dosyanın nasıl çalıştığını anlamaya yönelik
uygulanan sürece denir. Yapmaya çalıştığımız şey programın nasıl
çalıştığını anlamak, çalışma yapısını çözmeye çalışmaktır.
• Genellikle C, C++, Visual Basic, Delphi gibi diller ile yazılan
programların analizi insan için kolay olur fakat bu diller bilgisayar için
anlaşılır değildir bu nedenle bir takım işlemler sonucunda bu dillerde
yazılan kodlar makinenin anlayabileceği makine diline çevirilir.
Çevrildikten sonraki kodlar insanlar tarafindan zor anlaşılır ve analiz
edilebilmesi için hem zaman hem de bolca beyin gücü gerektirir.
5. Tersine Mühendislik ile Neler Yapabiliriz?
Neden İhtiyacımız Var?
• Açık kaynak kodlu olmayan yazılımın kaynak kodlarını ortaya çıkarma
• Virüs ve zararlı yazılımları inceleme olanağı
• Programların lisans korumasını atlatma (Cracking) - en yaygın olan :)
• Yazılımların sağlamlığını kontrol etme
• Yazılımlara ek özellikler getirme (Patching vs.)
6. ReactOS Projesi
• “Açık kaynak kodlu olmayan yazılımın kaynak kodlarını ortaya
çıkarma” maddesine örnek olarak verilebilecek bir proje
• Bu proje bir grup tersine mühendis tarafından, Windows işletim
sisteminin kaynak kodlarının incelenip Windows’a benzer ücretsiz bir
işletim sistemi geliştirme amaçlı uygulanan bir projedir.
9. Ters Mühendis Hangi Özelliklere Sahip Olmalı?
• Sınırsız merak ve araştırma isteği
• Hayal gücü, yorulmayan gözler :)
• Assembly, C ve Python gibi en az bir scripting dili bilmek
• İşletim sistemleri yapısı, CPU mimarisi, Bilgisayar çalışma mantığı
• Kriptografi
• Anti-Debugging, Anti-Reversing teknikleri
• ….
16. Fonksiyon Çağrıları
call function ; store return addr on the stack
; and jump to function!
func:
push esi ; save esi
…
pop esi ; restore esi
ret ; read return addr from the stack
; and jump to it.
17. Registerlar - 1
• Registerlar ne yapar?
• Lokasyon/konum depolar
• Hafıza konumuna göre daha hızlı erişim olanağı sağlar
• EAX => Değişken değerleri depolar
• EBX => Base index (diziler ile kullanılır)
• ECX => Sayaç register
• EDX => Data
• ESI => String işlemleri için kaynak indexi
18. Registerlar - 2
• EDI => String işlemleri için hedef indexi
• ESP => Stack Pointer (Stack’in en üst adresi)
• EBP => Base Pointer (Stack’in en alt adresi)
• EIP => Instruction Pointer (Programın o an bulunduğu yer.Bir sonraki
instruction’ın adresini depolar.)
19. Registerlar - 3
• Segment Registerları
Hafızanın belli segmentlerini adreslemek için kullanılır
(code/data/stack segmentleri)
• CS => Code Segment
• SS => Stack Segment
• ES => Extra Segment
• DS => Data Segment
• FS,GS Segments
22. Tersine Mühendisin Alet Çantası
• Tersine mühendislik yaparken kullandığımız bir takım araçlar var.
Bunlar:
• Disassemblerlar
• Debuggerlar
• PE Editörleri
• Hex-Resource Editörler
• Sistem İzleme Araçları
23. Disassembler
• Bu yazılımlar, programı disassembly işleminden geçirerek programın
assembly kodu şeklindeki halini gösterir.
• Bu olay bize programda çağırılan fonksiyonları, string değerleri vs.
görüp incelememize olanak sağlar.
• En yaygın olarak kullanılarak disassembler => IDA
26. Debugger
• Debuggerlar ile programın çalışmasını satır satır izleyebiliriz.
• Disassembler gibi çalışırlar fakat ek olarak işlemleri izleme imkanımız olur.
• Çoğu zaman cracking, malware analizi, exploit geliştirme aşamalarında kullanılırlar.
• Bir debugger ile programın çalışması esnasında değişiklik yapılabilir.
• En yaygın olarak kullanılan debuggerlar:
• ImmunityDebugger
• OllyDbg
• WinDbg
32. Örnek WinDbg Komutları
•r: registerların o anki durumunu/içeriğini gösterir
•t: trace-step (until call)
•pt: single-step (until-ret)
•g: process run (go!)
•.hh: yardım komutu (örnek => .hh pt)
•lm: list modules
33. PE Editörleri
• PE => Portable Executable
• Nedir? => Windows çalıştırılabilir dosya formatı
• Bu programlar PE dosyalarının PE bilgilerini okumak için kullanılır
• Tersine Mühendisliğin en önemli konularından birisidir
==> “PE candır gerisi heyecandır”
• PE dosyaları program ile ilgili kritik bilgileri barındırdığından tersine
mühendislik veya malware analizi yaparken PE ile baya içli dışlı
olacağız :)
34. PE Editörleri - 2
• Yaygın olarak kullanılan PE Editörleri
• CFF Explorer
• LordPE
• DIE => Detect It Easy
• PeiD
55. Tersine Mühendislik-102 Ajanda
• Basic Windows Internals
• PE Dosya Yapısı
• Stack’in içinde neler oluyor?
• Debugging’e giriş. CrackMe çözümü
• Anti-Debugging Örneği
• Windbg’a giriş