2010-01-19

ADS : Alternate Data Streams

NTFS dosya sisteminde bir dosya birden fazla veri akışından (data stream) oluşabilir. Bir akış güvenlik bilgilerini tutarken, diğeri asıl dosya verisini tutar. Bunların dışında bir dosyaya bağlı başka veri akışları da olabilir. Böyle karışık teknik bir cümlenin özeti, Windows Gezgini ile veya dir komutu ile gördüğünüzden daha fazla bilgi diskinizde bulunabilir. Bunlara alternate data streams (diğer veri akışları) denir, ADS diye kısaltılır. Bu aslında sadece NTFS'e özgü bir nitelik değildir. Diğer gelişmiş dosya sistemlerinde de bu veri bölümleri vardır ve genel olarak fork olarak adlandırılırlar.

ADS'lerli ilginç yapan nokta, bu veri akışlarında yaratılan/saklanan verilerin "görünmez" olmasıdır. Windows Gezgini'nde dosyaları gizlemek gibi değil bu; biraz daha farklı. Genelde işletim sistemi ile ilgili özel bilgiler burada tutulur (örneğin Windows XP, SP2'den sonra internetten download edilen dosyaların nereden download edildiği bilgisini ADS'de tutar). Ama bazen de bir virüsün veya başka zararlı bir kodun saklanacağı bir yer haline gelebilir.

Bir ADS, bir dosya veya klasöre bağlı yaratılır. Bağlı olduğu nesne silinirse ADS de silinir. Ama Windows, ADS'lerle ilgilenebilmek için yeterli araçları sunmaz. Yani bağlı olduğu nesneye dokunmadan ADS'yi silmek için başka araçlar kullanmak gerekir.

Örnek olarak Windows Hesap Makinesini, Not Defteri'nin ADS'sine yazalım ve bu şekilde çalıştıralım. Orijinal sistem dosyalarını bozmamak için iki dosyanın da birer kopyasını masaüstünde Deneme adlı bir klasöre kopyalayıp burada çalışalım.


Yukarıdaki resimde de görüldüğü gibi Deneme klasörüne iki araç ve bir dll daha kopyaladı. Bu araçlar, muhteşem Sysinternals araçlarından ikisi: streams.exe ve psexec.exe. Streams, ADS'lerin varlığından bizi haberdar edip, aynı zamanda onları silebiliyor da. psexec.exe çok faydalı bir araçkiti olan pstools'un bir parçası. Genel olarak uzak bilgisayarlarda bir süreç başlatmak için kullanılıyor. Ama ben bunu yerel bilgisayarda ADS'deki calc.exe'yi çalıştırmak için kullanacağım. pdh.dll ise pstools'un ortak dll dosyası; psexec'in çalışması için gerekli. Yukarıdaki resimde streams'i kullanarak mevcut durumda notepad.exe ve calc.exe dosyalarının ADS'leri olmadığını gösterdim. Bunun için şu komutu kullandım:
streams *
Bundan sonraki adımda calc.exe'yi, notepad.exe'nin ADS'sine gizleyeceğim. Bunun için şu komutu kullandım:
type calc.exe > notepad.exe:calca.exe
Notepad.exe'nin ADS'sinde yarattığım hesap makinesinin ismi için özellikle calca.exe (calc.exe yerine) kullandım, ayırt edebilmek için. Daha sonra da ADS'nin varlığını yine streams.exe'yi kullanarak doğruladım, aşağıdaki resmimde görüldüğü gibi.

ADS'e yerleşen calca.exe'nın boyutunun, orijinal Windows Hesap Makinesi calc.exe'nin boyutuna eşit olduğuna dikkat. Şimdi psexec'i kullanarak calca.exe'yi başlatalım.
psexec -d notepad.exe:calca.exe


psexec için kullandığım -d switch'i don't wait, yani bekleme anlamındadır. Yani komut satırında enter'a bastığımızda çalıştırmak istediğimiz programın sonlanmasını beklemeden hemen geri döner. Daha sonra şu şekilde çalıştırılabileceğini de öğrendim:
start ./notepad.exe:calca.exe
Bu resimde Task Manager ile Process Explorer'da listelenen notepad.exe:calca.exe sürecine dikkat! Görüldüğü gibi Windows Hesap Makinesi çalışıyor, ama bu hesap makinesi Deneme klasöründeki calc.exe değil, notepad.exe'ye bağlı olarak yaratılan ADS'nin içindeki calca.exe. Ayrıca süreç listesinde notepad.exe de görülüyor ama çalışan notepad'in kendisi değil, ADS'sindeki dosya.

