Pandora’nın Kutusu Nasıl Açılır ?

Zararlı yazılım analistini nedense meraklı Pandora’ya benzetirim çünkü işi gereği kötülük ile dolu olan o kutuyu (paketlenmiş zararlı yazılım) açarak kötülüğün tüm işletim sistemine hakim olmasına neden olur fakat efsanenin aksine kutuyu kapatmaya çalışmaz çünkü analistin tek amacı zararlı yazılımı baştan sona analiz edebilmektir.

Daha önceki yazılarımda da belirttiğim üzere art niyetli kişiler zararlı yazılımların disk üzerinde antivirüs ve benzer koruma yazılımları tarafından tespit edilmesini ve ayrıca zararlı yazılımın analiz edilmesini zorlaştırma adına paketleyici (packer) yazılımlar kullanırlar. Fakat bilinenin aksine bu yazılımların asıl kullanım amacı hedef programın diskte kapladığı yeri azaltmaktır çünkü bu yazılımlar ile paketlenen programların boyutunun yarı yarıya azaldığı bilinmektedir.

Hem iyi hemde art niyetli kişiler arasında en çok tercih edilen paketleme yazılımlarının başında UPX gelir. Art niyetli kişiler arasında tercih edilmesinin en büyük nedenleri arasında ücretsiz olması ve çoğu zararlı kod paketleyici yazılımının UPX yazılımını içeriyor olmasıdır.

UPX veya herhangi bir paketleyici yazılım ile paketlenmiş bir programın analiz edilebilmesi için öncelikle paket içinden çıkartılması gerekmektedir. Örnek olarak UPX ile paketlenmiş bir programı ele alacak olursak bu programı analiz edebilmek için yapılması gereken ilk iş ya debugger (ollydbg) ile çalıştırmak yada paket açma işini otomatik olarak gerçekleştiren araçlardan faydalanmak olacaktır fakat bu araçlar paketleme yazılımların yeni sürümlerinin yayınlanmasından sonra beklentileri karşılayamadıkları için çoğu zaman debugger ile çalıştırmak ve analiz etmek gerekmektedir fakat ben iki yoldan da kısaca bahsedeceğim.

Örnek olarak UPX ile calc.exe (windows hesap makinası) programını sıkıştırdığımızda programın boyutunun %49 oranında ufaldığını görüyoruz.

Pandora

calc_upx.exe programını Ollydbg ile açtığımız zaman normal programlarda karşılaştığımız fonksiyon prologue‘nin aksine PUSHAD ile karşılaşıyoruz. PUSHAD tüm register değerlerini stack’e kopyalamaya yaramaktadır ve UPX ve ASPack gibi paketleme yazılımlarında PUSHAD sonrasında paketlenmiş veri açılır ve daha sonrasında POPAD ile daha önce stack’e kaydedilmiş olan değerler register’a geri kopyalanır. Paketlenmiş programlarda EP (entry point) paketin açılmasını sağlayan fonksiyonu işaret eder ve paket açıldıktan sonra OEP (original entry point) sayesinde program çalışabilmesi için ilgili bölüme (section) yönlendirilir. Amacımız OEP’i bulmak olduğu için ve programın çalışabilmesi için öncelikle paketin açılması gerektiği ve ardından ilgili bölüme gitmesi gerektiği için OEP’in bilinmesi gerekmektedir. Bunun için PUSHAD ile saklanan ESP register’ına hardware on access breakpoint koyarsak, POPAD komutu ile eninde sonunda bu değer registera geri kopyalanacağı için breakpoint sayesinde POPAD’e kısa yoldan gidebilir ve OEP’i tespit edebiliriz.

Pandora

OEP’i tespit ettikten sonra Ollydbg eklentisi olan Ollydump ile paketi açılmış olan programı (calc_upx.exe) diske kayıt (dump) edebiliriz.

Pandora

Diske kayıt edilmesiyle Import adres tablosu (import edilen modüller ve fonksiyonlar) bozulan programı analiz edebilmek ve tekrar çalıştırabilmemiz için impREC programı ile import tablosunu düzelttikten sonra amacımıza ulaşmış oluruz.

Pandora

Tabiiki UPX veya benzer yazılımlar ile paketlenen programları paketten çıkartmak için her defasında böyle uğraşmamıza gerek yok çünkü piyasada bu yazılımlar ile paketlenmiş programları otomatik olarak çözen programlar mevcut. Örnek olarak ReversingLabs firması tarafından hazırlanmış olan deUPX programını ücretsiz olarak temin edebilirsiniz.

Pandora

