Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
YIVA Engineering Turkish
Next
Download to read offline and view in fullscreen.

Share

Tersine Mühendislik 101

Download to read offline

http://mavidurak.github.io

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Tersine Mühendislik 101

  1. 1. Reverse Engineering 101 Tersine Mühendislik 101 Tech Talks #02 Mavidurak-IO Fatih Erdoğan
  2. 2. root@mavidurak-io:~$ whoami • Intern Security Researcher at SignalSEC • Reverse Engineering, Exploit Development, low-level stuff • Penetration Testing • Sakarya University - Computer Engineering (2014 - …) • http://ferdogan.net • twitter.com/FeCassie • fatiherdogan94@gmail.com • Member at Mavidurak-IO
  3. 3. Reverse Engineering??
  4. 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. 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. 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.
  7. 7. http://www.reactos.org
  8. 8. Requirements Analysis Design Implementation Forward Engineering Reverse Engineering Software Engineering
  9. 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 • ….
  10. 10. Analiz/Reversing Çeşitleri • Statik Analiz/Reversing • Dinamik Analiz/Reversing
  11. 11. Statik Analiz/Reversing • Statik program analizi execute etmeden yani programı çalıştırmadan yapılan yazılım analiz şeklidir.
  12. 12. Dinamik Analiz/Reversing • Dinamik program analizi ise o an sanal veya gerçek bir process üzerinde execute olan programa yapılan analizdir.
  13. 13. x86 Mimarisi & Assembly
  14. 14. Temel Aritmetik mov eax, 5 ; eax=5 mov ebx, 3 ; ebx=3 add eax, ebx ; eax = eax + ebx sub ebx, 2 ; ebx = ebx -2
  15. 15. Hafıza Erişimi cmp eax, 2 ; compare eax with 2 je label ; if(eax == 2) ja label ; if(eax > 2) jb label ; if(eax < 2) jbe label ; if(eax <= 2) jne label ; if(eax != 2) jmp label ; jump label
  16. 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. 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. 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. 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
  20. 20. 32-Bit Registerlar (x86)
  21. 21. Ne tür araçlar kullanacağız?
  22. 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. 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
  24. 24. IDA Disassembler
  25. 25. IDA - 2
  26. 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
  27. 27. ImmunityDebugger
  28. 28. OllyDbg
  29. 29. OllyDbg - 2
  30. 30. WinDbg
  31. 31. WinDbg - 2
  32. 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. 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. 34. PE Editörleri - 2 • Yaygın olarak kullanılan PE Editörleri • CFF Explorer • LordPE • DIE => Detect It Easy • PeiD
  35. 35. CFF Explorer
  36. 36. LordPE
  37. 37. DIE (Detect It Easy)
  38. 38. PeiD
  39. 39. Hex - Resource Editörler • Diğerlerine göre çok yaygın değiller • Basit string düzenlemeleri • Bayt değiştirmeleri • Hızlı kod analizi • …
  40. 40. Hex - Resource Editörler • Birçok hex-resource editör mevcut • HxD • Hex Workshop • ResEdit
  41. 41. HxD
  42. 42. Hex Workshop
  43. 43. ResEdit
  44. 44. Sistem İzleme Araçları • Microsoft SysInternal Tools • Process Explorer • Process Monitor • AutoRuns • TCPView
  45. 45. Process Explorer
  46. 46. Process Monitor
  47. 47. AutoRuns
  48. 48. TCPView
  49. 49. Anti-Debugging??
  50. 50. Anti-Debugging
  51. 51. Anti-Debugging
  52. 52. Nasıl Bypass Ederiz??
  53. 53. Basic Anti-Debugging Bypass
  54. 54. Tersine Mühendislik denilen olay bu kadar mı??
  55. 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ş
  56. 56. Fatih Erdoğan twitter.com/FeCassie Mavidurak-IO http://mavidurak.github.io
  • SafaKn

    Aug. 18, 2020
  • RAHMYILDIZ

    Jan. 2, 2019
  • Kemalizik

    Nov. 30, 2018
  • EjderHakanAtlkarnca

    Aug. 16, 2018
  • CanRaa

    Jan. 31, 2018
  • regaipkk

    May. 8, 2017
  • FeyziYuaKarababa

    Mar. 16, 2017

http://mavidurak.github.io

Views

Total views

3,650

On Slideshare

0

From embeds

0

Number of embeds

8

Actions

Downloads

132

Shares

0

Comments

0

Likes

7

×