Şimdi, istenmeyen bir ADS verisi tespit ettik. Ne yapmak gerek? Bunun için de streams aracını -d anahtarı ile kullanacağız. Öncelikle bu sürecin halen çalışıp çalışmadığını kontrol etmek gerek. Eğer çalışıyorsa çalışan süreci sonlandırmalıyız.
streams -d notepad.exe
Bu komut, notepad.exe dosyasına bağlı ADS'leri siler. Verilen bir klasörün içindeki ve alt klasörlerindeki tüm dosyaların (varsa) ADS'lerini silmek için şu komut uygun olacaktır:
streams -d -s D:\Veriler
Bir de text dosyaları ile uğraşmak var. Örneğin gorunur.txt adındaki normal bir dosyanın ADS'sinde gizli.txt adında bir dosya oluşturmak için şunları yapmak gerek:

echo Bu dosya normal bir txt dosyasi > gorunur.txt
echo BU GIZLI BIR DOSYA > gorunur.txt:gizli.txt
Aşağıdaki komutla önce ADS'nin varlığını doğrulayalım:
streams *
  :gizli.txt:$DATA 21
Şimdi de önce gorunur.txt'nin içeriğini komut satırından görelim:
type gorunur.txt
Bu dosya normal bir txt dosyasi
Ancak, gizli.txt dosyasının içeriğini görmek istediğimizde aynı yöntem işe yaramayacak.
type gorunur.txt:gizli.txt
Dosya adı, dizin adı veya birim etiketi sözdizimi hatalı.
Bunun yerine şu şekilde içeriği görüntüleyebiliriz:
more < gorunur.txt:gizli.txt
BU GIZLI BIR DOSYA
Peki, elimizde ADS dosyası tek başına bir dosya sistemi nesnesi olarak bulunmuyorsa bu veriyi nasıl bir dosyaya kopyalarız? Şunu demek istiyorum: Hiçbir dosya veya klasörün ADS'si olmayan, normal bir dosya sistemi dosyası gizli.txt'yi nasıl yaratırız? Veya elimizde orijinal calc.exe yoksa notepad.exe'nin ADS'sindeki çalıştırılabilir dosyayı nasıl alıp normal bir dosya yaparız? Eğer konu text dosyasıysa çözümü Windows içinde bulabiliriz:
more < gorunur.txt:gizli.txt > gizli.txt
Bulunduğumuz klasörde gizli.txt adında bir dosya oluşturuldu. Peki ikilik veri durumunda ne yapılabilir? Benim bulduğum çözümlerden biri, NirSoft'un AlternateStreamView aracını kullanmak. Bu araç, grafik arayüze sahip bir araç. Programı çalıştırdıktan sonra bir klasör belirtip içindeki ADS'leri tarayarak, bulunanlardan birini sağ tıklayarak açılan menüden "Export Selected Streams to..."yu seçerek bunu yapabiliriz.


Bu işlermin sonucunda notepad.exe_calca.exe dosyası oluşturuldu. Yeni dosyamız da orijinal calc.exe'nin byte byte kopyası. Bunu şu şekilde doğrulayabiliriz:
fc calc.exe notepad.exe_calca.exe
Comparing files calc_orig.exe and NOTEPAD.EXE_CALCA.EXE
FC: no differences encountered

Şu adreste bir ADS'nin bir dosya nesnesine bağlı olmadan aşağıdaki şekilde yaratılacağı söylenmiş.
ECHO "This is a really invisible stream file." > :invisible.txt
Evet, streams ile taratılınca şu şekilde bir sonuç çıkıyor:
streams *
C:\Documents and Settings\admin\Desktop\Deneme\.:
   :invisible.txt:$DATA 44
C:\Documents and Settings\admin\Desktop\Deneme\gorunur.txt:
       :gizli.txt:$DATA 21
C:\Documents and Settings\admin\Desktop\Deneme\notepad.exe:
       :calca.exe:$DATA 114688
Ama aslında bu ADS verisi hiçbir dosya nesnesine bağlı değil gibi görünse de, aslında Deneme adında yarattığımız klasöre bağlı olarak oluştu. Bunu, Deneme'nin bir üst klasörüne (Desktop) çıkıp buradan taratarak doğrulayabiliriz.
cd ..
Deneme\streams *
C:\Documents and Settings\admin\Desktop\Deneme:
   :invisible.txt:$DATA 44
Çok uğraşmaya gerek yoktu, tek noka zaten mevcut klasör demek olduğu için bu ilk adımda belliydi. Ama denemiş olduk. Şimdi bir de Deneme klasörüne bağlı yaratılmış bu ADS'yi silelim:
Deneme\streams -d Deneme
C:\Documents and Settings\admin\Desktop\Deneme:
   Deleted :invisible.txt:$DATA

