virüs kodu yazma / Virüsler ve diğer kötü amaçlı yazılımlar nasıl engellenir ve kaldırılır? - Microsoft Desteği

Virüs Kodu Yazma

virüs kodu yazma

kaynağı değiştir]

Truva atları, ilgi çekici görünen ama aslında aldatmaya yönelik zararlı dosyalardır. Sistemde var olan dosyalara kod eklemektense ekran koruyucu yüklemek, elektronik postalarda resim göstermek gibi bir işle iştigal oldukları izlenimi uyandırırlar. Ancak, aslında arka planda dosya silmek gibi zararlı etkinlikler gerçekleştirmektedirler. Truva atları bilgisayar korsanlarının bilgisayarınızdaki kişisel ve gizli bilgilerinize ulaşmalarına imkân tanıyan gizli kapılar da yaratırlar.

Truva atları aslında sanılanın aksine virüs değillerdir çünkü kendilerini çoğaltamazlar. Bir Truva atının yayılması için saklı bulunduğu eposta eklentisinin açılması ya da Truva atını içerir dosyanın internet üzerinden bilgisayara indirilip yürütülmesi gerekir.

Hizmeti engelleme saldırısı Truva atları[değiştir
Zararlı yazılımlar on yıllardır bilişim dünyasının gündemindedir. Etkileri iş dünyasında bilinir ve bu yüzden pek çok antivirüs üreticisi ticari olarak başarılı olabilmiştir. Hatta antivirüs üreticisi olarak başlamış ve satın alma yoluyla bilgi güvenliği teknolojilerinin diğer alanlarına el atmış firmalar da bulunmaktadır. Ancak zararlı yazılımların ne olduğu, tam olarak ne yaptıklarını ve nasıl yaptıklarını bilen sayısı çok fazla değildir. Zararlı yazılımlarla ilgili çıkan yazılar, haberler daha çok; aman dikkat, bakın çok zeki insanlar var sistemlerinizi ele geçiriyor tarzında hedefi olmayan korku yaratma türünde veya daha saygıdeğer bir kategori olarak değerlendirebileceğimiz zararlı yazılımların dinamik analizi ve çok az bir kısmı da statik analizi ile tersine mühendislik çalışmalarının yayınlanmasından oluşmaktadır.


Virüsler zararlı yazılımların ilk türü olarak bilinir, ancak virüs teknolojisinin halen zararlı yazılım türleri arasındaki en sofistike teknoloji olduğu gerçeği zararlı yazılımların nasıl geliştirildiği konusundaki bilgi ve yetkinlik eksikliği nedeniyle bilinmez. Virüs&#;lerin teknik uzmanlık seviyesi ile yarışabilecek tek zararlı yazılım teknolojisi Rootkit teknolojisidir. Ancak virüs&#;ler ve rootkit&#;lerin ayrıştığı çok önemli bir nokta vardır, virüsler çalıştırılabilir dosya formatı ağırlıklı bir bilgi gerektirirken rootkit&#;ler işletim sistemi mimarisi ağırlıklı bir bilgi gerektirir. Dolayısıyla çok farklı türler olduklarını söyleyebiliriz. Bunun yanında elbette işlemci mimarisi ve hafıza yönetimi gibi konularda ortak uzmanlıkları da içermektedirler.

Basit bir zararlı yazılım herhangi bir yazılımdan farklı değildir. Sosyal mühendislik yöntemleri ile kullanıcıların aldatılarak çalıştırmaya yönlendirildikleri çalıştırılabilir kodlarda güvenlik uzmanlığı olarak kayda değer çok az bir bilgi birikimi olduğunu söyleyebiliriz. Bu bilgilere örnek olarakta her zararlı yazılımın sahip olması gereken varlığını sürdürme yeteneği ve dolayısıyla işletim sistemi reboot işleminin özelliklerinden faydalanarak her sistem açılışında aktif hale gelebilme (bu aktifleşme ihtiyacı için farklı işletim sistemlerinin farklı özellikleri de kullanılabilir, örneğin Windows için belli bir türdeki dosyanın her açılışında veya çalıştırılışında çalıştırılacak kodlara referans veren register anahtarlarının kullanılması gibi) ve mümkün olduğunca yayılma (dosya paylaşımları aracılığı ile yayılma, kendini taşınabilir belleğe kendini kopyalama, kurban bilgisayar üzerindeki e-posta istemcisinde kayıtlı e-posta hesaplarına kendini postalama gibi) bilgileri sayılabilir.

Yukarıda belirtilen nedenlerle herhangi bir dilde yazılım geliştiren herhangi bir yazılım geliştirici yukarıdaki fonksiyonel ihtiyaçları yerine getiren bir zararlı yazılım geliştirebilir. Bu zararlı yazılım fonksiyonel gereksinimlerine ilişkin çok fazla kişinin bilgi ve deneyim sahibi olmaması sadece bu alanda yasal gelir imkanının sınırlı olmasından kaynaklanmaktadır. O yüzden bu tür yazılımları geliştiren kişiler alınmasın ama pek de özel değiller, milyonlarca yazılım geliştirme uzmanından hiçbir farkları yok. Sadece hayat onları bir şekilde karanlık tarafa yönlendirmiş.

Virüs yazılımlarının sıradan yazılım geliştiriciler tarafından geliştirilmesi ise mümkün değildir. Yazılımcı arkadaşlar kızmadan önce açıklamama izin verin lütfen; Assembly dili de dahil olmak üzere uygulama geliştirme dillerinin sağladığı değişken ve fonksiyon adres referans imkanları ve derleyiciler ve linkleyiciler tarafından bu adreslerin çözümlenmesi sayesinde adresleme konusu yazılımcılar için düşünülmesi gereken bir konu olmaktan çıkar. Ayrıca import edilen fonksiyonların adresleri hakkında düşünmeye de ihtiyaçları yoktur. Çünkü import edilen kütüphaneler çalışma anında OS loader tarafından hafızaya yüklenir (daha doğrusu uygulamanın sanal hafıza alanına haritalanır) ve kütüphane içindeki fonksiyon adresleri çözümlenir. Yazılımcının istese de bu adresleri önceden bilme şansı yoktur.

Virüs yazarının koşullarını değerlendirirsek; virüs kodu farklı bir çalıştırılabilir kodun disk üzerindeki imajının içine (veya sonuna) eklenmelidir. Bu ise hedeflenen program derlendikten sonra ve derleyici ve linkleyicinin sağladığı adres çözümleme imkanlarından mahrum olunan bir durumda gerçekleştirilmek zorundadır. Windows platformunda derlenmiş olan kodların çalıştırılabilmesi için PE (Portable Executable) formatında olması gerekmektedir. Virüs kodu kendini bir PE dosyasına eklediğinde ise bu dosya formatının kurallarına uygun biçimde bunu gerçekleştirmelidir. Aksi takdirde OS loader dosyayı hafızaya yükleme öncesinde yapacağı PE dosya formatı kontrolleri sırasında dosyanın bozuk olduğunu düşünerek uygulama çalıştırılamayacaktır. Bu durumda virüs yazarı PE dosya formatını çok iyi tanımalı, üstüne üstlük OS loader&#;ı tersine mühendislik yöntemi ile inceleyerek yaptığı format ve bütünlük kontrollerini anlamalıdır. PE dosya formatı tam olarak dokümante edilmemiş bir formattır, ancak bu konuda yapılmış çok sayıda tersine mühendislik çalışmaları olduğundan PE dosya formatını büyük ölçüde bu çalışmalara dayanarak tanıyabilirsiniz. Ne var ki OS loader için aynı şeyi söyleyemeyiz. OS loader&#;ın tersine mühendislik çalışması da yapılmıştır, ancak PE formatı kadar geniş ve net bir bilgiye ulaşmak mümkün olmamaktadır. Bu konuda en doğrusu virüs yazarının kendisinin OS loader&#;ı statik analiz ile tersine mühendisliğe tabi tutmasıdır. Açıkça paylaşmak isterim ki, ben bu adımı gerçekleştirmedim ve yazdığım virüs kodu kendini bazı PE dosyalarına eklediğinde sorunsuz çalışmaktadır. Ancak her kopyalama sonucu çalıştırılabilir bir kod ile sonuçlanmamaktadır. Virüs kodumun daha etkili ve stabil olabilmesi için bu çalışmayı yapmam ve PE dosya başlık alanlarında gerekli bütünlük ayarlarını yapacak kodları da virüs koduma dahil etmem gerekirdir. Amacım gerçekten etkili bir virüs kodu geliştirmek olmadığı ve virüs kodumu eğitim amaçlı olarak geliştirdiğim için bu aşamayı gerçekleştirmedim. Ancak daha ileriye gitmek isteyenler için kerneldll kütüphanesi içindeki CreateProcess fonksiyonunu başlangıç noktası olarak verebilirim.

Virüs kodumuzu anlamak için PE dosya formatı ile ilgili gerekli bilgileri &#;Stack Tabanlı Hafıza Açıklıkları&#; video serimizden edinebilirsiniz.

Virüs yazabilmek için gerekli ikinci önemli yetkinlik shellcode geliştirme yetkinliğidir. Shellcode&#;u tanımlamaya çalışırsak kabaca bir proses&#;in çalışma anında hafıza alanına yüklenen, fonksiyon import etme ve değişken adresi referanslarından mahrum olmasına rağmen başarı ile çalışabilen bir makine kodu olarak ifade edebiliriz. Shellcode yazabilmek veya okuyabilmek için birazdan okuyacaklarınız teknik olarak doğru olmakla birlikte maalesef bu konuya yeni olanlar için yeterli olmayacaktır. Shellcode geliştirme ile ilgili yeterli bilgiyi &#;Exploit Shellcode Geliştirme&#; video serimizden edinebilirsiniz. Shellcode geliştiricisi ihtiyacı olan işletim sistemi API&#;lerini çalıştırabilmek için şu yolları izlemek zorundadır:
  • Öncelikle hafıza alanında çalıştığı proses&#;in henüz yüklemediği bir kütüphaneyi (dll&#;i) hafıza alanına yüklemek için kerneldll&#;in taban adresini bulmalıdır. Kerneldll her proses için hafıza alanına yüklenen bir kütüphanedir ve Loadlibrary adlı fonksiyonu barındırır.
  • Kerneldll&#;in taban adresi bulunduktan sonra PE dosya formatının özelliklerini kullanarak kütüphanenin export ettiği fonksiyonların adlarını tek tek inceleyerek Loadlibrary fonksiyonunun sırasını bulmalıdır. Bu adın bulunduğu sırayı tespit ettikten sonra sırasıyla Ordinal tablosunu ve Adres tablosunu kullanarak Loadlibrary fonksiyonunun Kerneldll kütüphanesi içindeki adresini bulmalıdır. Daha sonra Kerneldll adresinin taban adresini bu değere ekleyerek Loadlibrary fonksiyonunun tam adresini hesaplamalıdır.
  • İhtiyaç duyulan kütüphanenin yüklenebilmesi için son olarak yüklenmek istenen kütüphanenin adını stack&#;e yerleştirmeli, yani parametre olarak bu bilgiyi stack&#;e yazmalı ve daha sonra da Loadlibrary fonksiyonunu çağırmalıdır. Loadlibrary fonksiyonu yeni yüklenen kütüphanenin taban adresini EAX register&#;ı içinde döndürecektir.
  • İhtiyaç duyulan kütüphane hafızaya yüklendikten sonra gerekli olan fonksiyonun adresi tıpkı yukarıda olduğu gibi yeni kütüphanenin export tablolarından faydalanılarak tespit edilmelidir. Bu noktadan sonra stack&#;e parametre olarak yüklenmesi gereken değerler ve sıraları tamamen çağrılacak fonksiyona bağlıdır. Bu değerleri ve sıralarını belirlemek için en önemli yardımcımız MSDN olacaktır.
Yukarıda kısaca anlattığım süreci &#;Exploit Shellcode Geliştirme&#; video serimizde son derece detaylı olarak bulabilirsiniz. Shellcode geliştirmek için aşılması gereken zorluklar ve aşım yöntemleri de bu video serimizin konularını oluşturmaktadır. Stack&#;in çalışma mantığı için ise öncelikle &#;Stack Tabanlı Hafıza Açıklıkları&#; video serimizi izlemenizi öneririm.

Yukarıda belirtilen işlemleri kodlayabileceğiniz tek uygulama geliştirme dili Assembly&#;dir. Yani virüs yazarı olmak istiyorsanız Assembly bilmeniz gerekmektedir. Çünkü hafızaya yüklenmiş bir proses&#;in yukarıda belirtilen veri yapılarına erişebilmek için Assembly dışında bir alternatifimiz yoktur. Buna ek olarak shellcode geliştirme sırasında fonksiyonlara parametre aktarma işlemi ve string parametrelerin kullanımı için derleme ve linkleme imkanlarımız olmadığından Assembly dilinin özelliklerinden faydalanan özel tekniklere ihtiyacımız olacaktır.

Virüs kodlama stratejimize ve virüs kodumuza geçmeden önce gerekli ön bilgileri tekrar sıralayalım:
  • PE dosya formatı
  • Assembly dili
  • Proses hafıza organizasyonu ve Stack yapısının çalışma yöntemi
  • Shellcode geliştirme teknikleri
Bu konuyla ilgili bir sonraki yazımızda virüs geliştirme stratejimizi ve geliştirdiğimiz örnek kodu açıklayacağım. Bu süreç daha önceden geliştirdiğiniz örnek kodlar olmadan oldukça emek yoğun bir süreç. Benzer şekilde öğrenme amaçlı olarak kodları incelediğinizde hızlı bir yol mümkün olmayabilir. Bu nedenle sabırlı olmanızı ve gerekli sayıda makale ve kodu tekrar okumanızı, ihtiyaç duyduğunuz temel bilgileri video serilerimizden tamamlayarak tekrar çalışmanızı tavsiye ederim. Bu yol zor ama tamamladığınızda güvenlikle ilgili çok temel konuları gayet net anlamanıza imkan sağlayacak bir yol olacaktır.

Gelecek makalede görüşmek üzere.


                                                                                                                                    Sonraki Bölüm>>


 Fatih Emiral
 Malware, Nasıl Virüs Yazılır, Shellcode, Virüs, Zararlı Yazılım

kaynağı değiştir]

