"Enter"a basıp içeriğe geçin

Bellek / RAM Adli Bilimleri

Bellek Adli Bilimi Nedir?

Bellek adli bilimi, bir bilgisayarın bellek dökümündeki uçucu verilerin analizini ifade eder. Siber Güvenlik Analistleri, Tehlike Göstergelerini (IOC’ler) belirlemek ve sürekli çalışan kurumsal sunucular ve kritik bilgisayar sistemleri üzerindeki kötü amaçlı etkinlikleri, davranışları ve kötü amaçlı ağ trafiğini araştırmak için bellek adli incelemesi gerçekleştirir. Bu durum bilgisayar sistemlerini Siber Suçlular ve Bilgisayar Korsanları için yüksek düzeyde hedefler haline getirmektedir.

Bellek geçicidir; bu, bilgisayar kapatıldığında verilerin kaybolacağı anlamına gelir. Güvenliği ihlal edilmiş bir cihazla uğraşırken ilk tepkilerden biri, tehdidi kontrol altına almak için cihazı kapatmak olabilir. Herhangi bir kötü amaçlı yazılım veya komuta kontrol (C2) ağ bağlantısı kurulduğunda bunlar bellekte çalışacak ve sistem kapatıldığında bu bilgiler kaybolacaktır. Bu bilgi, olaya müdahale ve olay analizinde bize yardımcı olacak kritik öneme sahip olacaktır. Bu nedenle, güvenliği ihlal edilmiş bir cihazı yalıtırken Ağın kontrol altına alınması (cihazın ağın geri kalanından yalıtılması) tercih edilen seçenektir.

Diğer bir neden ise, sistemde bir tehlike oluştuğunda, derinlemesine araştırma için günlükler ve disk görüntüleri gibi büyük miktarda adli kanıtın elde edilmesinin gerekmesidir. Bu verilerin toplanması, günlük boyutuna, sabit disk boyutuna vb. bağlı olarak saatler veya bazen günler alır. Bir olayın başlangıcında zaman çok önemlidir ve tehdidi mümkün olduğu kadar çabuk kontrol altına alıp yanıt vermemiz gerekir. Bu, geçici belleği (RAM), RAM boyutunun nispeten küçük olması ve hızlı bir şekilde elde edilebilmesi nedeniyle uç noktada ne olduğunu hızlı bir şekilde analiz etmek ve anlamak için mükemmel bir yapı haline getirir.

Bellek adli bilişimi, kötü amaçlı yazılımla ilgili saldırıları hızlı bir şekilde tanımlamanın ve anlamanın mükemmel bir yoludur; çünkü kötü amaçlı yazılım, kötü amaçlı dosyalar ve C2 ağ bağlantıları gibi herhangi bir güvenlik ihlali göstergesi (IOC’ler) bellekte mevcuttur. Açık ağ bağlantıları ve yakın zamanda yürütülen komutlar veya işlemler de dahil olmak üzere çalışma zamanı etkinliğine ilişkin benzersiz bilgiler sağlar. Çoğu durumda saldırı veya tehditlerle ilgili kritik veriler yalnızca sistem belleğinde bulunur. Örneğin ağ bağlantıları, hesap kimlik bilgileri, sohbet mesajları, şifreleme anahtarları, çalışan işlemler, enjekte edilen kod parçaları ve internet geçmişi. Herhangi bir programın yürütülebilmesi için bellekte bulunması gerekir; bu da bellek adli bilişimini Siber Saldırıların tanımlanması açısından kritik hale getirir.

Bellek, farklı işletim sistemlerine yönelik birden fazla araç kullanılarak edinilebilir, örneğin:

1- FTK Görüntüleyici

2-DumpIt

3-AVML

4- Belkasoft RAM Yakalayıcı

Adli edinimi başka bir derste tartışacağız.

Aşağıdaki resimde hafıza adli bilişiminin Olay Müdahale zincirinde nereye oturduğunu görebiliriz:

Bellek Analizi Prosedürleri

Bu derste, herhangi bir kötü amaçlı etkinliği tespit etmek için nelere bakmamız gerektiğine dair bir analiz prosedüründen geçeceğiz.

1- Kötü Amaçlı Süreçlerin Belirlenmesi