Windows XP SP2 ve sonrasında download edilen dosyalara bir Zone Identifier verisi ADS olarak eklenir demiştik. Şimdi bir de bunu doğrulayalım. Microsoft Sysinternals'dan download ettiğim ProcessExplorer.zip dosyasına bakalım:
streams ProcessExplorer.zip
C:\Documents and Settings\admin\Desktop\ProcessExplorer.zip:
   :Zone.Identifier:$DATA       26
Acaba bu verinin içinde ne yazıyor?
more < ProcessExplorer.zip:Zone.Identifier
[ZoneTransfer]
ZoneId=3

Meğer sadece Zone ID'si yazıyormuş. Ben de ilk kez denedim. Bunun dışında Windows, şu verileri ADS'de saklar:
  • IE Sık Kullanılanlar'daki bir sitenin ikonu (:favico:$DATA)
  • Dosya hakkındaki özet bilgisi (dosya özelliklerinden erişilen Özet sekmesinde gösterilen veriler, :SummaryInformation:$DATA)
Windows Vista ile dir komutu bir anahtar daha kazandı: /R anahtarı. Bu anahtarı kullanarak komut satırından ADS'leri listeyelebilirsiniz.
dir /R
19.01.2010  10:38    15 gorunen.txt
                     12 gorunen.txt:gorunmeyen.txt:$DATA
Peki, bir ADS yaratıyoruz, ama ADS'nin bağlı olduğu dosyanın boyutu değişmiyor. O zaman nerede saklanıyor bu veri? Diskte bir yer kaplamıyor gibi gözükebilir ama aslında kaplıyor. Bir-iki byte'lık verilerle bunu anlamak zor. 720.156.672 byte'lık Pardus 2009 CD kalıbını pardus.txt dosyasına ekleyelim de görelim, disk boyutumuzda nasıl bir değişiklik olacak. Önce dir komutunu kullanarak diskteki boş yeri görelim.
dir
 Volume in drive C has no label.
 Volume Serial Number is 6C41-A8FD
 Directory of C:\Documents and Settings\admin\Desktop\Deneme

        19.01.2010  10:18            .
        19.01.2010  10:18            ..
        19.01.2010  10:18        498 AlternateStreamView.cfg
        10.12.2009  17:56     34.816 AlternateStreamView.exe
        04.08.2004  14:00    114.688 calc_orig.exe
        19.01.2010  09:52         34 gorunur.txt
        19.01.2010  09:07     69.120 notepad.exe
        19.01.2010  10:11    114.688 notepad.exe_calca.exe
        29.08.2008  15:10    155.960 pdh.dll
        01.12.2009  10:53    381.304 psexec.exe
        27.04.2007  10:17     87.424 streams.exe
                      9 File(s)        958.532 bytes
                      2 Dir(s)   9.864.273.920 bytes free

Görüldüğü gibi diskte 9.864.273.920 byte boş yer var. Şimdi işlemin geri kalanını yapalım. Ancak maalesef type komutu bu büyüklükte bir dosya için işe yaramadı. Onun için FlexHex sitesinden streamtools paketini indirip kullanmak zorunda kaldım. Bu paketten cs komutu bir dosyayı, başka bir dosya nesnesinin ADS'si olarak yazıyor.
cs Pardus_2009.iso pardus.txt:Pardus_2009.iso
Bu işlem sonundaki boş disk alanı:

dir
 Volume in drive C has no label.
 Volume Serial Number is 6C41-A8FD

 Directory of C:\Documents and Settings\admin\Desktop\Deneme

19.01.2010  11:14           .
19.01.2010  11:14           ..
19.01.2010  11:13           498 AlternateStreamView.cfg
10.12.2009  17:56           34.816 AlternateStreamView.exe
04.08.2004  14:00           114.688 calc_orig.exe
01.10.2005  20:21           49.152 CS.exe
19.01.2010  09:52           34 gorunur.txt
19.01.2010  09:07           69.120 notepad.exe
19.01.2010  10:11           114.688 notepad.exe_calca.exe
30.10.2009  11:22           12 pardus.txt
29.08.2008  15:10           155.960 pdh.dll
01.12.2009  10:53           381.304 psexec.exe
27.04.2007  10:17           87.424 streams.exe
              11 File(s)      1.007.696 bytes
               2 Dir(s)   9.143.562.240 bytes free

Görüldüğü gibi boş disk alanı  9.143.562.240 byte'a inmiş. Basit bir hesapla bu 720.711.680 byte yapıyor. Aradaki fark tam olarak Pardus_2009.iso'nun boyutu değil; olmasını da beklemiyoruz. Çünkü bu arada FlexHex internet sitesine bağlandım, streamtools paketini indirdim, içinden cs.exe'yi çıkardım vs. derken bir sürü disk işlemi yaptım. Ard arda bile işlem yapsak arada fark olabilir. Neyse, amaç bu değil. Amacımız, ADS'ye kopyalanan verinin de diskte bir yer işgal etttiğiydi. Bunu da doğruladık.