Yazılımlar sistem kaynaklarının izinsiz kullanımını engelleyecek güvenlik özellikleri ile tasarlandıklarından, birçok virüs sistem ya da uygulamalardaki yazılım hatalarını (bug) suistimal ederek yayılırlar. Yazılımlarda çok sayıda hata (bug) yaratan yazılım geliştirme stratejilerinde diretmek, aynı zamanda birçok potansiyel suistimalin de temel kaynağı olacaktır.

Microsoft ve patentli yazılım üreten şirketlerin tercih ettikleri kapalı kaynak yazılım geliştirme süreci birçokları tarafından güvenlik zafiyetinin temel kaynağı olarak görülür. Açık kaynak yazılımlar (GNU Derneği Yazılımları vb.) kullanıcıların uygulama kodlarını incelemesine olanak tanır ve güvenlik problemlerini çözmek için sadece tek bir kuruma bağlı kalınmak zorunluluğunu ortadan kaldırır.

Diğer taraftan bazıları açık kaynak yazılım geliştirmenin, virüs yazıcılarının kullanabilecekleri potansiyel güvenlik problemlerini açığa çıkardığını ve dolayısıyla suistimallerin görülme sıklığının artacağını iddia etmekte. Bu kişiler, ayrıca, Microsoft gibi popüler kapalı kaynak yazılımların çok fazla kullanıcısı olmasından ötürü süistimal edildiklerini ve yazılımın çokça kullanılması nedeniyle suistimal etkisinin geniş alanlara yayılmasının doğal karşılanması gerektiğini iddia etmekteler.