Görmemiz gereken ilk şeylerden biri, hafıza edinimi sırasında çalışan işlemlerin listesidir. Diyelim ki bir sisteme kötü amaçlı yazılım bulaştı. Kötü amaçlı yazılımın tasarlandığı şeyi yapabilmesi için çalıştırılması ve çalıştırılması gerekir. Programların çalışabilmesi için programın talimatlarının ve verilerinin RAM’e aktarılması gerekir. Örneğin, chrome.exe’yi açarsanız, yükleyici talimatları yürütülebilir dosyadan kopyalar ve belleğe (RAM) yazar. İşlemci daha sonra talimatları RAM’den alır ve chrome.exe’yi çalıştırır.

Yani, eğer bir sistem kötü amaçlı bir şey çalıştırıyorsa, bu bellekte bulunacaktır. 

İşletim sistemlerinde işlemler, İşlem Kimliği (PID) ile tanımlanır ve benzersiz bir numara verilir. Belirli bir zamanda iki farklı işlem aynı İşlem Kimliğine sahip olmayacaktır. Her sürecin bir ana süreci vardır; bu, sürecin o süreç tarafından veya onun bağlamı altında oluşturulduğu anlamına gelir (Ana Süreç). Örneğin, bir “.txt” dosyasını, dosyaya çift tıklayarak notepad ile açarsam, işlem adı notepad.exe, ana işlemi ise explorer.exe olacaktır. Windows’un uygun bir işlem hiyerarşisi vardır ve tüm işlemler, önceden tanımlanmış işlem kimliği 4 olan ve üst işlemi olmayan Sistem işlem adından başlar. Saldırganların savunmadan kaçmak için gelişmiş teknikler kullandığı kötü amaçlı yazılımları analiz etmek için Windows işlem soyağacını bilmenin önemini tartışacağız. Genel Windows işlem hiyerarşisi için aşağıdaki resme bakın ve bu işlemler, işletim sisteminin düzgün çalışması için kritik öneme sahiptir.

Kötü amaçlı süreçleri tanımlamak için şunları aramalıyız: 

Şüpheli Süreç Adları

– Şüpheli adlara veya rastgele adlara sahip herhangi bir işlemi arayın. Bunun nedeni, metasploit ve Empire gibi otomatikleştirilmiş araçların ve çerçevelerin zaman zaman bellekte rastgele yürütülebilir dosyalar oluşturmasıdır. Kötü amaçlı yazılım, hizmetlerin kurulumu veya arka kapı oluşturulması gibi kullanım sonrası işlemler sırasında da bu tür süreçleri ortaya çıkarır. Eğer böyle bir sürecimiz varsa o zaman bu spesifik süreci ve onun etkinliğini daha detaylı analiz edebiliriz.

Süreç İlişkisi

– Ebeveyn-çocuk süreç ilişkilerini arayın. Bu senaryoyu görev 3’te pratik bir örnekle tartışacağız. Windows süreç soykütüğünü bilmenin önemli olduğunu öğrendik ve burada da bunu öğreneceğiz. Tehdit aktörleri genellikle kötü amaçlı yazılımlarına yasal Windows programlarının adını verir. Örneğin, lsass.exe bir sistemde güvenlik politikasını uygulamak için kullanılır ve bu işlem kimlik bilgileri yönetiminden sorumludur, Windows sistemleri lsass olmadan çalışmaz. Bir saldırgan kötü amaçlı yazılımına lsass.exe adını verirse ve yeni bir analist bellek dökümünü analiz ediyorsa, bu yasal bir Windows işlemi olduğundan kötü amaçlı lsass’ı araştırmayabilir. Windows soyağacını biliyorsak, wininit.exe’nin ana işlemi ile Sistem işlemine kadar her zaman yalnızca tek bir lsass.exe işlemi olmalıdır. Yukarıda bahsettiğimiz varsayımsal senaryomuzda 2 lsass sürecinin mevcut olması hemen gözümüze çarpacaktır. Kötü amaçlı lsas’ı ana işlem kimliğini görüntüleyerek kolayca tanımlayabiliriz. Eğer wininit değilse, o zaman bir şeylerin yanlış olduğunu biliyoruz ve kötü niyetli bir sürece daralmış oluruz. Kötü süreçlerin tanımlanmasında analiz sırasında başvurulabilecek, Sans DFIR’ın harika bir Hile Kağıdı var: “ https://www.sans.org/posters/hunt-evil/ ”. Bu nedenle, normalin farkındalığı, kötü niyetli olanı tanımlamak için kritik öneme sahiptir.

