PMA Lab 7-1 İleri Seviye Statik Malware Analiz

Pentester

Özel Üye
8 Eyl 2016
1,646
996
Merhabalar, ileri seviye statik zararlı yazılım analizi eğitimlerimize devam ediyoruz. Bugün IDA ile ilgili zararlı yazılımımızı disassembly edip assembly kodlarını yorumlayarak zararlının işlevini ortaya çıkaracağız. PMA Lab 7-1 zararlı executable dosyasını analiz edeceğiz. Bakalım bizden neler isteniyor.

5sip38q.png


Burada bizden 6 soruya cevap vermemizi istiyor. Bir bakalım nasıl cevaplayabiliyoruz. Programımızı önce IDA üzerinde açalım. İlk sorumuza bir bakalım ve cevaplandırmaya çalışalım.

Soru 1 :

Bu program kalıcılığı nasıl sağlıyor?

Yani sorudan kasıt şu bu programımız tek seferlik oldu bitti değil de bilgisayar her başlatıldığında ben buradayım diyerek işlevini yerine getiriyor. Şimdi bunu nasıl yapıyor bizim onu çözmemiz gerekiyor.

rpzhszd.png


Karşımıza çıkan bloklara baktığımızda MalService adında bir hizmet oluşturduğunu görüyoruz. Hemen aşağısında çağrı yapılan fonksiyona tıklıyorum call sub_401040 komutu ile ilgili fonksiyona bir çağrı yapılıyor.

nk6pln6.png


Burada da openSCManagerA adlı fonksiyona çağrı yapıldığını görüyorum. Yani burada SC Manager yani hizmet yöneticisini kullanarak bir hizmet oluşturduğunu görüyorum. Yani bu hizmeti kalıcılık için kullanacaktır.

2tqyyux.png


Burada da CreateServiceA fonksiyonuna çağrı yapılarak servis oluşturulduğunu anlayabiliriz.


b6xeug9.png


CreateServiceA function (winsvc.h) - Win32 apps
İlgili değerlerinde açıklamalarına buradan erişebiliriz. Kısaca birinci soru için diyeceğimiz şey uygulama bir servis oluşturarak kalıcılık gerçekleştiriyor.

2. soru:
Uygulama neden muteks kullanıyor?

Şimdi muteks ile ilgili satırları bulalım.

655tyg9.png


Function penceresinden sub_401040 fonksiyonuna gidiyorum ve orada ilgi satırlara erişiyorum.

96sq2oz.png


HGL345 muteksi ele alınıyor. Burada openMutexA ile ilgili mutex açılmaya çalışılıyor. Eğer açılırsa ExitProcess fonksiyonuna çağrı yapılarak çıkış işlemi gerçekleştiriliyor. Aksi durumda ise jz ile ilgili adrese bir kısa atlama gerçekleştiriliyor. Sağ blokta yer alan loc_401064 adresinden devam ediliyor ve burada HGL345 adında bir mutex yaratılıyor. Burada gördüğünüz gibi iki koşullu bir durum var yani muteksin varlığı kontrol ediliyor var ise program ExitProcess fonksiyonuna çağrı yapıp çıkıyor, eğer yok ise ilgili adrese atlama gerçekleştirip mutex oluşturuluyor. Yani aslında bir kopyanın çalışıp çalışmadığı denetlenerek ya çıkış yapılıyor, ya da oluşturma işlemi gerçekleştiriliyor. Yani mutex kullanılmasının açıklamasını bu şekilde yapabiliriz.

tsrcz3s.png


Bakın dikkat ederseniz muteks oluşturuluyor ve daha sonra Services Manager açılıyor ve gerekli izinler tanımlanıyor. Servis Yöneticisi üzerinde işlem gerçekleştiren ilgili fonksiyonumuz belirli parametrelerle işlem yapar. Bakın yukarıda push edilen satırlarda 3 adet parametreyi görebiliyoruz.

OpenSCManagerA function (winsvc.h) - Win32 apps