Programların yanı sıra internette bu işi otomatize etmek ve kendi paket açma aracınızı hazırlamak için kütüphaneler de bulabilirsiniz. Mesela Blackhat konferanslarında bol bol sunum yapan ReversingLabs firmasının geliştirdiği TitanEngine kütüphanesini duymuş olabilirsiniz. Duymadıysanız Titanengine, içinde entegre debugger, disassembler bulunduran ve yukarda manuel olarak gerçekleştirilen işlemleri otomatik olarak gerçekleştirmenizi sağlayan ve 400 fonksiyonu kullanmanıza imkan tanıyan oldukça başarılı bir kütüphanedir. Zararlı yazılım analizi ile yakından ilgileniyorsanız bu kütüphaneye göz atmanızı şiddetle tavsiye eder, bir sonraki yazıda görüşmek dileğiyle herkese iyi haftasonları dilerim.

image_pdfShow this post in PDF formatimage_printPrint this page
9 comments
  1. birazda reversing icin yol gosterici birseyler karalasan mert hocam guzel referanslar, kaynaklar, hangi yollar izlenmeli vs..

  2. Anlamadığım bazı noktalar var, dump edilen verinin import table ı neden bozuluyor? Sıkıştırma işlemi yapıldığında, sıkıştırılan uygulamaya b dersek Upx yazılımı b nin giriş noktasından itibaren mi başlıyor sıkıştırmaya? Anladığıma göre sıkıştırma işlemi bittiğinde olusan dosyada b nin dosya başlıkları sabit kalıyor giriş noktasına UPX kendi giriş noktasını yerleştiriyor. Sıkıştırılan uygulma çalıştırıldığında ise UPX in giriş noktasından başlıyor ve gerekli işlemler yapılarak sıkştırlan veri açılıyor ? Dump ettiğimizde ise sadece b i almış oluyoruz ama dosya başlıkları olmamış oluyor ve bunun içinde import table i duzenlıyoruz..

    anladığım bu çorba olmuş olabilir kusura bakmayın.

    1. Hafızadan diske kayıt edilen veri geçerli import tablosuna sahip olmaz çünkü paketlenmiş programın import tablosunu içerir. Halbuki dump edilen veriyi (programı) çalıştırabilmek için bizim paketlenmemiş programın import tablosuna ihtiyacımız olduğu için impREC programı yardımı ile hafızada açılmış olan programa ait olan import tablosunu oluşturabiliyoruz, umarım anlaşılır olmuştur Acemi…

  3. .Acemi, sana tavsiyem çok küçük boyutlu ve fazla değil 2 – 3 api kullanan basit bir program yaz yada bul. Lord PE gibi PE tools var, bu uygulamada import tableı incele. Hangi apiler import edilmiş, o apiyle ilgili hangi değerler var incele. Sonra bu tablonun adresini boyutunu incele, manual olarak apilerin yerlerini/adreslerini değiştirmeye çalış yada komple IATı değiştir. Tablo yapısını öğrendiğinde sorunun cevabınıda bulacaksın.

  4. asagida ki kodu mincikla biraz acemi :]
    ……..
    .data
    oh caption db “noob”,0
    yeah db “stfu noob !”,0

    .code
    start:

    invoke MessageBox,NULL,addr oh, addr yeah,MB_YESNO

    end start
    …….

Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

e-Devlet Hacklendi mi?

If you are looking for an English version of this article, please visit here. Öncelikle yazının sonunda söyleyeceğimi başta söyleyeyim, “Hayır, hack-len-me-di!” Peki bu durumda vatandaş olarak rahat bir nefes alabilir misiniz ? Maalesef hayır. Bunun sebebini de yazının devamında okuyabilirsiniz. Zaman zaman hortlayan “e-Devlet Hacklendi!”, “e-Devlet verileri çalındı!”, “85…
Read More
Read More

WhatsApp Dolandırıcıları

If you are looking for an English version of this article, please visit here. Başlangıç Son günlerde hemen hemen WhatsApp uygulaması kullanan herkesi rahatsız eden yabancı cep telefonu numaralarından gelen çağrılardan, mesajlardan ben de yakın zamanda nasibimi aldım ve tabii ki diğer dolandırıcılıklarla ilgili yazılarımda (Kripto Para Dolandırıcıları, LinkedIn Dolandırıcıları,…
Read More
Read More

LinkedIn Dolandırıcıları

If you are looking for an English version of this article, please visit here. Uzun yıllardan beri sosyal ağları ve medyayı etkin kullanan bir siber güvenlik araştırmacısı olarak bağlantılarım arasında yer alanlarınız özellikle hafta içi LinkedIn ve Twitter üzerinden okuduğum ve beğendiğim siber güvenlik makalelerini, haberleri paylaştıklarımı farkediyorlardır. Twitter hesabımın…
Read More
Read More

e-Devlet Hesaplarımızı Nasıl Hackliyorlar?

If you are looking for an English version of this article, please visit here. Başlangıç 25 Ekim 2023 günü saat 11:46’da e-Devlet uygulamasından ve e-posta adresime gelen uyarılardan e-Devlet Kapısı hesabıma üst üste birden fazla defa yanlış parola ile giriş yapılmaya çalışıldığı için hesabımın bir saatliğine geçici olarak kullanıma kapatıldığını…
Read More