Şüpheli Ebeveyn-Çocuk Süreç İlişkisi

– Tuhaf ebeveyn-çocuk ilişkilerini arayın. Örneğin, Microsoft Word için olan winword.exe işlemini görebiliriz ve powershell.exe’nin bir alt işlemine sahiptir. Microsoft Word’ün meşru kullanımı PowerShell veya cmd’ye ihtiyaç duymayacağından bu kesinlikle şüphelidir. Saldırganlar kimlik avı için Word belgelerini veya Excel sayfalarını kullandığından bu durum çok yaygındır. Kötü amaçlı bir belge açıldığında saldırganın veri yükü çalıştırılıyor ve PowerShell tehdit aktörleri arasında çok yaygın olduğu için saldırganın makinesine PowerShell veya cmd aracılığıyla ters kabuk bağlantısı yapılıyor.

Savunma Kaçışları

– Şimdi saldırganların savunmalardan saklanmak ve kaçmak için kullandıkları bazı gelişmiş teknikleri tartışalım. Diyelim ki yukarıdaki kontrol listesini inceledik ve kötü amaçlı süreçleri tespit edemedik. Saldırganlar süreç enjeksiyonu, DLL enjeksiyonu, süreç boşaltma vb. gibi gelişmiş teknikleri kullanır. Bu teknikler, yasal bir Windows işlemine kabuk kodu veya kötü amaçlı DLL’ler enjekte eder ve kirli işleri onlar adına yapmalarına olanak tanır. Bu senaryoda, her süreç meşru bir ana sürece ait olduğundan ve yüzeyden bakıldığında hiçbir şey şüpheli görünmediğinden yukarıda bahsedilen analiz yöntemimiz işe yaramayacaktır. Bu tekniklerin gelişmiş tehdit aktörleri arasında çok yaygın olmasının nedeni budur. Gelecek görevlerde bu yöntemlerden ikisinin pratik analizlerini yapacağız.

2- Kötü Amaçlı Ağ Bağlantılarını Belirleme

Etkin veya yakın zamanda kapatılmış ağ bağlantıları bellekte kalır. Ana bilgisayarın iletişim kurduğu kötü amaçlı IP’leri ve etki alanlarını potansiyel olarak tanımlayabiliriz. Bu kesinlikle aktif veya kapalı Komuta ve Kontrol IP’lerini ve temasa geçilen etki alanlarını (Potansiyel kötü amaçlı etki alanları vb.) tanımlamamıza yardımcı olabilir. Bazen, kötü amaçlı süreçleri tanımlamamıza yardımcı olabilecek belirli bir ağ bağlantısıyla ilgili işlem kimliğini de alabiliriz. Şimdi, kötü amaçlı IP’leri tanımlayıp bunları ilgili süreçlerle ilişkilendirebiliyorsak neden süreçleri tanımlamak için bu kadar zaman harcamamız gerektiğini soruyor olabilirsiniz. Bunun nedeni, çalıştırılan kötü amaçlı yazılımın türünü bilmediğimiz için ağ bağlantılarına her zaman güvenemeyeceğimizdir. Hatta herhangi bir C2 IP’siyle iletişim kurmayabilir veya herhangi bir ağ bağlantısına sahip olmayabilir. Veya hafıza edinimi sırasında C2 kontağı kurmamıştır. Saldırganlar, saatler süren çalıştırmadan, hatta günlerce kaçtıktan sonra komuta ve kontrol sunucularına bağlanan kötü amaçlı yazılımlar tasarlar.

Örneğin, bir bellek dökümünü analiz ediyoruz ve tüm ağ bağlantılarını görmeye karar veriyoruz. 1234 veya 8752 gibi nadir bağlantı noktalarındaki bağlantıları manuel olarak arayabiliriz. Olağandışı herhangi bir şey araştırılmalıdır. 80 ve 443 numaralı bağlantı noktaları ortaktır ve onlara daha sonra öncelik verebiliriz. Metasploit çerçevesinin ortak varsayılan bağlantı noktası olan 4444 gibi belirli kötü amaçlı bağlantı noktalarını görürsek, bunu daha ayrıntılı analiz edebiliriz. Bize şüpheli görünen herhangi bir bağlantının VirusTotal veya Cisco Talos istihbaratı gibi tehdit istihbaratı platformlarında analiz edilmesi gerekir. Tüm IP’leri ayrıştırmak ve IP kara listelerinde olup olmadıklarını görmek için listeleri göndermek için komut satırını kullanabiliriz. IP adresleriyle ilişkili alanları da analiz edebiliriz. Diyelim ki senaryomuzda potansiyel atipik bir IP adresi bulduk. VirusTotal’a gidip gönderiyoruz ancak kötü niyetli bir sonuç alamıyoruz. Daha sonra bu IP ile ilişkili bir alan adını, ad sunucularını ve whois verilerini görebiliriz. Bu alan adının yeni kayıtlı bir alan adı olduğunu ve çalışanın (güvenliği aşılmış hesap kullanıcısı) ziyaret etme ihtimalinin çok düşük olduğunu öğrendik. Bu sayede bunun genel olarak kötü amaçlı bir ağ bağlantısı olduğunu analiz edip çıkarım yapabiliriz. 