Özet olarak ADS'ler işletim sisteminin bir parçası. Kapatılması mümkün değil. Bazı zararlı içerik (şu yazımda bir örneği var) kendini ADS altında saklasa da, bunlar diğer virüslere göre daha zararlı veya daha korkulacak şeyler değil. Üçüncü parti araçlarla bunları kontrol altına alabiliyoruz. Asıl korkulacak şey rootkit'ler. Bu tip bileşenlerin tespit edilmesi de, temizlenmesi de tam bir baş ağrısı! Bu da başka bir yazının konusu olur artık :)

2010-01-12

ADSL hat kalitesi

Bazen ADSL modemlerin bağlanmaması, hattın sık sık kesilmesi gibi sorunlarla karşılaşılır. Sebepleri çeşitli olmakla birlikte hat kalitesi ile ilgili bakılması gereken iki önemli alan var:
  1. Downstream Attenuation (Gelen sinyal zayıflaması)
  2. Downstream SNR Margin (Gelen sinynal sinyal/gürültü oranı)
Birçok modemin bir durum sayfası vardır. Bunun adı her modemde farklı olabilir. Genelde WAN, Status gibi bir sayfadan ulaşılır. Örneğin Airties RT-111 için bu sayfa sol menüden Rapor'dadır. Aşağıdaki gibi bir ekran gelir.

Veya bir Zyxel Prestige HW661-D1 içinse bu sayfa soldaki menüden Maintenance>Diagnostic>DSL Line açılarak çıkar. Aşağıdaki gibi bir sayfa gelir.

Bu iki resimde de bahsettiğim önemli kısımları kırmızı ile çerçeve içine aldım. Sorunsuz bir hatta bu iki değerin belli sınırlar içinde olması gerekir.


Downstream Attenuation hattaki kayıp miktarıdır. TT santralinden ne kadar uzaktaysak o kadar büyüktür. Bunun birimi dB'dir (desibel) ve ne kadar küçükse o kadar iyidir.

  0 dB - 20 dB : Santrale çok yakın
20 dB - 30 dB : Santrale yakın
30 dB - 40 dB : Santrale mesafesi iyi
40 dB - 60 dB : Santrale mesafesi ortalama
60 dB - 65 dB : Santrale uzak

Downstream SNR Margin ise hattaki sinyalin gürültüye oranıdır (bazen basitçe Gürültü Oranı diye de geçebilir). Dolayısıyla büyük olması demek hatta daha az gürültü var demektir. Bunun da birimi dB'dir.

  0 dB -   6 dB : Tekrarlayan hat kesilmeleri olur
  7 dB - 14 dB : Bağlanır, ama zaman zaman kesilebilir
15 dB - 25 dB : Hat kalitesi iyi
26 dB - 30 dB : Hat kalitesi çok iyi
31 dB - 35 dB : Hat kalitesi mükemmel

Modeminizin okuduğu değerleri yukarıdaki değerler ile karşılaştırıp bir karara varabilirsiniz. Buna göre yukarıdaki ilk resimde okunan 27 dB SNR değeri hat kalitesinin çok iyi olduğunu gösteriyor. 9 dB'lik hat zayıflaması da modemin bulunduğu konumun TT santraline çok yakın olduğunu gösteriyor. Çok güzel bir bağlantı.

İkinci resimde ise 6 dB'lik bir SNR değeri var ki bu hattın sorunlu olduğunu gösteriyor. Zaten 63 dB'lik hat zayıflaması da modemin bulunduğu konumun TT santraline çok uzak olduğunu da gösteriyor. Bu da kötü bir bağlantı.

2010-01-11

Google'ın anlamsız kullanımı

Google nedir? Bir arama motoru. Ne zamana kullanılır? Bir anahtar kelime araması yapmak istediğinizde. Hadi en fazla bir soru sormak için (mesela "Bir mil kaç kilometredir?" gibi).

Bu benim ekskiliğim, farkındayım. Ama böyle bir kullanıcı grubunun varlığından son zamanlarda haberim oldu.

Bazı kullanıcılar, Google'ı tarayıcılarının açılış sayfası yapıyor. Ne güzel. Her daim aramaya hazır! Ama şaşırdığım nokta bundan sonra başlıyor. Girecekleri sayfayı adres satırına yazmak yerine Google'ın arama kutusuna yazıyorlar ve "Google'da Ara" butonuna basıyorlar.