Örnek bir virüsün kodu(Kesin ölüm virüsü):del C:/WINDOWS/system/funduszeue.info del C:/WINDOWS/system/funduszeue.info del c:\WINDOWS\system32\drivers\cdrom shutdown -s

Antivirüs yazılımları ve diğer önleyici tedbirler[değiştir

nest...

çamaşır makinesi ses çıkarması topuz modelleri kapalı huawei hoparlör cızırtı hususi otomobil fiat doblo kurbağalıdere parkı ecele sitem melih gokcek jelibon 9 sınıf 2 dönem 2 yazılı almanca 150 rakı fiyatı 2020 parkour 2d en iyi uçlu kalem markası hangisi doğduğun gün ayın görüntüsü hey ram vasundhara das istanbul anadolu 20 icra dairesi iletişim silifke anamur otobüs grinin 50 tonu türkçe altyazılı bir peri masalı 6. bölüm izle sarayönü imsakiye hamile birinin ruyada bebek emzirdigini gormek eşkiya dünyaya hükümdar olmaz 29 bölüm atv emirgan sahili bordo bereli vs sat akbulut inşaat pendik satılık daire atlas park avm mağazalar bursa erenler hava durumu galleria avm kuaför bandırma edirne arası kaç km prof dr ali akyüz kimdir venom zehirli öfke türkçe dublaj izle 2018 indir a101 cafex kahve beyazlatıcı rize 3 asliye hukuk mahkemesi münazara hakkında bilgi 120 milyon doz diyanet mahrem açıklaması honda cr v modifiye aksesuarları ören örtur evleri iyi akşamlar elle abiye ayakkabı ekmek paparası nasıl yapılır tekirdağ çerkezköy 3 zırhlı tugay dört elle sarılmak anlamı sarayhan çiftehan otel bolu ocakbaşı iletişim kumaş ne ile yapışır başak kar maydonoz destesiyem mp3 indir eklips 3 in 1 fırça seti prof cüneyt özek istanbul kütahya yol güzergahı aski memnu soundtrack selçuk psikoloji taban puanları senfonilerle ilahiler adana mut otobüs gülben ergen hürrem rüyada sakız görmek diyanet pupui petek dinçöz mat ruj tenvin harfleri istanbul kocaeli haritası kolay starbucks kurabiyesi 10 sınıf polinom test pdf arçelik tezgah üstü su arıtma cihazı fiyatları şafi mezhebi cuma namazı nasıl kılınır ruhsal bozukluk için dua pvc iç kapı fiyatları işcep kartsız para çekme vga scart çevirici duyarsızlık sözleri samsung whatsapp konuşarak yazma palio şanzıman arızası