3- Bellek Enjeksiyonlarının Tespiti

Bellek alanında olağandışı veya şüpheli bir şey olduğunda, bir miktar iz kalır çünkü bellek alanı karmaşıktır. Sistemler dışarıdan gayet iyi görünse de, hafıza düzeyinde işler normal değil.

KDBG, Çekirdek Hata Ayıklayıcısının ek işletim sistemi veri yapılarını bulmasına izin vermek amacıyla var olan çekirdek düzeyinde bir veri yapısıdır. KDBG, PsActiveProcessHead adında bir işaretçi olan ve sistemdeki aktif süreçler olan EPROCESS yapılarının bağlantılı listesine işaret eden bir öğeye sahiptir. Her işlemin, sanal adres alanındaki sanal belleğe karşılık gelen Sanal Adres Tanımlayıcılarına veya VAD’lere işaret eden VAD-Root adı verilen başka bir bileşeni olan kendi EPROCESS yapısı vardır.

Çalışan bir işlemin bellek alanına bir şey enjekte edildiğinde bu VAD’ler tahrif edilir ve meşru bir işlemin sanal adres alanında yapılan bu değişiklikleri tespit edebiliriz. VAD’ler bellek adresi, bellek aralıkları, ayrılmış korumalar ve bazı işletim sistemi bayrakları hakkında bilgiler içerir.

Bir işlem başlatıldığında, işlemin daha fazla belleğe ihtiyaç duyması ihtimaline karşı bir dizi sanal bellek tahsis edilir. Ek hafıza çoğunlukla dinamik yapıya sahip ve zamanla büyüyen uygulamalar tarafından işgal edilir. Ek bellek kullanıldığında, VAD’de bir izin tanımlanır; bu nedenle, enjeksiyonlar için bellek analiz edilirken, antivirüs programları gibi kritik Windows programları için bazı yanlış pozitiflerin görülmesi yaygındır. Dolayısıyla, bir sürece kabuk kodu enjekte ettiğimizde, EXECUTE_READWRITE iznini ayarlayan ek bellek alanına ihtiyaç duyar. Kötü amaçlı yazılımların bellekte çalışabilmesi için okuma, yazma ve yürütme izinlerine ihtiyacı vardır. Normal programlar çoğu zaman üç iznin (okuma, yazma, yürütme) tamamını gerektirmez, bu nedenle bellekte çalışan programları tüm izinlerle görmek gerekir. Yukarıda anlatılanların aynısını yapan ve tüm işlemleri EXECUTE_READWRITE izniyle gösteren, malfind adında bir volatilite3 eklentisi kullanacağız. Ayrıca, ek bellek gereksinimine neden olan verilerin bazı başlıklarını ve onaltılık verilerini de görüntüler.

Aşağıdaki görselde malfind eklentisinden bir çıktı görüyoruz. EXECUTE_READWRITE iznini, dosya adını ve buna sebep olan verileri görebiliriz. MsMpEng.exe bir Microsoft kötü amaçlı yazılımlara karşı koruma motoru olduğundan, bu durumda bu yanlış bir pozitiftir. Dinamik bir programdır. Bunu sıklıkla göreceksiniz, ancak meşruiyetini kod başlıklarından anlayabiliriz.

4- İlişkili Dosyalar (DLL, EXE)

Her program, işini yapabilmek için işletim sistemini çalıştırabilmek ve işletim sistemiyle iletişim kurabilmek için dinamik bağlantı kitaplıkları (DLL’ler) veya diğer dosyalar gibi bazı ek dosyalara ihtiyaç duyar. 

