Linux Forensics-1 ‘de investigation aşamalarını genel olarak tamamladık diyebiliriz.
Şimdi persistence kısımlarını tespit etmeye başlayabiliriz. Persistence mechanisms yani Kalıcılık mekanizmaları olarak bildiğiniz aşamanın amacı bir programın sistem yeniden başlatıldıktan sonra yine de hayatta kalmaya devam edebilmesidir.
Cron job’lar, çalışan servisler ve processler, crontablar,startup dosyaları kalıcılık mekanizmalarını nasıl tanımlayabileceğimizi bize göstercek kısımlar olacak.
cat /etc/crontab komutu, Linux sistemlerindeki cron servisinin yapılandırma dosyasının içeriğini görüntülemek için kullanılır. Cron, belirli aralıklarla veya belirli bir takvim programına göre otomatik olarak işlemleri çalıştıran bir zamanlanmış görev yöneticisidir. Aşagıdaki komut çıktısında görüldüğü gibi dosya, komutun çalışması gereken zaman aralığı, komutu çalıştıran kullanıcı adı ve komutun kendisi hakkında bilgiler içermektedir. Ayrıca çalıştırılacak komut dosyalarını da içerebilir, burada çalıştırılması gereken komut dosyası diske yerleştirilecek ve onu çalıştırma komutu bu dosyaya eklenecektir.
Bir saldırgan bir sistemde cron jobu veya başka türden kalıcılık mekanizmalarını inital access dahi kullanabilirler. Örneğin, belirli aralıklarla çalışan bir cron job aracılığıyla geri bağlantı noktalarını açık tutabilirler. Sistemdeki durumu düzenli olarak kontrol etmek için kalıcı görevler bırakabilirler. Bu, sistemdeki değişiklikleri izlemek ve gerektiğinde müdahale etmek için kullanılır.
Ayrıca çeşitli dizinlerde saklanan saatlik, günlük, haftalık ve aylık komut dosyalarını görebilirsiniz:
ls -1d /etc/cron*
/etc/cron.d/
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.monthly/
/etc/crontab
/etc/cron.weekly/
Zararlı yazılımlarını sistemde saklamak ve gerektiğinde çalıştırmak için kullanılabilir. Örneğin, sistem yeniden başlatıldığında otomatik olarak çalışan bir backdoor oluşturabilirler.
Windows gibi, Linux’ta da her sistem önyüklemesinden sonra arka planda başlayacak ve çalışacak hizmetler kurulabilir. Service Startup’lar bu hizmetleri içermektedir. Hizmetlerin bir listesi /etc/init.d dizininde bulunabilir. ls ile görüntülenebilir.
Bir bash shell oluşturulduğunda, .bashrc dosyasında saklanan komutları çalıştırır. Bu dosya, gerçekleştirilecek eylemlerin başlangıç listesi olarak düşünülebilir. Bu nedenle kalıcılık aramak için iyi bir yer olabilir.
Bu bölüm, Bash kabuğunun geçmiş (history) ayarlarını belirler. HISTSIZE geçmişte saklanacak komut sayısını, HISTFILESIZE ise geçmişin kaydedileceği dosyanın boyutunu belirtir.( Renkli Prompt Ayarları vs gereksiz olabilir, önemli datayı direk dosya içinde farkedersiniz histfilesize gibi)
Sistem genelindeki ayarlar /etc/bash.bashrc ve /etc/profile dosyalarında saklanır, dolayısıyla bu dosyalara da batmak işe yarayabilir.
Evidence of Execution için ise Linux sistemlerde hangi programların yürütüldüğünü bilmek temel görevlerimizden biri olacaktır.
Sudo execution history’lerini kontrol etmekle başlanabilir.
cat /var/log/auth.log* |grep -i COMMAND|tail
komutu ile /var/log/auth.log dizinindeki tüm dosyaları (auth.log dosyalarının tüm sürümlerini) okuyarak, içerisinde “COMMAND” kelimesini içeren satırları filtreleyip ekrana yazdırmakta (grep -i COMMAND), ardından tail komutu ile bu çıktının en son kısımlarını görmeye çalışalım.,
Ve ayrıca bu çıktı ubuntu kullanıcısı tarafından sudo kullanılarak çalıştırılan komutları göstermekte.
Bash History sudo kullanılarak çalıştırılanlar dışındaki tüm komutlar bash geçmişinde saklanır. Her kullanıcının bash geçmişi, o kullanıcının ana klasöründe ayrı olarak saklanır. Bu nedenle bash geçmişini incelerken her kullanıcının home dizininden bash_history dosyasını almamız gerekiyor. Kök kullanıcıyı kullanarak çalıştırılan tüm komutları not etmek için kök kullanıcının bash geçmişini de incelemek önemlidir.
Bonus:
Saldırgan, sistemde çalıştığı komutları kaydeden Bash geçmişini manipüle edebilir. Bu dosya genellikle ~/.bash_history olarak bilinir. Saldırgan buraya bırakılan komutlarını, şifreleri veya önemli bilgileri gizlemek için düzenleme yapabilir.
Saldırgan, home dizini ve diğer sistem dizinlerinde gizli dosyalar veya dizinler oluşturabilir. Bu, iz bırakmalarını gizlemelerine yardımcı olabilir.
Saldırgan, kötü amaçlı yazılım veya backdoorları yürütmek için sistemde mevcut olan mevcut yürütülebilir dosyaları kullanabilir. Bu dosyalar genellikle sistemdeki PATH dizinlerinde bulunur.
Saldırgan, sistemdeki log dosyalarını manipüle edebilir veya silerek iz bırakmasını engelleyebilir. Ancak, bu manipülasyonlar da iz bırakabilir.
Saldırgan, kullanıcının shell yapılandırma dosyalarını (~/.bashrc, ~/.bash_profile, vb.) değiştirerek veya kötü amaçlı kod ekleyerek iz bırakabilir.
Saldırgan, gizli ağ bağlantı noktaları ve portları kullanarak iz bırakmamaya çalışabilir. Bu, güvenlik duvarlarını atlatmak ve tespit edilmemek amacına hizmet edebilir.
Bir diğer önemli konu audit loglarıdır.
Audit logları” veya “denetim günlükleri,” bir bilgisayar sisteminde gerçekleşen olayların kaydedildiği günlük dosyalarıdır. Bu loglar, sistemdeki kullanıcı etkileşimlerinden, dosya erişimlerine, ağ etkileşimlerinden, yetkilendirme değişikliklerine kadar bir dizi olayı içerebilir.
ausearch –input audit.log
Örneğin yukarıdaki komut
inux sistemlerinde kullanılan “auditd” servisi tarafından oluşturulan denetim günlüğü dosyasını (audit.log) araştırmak için kullanılır. Bu komut, güvenlik olaylarını izlemek ve incelemek amacıyla sistem üzerinde yapılan denetim kayıtlarını sorgulamak için kullanılır.
Bu komutun çıktısı, audit.log
dosyasındaki denetim kayıtlarını filtreleyerek ve belirtilen arama kriterlerine göre eşleşen kayıtları göstererek bilgi sağlar. --input
seçeneği, belirli bir günlük dosyasını belirtmek için kullanılır.
Bu tür denetim kayıtları, sistemdeki kullanıcı etkinlikleri, dosya erişimleri, ağ etkileşimleri ve diğer güvenlik olayları hakkında bilgi içerir. Örneğin, başarısız oturum açma girişimleri, dosya izin değişiklikleri veya özel dosya/dizin erişimleri gibi olaylar bu kayıtlar arasında yer alabilir. ausearch
komutu, bu kayıtları daha okunabilir ve filtrelenmiş bir biçimde sunmayı amaçlar.
Bonus:
ausearch –input audit.log
ausearch –input audit.log –format text
aureport –input audit.log
Vim kullanılarak erişilen dosyalara bakmak yine önemli dokunulması gereken yerlerden olabilir:
Vim metin düzenleyicisi, Vim’de açılan dosyalara ilişkin günlükleri ana dizindeki .viminfo adlı dosyada saklar. Bu dosya, açılan dosyalar için komut satırı geçmişini, arama dizesi geçmişini içerir. .viminfo’yu açmak için yine cat kullanabiliriz.
Dosya içinde Viminfo Version,Encoding Bilgisi, hlsearch Ayarı,Command Line History,File Marks,jumplist gibi datalar toplayabillirsiniz.
Ve son olarak Log dosyaları genel aktivitelere ilişkin bilgi toplayacagımız en önemli dosyalar olacaktır. Loglar genelde /var/log altında tutulur demiştik. Syslog ilk akla gelen sistem günlükleridir.Bu dosyalar, genellikle sistemin günlük olaylarını, hataları ve diğer önemli bilgileri kaydeden standart syslogd servisi tarafından üretilir.
Unix ve Linux gibi Unix benzeri işletim sistemlerinde geleneksel kayıt sistemi syslog’dur. Syslog, ilk olarak 1980’lerin başında sendmail yazılım paketi için yazılmıştı ve o zamandan beri BT altyapısı için fiili günlük kaydı standardı haline geldi.
Sistem günlüğü genellikle network soketleri (UDP bağlantı noktası 514), yerel adlandırılmış kanallar(local named pipes) veya syslog library calls üzerinden gelen paketler gibi birden fazla kaynaktan gelen günlük iletilerini dinleyen bir arka plan programından (collector olarak da bilinir) oluşur.

