Adli Bilişim AnaliziANALİZDijital Veri İnceleme

Tersine mühendisliğe Giriş

Tersine mühendisliğe Giriş

Merhabalar, bügün benim de yeni yeni adım attığım Tersine Mühendislik ile alakalı kısa bir bilgilendirme yazısı yazmaya karar verdim, umarım devamını getirebilirim. Şimdi, Tersine mühendislik basitçe derlenmiş bir binary -ya da çok daha kolay anlasilabilecek bir sekilde- veya bir exe uzantılı, yani çalistirilabilir bir dosyanın nasıl çalıştığını anlamaya yönelik uygulanan süreçtir. Yapmaya çalistiginiz sey programin nasil çalistigini anlamaktir. Genellikle C, C++, Visial Basic gibi diller ile yazilan programlarin analizi insan için kolay olur fakat bu diller bilgisayar için anlasilir degildir bu nedenle birtakım islemler sonucunda bu dillerde yazilan kodlar makinenin anlayabilecegi makine diline çevirilir. Çevrildikten sonraki kodlar insanlar tarafindan zor anlasilir, ve analiz edilebilmesi için zaman ve bolca beyin gücü gerektirir.

Peki tersine mühendislik ile neler yapabiliriz ?

  • Open source olmayan yazilimin kaynagini ortaya çikarma
  • Virüs ve zararli yazilim inceleme
  • Lisansli programları bedava kullanma
  • Yazilimin saglamligini/kalitesini sinama
  • Yazilima ek özellik ekleme, iyilestirme

Sanırım daha da arttirilabilir, örnegin beyin egzersizi yapma, analitik düsünme yetenegini gelistirme vesaire. Çogunun ne ise yaradigi konusunda isminden bir yorum yapabilirsiniz. Bunun dışında örnegin ilk maddeye örnek olarak ReactOS projesini örnek verebiliriz, bu proje bir grup tersine mühendis tarafindan Windows işletim sisteminin kaynak kodlarinin incelenip Windows’a benzer ücretsiz bir isletim sistemi gelistirme projesidir, gayet de stabil durumda bakabilirsiniz 🙂

Üçüncü kategori sanirim en yaygin olanlarından biri, bildigimiz cracking islemi. Birileri parayla lisans alip kullanabileceginiz bir yazilim yaziyor, siz ise onu ücretsiz olarak kullanmanin bir yolunu ariyorsunuz 🙂 Bu bir sıkıştırma yazilimi, oyun veya baska herhangi bir program olabilir.

Ne tür bir bilgi gerekiyor ?

Öncelikle bitmek bilmeyen bir merak ve arastirma istegi gerekiyor. Tam güç çalisan bir beyin, hayal gücü, yorulmayan gözler… Ayrica unutmayin Türkiye’de yasiyorsunuz, sokakta sizin ne yaptiginizi birilerinin kolay kolay anlamasini beklemeyin. Bu ayni Fizik okumak gibi, disarida soruyorlar ne okuyorsun diye, Fizik dediginizde, sende mi ögretmen olacaksin, Fizik okuyup ne yapacaksin gibi seyler… Bunun disinda ingilizce bilmeniz gerekiyor, bu alan hakkinda Türkçe kaynak neredeyse hiç yok, ben olusturmak istiyorum ama nereye kadar onu da bilmiyorum. Ardindan inceleyeceginiz kodlar makine dili kodları, olmazsa olmaz Assembly. Ayrica C bilmeniz, Python gibi bir scripting dili bilmenizde ayri bir katki olacaktir. Bunlarin disinda daha da uzatirsak isletim sistemleri temelleri, bilgisayarin yapisi, çalisma mantigi, sifreleme mekanizmalari, anti-reverse mekanizmalari, ayrica baska programlama dillerine asina olmanizda isinizi kolaylastiracaktir. Bu liste böyle uzayip gidiyor, artik kesmeliyim.

Ne kullanacagiz ?

Tersine Mühendislik yaparken kullandigimiz bazi araçlar var bunlar örnegin,Disassemblerlar, debuggerlar, hex editörleri, PE editörleri, Sistem-Islem izleme yazilimlari vesaire. Kisaca hangisinin ne yaptigini açiklayalim.

Disassemblerlar

Bu tür yazilimlar programı disassembly işleminde geçirerek programın assembly kodu şeklindeki halini bize gösterir, böylece çagirilan fonksiyonlari, programdaki string değerleri vesaire görebilme sansiniz olur. Disassembly edilen kodlar insanlar tarafindan daha kolay okunabilinir. Bu tür yazilimlara çokca örnek verilebilir fakat en yaygin kullanilani IDA adli yazilimdir. Ilk bakista çok karmasik gelse de gerçekten karmasiktir aslında ehehe.

Debuggerlar

Debuggerlar ile programin çalismasini satir satir inceleyebilirsiniz, yine bir nevi disassembler gibi çalışırlar fakat bir yandan da çalışan kodu trace edebilir, yani izleyebilirsiniz. Çogu zaman cracking konularında, malware analizlerinde çok fazla yardimci olurlar ki bu ise bulasacaksaniz bu tür yazilimlarin çoguna bulasacaksiniz demektir. Örnegin bir debugger ile programin çalismasi sirasinda degisiklik yapabilir, bu degisikligi de program üzerinde görebilirsiniz. En yaygin kullanilanlari WinDbg, OllyDbg, Immunity debugger.

Hex – Resource Editörleri

Digerlerine göre daha az kullanilsalarda ise yarayan yazilimlardir. Örnegin basit string düzenlemeleri, byte değiştirmeleri, hızlıca kod analizleri vesaire bu yazilimlar aracılığıyla yapılabilir. Internette çok fazla hex editörü bulabilirsiniz, örnegin Hex Workshop, ResEdit gibi..

PE Editörleri

Bu programlar çalıştırılabilir dosya formatı olan PE dosyalarının PE bilgilerini okumak, düzenlemek için kullanılırlar. PE tersine mühendislikte önemli bir yer kaplar, Program ile ilgili kritik bilgileri barındırdığından tersine mühendislikte, yahut malware analizlerinde bolca bu alan ile haşır neşir olacaksınız. Örnek olarak CFF Explorer, DIE, ve LordPE verilebilir.

Kaynak: Bekir Karul

Share:

Leave a reply