magnify
Home Genel Signature-Based Detection
formats

Signature-Based Detection

Antivirus , IPS/IDS vb. yazılımların temelde imza tabanlı (signature-based) çalıştığını biliriz.

Bu yazıda basit bir düzeyde signature(imza) tabanlı tanıma yöntemini ele alalım.

Akıllı imza vb. yöntemleri ise ele almayacağız.

Sırasıyla ASPACK ile packlenmiş bir programın imzasını çıkartıcağız ve o imzayı kullanarak aspack ile packlenip packlenmediğini belirleyen bir perl kodu daha sonra da Foxit Reader programındaki bir hafıza taşması açığına imza oluşturup, exploitini tanıyan bir program yazacağız. Foxit Reader için yazacağımız signature , vulnerability-based olacak.

Konu hakkında detaylı bilgi için PE Format , Packing , Unpacking gibi konulara göz atabilirsiniz.

Packerlar bildiğiniz gibi programların boyutunu azaltmak , analizini zorlaştırmak veya güvenlik yazılımları tarafından tespit edilmesini zorlaştırmak amacıyla kullanılabilir.

Kobay olarak çok kullanılan ASPACK packer programını seçelim ve bir programı packleyelim.

Hedef programı packlemeden önceki entry point’e baktığımızda , function prologue şu şekilde;
unpack

Packlendikten sonra baktığımızda ise değiştiğini görebiliriz. Function Prologue “PUSHAD” instruction ile başlamakta. PUSHAD vb. instructionları kullanmasının sebebi için google’da unpacking/packing konularını arattırıldığında türkçe/ingilizce tonlarca yazı bulunabilir. ASPACK ile packlenmiş programların Entry Point’i istisnasız PUSHAD instructionını işaret etmekte.packed

O halde biz ASPACK imzası olarak bu OPCODEları kullanabiliriz; “60 E8 03 00 00 00 E9 EB 04 5D 45″
Yani yazacağımız ASPACK tespit programı belirteceğimiz binary’inin içerisinde yukarıda bulduğumuz hex kodları aratacak. Kolaylığı, esnekliği ve regexdeki başarısı için Perl bu işlerde biçilmiş kaftan.

open(FILE, " binmode(FILE);
my ($buf, $data, $n);
while (($n = read FILE, $data, 200) != 0) {
$buf .= $data;
}
if ($buf =~ /\x60\xE8\x03\x00\x00\x00\xE9\xEB\x04\x5D\x45/)
{
print "Aspack Detected!\n";
}

C:\Perl64\bin>perl aspack.pl
Aspack Detected!
C:\Perl64\bin>

Gördüğünüz gibi yukarıdaki üç-beş satır kod belirtilen dosyayı binary modunda açıp içerisinde bizim bulduğumuz aspack imzasını aratıyor ve eğer bulursa Aspack Detected uyarısı veriyor.

Şimdi işi biraz daha ilerletip Vulnerability-Based Signature oluşturma kısmına gelelim. Bu konu SNORT kuralları oluşturmanızda da işinize yarayabilir.

Örnek olarak Foxit Reader’daki bir hafıza taşması açığını ele alıyorum. Zaafiyet PDF formatındaki /Title tag’ine kapasitesinden fazla data girilmesiyle tetikleniyor. Yani biz /Title (\x2f\x54\x69\x74\x6c\x65) tag’i ile bu tag’i kapatmak için gerekli olan header’ın başlangıcı (\x29\x3e\x3e\x0d) arasındaki datanın uzunluğunu kontrol ederek elimizdeki PDF’in bu açığı sömüren bir exploit olup olmadığını anlayabiliriz. Tabi bir pdf’in içinde birden fazla /Title tag’i olduğuna dikkat etmek gerekli. Bunun için aşağıda da gördüğünüz gibi PDF’i split fonksiyonundan yararlanarak parçalara ayırarak analiz ettim.

#celil ünüver
#securityarchitect.org
#foxylady.pl
$filename = $ARGV[0];
open(FILE, $filename);
binmode(FILE);
my ($buf, $data, $n);
while (($n = read FILE, $data, 200) != 0) {
$buf .= $data;
}
@s=split(/\x29\x3e\x3e\x0d/, $buf); ####Signature-1
$size=scalar(@s);
for($i=0;$i<=$size;$i++){
@end = split(/\x2f\x54\x69\x74\x6c\x65/, $s[$i]); ####Signature-2
$size2 = scalar(@end);
for($d=1;$d<=$size2;$d++){
if(length($end[$d])>300){
print "ALERT!!! Foxit Title Tag Buffer Overflow Exploit!";
}
}
}

Programımızı iki adet bu açığı sömüren exploit ile test ettiğimizde başarılı sonuç alıyoruz;

C:\Perl64\bin>perl foxylady.pl Foxit-exploit.pdf
ALERT!!! Foxit Title Tag Buffer Overflow Exploit!
C:\Perl64\bin>perl foxylady.pl foxit_title.pdf
ALERT!!! Foxit Title Tag Buffer Overflow Exploit!
C:\Perl64\bin>

Test ettiğim exploitler ; http://www.exploit-db.com/exploits/15532/ – http://www.exploit-db.com/exploits/15542/

Celil Ünüver

Not: Ne kullanacam diye kafa patlatırken SPLIT fonksiyonunu kullanmamı söyleyen ve yardım eden Ulaş’a teşekkürler :)

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>