Kötü amaçlı bir işlem bulduğumuzda, kötü amaçlı yazılımı ve virüslü sistemlerde hangi işlevi gerçekleştirdiğini anlamak için bu ek dosyaları da almalı ve analiz etmeliyiz.

DLL enjeksiyonunun, saldırganların savunmalardan kaçarak kötü niyetli komutlarını çalıştırmak için kullandıkları gelişmiş bir yöntem olduğundan kısaca bahsetmiştik. Bunu 5. derste pratik bir örnekle daha detaylı tartışacağız.

5- Kayıt Anahtarları 

Windows kayıt defteri, işletim sisteminde meydana gelen hemen hemen her şey hakkında bilgi içerir ve bilgileri anahtar olarak saklar. Bu değerli bir eserdir ve çok değerli bilgiler içerdiği ve olay sırasında ne olduğunun anlaşılmasına yardımcı olabileceği için Host Forensics sırasında analiz edilen ilk eserlerden biridir. Ayrıca hemen hemen tüm kayıt defteri anahtarlarını bellek dökümü yoluyla da elde edebiliriz ancak kayıt defteri anahtarlarını diskten almak daha iyidir. Bu konuyu gelecekte Windows adli tıp kursunda daha ayrıntılı olarak tartışacağız.

Aşağıdaki resimde, kayıt defterinde gezinmek için bir Windows aracı olan regedit aracılığıyla bir kayıt defteri anahtarını görebiliriz:

Bu görevde bellek dökümlerini analiz ederken nelere dikkat edilmesi gerektiğini tartıştık.

1- Kötü amaçlı süreçlerin belirlenmesi

2- Kötü amaçlı ağ bağlantılarını belirleme

3- Bellek enjeksiyonlarını tespit etme

4- İlgili dosyalar (DLL, EXE)

5- Kayıt defteri anahtarları

Pratik Analiz 1: Maskeli Süreç

Ebeveyn-alt süreç ilişkilerini ve tehdit aktörlerinin, hizmetteki yasal süreçler gibi görünmek için süreçleri nasıl maskeleyebileceğini tartıştık. Neyin normal, neyin sıra dışı olduğunu bilmek için ortak Windows şeceresini bilmek çok önemlidir. Bizim durumumuzda görünüşte şüpheli görünen herhangi bir işlem adı göremiyoruz.

Herhangi bir Windows oturumu sırasında, normal işlemler için gerekli olan farklı Windows hizmetlerini yöneten en az 8 ila 9 svchost.exe işleminin görülmesi yaygındır. “svchost”, services.exe’nin alt işlemidir ve her zaman ana işlem olarak services.exe’ye sahip olması gerekir.

Şimdi durum 1 için analizimize başlıyoruz.

Çalışan işlemleri görmek için PsList komutunu çalıştırıyoruz:

Services.exe’nin meşru olan wininit.exe’nin bir ebeveyni olduğunu görüyoruz. İşlem Kimliği 604’tür. Şimdi 10’dan fazla svchost.exe işlemi görüyoruz ve bunların biri dışında hepsinin olması gereken “604” ana işlemi var.

Meşru Süreç,

Hileli Süreç

Bu svchost.exe’nin İşlem Kimliği 5688 ve ana PPID’si 3664’tür. Bu şüphelidir çünkü daha önce tartışıldığı gibi bizim durumumuzda Ana PPID’nin 604 olması gerekir. Şimdi bu şüpheli süreci doğuran ebeveyni görerek ilerleyeceğiz. Bu ana PPID’yi grep edebiliriz:

Söz konusu svchost.exe, explorer.exe tarafından oluşturuldu; bu, birisinin bu dosyayı dosya gezgininden çift tıkladığını gösteriyor ki bu iyi bir şey değil.

Şu ana kadar olası bir kötü amaçlı süreci tespit ettik. Süreçlerin komut satırı argümanlarını görmek için Volatility’deki CmdLine eklentisini kullanabiliriz.

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/RogueProcessCase1.mem windows.cmdline | grep 5688

Burada bu dosyanın CyberJunkie kullanıcısının indirilenler dizininde bulunduğunu görüyoruz.

