Cumartesi, Ocak 25, 2025
Ana SayfaYazılarLinuxLinux Forensics -1

Linux Forensics -1

Günümüzde birçok büyük kurum, iş yüklerini yönetmek ve esnekliği artırmak amacıyla bulut ortamlarını ve konteyner teknolojilerini benimsemektedir. Özellikle Cloud ortamları, Docker ve Kubernetes gibi teknolojiler, enterprise düzeyindeki kuruluşlarda yaygın olarak kullanılan ve önemsenen araçlardır.

Docker ve Kubernetes gibi konteyner teknolojileri genellikle Linux tabanlı sistemlerde daha yaygın olarak kullanılır ve Linux’un esnek, performans odaklı ve açık kaynak yapısı, bu teknolojilere uygun bir ortam sunar.

Bu yüzden enterprise bir şirkette çalışan Incident Responder’ların yada Forensic Uzmanlarının Linux tarafında da dokunacağı yerleri iyi bilmesi gerekir.

Linux’da özellikle system detayları, account bilgiler, spesific bilgiler, anlık çalışan processler,execute edilmiş processler, schedule processler, log dosyaları, third-party applicationların bulundugu yerler gibi dataların yerlerinin iyi bilinmesi gerekir.

Linux log dosyaları, metin tabanlı dosyalardır ve genellikle /var/log dizini altında bulunur.

Her log dosyası belirli bir türdeki bilgileri içerir, örneğin, sistem logları /var/log/syslog dosyasında bulunabilir.

“Metin tabanlı dosya” terimi, bir dosyanın içeriğinin insanlar tarafından okunabilir metin biçiminde olduğu anlamına gelir. Bu dosyalar, genellikle karakterler, kelimeler ve satırlar içeren metin verilerini içerir. 

Önce sistemi tanıyarak, sistem hakkında bilgi toplanarak başlanır. Linux’da her data bir dosyada oldugu için önce dosyaların konumlarını bilmek ve bunların nasıl okunacagını bilmek önemli olacaktır.

https://linuxhandbook.com/linux-directory-structure/

/etc :

Sistem yapılandırma dosyalarının çoğu bu dizinde bulunur. Örneğin, /etc/passwd dosyası kullanıcı hesapları hakkında bilgi içerir.

/var/log :

Sistem günlük dosyalarının birçoğu bu dizinde bulunur. Örneğin, /var/log/syslog genel sistem olaylarını içerirken, /var/log/auth.log kimlik doğrulama olaylarını içerir.

/proc ve /sys :

Canlı sistem bilgilerini içeren sanal dosya sistemlerini temsil eder. 

/proc/cpuinfo işlemcinin bilgilerini içerir, 

/proc/meminfo sistem belleği hakkında bilgi içerir.

/home:

Kullanıcı ev dizinleri genellikle /home dizininde bulunur. Kullanıcıların kişisel dosyaları ve yapılandırma dosyaları bu dizinde bulunabilir.

/var :

Çeşitli uygulamaların verilerini içeren dizindir. Örneğin, /var/mail dizini e-posta kutularını içerir. 

/tmp :

Geçici dosyaların saklandığı dizindir. Bu dosyalar genellikle bir oturum boyunca kullanılır ve düzenli olarak temizlenir.

/boot :

Linux çekirdeği ve başlangıç dosyaları gibi, sistemin başlaması için gereken dosyaları içerir.

/bin ve /sbin :

Temel sistem komutlarını içeren dizinlerdir. /bin/ls dosyası, dizin içeriğini listelerken, /sbin/ifconfig ağ yapılandırma bilgilerini gösterir.

/usr :

Uygulamaların ve kullanıcıların yüklediği programların verilerini içerir. /usr/bin ve /usr/sbin dizinleri de temel sistem komutlarını içerir.

Bir çok alt dizin ve belki Incident anında kullanılması gerekecek bir çok dizin olabilir. Genel olarak bu yazıda bazı dizinlere odaklanılacaktır.

İşletim sistemi hakkında bilgi toplanarak başlanabilir demiştik. 

İşletim sistemi sürüm bilgilerini bulmak için, /etc/os-release adresinde bulunan dosyayı okumak üzere cat yardımcı programı kullanılabilir. Cat yardımcı programı hakkında daha fazla bilgi edinmek için man cat yazıp detayına bakabilirsiniz.

/etc/passwd dosyası, Linux sisteminde bulunan kullanıcı hesapları hakkında bilgi içerildiğinden bahsedilmişti. Bu dosyayı okumak için yine cat yardımcı programını kullanabiliriz. Çıktı, kullanıcı adını, şifre bilgilerini, kullanıcı kimliğini (uid), grup kimliğini (gid), açıklamayı, ana dizin bilgilerini ve kullanıcı oturum açtığında çalıştırılan varsayılan kabuğu açıklayan iki nokta üst üste ayrılmış 7 alan içerir. tıpkı Windows’ta olduğu gibi, kullanıcı tarafından oluşturulan kullanıcı hesaplarının kullanıcı kimlikleri 1000 veya üzeridir. Daha okunabilir hale getirmek için aşağıdaki komutu kullanabilirsiniz:

cat /etc/passwd| column -t -s :

Daha düzenli görmek istersen komutlar zenginleştirilebilir:

cut -d: -f1,3,7 /etc/passwd

Bonus: 

(awk komutu da belirli sütunları seçerek görüntüleme imkanı sağlar.)

awk -F: ‘{print $1, $3, $7}’ /etc/passwd

(Bu komut, kullanıcılar arasında /bin/bash kabuğunu kullananları filtreleyip sadece belirli sütunları gösterir.)

grep /bin/bash /etc/passwd | awk -F: ‘{print $1, $3, $7}’

