SiberGüvenlik
April 17, 2020

Antivirüs Programları Nasıl Çalışır ?

Firmalar antivirüs programlarıyla birbirleriyle yarışırken, en iyi yöntemlerle zararlı yazılımları tespit etmek için adeta yarışmaktadırlar. Peki antivirüs yazılımları nasıl çalışıyor.Virüsleri nasıl tespit ediyorlar. Ne kadar güvendeyiz ?. Persona Non Grata için derledik. :)

Virüs Nedir ?

Özetle, Virüsler aslında "çalıştığı zaman farklı zararlar veren" bilgisayar programlarıdır. Eğer bu programlar (yada virüs kodları) herhangi bir şekilde çalıştırılırsa kodlanma şekline göre bilgisayarımıza zarar vermeye başlar. Firmalar ise virüsleri engellemek için antivirüs programları geliştirmeye başlamışlardır.

Nasıl Tespit Edilirler ?

İlk çıkan virüsler de mantık çok basitti, bilinen bir virüsün hex kodu (16 ‘lık sayı siteminde kodlanmış hali) karşılaştırma için örnek olarak alınır, tarama yapılacağı zaman da bu imza bütün dosyaların içinde aranırdı. Eğer imzaya başka bir dosyada rastlanırsa virüs olarak algılanıp silinirdi. Bu yöntem virüslerin ilk başladığı zamanlar yani 1990'larda çok popülerdi. Ancak on yıl sonra 2000 lerde bu yöntem değişmeye başladı ve trojan, keyloger, worm antivirüs yazılımcılığı yeni ilgi alanı olmaya başladı.

Peki Antivirüs Programı Nasıl Çalışır?

Tabi ki zaman ilerledikçe mutasyona uğrayan virüsler yazılmaya başlandı, Çeşit çeşit cyrpterlar ve packerlar (şifreleyiciler) çıktı. Antivirüslerde hantallaşsa da bu konuda kendini geliştirdi. Örneğin dinamik tarama, statik tarama , heuristic(sezgisel) tarama gibi yöntemler kullanılmaya başlandı ve artık antivirüsler aptal programlar olmaktan çıktı.

(Tabi kodlayan @keyiflerolsun değilse)

Statik tarama; dosya hard diskte iken yani çalışmazken yapılan taramaydı ve bunu atlatmak mümkündü. GetProcAddress(DLL dosyalarına direk bağlanma) ve LoadLibrary (yüklü dosya) kullanılarak virüsün adresini aldıktan sonra fonksiyon gösterici çağırarak, import(içeri aktarım) tablosunu tertemiz yapılabiliyor.

Antivirüsler Virüsü Nasıl Tespit Ederler ?

Ama asıl konu programın ram da aktif halde olduğunda kontrolüdür. Programın şüpheli davranışları takip edilir, program herhangi bir yere ek dosya çıkarıyor mu, windows registry (Windows sistem ayarlarının tutulduğu veri tabanı) dosyasına erişim yapıyor mu, registry'nin neresine erişip neleri değiştiriyor, hangi fonksiyonları kullanıyor? Burada önemli olan konu ise fonksiyonları doğrudan adresini kullanarak fonksiyon göstericiler ile kullanmak (yani sahte bir Windows dosyası gibi davranır).

Heuristic(sezgisel) yöntem denilen son yıllarda çıkan bir tarama tekniği sezgisel ya da buluşsal bir problem çözme tekniğidir. Sonucun doğruluğunun kanıtlanabilir olup olmadığını önemsememektedir fakat genelde iyiye yakın çözüm yolları elde eder. Sezgisel algoritmalar ise geçiş süresinde daha verimli hale gelebilmek için en iyi çözümü aramaktan vazgeçerek çözüm zamanını azaltan algoritmalardır.
Sezisel algılama (heuristic), dinamik tarama ile birlikte kullanılırsa daha iyi sonuçlar alınabiliyor. Programın kullandığı fonksiyonlara bakarak birçok zararlı yazılım tespit edilebilir. Örneğin, bir program registry apileri(uygulama arayüzü) ile registry'nin(veri tabanı dosyalarının) başlangıçta çalışacak programlar listesine kendisini ekliyorsa, aynı zamanda bu program keyboard hook apilerini(klavye takip arayüzü) kullanıyorsa, aynı zamanda socket apilerini(pin,yuva arayüzü) de kullanıyorsa, bunun kolayca bir keylogger olduğu anlaşılabilir.

@ykslkrkci tarafından Persona Non Grata için hazırlanmıştır. Telegram grubumuzakatılın.