Bir sonraki adımımız bu dosyayı boşaltmak ve davranışını belirlemek için sanal alanda statik/dinamik bir analiz yapmak olacaktır. Ancak önce bu dosyanın açtığı C2 bağlantılarını veya ağ soketlerini göreceğiz. Bellek edinme sırasında tüm aktif bağlantıları/soketleri listeleyecek olan Volatility 3’te netscan eklentisini kullanacağız. Bu, analistlerin herhangi bir kötü amaçlı IP/C2 bağlantısını bulmasına olanak tanıdığı için çok kullanışlıdır. İstenilen sonucu elde etmek için kötü niyetli sürecimizin İşlem Kimliğiyle uğraşacağız.

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/RogueProcessCase1.mem windows.netscan | grep 5688

192.168.230.128:53 IP’sine bağlantı yapıldığını görüyoruz. Bu dahili bir IP adresidir çünkü bu bir uygulama çalışmasıdır; gerçek senaryolarda tehdit istihbaratı platformlarına gider ve kötü amaçlı olup olmadıklarını belirlemek için IP’lerin itibarını buluruz. Ayrıca kötü amaçlı yazılımlar bazen daha yüksek rastgele bağlantı noktaları kullanır veya Metasploit’in varsayılan bağlantı noktası 4444 olduğu gibi. Analizimizi derinleştirmek için bu tür şeyleri gözlemlemeliyiz.

Daha sonra, analiz etmek veya tersine mühendislik yapmak için bu ikili dosyayı boşaltabiliriz. Bu dersin kapsamı dışında olduğundan bunu burada yapmayacağız. Gerçek araştırmalarda ikili dosyayı VirusTotal’a veya ANY.RUN gibi sandbox’lara yükleyebiliriz.

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/RogueProcessCase1.mem windows.pslist –dump –pid 5688

Bu ikili dosyayı VirusTotal’a gönderirsek, bunun bir Metasploit veri yükü yürütülebilir dosyası olduğunu görebiliriz.

Kurumsal ortamlarda, bellek görüntüsünden böyle kötü amaçlı bir dosya bulduktan sonra, ağdaki diğer virüslü cihazları bulmak için bulunan IOC’leri (dosya, IP adresi vb.) arardık.

Bu, saldırganların (geçmişte) kullandığı yaygın yöntemlerden biridir ve EDR ve savunmalar geliştikçe artık o kadar yaygın değildir. Bir sonraki örnekte bugün bile aktif olarak kullanılan gelişmiş bir yöntemi göreceğiz.

Pratik Analiz 2: Proses Enjeksiyonu

Bu durumda süreç enjeksiyonunu tartışacağız. Süreç enjeksiyonu, bir kod parçasının başka bir sürecin adres alanında çalıştırıldığı bir tekniktir. Saldırganlar, meşru bir süreç bağlamında kötü amaçlı kabuk kodunu çalıştırmak için bu yöntemi aktif olarak kullanır. Bu sayede savunma mekanizmalarından kaçıp izlerini gizleyebilirler.

Vaka 2 dosyası /home/analyst/memorydumps/ProcessInjectionCase2.mem konumunda saklanır

Volatilite /home/analyst/Volatility3/vol.py altına kurulur

Volatilite çerçevesini kullanarak herhangi bir olası bellek enjeksiyonunun meydana gelip gelmediğini tespit etmeyi öğreneceğiz. PsList’i kullanarak çalışan tüm işlemleri görerek başlıyoruz.

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/ProcessInjectionCase2.mem windows.pslist

Gerçek analizde, hileli süreçleri tespit etmek için öncelikle herhangi bir tek ebeveyn-çocuk süreç ilişkisini veya herhangi bir şüpheli/rastgele adlandırılmış süreci ararız. PsList’in çıktısını gördüğümüzde herhangi bir şüpheli işlemi veya herhangi bir garip PID-PPID ilişkisini göremiyoruz. Ayrıca CmdLine’ı kullanarak şüpheli komut satırı argümanlarını görmeyi de deneyebiliriz.

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/ProcessInjectionCase2.mem windows.cmdline

Şimdi bu duruma ilişkin eklentinin adı “MalFind”. MalFind komutu, sanal adres tanımlayıcı bayrakları ve her işlem VAD’sinde ayarlanan izinler gibi özelliklere dayalı olarak kullanıcı bellek alanında gizli veya enjekte edilmiş kodun/DLL’lerin bulunmasına yardımcı olur. Görev 2’de bellek enjeksiyonunun nasıl gerçekleştiğini daha önce ayrıntılı olarak tartışmıştık. Burada yalnızca bellek görüntüsündeki enjeksiyonları bulmaya odaklanacağız.