hwdppye.png


Burada CreateServiceA fonksiyonuna çağrı yapılana kadar olan durumu incelemek gerekirse bu fonksiyonumuz da belirli parametreler alarak çalışıyor. İlgili parametreler üst satırlarda tanımlanıyor fonksiyona parametre olarak işleniyor. dwServiceType 10h değerini alıyor. Bu parametre hizmet türünü tutuyor.

7f5pf5k.png


MSDN sayfasından 10h değerinin ne anlam ifade ettiğine bakalım. bu da hizmetin kendi sürecinde çalıştığını ifade ediyor. Start type ise 2 değerini alıyor.

1ua346i.png


Bu da hizmetin otomatik olarak başlayacağını ifade ediyor. Aslında biraz daha incelediğimizde 2.soruyla birlikte 1.soruyu da daha da açmış olduk.


Soru 3:

Programın tespitini ana bilgisayarda nasıl yapabiliriz onu soruyor.

Servis ve muteks burada gösterge olarak kullanılabilir.

Soru 4:
Bu soruda da ağ tabanlı olayları soruyor. Ben buna cevap olarak import tablosunu size göstermek istiyorum.

7e8jbel.png


Bu fonksiyonların kullanılmasından yola çıkarak programın tarayıcı üzerinden bir adrese eriştiğini anlıyoruz.

Burada bu bilgileri elde edebilmek için view-opensubviews-segments alanına gidiyorum ve data segmenti içerisinde tanımlı olan değerleri inceliyorum.

1xyzkm7.png


Burada Internet Explorer tarayıcısını kullanarak ilgili adrese bağlantı kurduğunu görüyorum ve ağ tabanlı tespite bu cevabı veriyorum. Tabii ben data segmentinde tanımlı olan değişkenlerden size bu değerleri gösterdim. İlgili satırların assembly bloklarını da görebiliriz tabii.


Soru 5:

Programın amacı nedir?

Program bilgisayarımız üzerinden bir adrese bağlanıyor ve bizim bilgisayarımızı DoS saldırısı için kurban olarak kullanıyor.

Soru 6:
Program ne zaman sonlanacak?

t725tp7.png


SystemTimeToFileTime fonksiyonu belirli tarihsel parametreler alıyor. Yıl parametresinin aldığı 834h değeri bu da 2100 yılına karşılık geliyor. Bundan sonra da bir zamanlayıcı nesnesi oluşturulmuş kullanılan fonksiyondan da bunu anlayabiliyoruz. CreateWaitableTimerA fonksiyonudur. Aslında bu programımız 2100 yılında ilgili internet adresine bağlanacak ve DoS saldırısını gerçekleştirecek, yani programımızın amacı bu şekildedir 5.soruyu biraz daha açmış olduk. Programımız bu saldırı için sonsuz bir döngü kuracak ve sonlanmayacaktır.

c0nsrb6.png


E sen bu adrese sonsuz bir saldırı yapılacağını, hiç sonlanmayacağını nasıl anladın? Bakın dikkat ederseniz ilgili internet adresine loc_40116D içerisinde bağlanıyor. İşlevini gerçekleştiriyor ve tekrar ilgili adrese jmp ile kısa atlama gerçekleştiriyor. Bu döngüyü kıran herhangi bir kod bloğu göremiyorum buradan yola çıkarak bu saldırının durmayacağı kanısına varabiliyorum.

Bu analizimiz temel olarak bu kadar. Çok fazla uzatmadan sıkmadan zararlının ne yapmaya çalıştığını anladık. İlgili adrese sürekli bir bağlantı kurduğundan yola çıkarak bunun bizim bilgisayarımız üzerinden bir servis dışı bırakma saldırısını olduğunu anlayabiliriz. Dinamik bir analiz ile daha da somutlaşabilir, assembly kodlarından programın kaynak kodlarını yorumlayarak bu sonuçları elde ettik. Okuduğunuz için teşekkür ederim.












 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.