Merhaba arkadaşlar, uzun zamandır aklımda zararlı yazılım analizi hakkında bir blog serisi yazmak vardı ve bu serinin ilk yazısı ile karşınızdayım. Bu blog serisi, zararlı yazılım analizi hakkında bilgi veren bir seridir. Bu yazımızda, zararlı yazılım analizinin ne olduğu ve nasıl yapıldığı hakkında temel bilgiler vereceğim. Umarım yazımızı okurken keyif alırsınız.
Peki, zararlı yazılım analizi nedir?
Zararlı yazılım analizi, virüsler, solucanlar (worm), truva atları gibi kötü amaçlı yazılımların amaçlarını ve nasıl çalıştıklarını anlamaya çalıştığımız inceleme sürecidir. Bu süreçte bir çok yöntem kullanılmaktadır. Yazının devamında bu yöntemlerden bahsedeceğim. Zararlı yazılım analizinin amacı kurumların ve şahısların karşı karşıya oldukları tehditleri anlamalarında ve bunlara karşı önlemler geliştirmektir. Çoğu siber saldırıda zararlı yazılımlar kullanılır bu nedenle bu konu siber güvenlik alanıyla ilgilenenler için önemlidir.
Zararlı Yazılım Analizinin Adımları
Kötü amaçlı yazılım analizine yönelik pek çok farklı yaklaşım vardır ve belirli adımlar, analizin amaçlarına ve kaynaklarına bağlı olacaktır. Zararlı yazılım analizinin adımları:
- Zararlı Yazılımın Bir Kopyasını Edinmek: Kötü amaçlı yazılım analizinde ilk adım, Analiz etmek istediğiniz kötü amaçlı yazılım örneğinin bir kopyasını elde etmektir. Bu genellikle, kötü amaçlı yazılımı kötü amaçlı yazılım deposu veya güvenilir bir siber güvenlik web sitesi gibi saygın bir kaynaktan indirerek yapılabilir.
- Analiz Ortamının Hazırlanması: Kötü amaçlı yazılımları güvenli ve etkili bir şekilde analiz etmek için uygun bir analiz ortamı hazırlamak önemlidir. Bu, bir sanal alan veya sanal makine kurmayı veya analiz için gerekli olacak diğer araçları ve kaynakları yapılandırmayı içerebilir.
- Statik Analiz: Statik analiz, kötü amaçlı yazılımın kodunu ve diğer yönlerini fiilen çalıştırmadan incelemeyi içerir. Bu, ayrıştırıcı veya kod çözücü gibi araçlar kullanılarak yapılabilir ve kötü amaçlı yazılımın davranışı ve yetenekleri hakkında değerli bilgiler sağlayabilir.
- Dinamik Analiz: Dinamik analiz, kötü amaçlı yazılımı kontrollü bir ortamda çalıştırmayı ve yürütülürken davranışını gözlemlemeyi içerir. Bu, hata ayıklayıcı veya korumalı alan gibi araçlar kullanılarak yapılabilir ve kötü amaçlı yazılımın davranışı ve yetenekleri hakkında ek bilgiler sağlayabilir.
- Sonuçları Raporlamak: Analiz tamamlandıktan sonra, bir sonraki adım sonuçları analiz etmek ve sonuçlar hakkında sonuçlar çıkarmaktır.
Analiz Ortamının Hazırlanması
Analiz ortamının hazırlanması, ana sisteminizi riske atmadan kötü amaçlı yazılımı güvenli ve etkili bir şekilde analiz etmenize olanak tanıdığı için kötü amaçlı yazılım analizinde önemli bir adımdır.
- İşletim Sisteminin Seçilmesi: Zararlıyı analiz etmek için en iyi ortam onun hedef aldığı sistemdir. Elinizdeki örnek Windows 10 tabanlı sistemleri hedef alıyorsa sanal makinenize Windows 10 kurarak işe başlayabilirsiniz.
- Analiz Araçlarının Kurulması: Hem statik analiz aşamasında hem de dinamik analiz aşamasında bir çok yazılıma ihtiyaç duyacaksınız. Analiz sırasında makineniz izole bir ortamda olacağı için bu yazılımları sonradan yüklemeniz doğru olmayacaktır o yüzden ihtiyacınız olan bütün araçları belirleyip sanal makinenize kurmanız gerekecek. İleriki dönemde yazacağım yazılarda bu araçlara da değineceğim.
- Analiz Ortamının Yapılandırılması: Analiz araçları yüklendikten sonra sistemin izole edilmesi gerekmekte .Hem host makinemizin güvenliği hem de aynı ağ içinde bulunduğumuz diğer cihazların güvenliği için ağ yapılandırması ile sistemimizin dış ağa çıkmasını engelleyerek izole bir ortam oluşturmamız gerekli. Gerekli durumlarda başka sanal makineler üzerinden sahte bir internet simülasyonu oluşturularak zararlı yazılım ağ bağlantılarını da inceleyebiliriz. Makinemizi izole edip kendi host makinemizin güvenliğini sağladıktan sonra Windows güvenlik duvarı, virüs ve tehdit koruması özelliklerini kapatarak zararlı yazılımın rahat bir şekilde çalışabileceği bir ortam hazırlamalıyız.
- Analize Başlayın: Artık izole bir ortama ve analiz araçlarına sahip olduğumuza göre zararlı yazılım analizine başlayabilirsiniz.
Statik Analiz
Statik analiz, zararlı yazılımın incelenmesindeki ilk aşamadır. Bu aşamada zararlıyı çalıştırmadan onun hakkında olabildiğince çok bilgi edinmeye çalışırız ki dinamik analiz sırasında zararlı çalışırken nereleri kontrol etmemiz gerektiğini bilelim. Bu aşamada ilk yapabileceğiniz şey elinizdeki zararlının md5 hash değerini hesaplayıp virustotal veya benzeri sitelerde aramak. Bu sayede daha önce keşfedilmiş bir zararlı ile hakkında yazılmış raporlara ulaşabilirsiniz. Bundan sonra yapacağınız ilk şey zararlının dosya tipini belirlemektir.
Dosya Tipi: Zararlı yazılımlar analiz sırasında yanlışlıkla çalıştırılmasını önlemek için dosya uzantısı olmadan tutulur veya zararlıyı geliştiren kişi bunun dosya formatını gerçekte olduğu formattan daha farklı şekilde gösterebilir. Bu kısmı dosyanın özelliklerini inceleyerek veya bir kaç araç kullanarak rahatça halledebilirsiniz.
Stings Analizi: Dize analizi, kötü amaçlı yazılım analizinde analizle alakalı olabilecek anahtar kelimeleri veya kelime öbeklerini belirlemek için yaygın olarak kullanılan bir tekniktir. Bu metinler, yazılımın kodunda kullanılan fonksiyon adları, değişkenler, hata mesajları ve benzeri bilgileri içerebilir. Strings analizi, bir yazılımın ne yaptığını anlamaya çalışırken faydalı olabilir, çünkü bu bilgiler yazılımın amacını ve işleyişini hakkında ipuçları vermektedir.
Stringleri incelemek için BinText, Strings, BinWalk araçları kullanılabilir.
Aşağıda, string analizinde dikkatimizi çekebilecek bir kaç örnek verdim:
- cmd.exe: Bu dize genellikle kötü amaçlı yazılım tarafından, virüslü sistemde kötü amaçlı eylemler gerçekleştirmek için kullanılabilecek komut istemi komutlarını yürütmek için kullanılır.
- regedit.exe: Bu dize genellikle Windows işletim sisteminin kayıt defterini değiştirmek için kullanılan bir araç olan kayıt defteri düzenleyicisi’ni başlatmak için kullanılır. Kötü amaçlı yazılım, kayıt defterinde kalıcı olmasına veya tespitten kaçmasına izin veren değişiklikler yapmak için bunu kullanabilir.
- netstat -an: Bu dize, etkin TCP bağlantılarını ve kullandıkları adresleri ve bağlantı noktalarını görüntülemek için kullanılır. Kötü amaçlı yazılım, virüslü sistemdeki açık bağlantı noktalarını belirlemek ve potansiyel olarak bunlara bağlanmak için bunu kullanabilir.
Kullanılan DLL Dosyaları
DLL, dinamik bağlantı kitaplığı anlamına gelmektedir. DLL dosyaları belirli görevleri gerçekleştirmek için diğer programlar tarafından çağırılabilen kütüphanelerdir. DLL içe aktarmaları, bir kötü amaçlı yazılım örneğinin davranışı ve işlevselliği hakkında değerli bilgiler sağlayabilir ve analiz sürecinin önemli bir parçası olabilir. DLL dosyaları ile zararlı hakkında bir çok bilgi edinilebilir. Örneğin ağ ile ilgili bir DLL dosyasını kullanan zararlının bir yerlerle iletişime kurmaya çalıştığı anlamına gelebilir. Benzeri şekilde daha önceden tespit edilmiş zararlı yazılımların kullandıkları DLL dosyaları incelenerek birbirlerine benzer amaçlar için yapılmış zararlılar tespit edilebilir.
Kötü amaçlı yazılım, eylemlerini bir Windows sisteminde gerçekleştirmek için çok çeşitli dinamik bağlantı kitaplıkları (DLL’ler) kullanabilir. Kötü amaçlı yazılım tarafından kullanılan bazı yaygın DLL’ler şunları içerir:
- kernel32.dll: Windows işletim sisteminin bir parçasıdır ve işletim sisteminin çekirdeği ile etkileşim için işlevler içerir. Bu DLL, çeşitli işletim sistemi görevlerini gerçekleştirmek için kullanılır. Örneğin, bellek ayırma ve işlem oluşturma gibi işlemleri destekler. Bu dll dosyası kötü amaçlı yazılımlar tarafından bellek ayırma ve işlem oluşturma gibi eylemleri gerçekleştirmek için kullanılabilir.
- advapi32.dll: Bu DLL, Windows güvenlik sistemiyle etkileşime yönelik işlevleri içerir ve genellikle kötü amaçlı yazılımlar tarafından yeni kullanıcılar oluşturmak veya kullanıcı izinlerini değiştirmek için kullanılır.
- user32.dll: Windows kullanıcı arayüzüne yönelik işlevleri gerçekleştirir. Genellikle zararlılar tarafından yeni pencereler oluşturma veya kullanıcılara mesaj göndermek için kullanılır.
- shell32.dll: Windows kabuğu ile etkileşim için gerekli işlevleri içerir zararlılar tarafından genellikle yeni kısayollar veya başlat menüsünde değişiklikler yapmak için kullanılır.
- ws2_32.dll: Windows ağ sistemine yönelik işlevlere sahiptir. Zararlı yazılımlar tarafından ağ bağlantıları kurmak için kullanılabilir.
Paketleyiciler(Packer)
Paketleyici, yürütülebilir dosyaları tersine mühendislik ile analiz etmeyi daha zor hale getirmek için sıkıştırma işlemi yapan bir yazılımdır. Paketleyiciler kötü amaçlı yazılımların tespit edilmesi ve incelenmesini engellemenin yanında onları daha verimli ve düşük boyutlu hale getirebilmektedir.
Zararlı yazılım analizinde, zararlının paketlenip paketlenmediğini veya hangi algoritma ile paketlendiğini bilmek önemlidir. Paketleyicileri tanımlayabilmek için kullanılan bazı yöntemler şunlardır:
- Dosya Boyutu: Dosya boyutunun benzer dosyalardan küçük oluşu onun paketlendiğinin göstergesi olabilir.
- Paketleme Tespit Araçları: Yazılımın paketlenip paketlenmediğini, paketlendiyse hangi yazılım ile paketlendiğini tespit eden yazılımlar bulunmaktadır. Bunlara örnek olarak PEiD ve Exeinfo PE araçları örnek gösterilebilir.
Dinamik Analiz
Dinamik analiz, zararlının özel olarak hazırlanmış güvenli bir sandbox ortamında çalıştırılarak davranışlarının incelenmesiyle yapılan analiz yöntemidir. Bu aşamada kurduğu ağ iletişimi, oluşturduğu dosyalar veya sistemdeki değişiklikler incelenerek zararlının amacını tespit edilmeye çalışılır. Dinamik analiz için bazı temel adımlar şunlardır:
- İlk verileri toplayın: Örneği yürütmeden önce, onun hakkında mümkün olduğunca fazla bilgi toplayın. Bu, dosya adını, boyutunu ve mevcut diğer meta verileri içerebilir. Bu kısımları aslında statik analiz aşamasında hallediyoruz.
- Örneği yürütün: Kötü amaçlı yazılım örneğini yalıtılmış ortamda çalıştırın ve davranışını gözlemleyin. Bu, sistem kaynaklarının, ağ etkinliğinin ve meydana gelen diğer değişikliklerin izlenmesini içerebilir.
- Davranışı izleyin ve kaydedin: Örnek yürütülürken, dikkate değer davranışları veya gerçekleştirdiği eylemleri not edin. Bu, yeni dosyalar veya işlemler oluşturmayı, sistem ayarlarını değiştirmeyi veya harici sunucularla iletişim kurmayı içerebilir.
- Davranışı analiz edin: Örnek yürütmeyi bitirdikten sonra, gözlemlenen davranışı gözden geçirin ve kötü amaçlı yazılımın ne yapmaya çalıştığını anlamaya çalışın. Bu, örneğin kodunu anlamak için tersine mühendislik yapmayı veya amacını belirlemek için gerçekleştirdiği eylemleri analiz etmeyi içerebilir.
- Bulguları belgeleyin: Gözlemlenen davranış, çıkarılan sonuçlar ve daha fazla eylem için öneriler dahil olmak üzere dinamik analizin bulgularını belgeleyin. Bu belgeler, kötü amaçlı yazılımın nasıl ele alınacağına ve gelecekteki bulaşmalara karşı nasıl korunacağına ilişkin kararları bildirmek için kullanılabilir.
Ağ Trafiğini İnceleme
Birçok kötü amaçlı program harici sunucularla iletişim kurduğundan veya ağ üzerinden veri sızdırmaya çalıştığından, ağ etkinliğini izlemek kötü amaçlı yazılımları analiz etmenin önemli bir parçası olabilir. Kötü amaçlı yazılım analizi sırasında ağ etkinliğinin izlenebileceği bazı yollar şunlardır:
- Paket yakalama: Ağ etkinliğini izlemenin bir yolu, ağ üzerinden iletilen veri paketlerini yakalamak ve analiz etmektir. Bu, paketleri gerçek zamanlı olarak yakalamanıza ve incelemenize olanak tanıyan Wireshark gibi araçlar kullanılarak yapılabilir.
- Ağ trafiği analizi: Ağ trafiğini analiz etmek, kötü amaçlı yazılımın göstergesi olabilecek davranış kalıplarını veya olağandışı etkinlikleri belirlemeye yardımcı olabilir. Bu, kullanılan olağandışı protokolleri veya bağlantı noktalarını aramayı veya belirli IP adreslerine veya adreslerinden aktarılan büyük miktarda veriyi tanımlamayı içerebilir.
- Ağ saldırı tespiti: Ağ saldırı tespit sistemleri (NIDS), ağ trafiğini izlemek ve analistleri olası tehditlere karşı uyarmak için kullanılabilir. Bu sistemler, güvenlik açıklarından yararlanma veya kısıtlı kaynaklara erişme girişimleri gibi kötü amaçlı etkinlikleri belirlemek için kurallar veya imzalar kullanır.
- Bal Küpü(Honeypots): Bal küpü, saldırganları çekmek ve tuzağa düşürmek için tasarlanmış bir tuzak sistemdir. Analistler, bir ağ üzerinde bir bal küpü kurarak saldırganların davranışlarını gözlemleyebilir ve onların taktikleri ve teknikleri hakkında istihbarat toplayabilir.
Dosya İnceleme
Birçok kötü amaçlı program, hedeflerine ulaşmak için dosya oluşturduğundan, değiştirdiğinden veya sildiğinden, dosya sisteminin izlenmesi kötü amaçlı yazılım analizinin önemli bir parçası olabilir. Kötü amaçlı yazılım analizi sırasında dosya sistemi etkinliğinin izlenebileceği bazı yollar şunlardır:
- Dosya oluşturma ve değiştirme: Kötü amaçlı yazılım, sistemde kalıcılık sağlamak veya sızdırdığı verileri depolamak için dosyalar oluşturabilir veya değiştirebilir. Beklenmedik konumlarda dosyaların oluşturulması veya değiştirilmesi gibi olağandışı etkinlikler için dosya sisteminin izlenmesi, analistlerin olası kötü amaçlı yazılım etkinliklerini belirlemesine yardımcı olabilir.
- Dosya silme: Bazı kötü amaçlı yazılımlar, izlerini örtmek veya bir sistemin çalışmasını bozmak için dosyaları silmeye çalışabilir. Dosya sistemini beklenmeyen dosya silme işlemlerine karşı izlemek, analistlerin potansiyel kötü amaçlı yazılım etkinliğini belirlemesine ve bunlara yanıt vermesine yardımcı olabilir.
- Dosya erişimi: Belirli dosyalara çok sayıda okuma veya yazma işlemi gibi olağandışı dosya erişim kalıpları için dosya sistemini analiz etmek, analistlerin potansiyel olarak kötü niyetli etkinliği belirlemesine yardımcı olabilir.
- Dosya sistemi değişiklikleri: Kötü amaçlı yazılım, dosya izinlerini değiştirmek veya yeni dizinler oluşturmak gibi dosya sisteminde değişiklikler yapmaya çalışabilir. Dosya sistemini bu tür değişiklikler için izlemek, analistlerin olası kötü amaçlı yazılım etkinliklerini belirlemesine ve bunlara yanıt vermesine yardımcı olabilir.
Windows Registry İnceleme
Windows kayıt defteri, yapılandırma ayarlarını ve işletim sistemi ve yüklü programlarla ilgili bilgileri depolayan bir veri tabanıdır. Birçok kötü amaçlı program, kalıcılık sağlamak veya sistem ayarlarını değiştirmek için kayıt defterinde değişiklikler yaptığından, kayıt defterini izlemek kötü amaçlı yazılımları analiz etmenin önemli bir parçası olabilir.
Kötü amaçlı yazılım analizi sırasında kayıt defterinin izlenebileceği bazı yollar şunlardır:
- Kayıt defteri anahtarı oluşturma ve değiştirme: Kötü amaçlı yazılım, bir sistemde kalıcılık sağlamak veya sistem ayarlarını değiştirmek için kayıt defteri anahtarları oluşturabilir veya değiştirebilir. Beklenmedik konumlarda anahtarların oluşturulması veya değiştirilmesi gibi olağandışı etkinlikler için kayıt defterinin izlenmesi, analistlerin olası kötü amaçlı yazılım etkinliklerini belirlemesine yardımcı olabilir.
- Kayıt defteri anahtarının silinmesi: Bazı kötü amaçlı yazılımlar, izlerini örtmek veya bir sistemin çalışmasını bozmak için kayıt defteri anahtarlarını silmeye çalışabilir. Kayıt defterini beklenmeyen anahtar silme işlemlerine karşı izlemek, analistlerin potansiyel kötü amaçlı yazılım etkinliğini belirlemesine ve bunlara yanıt vermesine yardımcı olabilir.
- Başlangıç programları: Birçok program, işletim sistemi önyüklendiğinde otomatik olarak başlayacak şekilde kendilerini yapılandırır. Kötü amaçlı yazılımlar, bu mekanizmayı bir sistemde kalıcılık oluşturmak için de kullanabilir. Kayıt defterini otomatik olarak başlayacak şekilde ayarlanmış olağandışı veya beklenmeyen programlar açısından incelemek, analistlerin olası kötü amaçlı yazılımları belirlemesine yardımcı olabilir.
- Sistem ayarları: Kayıt defteri, amaçlarına ulaşmak için kötü amaçlı yazılım tarafından değiştirilebilen birçok sistem ayarı içerir. Sistem ayarlarında olağandışı veya beklenmeyen değişiklikler için kayıt defterini izlemek, analistlerin potansiyel kötü amaçlı yazılım etkinliğini belirlemesine yardımcı olabilir.
Process Aktivitesi İzleme
İşlem etkinliği izleme, bir yazılım parçasının veya bir sistemin yürütülürken davranışını izlemek ve gözlemlemek için kötü amaçlı yazılım analizinde kullanılan bir tekniktir. Dosyaları açma, ağa erişme veya yeni işlemler oluşturma gibi bir işlemin gerçekleştirdiği çeşitli etkinliklerin izlenmesini ve kaydedilmesini içerir.
Proses etkinliği izleme için aşağıdakiler de dahil olmak üzere çeşitli araçlar mevcuttur:
- Sysinternals Process Monitor: Bu, Microsoft tarafından geliştirilmiş, bir Windows sistemindeki işlemlerin etkinliklerini izlemenizi ve kaydetmenizi sağlayan ücretsiz bir araçtır.
- Process Hacker: Process Hacker, bir sistem izleme ve yönetme aracıdır. Bu araç, bir bilgisayarda çalışan tüm işlemleri (process) listeleyebilir ve bu işlemlerin ayrıntılı bilgilerini gösterir. Bu bilgiler arasında, işlemlerin kullandığı bellek miktarı, CPU kullanımı, açık dosyalar ve bağlı modüller gibi bilgiler yer alır.
- strace: Bu, yürütülürken bir işlemin sistem çağrılarını ve sinyallerini izlemenizi sağlayan Unix tabanlı bir yardımcı programdır.
- ltrace: Bu, strace’e benzer bir araçtır, ancak sistem çağrıları yerine bir süreç tarafından yapılan kütüphane çağrılarını izler.
Bu bloğun sonuna geldik. Umarım sizin için faydalı bir yazı olmuştur. Gelecekte burada anlatılanların daha da derinine inerek zararlı yazılım analizi serisine devam edeceğim. İlerideki yazılarımızda görüşmek üzere. Hoşça kalın!
Bir yanıt yazın