| Polimorfik Virüsler |
|
|
|
| Administrator tarafından yazıldı |
| Pazar, 04 Nisan 2010 16:37 |
Polimorfik Virüs Tanımı:Polimorfik virüslerin kodlarının değiştirilmesiyle kastedilen:
Polimorfik Virüslerin Yapısı:Polimorfik virüsler 3 kısımdan oluşmaktadır: Şifre Çözme kısmı: Bu kısım şifreleme rutinini ve gerekli ise anahtar bilgisini içermektedir. Virüslü bir dosya çalıştırıldığında şifre çözücü rutin devreye girerek virüsün şifreli kısımlarını çözer ve kontrolü şifresi çözülen zararlı koda devreder. Virüs gövdesi: Zararlı kodu içermekte, virüslü dosyalarda şifreli olarak bulundurmaktadır. Virüslü dosya çalıştırıldığında belleğe aktarılıp şifresi çözülmekte, kodda belirtilen işlemlere göre virüsün kendini diğer dosyalara kopyalaması ve diğer zararlı işlemleri yapmasını sağlamaktadır. Mutasyon Motoru: Zararlı kod ile birlikte şifreli olarak tutulmaktadır. Mutasyon motoru, virüslü dosya çalıştırıldığında şifre çözme rutini ile şifresi çözülüp, belleğe aktarılmakta ve bulaşacağı diğer dosyalara kopyalanacak mutasyona uğramış virüs versiyonlarını oluşturmaktadır. Bunun için virüs gövdesini işlevselliğini bozmayacak şekilde değiştirmekte, farklı bir şifreleme rutini ve anahtarı oluşturmaktadır. Bu sayede şifreleme rutinine göre tespit işlemi yapan antivirüs yazılımlarının aldatılması amaçlanmaktadır. Mutasyon motoru işlemini tamamladıktan sonra mutasyona uğramış virüs ve mutasyon motoru yeni oluşturulmuş şifreleme rutini ile şifrelenip virüs bulaştırılan dosyaya kopyalanmaktadır. Polimorfik Virüslerin Tespiti:Bütünlük Kontrolü (CRC Checking): Bu yöntemde dosyalar hakkında bir durum tablosu tutulur. Antivirüs yazılımı taranan dosyaların CRC’sini hesaplar ve durum tablosuna kaydeder. Sonraki taramalarda, ya da dosyaya erişildiğinde CRC değeri tekrar hesaplanır ve dosyanın virüslü olup olmadığına CRC değerinin değişip değişmediğine bakılarak karar verilir. Bu yöntem günümüz antivirüs yazılımlarında nadiren kullanılan oldukça eski bir yöntemdir. Dezavantajları:
İmza Tabanlı Tarama: Antivirüs tarama motoru sistem belleğini, sistem başlangıç bölgesini (boot sector) ve dosyaların tutulduğu birimleri (hard disk, flash disk, floppy, cdrom) tarar ve antivirüs yazılımda yüklü olan, virüslerin karakteristik içeriklerine karşılık gelen bit dizini/imzalarla (signature) karşılaştırma yapar. Polimorfik virüslerin değiştirilmiş olması ihtimaline karşılık imzalarla birebir uyum aranmamakta, kısmi uyum yeterli görülebilmektedir. Dezavantajları:
İmza tabanlı tarama yapan bazı gelişmiş antivirüs yazılımlarında
polimorfik virüsler tespit edildiğinde mutasyon algoritması
çalıştırılarak mutasyona uğramış hallerine ait virüs imzaları
oluşturulup antivirüs imzalarına eklenmektedir. Böylece mutasyona
uğrayarak yayılmış polimorfik virüsler tespit edilebilmektedir.
Proses Davranışlarının İzlenmesi: Bu yöntem kritik dosyaların virüslere karşı güvenliğini sağlamayı amaçlamaktadır, tüm sistem için bir antivirüs koruması değildir. Kritik dosyalara erişimine izin verilen prosesler antivirüs yazılımında yüklüdür ve erişim listesine uygun olmayan erişimler engellenir. Heuristic İzleme Yöntemi: Polimorfik virüslerin tespitinde imza
karşılaştırmasının yetersizliğinden dolayı sistem aktivitelerinin
izlenmesi için farklı teknikler geliştirilmiştir. Heuristic İzleme virüs
olan ve olmayan kodları/programları birbirinden ayırmak için
tanımlanmış, virüslerin sebep olabileceği beklenmeyen, tutarsız
işlemleri gerçek programların işlemlerinden ayıran kurallara göre sistem
aktivitelerini izleme yöntemidir. Olasılık hesaplamaları yapar. Bir
dosya ya da programın virüslü olduğuna karar vermek için belirlenen
olasılık eşik değeri ne kadar düşük tutulursa, yanlış alarmlar alma
riski de o kadar artacaktır. Heuristic sistemin başarılı olabilmesi için
heuristic kuralları çok fazla sayıda programın davranışları detaylı
olarak incelendikten sonra oluşturulmalıdır. Aksi takdirde kuralları
yetersiz olan bir heuristic sistem çok sayıda yanlış alarmlar
üretecektir ve kullanımı fayda getirmeyecektir. Sonuç:Polimorfik virüsler antivirüs yazılımları tarafından tespit edilmesi en zor olan virüs türleridir. Basit imza karşılaştırma ve bütünlük kontrolü yapma yöntemleri bu tür virüslere karşı yeterli koruma sağlayamamaktadır. Mantıksal izleme ve heuristic yöntemler polimorfik virüslerin tespiti için daha gelişmiş tarama yöntemleridir, fakat başarı düzeyleri ilgili bileşenlerin çalışma yöntemlerine, kullandıkları kuralların yeterliliğine ve tarama motorlarının gücüne bağlı olarak farklılıklar gösterebilmektedir. Antivirüs yazılımı seçimi yapılırken çeşitli antivirüs yazılımlarının polimorfik virüslerin tespiti konusundaki başarıları karşılaştırılmalıdır. Birçok antivirüs yazılımı virüs imzaları bulunan polimorfik olmayan virüslerin tespitinde %99'a varan başarılar gösterirken, polimorfik virüslerin tespitinde bu başarı oranı ciddi şekilde düşebilmektedir [www.av-comparatives.org]. Referanslar:[1] "Understanding and Managing Polymorphic Viruses.", The Symantec Enterprise Papers [2] "Antivirüs Yazılım Karşılaştırmaları", www.av-comparatives.org [3] "Advanced Virus Detection Scan Engine and DATs", Executıve Whıte Paper, www.networkassociates.compolimorfik-virusler BİLGİSAYAR SEMİNERİ RAPORU POLİMORFİZM VE TARİHÇESİ Anti-virüs yazılımlarının ortaya çıkmasından bu yanavirüs yazılımcıları virüslerini gizlemenin yollarını aramışlardır. Bu konudabirkaç deneme yapıldı ancak hiçbiri başarılı olamadı. Bir deneme virüsün kodunubir şifreleme anahtarıyla şifrelemek ve imza taraması sırasında virüsü gizleyebilmeyeyönelikti. Ancak şifrelenmiş bir virüs çalışmayacağından dolayı tekrar deşifre edilmesigerekiyordu. Bu tip virüslerin işlevsel kodunun başında bir şifreleme prosedürüvardır ve bu prosedür geri kalan virüs kodunu deşifre etmekten sorumludur. Ancakanti-virüs yazılımları için bu bir problem teşkil etmedi. Virüsün bilinen birimzasını alıp deşifre ya da şifreleme prosedüründeki anahtarla işlemesokulmasından sonra değiştirilmiş kodlar rahatlıkla tanınabilmekteydi.(4) Mark Washburn ilk defa yarı-polimorfik bir virüs geliştirenyazılımcıydı. Anti-virüs yazılımlarının; deşifre prosedüründen bir imzayaratmasını imkansız hale getirmek için, virüsü deşifre prosedürü içinderasgele komutlar oluşturacak şekilde tasarlamıştı. Ancak bu da tam bir gizliliksağlayamamıştır. Rasgele kullanılan ve deşifre algoritmasını tanınmaz haldegetirmeyi amaçlayan komut sayısı sınırlıydı ve tümü dead code niteliğindeydi.(4) İlk polimorfik üreteç ve dolayısıyla da polimorfik virüs,Dark Avenger takma isimiyle bilinen bir virüs yazılımcısı tarafından geliştirilmiştir.MtE (Mutation Engine) adı verilen bu üreteç herhangi bir virüs tarafındankullanıldığında virüse polimorfik bir özellik sağlamaktaydı. Bu üreteç deşifreprosedürü arasına rasgele komutlar yerleştirmek yerine deşifre algoritmasınıdinamik olarak oluşturabilmekteydi. Bu da her seferinde farklı bir deşifre algoritmasıdemekti.(4) Bu durum anti-virüs yazılımcıları için bir takımproblemler teşkil etti. 1992 ile 1993 tarihleri arasındaki yaklaşık bir seneliksüre zarfında XTREE gibi bir takım anti-virüs firmaları, artık anti-virüsyazılımı üretmeyeceklerini açıkladılar ve resmen piyasadan çekildiklerini söylediler. TPE’ nin (Trident Polymorphic Engine) çıkış yılı 1993’lerin başına rastlar. TPE MtE’ den boyut açısından daha küçük olmasına karşın anti-virüsprogramlarını daha çok uğraştırmıştır.(3) POLİMORFİK ÜRETEÇLER 1 Tanım Polimorfik Üreteçler herhangi bir virüs tarafındankullanıldığı zaman onlara polimorfik özellik kazandıran programlardır.Encrypting Virüsler’ in başında bulunan Decryptor’ ın anti-virüs programlarıtarafından tanınmaması ve kullanılmaması için sürekli olarak farklı decryptorprosedürleri üretirler. (6) Polimorfik Üreteçler tüm virüs kodunu polimorfikyapmak yerine sadece Decryptor olarak bilinen yapıyı polimorfik yaparlar. 2 Bilinen Polimorfik Üreteçler MtE (Mutation Engine) TPE (Trident Polymorphic Engine) NED (Nuke Encryption Device) DAME (Dark Angel’s Multiple Encryptor) DGME (Darwinian Genetic Mutation Engine) DSME (Dark Slayer Mutation Engine) GPE (Guns’n Roses Polymorphic Engine) (3) .3 MtE (Mutation Engine) Herhangi bir virüsün yapısının aşağıdaki gibi olduğunudüşünelim; Virus Entry Point: Main virus body Bu virüs kodu MtE kullanıldıktan sonra şu hali almaktadır; Virus entry point: Polymorphic Decryptor ***************************** ** encrypted ****************** ** main virus body ************* ***************************** ***************************** MtE yaklaşık 2.4 kb boyutundadır ve based ya daindexed adresleme modları kullanan decryptor üretebilmektedir. Decryptor’ ınuzunluğu değişkendir ve Decryptor her adımda bir wordlük virüs kodunu deşifre eder.(2) Decryptor kodu içerisinde SUB, ADD, XOR, ROR, ROLherhangi bir sayıda veya sırada bulunabilir. Şifre anahtarını ve diğerbilgileri yükleyen kod da rasgele sayıda assembly komutlarından oluşabilmektedir.Bunlar ADD, SUB, TEST, XOR, OR, SHR, SHL, ROR, MOV, XCHG, JNZ, PUSH, POP gibikomutlar olup toplam 8086 komutlarının yarısını kapsamaktadır. (2) MtE oluşturduğu Decryptor’ ların 5.5% inde aslındahiçbir etkisi olmayan kodlar kullanır ve ana virüs kodu şifrelenmemiş yani plain-textolarak bulunur. (3) 4 TPE (Trident Polymorphic Engine) TPE en çok bilinen ikinci polimorfik üreteçtir. MtE’nin ortaya çıkmasından yaklaşık bir sene sonra Masud Khafir isimli bir virüsyazılımcısı tarafından bulunmuştur. (2) TPE MtE’ ye benzer yapıdadır ancak boyut olarak dahaküçüktür ve daha güçlü bir üreteçtir. TPE yaklaşık olarak 1.5 kb uzunluğundadırve Decryptor her adımda bir bayt deşifre edebildiği gibi bir word de deşifre edebilir.(2) TPE de MtE gibi genel olarak iki şey yapar; 1) Orjinal virüs kodunu şifreler. Bu şifreleme herseferinde farklı şekilde olur. (4) 2) Şifrelenmiş kod için Decryptor yani Deşifre prosedürüoluşturur. Doğal olarak Decryptor da her seferinde farklı yapı da olmaktadır. (4) Aynı MtE’ de olduğu gibi TPE’de de DecryptorŞifrelenmiş virüs kodunun başında yer alır. TPE’ nin MtE’ den en üstün yanıdaha fazla adresleme modu kullanması ve anti-virüs programlarının aradığıklasikleşmiş Decryptor yapısından kurtulmasıdır. GENEL ŞİFRE ÇÖZÜCÜLER (GENERIC DECRYPTORS) 1 Emülatörler 1993 yılında anti-virüs firmaları tüm PolimorfikVirüsler’ i deşifre edebilecek bir yol aramaya başladılar. Eğer şifrelenmiş birvirüsü deşifre edebilirlerse, hala belirli imzaları tarayabilirler ve virüsü tanıyabilirlerdi.Ancak bilinmeyen bir şeyi deşifre etmenin yolunu kimse bulamıyordu. (4) Sonunda bir emülatör geliştirildi. Emülatör her komutuanlayabilen ve bu sayede, bir komut çalıştırılırsa ne olacağını bilen bir yapıdır.Emülatör şu şekilde çalışmaktadır: Taranan dosyadaki tüm komutlar kısıtlı birhafıza alanında çalıştırılır ve eğer polimorfik bir virüs taranan dosyayabulaşmışsa çalışmadan önce kendini deşifre edecektir. Bu noktada emülatöraradığı imzayı yakalar ve virüsü tanımış olur. (4) Genel Şifre Çözücüler 4 modülden oluşurlar: -İşlemci Emülatörü -Hafıza Emülatörü -Sistem Emülatörü -Karar Mekanizması .1.1 İşlemci Emülatörü İşlemci Emülatörleri Intel İşlemcileri’ nin bir taklididir.Intel İşlemcilerinde olduğu gibi bir Instruction Pointer’ ı bulunur ve clockcycle’ ları üretilir. İşlemci Emülatörü IP’ nin gösterdiği komutu okur ve sanalregister’ ları günceller. Kısaca işlemciyi taklit eder. (4) 1.2 Hafıza Emülatörü PC’ nin hafıza yapısını taklit eder. Eğer işlemciemülatörü tarafından işletilen bir kod parçası hafızaya birşey yazmak isterseya da hafızadan birşey okumak isterse gerçek hafıza yerine hafıza emülatörü kullanılır.(4) 1.3 Sistem Emülatörü Bu emülatör işletim sistemini ve donanımı taklit eder.Eğer bir program sistem fonksiyonlarına erişmek isterse sistem emülatörü ofonksiyon sağlanmış gibi davranır. Ya da bir tuşa basılması isteniyorsa sistememülatörü o tuşa basılmış gibi davranır. (4) 1.4 Karar Mekanizması Amaç; şifrelenmiş virüs kodunu deşifre etmek ise bütünbir programı çalıştırmak anlamsız olur ve dosyaların taranması saatlerce sürebilir.Karar Mekanizması bir takım kurallara bağlı kalarak programı emüle etmeye devamedilip edilmeyeceğine karar veren yapıdır. (4) Emülatörlere Saldırma Teknikleri 1998 yılında emülatörlere saldıran polimorfik virüslererastlandı. Şu ana kadar bütün emülatör parçalarına saldırılmıştır. 1 İşlemci Emülatörüne Saldırma Teknikleri Saldırı yolları oldukça çeşitlidir. Bunlardan birisiişlemci emülatöründe tanımlı olmayan komutlar kullanmak ve emülatörün çökmesineya da yanlış çalışmasına sebep olmaktır. Bu en sık kullanılan saldırıtekniklerinin başında gelir. (4) Bir diğer yol işlemcinin hatalarından faydalanmaktır.En yaygın olan saldırı tekniklerinden birisi de işlemciler arasındakifarklılıklardan faydalanma yollarıdır. (4) .2 Hafıza Emülatörüne Saldırma Teknikleri Emülatörün hafızası PC’ nin orjinal hafızasındanoldukça küçük bir yapıdadır. Yeni tasarlanan polimorfik virüsler emülatörünhafızasını anlamsız bir takım baytlarla doldurup, hafızanın taşmasına yol açabilirler. .3 Sistem Emülatörüne Saldırma Teknikleri Bu emülatörü devre dışı bırakmak ya da yanlışçalışmasına yol açmak için polimorfik virüsler çok sayıda sistem fonksiyonuçağırırlar. Ctrl+Break kombinasyonu bir sistem fonksiyonunuçağırır. Bu fonksiyon da bilindiği gibi programı sonlandırmak için kullanılır.Bu da emülatörün sonu demektir. Bu noktadan sonra emülatör kendini istemedenkapatır ve virüs çalışmaya devam edebilir. (4) 4 Karar Mekanizmasına Saldırma Teknikleri İlk saldırılar ve saldırıların çoğu bu birime yapılmaktadır.1994 yılındaki bir polimorfik virüsün kod başlangıcında decryptor bölümünü tamamıyoktu. Decryptor dosyanın çeşitli yerlerine serpiştirilmişti. Bu çeşitlidallanma komutları kullanılarak yapılabilir. Emülatörün karar mekanizması birvirüs kodunu incelerken ilk gördüğü dallanma komutundan virüsün decryptorkodunun bittiğini ve deşifre edilmiş bir virüs koduna dallanıldığını düşünmektedir.Ancak bu yapıda decryptor parça parça yerleştirildiğinden dolayı bu kuralgeçersiz kalmıştır ve emülatör çökmüştür. (4) BlackBat Virüsü BlackBat virüsü polimorfik bir virüstür. Şifrelemeveya deşifre etme her adımda bir byte üzerinde yapılır. Decryptor prosedürü anavirus kodunun başına yerleşmiştir ve içerdiği komutlar sabittir. Değişenkısımlar esi ve ecx register’ larıdır. Bu değiştirme işlemi mutateDecryptoradlı alt program sayesinde yapılır. .code ;Decryptor StartOfVirusCode: call GetDelta GetDelta: DB 5Eh ;pop esi DB 83h ;add esi, EncryptedVirusCode - GetDelta DB 0C6h DB offset EncryptedVirusCode - offset GetDelta DB 0B9h ;mov ecx, ENCRYPTED_SIZE DD ENCRYPTED_SIZE DecryptByte: DB 80h ;xor byte ptr [esi], 00h DB 36h EncryptionKey: DB 00h DB 46h ;inc esi DB 49h ;dec ecx jnz DecryptByte EncryptedVirusCode: ;Buradan itibaren olan kod şifrelenmişkoddur. Üstteki kod Decryptor alt programına aittir. DB ilegörünen ifadeler noktalı virgülün sağına yazılmış olan ifadelerin hexadecimal karşılıklarıdır.Bu alt programda yapılan işlem EncryptedVirusCode label’ ından GetDelta label’ının offset adreslerini çıkarmak ve esi register değerine ekleyip decryptorkodunu atlayarak geri kalan virus kodunu deşifre etmekten ibarettir.ENCRYPTED_SIZE ve 00h ifadeleri virus kodu her çalıştığında EncriptionProsedürü tarafından update edilmektedir. Alttaki kod parçası Decrytor AltProgramında kullanılanesi ve ecx register’ larını değiştirmektedir. Alt programda kullanılanRandomRegister isimli altprogram iki adet rasgele seçilmiş register almak için kullanılır.Bu alt program her çalıştığında al’ ye seçilen register’ ın hexadecimal ifadesinikaydeder. Bu alt program iki kere kullanılmıştır, çünkü Decryptor kodu esi veecx olmak üzere iki adet register kapsar. MutateDecryptor PROC ;Rasgele iki register seç call RandomRegister ;Birinci register mov ah, al ;Save It GetAnotherRegister: call RandomRegister ;İkinci register cmp ah, al ;Birinci ile aynı ise je GetAnotherRegister ;başka bir register seç ;Decryptor altprogramının register değerlerini değiştir. mov bl, 58h ; "pop <register1>" add bl, al ;Register 1 mov byte ptr [edi + 4], bl mov bl, 0C0h ; "add <register1>, ..." add bl, al ;Register 1 mov byte ptr [edi + 6], bl mov bl, 0B8h ; "mov <register2>, ..." add bl, ah ;Register 2 mov byte ptr [edi + 8], bl mov bl, 30h ; "xor byte ptr [<register1>],..." add bl, al ;Register 1 mov byte ptr [edi + 14], bl mov bl, 40h ; "inc <register1>" add bl, al ;Register 1 mov byte ptr [edi + 16], bl mov bl, 48h ; "dec <register2>" add bl, ah ;Register 2 mov byte ptr [edi + 17], bl ret MutateDecryptor ENDP Op code elde etme işlemi komutun saf haldeki hex koduile register’ ın hex karşılığı toplanarak yapılır. Bu alt ptogram bl register’ına Decryptor içerisinde kullanılan komutların hex karşılıklarını kaydeder vedaha sonra da al ve ah registerlarında saklanmış olan ve rasgele seçilmiş ikifarklı register’ ın hex koduyla toplayarak yeni komut satırları oluşturur. Decryptor’ ın değiştirilme işlemine edi register’ ına 5eklenerek başlanmasının sebebi; Decryptor kodu içerisinde kullanılan CallGetDelta komutunun 4 baytlık bir komut olmasıdır. Bu komutun uygulanmasebebinin Emülatörler’ i yanıltmak olduğuna inanılmaktadır. BlackBat Virüsü www.rohitab.com adresinden alınmıştır.( Bknz. (5) ) SONUÇ Gelecekte de şimdi olduğu gibi yeni virüsler ve buvirüslere karşı geliştirilen yeni anti-virüs yazılımları olacaktır. Hangitarafın galip geleceği ise göreceli ve zamanla değişen bir cevaplar zincirine bağlıdır. Bir virüs yazılımcısı yeni bir virüs geliştirecek vebilgisayar dünyasını bir süre meşgul edecektir. Ancak sonuçta her zaman olduğu gibianti-virüs yazılımları yeni teknikler geliştirerek virüsü deşifre edeceklerdir.Virüs Yazılımcıları’ nın ne sebepten dolayı ve ne şekilde topluma zararlıinsanlar olduklarını anlayamadığımız sürece de durum bu şekilde devam edecektir. 9. KAYNAKLAR (1) http://www.Symantec.com (2) http://www.bocklabs.wisc.edu/ (3) http://www.cknow.com (4) http://users.knoware.nl (5) http://www.rohitab.com (6) The Computer Virus HandBook – Richard B. Levin
|
| LAST_UPDATED2 |