Hoşgeldin Sivil

.
Forum Yöneticisi: Administrator | Bu Bölümde Yetkili Tüm Yöneticiler? | Bu konuyu okuyanlar?

 Forum Ana Sayfa
   Tersine Mühendislik

   
 Kurallar    Aktif Konular    PM    Kayıt Ol     Giriş Yap  
» TryHackMe | Basic Malware RE
 Konu Kalitesi %12.5
Oy Ver   
 
Gönderilme Tarihi: 14 Mart 2023 23:10:29 - Kayıtlı IP
  Mesajı İhbar Et!     

Dağıztanlı08

Albay

İstanbul
23 Şubat 2022
53 Mesaj

Durum: Complicated


Aktiflik
Seviye
Deneyim
Moderatör

Görev Org./Grup :

Lojistik


Selamun Aleyküm.



TryHackMe üzerinde bulunan "Malware Analysis" temellerini öğrenebilmeniz açılmış olan bir odanın çözümünü sizlerle paylaşacağım.

Bu konu daha önceden bazı bilgilerinizin olduğunu varsayarak anlatılacağını söylememe gerek yoktur. Basit bilgilerinizin olması yeterli örneğin;

*CPU Nedir,Nasıl çalışır ?
*RAM Nedir,Nasıl çalışır ? vb...

Makineyi başlattığımız zaman üç farklı soru bizi karşılamakta.

Birinci sorudan başlayalım.



Açıklamada yazdığına göre bu çalışabilir dosya çalıştığı zaman ekrana bir MD5 hash'i basmaktaymış. Bu flagi yakayalabilir misin diyor.

Dikkat: Çalıştırmana gerek yok !

Çalıştırmama gerek yoksa "Statik Analiz" yardımıyla bu flagi alabileceğimi düşünüyorum. Ekrana ne bastırdığını görmek için bir dosyayı çalıştıralım.



Görüldüğü üzere bir MD5 hash'i bastırıyor. Flag bu olduğunu düşünen arkadaşlarımız olabilir,bu değil tabii ki :)
O zaman analiz etmeye başlayalım. Çalışabilir dosyamızı atacağımız ilk programımızın adı ;

1-"CFF Explorer" Statik analiz için gerekli olan birçok özelliği barındıran çok kullanışlı bir programdır.

Programımıza dosyamızı attığımızda ilk alacağımız çıktı;



Burada görebildiğimiz gibi dosyanın ne zaman kullanıldığını,oluşturulduğunu,dosya tipini görebiliyoruz.

Fakat ihtiyacımız olan bilgiler bunlar değil. Bildiğiniz gibi işlemcilere bir kod atmamız gerektiği zaman "hexadecimal"(on altılı sayı sistemi) kullanılarak kod atılır.

Mikrodenetleyici dersi alan arkadaşlarımız bu konuya aşinadırlar.

Bizde şu an derlenmiş bir dosyayı okuduğumuz için "hex editör" kısmında neler bulabileceğimize bir bakmamız gerekiyor.



Bu resimde görüldüğü üzere kırmızı kalem ile göstermiş olduğum kısım "hexadecimal"(on altılı sayı sistemi) ile ifade edilen kısımlardır.

Mavi kalem ile göstermiş olduğum kısım ise bizim anlayabileceğimiz yapıda olan "ASCII" tablosudur. Bakalım burada ihtiyacımız olan bilgiyi bulabilecek miyiz ?

Flag'in yapısının FLAG{} şeklinde olduğunu bildiğimizden dolayı "FLAG" şeklinde bir arama gerçekleştireceğiz.



Ne yazık ki sorumuz bu kadar kolay değilmiş. Birsürü FLAG ile başlayan flagler bulduk. Burada bir kısmı gösteriliyor. Bunlardan tonlarca olduğu için tek tek deneme lüksümüz yok. Peki şimdi ne yapacağız.

Kullanacağımız ikinci program "IDA" bu program bir "disassembler"
olarak bilinir. Yani makine kodunu bizim anlayabileceğimiz düzey olan "assembly" haline getirmeye yaramaktadır. Şimdi bu programı çalıştıralım.



Gelen ekranda herhangi bir yeri ellemeden "OK" tuşuna tıklıyoruz.



Bu da ne ? Demek ki sorumuz o kadar zor değilmiş :) Flag direk önümüze çıkmış oldu. Eğer "debugger" kullansaydık burada flag'i bu kadar kolay bir şekilde alamazdık. IDA programının sağlamış olduğu kolaylık ile kolay bir şekilde aldık. Peki biraz daha derine inersek ne olur ?



Burada dikkatimizi bir şeyin çekmesi gerekiyor. "off_432294" adında bir değişkenin içeriği "EAX" registerinin içerisine atılıyor. Daha sonra görüldüğü gibi bir fonksiyon call ediliyor. (MD5_HASH) demek ki eax registerine gelen bu değer bizim flagimiz. Bu değişkene biraz yakından bakarsak eğer;