(getent komutu, /etc/passwd dosyasındaki kullanıcı bilgilerini görüntüler. Bu komut, NIS (Network Information Service) ve LDAP (Lightweight Directory Access Protocol) gibi harici kaynaklardan bilgi alabilir.)

getent passwd | cut -d: -f1,3,7

journalctl –file system.journal –list-boots

Bu komut, bir Linux sistemde systemd tarafından kullanılan journal log sistemini yönetmek için kullanılır. journalctl komutu, systemd journal loglarına erişim sağlar. Bu loglar, sistem olayları, hata mesajları ve diğer günlüklere ilişkin bilgileri içerir.

Komutun belirli bir örneği olan –file seçeneği, belirli bir günlük dosyasına erişim sağlar. Bu örnekte, system.journal adlı günlük dosyasına erişim sağlamaktadır.

Ayrıca, –list-boots seçeneği, sistemdeki önceki başlatmaların bir listesini görüntüler. Yani, sistem her başlatıldığında bir “boot” kaydı oluşturulur ve bu seçenek, bu kayıtların listesini gösterir. Bu, belirli bir başlatmanın kaydını incelemek veya hata ayıklamak için faydalı olabilir.

Genel olarak, bu komut, sistem günlüklerini incelemek ve sorunları tespit etmek için kullanılır.

Bir sonraki adım grup bilgileri toplama olabilir./etc/group dosyası, ana bilgisayarda bulunan farklı kullanıcı grupları hakkında bilgi içerir. Yine cat ile okunabilir hale gelir.

Örneğin görsel 3.2’ de adm “adm” kullanıcı grubunu temsil eder. Grup kimliği (gid) 4’tür ve bu grupta “syslog” ve “ubuntu” kullanıcıları bulunmaktadır.

Sudoers List bir Linux sistemde “sudo” komutunu kullanma izinlerini ve bu komutu kullanabilen kullanıcıları belirten bir yapıdır.

Sudoer Listesi, /etc/sudoers dosyasında bulunur.

Bu dosyaya erişmek için ayrıcalıkları yükseltilmesi gerekecek.

Bir sonraki aşama Authentication loglarına bakmak olabilir.

Bir Linux ana bilgisayarında kimlik doğrulaması yapan her kullanıcı, auth log ‘a kaydedilir. Kimlik doğrulama günlüğü, /var/log/auth.log konumuna yerleştirilen bir dosyadır.

Bazı durumlarda dosyanın boyutu sebebiyle anlaşılır hale getirmek için tail,head,more,less gibi komutlar kullanabilirsiniz.

Örneğin yukarıdaki görsel de Nov 16 ile başlayan ilk ifade ubuntu kullanıcısının 16 Kasımda 00:34 de “sudo” komutu aracılığıyla “su” komutunu kullandığını gösterir.

PWD=/home/ubuntu: Kullanıcının bulunduğu dizini gösterir.

USER=root: İşlemi gerçekleştiren kullanıcının kim olduğunu belirtir.

COMMAND=/usr/bin/su: Çalıştırılan komutun tam yolu.

Burdan sonra hızlı ve hap bilgi şeklinde devam edecek, önemli görülen kısımlar ekran görüntüleri ile desteklenecek.

Ana bilgisayar adı, Linux Ana Bilgisayarındaki /etc/hostname dosyasında saklanır.

Saat dilimi bilgisi, cihazın genel konumuna veya kullanılabileceği zaman aralığına ilişkin bir gösterge veren önemli bir bilgi parçasıdır. Saat dilimi bilgisi, konum/etc/timezone dilimi konumunda bulunabilir.

Network interface’ler hakkında bilgi sahibi olmak için /etc/network/interfaces altına bakabilirsiniz.

Benzer şekilde, farklı arayüzlerin MAC ve IP adresleri hakkında bilgi bulmak için ip komutunu kullanabilirsiniz. ip address show şeklinde.

Canlı bir sistemde aktif ağ bağlantılarını bilmek işimize yarayacak en önemli noktalardan biri olacaktır. Bu yüzden netstat komutu hayat kurtarıcı olacak.

-n: Port numaralarını ve IP adreslerini numerik formatta gösterir. DNS çözümlemesi yapmaz.

-a: Tüm bağlantıları gösterir, dinleme (listen) bağlantıları da dahil.

-t: TCP bağlantılarını gösterir.

-p: Bağlantıyı oluşturan sürecin adını/pid’sini gösterir.

Netstat kadar işlevli olacak bir diğer konu anlık çalışan processleri görmek olacaktır.

Ps komutu istediğimiz bilgiyi verecektir.

Bu komutun çıktısı, sistemde çalışan tüm processlerin ayrıntılı bir listesini içerir. Her bir satır bir process’i temsil eder, ve bu satırlarda genellikle şu bilgiler bulunur:

USER: İşlemi başlatan kullanıcı adı.

PID: İşlem Kimliği (Process ID), yani işlemin benzersiz numarası.

%CPU: CPU kullanım yüzdesi.

%MEM: Bellek kullanım yüzdesi.

VSZ: Toplam sanal bellek boyutu (kilobyte cinsinden).

RSS: Resident Set Size, yani işlemin fiziksel bellek boyutu (kilobyte cinsinden).

TTY: İşlemin bağlı olduğu terminal.

STAT: İşlem durumu (örneğin, çalışıyor, beklemede, durmuş).

START: İşlemin başlatılma zamanı.

TIME: İşlem tarafından kullanılan toplam CPU zamanı.

COMMAND: İşlemi başlatan komut veya program.

Referans:

Yazının devamı : Linux Forensics – 2

Önceki İçerik
Sonraki İçerik
İLGİLİ PAYLAŞIMLAR

En Popüler Yazılar

Son Gönderiler