Şimdi bu eklentiyi deneyelim ve çıktı olarak ne elde edeceğimizi görelim.

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/ProcessInjectionCase2.mem windows.malfind

Hemen üstte svchost.exe işlemini görüyoruz. svchost.exe normal koşullar altında bu davranışı göstermemelidir. Bu Process ID olan “1776”yı not edelim. Bazı Hex kodlarını, ASCII eşdeğerlerini ve altında bazı montaj talimatlarını görüyoruz. Buna geri döneceğiz, ama önce aşağı kaydıralım

Burada başka bir süreç görüyoruz ama bu yanlış bir pozitiflik. Çünkü bu işlem, verimli çalışması için tam “EXECUTE_READWRITE” izinleriyle bellekte çalıştığı için bu tür davranışlar gösteren bir Microsoft Defender kötü amaçlı yazılımdan koruma motorudur. Bizim durumumuzda olduğu gibi olası izinsiz girişleri tespit etmek için diğer süreçlerin bellek alanındaki kodu okuması gerekiyor. Malfind eklentisinin çıktısında çoğu durumda “MsMpEng.exe” ifadesini görürsünüz. Saldırganlar ikili adlarını bu şekilde yaparak da bunu kötüye kullanabilirler. Dolayısıyla bunun gerçekten meşru bir ikili olduğunu doğrulamak her zaman daha iyidir. Bunu ya bu süreci terk ederek ya da ebeveyn-çocuk süreç ilişkisini geriye doğru izleyerek yapabiliriz.

Şimdi svchost.exe işlemimize dönelim. Bir svchost.exe işleminde olası bir işlem enjeksiyonu meydana geldiğinden şüpheli bir şeyler olduğunu biliyoruz. Daha ileri gitmek için bu süreci terk edebilir, tersine mühendislik yapabilir veya davranışı hakkında bilgi edinmek için çevrimiçi/çevrimdışı sanal alanları kullanabiliriz. Bu dersin kapsamı dışında olduğundan bunu yapmayacağız. Hex ve ASCII bu dosyanın başlık bilgisidir. Hex koduna veya dizelerine dayalı olarak biraz araştırma yaparsak, bu özel modelin genellikle C2 işaretçilerinde/Meterpreter Kabuklarında bulunduğunu görürüz.

 Bu örnekte, gösterim amacıyla sürece Meterpreter kabuk kodu eklenmiştir. Bu herhangi bir süreç olabilir, ancak svchost.exe’yi gösterdim çünkü bunu 1. durumda da tartıştık. Artık bunun bir C2 işaretçisi olduğunu biliyoruz. Netscan eklentisini kullanarak aktif/kapalı bağlantıları görebiliriz. Kötü amaçlı süreci tanımladığımız ve bunun bir C2 işaretçisi olduğundan şüphelendiğimiz için sonuçları 1776 ile alacağız.

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/ProcessInjectionCase2.mem windows.netscan | grep 1776

Virüs bulaşan hostun Metasploit varsayılan portu olan 4444 portunda “192.168.230.128” IP’si ile iletişim kurduğunu görebiliyoruz. Bu, C2 iletişiminin yapıldığını ve gerçek senaryolarda bu IP’yi ağımızdan engelleyeceğimizi ve ağ çapında enfeksiyon olması durumunda ağ üzerinde bulunan IOC’leri araştıracağımızı doğrulamaktadır.

Dolayısıyla, bu analizden aşağıdaki IOC’leri elde ettik

1- 192.168.230.128

2- svchost.exe (İşlem Kimliği 1776) ve karma

Tehdidi kontrol altına aldıktan sonra derinlemesine bir adli tıp araştırması yapabiliriz.

Pratik Analiz 3: DLL Enjeksiyonu

Bu son durumda, daha önce tartıştığımız süreç enjeksiyonuna biraz benzeyen DLL enjeksiyonuna bakacağız. Bu teknikte, diğer süreçlerin alanına bazı kodlar enjekte etmek yerine, hedef sürecin bağlamına bir DLL enjekte ediyoruz. Programlar dinamik olarak ve farklı senaryolardaki kullanım durumlarına göre çalışmak için DLL’leri (dinamik bağlantı kitaplıkları) kullanır. Saldırganlar bu tekniği, bir işlemin bağlamı altında kötü amaçlı bir DLL’yi yüklemeye zorlamak için kullanır ve bu işlem, söz konusu DLL’de bulunan kodu çalıştırır.