Görüldüğü üzere .data section içerisinde fake bütün flagleri görmüş oluyoruz. Karaladığım doğru flag :) Burada 200 den fazla fake bulunmakta. Tek tek denemek pek mantıklı değilmiş :)

Bu şekilde ilk sorumuzu çözmüş olduk.



İkinci sorumuzda aynı şeyleri söylüyor. Fakat bu sefer diğeri kadar kolay değil "CFF Explorer" programımıza attığımızda;



Görüldüğü gibi herhangi bir string ifadesi bulunamadı. O zaman IDA geçelim bakalım neler dönüyor.



Görüldüğü üzere daha sonra EAX registerine taşınmak üzere Değerler EBP registeri üzerine taşınıyor. Bu soruyu da basit bir şekilde çözmüş olduk.

Üçüncü sorumuza geçelim.



Dilersiniz ki son soru olmasından sebep diğerleri kadar kolay değil. O yüzden hiç hex editöre atmayacağım çünkü yine herhangi bir şey bulunamıyor. Direk IDA atalım.



Diğer sorular kadar kolay olmadığını registerler içerisine hangi değerlerin taşındığını direk görememizden anlıyoruz :)

Peki burada ne yapacağız. Kırmızı alanla çizdiğim kısımdaki kodlardan anlayacağımız üzere "LoadStringA" kısmını görüyoruz.
Bu kısımda bizim flagimiz tahminen registerlere aktarılacağından dolayı buraya bir "breakpoint" koyuyoruz. Program çalışacağı zaman bu noktada duracak bu sayede register içerisinde hangi değerler var görebileceğiz. Breakpoint koymak istediğimiz komutun üzerine sağ tık yapıp ekliyoruz.



Bu şekilde bir kırmızılık görürseniz breakpoint eklenmiş demektir.
Daha sonra programı çalıştırıyoruz.



Sağ üstte EAX registeri yanında bulunan oka tıkladığımızda;



Görüldüğü üzere flag'i bulmuş olduk :)

Burada programı çalıştırmış olduk yani "Statik Analiz" değil de "Dinamik Analiz" yapmış olduk. IDA programı ile benzer işlev gören GHIDRA programı üzerinde buna gerek kalmadan direk flag'e ulaşabiliyoruz. Fakat bir farklılık olması açısından bu yöntemi de anlatmak istedim.

Umarım faydalı bir konu olmuştur.

       
     
 
 
Gönderilme Tarihi: 14 Mart 2023 23:29:33 - Kayıtlı IP
  Mesajı İhbar Et!     

HAYALET

Albay

03 Ocak 2022
259 Mesaj

Durum: Beyaz Ve Sen


Aktiflik
Seviye
Deneyim
Moderatör

Görev Org./Grup :

Sosyal Medya


Lojistik


eline sağlık kardeşim on numara beş yıldız. Tersine mühendislik bilmeyen bir birey için ( bende dahil) güzel bir anlatım olmuş, bu anlatım sayesinde temel şekilde tersine mühendislik bilgisi kazanılabilir.


___________________________________________
Oraleti sevmemiz portakala olan düşkünlüğümüzden değil biz ezilenin yanındayız.
       
     
 
 
Gönderilme Tarihi: 15 Mart 2023 00:22:46 - Kayıtlı IP
  Mesajı İhbar Et!     

DeXPLaNeR

Co (Administrator)

CyberOttoman/Angara
18 Kasım 2021
416 Mesaj

Durum: OrtayaKarışık


Aktiflik
Seviye
Deneyim
(Co) Administrator

Görev Org./Grup :

Strateji


+++


___________________________________________
* CA_ DeXPLaNeR _CW *
       
  C-WarZ , Errorle Mücadele (TIM LiDERi) , Yöneteam (TIM LiDERi) ,    
 
 
Gönderilme Tarihi: 17 Mart 2023 13:30:43 - Kayıtlı IP
  Mesajı İhbar Et!     

Aleph

General

14 Aralık 2021
150 Mesaj




Aktiflik
Seviye
Deneyim
Member Manager

Görev Org./Grup :

Sosyal Medya

Uzmanlık Alanları:
SMM

Eline sağlık


___________________________________________
Sabır ver, asil asker hainlere göğüs ger.
       
  Yöneteam , Yeni Üyeler TIM (TIM LiDERi) ,    
 
 
Gönderilme Tarihi: 08 Nisan 2023 22:24:38 - Kayıtlı IP
  Mesajı İhbar Et!     

Çehreli

Binbaşı

23654
16 Mart 2022
6 Mesaj




Aktiflik
Seviye
Deneyim



Eline sağlık başarılı

       
     
 
 
Git:
  Arkadaşına yolla

Sayfa Yüklenme Süresi: 0.0601


 

İçerik Yöneticisi : AKTIF / Veriler Aktarıldı...
IP Adresiniz : 3.133.108.103 Güvenlik Nedeniyle Kayıt Altındadır.



Uzun yoldan geldik, uzun yola devam...

   


Reklam vermek için tıklayın

Forum Kuralları | Üye Olmak İçin | CyberAkademi | Operasyonel TİM'ler
CYBERAKADEMI ~ 2021