Antivirüs Atlatma Teknikleri

Penetrasyon testlerinde, özellikle hedef makinede belirli dosyaları çalıştırma veya post exploitation aşamasında antivirüs uygulamalarını atlatmak zorunda kalabiliriz. belirli bir antivirüs uygulamalarını atlatmak zor olabilir çünkü tüm antivirüs yazılımlarını atlatmak için mevcut standart bir yöntem yoktur, farklı yöntemler denenmesi gerekmektedir.

Bu yöntemler nelerdir?

  1. Packers:

    Packer, dosya üzerinde sıkıştırma işlemi yapıp dosyanın işlevini değiştirmeden sadece görünümünü değiştirir, böylece imza tabanlı algılamalardan kaçılmış olur.

  2. Crypters

    Zararlı yazılımları şifreleyerek decompile edilmesini önlemek ve tespit edilmesini zorlaştırmak için kullanılır. Artık çoğunlukla bellek içerisinde çalışan işlemin küçük bölümlerinin şifresini çözerek antivirüs ürünlerinin işlerini zorlaştıracak teknikler kullanılıyor. Paketlenmiş veya şifrelenmiş bir programın sonunda paketini açması ve şifresini çözmesi gerekir dolayısıyla dinamik analiz kullanan ürünler bu zararlı yazılımları tanıyabilir.
    İki parçadan oluşurlar:


    2.1 – Client

    Şifrelenecek dosyayı veya zararlıyı stub içerisine enjekte ederek onun üzerinde çalışmasını sağlar.


    2.2 – Stub

    Stub, şifrelenen zararlıyı maskeler ve çözmek için gerekli anahtarı tutar, çalıştırıldığında zararlının şifresini çözer ve kendisini belleğe yükleyerek orada çalışır.

  3. Downloaders, Droppers, and Staged Loading

    Gerçek zararlı yazılım yüklenmeden önce sistem hakkında bilgi edinmek için birçok türde kötü amaçlı yazılım kullanılabilir. Güvenlik işlemlerini öldürebilirler, ağ algılamasını önlemek için veya zararlı yazılımı doğrudan Windows işlemlerine enjekte etmek için şifrelenmiş arka kapıları kullanarak indirebilirler.

  4. Polymorphic Malware

    Sınırsız şifre çözücü anahtar bulundurur. Bunu sağlamak için bazı zararlı yazılımlar çok katmanlı şifreleme tekniği kullanırken bazıları da Random Decryption Algorithm (RDA) tabanlı şifre çözücü anahtar tekniği kullanır. Böylece zararlı yazılımlar çok katmanlı ve çok şifreli yapısı sayesinde polimorfik kod gizleme yöntemi ile kaba kuvvet (brute-force) ataklarına karşı dirençli bir mekanizma oluşturmuş olur. Program çalıştırıldığında şifreli gövde kısmı şifre çözücü anahtar sayesinde bellek üzerinde çözülerek kod aktif hale getirilip çalıştırılır.


    4.1- Polimorfik kod yapısı ve kodun evrimleşmesi.

  5. Metamorphic Malware

    Metamorfik kötücül kod anatomisi ve kod neslinin sembolik gösteriminde görüleceği üzere kodun %20’lik çalışan kısmı şifrelenmekte, bununla birlikte %80’lik kısım ise metamorfik kod üretim ve dönüştürme araçlarından oluşmaktadır. Bu araçlar sayesinde metamorfik yapıdaki kötücül kodlar her bir nesilde koda gövdenin şifrelenmesinin yanı sıra kodun yapısını değiştirerek kodun tanınmasını engelleyici özellikler eklenebilmektedirler. Kod yapısının farklı olmasına rağmen bu durum kodun işlevselliğini veya davranışını değiştirmemektedir. Koda eklenen işlevsellikler genelde şaşırtma amaçlı, iş yapmayan ya da mevcut kod bloklarının sırasının değiştirilmesi şeklindedir.
    5.1- Metamorfik  kod anatomisi ve kod neslinin sembolik gösterimi.

  6. Oligomorfik Malware

    Birden fazla şifre çözücü kullanır ve her yeni nesilde farklı şifre çözücü anahtar kullanır. Yani yapısında sabit şifre çözücü bulunmaz, bunun yerine şifre çözücü anahtar kümesi üreten fonksiyon bulundurur. Her yeni nesilde yapısında bulunan yüzlerce farklı şifre çözücü anahtarlardan herhangi birini rastgele kullanır.


    6.1- Oligomorfik  kodların yapısı.