Sistem günlüğü mimarisi ve ağ protokolü RFC 5424’te tanımlanmıştır.
Linux dağıtımları tarihsel olarak yerel sistem günlüğü için çeşitli syslog uygulamalarından birini içermiştir; en yaygın olanı rsyslog’dur.
Ancak, sistem yapılandırmasına ve kullanılan log yönetimi araçlarına bağlı olarak bu dosyaların isimleri ve içerikleri değişebilir. Örneğin, bazı sistemler auth.log yerine secure dosyasını kullanabilir.
kern.log:
Bu dosya, çekirdek (kernel) ile ilgili mesajları içerir. Çekirdek düzeyindeki hatalar, uyarılar ve olaylar bu dosyada kaydedilir.
Yolu: /var/log/kern.log
daemon.log:
Sistemde çalışan arka plandaki hizmetlerin logları bu dosyada bulunur.
Yolu: /var/log/daemon.log
mail.log:
Posta (mail) sunucusu ile ilgili loglar bu dosyada yer alabilir.
Yolu: /var/log/mail.log
lastlog:
Bu dosya, son giriş yapan kullanıcıların bilgilerini içerir.
Yolu: /var/log/lastlog
Syslog gibi dosyalar çok büyük oldugunu yine head,less,more gibi ifadeler ile anlamlı hale getirip görünürlükte kısıtlamalar yapabilirsiniz.
Yukarıdaki terminal sistem saatini, sistem adını, günlüğü gönderen işlemi [işlem kimliğini] ve günlüğün ayrıntılarını gösterir. Yukarıdaki günlüklerde, diğer bazı etkinliklerin dışında birkaç cron işinin yürütüldüğünü görebiliriz. Sistem günlüğünden sonra bir yıldız işareti (*) görebiliriz. Bu, döndürülmüş günlükleri de içerecektir. Zaman geçtikçe Linux makinesi eski günlükleri syslog.1, syslog.2 vb. dosyalara dönüştürür, böylece syslog dosyası çok büyük olmaz. Tüm sistem günlüklerini aramak için yıldız işareti(*) joker karakterini kullanırız.
Kimlik doğrulama günlüklerini önceki görevlerde zaten tartışmıştık. Kimlik doğrulama günlükleri, kullanıcılar ve kimlik doğrulamayla ilgili günlükler hakkında bilgiler içerir. Aşağıdaki terminal kimlik doğrulama günlüklerinin bir örneğini gösterir.
auth.log*
Yukarıda logun yeni bir grup oluşturulması, yeni bir kullanıcı oluşturulması ve kullanıcının farklı gruplara eklenmesi ile ilgili bilgilerin saklandığını görebiliyoruz.
Third-party logları için ise, Syslog ve kimlik doğrulama loglarına benzer şekilde, /var/log/ dizini web sunucusu(Apache veya Nginx gibi), veritabanı(MySQL veya PostgreSQL gibi) veya dosya paylaşım sunucusu(samba gibi) günlükleri gibi üçüncü taraf uygulamaların günlüklerini içerir. Bunları/var/log/ dizinine bakarak araştırabiliriz.
Örneğin yukarıdaki çıktıda samba’yı,openvpn’i görebiliyorsunuz.
Böylelikle genel olarak Linux tabanlı sistemlerde bir Incident yaşandıgında OS,account bilgileri toplama kısmından evidence of execution aşamalarına kadar syslog incelemelerine kadar dokunabileceğiniz bir çok yeri görmüş oldunuz.
Referans:

- https://linuxhandbook.com/linux-directory-structure/
- https://reconshell.com/wp-content/uploads/2021/11/Practical-Linux-Forensics-A-Guide-for-Digital-Investigators.pdf