Örneğin Ekşi Sözlük'e girmek isteyen bir kullanıcı önce tarayıcısını açıyor, tarayıcı varsayılan açılış sayfası olan Google için DNS çözümlemesi yapıyor. Sonra Google'ın web sunucusundan Google'ın sayfası isteniyor. Bilmem kaç kilobyte'lık veri taa Amerikalardan kullanıcının bilgisayarına aktarılıyor. Sonra kullanıcı yavaş yavaş, hiç acele etmeden Ekşi Sözlük yazmaya başlıyor. Google da hiç üşenmeden E harfindan başlayarak en çok yapılan aramaları süzüyor ve girilen metne uyan aramaları getiriyor. Bu her harf girişinden sonra tekrarlanan birşey. Yani her harfe bastıkan sonra tarayıcı arama kutusundaki metni taa Amerika'daki sunucuya gönderiyor, sunucu sorgu yapıyor, geri cevap dönüyor. Bu, eğer boşluk karakteri kullandıysak, "ekşi sözlük" yazana kadar 11 kez oluyor.


Sonra kullanıcı elini klavyeden kaldırıp fareye götürüyor. Farenin okunu yavaş yavaş olduğu yerden, "Google'da Ara" butonunun üzerine getiriyor ve bir (muhtemelen çift) tıklama yapıyor. Google asıl aramasını yapıyor ve sonuçları getiriyor. Bir de övüne övüne 0,20 saniye sürdü gibi bir mesaj ve içinde ekşi sözlük geçen 2.230.000 sayfa bulduğunu da yazıyor. Ama beyhude: kullanıcının istediği sadece ilki.


Tabi bunlar olurken kullanıcının tarayıcısındaki "Sık Kullanılanlar" (Favorites) ya da "Yer İmleri" (Bookmarks) kısmı hiç kullanılmıyor. Kullanıcı bulduğu sonuçları buraya kaydetme ihtiyacı duymuyor. Duysa bile onları tekrar kullanmak yerine her seferinde Google'a danışıyor. Bana çok değişik geliyor bu. Bunu da yazmak istedim işte.

Başka bir "Mail Gönderemiyorum" şikayeti ve sorunun tespiti

En sık duyduğum şikayettir bu. Birisi arar ve şikayet eder, "mail gönderemiyorum", "maillerim gitmiyor" veya "mail alamıyorum", "maillerim gelmiyor" der. Çoğunlukla kalıcı bir sorun yoktur ve tekrar denendiğinde sorun çözülür. Yine öyle bir durum sandım. Uzaktan destek verdiğim bir firmanın yetkilisi telefonla aradı ve mail gönderemediklerini söyledi. Meğer gönderilen her mesaj için karşı taraftan bir hata mesajı alınıyormuş. Hata mesajını görünce şaşırdım. Şöyle bir not vardı:
451 http://www.spamhaus.org/query/bl?ip=xxx.xxx.xxx.xxx
451 kodunun ne anlama geldiğine bile bakmadan olay anlaşılıyordu: Firmanın IP adresi Spamhaus tarafından karalisteye alınmıştı. Gözüken bağlantıyı açtığımda daha başka bilgilere de ulaştım. Bir gün öncesinin tarihinde yüksek miktarda spam trafiğinin bu IP adresinden yaratıldığını söylüyordu. Yani ağdaki bilgisayarlardan birisi zararlı bir kodun esiri olmuştu. Sayfasında belirtildiği gibi Spamhaus'un karalisteden çıkma prosedürü basit. Eğer bu karalisteye ilk girişinizse ve ilk defa listeden çıkarılma talebinde bulunuyorsanız sayfanın altındaki bağlantıyı tıklayarak küçük bir formu doldurmanız yeterli. Ama eğer ağınızdaki virüsü tespit edip zararsız hale getiremediyseniz ve spam trafiği durmadıysa, tekrar karalisteye gireceksiniz demektir. Bunu birkaç kez yaparsanız artık internet üzerinden başvuru şansınız kalmayacak, Spamhaus'a doğrudan başvuru yapmanız gerekecek. Onların da hemen listeden çıkarmak yerine birkaç gün bekleyerek tekrarlamayacağını garantiye almaları da muhtemel. Böyle bir durumda kalmamak için önce bu trafiği durdurmak lazım. Uzaktaki yetkiliye bilgisayarları virüs yazılımıyla taratmasını söyledim. İşin ironik kısmı da bu: Bütün bilgisayarlarda lisanslı ve güncel bir antivirüs yazılımı bulunuyor. Ama virüs bu engeli bir kez aştıysa bir daha yakalanmayacaktır düşüncesiyle bir de MSRT (Microsoft Malicious Software Removal Tool) ile taratılmasını istedim. Bunların hiçbirisinden sonuç çıkmadığını öğrenince hiç şaşırmadım. Nasıl bulacağımı düşünürken aklıma firmanın Small Business Server'ı geldi. Üzerinde ISA 2000 olan bir sunucu bilgisayarları vardı. ISA'nın birkaç günlük firewall loglarına bakarak hangi makinanın 25 numaralı portu bu kadar yoğun kullandığını bulabilirdim. Hemen bir uzak masaüstü bağlantısı ayarladım ve ISA'nın son birkaç gününe ait log dosyalarını sıkıştırıp kendi bilgisayarıma aktardım. Son birkaç günün log dosyaları zaten diğer günlere kıyasla çok daha büyük boyuttaydı ki bu da bir sorun olduğunun başka bir göstergesi.

