/i/Yazılım

Umuyoruz ki geleceğin yazılımcıları bu altinciden çıkacak!
    başlık yok! burası bom boş!
  1. 1.
    +3 -1
    Yeni nesil virüsler bunlar herhal. Ben olayın biraz daha donanım yazılım karışık kısmını anlatıyorum.

    Windows 95 zamanlarını hatırlayanlar bilirler, sanırım 26 Nisan'da bize bilgisayarları kapatın derlerdi. Ama sebebi neydi?

    CIH. Çernobil virüsü basitçe sistemdeki BIOS'u silerek bilgisayarı açılmaz hale (düğmeye basınca tepki almıyorsunuz o derece) getiriyordu.

    Nasıl çalıştığına gelirsek, Windows 95'teki çok küçük bir açıktan faydalandı.

    (bkz: http://www.incisozluk.com.tr/w/i%C5%9Fletim-sistemi-yazmak-5/) Burada IDT'den bahsetmiştim.

    Windows 95'te sidt ve lidt bloke olmadığı için, dahası paging ile o tablolar güvenceye alınmadığı için kesme tablosuyla rahatlıkla oynayabiliyordunuz. Virüs "sidt %eax" komutu ile eax yazmacına kesme tablosunun adresini koyuyordu. Aldığı kesme tablosuna kendi kodlarını çağıracak bir kesme ekliyor ve "lidt %eax" ile bu tabloyu geri yüklüyordu.

    Sistem kesmeleri normal programların aksine Ring 0'da (Çekirdek modu, tam bilgisayar yetkisi) çalışır ve IOPL, CPL ve DPL = 0 olduğu için bilgisayar üzerinde tam kontrole (işletim sistemi ile eş değer düzeyde) sahiptir.

    Yani virüs bu aşamadan sonra sisteminize ne isterse yapabilir. Sonra iki aşamada sistemi yıkmaya başlıyor. Sabit diskin ilk birkaç sektörünü sıfırlarla dolduruyor (int 13h BIOS kesmesi) ve BIOS flash'ı da rastgele verilerle dolduruyor.

    Sonuç olarak BIOS'un üzerine yazılıyor, bu da sistemin çalışmaz hale gelmesi demek. BIOS, bilgisayarın açılması için en önemli temel yazılımdır. BIOS olmadan bilgisayar açılmaz.

    Tabii Windows NT ile virüs çalışmaz hale geldi, Windows 2000'den itibaren yani. Fakat bahsettiğim yeni BIOS virüsleri biraz daha farklı. Amacı bilgisayarı yok etmek değil, bilgisayarın derinlerine kalıcı bir şekilde sızmak.

    Nasıl yapıyor? Birkaç açıktan faydalanarak kendisine BIOS'a yazma yetkisi sağlıyor. Buraya kadar olan kısım aynı CIH virüsü gibi. Fakat, BIOS'u rastgele sıfırlarla doldurmuyor. Onun yerine açılışta anında kendi kodlarını belleğe yükleyecek şekilde BIOS'u programlıyor.

    Bununla da kalmıyor, kendi kopyalarını MBR'a yazıyor. Bu sayede sistemin her yerine girmiş oluyor. Anlamak ise çok zor, sonuçta hiçbir antivirüs BIOS'ta tarama yapmıyor.

    MBR'a yazıyor demiştim. Yani siz format atsanız bile geri geliyor. Sabit diskin yenisini alsanız bile kurtulamazsınız, çünkü kendini BIOS'a yazdı. Siz daha güç düğmesine dokunur dokunmaz o virüs işlemci tarafından çalıştırılıyor zaten. BIOS çipini düzgünce orijinal BIOS ile sıfırladıktan ya da anakartı değiştirdikten sonra sabit diskleri de yenisiyle değiştirmekten başka şansınız yok.



    Bahsettiğim Ringler



    Ring0 çekirdek, Ring3 ise normal kullandığınız programlar olarak düşünün


    Tümünü Göster
    ···
  2. 2.
    +1
    Hikaye değil, kurgu da değil. BIOS sadece ondan ibaret değil. Ben sistem programcılığı yapıyorum. BIOS'un baştan sona ne yaptığını anlatabilirim.

    Bilgisayara güç gittiğinde işlemci CS:0xFFFF IP:0 durumundadır. Bu bellekte 0xFFFF0'ı gösterir. O adreste BIOS'un kendisine, başlangıç koduna gitmeyi sağlayan bir jmp komutu (Makine dili EA EB 03 00 F0) (EA jmp opcode'u, EB 03 little endian olarak 3EB, 00F0 da yine little endian olarak F000, little endian dediğim byte'ların ters sırayla kaydedilmesi işlenmesi oluyor. Yani 0xABCDEF bellekte EF CD AB diye kaydediliyor) vardır. işlemci jump kodunu uyguladığı zaman genelde 0xF03EB gibi bir adrese gider. (CS:0xF000 IP:0x3EB) Bundan itibaren sistem kontrolünü BIOS ele alır. BIOS öncelikle POST (Power On Self Test) adında bir işlem uygular ve tüm parçaların doğru çalışıp çalışmadığını kontrol eder. Bir hata varsa sesli uyarı verir ve sistemi açmaz. RAM'lerden birini yanlış taktığınızda gelen o sesin kaynağı BIOS.

    Sistem POST aşamasından da geçerse, sisteme bağlı her türlü sabit diskten, CD-ROM'dan, DVD-ROM'dan (boot sırası diye ayarladığınız şey) bir sektör (512 kb) okur. Sektörün sonu 0xAA55 ile bitiyorsa başlatılabilir bir sektördür ve BIOS kontrolü o sektöre devreder.

    Bootloader kontrolü ele alınca işletim sistemini açar ve açılış tamamlanmış olur.

    Şimdi bu sistemin tamamen silinmesinden bahsediyoruz. Artık 0xFFFF0'da geçerli bir jmp komutu olmayacak, işlemci ne yapacağını bilemeyip orada ya Invalid Opcode hatasıyla triple fault verecek ya da olduğu yerde beklemekten başka bir şey yapmayacak.

    Üstelik BIOS'un yaptıkları da bu kadar değil. BIOS anakarttaki birçok parçayla iletişim kurup onları yapılandırmakla görevli. Kullanıcı da bu ayarlarla oynayabiliyor. (Overclock yapma ekranı dediğin kısım)

    Eğer BIOS'a zarar gelirse ne olacağını az çok tahmin edebilirsiniz artık.
    ···