Linux sistemleri, açık kaynaklı yapıları ve esnek yapılandırmaları nedeniyle çok sayıda kullanıcı ve sistem yöneticisi tarafından tercih edilmektedir. Ancak, bu esneklik aynı zamanda saldırganlar için de cazip bir hedef olabilmektedir. Bir saldırı veya güvenlik ihlali durumunda, sistemde gerçekleşen faaliyetlerin izleri (artifacts) incelenerek olayın nasıl gerçekleştiği, kimlerin etkili olduğu ve sistemde ne tür değişiklikler yapıldığı tespit edilebilir. Bu bağlamda, process execution artifacts yani bir sürecin çalıştırılmasıyla ilgili izler, dijital forensics analizde kritik öneme sahiptir.
Process execution artifacts, bir Linux sisteminde yeni bir sürecin başlatılması, çalıştırılması veya sonlandırılması sırasında bırakılan dijital izlerdir. Bu izler; sistem log dosyaları, süreçlerin komut geçmişi, auditd tarafından kaydedilen olaylar veya sistemin /proc sanal dosya sistemi gibi yerlerde bulunabilir. Bu veriler, bir saldırının izinin sürülmesi, kötü amaçlı faaliyetlerin aydınlatılması ve olayın zaman çizelgesinin oluşturulması açısından önemli ipuçları sunar.
Process
Linux Process normalde nasıl davrandığını anlamak, potansiyel problemleri tespit etmenize yardımcı olabilir. Windows’tan farklı olarak, Linux process hiyerarşisi genellikle çok ‘düz’dür. Bu aslında iyi bir şeydir, çünkü sorunlu noktalar daha belirgin hale gelir. Modern Linux process hiyerarşisi, PID 1’de systemd ile başlar. systemd, makinadaki diğer tüm hizmetleri başlatır, web sunucuları, DNS sunucuları, DHCP istemcileri gibi arka planda çalışan onlarca hizmet de dahil olmak üzere. Çoğunlukla, bu arka plandaki hizmetler sadece çalışmaya devam eder ve çok az, hatta hiç child process başlatmazlar. Linux’taki en yaygın giriş hizmeti SSH’dir. sshd sürecinden, genellikle Linux komut shell (bash gibi) ve kullanıcı etkileşimli komutları görürsünüz.
Bazı durumlarda, kullanıcılar makinenin konsoluna giriş yapıyor olacaktır. Eğer bir metin tarzı konsol oturumu kullanıyorlarsa, kullanıcının oturumu ‘login’ sürecinden çıkacaktır.”
Grafiksel veya pencere arayüzü üzerinden yapılan girişler, bir pencere yöneticisinden çıkan çok karmaşık process hiyerarşileri gösterir:
Burada dikkat edilmesi gereken;
Arka plan hizmetleri (background service ) shell başlatmamalıdır ve ayrıca, kimlik değiştirerek görünmeye çalışan kullanıcı process lerde dikkat edilmelidir.
Linux Sistemlerinde Process Execution Artifacts İzlerinin Konumları ve Özellikleri
1. Komut Geçmişi (Bash History)
- Bash History Dosyası: Kullanıcıların terminalde çalıştırdıkları komutlar, her kullanıcının home dizininde yer alan .bash_history dosyasında saklanır. Root kullanıcısı için bu dosya /root/.bash_history şeklinde bulunur. Standart Linux komut kabuğu bash’tır ve kabuktan alınan komut geçmişi, kullanıcının ana dizininde bulunan .bash_history dosyasına kaydedilir. Geçmiş dosyası basit bir metin dosyasıdır ve kolayca silinebilir. .bash_history dosyasını bir metin düzenleyicisi ile düzenleyebilmelidir ve yaptığım değişiklikler, geçmiş daha sonra yeni kabuklardan gelen komutlarla güncellense bile korunur.
Ancak dikkat edilmesi gereken şey, bir kabuk kapandığında yeni bir bash_history dosyasının oluşturulması ve eski dosyanın hemen silinmemesidir. Bu da demek oluyor ki, unallocated (ayrılmamış) alanda pek çok eski bash_history sürümü bulabilirsiniz (örneğin, “cd /” veya “rm -f” gibi yaygın komut dizelerini arayarak). Eski bash_history dosyasını kurtardıktan sonra, diff komutunu kullanarak mevcut sürümle karşılaştırın ve ne değiştiğine bakın.
Şu anda çalışan shell girilen komutlar yalnızca o shell kapandığında kaydedilir. Bu nedenle, mevcut komut geçmişini almanın tek yolu, Volatility’deki linux_bash eklentisini kullanmaktır. Ayrıca, komutlar bash_history dosyasına kronolojik sırada olmayacak şekilde kaydedilebilir. Eğer üç gün önce komutlar çalıştırıp kabuğumu sonlandırmadıysam, bu komutlar, dün farklı bir kabukta çalıştırdığım ve kapattığım komutlardan sonra bash_history dosyasına kaydedilecektir. - Özellik: Bu dosya, komutların kronolojik sıralamasını sunar fakat genellikle zaman damgası içermez. Güvenlik ihlallerinde, saldırganın sistem üzerinde gerçekleştirdiği işlemleri tespit etmek için incelenir.
- Basit bir metin dosyasıdır.
- Kolayca silinebilir veya değiştirilebilir.
- Komutlar yalnızca kabuk (shell) çıkışı sırasında dosyaya yazılır.
- Mevcut çalışan kabuklardaki geçmiş yalnızca bellekte bulunur.
- bash_history dosyası kronolojik sırada olmayabilir.
- Her kabuk çıkışında yeni bir dosya oluşturulur.
2. /proc Dosya Sistemi ve Process Bilgileri
- /proc Sanal Dosya Sistemi: Linux sistemin çalışma anındaki durumunu yansıtan /proc dizini, her process için benzersiz bir dizin oluşturur. Bu dizin altında, processin komut satırı (cmdline), geçerli çalışma dizini (cwd), çalışma belleği, dosya tanımlayıcıları (fd) ve diğer önemli bilgiler yer alır. Sabit disk üzerinde yer kaplamaz yani sanal bir dizindir. Bilgisayar hakkında bilgiler içerir (CPU, Linux Kernel v.b.). Çalışan processlerin dosyaları burada bulunur. Dosyalar ve dizinler bilgisayar başladığında veya sistem çalışırken ve işler değiştikçe anında oluşturulur/silinir.
- Örnek İnceleme: Bir sürecin çalıştırılma parametrelerini görmek için aşağıdaki komut kullanılabilir:
cat /proc/<pid>/cmdline | tr ‘\0’ ‘ ‘
Bu komut, belirli bir sürecin komut satırını okunabilir formatta verir.
3. Auditd ve /var/log/audit
- Auditd Aracı: Linux sistemlerde, özellikle kritik olayların izlenmesi için tasarlanmış auditd (audit daemon) servisi, process execution olaylarını kaydeder.
- Log Dosyası: Genellikle /var/log/audit/audit.log dosyasında bulunan bu loglar, hangi processin ne zaman, hangi kullanıcı tarafından ve hangi komutlarla çalıştırıldığını detaylandırır.
- Kullanım: Auditctl komutu ile sistemde hangi etkinliklerin izleneceği belirlenebilir. Örneğin, aşağıdaki komutla execve çağrıları için bir kural eklenebilir:
auditctl -a always,exit -F arch=b64 -S execve -k process_exec
Bu komut, 64-bit sistemlerde tüm execve çağrılarını “process_exec” etiketiyle kaydeder.
4. Diğer İlgili Artifaktlar
- Sistem Olayları ve loglar: /var/log/syslog, /var/log/messages gibi dosyalar, sistem genelindeki olayları kaydeder. Burada, process execution ile ilişkili anormallikler veya kritik uyarılar yer alabilir.
- Kullanıcı Etkinlikleri: Kullanıcıların oturum açma, çıkış yapma gibi hareketleri /var/log/auth.log veya /var/log/secure dosyalarında bulunabilir.
- Özel Araçlar ve Komutlar: ausearch aracı, auditd loglarını arayarak belirli etkinlikleri kolayca filtreleyebilir. Örneğin:
ausearch -k process_exec
Bu komut ile “process_exec” etiketiyle kaydedilen tüm olaylar listelenir.
Process Execution Artifacts’ın Forensics Analizindeki Önemi
Olay Zaman Çizelgesinin Oluşturulması
Her bir process execution artifaktı, saldırının başlangıcından sonuna kadar yapılan işlemler için kronolojik bir yapı sunar. Bu da olayın nasıl gerçekleştiğinin detaylı şekilde anlaşılmasına yardımcı olur.
Yetkisiz Erişim ve İzinsiz Faaliyetlerin Belirlenmesi
Komut geçmişi, audit logları ve /proc verileri bir araya getirildiğinde, saldırganların izinsiz erişim yöntemleri ve kullandıkları araçlar tespit edilebilir. Örneğin, normalde bulunmaması gereken bir komutun çalıştırılması veya sistemde beklenmeyen bir süreç aktivitesi, saldırı izlerine işaret edebilir.
Saldırı Vektörlerinin ve Kalıcılık Mekanizmalarının İncelenmesi
Sistem üzerinde çalışan kötü amaçlı süreçler, yönetici yetkileriyle çalıştırılan ve kalıcılık sağlayan mekanizmaların bir göstergesi olabilir. Bu tür veriler, saldırganın nasıl sistemde kalıcılık sağladığı ve ilerleyen aşamalarda ne tür faaliyetlerde bulunduğunun belirlenmesine yardımcı olur.
Sonuç
Linux sistemlerde process execution artifacts, dijital forensics analizde önemli bir rol oynar. Bu izler, bir saldırının nasıl gerçekleştiğini, hangi yollarla sisteme sızıldığını ve saldırganın hangi araçları kullandığını anlamamıza yardımcı olur.
- Auditd ve sistem logları gibi araçlar sayesinde, her bir komutun çalıştırılma zamanı, kullanıcı bilgileri ve komut içeriği gibi detaylar kaydedilir.
- Bash history ve /proc verileri ise, sistemde çalışan process ve kullanıcı aktivitelerinin detaylı analizini sağlar.
Sonuç olarak, bu artifaktların analizi ile olayın kapsamlı bir zaman çizelgesi oluşturulabilir; saldırı vektörleri, kalıcılık mekanizmaları ve yetkisiz erişim yöntemleri tespit edilebilir. Bu sayede, sistemin etkili bir şekilde izlenmesi, müdahale edilmesi ve daha sonraki savunma stratejilerinin belirlenmesi mümkün hale gelir.