Log dosyalarını spreadsheet programı ile açıp birleştirdikten sonra SMTP trafiğinde göze çarpan artışı tek bir IP adresi yarattığını farkettim. Bu IP adresinden son iki gün içinde 272,000'den fazla mesaj gönderilmişti! Bunu gördükten sonra Spamhaus'un ne kadar hayırlı bir iş yaptığını bir kez daha anladım. Sanal dünyanın arsızlarının masum kullanıcıları rahatsız etmemesinin en basit yoluydu bu.


Bu işin sonunda bilgisayarı bana gönderdiler. Bilgisayarı ilk açtığımda sıradışı bir şeyle karşılaşmadım. Antivirüs yazılımı çalışıyordu, bilgisayarın performansında olağanüstü bir düşüş yoktu. Ama Process Explorer ile çalışan süreçlere ve Autoruns ile de sistemin açılışında başlatılan bileşenlere baktığımda suçlu ortaya çıktı. Aşağıdaki resimde Process Explorer ve Autoruns çalışırken aldığım ekran görüntüsü var.


Kırmızı ile altını çizdiğim userini.exe, gerçekte bir sistem dosyası olan userinit.exe'ye ismen benzemeye çalışmış. Autoruns'da (sağda, önde duran pencere) 4 farklı yerde görünen bu dosya, kendini garantiye alarak çalışmayı şansa bırakmamış. Ayrıca Process Explorer'da (solda, arka planda kalan pencere) altını çizdiğim sürec(ler)e ise dikkat: bir ADS'ye sahip. ADS, alternate data streams'in kısaltması. Dosya sisteminin bir özelliği bu. Ama virüsler ve diğer zararlı yazılımların kendini gizlemesi için de ideal bir yöntem. Bu konuyu hakkında ayrıntıyı şu yazımda bulabilirsiniz.. ADS'nin ayrıntılarına girmeden konumuza dönelim.

Process Explorer'da explorer.exe:userini.exe olarak gözüken süreç, aslında normal bir Windows dosyası olan Explorer gibi gözüken, ama aslında zararlı bileşenimiz olan userini.exe'yi çalıştıran satır. Komut satırında sfind.exe'yi (bir Foundstone güvenlik aracı) kullanarak bu userini.exe'nin ADS altına gizlendiğini doğruladım:

C:\Windows\Prefetch'in altındaki satır önemsiz. Ama onun üstündeki Explorer.exe:userini.exe bizim ilgilendiğimiz satır. Sadece Explorer.exe'nin üzerine yamanmış userini.exe'yi silip bundan kurtulabilirim ama sistemde başka virüsler var mı, önce bunu bulmam gerek. Bu makinayı üzerinde yüklü olan antivirüs yazılımı McAfee Virusscan Enterprise'ın 8.5i'nin son tanım dosyalarıyla (o gün için 5853) güncelledikten ve antispyware bileşenini yükledikten sonra tekrar tarattım, 4 tane cookie'den başka birşey bulmadı! Diskini söküp başka bir makinaya taktım. Linux'ta açıp clam ile tarattığımda 50'den fazla zararlı dosya buldu. Bu dosyaların bazıları bana "pek virüs gibi" görünmediği için başka bir taramayı da Kaspersky ile yaptım. Bu ise topu topu 8 tane zararlı içerik tespit etti. Bu sefer benim "pek virüs gibi" görmediğim dosyaları bulmadı. Bunun üzerine bu dosyaların yeni kurulmuş bir makinadan alarak tekrar clam ile tarattığımda bunları yine virüs olarak gördü. Buradan clam'in bazı durumlarda yanlış alarm ürettiği sonucuna vardım. Eğer clamscan için detect-pua anahtarını (Possibly Unwanted Applications-muhtemelen istenmeyen uygulamları da bul) kullanırsam, bu gibi durumlarda yanlış alarm üretebiliyor. Kısaca Kaspersky en güvenilir sonuçları verdi. Nihayetinde McAfee Virusscan Enterprise hiç bir zararlı bileşen tespit etmezken, Clam userini.exe'yi Trojan.Fraudpack-2378 olarak, Kaspersky ise Trojan.Win32.FraudPack.ajqk olarak tespit etti. Sistemin temiz olduğuna kanaat getirdikten sonra Spamhaus'a gereken başvuru yapıldı ve herşey normale döndü. Buradan çıkan sonuç: Yüklü antivirüs yazılımına hiçbir zaman tam olarak güvenme!