Durum 3 dosyası /home/analyst/memorydumps/DllInjectionCase3.mem konumunda saklanır

Volatilite /home/analyst/Volatility3/vol.py altına kurulur

Not: Önceki derslerden makineyi sonlandırın ve bu ders için yeni makineye bağlanın. Durum 3 dosyası bu laboratuvarda depolanıyor ve önceki bağlı laboratuvarda mevcut değil.

Her zamanki gibi PsList komutuyla başlıyoruz:

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/DllInjectionCase3.mem windows.pslist

Soruşturmamızı başlatmak için hileli süreçler veya şüpheli görünen süreçler ararız. Bu metodolojiyi daha önce tartıştığımız için doğrudan kötü amaçlı DLL’yi bulmaya geçeceğiz. Enjeksiyon izlerini bulmak için yine Malfind’den yararlanacağız.

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/DllInjectionCase3.mem windows.malfind

En üstte spoolsv.exe işlem adını görüyoruz. “spoolsv”, Windows’ta yazdırma işlerinin yürütülmesinden sorumlu olan bir yazdırma biriktiricisi hizmetidir. Bir belgeyi yazdırmak istediğimizde talimatlar bu servis tarafından gerçekleştirilir. Yine Hex kodunu, bazı montaj talimatlarını görüyoruz ve dosya başlığı bilgisi yerine bir Windows yolu görüyoruz. Bunun nedeni, süreç enjeksiyon durumunda ham kabuk kodunun sürece enjekte edilmiş olmasıdır. Burada bir dosya (DLL) enjekte ediliyor, dolayısıyla onun yolunu görüyoruz. Harika, artık tehdit avlamak için kullanabileceğimiz kötü amaçlı bir dosyanın adı ve yolu elimizde.

İndirilenler dizininde Winsrvc.dll adında bir DLL bulunduğunu biliyoruz. DLL adı meşru bir DLL adı gibi görünüyor, ancak Windows’ta yerel olarak böyle bir DLL mevcut değil. Kötü amaçlı sürecimizin İşlem Kimliğine sahibiz, dolayısıyla bu işlemi atarız, hatta daha iyisi, DLL’ler de dahil olmak üzere süreçle ilgili tüm dosyaları (dosyaları) atarız. Ayrıca edinme sırasında çalışan tüm DLL’leri de dökebiliriz. 

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/DllInjectionCase3.mem windows.dlllist | grep Winsrvc

Yalnızca bu özel DLL’ye ihtiyacımız var, bu yüzden şunu atacağız:

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/DllInjectionCase3.mem windows.dlllist –pid 1656 –dump

Bu komut, PID 1656 ile spoolsv.exe işlemiyle ilgili tüm DLL(ler)in dökümünü alacaktır. Enjekte edilen DLL’nin adını biliyoruz, dolayısıyla onu diğer DLL(ler)den ayırt etmek ve daha ayrıntılı analiz etmek için yeniden adlandıracağız.

Gerçek araştırmalarda bunu derinlemesine analiz ederdik. Alıştırmamız için sonuçları görmek üzere bunu VirusTotal’a yükleyeceğiz:

Bunun kötü niyetli olduğunu görebiliyoruz. Bu kötü amaçlı DLL, bu alıştırma için MSFvenom verisi kullanılarak oluşturuldu ve ters bağlantı için kullanıldı. Artık şunu görmek için netscan eklentisini kullanabiliriz:

Komut: python3 /home/analyst/volatility3/vol.py -f /home/analyst/memorydumps/DllInjectionCase3.mem windows.netscan | grep rundll32

Bu durumda dikkat edilmesi gereken ilginç bir nokta, C2 bağlantısının enjekte edilen işlemimiz “spoolsv.exe” yerine meşru bir “rundll32.exe” işlemi tarafından yapıldığını görmemizdir. Bunun nedeni, DLL’lerin yürütülmesinin Windows’ta rundll32.exe tarafından gerçekleştirilmesidir. Dolayısıyla, DLL spoolsv.exe işlemi bağlamında yürütülse de aslında rundll32.exe tarafından işlenmektedir. Önceki durumlarda olduğu gibi aynı saldırgan IP’sini görüyoruz.

Şu ana kadar bu durumda toplanan IOC’ler şunlardır:

1- 192.168.230.128

2- Winsrvc.dll ve hash’i

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir