Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Zararlı Yazılım Analizi Eğitimi Lab Kitabı

8,990 views

Published on

Zararlı Yazılım Analizi Eğitimi Laboratuvar Kitabı - BGA Security Onur Alanbel

Published in: Internet
  • Sex in your area is here: ❶❶❶ http://bit.ly/39sFWPG ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ❤❤❤ http://bit.ly/39sFWPG ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Zararlı Yazılım Analizi Eğitimi Lab Kitabı

  1. 1. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Zararlı Yazılım Analizi Eğitimi Lab Çalışmaları Baskı: 2 Haziran 2013 Hazırlayan: Onur Alanbel
  2. 2. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity BGA Bilgi Güvenliği A.Ş. Hakkında BGA Bilgi Güvenliği A.Ş. 2008 yılından bu yana siber güvenlik alanında faaliyet göstermektedir. Ülkemizdeki bilgi güvenliği sektörüne profesyonel anlamda destek olmak amacı ile kurulan BGA Bilgi Güvenliği,stratejik siber güvenlikdanışmanlığı ve güvenlik eğitimleri konularında kurumlara hizmet vermektedir. Uluslararası geçerliliğe sahip sertifikalı 50 kişilikteknik ekibi ile,faaliyetlerini Ankara ve İstanbul ve USA’da sürdüren BGA Bilgi Güvenliği’ninilgi alanlarını “Sızma Testleri, Güvenlik Denetimi, SOME, SOC Danışmanlığı, Açık Kaynak Siber Güvenlik Çözümleri, Büyük Veri Güvenlik Analizi ve Yeni Nesil Güvenlik Çözümleri”oluşturmaktadır. Gerçekleştirdiği başarılı danışmanlık projeleri ve eğitimlerle sektörde saygın bir yer edinen BGA Bilgi Güvenliği, kurulduğu günden bugüne alanında lider finans, enerji, telekom ve kamu kuruluşlarına 1.000'den fazlaeğitimve danışmanlıkprojelerigerçekleştirmiştir. BGA Bilgi Güvenliği, kurulduğu 2008 yılından beri ülkemizde bilgi güvenliği konusundaki bilgi ve paylaşımlarınartmasıamacı ile güvenlike-postalisteleri oluşturulması, seminerler,güvenliketkinlikleri düzenlenmesi, üniversite öğrencilerine kariyer ve bilgi sağlamak için siber güvenlik kampları düzenlenmesi ve sosyal sorumlulukprojeleri gibi birçokkonudagönüllüfaaliyetlerde bulunmuştur. BGA Bilgi Güvenliği AKADEMİSİ Hakkında BGA Bilgi Güvenliği A.Ş.’nin eğitim ve sosyal sorumluluk markası olarak çalışan Bilgi Güvenliği AKADEMİSİ, siber güvenlik konusunda ticari, gönüllü eğitimlerin düzenlenmesi ve siber güvenlik farkındalığını arttırıcı gönüllü faaliyetleri yürütülmesinden sorumludur. Bilgi Güvenliği AKADEMİSİ markasıyla bugüne kadar “Siber Güvenlik Kampları”, “Siber Güvenlik Staj Okulu”, “Siber Güvenlik Ar- Ge DestekBursu” , ”Ethical Hacking yarışmaları” ve “SiberGüvenlikKütüphanesi” gibi birçok gönüllü faaliyetindestekleyici olmuştur.
  3. 3. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity İÇİNDEKİLER Malware Analiz Amaçlı Bellek Dökümü Analizi........................................................................4 Uygulama Adı: Sanal Makinelerde Bellek Dökümü Alma.......................................................... 5 UygulamaAdı: WindowsSistemlerde BellekDökümüAlmaAmaçlıKullanılanTicari/Ücretsiz Yazılımlar.............................................................................................................................. 6 UygulamaAdı: Linux SistemlerdeBellekDökümüAlmaAmaçlıKullanılanTicari/Ücretsiz Yazılımlar.............................................................................................................................. 7 Uygulama Adı: Volatility Kullanarak Bellek Analizi ................................................................... 8 Uygulama Adı: Çalıştırılan Dosyaya Ait Ağ Bağlantılarını Bulma ...............................................10 Uygulama Adı: Bellekten Zararlı Yazılıma Ait Çalıştırılabilir Dosyanın Çıkarılması.......................11 Uygulama Adı: Bellekte Parola Bulma....................................................................................13 Uygulama Adı: Bellekte Zararlı Yazılım Avı..............................................................................14 Malware Analiz Araçları ve Temel Kullanımları......................................................................17 Uygulama Adı: Temel Seviye Disassembler Kullanımı..............................................................17 Uygulama Adı: Temel Seviye Debugger Kullanımı...................................................................21 Malware Keşfinde Microsoft Sysinternals Araçları ................................................................25 Uygulama Adı: Process Explorer Kullanımı.............................................................................25 Uygulama Adı: Process Monitor Kullanımı..............................................................................27 Malware Yayılma Mekanizmaları............................................................................................30 Online Malware Analiz Siteleri ve Temel Çalışma Yöntemleri...............................................30 Uygulama Adı: Virustotal Kullanımı .......................................................................................31 McRat Analizi...........................................................................................................................33 Uygulama Adı: Zararlı Tarafından Üretilen Trafiğin Sahte Servislerle Yönetimi..........................45 Uygulama Adı: Snort Kullanarak Zararlı Yazılım Tespiti............................................................49 Uygulama Adı: SSL Kullanan Zararlı Yazılım Trafiğini Yönlendirme ve İnceleme.........................53 Uygulama Adı: DNS Sinkhole İle Zararlı Yazılım Engelleme ......................................................57
  4. 4. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Malware Analiz Amaçlı Bellek Dökümü Analizi İşletim Sisteminin Çalışmasında Belleğin Yeri ve Önemi Bilgisayar sistemlerinde normal şartlar altında süreçler(process) çalışmak için işletim sistemi tarafından belleğe yüklenmeye gereksinimduyarlar. Zararlı yazılımlar kendilerini çalışan diğer süreçlerin bellek alanlarına enjekte etmek gibi yöntemler kullansalar da sonuçta bir şekilde bellekte yer edinmeleri gerekir. Bunun sebebini özetlemek gerekirse; günümüz işlemcileri çalıştıracağı kodları(instruction) kendi önbelleğinden çeker. Eğer gerekli alan önbellekte yüklü değilse bu alan bellekten yüklenir. Önbellek ve belleğin senkron olmasından dolayı(detaylar için cache write back ve cache write through policy aranabilir) sistemde çalışan süreçlerin aktiviteleri bellek analizi ile tespit edilebilir. Tabi burada bellekteki bazı süreçlerin diske kaydedilip(swapping) bellekten çıkarılmış olma ihtimali de var ancak bu süreçleri de bellek dökümüne dahil etmek döküm alma işlemini gerçekleştiren uygulamanın sorumluluğundadır. Yine detaylar için virtual memory, memory paging, process swapping başlıkları aranılabilir. Bellek Analizi İçin Gerekli Temel Bilgiler Modern işletim sistemleri bellek yönetiminde sanal bellek(virtual memory) adı verilen bir yapı kullanırlar. İşletim sistemi her süreç için sabit boyutlu, anlık sistem kaynaklarından bağımsız bir sanal bellek tanımlayıp sürece tek parça bir hafızaya sahip olduğu izlenimi verir. Ayrıca bu sanal belleği page adı verilen bir çok küçük parçaya böler. Aynı zamanda fiziksel belleği de pagelerle aynı boyutlu frame adı verilen parçalara böler ve süreçlerin çalışmak anında ihtiyaç duydukları pageleri bu framelere yükleyerek kısıtlı bir bellek alanında bir çok sürecin bulunmasına imkan tanır. Aynı sürece ait pagelerin framelere ardışık olarak yerleştirilme zorunluğu yoktur bu işlemin detayları işletim sisteminin sanal bellek yöneticisi tarafından ve TLB(translation lookaside buffer) gibi donanımsal eklentiler yardımıyla gerçekleştirilir. Sanal bellek yöntemi internal ve external fragmentation sorunlarını en aza indirip multiprocessing imkanını olabildiğince arttırmak amacıyla geliştirilmiştir. 32-bit Windows sistemlerde varsayılan olarak her sürece 2GB sanal bellek tanımlanır. İhtiyaç duyulduğunda bu boyut 32-bit uygulamalar için 3GB’a 64-bit uygulamalar içinse 4GB’a kadar çıkarılabilir. 64-bit Windows sistemlerde ise işlemci mimarisine göre bu boyut 7GB veya 8GB olarak tanımlanmıştır. 32-bit Linux sistemlerde süreçlerin sanal bellek alanı 3 GB olarak tanımlanmıştır. 64-bit Linux sistemlerde 32-bit uygulamalar için bu alan 4GB olarak tanımlanmıştır, 64-bit uygulamalar içinse sistem tarafından teoride 128TB’a kadar desteklenmekle beraber gerçekte kullanılan mimariye bağlı olarak değişkenlik gösterir. Bellek analizinde önem arz eden bir başka işletimsistemi mekanizması da swappingtir. İşletim sisteminin süreç yöneticisi tarafından diğer sistem kaynaklarıyla beraber fiziksel bellek kullanımı da süreçler arasında belli algoritmalara bağlı olarak paylaştırılır. İhtiyaç duyulduğunda bazı süreçlere ait frameler diske kaydedilerek başka süreçlere yer açılabilir. Bu diske kaydetme ve diskte geri yükleme işlemine Windowsta page in - page out, Linuxte swap in - swap out adı verilmektedir. Hem Windows hem de Linux sistemlerde çalıştırılabilir dosyalar için belli bir format vardır. Windows sistemler PE(Portable Executable) adı verilen bir dosya formatı kullanır. PE aslında
  5. 5. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity windows işletim sisteminin dosyayı belleğe yükleyip çalıştırabilmesi için gerekli bilgileri tutan veri yapısıdır. Temelde dosyanın belleğe nasıl yerleştirileceğiyle ve bellekte hangi bölümün hangi izinlerinin(okuma, yazma, çalıştırma) olacağı, çalışmak için ihtyaç duyduğu dll dosyaları gibi bilgileri barındıran başlık(header) ve bölümlerden(section) oluşur. Linux sistemlerde ise kendi başına çalıştırılabilir uygulamalar için ELF(Executable and Linkable Format) adı verilen bir dosya formatı kullanılır. ELF de PE formatına benzer olarak programın belleğe yerleştirilmesi, izinleri gibi işletimsisteminin programı çalıştırmak için ihtiyaç duyduğu bilgileri barındıran başlık ve bölümlerden oluşan bir veri yapısıdır. Uygulama No: BGA-MA-? Uygulama Adı: Sanal Makinelerde Bellek Dökümü Alma Amaç: Zararlının bulaştığı sanal makinede çalışan sistemin bellek dökümünü almak. Lab senaryosu: Zararlının çalıştığı sistemede ek bir yazılım çalıştırmaya gerek kalmadan sanallaştırma uygulaması aracılığıyla bellek dökümü elde edilir. Kullanılan Araçlar: ● VMWare Workstation 9 Adımlar: 1. Adım: Sanal makinenin snapshot özelliği kullanılarak sistemin durumu kaydedilir. VMWare için üst menüden “VM->Snapshot->Take Snapshot” yolu izlenir veya üst paneldeki snapshot ikonuna basılır. 2. Adım: İlgili sanal makine dosyalarının kayıtlı olduğu dizin bulunur. Bunun için ESXI gibi sanallaştırma sistemlerinde sanal makinenin kayıtlı olduğu datastore’a bakılır. Yerelde çalışan VMWare workstation için hedef sanal makinenin üzerine sağ tıklanıp “Settings” açılan pencereden “Options->General” tabına gelinir ve “Working Directory” kısmından dizin görülür. Bulunan dizine gidilip alınan snapshotla aynı isimdeki .vmem uzantılı dosya(bellek dökümü) analizin yapılacağı sisteme kopyalanır.
  6. 6. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Uygulama No: BGA-MA-? Uygulama Adı: Windows Sistemlerde Bellek Dökümü Alma Amaçlı Kullanılan Ticari/Ücretsiz Yazılımlar Amaç: Zararlının bulaştığı Windows sistemin bellek dökümünü almak. Lab senaryosu: Zararlının çalıştığı windows sistemde uygulama çalıştırılarak bellek dökümü elde edilir. Kullanılan Araçlar: ● DumpIt 2.0 ● Memoryze 3.0 Adımlar: 1. Adım: Memoryze uygulamasıbellek dökümünün alınacağısistemekopyalanır.Komut satırından veya görsel olarak uygulamanın bulunduğu dizine girilir. MemoryDD.bat dosyası çalıştırılıp bellek döküm alma işlemi başlatılır. Sadece belle bir uygulamanın bellek dökümü için ProcessDD.bat dosyası kullanılabilir. 2. Adım: Döküm alma işlemi bittiğinde memoryze’ın bulunduğu dizinde Audits dizini altında hedef işletimsisteminin adında bir dizin oluşturulur. Bu dizinde döküm işlemiyle ilgililog dosyalarının yanı sıra memory.1b12381b.img benzeri bir isme sahip .img uzantılı bellek döküm dosyası bulunur. Bu dosya analizin yapılacağı sisteme kopyalanır. 3. Adım: Alternatif olarak DumpIT uygulaması da bellek dökümü alma amacıyla kullanılabilir. Hedef sisteme kopyalanan DumpIT uygulaması çalıştırıldığında bulunduğu dizine .raw uzantılı bir bellek döküm dosyası kaydeder. Bu dosya analiz edileceği sisteme kopyalanarak bellek analizine başlanabilir.
  7. 7. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Uygulama No: BGA-MA-? Uygulama Adı: Linux Sistemlerde Bellek Dökümü Alma Amaçlı Kullanılan Ticari/Ücretsiz Yazılımlar Amaç: Zararlının bulaştığı Linux sistemin bellek dökümünü almak. Lab senaryosu: Zararlının çalıştığı Linux sistemde uygulama/komut çalıştırılarak bellek dökümü elde edilir. Kullanılan Araçlar: ● memdump 1.01 ● dc3dd ● Helix3 Pro R3 Adımlar: 1. Adım: Terminalden “dc3dd if=/dev/mem > dump.mem” komutu ile fiziksel sistem belleği dump.mem isminde bir dosyaya kaydedilir. Bazı linux dağıtımlarında/sürümlerinde bu komut bellek dökümünü eksiksiz almak için yeterli olmayabilir. Bu gibi durumlarda memdump uygulaması bellek dökümü alınacak sisteme kopyalanıp veya yüklenip terminalden “memdump > dump.mem” komutu ile döküm alma işlemi gerçekleştirilir. Bir başka seçenek de ücretli bir yazılımolan Helix3Pro ilebellek dökümü almaktır. Helix3 açılıp sol paneldeki memory bölümünden fiziksel bellek seçilip üst menüden “Acquire Device” ikonuna basılır. Gelen ekranda bellek dökümü ile ilgii istenen harici ayarlar varsa yapılıp “Start Acquisition” butonuna basılarak bellek dökümü alınır. 2. Adım: İlk adımda anlatılan araçlar kullanılarak elde edilen bellek döküm dosyası analizin yapılacağı sisteme kopyalanarak analiz işlemine başlanabilir.
  8. 8. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Uygulama No: BGA-MA-? Uygulama Adı: Volatility Kullanarak Bellek Analizi Amaç: Bellek dökümünü analiz etmek. Lab senaryosu: Zararlının çalıştığı makinenin bellek dökümü Volatility aracı/frameworkü kullanılarak analiz edilir ve kendisini explorer.exe’ye enjekte etmiş zararlının sebep olduğu anormallikler gözlenir. Kullanılan Araçlar: ● Volatility 2.2 ● Meterpreter çalıştırılmış WinXP SP3 bellek dökümü Adımlar: Volatility ücretsiz olarak indirilip kurulabileceğil gibi Kali’de hali hazırda yüklü gelmektedir ve konsoldan vol komutu ile çalıştırılabilir, ama eklentileri bulabilmesi için çalıştırmadan önce /usr/share/volatility/ dizinine geçilmesi gerekir. 1. Adım: “vol -f dump1.vmem imageinfo” komutu ile bellek dökümü hakkında bilgi alınır. Komut -f dump1.vmem (dump1.vmem adlı bellek döküm dosyası üzerinde) imageinfo (imageinfo adlı eklentiyi kullan) şeklinde açıklanabilir. Windows XP SP3 sistemin bellek dökümü için çıktısı şu şekildedir. Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86) AS Layer1 : JKIA32PagedMemoryPae (Kernel AS) …... KUSER_SHARED_DATA : 0xffdf0000 Image date and time : 2013-08-23 09:08:32 UTC+0000 Image local date and time : 2013-08-23 12:08:32 +0300 2. Adım: Bundan sonraki volatility komutları için “-f dump1.vmem --profile=WinXPSP3x86” parametrelerinin, ilgili eklentinin adı ve parametreleriyle beraber kullanılarak bellek dökümünün ve dökümün ait olduğu sistemin Volatility’e bildirilmesi gerekir. “vol -f dump1.vmem --profile=WinXPSP3x86 pslist” komutu ile süreçlerin listesi alınır. …. 0x865be658 spoolsv.exe 1380 704 10 136 0 0 2013-08-15 12:22:51 0x86144020 explorer.exe 1644 1604 14 438 0 0 2013-08-15 12:22:53
  9. 9. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 0x8634fda0 vmtoolsd.exe 1804 1644 5 253 0 0 2013-08-15 12:22:56 0x86488858 svchost.exe 1916 704 5 121 0 0 2013-08-15 12:23:03 …… Süreçlerin PID(Process ID) ve PPID(Parent Process ID) değerlerine bakılarak beklenmeyen servisler ya da uygulamalar tarafından başlatılan şüpheli süreçler belirlenebilir. 3. Adım: Zararlı yazılımın bir şekilde ağ erişimi sağlaması beklendiğinden dolayı connections(aktif bağlantılar listeler) ve connscan(önceki bağlantıları listeler) komutları ile sistemin ağ haraketleri incelenir. “”vol -f dump1.vmem --profile=WinXPSP3x86 connscan” (windows vista ve sonrası profiller için netscan komutu ile daha detaylı bir çıktı elde edilebilir) Offset(P) Local Address Remote Address Pid ---------- ------------------------- ------------------------- --- 0x060dc008 192.168.41.139:1551 192.168.41.1:4545 1644 0x060df488 192.168.41.139:1433 192.168.41.1:4545 1644 0x06101630 192.168.41.139:1575 192.168.41.1:4545 1644 0x0610be68 192.168.41.139:1518 192.168.41.1:4545 1644 0x0611ae68 192.168.41.139:1285 192.168.41.1:4545 1644 0x0611c610 192.168.41.139:1526 192.168.41.1:4545 1644 0x0613a738 192.168.41.139:1473 192.168.41.1:4545 1644 0x06223508 192.168.41.139:1610 192.168.41.1:4545 1644 0x06360b40 192.168.41.139:1172 192.168.41.1:4545 2984 0x063743d8 192.168.41.139:1592 192.168.41.1:4545 1644 0x06385620 192.168.41.139:1221 192.168.41.1:4545 2984 ……. 0x0643e008 192.168.41.139:1597 192.168.41.1:4545 1644 0x06449e68 192.168.41.139:1319 192.168.41.1:4545 1644 0x0644a008 192.168.41.139:1332 192.168.41.1:4545 1644 0x065da620 192.168.41.139:1248 192.168.41.1:4545 2984 0x066b3cd8 192.168.41.139:1439 192.168.41.1:4545 1644 Bağlantı geçmişinden görüldüğü üzere iki süreç 192.168.41.1 IP’si ile bağlantı kurmuş. 2984 PID’ine sahip süreç, süreç listesinde olmadığı için hakkında bir bilgi yok fakat 1644 explorer.exe’nin PID’i olmasından dolayı dikkate değer. Explorer.exe’nin ağ aktivitesi göstermesi beklenmeyen bir durumdur. Bu senaryo için zararlının önce 2984 PID’ine sahip süreç olarak veya süreç üzerinden çalıştığı daha sonra kendisini explorer.exe’ye enjekte ettiği hipotezi öne sürülebilir.
  10. 10. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Uygulama No: BGA-MA-? Uygulama Adı: Çalıştırılan Dosyaya Ait Ağ Bağlantılarını Bulma Amaç: Sistemdeki uygulama veya servislerin ağ aktivitelerini incelemek. Labsenaryosu:Zeus zararlısınn çalıştığı WinXP SP2 sistemdeki network aktivitileribellek analiz yöntemiyle tespit edilir. Kullanılan Araçlar: ● Volatility 2.2 ● Zeus Bellek Dökümü (http://malwarecookbook.googlecode.com/svn- history/r26/trunk/17/1/zeus.vmem.zip) Adımlar: 1. Adım: “vol -f ~/Desktop/zeus.vmem --profile=WinXPSP2x86 connections” komutu ile dökümün alındığı andaki aktif bağlantılar listelenir. Örnek dökümde bu komut sonuç vermeyecektir. “vol -f ~/Desktop/zeus.vmem --profile=WinXPSP2x86 connscan” komutu ile önceki bağlantılar listelenmeye çalışılır. Volatile Systems Volatility Framework 2.2 Offset(P) Local Address Remote Address Pid ---------- ------------------------- ------------------------- --- 0x02214988 172.16.176.143:1054 193.104.41.75:80 856 0x06015ab0 0.0.0.0:1056 193.104.41.75:80 856 2. Adım: Birinci adımda bulunan bağlantıların 856 PID’li uygulamaya, pslist ile bakıldığında svchost.exe’e ait olduğu görülmektedir. “whois 193.104.41.75” ile IP sorgulandığında Microsoft ile alakası olmayan bir IP olduğu görülmektedir ki svchost.exe’nin böyle bir IP ile bağlantı kurması beklenen bir durum değildir. “vol -f ~/Desktop/zeus.vmem --profile=WinXPSP2x86 sockets” komutu ile sistemdeki açık soketler listelenir. sockets yerine sockscan eklentisi ile önceki açık soketleri listelemek de mümkündür. Offset(V) PID Port Proto Protocol Address Create Time ---------- ------ ------ ------ --------------- --------------- ----------- 0x80fd1008 4 0 47 GRE 0.0.0.0 2010-08-11 06:08:00 0xff258008 688 500 17 UDP 0.0.0.0 2010-08-11 06:06:35 0xff367008 4 445 6 TCP 0.0.0.0 2010-08-11 06:06:17 0x80ffc128 936 135 6 TCP 0.0.0.0 2010-08-11 06:06:24 0xff37cd28 1028 1058 6 TCP 0.0.0.0 2010-08-15 19:17:56 0xff20c478 856 29220 6 TCP 0.0.0.0 2010-08-15 19:17:27 0xff225b70 688 0 255 Reserved 0.0.0.0 2010-08-11 06:06:35
  11. 11. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 0xff254008 1028 123 17 UDP 127.0.0.1 2010-08-15 19:17:56 0x80fce930 1088 1025 17 UDP 0.0.0.0 2010-08-11 06:06:38 0xff127d28 216 1026 6 TCP 127.0.0.1 2010-08-11 06:06:39 0xff206a20 1148 1900 17 UDP 127.0.0.1 2010-08-15 19:17:56 0xff1b8250 688 4500 17 UDP 0.0.0.0 2010-08-11 06:06:35 0xff382e98 4 1033 6 TCP 0.0.0.0 2010-08-11 06:08:00 0x80fbdc40 4 445 17 UDP 0.0.0.0 2010-08-11 06:06:17 Eldeki bulgular ışığında analiz çalışmalarını services.exe’nin üzerine yoğunlaştırmak doğru bir yaklaşım olabilir. Uygulama No: BGA-MA-? Uygulama Adı: Bellekten Zararlı Yazılıma Ait Çalıştırılabilir Dosyanın Çıkarılması Amaç: Bellekteki zararlı yazılımı çalıştırılabilir dosya olarak elde etmek. Lab senaryosu: Bellekte kendi başına ya da başka bir sürece dahil olarak çalışan zararlı yazılım çalıştırılabilirdosya olarak kaydedilip dosya üzerinde dinamik, statikveya imza tabanlı analizler yapma imkanı elde edilir. Kullanılan Araçlar: ● Volatility 2.2 ● Zeus Bellek Dökümü (http://malwarecookbook.googlecode.com/svn- history/r26/trunk/17/1/zeus.vmem.zip) Adımlar: 1. Adım: Bir sürecin adreslenebilen tüm bellek alanını kaydetmek için Volatility’nin memdump eklentisi kullanılabilir. Örneğin: “vol -f ~/Desktop/zeus.vmem --profile=WinXPSP2x86 memdump -D ~/Desktop/zeus -p 856” komutu ile 856 PID’li süreç “~/Desktop/zeus/856.dmp” dosyasına kaydedilir. 2. Adım: Eğer zararlının kendisinibaşka bir sürece enjekte ettiğinden şüpheleniliyorsa, malfind eklentisi kullanılarak şüpheli sürecin bellek alanına ait VAD(virtual address descriptor) değerlerine ve bellek üzerinde okuma,yazma,çalıştırma izinlerine bakılarak enjekte edilmiş dll veya kodlar bulunabilir. “vol -f ~/Desktop/zeus.vmem --profile=WinXPSP2x86 malfind -D ~/Desktop/zeus -p 856” Process: svchost.exe Pid: 856 Address: 0xb70000 Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE
  12. 12. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Flags: CommitCharge: 38, MemCommit: 1, PrivateMemory: 1, Protection: 6 0x00b70000 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00 MZ.............. 0x00b70010 b8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@....... 0x00b70020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0x00b70030 00 00 00 00 00 00 00 00 00 00 00 00 d0 00 00 00 ................ 0xb70000 4d DEC EBP 0xb70001 5a POP EDX 0xb70002 90 NOP ……. 0xb7003c d000 ROL BYTE [EAX], 0x1 0xb7003e 0000 ADD [EAX], AL Process: svchost.exe Pid: 856 Address: 0xcb0000 Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE Flags: CommitCharge: 1, MemCommit: 1, PrivateMemory: 1, Protection: 6 0x00cb0000 b8 35 00 00 00 e9 cd d7 c5 7b 00 00 00 00 00 00 .5.......{...... 0x00cb0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0x00cb0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0x00cb0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0xcb0000 b835000000 MOV EAX, 0x35 0xcb0005 e9cdd7c57b JMP 0x7c90d7d7 0xcb000a 0000 ADD [EAX], AL …. 3. Adım: Elde edilen dosyalar üzerinde gelişmiş statik ve dinamik analiz yöntemleri uygulanabilir, Cuckoo gibi sandboxlarla analiz edilebilir veya bilindik bir zararlı olması ihtimaline karşın virustotal.com gibi online tarama yapan sistemlere gönderilebilir. Örnek bellek dökümünden ikinciadımda elde edilen process.0x80ff88d8.0xb70000.dmp isimlidosya virustotal aracılığıyla taratılarak birçok antivirüs tarafından zbot(zeus) türevi olarak tanımlandığı görülmüştür.
  13. 13. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Uygulama No: BGA-MA-? Uygulama Adı: Bellekte Parola Bulma Amaç: Zararlı yazılımın kullandıgı parolları bulmak. Lab senaryosu: Çalıştığında veri aktarmak veya komut almak gibi amaçlarla FTP sunucusuna bağlanan zararlının hafıza dökümünden sunucunun kullanıcı adı ve parolası bulunur. Kullanılan Araçlar: ● Volatility 2.2 ● UsbFix.exe (074119aa1af762c3abe81bd5b682a43781a9ce726aa59c5fd4c609912d249d76) Adımlar: 1. Adım: “ vol -f ~/Desktop/memdump.vmem --profile=WinXPSP3x86 connections” veya(connscan) ile aktif veya geçmiş bağlantılar listelenir. Volatile Systems Volatility Framework 2.2 Offset(V) Local Address Remote Address Pid ---------- ------------------------- ------------------------- ------ 0x8608d220 10.10.10.130:1046 10.10.10.129:21 2480 2. Adım Örnekteki hedef sunucunun 21. portuna (varsayılan FTP portu) bağlantı kuran 2480 PID’li süreç gibi şüpheli süreçler “vol -f ~/Desktop/memdump.vmem --profile=WinXPSP3x86 memdump -p 2480 -D ~/Desktop/” komutu ile ayrı bir dosyaya kaydedilir. memdump eklentisi -D ile belirtilen dizine -p ile belirtilen PID’deki sürece ait hafızayı pid.dmp(2480.dmp) adlı dosyaya kaydeder. 3. Adım Bu dosya üzerinde strings uygulaması kullanılarak stringler çıkarılıp üzerinde istenilen aramalar yapılabilir. Örneğin aramayı FTP varsayımı üzerinden yapmak için ilk olarak “strings 2480.dmp | grep ftp” ile ftp sunucusunun alanadı bulunabilir. ... ftp.cluster010.ovh.net ftp://%s/ iis_ftp cutftp32.exe ftpProxyServer RomMtftpReadFile failed %d status from TftpGetPut 0x%x calling TftpGetPut(%s,0x%x)
  14. 14. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Daha sonra kullanıcı adını bulmak için “strings 2480.dmp | grep USER” ... USER %s …. USER eldesapa %d, USER ... ve parolayı bulmak için “strings 2480.dmp | grep PASS” kullanılabilir. PASS %s PASS TDzwf4wh5N1 ERROR: SrvConfigurationThread returning at >PASSIVE level Farklı protokoller için veya aranan başka önemli veriler için de benzer yöntemler kullanmak mümkündür. Zararlının statik analizinde büyük ihtimalle encrypted veya encoded olarak tutulduğundan dolayı görülemeyen bu tarz bilgilere hafıza analizinde okunabilir halde erişmek mümkün olabilmektedir. Uygulama No: BGA-MA-? Uygulama Adı: Bellekte Zararlı Yazılım Avı Amaç: Belleği bilinen zararlı yazılımlar için taramak. Lab senaryosu: Zararlının bulaştığı sistem yara imzalarıyla taranarak zeus zararlısı olduğu belirlenir. Sistemdeki dll/kod enjeksiyonları bulunur. Kullanılan Araçlar: ● Volatility 2.2 ● Yara 1.7, Yara-python 1.7 ● Zeus Bellek Dökümü (http://malwarecookbook.googlecode.com/svn- history/r26/trunk/17/1/zeus.vmem.zip) Adımlar: 1. Adım: Bellek dökümü yarascan eklentisi kullanılarak tanımlı imzalar için taranabilir. Kullanılan örnek imza dosyası “http://code.google.com/p/yara-project/wiki/MalwareRules” adresinden indirilebilir.
  15. 15. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity “vol -f ~/Desktop/zeus.vmem --profile=WinXPSP2x86 yarascan --yara-file=malrules.yara” ……. Owner: Process svchost.exe Pid 856 0x00b73014 2a 3c 73 65 6c 65 63 74 20 00 00 00 2a 3c 6f 70 *<select....*<op 0x00b73024 74 69 6f 6e 20 20 73 65 6c 65 63 74 65 64 00 00 tion..selected.. 0x00b73034 2a 3c 69 6e 70 75 74 20 2a 76 61 6c 75 65 3d 22 *<input.*value=" 0x00b73044 00 00 00 00 42 00 4f 00 46 00 41 00 20 00 61 00 ....B.O.F.A...a. Rule: zbot Owner: Process svchost.exe Pid 856 0x00b73020 2a 3c 6f 70 74 69 6f 6e 20 20 73 65 6c 65 63 74 *<option..select 0x00b73030 65 64 00 00 2a 3c 69 6e 70 75 74 20 2a 76 61 6c ed..*<input.*val 0x00b73040 75 65 3d 22 00 00 00 00 42 00 4f 00 46 00 41 00 ue="....B.O.F.A. 0x00b73050 20 00 61 00 6e 00 73 00 77 00 65 00 72 00 73 00 ..a.n.s.w.e.r.s. Rule: zbot Owner: Process svchost.exe Pid 856 0x00b73034 2a 3c 69 6e 70 75 74 20 2a 76 61 6c 75 65 3d 22 *<input.*value=" 0x00b73044 00 00 00 00 42 00 4f 00 46 00 41 00 20 00 61 00 ....B.O.F.A...a. 0x00b73054 6e 00 73 00 77 00 65 00 72 00 73 00 3a 00 0a 00 n.s.w.e.r.s.:... 0x00b73064 0a 00 25 00 53 00 00 00 67 00 72 00 61 00 62 00 ..%.S...g.r.a.b. Rule: zbot …. Çıktıdan Zeus zararlısının birçok sürece kendisini enjekte ettiği görülmektedir. 2. Adım: İmza tabanlı taramadan sonuç alınamadığı durumlarda dll veya kod enjeksiyonu yöntemiyle başka süreçlere dahil edilmiş kodlar malfind eklentisiyle bellekte taranabilir. “vol -f ~/Desktop/zeus.vmem --profile=WinXPSP2x86 malfind” ……… Process: svchost.exe Pid: 856 Address: 0xb70000 Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE Flags: CommitCharge: 38, MemCommit: 1, PrivateMemory: 1, Protection: 6 0x00b70000 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00 MZ.............. 0x00b70010 b8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@....... 0x00b70020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0x00b70030 00 00 00 00 00 00 00 00 00 00 00 00 d0 00 00 00 ................ 0xb70000 4d DEC EBP 0xb70001 5a POP EDX 0xb70002 90 NOP 0xb70003 0003 ADD [EBX], AL 0xb70005 0000 ADD [EAX], AL 0xb70007 000400 ADD [EAX+EAX], AL 0xb7000a 0000 ADD [EAX], AL 0xb7000c ff DB 0xff
  16. 16. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 0xb7000d ff00 INC DWORD [EAX] 0xb7000f 00b800000000 ADD [EAX+0x0], BH 0xb70015 0000 ADD [EAX], AL 0xb70017 004000 ADD [EAX+0x0], AL 0xb7001a 0000 ADD [EAX], AL 0xb7001c 0000 ADD [EAX], AL …….. 0xb7003a 0000 ADD [EAX], AL 0xb7003c d000 ROL BYTE [EAX], 0x1 0xb7003e 0000 ADD [EAX], AL Process: svchost.exe Pid: 856 Address: 0xcb0000 Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE Flags: CommitCharge: 1, MemCommit: 1, PrivateMemory: 1, Protection: 6 0x00cb0000 b8 35 00 00 00 e9 cd d7 c5 7b 00 00 00 00 00 00 .5.......{...... 0x00cb0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0x00cb0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0x00cb0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0xcb0000 b835000000 MOV EAX, 0x35 0xcb0005 e9cdd7c57b JMP 0x7c90d7d7 0xcb000a 0000 ADD [EAX], AL ……..
  17. 17. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Malware Analiz Araçları ve Temel Kullanımları Debugger ve Disassembler Kavramları Disassembler, native kod denilen CPU’nun anlayacağı komutlara çevrilerek derlenme işlemi yapılmış (veya assemblerdan geçirilerek) programların tekrar assembly koduna dönüştürülme işlemini yapan uygulamadır. Örneğin işlemcinin anlayacağı “EB eax” opcodunu daha anlaşılır olan “JMP short eax”assemblykoduna dönüştürerek tersine mühendislik işlemini kolaylaştırır. Debugger ise bir süreci çalışma anında takip etmeye ve yönlendirmeye yarayan programdır. Debuggerlar sayesinde süreç, belli bir noktada durdurulup devam ettirilebilir, bellekteki etkileri gözlenebilir, çalışması değiştirilip yönlendirilebilir. Debuggerlar ve disassemblerlar dinamik ve statik analiz aşamalarının temel araçlarıdır. Native kod analizinde en sık kullanılan debuggerlar Windbg, Ollydbg, Immunity Debugger; disassembler ise IDA (Pro veya Community) ’dur. Uygulama No: BGA-MA-? Uygulama Adı: Temel Seviye Disassembler Kullanımı Amaç: Temel seviyede statik analiz yöntemleri kullanarak zararlı yazılımı analiz etmek. Lab senaryosu: Komuta merkezi görevi gören bir web sayfasına bağlanıp komut okuyan zararlı yazılımın işleyişi disassembler kullanılarak analiz edilir. Kullanılan Araçlar: ● IDA Pro 6 ● Lab06-01.exe (Practical Malware Analysis) Adımlar: 1. Adım: IDA çalıştırıldığında gözüken “Quick Start” penceresinden New butonuna basılarak analiz edilecek dosya(Lab06-01.exe) seçilir. Uygun dosya formatı(bu durumda PE) seçilip onaylandıktan sonra IDA’nın ana ekranı açılacaktır. Sol taraftaki Functions bölümünde uygulamanın kullandığı fonksiyonlar, orta bölümdeki sekmelerden ise IDA-View’de graph görünümü, Hex-View de hex görünümü, Structures’da tanımlı veri yapıları, Enums bölümünde tanımlı Enum tipler, Imports’da kullandığı harici fonksiyonlar, Exports’da ise dışarıdan çağırılabilir fonksiyonlar görüntülenir. Ayrıca IDA-View ekranında boşluk(space) tuşuna basılarak text görünümüne geçilip assembly kodları detaylı yorumlar ve virtual adressleri ile görüntülenebilir. 2. Adım: Kodu analiz etmeye başlamadan önce Imports sekmesinden zararlının hangi sistem fonksiyonlarını kullandığına bakmak faydalı olabilir. Örnek zararlıda dosya işlemleri, registery işlemleri yapan ve HTTP bağlantısı kuran dolayısıyla önem arz aden fonksiyonlar şu şekildedir.
  18. 18. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Zararlının amacına göre bu fonksiyonlar benzerlik gösterebileceği gibi çok farklı da olabilir. Address Ordinal Name Library ------- ------- ---- ------- 00406000 RegSetValueExA ADVAPI32 00406004 RegOpenKeyExA ADVAPI32 0040600C CreateDirectoryA KERNEL32 ……... 004060CC InternetOpenUrlA WININET 004060D0 InternetCloseHandle WININET 004060D4 InternetReadFile WININET 004060D8 InternetGetConnectedState WININET 004060DC InternetOpenA WININET 3. Adım: Eğer uygulama hakkında hangi fonksiyonlara yoğunlaşılacağı gibi bir ön bilgi yoksa ilk çalışacak fonksiyon olan main fonksiyonu seçilerekanalizebaşlanır(windows exeleriiçinmain, dllleriiçin dllMain). Main fonksiyonu çalıştığında ilk olarak IDA’nın sub_401000 olarak isimlendirdiği 401000 adresindeki fonksiyonu çağırdığı görülmektedir. push ebp mov ebp, esp sub esp, 8 call sub_401000 mov [ebp+var_4], eax cmp [ebp+var_4], 0 Fonksiyona çift tıklanarak veya G tuşuna basılıp adresi girilerek ilgili kod bloğuna ulaşılır. IDA’nın koda eklediği yorumlara bakılarak fonksiyonun InternetGetConnectedState adlı winAPI fonksiyonunu iki parametreyi de 0 vererek çağırdığı görülmektedir. push 0 ; dwReserved push 0 ; lpdwFlags call ds:InternetGetConnectedState Analiz sırasında karşılaşılan winAPI fonksiyonlarıyla ilgili detaylı bilgiye http://msdn.microsoft.com adresinden ulaşılabilir. Fonksiyondan dönen değeri true ya da false olmasına göre kodun gidişatının nasıl olacağı IDA graph görünümünde açıkça görülmektedir.
  19. 19. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Ekranda da görüldüğü üzere internet bağlantısının mevcut olup olmadığını söyleyen bir string parametresi ile sub_401271 fonksiyonunu çağırıp fonksiyondan çıkmaktadır. Örnekteki sub_401271 fonksiyonu tahmin edildiği gibi C’nin printf fonksiyonudur. Analizi kolaylaştırması açısından bu fonksiyon sağ tuş -> Rename yolu izlenerek “printf” olarak adlandırılabilir. Böylece IDA genelinde fonksiyonun yeni ismi kullanılır. 4. Adım: ESC tuşu ile bir önceki ekrana(yani main fonksiyonuna) dönülür. Yine assembly kodu okunarak veya graph izlenerek 3. adımda analiz edilen fonksiyondan true dönmüşse sub_401040 fonksiyonun çağırıldığı görülür. Bu fonksiyon, InternetOpen ve InternetOpenURL winAPI fonksiyonlarını kullanarak “http://www.practicalmalwareanalysis.com/cc.htm” adresine bağlanmaktadır. push 0 ; dwFlags push 0 ; lpszProxyBypass push 0 ; lpszProxy push 0 ; dwAccessType push offset szAgent ; "Internet Explorer 7.5/pma" call ds:InternetOpenA mov [ebp+hInternet], eax push 0 ; dwContext push 0 ; dwFlags push 0 ; dwHeadersLength push 0 ; lpszHeaders push offset szUrl ; "http://www.practicalmalwareanalysis.com"... mov eax, [ebp+hInternet]
  20. 20. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity push eax ; hInternet call ds:InternetOpenUrlA Adres ve user-agent gibi detaylar network tarafında kullanılacak imza için iyi seçimler olabilir. Fonksiyonun devamında ise açılan dosyanın içerği okunup bir buffera yazılmakta geriye de bufferın adresi döndürülmektedir. Main fonksiyonunda ise dönen değer NULL değilse okunup parse edilen komutun ekrana yazıldığı görülmektedir. call sub_401040 mov [ebp+var_8], al movsx eax, [ebp+var_8] test eax, eax jnz short loc_40123C … push offset aSuccessParsedC ; "Success: Parsed command is %cn" call printf Yine main’in devamında çağırılan sub_401130 fonksiyonu benzer şekilde analiz edildiğinde yaptığı Registery işlemleri görülebilir. Son olarak zararlının sonlanmadan önce ex 0x0EA60 ondalık 60000 ms uyuduğu görülebilir. add esp, 8 push 0EA60h ; dwMilliseconds call ds:Sleep xor eax, eax
  21. 21. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Uygulama No: BGA-MA-? Uygulama Adı: Temel Seviye Debugger Kullanımı Amaç: Temel seviyede dinamik analiz yöntemleri kullanarak zararlı yazılımı analiz etmek. Lab senaryosu: Çalışmadan önce dosya adını kontrol eden, bağlantı kuracağı adresi çalışma anında dinamik olarak oluşturan bir zararlı debugger kullanılarak analiz edilir. Kullanılan Araçlar: ● OllyDbg 2 ● Lab09-02.exe (Practical Malware Analysis) Adımlar: OllyDbg kullanarak zararlıyı çalışma anında analiz etmeniz mümkündür. Dikkat edilmesi gereken nokta, statik analizin aksine zararlının gerçekten çalıştırılacak olmasıdır. Bu yüzden analizin uygun lab ortamında yapılması tavsiye edilir. 1. Adım: Analiz edilecek zararlı(Lab09-02.exe) OllyDbg ile açılır. Yoğunlaşılması gereken kod blokları hakkında bir önbilgiyoksa incelemeye main fonksiyonundan başlanabilir. Main fonksiyonunun üzerine(örnekte call 00401128) tıklanıp F2 tuşuna basılarak breakpoint(software) konulur ve F9 ile zararlı çalıştırılır. Bu sayede breakpointe ulaşıldığında kontrol tekrar debuggera geçer, böylece kalınan noktatan detaylı analize devam edilebilir. CPU Disasm Address Hex dump Command Comments 00401619 |. 50 PUSH EAX ; /Arg3 = ASCII "p A" 0040161A |. FF35 DC524000 PUSH DWORD PTR DS:[4052DC] ; |Arg2 = 410B30 00401620 |. FF35 D8524000 PUSH DWORD PTR DS:[4052D8] ; |Arg1 = 1 00401626 |. E8 FDFAFFFF CALL 00401128 ; Lab09-02.00401128 0040162B |. 83C4 0C ADD ESP,0C 0040162E |. 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX 00401631 |. 50 PUSH EAX 2. Adım: Programı satır satır çalıştırmak için F7 ve F8 kısayolları kullanılabilir. F7 ile F8’in farkı ilki call komutlarının içine girerken ikincisi tamamını çalıştırıp devam etmektedir. Main fonksiyonuna F7 ile girilir. Fonksiyon stackte 0x304 byte(OllyDbg’da gösterilen sayısal değerler 16’lık sistemdedir.) yer ayırıyor ve bu alana sabit değerleri yerleştiriyor. Bu tarz yöntemler basit statik analizyöntemleriyle programda kullanılanstringlerin görülmesini engellemek için zararlı yazılımlar tarafından sıklıkla kullanılır. CPU Disasm Address Hex dump Command Comments
  22. 22. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 0040112B |. 81EC 04030000 SUB ESP,304 00401131 |. 56 PUSH ESI 00401132 |. 57 PUSH EDI 00401133 |. C685 50FEFFFF MOV BYTE PTR SS:[LOCAL.108],31 0040113A |. C685 51FEFFFF MOV BYTE PTR SS:[LOCAL.108+1],71 …... 004011BF |. C685 67FEFFFF MOV BYTE PTR SS:[LOCAL.103+3],0 004011C6 |. B9 08000000 MOV ECX,8 Sabitleri belleğe yazma işlemi sonuna kadar çalıştırılıp veya F8 ile adım adım ilerlenip OllyDbg ekranın sağ alt tarafındaki Stack penceresinden ilgili adrese yazılan değer ASCII haliyle de görülebilir. Debugger kullanmanın disassembler’a göre avantajlı olduğu durumlardan birisi budur. Stacke yazılan değerin “1qaz2wsx3edc” olduğu görülmektedir. Klavyede bu tuşların dizilişi dikkate alındığında bir yere not etmekte fayda var. 3. Adım: Main fonksiyonunun devamında GetModuleFileName winapi fonksiyonu çağırılmaktadır. MSDN’den incelendiğinde bu fonksiyon örnekte olduğu gibihModule parametresi NULL olarak çağırıldığında sürecin kendi dizin yolunu yine parametre ile geçirilen buffera yazmaktadır. CPU Disasm Address Hex dump Command Comments 004011FA |. 68 0E010000 PUSH 10E ; /Count = 270. 004011FF |. 8D85 00FDFFFF LEA EAX,[LOCAL.192] ; |
  23. 23. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 00401205 |. 50 PUSH EAX ; |Buffer => OFFSET LOCAL.192 00401206 |. 6A 00 PUSH 0 ; |hModule = NULL 00401208 |. FF15 0C404000 CALL DWORD PTR DS:[<&KERNEL32.GetModuleF ; KERNEL32.GetModuleFileNameA Fonksiyon çağırıldıktan hemen sonra bufferın adresi OllyDbg’ın stack veya memory bölümünde incelendiğinde Lab09-02.exe’nin tam yolu görülebilir. Bir call’da yine aynı değeri paremetre olarak alan bir fonkisyon çağırılmaktadır. Fonksiyon incelendiğinde dizin yolundan geriye sadece dosya adını bırakıp geri döndürdüğü görülür. Devamında çağırılan 0x004014C0 adresindeki fonksiyon iseçalışandosyanın adının "ocl.exe” ilekarşılaştırıp eğer öyleyse 0 yoksa farklı bir değer döndüren, büyük ihtimalle strcmp veya türevi bir fonksiyondur. CPU Disasm Address Hex dump Command Comments 0040122B |. 8B45 FC MOV EAX,DWORD PTR SS:[LOCAL.1] ; ASCII "Lab09- 02.exe" 0040122E |. 50 PUSH EAX ; /Arg2 => [LOCAL.1] 0040122F |. 8D8D 60FEFFFF LEA ECX,[LOCAL.104] ; | 00401235 |. 51 PUSH ECX ; |Arg1 => OFFSET LOCAL.104 00401236 |. E8 85020000 CALL 004014C0 ; Lab09-02.004014C0 0040123B |. 83C4 08 ADD ESP,8 Bu fonksiyonun hemen devamında dönen değer 0 mi (yani dosya adı ocl.exe mi) diye kontrol edilip süreç sonlanıyor veya ağ aktiviteleri olan (WS2_ fonksiyonları) kod bloğundan devam ediyor. CPU Disasm Address Hex dump Command Comments 0040123B |. 83C4 08 ADD ESP,8 0040123E |. 85C0 TEST EAX,EAX Dönen değer 0 mı? 00401240 |. 74 0A JZ SHORT 0040124C 0 ise dallanma yap 00401242 |. B8 01000000 MOV EAX,1 00401247 |. E9 8A010000 JMP 004013D6 main’in sonuna dallan 0040124C |> BA 01000000 /MOV EDX,1 4. Adım: Bu aşamada dosya adını ocl.exe olarak değiştirmek gibi bir seçenek olsa da debugger kullanmanın avantajlarından yararlanıp 0x00401240 adresindeki JZ dallanma komutunu çalıştırmadan OllyDbg’ın sağ üst taraftaki Registers bölümünden Zero flag’ına çift tıklayarak değeri 1 yapılır. Bubir önceki işlemin(test eax,eax)sonucunun 0 olduğu anlamına gelir,böylece JZ (jump if zero) dallanmayı seçecektir.
  24. 24. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Bağlantı için soket oluşturma gibi hazırlık işlemlerinin ardından analizin başında karşılaşılan “1qaz2wsx3edc” değerini parametre olarak alan bir fonksiyon çağırılmaktadır. CPU Disasm Address Hex dump Command Comments 004012B5 |. 51 |PUSH ECX ; /Arg2 = 20 004012B6 |. 8D95 50FEFFFF |LEA EDX,[LOCAL.108] ; | 004012BC |. 52 |PUSH EDX ; |Arg1 => OFFSET LOCAL.108 004012BD |. E8 C7FDFFFF |CALL 00401089 ; Lab09-02.00401089 004012C2 |. 83C4 08 |ADD ESP,8 004012C5 |. 8945 F8 |MOV DWORD PTR SS:[LOCAL.2],EAX 004012C8 |. 8B45 F8 |MOV EAX,DWORD PTR SS:[LOCAL.2] 004012CB |. 50 |PUSH EAX ; /Arg1 => [LOCAL.2] 004012CC |. FF15 A4404000 |CALL DWORD PTR DS:[<&WS2_32.#52>] ; WS2_32.gethostbyname 004012D2 |. 8985 44FEFFFF |MOV DWORD PTR SS:[LOCAL.111],EAX 004012D8 |. 83BD 44FEFFFF |CMP DWORD PTR SS:[LOCAL.111],0 Fonksiyon detaylı incelenmeden çalıştırıldığında EAX ile dönen adresteki değere bakıldığında bağlantı kuracağı adresi(www.practicalmalwareanalysis.com) dinamik olarak oluşturduğu görülür. Hemen sonra bu değeri gethostbyname winapi fonksiyonunda kullanarak IP çözümlemesi yaptığıanaşılmaktadır. Amaç host ve network tabanlı imzaları çıkarmak iseanaliz bu noktada kesilebilir ya da analize devam edilip zararlının ağ aktiviteleri detaylıca incelenebilir.
  25. 25. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Malware Keşfinde Microsoft Sysinternals Araçları Uygulama No: BGA-MA-? Uygulama Adı: Process Explorer Kullanımı Amaç: Process Explorer aracını kullanarak sistemde çalışan süreçler hakkında bilgi toplamak. Lab senaryosu: Sistemde çalışan şüpheli bir süreç hakkında yüklediği dll dosyalar, kullandığı handlelar, içerdiği stringler, cpu kullanımı, network aktivitesi, onu başlatan ve kendi başlattığı süreçler gibi bilgileri toplamak. Kullanılan Araçlar: ● Sysinternals Process Explorer v15 ● Lab03-01.exe Adımlar: 1. Adım: Process explorer yönetici haklarıyla çalıştırılır. Sistemde o an çalışan süreçler, birbirleriyle ilişkilerini(parent-child) gösteren bir ağaç yapısında listelenir. Orta bölümde CPU, PID vb bilgilerin bulunduğu tabloda sütün isimlerinden herhangi birinin üstüne sağ tıklayıp “select columns” diyerek yeni bilgiler eklenebilir. Genelde “user name” sütununu eklemek beklenmeyen kullanıcı haklarıyla çalışan süreçleri tespit etmek açısından faydalı olacaktır. 2. Adım: Analiz edilecek sürecin üzerine tıklanır ve Ctrl+D kısayolu ile sürecin belleğe yüklediği dlllerin listesi görülür. Buna göre yaptığı aktiviteler hakkında gelen fikir edinilebilir. Örneğin ws2_32.dll network aktivitesini işaret eder(tabi doğrulanması gerekir). Ctrl+H kısayolu ile sürecin sahip olduğu handller listelenebilir ve Ctrl+L ile eski görünüme dönülür.
  26. 26. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 3. Adım: Sürece “sağ tık -> Properties” seçeneğinden süreçler ilgili detaylar elde edilebilir. TCP/IP sekmesinden bağlantı varsa kurduğu adresler görülebilir. Strings sekmesinden içerdiği(statik olarak) stringler listelenir. Örnek dosyasının içerdiği dikkate değer stringler şu şekildedir. …... !This program cannot be run in DOS mode. …. CONNECT %s:%i HTTP/1.0 HTTP başlığı …... StubPath SOFTWAREClasseshttpshellopencommandV ! SoftwareMicrosoftActive SetupInstalled Components test www.practicalmalwareanalysis.com URL admin ! VideoDriver ! WinVMX32- ! vmx32to64.exe !
  27. 27. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity SOFTWAREMicrosoftWindowsCurrentVersionRun Başlangıçta Çalıştır SOFTWAREMicrosoftWindowsCurrentVersionExplorerShell Folders .. Stringler okunabildiklerinde zararlının aktiviteleri hakkında oldukça fazla fikir verebilir. 4. Adım: Process Explorer’ın çok kullanışlı bir başka özelliği de “Verify” özelliğidir. Properties penceresindeki Image sekmesinden verify butonuna basılarak bir Windows sürecinin (sisteme ait) orijinalliği doğrulanabilir. Bu sayede windows süreçlri modifikasyon ihtimaline karşı kontrol edilebilir. Uygulama No: BGA-MA-? Uygulama Adı: Process Monitor Kullanımı Amaç: Process Monitor aracını kullanarak belli eylemleri gerçekleştiren süreçleri veya belli bir sürecin eylemlerini tespit etmek. Lab senaryosu: Örnek zararlı yazılımın kayıt defteri ve dosya işlemleri Process Monitor gözlenerek sistemde kalıcılığını nasıl sağladığıtespit edilir.
  28. 28. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Kullanılan Araçlar: ● Sysinternals Process Monitor v2.94 ● Lab03-01.exe Adımlar: 1. Adım: Process monitor yönetici haklarıyla çalıştırlır. Çalışır çalışmaz sistemdeki neredeyse tüm olayları loglamaya başlar. Bu loglar daha sonra filitreleme yöntemiyle analiz edilebilir. Belli bir dosyanın eylemlerini incelemek için Ctrl+X kısayoluyla daha önceki loglar silinir. Analiz edilecek zararlı çalıştırılır ve kısa bir süre sonra Ctrl+E kısayoluyla loglama işlemi durdurulur. Bu süre içinde sistemde gerçekleşen eylemler liste halinde görülebilir ancak yine de tek tek incelemek için çok fazla kayıt olacaktır. 2. Adım: Ctrl+L tuş kombinasyonu ile Filtering penceresi açılır. Bu menüden çok çeşitli filtreler oluşturmak mümkündür. Başlangıç olarak belli bir sürecin eylemlerini listelemek için “Process Name is Lab03-01.exe” diye bir filtre oluşturulur. Apply butonu ile loglara bu filtre uygulanarak sadece Lab03-01.exe sürecinin eylemleri görüntülenir. Burada birçok dosya ve kayıt defteri işlemi görülmektedir. Zamandan kazanmak için hedefi daha da daraltıp “Operation is RegSetValue” ve “Operation is CreateFile” olarak özellikle iki winAPI fonksiyonunun kullanımını gösterecek filtreler eklenir.
  29. 29. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 3. Adım: Filtreleme sonucunda kalan olaylardan zararlının sistemde oluşturduğu dosyalar ve kayıt defterine eklediği kayıtlar görüntülenebilir. Örneğin zararlının kendisini önce “C:WINDOWSsystem32vmx32to64.exe” dizinine kopyaladığı daha sonra da sistem başlangıcında çalıştırılması için kayıt defterinde autorun dizinlerinden biri olan “HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun” dizininin altına “VideoDriver” adlı bir anahtar ekleyip değer olarak da “C:WINDOWSsystem32vmx32to64.exe” atadığı görülür.
  30. 30. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Malware Yayılma Mekanizmaları Dosya Paylaşım Yoluyla Malware Yayılması Zararlı yazılımların yayılma yöntemlerinden en temeli muhtemelen zararlı uygulamanın veya yükleyicisinin doğrudan kurban tarafından indirilip çalıştırıldığı yöntemdir. Bu yöntemde saldırgan, kurbanı çeşitli sosyal mühendislik yöntemleriyle bir mail ekini veya bir linkteki dosyayı indirmeye ikna eder. Crack, keygen gibi warez dosya paylaşımları üzerinden yayılan zararlıları yine bu kategoride değerlendirmek mümkündür. Örneğin DarkBot zararlısı ele geçirilmiş skype hesaplarından arkadaş listesine “hehe :) yeni profil resmin bu mu? <link>” gibi bir mesaj gönderip kurbanı linke tıklayıp, zip dosyasını indirip, içindekini çalıştıracak kadar meraklandırıyor. Tarayıcı ve Tarayıcı Eklentilerindeki Zafiyetler Yoluyla Malware Yayılması Web tarayıcıları ve Flash Player, PDF Reader, Quicktime gibi daha birçok yaygın kullanımı olan tarayıcı eklentilerinde çok sayıda hedef sistemde komut çalıştırmaya yarayan zafiyetler bulunmuştur, ve bulunmaya devam etmektedir. Bu zafiyetler kurbanın zararlı sayfaya bağlanması dışında başka bir etkileşim gerektirmeden bilgisayarına zararlının bulaşmasına sebep olabilir. Hatta bir çok farklı tarayıcı tabanlı zafiyetlerin istismar kodlarını barındıran “Exploit Kit(istismar kiti) adı verilen paketler de mevcuttur. Bu istismar kitleri saldırganların kendilerine ait Porno ve benzeri içerikli web sitelerinde olabileceği gibi ele geçirilen yasal sitelere de entegre edilip kurbanlara güvenilir bir kanaldan zararlı yazılım bulaştırılabilir. Network Servisleri ve Autorun Zafiyetleri Yoluyla Malware Yayılması Zararlı yazılımlar yeni makineleri ele geçirmek için network servislerindeki zafiyetleri veya USB Autorun gibi yöntemleri kullanabilirler. Örneğin zararlının bir dosya paylaşım programında bulunan uzaktan komut çalıştırma zafiyetini istismar ederek belli IP aralıklarını tarayıp bu uygulamanın kullanıldığı makinelere bulaşması oldukça muhtemel bir senaryodur. Yine USB bellekler aracılığıyla yayılan zararlı yazılımların da sayısı bir hayli fazladır. Online Malware Analiz Siteleri ve Temel Çalışma Yöntemleri Analiz edilecek zararlı hakkında hızlı bir genel bilgi edinmek için online sanbox hizmetleri kullanışlı olabilir. Sandboxlar ile genel olarak zararlı hakkında şu bilgiler edinilebilir. ● Kurmaya çalıştığı ağ bağlantıları ● Eriştiği dosya ve dizinler ● Eriştiği windows kayıt defteri girdileri ● Kullandığı handlelar ● Kullandığı sistemfonksiyonları ● Hafıza alanına yüklediği dll dosyaları
  31. 31. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Malware analiz amaçlı sandbox uygulamalarının genel yapısının sanal bir network ile birbirine bağlı host ve analiz makinelerinde oluştuğu söylenebilir. Host genel olarak bir analizi başlatmak, trafiği kaydetmek ve rapor oluşturmaktan sorumludur. Analiz makineleri ise zararlının üzerinde çalışacağı uygun ortamdır. Zararlı analiz makinesinde gerçekten çalıştırılarak aktiviteleri, bellek ve dosya sistemindeki etkileri gibi detaylar raporlanmak üzere hosta gönderilir. Bir host üzerinde birden fazla analiz makinesi çalışabilir. Virustotal gibi bir çok antivirüs firmasının servislerini kullanarak imza tabanlı tarama yapan servisler de bilindik zararlıları tanımlamakta kullanılabilir. http://anubis.iseclab.org adresindeki Anubis sandbox kullanılarak 8mb’ın altındaki dosyalar analiz edilebilir. Anubis’e alternatif olarak yerelde bir sandbox kurmak gerekirse açık kaynak bir yazılım olan Cuckoo sandbox kullanılabilir. Ayrıca Cuckoo https://malwr.com/ adresinden online olarak kullanılabilir. Uygulama No: BGA-MA-? Uygulama Adı: Virustotal Kullanımı Amaç: Virutotal online hizmetini kullanarak zararlı yazılım hakkında hızlıca bilgi toplamak. Lab senaryosu: Nugache zararlısı (sha256: 54791f6e4277a231d50eecdf5bfea263131e60b2b9e17b6cf7aa2a2f66478cc1) Virustotal’e yüklenerek hakkındaki özet bilgiler incelenir. Kullanılan Araçlar: ● https://www.virustotal.com Adımlar: 1. Adım: Virustotal anasayfasındaki “Dosyayı Seç” butonu kullanılarak zararlı dosya sisteme yüklenir. Eğer aynı dosya (aynı hash değerine sahip) daha önceden analiz edildiyse sistemtarafından eski analize mi bakılacağı yoksa tekrar analiz mi edileceği sorulur. Duruma göre uygun seçim yapıldıktan sonra “Analizler, Dosya Detayı, Ek Bilgi, Yorumlar, Oylar, Davranışsal Bilgiler” sekmelerini içeren bir sayfa ile karşılaşılır. Analizler tabında yaklaşık 50 adet farklı antivirüs kullanılarak yapılan taramanın sonuçları listelenir.
  32. 32. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Antivirus Sonuç Güncelle AVG IRC/BackDoor.Nugache.A 20140124 Ad-Aware MemScan:Win32.Worm.Nugache.N 20140124 Agnitum I-Worm.Nugache.A!Pac 20140124 AhnLab-V3 Worm/Win32.IRCBot 20140124 AntiVir TR/Crypt.XPACK.Gen 20140124 Avast Win32:Nugache [Wrm] 20140124 Baidu-International Worm.Win32.Nugache.ABKz 20140124 BitDefender MemScan:Win32.Worm.Nugache.N 20140124 ... 2. Adım: Dosya detayı sekmesinde zararlının dosya yapısıyla ilgili detaylar bulunabilir. Örnekte zararlının PE formatından ● Derlenme zamanı: 2006-03-23 20:07:28 ● Hedef mimari: Intel 386 or later processors and compatible processors ● PE Sectionları ve detayları: .text, .rdata, .data ● Kullanıma hazırladığı sistemfonksiyonları: VirtualProtect, LoadLibraryA, GetProcAddress gibi temel bilgiler elde edilmiştir. Ayrıca zararlı dosya üzerinde Exif aracılı çalıştırılarak elde edilen metadata bilgileri de gösterilmektedir. 3. Adım: Davranışsal bilgiler sekmesi zararlının sandboxta çalıştırıldığında gösterdiği davranışları raporlayan bölümdür. Eğer zararlının anti-sandbox özelliği yoksa veya başarılı olamamışsa bu bölüm zararlı hakkında önemli bilgiler sağlayabilir. Genel olarak Virustotal’in kullandığı veya diğer online servislerin kullandığı sandboxlardan şu bilgiler elde edilebilir. ● Açtığı dosyalar, pipelar vb. ● Okuduğu dosyalar ● Kopyaladığı dosyalar ● Eklenen, değiştirilen, silinen kayıtdefteri anahtarları ● Oluşturulan veya açılan süreçler, mutexler ● Çalışma anında yüklediği dll dosyaları ● Yaptığı DNS sorguları ● Bağlandığı IP adresleri 4. Adım:
  33. 33. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Yorumlar ve ek bilgi sekmelerinde diğer Virustotal kullanıcılarının zararlı hakkında paylaşmış olabileceği bilgilere ve zararlının nasıl etiketlendiğine (ftp, irc, zbot) bakılarak yararlı bilgiler edinilebilir. McRat Analizi Amaç: Olası bir zararlı analiz sürecinde statik ve dinamik analiz yöntemlerinin nasıl kullanılabileceğini göstermek. Senaryo: McRat zararlı yazılımını disassembler ve debugger kullanarak analiz edip, sisteme nasıl yerleştiğini, hangi değişiklikleri yaptığını, hangi anti-debugging tekniklerini kullandığını analiz etmek. Kullanılan Araçlar: ● PEID v0.95 ● IDA 6.1 ● OllyDbg v2.01 (v1.1 veya Immunity Debugger da kullanılabilir.) ● Strings v2.52 (SysInternals) ● Analiz edilen örneğin md5 özeti: 4d519bf53a8217adc4c15d15f0815993 1. Adım Örnek zararlıyı test için hazırlanmış bir windows platforma aktardıktan sonra(winxp sp3 x86 kullanılmıştır) ilk olarak PEID ile zararlının bir sıkıştırma veya paketleme işlemine tabi tutulup tutulmadığı kontrol edilir. PEID zararlının yazıldığı dil ve hatta kullandığı derleyici hakkında tahminde bulunuyor. Herhangi bir packer, protecter yazılımı kullanılmış olsaydı PEID, imzasını tanırsa packerın adını yoksa “unknown” gibi bir uyarı çıkarıyor olurdu. Alternatif olarak RGB Packer Detector aracı da aynı amaçla kullanılabilir. Edinilen bilgiler ışığında herhangi bir unpacking işlemine gerek kalmadan(şimdilik) zararlının statik analizine başlanabilir. SysInternals’ın Strings aracı kullanılarak zararlının okunabilir
  34. 34. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity durumdaki stringleri listelenir. Komut satırından “strings mcrat.exe | more” komutu ile işlem gerçekleştirilebilir. Listelenen stringler zararlı hakkında oldukça fazla fikir verebileceği gibi yanıltıcı da olabilir bu yüzden doğrulanması gerekir. Göze çarpan bazı ilginç stringler şöyledir. ServiceDll SYSTEMCurrentControlSetServices%sParameters svchost.exe -k netsvcs Brower MyStubPath Parameters SYSTEMCurrentControlSetServices%s SOFTWAREMicrosoftWindows NTCurrentVersionSvchost %%SystemRoot%%System32svchost.exe -k "%s" ….. RTHDVCPL RTHDVCPL.DLL %USERPROFILE% SOFTWAREMicrosoftWindowsCurrentVersionRun rundll32.exe "%s", Launch Sadece stringlere bakılarak zararlının kendisini sistemde kalıcı kılmak için “SOFTWAREMicrosoftWindowsCurrentVersionRun” kayıt defteri anahtarını kullandığı veya kendisini servis olarak eklediği tahminleri yapılabilir. Ayrıca “!This program cannot be run in DOS mode.” stringinin iki kere geçmesi zararlının içinde başka bir çalıştırılabilir dosya barındırıyor olması ihtimalini de akıllara getirir. 2. Adım Zararlı IDA ile açılır. İlk olarak Imports sekmesine göz atılması zararlının kullanmış olabileceği fonkisyonlar hakkında fikir verebilir. Alternatif olarak Dependency Walker uygulaması da bu amaçla kullanılabilir. Imports sekmesine bakıldığında dosya işlemleri, kayıt defteri işlemleri, servis işlemleri, süreç işlemleri ve hatta sistemde komut çalıştırmayı sağlayacak birçok fonksiyonun içe aktarıldığı görülmektedir. İlginç olan nokta fonksiyonlar arasında ağ aktivitesi sağlayacak bir fonksiyon bulunmamasıdır. WinAPI fonksiyonlarının işlevleri ve detayları msdn.microsoft.com adresinden öğrenilebilir. Functions penceresinden start(main) fonksiyonu seçilerek analize başlanır. IDA graph görünümüne bakıldığında beklenmeyen bir şekilde main fonksiyonunun kayda değer hiçbir şey yapmadan koşulsuz bir dallanmayla programın çalışmasını sonlandırdığı görülmektedir. Assembly kodlarına bakıldığında dallanmadan hemen önce “int3” komutuyla bir istisna(exception) fırlatıldığı görülür. .text:00401DB6 mov [ebp+var_4], 0 .text:00401DBD int 3 ; Trap to Debugger .text:00401DBE jmp short loc_401DCE Bu istisna zararlı tarafından 0x00401DC6 adresindeki handler tarafından yakalanır. Handlerın
  35. 35. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity tek işlevi de zararlının esas main fonksiyonu denilebilecek sub_4018F0(IDA’nın 0x4018F0 adresindeki fonksiyona verdiği isim) fonksiyonunu çağırmak olduğu görülür. Zararlının buradaki esas amacı muhtemelen debuggerları şaşırtmaktır. sub_4018F0 incelendiğinde ilk olarak IsUserAdmin winapi fonksiyonunu çağırıp zararlıyı çalıştıran kullanıcının yönetici yetkilerine sahip olup olmadığını kontrol ettiği görülür. İlgili kod incelendiğinde .text:00401905 push edi .text:00401906 call esi ; IsUserAnAdmin fonksiyonu çağır .text:00401908 test eax, eax sonuç 0 ise zero flagı set edilir .text:0040190A jz loc_401C39 zero flagı 1’se dallan .text:00401910 call sub_4018A0 .text:00401915 test eax, eax .text:00401917 jnz loc_401C39 yönetici grubundan bir kullanıcıysa sub_4018A0 fonksiyonundan çalışmaya devam edeceği görülür. Bu fonksiyon analiz edildiğinde işlevinin IsWow64Process winapi fonksiyonunu kullanarak sürecin WOW64 altında çalıştığını sorguladığı görülür. WOW64 32 bit windows uygulamalarının 64 bit sistemlerde sorunsuz çalışmasını sağlayan bir çeşit emulatördür denebilir. (http://msdn.microsoft.com/en- us/library/windows/desktop/aa384249%28v=vs.85%29.aspx) Dolayısıyla zararlı çalıştığı sistemin mimarisini(32 bit mi 64 bit mi) öğrenmiş olur. sub_4018A0 fonksiyonun C++ koduna http://msdn.microsoft.com/en-us/library/windows/desktop/ms684139%28v=vs.85%29.aspx adresinden ulaşılabilir, dolayısıyla detaylı assembly analizi eklenmemiştir. (Zararlı yazılımlarda msdn gibi kaynaklardaki kodların neredeyse birebir kullanıldığını görmek doğaldır.) Zararlının 32bit sistemde çalıştığını varsayarak analize devam edildiğinde tekrar kullanıcının yönetici olup olmadığını kontrol edip(ilginç) eğer yönetici ise şu kod bloğundan çalışmaya devam ediyor. .text:00401927 xor esi, esi .text:00401929 mov ecx, 7Fh .text:0040192E xor eax, eax .text:00401930 lea edi, [ebp+var_25A] .text:00401936 mov [ebp+ValueName], si .text:0040193D mov [ebp+Data], si .text:00401944 rep stosd .text:00401946 stosw Buraya kadar olan satırlar ebp + 25A dan itibaren 128 byte sıfırlar. .text:00401948 mov ecx, 1FFh .text:0040194D xor eax, eax .text:0040194F lea edi, [ebp+var_107A] .text:00401955 rep stosd .text:00401957 stosw Buraya kadar olan satırlar ebp + 107A dan itibaren 512 byte sıfırlar.
  36. 36. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity .text:00401959 lea eax, [ebp+ValueName] .text:0040195F push eax ; lpString1 .text:00401960 call sub_401160 Üstteki 3 satır ise 128’lik bufferı parametre olarak vererek 0x401160 daki fonksiyonu çağırır. .text:00401965 add esp, 4 .text:00401968 test eax, eax .text:0040196A jz loc_401ACE sub_401160 fonksiyonu OpenSCManager ve EnumServicesStatus winapi fonksiyonlarını kullanarak sistemdeki servislerin listesini alıyor. Daha sonra bu listede “Brower” isimli servisi arıyor. .text:00401210 mov edx, [esi] .text:00401212 push offset String2 ; "Brower" .text:00401217 push edx ; lpString1 .text:00401218 call ds:lstrcmpiW .text:0040121E test eax, eax Bu servisin bulamadığı durumda zararlı, QueryServiceConfig winapi fonksiyonunu kullanarak servis ayarlarında “svchost.exe -k netsvcs” geçen bir servis arıyor. .text:004012B6 call edi ; QueryServiceConfigW .text:004012B8 mov edx, [ebx+0Ch] .text:004012BB push offset aSvchost_exeKNe ; "svchost.exe -k netsvcs" .text:004012C0 push edx .text:004012C1 call ds:StrStrW Böyle bir servis bulduğunda ise “HKLMSYSTEMCurrentControlSetServices%sParameters” kayıt defteri anahtarını açıp( %s yerine servis adını gelecek şekilde) ServiceDLL değerini sorguluyor. .text:00401363 push edx ; lpData .text:00401364 push edi ; lpType .text:00401365 push edi ; lpReserved .text:00401366 push offset ValueName ; "ServiceDll" .text:0040136B push eax ; hKey .text:0040136C call ds:RegQueryValueExW .text:00401372 test eax, eax Zararlının amacının kendisini yetkili bir başka servisin altına gizlemek veya yerine geçmek olduğu tahmininde bulunabilir. (svchost.exe -k netsvc nin anlamı için http://www.softwaretipsandtricks.com/necessary_files/105-SVCHOSTEXE%20- K%20NETSVCS.html) Devamında ise bu ServiceDLL değerini değiştirdiği, service konfigürasyonunu değiştirdiği ve
  37. 37. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity hatta yeni konfigürasyonda servise SeTcbPrivilege yetkisi verdiği görülüyor. Bu servisin işletim sisteminin bir parçası olarak görüleceği anlamına gelir. Bir başka değişle bir windows sistemdeki en üst yetki olarak da tanımlanabilir. (http://technet.microsoft.com/en- us/library/bb457125.aspx) Bu aşamadan sonra zarlının hangi servisi seçtiği, ne gibi değişiklikler yaptığı ve devamında nasıl bir yol izlediğini dinamik yöntemlerle analiz etmek daha verimli olacaktır. 3. Adım McRat Ollydbg ile açılır. Statik analizde görülen anti-debugging hilesini atlatmak için int3 kesmesini çalıştırmadan 0x00401DC6 adresindeki exception handlerın ilk satırına sağ tık -> new origin here denilerek EIP’in değeri değiştirilir. CPU Disasm Address Hex dump Command Comments 00401DBD |. CC INT3 00401DBE . EB 0E JMP SHORT 00401DCE 00401DC0 /. B8 01000000 MOV EAX,1 00401DC5 . C3 RETN 00401DC6 /. 8B65 E8 MOV ESP,DWORD PTR SS:[EBP-18] 00401DC9 |. E8 22FBFFFF CALL 004018F0 Diğer bir seçenek de OllyDbg’ın “options” menüsünden “debugging->exceptions” bölümünden “INT3 breaks” kutusunu işaretlemektir. Bu sayede ollydbg int3 ile fırlatılan istisnayı görmezden gelip programın handle etmesini sağlayacaktır. İkinci seçenek programın defalarca çalıştırılması gerektiği durumlarda daha verimli olabilir. Ardından CTRL+G kısa yoluyla açılan ekrana analiz edilmek istenen fonksiyonun başlangıcı olan 0x401160 adresi yazılıp bu adrese ulaşılır ve F2 ile bir duraknoktası konulur. Program F9 ile çalıştırıldığında bu adreste duracaktır. Test ortamında bu fonksiyon adım adım çalıştırılıp analiz edildiğinde ikinci adımda konuşulan Brower servisi bulunamıyor. Aradığı “svchost.exe - k netsvcs” çalıştırılan servislerden de ilk eşleşen “AppMgmt” servisini seçiyor. AppMgmt için kayıt defterinden ServiceDll değerini sorguladığında "%SystemRoot%System32appmgmts.dll" yolunu buluyor. Bu yolu “HKLMSYSTEMCurrentControlSet001ServicesAppMgmtParameters” anahtarı altındaki ServiceDll değerine yazıyor ve servise statik analizde bahsedilen “System” yetkisini veriyor. Adım adım analize devam ederken 0X40145F adresindeki call çalıştırıldığında tekrar bir istisna fırlatıldığı görülür. İstisnanın kodu da ekranın sol altından görülebilir. Call incelendiğinde yine bir anti-debugging tekniği olduğu görülecektir. Detaylara girmeden bu istisnayı da görmezden gelmek için “options” penceresinden “debugging->exceptions” bölümünden Add Current butonu ile o anki istisna görmezden gelinecekler listesine eklenir. 0X40145F adresine duraknoktası konulup Ctrl+F2 ile zararlı Ollydbg’a tekrar yüklenir ve F9 ile duraknoktasına kadar gelinir. Analize devam edip bu fonksiyondan çıkıldıktan hemen sonra “%%USERPROFILE%%AppMgmt.dll” stringi oluşturuluyor. CPU Disasm
  38. 38. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Address Hex dump Command Comments 0040198C |. 8D95 84F7FFFF LEA EDX,[LOCAL.543] 00401992 |. 51 PUSH ECX ; /<%s> => OFFSET LOCAL.151 00401993 |. 68 28344000 PUSH OFFSET 00403428 ; |Format = "%%USERPROFILE%%%s.dll" 00401998 |. 52 PUSH EDX ; |Buf => OFFSET LOCAL.543 00401999 |. 66:AB STOS WORD PTR ES:[EDI] ; | 0040199B |. FF15 DC204000 CALL DWORD PTR DS:[<&USER32.wsprintfW>] ; USER32.wsprintfW ExpandEnvironmentStrings winapi fonksiyonu ile userprofile’ın adresi alınıp 0x004010C0 adresindeki fonksiyon aşağıdaki parametrelerle çağırılıyor. CPU Disasm Address Hex dump Command Comments 004019C4 |. 52 PUSH EDX ; |Arg4 = UNICODE "C:Documents and Settingsmw2AppMgmt.dll" 004019C5 |. 68 20344000 PUSH OFFSET 00403420 ; |Arg3 = UNICODE "BIN" 004019CA |. 6A 65 PUSH 65 ; |Arg2 = 65 004019CC |. 56 PUSH ESI ; |Arg1 004019CD |. E8 EEF6FFFF CALL 004010C0 ; 4d519bf53a8217adc4c15d15f081599.004010C0 F7 ile fonksiyonun içine girildiğinde sırasıyla şu işlemleri yaptığı görülmektedir. ● FindResource ve LoadResource fonksiyonları ile zararlının resource olarak taşıdığı BIN tipinde bir veriye erişiliyor. ● CreateFile ile "C:Documents and Settingsmw2AppMgmt.dll" dosyası oluşturuluyor. (bilgisayar adı farklılık gösterecektir.) ● Elde edilen veri AppMgmt.dll dosyasına yazılıyor. ● “HKLMSYSTEMCurrentControlSet001ServicesAppMgmtParameters” anahtarı altındaki ServiceDll değerine "C:Documents and Settingsmw2AppMgmt.dll" yolu yazılıyor. ● Aynı şekilde MyStubPath değerine de çalıştırılan mcrat.exe’nin yolu yazılıyor. Bu işlemlerden sonra da program sonlanıyor. Buraya kadar zararlının kendisini nasıl sistem servisi olarak eklediği daha doğrusu başka bir servisin yerine geçtiği detaylıca ele alınmıştır. Analize zararlının servis olarak çalışacak bölümü yani AppMgmt.dll dosyası üzerinden devam
  39. 39. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity ederek zararlının aktiviteleri açığa çıkarılabilir. 4. Adım: Zararlının oluşturduğu AppMgmt.dll dosyası IDA ile açılır. DllEntryPoint (dll dosyaları için main fonksiyonu) fonksiyonundan analize başlamak doğru gözükse de aslında bu dll sisteme bir servis olarak eklendiğinden ilk çalışacak fonksiyonu ServiceMain’dir. IDA’nın Exports sekmesinden veya Functions penceresinden ServiceMain seçilerek analize başlanır. Servis başlangıç işlemlerinden sonra ilk olarak “MyStubPath” stringini parametre alan bir fonksiyon(sub_10001748) çağırmaktadır. .text:10001906 push offset aMystubpath ; "MyStubPath" .text:1000190B push esi ; hKey .text:1000190C call sub_1000174 Fonksiyon incelendiğinde stub tarafından kayıt defterinde “HKLMSYSTEMCurrentControlSet001ServicesAppMgmtParameters” anahtarı altına girilen MyStubPath değerinden stub’ın dosya sisitemindeki yerini buluyor. .text:100017B4 push 3E8h ; dwMilliseconds .text:100017B9 call ds:Sleep .text:100017BF lea eax, [ebp+FileName] .text:100017C5 push eax ; lpFileName .text:100017C6 call ds:DeleteFileW .text:100017CC test eax, eax 1000 ms bekledikten sonra dosyayı(stub’ı) siliyor. Eğer dosya silme işlemi başarılıysa MyStubPath anahtarını da siliyor. text:100017D6 loc_100017D6: ; CODE XREF: sub_10001748+86j .text:100017D6 push [ebp+lpValueName] ; lpValueName .text:100017D9 push [ebp+hKey] ; hKey .text:100017DC call ds:RegDeleteValueW Temizlik işleminden sonra GetVersionEx winapi fonksiyonu ile işletim sistemi versiyonunu alıp versiyon 6’dan büyükse Launch fonksiyonunu çağıran kod bloğuna dallanıyor. .text:10001954 push eax ; lpVersionInformation .text:10001955 call ds:GetVersionExW .text:1000195B cmp [ebp+VersionInformation.dwMajorVersion], 6 .text:10001962 jb loc_10001A8F Versiyon 6 dan büyük olması sistemin en az Windows 7 veya Server 2008 R2 olması anlamına gelir(http://en.wikipedia.org/wiki/Comparison_of_Microsoft_Windows_versions). Daha eski sistemlerde ise “rundll32.exe "%s", Launch”(%s yerine GetModuleFileName ile alınan isim gelecek şekilde) komutu ile zararlı dllin export ettiği Launch fonksiyonunu çalıştıracak string
  40. 40. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity hazırlanıyor. text:100019A7 lea eax, [ebp+FileName] .text:100019AD push eax .text:100019AE lea eax, [ebp+CommandLine] .text:100019B4 push offset aRundll32_exeSL ; "rundll32.exe "%s", Launch" .text:100019B9 push eax ; LPWSTR .text:100019BA call edi ; wsprintfW .text:100019BC add esp, 18h Daha sonra da işlemin tamamlanmasını beklenip sonlanıyor. İki durumda da analiz Launch fonksiyonuna yönleniyor. Launch fonksiyonu incelendiğinde doğrudan sub_100012EB fonksiyonunu çağırdığı görülür. Bu fonksiyonun da ilk iş olarak “McpProXy.exe” string parametresi ile sub_1000120E fonksiyonunu çağırdığı görülmektedir. .text:100012FE push eax ; lpFilename .text:100012FF push offset String2 ; "McpRoXy.exe" .text:10001304 mov [ebp+var_C], esi .text:10001307 mov [ebp+var_4], esi .text:1000130A call sub_1000120E .text:1000130F pop ecx Son çağırılan sub_1000120E fonksiyonu da “SeDebugPrivilege” stringini parametre olarak vererek sub_10001053 fonksiyonunu çağırıyor. .text:10001232 push 1 ; int .text:10001234 push offset Name ; "SeDebugPrivilege" .text:10001239 rep stosd .text:1000123B call sub_10001053 .text:10001240 pop ecx Bu fonksiyon oldukça basit bir yapıya sahip. İncelendiğinde sürece SE_DEBUG_NAME(SeDebugPrivilege) yetkisi verdiği görülür. Bu işlem sürece diğer süreçleri debug etme ve bellek alanlarına müdahale etme hakkı verir. (http://msdn.microsoft.com/en- us/library/windows/desktop/bb530716%28v=vs.85%29.aspx) .text:10001241 pop ecx .text:10001242 push 0 ; th32ProcessID .text:10001244 push 2 ; dwFlags .text:10001246 call CreateToolhelp32Snapshot .text:1000124B cmp eax, 0FFFFFFFFh Hemen ardından CreateToolhelp32Snapshot fonksiyonunun dwFlags parametresine 2(TH32CS_SNAPPROCESS) değeri verilerek çağırılıyor. Yani sistemde çalışan tüm süreçlerin listesi alınıyor. Daha sonra Process32First ve Process32Next winapi fonksiyonları kullanılarak süreç listesinde gezinip ismi daha önce bu fonksiyona parametre olarak geçirilen “McpRoXy.exe” olan süreç aranıyor.
  41. 41. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity .text:10001257 lea ecx, [ebp+pe] .text:1000125D push esi .text:1000125E push ecx ; lppe .text:1000125F push eax ; hSnapshot .text:10001260 call Process32FirstW .text:10001265 mov edi, ds:CloseHandle .text:1000126B test eax, eax .text:1000126D jz short loc_100012DF .text:1000126F push [ebp+lpString2] ; lpString2 .text:10001272 mov esi, ds:lstrcmpiW .text:10001278 lea eax, [ebp+pe.szExeFile] .text:1000127E push eax ; lpString1 .text:1000127F .text:1000127F loc_1000127F: ; CODE XREF: sub_1000120E+94j .text:1000127F call esi ; lstrcmpiW .text:10001281 test eax, eax .text:10001283 jz short loc_100012A4 .text:10001285 lea eax, [ebp+pe] .text:1000128B push eax ; lppe .text:1000128C push [ebp+hObject] ; hSnapshot .text:1000128F call Process32NextW .text:10001294 test eax, eax .text:10001296 jz short loc_100012DF .text:10001298 push [ebp+lpString2] .text:1000129B lea eax, [ebp+pe.szExeFile] .text:100012A1 push eax .text:100012A2 jmp short loc_1000127F Eğer bu süreç bulunup OpenProcess ile bu sürece bir handle elde edilebilirse IDA’nın ebp+var_4 olarak tanımladığı 4. local değişken anlamındaki değeri 1 olarak atıyor. .text:100012D5 mov [ebp+var_4], 1 Fonksiyon sonlanırken de geriye bu değişkenin değerini döndürüyor. Kısacası sub_1000120E fonksiyonu, ismi parametre olarak geçirilen sürecin sistemde çalışıp çalışmadığını kontrol ediyor. Burada bu bir cümle yerine detaylı anlatılışının sebebi, birçok zararlı tarafından kullanılan benzer kodların assembly seviyesinde nasıl okunup yorumlanabileceğini göstermektir. Alt fonksiyonlar ve genel yapı hakkında bilgi sahibi olduktan zararlının çalışma anında nasıl bir yol izlediği analiz edilerek daha çok bilgi toplanabilir. 5. Adım AppMgmt.dll OllyDbg ile açılır. Alt+F6 kısayolu ile “Call Dll Export” penceresi açılıp Export bölümünden Launch(4. adımdaki bilgilere dayanarak) fonksiyonu seçilir. “Follow in CPU” butonu ile Launch fonksiyonunun başlangıcına gidildikten sonra “sağ tuş-> new origin here” ile EIP fonksiyonun başına set edilip debug işlemine başlanabilir.
  42. 42. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity CPU Disasm Address Hex dump Command Comments 1000161D /$ 51 PUSH ECX 1000161E |. 8D4424 00 LEA EAX,[LOCAL.0] 10001622 |. 50 PUSH EAX ; /Arg1 => OFFSET LOCAL.0 10001623 |. E8 C3FCFFFF CALL 100012EB ; AppMgmt.100012EB 10001628 |. 85C0 TEST EAX,EAX 0x100012EB adresindeki ilk çağırılan fonksiyon analiz edildiğinde 4. adımda incelenen McpRoXy.exe sürecini arayan fonksiyon’un 0 döndürdüğü, yani sistemde bu sürecin bulunmadığı görülür, bu yüzden JNZ dallanmaz ve 0x1000142A adresindeki fonksiyon çağırılır. CPU Disasm Address Hex dump Command Comments 1000162A |. 59 POP ECX 1000162B |. 75 05 JNZ SHORT 10001632 1000162D |. E8 F8FDFFFF CALL 1000142A 10001632 |> 68 E8030000 /PUSH 3E8 ; /Time = 1000. ms Bu fonksiyon da ilk iş olarak 0x10003000 adresindeki 30904 bytelık veriyi 0x75 ile xor işleminden geçirip stack’e yazıyor. CPU Disasm Address Hex dump Command Comments 1000143E |. BE B8780000 MOV ESI,78B8 10001443 |> 8A88 00300010 /MOV CL,BYTE PTR DS:[EAX+10003000] 10001449 |. 80F1 75 |XOR CL,75 1000144C |. 888C05 E013FF |MOV BYTE PTR SS:[EAX+EBP+FFFF13E0],CL 10001453 |. 40 |INC EAX 10001454 |. 3BC6 |CMP EAX,ESI 10001456 |.^ 7C EB JL SHORT 10001443 Çalışmaya heap’te 30904 bytelık yer ayırarak devam ediyor ayırdığı bu alana VirtualProtect fonksiyonu ile PAGE_EXECUTE_READ_WRITE yetkisi veriyor. Daha sonra da bu alandaki kodu çalıtırmak için CreateThread winapi fonksiyonunu kullanıyor. CPU Disasm Address Hex dump Command Comments 100014A8 |. 8D45 F8 LEA EAX,[LOCAL.2] 100014AB |. 50 PUSH EAX ; /pThreadId => OFFSET LOCAL.2 100014AC |. 53 PUSH EBX ; |CreationFlags 100014AD |. 53 PUSH EBX ; |Parameter 100014AE |. FF75 FC PUSH DWORD PTR SS:[LOCAL.1] ; |StartAddress => [LOCAL.1] 100014B1 |. 53 PUSH EBX ; |StackSize 100014B2 |. 53 PUSH EBX ; |pSecurity
  43. 43. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 100014B3 |. FF15 68200010 CALL DWORD PTR DS:[<&KERNEL32.CreateThread>] ; KERNEL32.CreateThread CreateThread’e parametre olarak geçirilen başlangıç adresinden analize devam edildiğinde (“new origin here” özelliği veya “on execution” olayına bir donanımsal duraknoktası(hardware bp) koymak bu durumda işe yarayacaktır.) İlk olarak kendi kendini xorla çözen bir kod bloğu görülüyor. Test ortamında yeni threadin adresi 0x00146120 olarak bulunmuştur ama dinamik olarak verildiği için farklılık gösterecektir. CPU Disasm Address Hex dump Command Comments 0014612F 8030 6C XOR BYTE PTR DS:[EAX],6C 00146132 40 INC EAX 00146133 41 INC ECX 00146134 81F9 9C780000 CMP ECX,789C 0014613A ^ 75 F3 JNE SHORT 0014612F Zararlı 30876 byte xorladıktan sonra çalışamaya 0x0014634B adresindeki fonksiyondan devam ediyor. Bu fonksiyon VirtualAlloc winapi fonksiyonun adresini hesaplayıp çağırarak 4096 byte(4KB) yer ayırıyor ve hemen devamındaki fonksiyon da bu alana bir takım kodlar yazıyor. Olayın akışını izlemek için şu yol izlenebilir. VirtualAlloc’u çağıran kod bloğu(EAX ta onun adres olduğu için) CPU Disasm Address Hex dump Command Comments 001463A4 6A 40 PUSH 40 001463A6 68 00100000 PUSH 1000 001463AB FF77 04 PUSH DWORD PTR DS:[EDI+4] 001463AE 6A 00 PUSH 0 001463B0 FFD0 CALL EAX “call eax” çalıştırıldıktan hemen sonra fonksiyon başarıyla çalışmışsa, EAX’ta yeni ayrılan alanın adresini içerecektir. Register bölümünden EAX’ın üzerine “sağ tuş-> follow in dump” ile hafızanın o bölümü dump ekranında görülebilir. CPU Disasm Address Hex dump Command Comments 001463B7 57 PUSH EDI 001463B8 E8 84FDFFFF CALL 00146141 001463BD 58 POP EAX 001463BE FFE0 JMP EAX 0x00146141’daki fonksiyon çağırıldıktan sonra da aynı ekranda boş olan alana kodların
  44. 44. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity yazıldığı ve daha sonra o adrese jmp ile dallanıldığı görülür. Analize buradaki 0x008B0015 (değişkendir) fonksiyonundan devam edildiğinde içinde ws2_32 ve wininet’i de barındıran 9 adet sistemkütüphanesini(dll) yükleyen bir fonksiyonla karşılaşılmıştır. CPU Disasm Address Hex dump Command Comments 009BD003 55 PUSH EBP 009BD004 8BEC MOV EBP,ESP 009BD006 E8 4793FFFF CALL 009B6352 009BD00B 85C0 TEST EAX,EAX 009BD00D 75 05 JNE SHORT 009BD014 Fonksiyonda belirtilen yerlere duraknoktası koyup döngünün her adımında hangi kütüphanenin yüklendiği görülebilir. CPU Disasm Address Hex dump Command Comments 009B6386 /0F83 D8000000 JAE 009B6464 009B638C |837D FC 00 CMP DWORD PTR SS:[EBP-4],0 009B6390 |74 4A JE SHORT 009B63DC 009B6392 |8B4D FC MOV ECX,DWORD PTR SS:[EBP-4] 009B6395 |C1E1 04 SHL ECX,4 009B6398 |8B91 20189B00 MOV EDX,DWORD PTR DS:[ECX+9B1820] Devamında LoadLibrary winapi fonksiyonu ile çalışma anında yüklenen kütüphaneleri kullanarak çalışma zararlı işlevlerini sürdürmektedir. Bu da zararlının işlevlerini gizlemek için kullandığı yöntemlerden birisidir. Zararlı bu aşamadan sonra CreateThread fonksiyonunu kullanarak 4 thread daha oluşturuyor ama bunlardan bazıları aynı fonksiyonu göstermektedir. Zararlının doğrudan hafızaya decode ettiği(xor veya substraction gibi yöntemlerle) kod bloklarının tek tek analizi şu ana kadarki yöntemlerle yapılabileceğinden dolayı bunların detaylı analizine yer verilmemiştir, ipucu olabilecek genel veriler şu şekildedir. Test ortamında adı “C:DOCUME~1mw2LOCALS~1Temp{2D93B73E-36B9-40C4-9FD8- 93C067157A8F}” olan dosyayı okumak için açıyor. (CreateFile fonksiyonunun farklı kullanımları için: http://msdn.microsoft.com/en- us/library/windows/desktop/aa363858%28v=vs.85%29.aspx) Daha sonra ReadFile ile içeriğini okuyup okunan veri 948 byte değilse fonksiyon sonlanıyor. Bu dosyanın içine 110.173.55.187 adresi yazılıyor ve daha sonra bu adresin 80 portuna gönderilen HTTP POST istekleri aracılığıyla iletişimkuruluyor. Bu bölüm CPU Disasm Address Hex dump Command Comments 0014634B 5F POP EDI 0014634C 64:A1 30000000 MOV EAX,DWORD PTR FS:[30] 00146352 8B40 0C MOV EAX,DWORD PTR DS:[EAX+0C]
  45. 45. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 00146355 8B70 1C MOV ESI,DWORD PTR DS:[EAX+1C] 00146358 AD LODS DWORD PTR DS:[ESI] 00146359 8B68 08 MOV EBP,DWORD PTR DS:[EAX+8] ile başlayıp CPU Disasm Address Hex dump Command Comments 001463B4 83C7 08 ADD EDI,8 001463B7 57 PUSH EDI 001463B8 E8 84FDFFFF CALL 00146141 001463BD 58 POP EAX 001463BE FFE0 JMP EAX ile biten 2. decode bölümünde hafızaya yazılıyor. Analize başlamadan önce strings, imports gibi çıktılara bakılarak veya Procmon, Process Explorer gibi araçlarla yapılan iyi tahminler çoğu zaman analiz sırasında doğru yolda ilerlemeyi kolaylaştırır fakat sağlıklı bir analiz sadece tahminlerden ibaret olmamalıdır. Uygulama No: BGA-MA-? Uygulama Adı: Zararlı Tarafından Üretilen Trafiğin Sahte Servislerle Yönetimi Amaç: Lab ortamında analiz edilen zararlı yazılımın çalışması için ihtiyaç duyduğu sahte servisleri sağlayarak zararlıyı bu servislere yönlendirmek, böylece zararlının normalde üreteceği ağ trafiğini üretmesini ve program akışının sadece başarılı bağlantı kurulduğunda erişeceği noktalara erişmesini sağlamak. Lab senaryosu: Aynı sanal ağdaki iki sanal makineden Windows XP olanında uzak FTP sunucusuna bağlantı kurmak isteyen bir zararlı yazılım çalıştırılır. REMnux kurulu olanı ise sahte servis oluşturma ve ağ trafiğini dinleme araçlarını çalıştırmak için kullanılır. Kullanılan Araçlar: ● FTP Kullanan Zararlı Örneği (sha256:d7ac4d6442a3448fb147fd70b5e98f8e244b5e129f8bbd5f085b04cf01158c03 ) ● ApateDNS ● Inetsim, Fakenet ● Wireshark Adımlar: 1. Adım
  46. 46. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Zararlının gerçekte bağlantı kurmaya çalıştığı C&C veya benzer işlem gören uzak sistem yerine sahte servislerin çalıştığı makineye bağlantı kurmasını sağlamak için DNS üzerinden basit birkaç yöntem kullanılabilir. Bunlardan ilki “SistemDizini:WindowsSystem32Driversetchosts” dosyasına zararlının bağlantı kurmak isteği alanadını ve sahte servislerin çalıştığı makinenin IP’sini eşleştiren bir satır eklenebilir (10.10.10.128 ftp.zararli.com). Bunun yerine yapılan bütün DNS sorgularına sahte servislerin çalıştığı makinenin IP addresini içeren bir cevap döndüren ApateDNS aracını kullanmak bazı durumlarda daha pratik olabilir. Bunun için ApateDNS aracı çalıştırılıp “DNS Reply IP” bölümüne yönlendirilmek istenilen sistemin IP adresi girilip “Start Server” tuşuna basılır. Sistemde birden fazla ağ arayüzü varsa “Selected Interface” bölümünden ilgili arayüz seçilmelidir. Başka bir ihtimal de zararlının bir alanadı yerine doğrudan uzak siteme IP adresi ile erişmesidir. DNS sorgularına sahte cevap gönderme yöntemi bu durumda işe yaramayacaktır. Başka bir ihtimal de zararlının bir alanadı yerine doğrudan uzak siteme IP adresi ile erişmesidir. DNS sorgularına sahte cevap gönderme yöntemi bu durumda işe yaramayacaktır. Böyle bir durumda iptables veya başka bir NAT desteği bulunan yazılım aracılığıyla analiz makinesinden (WinXP) giden paketlerin hedef IP adresi veya belli bir IP ‘ye giden paketlerin hedef IP adresi değiştirilerek bağlantı sahte servislerin bulunduğu (REMnux) sisteme yönlendirilebilir. Alternatif olarak zararlının dinamik analizi sırasında hedef adresi hafızada değiştirerek doğrudan istenilen adrese bağlanması da sağlanabilir. 2. Adım Sahte servislerin çalışacağı sistemde(REMnux) konsoldan “inetsim” komutu girilerek servisler başlatılır. Servislerin tam listesi ve dinledikleri portlar bu aşamada konsolda görülebilir. Daha sonra Wireshark root olarak çalıştırılıp “Capture->Interfaces” menüsünden ilgili arayüz(örnekte eth0) seçilerek dinlenmeye başlanır. Alternatif olarak Windows üzerinde çalışan Fakenet aracı kullanılarak, ikinci bir sisteme ihtiyaç kalmadan, servisler analiz makinesinde çalıştırılabilir. 3. Adım Zararlı yazılım çalıştırılıp ApateDNS ekranından yaptığı DNS sorguları izlenir. Örnek zararlının “darlstop123.p.ht” ve “whatismyip.akamai.com” adresleri için DNS istekleri gönderdiği görülüyor.
  47. 47. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 4. Adım Bu aşamada isteğe göre REMnux’e geri dönülerek Wireshark’ın yakalamış olduğu ağ trafiği incelenebilir veya bir debugger aracılığıyla zararlının başarılı bağlantı durumunda gerçekleştirdiği aktiviteler dinamik olarak analiz edilebilir. Örnekteki zararlı için Wireshark ekranına bakıldığında zararlının FTP ve HTTP servislerine bağlanmaya çalıştığı görülmektedir. HTTP üzerinden GET isteği ile anasayfayı almaya çalıştığıgörülmektedir. “whatismyip.akamai.com” adresine bağlanıldığında bunu aslında sistemin internete çıkış IP’sini öğrenmek için yaptığı anlaşılıyor.
  48. 48. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity FTP bağlantısının detaylarını öğrenmek için Wireshark’ta bağlantıya dahil olan paketlerden (satırlardan) herhangi birine sağ tıklayıp “Follow TCP Stream” seçilerek bağlantı boyunca yapılan veri alışverişi toplu halde görülebilir. Örnek bağlantının içeriği şu şekildedir: 220 INetSim FTP Service ready. USER u489099192 331 Please specify the password. PASS 031025 230 Login successful. TYPE I 200 Switching to BINARY mode. PASV 500 Unknown command. TYPE I 200 Switching to BINARY mode. PORT 10,10,10,130,19,137 200 PORT command successful. STOR NO_PWDS_report_06-02-2014_22-23-47-BB9E89D3316C6D89E8BA3AAF96AA0063- IIIA.bin 150 Ok to send data. 226 File receive OK. İçerikten de açıkça görüldüğü üzere zararlı, FTP sunucusuna bağlantı kurarken kullanıcı adı ve şifre olarak “u489099192 | 031025” değerlerini kullanıyor. Daha sonra da bir dosya yüklemeye çalışıyor. Elde edilen bu tarz bilgiler zararlıyı etkisizleştirmek için kullanılabilecek olsa da bu bilgileri kullanmak için bazı yasal süreçlerin işletilmesi gerekebilir. Zararlıyı etkisizleştirmekten kasıt bulaştığı sistemlerden silmek yerine komuta merkezini devre dışı bırakarak bulaştığı sistemlerden bilgi sızdırmasını veya komuta merkezinden kontrol edilmesini engellemektir. Sonuçta elde edilen bilgileri doğrulamak adına FTP sunucusuna bağlantı kurulmuş ama başka bir işlem yapılmamıştır.
  49. 49. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Uygulama No: BGA-MA-? Uygulama Adı: Snort Kullanarak Zararlı Yazılım Tespiti Amaç: Zararlı yazılımın ağ trafiğinin tanınmasını sağlayacak kendine has özelliklerini tespit edip bu özellikleri yakalayacak Snort kuralları yazmak. Lab senaryosu: HTTP ve SMTP trafiği oluşturan bir çeşit Zeus türevi bir sanal makineye bulaştırılıp bu makinenin internete çıktığı ağ arayüzü Wireshark ve Snort ile dinlenir. Elde edilen ağ verisine göre Snort kuralları yazılarak zararlı tespit edilmeye çalışılır. Kullanılan Araçlar: ● Zeus türevi (sha256:689ef03339c961f6c63b77f902de1bb022f83c2c89a1f63999edf720cfa2081b) ● Snort ● Snorby ● Wireshark Adımlar: 1. Adım Örnekte kullanılan lab yapısı şu şekildedir. Windows XP internete NAT ile çıkacak şekilde ayarlanmış tek ağ arayüzü bulunan bir sanal makinede kuruludur. Snortun kurulu olduğu SecurityOnion dağıtımı ise, bir tanesi Windows XP ile aynı sanal ağa bağlı iki ağ arayüzü bulunan başka bir sanal makineye kurulmuştur. Snort, ortak arayüzü dinleyecek şekilde ayarlanmıştır. Diğer arayüz de bu makineye yönetim amaçlı erişim için ayrılmıştır.
  50. 50. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 2. Adım Örnek zararlının ağ verisi incelendiğinde sırasıyla şu işlemleri yaptığı görülüyor. (Farklı çalıştırmalarda sonuçlar değişiklik gösterebilir) ● “http://mediafire.com/?ucc9c99b4o1b94i” adresinden b.exe isimli bir dosya indiriyor. ● srv5050.co (212.227.141.241) adresininin 5050 numaralı portuna IRC bağlantısı kurup bir takım kanallara bağlanıyor. ● “http://mediafire.com/?kf2lhk53bpfem63” adresinden go.exe isimli başka bir dosya indiriyor. ● “http://karmachemie.de/rec.exe” (213.165.86.175) adresinden rec.exe isimli bir dosya daha indiriyor. ● “http://jasperrussell.com/324.txt” (74.208.185.227) adresinden 324.txt isimli bir dosya indiriyor. Bu dosya “yahoo.com” uzantılı 28000 farklı mail adresi içeriyor. ● Son olarak listedeki mail adreslerine örnekteki gibi bir mail gönderiyor. From: Edward09@4251.com To: sadiabuttar@yahoo.com Subject: Pharmacy Express Date: Sun, 27 Jan 2013 23:39:52 -0800 Mime-Version: 1.0 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Message-ID: <88397533550593.79168.qmail@hordzd>
  51. 51. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity http://doctorcrib.com Zararlının çalışma anında aktif olmayan farklı özellikleri de vardır fakat buradaki amaç zararlıyı tamamen analiz etmek değil örnek ağ verisini kullanarak bu aktiviteleri tanımlayacak kurallar yazmaktır. 3. Adım Eldeki veriler kullanılarak sadece zararlının kullandığı IP adresleri ve/veya alanadları belirlenip, bunları tanımlayacak kurallar yazılır. Veriler değerlendirildiğinde, mediafire veya yahoo’ya ait adresler için kurallar yazmanın makul olmayacağı ancak srv5050.co, karmachemie.de ve jasperrussell.com adresleri için yazılabileceği görülmektedir. Bu adresler doğrudan zararlıyı yayanlar tarafından alınmış veya sonradan ele geçirilmiş sistemler olabilirler. Her iki durumda da kullanıcılar için tehlike arz etmektedirler. Örneğin srv5050.co adresine yapılacak DNS sorgularını yakalayacak bir kural şu şekilde yazılabilir. alert udp any any -> any 53 (msg:"Zeus variant DNS query"; content:"srv5050"; priority:1; sid:9000554; rev:1;) Doğrudan IP adresine yapılan bağlantıları yakalamak içinse şöyle bir kural kullanılabilir. alert tcp $HOME_NET any -> 212.227.141.241 any (msg:"Zeus variant C&C IP"; flow:to_server; priority:1; sid:9000555; rev:1;) Tabii ağ yapısına göre bu kuralları iyileştirmek mümkün. İlk kural çalıştığında elde edilen Snorby görüntüsü: 4. Adım
  52. 52. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Söz konusu zararlıyı doğrudan dosya indirme aşamasında tespit etmek için çalıştırılabilir dosyadan elde edilen bir imza kullanılabilir. Zararlının farklı türevlerinin aynı imzayı taşımama ihtimali yüksek olmasından dolayı tek başına çok etkili bir yöntem olmasa da bu yöntem diğerlerinin yanında kullanılabilir. Öncelikle çalıştırılabilir dosyaya bir imza tanımlanır. Basitçe şu adımlar izlenebilir. ● strings zararlı.exe > strings.txt komutu ile zararlının içerdiği ve okunabilir olan karakter dizileri elde edilip kendine has olabilecek değerler aranır. Örnek zararlıda 440. satırdaki “signing_of_the_Treaty_of_Karlowitz.exe” değeri kullanılabilir. Bu değerin tam olarak belirtilen yerde bulunması büyük olasılıkla zararlıyı tanımaya yetecektir. ● Daha sonra Snort’un ikili dosyanın içeriğinde doğrudan karşılaştırma yapabilmesi için gerekli değerler elde gerekir. hexdump -C zararlı.exe > hexdump.txt komutu verilerek dosyanın hex/ASCII dökümü elde edilir. ASCII bölümden belirlenen string bulunup hex karşılığı belirlenir. Örnekte Başlangıç adresi: 0x0000925A Değer: 73 69 67 6e 69 6e 67 5f 6f 66 5f 74 68 65 5f 54 72 65 61 74 79 5f 6f 66 5f 4b 61 72 6c 6f 77 69 74 7a 2e 65 78 65 şeklindedir. ● Son olarak aşağıdaki gibi bir kural yazılarak imzayı içeren paketlerde uyarı verilmesi sağlanır. alert tcp any any -> $HOME_NET any (msg:"Zeus variant binary"; flow:from_server,established; content:"|73 69 67 6e 69 6e 67 5f 6f 66 5f 74 68 65 5f 54 72 65 61 74 79 79 5f 6f 66 5f 4b 61 72 6c 6f 77 69 74 7a 2e 65 78 65|"; sid:9000556; rev:1;) Kuralı daha da özelliştirmek için “offset” değeri eklenebilir.
  53. 53. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity 5. Adım Son adımda zararlının ağ hareketleri incelenerek özel bir desen oluşturulmaya çalışılır. Örnek zaralının spamgönderimleri incelendiğinde gönderici adreslerinin belli bir formatta oluşturulduğu fark edilmiştir. Örneğin, MAIL FROM:<Donald86@1008.com> MAIL FROM:<Kevin08@3184.com> MAIL FROM:<Michael36@6998.com> şeklindeki gönderici adresleri (isim)(2rakam)@(4rakam).com desenine uymaktadır. Desen belirlendikten sonra bu desene uygun bir Perl düzenli ifadesi yazılır. Bu desen “/<[a- z]+[0-9]{2}@[0-9]{4}.com>/i” düzenli ifadesi ile karşılanabilir. Yazılan düzenli ifadeleri online olarak test etmek için “www.regexe.com” adresi oldukça kullanışlıdır. SMTP üzerinden mail gönderimlerinde belirlenen deseni arayacak Snort kuralını temel olarak aşağıdaki gibidir. alert tcp $HOME_NET any -> $EXTERNAL_NET 25 (msg:"Zeus variant sending spam"; flow:to_server,established; pcre:"/<[a-z]+[0-9]{2}@[0-9]{4}.com>/i"; priority:1; sid:900$ Uygulama No: BGA-MA-? Uygulama Adı: SSL Kullanan Zararlı Yazılım Trafiğini Yönlendirme ve İnceleme
  54. 54. [ZARARLI YAZILIM ANALİZİ EĞİTİMİ LAB ÇALIŞMALARI] BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity Amaç: SSL kullanan zararlı yazılımın trafiğini şifresiz halde yakalayıp incelemek. Lab senaryosu: HTTPS kullanarak komuta merkezi ile haberleşmeye çalışan zararlı yazılımın trafiği iptables yardımıyla Burp Suite web proxy yazılımına yönlendirilerek analiz edilir. Kullanılan Araçlar: ● Burp Suite ● iptables ● msfpayload Adımlar: 1. Adım Zararlının çalıştırılacağı makine(örnekte WinXP) ve trafik analizi için kullanılacak makine(örnekte Kali Linux) tercihen host-only bir ağ arayüzü ile bağlanır. WinXP(örnekte: 10.10.10.50) varsayılan ağ geçidi olarak Linux makineyi(örnekte: 10.10.10.1) kullanacak şekilde ayarlanır. 2. Adım Linux makineyi gateway olarak kullanabilmek için paket yönlendirme ve IP masquerade özellikleri aktif edilir. Terminalde “sysctl -w net.ipv4.ip_forward=1” komutu ile paket yönlendirme aktif edilir. “sysctl -a | grep net.ipv4.ip_forward” komutu ile değerin 1 olarak olduğu

×