2009-12-10

Bir Dialer'ın tespiti (yanlış alarm)

Kurumsal ağımızda kullandığımız McAfee Virusscan Enterprise antivirüs yazılımımız, belli bir periyotta tüm bilgisayarları tarayacak şekilde ayarlandı. Bir süredir bu düzenli taramalarda, benim bilgisayarımda hiç beklenmedik bir virüs aktivitesine ait loglar dikkatimi çekiyordu.

23.11.2009 12:10:06 Deleted SYSTEM HKU\S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx\Software\Freeware Dialer-182(Potentially Unwanted Program)


Her tarama tarihinde, bu kayıt defteri anahtarı bulunuyor, siliniyor ve her nasılsa bir sonraki taramaya kadar tekrar yaratılıyordu. Belli ki düzenli kullanıdığım bir program yapıyordu bunu. Hangisi olduğunu bulmak zor iş diye düşünürken antivirüs programımın bir özelliği aklıma geldi. Access Protection'ın altında kullanıcı tanımlı kurallar yaratabiliyordum. Eğer kayıt defterinin bu bölümünü bloklarsam hem bu programın hangisi olduğunu bulabilirim, hem de kayıt defterimi böyle bir girişten uzak tutabilirim düşüncesiyle aşağıdaki kuralı yaratmaya koyuldum.

Yukarıda görüldüğü gibi "Registry Block Rule"u seçerek aşağıdaki girişleri yaptım.

Ve pusuya yatan bir avcı misali avımı beklemeye başladım. Birkaç gün sonra anvirüs yazılımımın sistem tepsisindeki simgesi yanıp sönmeye başladığında Virtualdubmod kullanıyordum. Açık kaynak kodlu Virtualdub yazılımının bir türevi olan bu program, MPEG2 formatındaki dosyaların ve birden çok ses izine sahip avi dosyalarının düzenlenmesinde kullandığım bir programdı. Programı birkez de elle virüs taramasından geçirdim, sonuç negatifti. Bu güne kadar güvendiğim bir yazılımın böyle bir dialer bileşenine sahip olması şokunu üstümden atar atmaz programın sitesinden programı birkez daha indirmeye karar verdim. Virtualdubmod, uzun bir süredir güncellenmeyen bir proje. Yeni sürmünün çıkmadığını biliyorum ama belki bendeki kopyası ile ilgili bir sorun vardır diyordum.

Ama yeni download ettiğim dosya da aynı sonucu verdi. Process Explorer ile çalışan programın strings tabına bir göz attığımda aşağıdaki ekranla karşılaştım.

Aslında Virtualdobmod, HKCU\Software\Freeware altında masum bir Virtualdubmod anahtarı yaratıyordu - bu antivirüs yazılımının loglarında belirtilmemişti. Sanıyorum bu basit bir çakışmadan ibaret. Dialer-182 adı altında kapsanan tehdit, HKCU\Software\Freeware anahtarının altına erişiyor. Şansa bakın ki Virtualdubmod da aynı anahtara erişiyor. Ama dialer ile hiçbir ilişkisi yok. Yani yanlış alarm.


Buna göre şu anda yapılabilecek iki şey var. Birincisi, virtualdubmod aklandığına göre anvirüs yazılımındaki Registry Blocking Rule'u silmek (veya virtualdubmod'u bir istisna olarak eklemek). Böylece herşey eskisi gibi olacak. Virtualdubmod özgürce kayıt defterine erişecek, ama antivirüs yazılımım da söz konusu anahtarı silmeye ve loglarında bunu belirtmeye devam edecek. Bu istemediğim birşey; loglarda sürekli bu yanlış alarma dair kayıtları görmek istemiyorum. İkincisi de kuralı olduğu gibi bırakmak. Bu şekilde de virtualdubmod'un HKCU\Software\Freeware altındaki anahtarı yaratmasına izin verilmeyecek. Bunun sonucunda da her açılışta GNU GPL anlaşmasını ve "Before We Start..." ekranını gösterecek. Bence mahsuru yok; bu daha iyi olur.

2009-11-13

Yeni bir bilgisayar ile birlikte gelen yazılımlar

Bunu özellikle yeni dizüstü bilgisayarlarda çok görüyorum. Daha alınalı birkaç gün olmuş, en son teknoloji ürünü bir dizüstünü elime aldığımda masaüstündeki kısayollara bir bakıyorum... Almış başını yürümüş. Bu, kullanıcının tasarrufunda olan birşey değil. Bilgisayar üreticisi böyle uygun görmüş.

