23-08-2017 Saat: 15:46
Merhaba;
Bu yazımda antivirüs programlarının virüs & trojan vs...' ları nasıl yakaladığından bahsetmek istiyorum. Buna neden de bazı site ve forumlarda insanların başkalarına yanlış bilgiler vermeleridir. Genellikle bu konu hakkındaki yanlış bilgiler de en çok "Hangi AV (Anti Virüs Programı) en iyisi?" tarzındaki forum başlıklarında dolaşıyor.
Bazı kimseler diyor ki şu AV daha iyi. Bak bu şu şu virüsü-trojanı hemen yakaladı diğer AV yakalayamıyor. Aslında burada pek de yanlış bir durum yok gibi görünse de, en iyisi AV'lerin virüsleri nasıl yakaladığını öğrendikten sonra yorum yapmak. Yoksa ağzı olan konuşuyor gibi bir durum çıkıyor ortaya.
Peki AV'ler Virüsleri Nasıl Yakalıyor?
Şimdi öncelikle hiçbir AV sizin yeni yazmış olduğunuz bir virüsü, trojanı vs... yakalayamaz (tespit edemez). Çünkü AV'ler bir programın ne yaptığına, yapısına bakarak onun virüs olduğuna karar vermez (ascii formatında kodlanan bazı zararlı scriptler dışında)! Peki nasıl tanırlar? Öncelikle bir AV firması şüpheli dosya hakkında en az iki rapor almalıdır. Daha sonra ise bu dosyanın analizi yapılır ve bir virüs & trojan vs... olduğuna karar verilince, dosyadan hex imza alınır ve virüs veritabanlarına işlenir. AV progra****z da tarama sırasında makinanızdaki programlarda bu veritabanına işlenen hex imzayı arar ve eşitlik sağlandığında dosyanın infecte bir dosya olduğuna karar verilir.
Yani program ister bilgisayara zarar veren bir virüs olsun, ister bilgisayarınızda arka kapılar (backdoor) açarak dışarıya veri sızdıran bir trojan & worm olsun, bunlar bir Av firmasına rapor edilip, firma tarafından analiz edilip veritabanlarına dahil edilene kadar asla bir AV tarafından tanınamaz. Fakat yukarıda da bahsettiğim gibi bazı zararlı scriptler ascii formatında (düz yazı - derlenmemiş) olduğundan AV bu dosyaya bakarak bazı belli rutinlere göre dosyanın şüpheli bir dosya olduğuna karar verebilir.
Bunun doğruluğuna inanmak için bilgisayara format atan bir program yazın ya da trojan serverı tarzı makinada port açan (sayısı önemli değil; ister 1 olsun ister100 olsun) ve dinlenen komutlara göre dışarıya bilgi sızdıran & makinada zararlı komutlar işleten bir program yazın. Bu programı herhangi bir AV'ye tarattığınızda göreceksiniz ki AV bu programı bir virüs vs... olarak tanıyamayacaktır.
Hadi şimdi biz de bir virüsden hex imza alalım :-))
Ben örnek olarak Lorez virüsünden bir hex imza aldım:
58 FF E0 8B 85 57 17 40 00
50 B9 78 56 34 12 FF 95 E6
16 40 00 89 85 53 17 40 00
83 F8 FF 75 01 C3 6A 20 8B
Şimdi örneğin C'de bir program yazdığımızı varsayalım ve Lorez virüsünden aldığımız bu hex imzayı da programda kullandığımızı düşünelim. Yine örnek vermek gerekirse BYTE tipinde bir diziye kodumuzu yerleştirelim:
BYTE lorez_virusu_imzasi[] = {0x58,0xFF,0xE0,0x8B,0x85,0x57,0x17,0x40,0x00,
0x50,0xB9,0x78,0x56,0x34,0x12,0xFF,0x95,0xE6,
0x16,0x40,0x00,0x89,0x85,0x53,0x17,0x40,0x00,
0x83,0xF8,0xFF,0x75,0x01,0xC3,0x6A,0x20,0x8B};
Bu kodu yazdığınız bir programa dahil edip windows altında derleyip only.exe diye bir dosya oluşturduğunuzu varsayalım. Büyük ihtimalle AV progra****z only.exe dosyasına Win95.Lorez (ya da kendi veritabanlarına nasıl bir isimle kaydetmişlerse) virüsü bulaşmış diye bir uyarı verecektir. Ama siz bunun zararsız bir kod olduğunu anlamışsınızdır sanırım :-))
İşte AV yazılımları da aynı bu şekilde kendilerine rapor edilen dosyaları incelerler ve hex imza veritabanlar oluştururlar. Daha sonra da tarama işlemlerinde dosyalarda bu veritabanındaki imzaları ararlar ve dosyanın infecte olup olmadığına karar vererek disinfecte, silme, karantina vs işlemleri gerçekleştirirler.
Şimdi genel olarak bir AV'nin nasıl çalıştığını öğrenmiş olduk. Peki hangi AV'nin daha iyi olduğuna nasıl karar vereceğiz? Aslında her AV bu kısımda aynı işlemleri yaptığından fark burda yok aslında. Genel olarak AV'lerde sistemi aşırı yavaşlatmaması (Norton yüklü makinanın sürünmesi gibi) ve e-posta denetleme vs gibi ek özellikler ve en az sistem harcayarak en çok fonksiyonu en iyi şekilde başaran bir AV'yi iyi olarak nitelemek mümkün.
Ek olarak kendimce iyi bir AV'ye örnek vermem gerekirse Kaspersky AV'yi rahatlıkla söyleyebilirim. Bu yazılımın diğer AV'lere göre bir artısı daha var ki; o da bu virüslerden vs... alınıp veritabanına işlenen hex imzalara ek olarak, dosyayı birçok exe packer ile ayrı ayrı packlenmiş hallerinden de hex imza alarak veritabanına işlemeleri. Böylece örneğin tanınan bir trojanı (eğer packlenmişse unpack ederek başka bir packerla) packleyerek diğer AV'lere karşı tanınmaz hale getirseniz bile KAV bunu daha önceden kendisi de deneyip vertabanına eklemiş olabileceğinden, diğer AV'ler tanımazken KAV bu infecte dosyayı yine tanıyabilir..(ALINTI).
Bu yazımda antivirüs programlarının virüs & trojan vs...' ları nasıl yakaladığından bahsetmek istiyorum. Buna neden de bazı site ve forumlarda insanların başkalarına yanlış bilgiler vermeleridir. Genellikle bu konu hakkındaki yanlış bilgiler de en çok "Hangi AV (Anti Virüs Programı) en iyisi?" tarzındaki forum başlıklarında dolaşıyor.
Bazı kimseler diyor ki şu AV daha iyi. Bak bu şu şu virüsü-trojanı hemen yakaladı diğer AV yakalayamıyor. Aslında burada pek de yanlış bir durum yok gibi görünse de, en iyisi AV'lerin virüsleri nasıl yakaladığını öğrendikten sonra yorum yapmak. Yoksa ağzı olan konuşuyor gibi bir durum çıkıyor ortaya.
Peki AV'ler Virüsleri Nasıl Yakalıyor?
Şimdi öncelikle hiçbir AV sizin yeni yazmış olduğunuz bir virüsü, trojanı vs... yakalayamaz (tespit edemez). Çünkü AV'ler bir programın ne yaptığına, yapısına bakarak onun virüs olduğuna karar vermez (ascii formatında kodlanan bazı zararlı scriptler dışında)! Peki nasıl tanırlar? Öncelikle bir AV firması şüpheli dosya hakkında en az iki rapor almalıdır. Daha sonra ise bu dosyanın analizi yapılır ve bir virüs & trojan vs... olduğuna karar verilince, dosyadan hex imza alınır ve virüs veritabanlarına işlenir. AV progra****z da tarama sırasında makinanızdaki programlarda bu veritabanına işlenen hex imzayı arar ve eşitlik sağlandığında dosyanın infecte bir dosya olduğuna karar verilir.
Yani program ister bilgisayara zarar veren bir virüs olsun, ister bilgisayarınızda arka kapılar (backdoor) açarak dışarıya veri sızdıran bir trojan & worm olsun, bunlar bir Av firmasına rapor edilip, firma tarafından analiz edilip veritabanlarına dahil edilene kadar asla bir AV tarafından tanınamaz. Fakat yukarıda da bahsettiğim gibi bazı zararlı scriptler ascii formatında (düz yazı - derlenmemiş) olduğundan AV bu dosyaya bakarak bazı belli rutinlere göre dosyanın şüpheli bir dosya olduğuna karar verebilir.
Bunun doğruluğuna inanmak için bilgisayara format atan bir program yazın ya da trojan serverı tarzı makinada port açan (sayısı önemli değil; ister 1 olsun ister100 olsun) ve dinlenen komutlara göre dışarıya bilgi sızdıran & makinada zararlı komutlar işleten bir program yazın. Bu programı herhangi bir AV'ye tarattığınızda göreceksiniz ki AV bu programı bir virüs vs... olarak tanıyamayacaktır.
Hadi şimdi biz de bir virüsden hex imza alalım :-))
Ben örnek olarak Lorez virüsünden bir hex imza aldım:
58 FF E0 8B 85 57 17 40 00
50 B9 78 56 34 12 FF 95 E6
16 40 00 89 85 53 17 40 00
83 F8 FF 75 01 C3 6A 20 8B
Şimdi örneğin C'de bir program yazdığımızı varsayalım ve Lorez virüsünden aldığımız bu hex imzayı da programda kullandığımızı düşünelim. Yine örnek vermek gerekirse BYTE tipinde bir diziye kodumuzu yerleştirelim:
BYTE lorez_virusu_imzasi[] = {0x58,0xFF,0xE0,0x8B,0x85,0x57,0x17,0x40,0x00,
0x50,0xB9,0x78,0x56,0x34,0x12,0xFF,0x95,0xE6,
0x16,0x40,0x00,0x89,0x85,0x53,0x17,0x40,0x00,
0x83,0xF8,0xFF,0x75,0x01,0xC3,0x6A,0x20,0x8B};
Bu kodu yazdığınız bir programa dahil edip windows altında derleyip only.exe diye bir dosya oluşturduğunuzu varsayalım. Büyük ihtimalle AV progra****z only.exe dosyasına Win95.Lorez (ya da kendi veritabanlarına nasıl bir isimle kaydetmişlerse) virüsü bulaşmış diye bir uyarı verecektir. Ama siz bunun zararsız bir kod olduğunu anlamışsınızdır sanırım :-))
İşte AV yazılımları da aynı bu şekilde kendilerine rapor edilen dosyaları incelerler ve hex imza veritabanlar oluştururlar. Daha sonra da tarama işlemlerinde dosyalarda bu veritabanındaki imzaları ararlar ve dosyanın infecte olup olmadığına karar vererek disinfecte, silme, karantina vs işlemleri gerçekleştirirler.
Şimdi genel olarak bir AV'nin nasıl çalıştığını öğrenmiş olduk. Peki hangi AV'nin daha iyi olduğuna nasıl karar vereceğiz? Aslında her AV bu kısımda aynı işlemleri yaptığından fark burda yok aslında. Genel olarak AV'lerde sistemi aşırı yavaşlatmaması (Norton yüklü makinanın sürünmesi gibi) ve e-posta denetleme vs gibi ek özellikler ve en az sistem harcayarak en çok fonksiyonu en iyi şekilde başaran bir AV'yi iyi olarak nitelemek mümkün.
Ek olarak kendimce iyi bir AV'ye örnek vermem gerekirse Kaspersky AV'yi rahatlıkla söyleyebilirim. Bu yazılımın diğer AV'lere göre bir artısı daha var ki; o da bu virüslerden vs... alınıp veritabanına işlenen hex imzalara ek olarak, dosyayı birçok exe packer ile ayrı ayrı packlenmiş hallerinden de hex imza alarak veritabanına işlemeleri. Böylece örneğin tanınan bir trojanı (eğer packlenmişse unpack ederek başka bir packerla) packleyerek diğer AV'lere karşı tanınmaz hale getirseniz bile KAV bunu daha önceden kendisi de deneyip vertabanına eklemiş olabileceğinden, diğer AV'ler tanımazken KAV bu infecte dosyayı yine tanıyabilir..(ALINTI).