Zararlı yazılımlar, sandbox içerisinde çalıştırılıp, analizden kaçınmak için CPU zamanından, kayıt defteri girdilerini, insan etkileşimlerini saptamayı deneyebilir, makineyi birinin kullanıp kullanmadığını görmek için yakın zamanda fareyi hareket ettirip ettirmediğini kontrol edebilir. Zararlı yazılım bu teknikleri ile başarılı olursa analizden kaçınmak için kendisini çalıştırmaz.

Zararlı yazılım geliştiricileri analizden ve antivirüs uygulamalarından kaçınmak için hangi yöntemleri kullanır?

  1. Antidisassembly and Antidebuggers

    Kötü amaçlı yazılım geliştiricileri, araştırmacıların nasıl çalıştığını ve tehditleri analiz etmek için hangi araçları kullandıklarını bilir. Örneğin araştırmacılar kodları incelemek için disassembler ve debuggerlar kullanırlar; disassembler ve debuggerları algılayabilen bir çok araç ve teknik vardır. Kötü amaçlı yazılım geliştiricileri bu teknikleri zararlının sanal makinede çalışıp çalışmadığını veya debugger içinde çalışıp çalışmadığını kontrol etmek için kullanabilir.

  2. Rootkits

    Sistemde belli portları, processleri, klasörleri gizleme gibi özelliklere sahip, hooking konusunda gelişmiş yazılımlardır. Sanallaştırma, rootkit yöntemlerine yeni bir katman ekliyor çünkü hypervisor çekirdeğinin altında yüksek ayrıcalıklarla çalışıyor. Kötü amaçlı yazılımlar bazen dosyaları, ağ bağlantılarını ve diğer işlevlerini işletim sisteminden gizleyerek antivirüse yakalanmamak için rootkit gibi davranabilir. Çoğu antivirüs bu durumu tespit etmek için kendi çekirdek sürücüsü ve korumaları ile çalışır.

  3. Code, Process, and DLL Injection

    Bir programa, sürece, yazdığımız kodu enjekte edebiliriz. Zararlı yazılım geliştiricileri kodu gerekli bir Windows işlemi ile çalıştırmak için genellikle bu teknikleri kullanırlar. Zararlı yazılım, Windows için gerekli bir süreci seçerek antivirüs yazılımı tarafından bulunmasını ve yok edilmesini zorlaştırabilir ve bilinen herhangi bir ağ yeteneklerine sahip süreçleri kötüye kullanarak trafiğini maskeleyebilir.

 Bu örnekte zararlı .dll dosyası oluşturulmuş ve processe enjekte edilerek meterpreter oturumu alınmıştır.

Powershell ile processe enjekte ediliyor.

Meterpreter oturumu geliyor.

Zararlı yazılımlar antivirüs yazılımlarından kaçınmak için kendilerini legal bir programa ekleyebilirler, zamanlaması varsa analizden kaçmak için uyku halinde olabilirler. Statik analiz antivirüsün dosya hakkında öğrenebileceği şeyleri sınırlar çünkü bu dosyalar paketlenebilir veya şifrelenebilir. Bir çok antivirüs yazılımı davranışlarına göre yazılımları tanıma sistemi oluşturmuştur. Çalıştırılabilir dosyaları önce o makineye benzer sandbox oluşturarak onun içerisinde çalıştırır. Bilinen kaçırma teknikleri ve zararlı yazılım davranışlarını denetleyerek bu çalıştırılabilir dosyanın kötü amaçlı olup olmadığını tespit eder.

Yerel ağınızda güvenlik açığı var mı? Intranet Security Checkup hizmetimiz bu sorunun yanıtını size verebilir.