Antivirüs Yazılımları Nasıl Çalışır?

Antivirüs Yazılımları Nasıl Çalışır?
Eskiden mantık çok basitti, bilinen bir virüsün hex kodundan belirli bir bölüm imza olarak alınır, verita banına eklenirdi, tarama yapılacağı zaman da bu imza tüm dosyaların içinde aranırdı, eğer imzaya rastlanırsa dosya virüslü olarak işaretlenirdi.Bu dönemde, yani 90 larda, virüs denilen programlar çok yaygındı, ancak 2000 lerde artık tarih oldu denilebilir, trojan, worm, keylogger tarzı zararlı yazılımlar artık antivirüs yazılımcılarının asıl ilgi alanı.Tabi zaman ilerledikçe yepyeni yöntemler geliştirildi, mesela hex imzası tanınmasına karşı mutasyona uğrayan virüsler yazıldı, çeşit çeşit cyrpter’lar packer’lar çıktı vs. Doğal olarak antivirüsler de, daha hantal olmakla birlikte kendini geliştirdi.

Antivirüs Yazılımları Nasıl Çalışır?

Mesela artık, statik tarama, dinamik tarama, heuristic vs, birsürü yeni yöntem kullanıyor antivirüsler, eskisi gibi aptal programlar değiller. Statik tarama denilen, dosya hard diskte iken, yani çalışmıyorken yapılan taramayı atlatmak çok kolaydır, fonksiyonları, LoadLibrary ve GetProcAddress kullanarak adresini aldıktan sonra, fonksiyon gösterici ile çağırarak, import tablosunu tertemiz yapabilirsiniz, çok basit bir xor yöntemi ile, code section u da tamamen şifreleyebilirsiniz, en bilinen virüs ya da trojan bile bu yöntemle statik taramadan rahatlıkla geçer, hiç bir antivirüs tanıyamaz.

Ama asıl önemli olan, program ram de iken, yani çalışıyorken yapılan kontroldür, programın şüpheli davranışları takip edilir, herhangi biryere ek dosya çıkarıyor mu? registry e erişiyormu, neresine erişip neyi değiştiriyor, hangi fonksiyonları kullanıyor vbg.

Burada ayrıca şunu önemle belirteyim, fonksiyonları , doğrudan adresini kullanarak fonksiyon göstericileri ile kullanmak, günümüz anti virüslerini kesinlikle kandıramaz, çünkü bu fonksiyonlar eninde sonunda, asıl işi yapan native api denilen kernel fonksiyonlarını çağıracaktır, herhangi bir kernel fonksiyonu çalışırken, o process geçici bir süreliğine kernel moda (ring 0) geçer (bkz :trap gate) ve fonksiyon öyle çalıştırılır.

Bu aşamada sysenter ya da amd için syscall instructionu kullanılır.

İşte antivirüs yazılımı, bu instructionu doğrudan kendi fonksiyonuna yönlendirir ve herhangi bir sistem çağrısı önce antivirüsün fonksiyonu tarafından denetlenir, eğer uygun ise process kernel moda geçerek ilgili fonksiyon çalıştırılır, bu işleme ayrıca kernel hook denir ve, günümüz antivirüslerinin en önemli yeteneğidir.

Gelelim heuristic denilen olaya, kelime anlamı sezgiseldir. Yani antivirüsün, daha ilk defa gördüğü halde bir yazılımın zararlı olup olmadığına karar verebilme yeteneğidir.

Antivirüsleri hantal ve aptal programlar olmaktan çıkaran, ama bazı ucuz ve dandik antivirüslerin abarttığı hatta b… çıkardığı bir olaydır.

Bu işlem genellikle bir dosya üzerinde puanlama sistemi ile çalışır. Diyelim ki bir dosya taranacak, EP (entry point) Code section dışında ise, bu 1 puan, code section yazılabilir ise, bu 2 puan, dosyanın simgesi jpg ya da klasör simgesi ise bu 1 puan, dosya pack li ise bu 1 puan, etti 5 puan, mesela herhangi bir dosya 5 veya üstü puan almışsa antivirüs bunu zararlı yazılım olarak işaretler.

Ayrıca heuristic dinamik tarama ile birlikte çok güçlüdür, programın kullandığı fonksiyonlara bakarak birçok zararlı yazılımı tespit edebilir, örneğin, bir program registry apileri ile registry nin başlangıçta çalışacak programlar listesine kendisini ekliyorsa, aynı zamanda bu program keyboard hook apilerini kullanıyorsa, aynı zamanda socket apilerini de kullanıyorsa, bunun kolayca bir keylogger olduğu anlaşılabilir.

Ancak tabi antivirüsler, zararlı yazılım geliştiren dahiler yeni yöntemler buldukça kendini geliştirir, doğal olarak hep bir adım geriden gelmeye mahkumdur, burada yeni polymorphic packer gibi yeni yöntemleri yazmaya kalksak roman olur, zararlı yazılımlar her zaman bir adım önde olacaktır.

Yorumlar