Adobe'un bilmem kaç çeşit yazılımından, DVD oluşturma yazılımlarına, Microsoft Office'in 90 günlük deneme sürümünden e-Bay veya Amazon'un sitesine kısayollara, Register Your Product çeşidinden bir çok üretici kısayoluna, deneme sürümü antivirüs veya güvenlik yazılımlarına kadar bir sürü nesne masaüstünü dolduruyor.

En son bir Sony Vaio'da bunu yaşadım. VGN-CS31ST model ürün, bir teknoloji mağazasından satın alındıktan hemen sonra elime düştü. Çift çekirdekli 64-bitlik işlemcili 4 GB belleği olan bu cihaz, en ufak bir kopyalama ve kurulum işlemi sırasında yerlerde sürünüyor.

Normalde temiz bir kurulum sonrası böylesine yeni bir bilgisayarın, bu gibi basit işlemleri bir çırpıda yapması gerekirdi. Ama farkettim ki arka planda çalışan bir sürü süreç bilgisayarı bir Pentium-III hızında çalıştırıyor.

Bunun adı bloatware. Yeni bilgisayarlarımızın üzerinde, çok yüksek olasılıkla hiçbir zaman ihtiyacımız olmayacak bir sürü gerekiz yazılım kurulu geliyor. İşin kötüsü birçok üretici, bilgisayarla birlikte bir işletim sistemi CD/DVD'si vermiyor. Bunun yerine kurtarma seçenekleri sunuyor. Yani bu bloatware'den kurtulmak isteyip de bilgisayarı "fabrika ayarlarına" döndürsek yine karşımıza bunlar çıkacak!

Bu kısır döngüden kurtulmak ortalama bir bilgisayar kullanıcısı için imkansız. Bu da bizi nereye götürüyor? "Windows XP daha hızlıydı abi" şehir efsanesine! Her Windows Vista yüklü yeni dizüstü kullanıcısı, bilgisayarının çok yavaş çalıştığını düşünerek bir şekilde Windows XP'ye geri dönüyor. Bunun doğrudan Windows Vista ile ilgili olmadığını düşümeye başladım. Aslında temiz kurulumlu bir Vista, XP ile karşılaştırılabilir bir performansta (ondan daha hızlı ya da onunla aynı hızda diyemesem de) çalışacaktır. Elbette Vista'nın XP'ye kıyasla daha fazla hizmeti çalışıyor. Sunduğu işlevsellik, XP'ye kıyasla daha fazla. Bu da elbette performansta belli bir azalmaya sebep olacaktır. Ama bu, çoğu kullanıcı için hissedilir bir düzeyde olmaz. Neyse, konusu Vista'yı övmek olmayan bu yazının amacını saptırmayalım.

Demek istediğim, bloatware'den kurtulmak için bir girişime ihtiyaç var. Bir dernek mi kursak, ne yapsak? www.bloatware-istemiyoruz.org gibi mesela. Veya www.bilgisayarlarimiz-daha-hizli-calissin.org da olabilir.

2009-11-06

Windows'da CD/DVD sürücü gözükmüyor

Yeni yüklenmiş bir Windows Vista bilgisayarda birden optik sürücünün görünmemeye karar vermesi üzerine Aygıt Yöneticisi'ne baktığımda aygıtın yanında bir sarı ünlem gördüm. Özelliklerine baktığımda cihazın sürücüsü ile ilgili kayıt defterindeki girişlerin eksik olduğu yazıyordu (Kod 19). Bu gibi durumlarda yapılabilecek ilk şey cihazı sağ tıklayarak kaldırmak ve yeniden donanım taraması yaparak tekrar algılanmasını sağlayarak sürücülerin tekrar yüklemektir. Ben de böyle yaptım. Ama sonuç değişmedi. Bir optik sürücünün yazılım sürücüsünü de bir yerden bulamayacağım için şaşkın bir şekilde ne yapacağımı düşündüm. Google aramaları da genellikle bu çözümü öneriyordu. Ama Computing.net forumda bulduğum bu yazıda beni Microsoft Support sitesindeki şu sayfaya yönlendi ki bu da çözümümüz oldu. Buna göre Kod 19 durumunda optik sürücünün görünmesini sağlamak için yapılacaklar

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
anahtarının altındaki UpperFilters ve LowerFilters anahtarlarını silmekten geçiyor. Bundan sonra bilgisayarı tekrar başlattığınızda CD/DVD sürücünüzü tekrar görebileceksiniz. Eğer bu değerleri bulamazsanız veya sizin durumunuz burada anlatıldığı gibi değilse Microsoft Support sitesindeki yazıyı okuyarak ne yapacağınıza karar verin.

Kaynak:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q314060