Linux Forensics
Last updated
Last updated
Dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için Trickest kullanın. Bugün Erişim Alın:
Öncelikle, üzerinde iyi bilinen ikili dosyalar ve kütüphaneler bulunan bir USB'ye sahip olmanız önerilir (sadece ubuntu alıp /bin, /sbin, /lib, ve /lib64 klasörlerini kopyalayabilirsiniz), ardından USB'yi bağlayın ve bu ikili dosyaları kullanmak için ortam değişkenlerini değiştirin:
Bir kez sistemi iyi ve bilinen ikili dosyaları kullanacak şekilde yapılandırdıktan sonra bazı temel bilgileri çıkarmaya başlayabilirsiniz:
Temel bilgileri elde ederken, garip şeyler için kontrol etmelisiniz:
Root süreçleri genellikle düşük PID'lerle çalışır, bu yüzden büyük bir PID ile bir root süreci bulursanız şüphelenebilirsiniz.
/etc/passwd
içinde bir shell'i olmayan kullanıcıların kayıtlı girişlerini kontrol edin.
Shell'i olmayan kullanıcılar için /etc/shadow
içinde şifre hash'lerini kontrol edin.
Çalışan sistemin belleğini elde etmek için LiME kullanmanız önerilir. Bunu derlemek için, kurban makinesinin kullandığı aynı çekirdek ile çalışmalısınız.
Kurban makinesine LiME veya başka bir şey yükleyemeyeceğinizi unutmayın, çünkü bu makinede birçok değişiklik yapacaktır.
Bu nedenle, eğer aynı Ubuntu sürümüne sahipseniz apt-get install lime-forensics-dkms
kullanabilirsiniz.
Diğer durumlarda, LiME dosyasını github'dan indirmeniz ve doğru çekirdek başlıkları ile derlemeniz gerekir. Kurban makinesinin tam çekirdek başlıklarını elde etmek için, sadece /lib/modules/<kernel version>
dizinini makinenize kopyalayabilir ve ardından bunları kullanarak LiME'yi derleyebilirsiniz:
LiME 3 formatı destekler:
Ham (her segment bir araya getirilmiş)
Doldurulmuş (ham ile aynı, ancak sağ bitlerde sıfırlarla)
Lime (meta verilerle önerilen format)
LiME ayrıca dökümü ağ üzerinden göndermek için de kullanılabilir, bunu yapmak için şöyle bir şey kullanabilirsiniz: path=tcp:4444
Öncelikle, sistemi kapatmanız gerekecek. Bu her zaman bir seçenek değildir çünkü bazen sistem, şirketin kapatmayı göze alamayacağı bir üretim sunucusu olabilir.
Sistemi kapatmanın 2 yolu vardır, bir normal kapatma ve bir "fişi çekme" kapatması. İlk yöntem, işlemlerin normal şekilde sonlanmasına ve dosya sisteminin senkronize edilmesine izin verir, ancak aynı zamanda olası kötü amaçlı yazılımın delilleri yok etmesine de olanak tanır. "Fişi çekme" yaklaşımı, biraz bilgi kaybı taşıyabilir (bilgilerin çoğu kaybolmayacak çünkü zaten belleğin bir görüntüsünü aldık) ve kötü amaçlı yazılımın bununla ilgili bir şey yapma fırsatı olmayacaktır. Bu nedenle, eğer kötü amaçlı yazılım olabileceğinden şüpheleniyorsanız, sistemde sync
komutunu çalıştırın ve fişi çekin.
Bilgisayarınızı davayla ilgili herhangi bir şeye bağlamadan önce, bunun sadece okunur olarak bağlanacağından emin olmanız önemlidir, böylece herhangi bir bilgiyi değiştirmemiş olursunuz.
Veri olmayan bir disk görüntüsünü görüntüleme.
Dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için Trickest kullanın. Bugün Erişim Alın:
Linux, potansiyel olarak sorunlu dosyaları tespit etmek için kritik olan sistem bileşenlerinin bütünlüğünü sağlamak için araçlar sunar.
RedHat tabanlı sistemler: Kapsamlı bir kontrol için rpm -Va
kullanın.
Debian tabanlı sistemler: İlk doğrulama için dpkg --verify
kullanın, ardından debsums | grep -v "OK$"
(önce debsums
'ı apt-get install debsums
ile yükledikten sonra) ile herhangi bir sorunu tespit edin.
Kötü amaçlı yazılımları bulmak için faydalı olabilecek araçlar hakkında bilgi edinmek için aşağıdaki sayfayı okuyun:
Debian ve RedHat sistemlerinde yüklenmiş programları etkili bir şekilde aramak için sistem günlüklerini ve veritabanlarını, yaygın dizinlerde manuel kontrollerle birleştirmeyi düşünün.
Debian için, paket yüklemeleri hakkında bilgi almak için /var/lib/dpkg/status
ve /var/log/dpkg.log
dosyalarını kontrol edin, belirli bilgileri filtrelemek için grep
kullanın.
RedHat kullanıcıları, yüklenmiş paketleri listelemek için rpm -qa --root=/mntpath/var/lib/rpm
ile RPM veritabanını sorgulayabilir.
Bu paket yöneticileri dışında manuel olarak yüklenmiş yazılımları ortaya çıkarmak için /usr/local
, /opt
, /usr/sbin
, /usr/bin
, /bin
ve /sbin
gibi dizinleri keşfedin. Bilinen paketlerle ilişkilendirilmemiş çalıştırılabilir dosyaları tanımlamak için dizin listelemelerini sistem özel komutlarıyla birleştirerek tüm yüklenmiş programlar için aramanızı geliştirin.
Dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için Trickest kullanın. Bugün Erişim Alın:
/tmp/exec'ten çalıştırılan ve ardından silinen bir süreci hayal edin. Onu çıkarmak mümkündür.
Kötü amaçlı yazılımın bir hizmet olarak kurulabileceği yollar:
/etc/inittab: rc.sysinit gibi başlatma betiklerini çağırır, daha sonra başlatma betiklerine yönlendirir.
/etc/rc.d/ ve /etc/rc.boot/: Hizmet başlatma betiklerini içerir, ikincisi daha eski Linux sürümlerinde bulunur.
/etc/init.d/: Başlatma betiklerini depolamak için Debian gibi belirli Linux sürümlerinde kullanılır.
Hizmetler, Linux varyantına bağlı olarak /etc/inetd.conf veya /etc/xinetd/ aracılığıyla da etkinleştirilebilir.
/etc/systemd/system: Sistem ve hizmet yöneticisi betikleri için bir dizin.
/etc/systemd/system/multi-user.target.wants/: Çok kullanıcılı çalışma seviyesinde başlatılması gereken hizmetlere bağlantılar içerir.
/usr/local/etc/rc.d/: Özel veya üçüncü taraf hizmetler için.
~/.config/autostart/: Kullanıcıya özgü otomatik başlatma uygulamaları için, kullanıcı hedefli kötü amaçlı yazılımlar için bir saklanma yeri olabilir.
/lib/systemd/system/: Yüklenmiş paketler tarafından sağlanan sistem genelindeki varsayılan birim dosyaları.
Kötü amaçlı yazılım tarafından genellikle rootkit bileşenleri olarak kullanılan Linux çekirdek modülleri, sistem önyüklemesi sırasında yüklenir. Bu modüller için kritik dizinler ve dosyalar şunlardır:
/lib/modules/$(uname -r): Çalışan çekirdek sürümü için modülleri tutar.
/etc/modprobe.d: Modül yüklemeyi kontrol etmek için yapılandırma dosyalarını içerir.
/etc/modprobe ve /etc/modprobe.conf: Küresel modül ayarları için dosyalar.
Linux, kullanıcı girişi sırasında programları otomatik olarak çalıştırmak için çeşitli dosyalar kullanır, bu da kötü amaçlı yazılımları barındırabilir:
/etc/profile.d/*, /etc/profile, ve /etc/bash.bashrc: Herhangi bir kullanıcı girişi için çalıştırılır.
~/.bashrc, ~/.bash_profile, ~/.profile, ve ~/.config/autostart: Kullanıcıya özgü dosyalar, giriş yaptıklarında çalışır.
/etc/rc.local: Tüm sistem hizmetleri başlatıldıktan sonra çalışır, çok kullanıcılı bir ortama geçişin sonunu işaret eder.
Linux sistemleri, kullanıcı etkinliklerini ve sistem olaylarını çeşitli günlük dosyaları aracılığıyla takip eder. Bu günlükler, yetkisiz erişimi, kötü amaçlı yazılım enfeksiyonlarını ve diğer güvenlik olaylarını tanımlamak için kritik öneme sahiptir. Anahtar günlük dosyaları şunlardır:
/var/log/syslog (Debian) veya /var/log/messages (RedHat): Sistem genelindeki mesajları ve etkinlikleri yakalar.
/var/log/auth.log (Debian) veya /var/log/secure (RedHat): Kimlik doğrulama girişimlerini, başarılı ve başarısız girişleri kaydeder.
İlgili kimlik doğrulama olaylarını filtrelemek için grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log
komutunu kullanın.
/var/log/boot.log: Sistem başlatma mesajlarını içerir.
/var/log/maillog veya /var/log/mail.log: E-posta sunucusu etkinliklerini kaydeder, e-posta ile ilgili hizmetleri takip etmek için yararlıdır.
/var/log/kern.log: Hata ve uyarılar da dahil olmak üzere çekirdek mesajlarını saklar.
/var/log/dmesg: Aygıt sürücü mesajlarını tutar.
/var/log/faillog: Başarısız giriş girişimlerini kaydeder, güvenlik ihlali soruşturmalarına yardımcı olur.
/var/log/cron: Cron işlerinin yürütülmelerini kaydeder.
/var/log/daemon.log: Arka plan hizmeti etkinliklerini takip eder.
/var/log/btmp: Başarısız giriş girişimlerini belgeler.
/var/log/httpd/: Apache HTTPD hata ve erişim günlüklerini içerir.
/var/log/mysqld.log veya /var/log/mysql.log: MySQL veritabanı etkinliklerini kaydeder.
/var/log/xferlog: FTP dosya transferlerini kaydeder.
/var/log/: Burada beklenmedik günlükleri her zaman kontrol edin.
Linux sistem günlükleri ve denetim alt sistemleri, bir ihlal veya kötü amaçlı yazılım olayında devre dışı bırakılabilir veya silinebilir. Çünkü Linux sistemlerindeki günlükler genellikle kötü niyetli etkinlikler hakkında en yararlı bilgileri içerir, saldırganlar bunları düzenli olarak siler. Bu nedenle, mevcut günlük dosyalarını incelerken, silinme veya müdahale belirtisi olabilecek boşluklar veya düzensiz girişler aramak önemlidir.
Linux, her kullanıcı için bir komut geçmişi tutar, şu dosyalarda saklanır:
~/.bash_history
~/.zsh_history
~/.zsh_sessions/*
~/.python_history
~/.*_history
Ayrıca, last -Faiwx
komutu kullanıcı girişlerinin bir listesini sağlar. Bilinmeyen veya beklenmedik girişler için kontrol edin.
Ek ayrıcalıklar verebilecek dosyaları kontrol edin:
Beklenmedik kullanıcı ayrıcalıkları verilmiş olabileceğinden /etc/sudoers
dosyasını gözden geçirin.
Beklenmedik kullanıcı ayrıcalıkları verilmiş olabileceğinden /etc/sudoers.d/
dosyasını gözden geçirin.
Herhangi bir olağandışı grup üyeliği veya izinleri tanımlamak için /etc/groups
dosyasını inceleyin.
Herhangi bir olağandışı grup üyeliği veya izinleri tanımlamak için /etc/passwd
dosyasını inceleyin.
Bazı uygulamalar ayrıca kendi günlüklerini oluşturur:
SSH: Yetkisiz uzaktan bağlantılar için ~/.ssh/authorized_keys ve ~/.ssh/known_hosts dosyalarını inceleyin.
Gnome Masaüstü: Gnome uygulamaları aracılığıyla yakın zamanda erişilen dosyalar için ~/.recently-used.xbel dosyasını kontrol edin.
Firefox/Chrome: Şüpheli etkinlikler için ~/.mozilla/firefox veya ~/.config/google-chrome dizinlerinde tarayıcı geçmişi ve indirmeleri kontrol edin.
VIM: Erişim sağlanan dosya yolları ve arama geçmişi gibi kullanım detayları için ~/.viminfo dosyasını gözden geçirin.
Open Office: Kompromize olmuş dosyaları gösterebilecek yakın tarihli belge erişimlerini kontrol edin.
FTP/SFTP: Yetkisiz olabilecek dosya transferleri için ~/.ftp_history veya ~/.sftp_history dosyalarını gözden geçirin.
MySQL: Yetkisiz veritabanı etkinliklerini ortaya çıkarabilecek yürütülen MySQL sorguları için ~/.mysql_history dosyasını araştırın.
Less: Görüntülenen dosyalar ve yürütülen komutlar dahil olmak üzere kullanım geçmişi için ~/.lesshst dosyasını analiz edin.
Git: Depolardaki değişiklikler için ~/.gitconfig ve proje .git/logs dosyalarını inceleyin.
usbrip, USB olay geçmişi tabloları oluşturmak için Linux günlük dosyalarını (/var/log/syslog*
veya /var/log/messages*
dağıtıma bağlı olarak) ayrıştıran saf Python 3 ile yazılmış küçük bir yazılımdır.
Kullanılan tüm USB'leri bilmek ilginçtir ve "ihlal olaylarını" bulmak için yetkilendirilmiş bir USB listesine sahip olursanız daha faydalı olacaktır (o listedeki USB'lerin dışındaki USB'lerin kullanımı).
Daha fazla örnek ve bilgi için github'ı ziyaret edin: https://github.com/snovvcrash/usbrip
Dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için Trickest kullanın. Bugün Erişim Alın:
/etc/passwd, /etc/shadow ve güvenlik günlüklerini inceleyin; olağandışı isimler veya bilinen yetkisiz olaylarla yakın zamanda oluşturulmuş veya kullanılmış hesaplar arayın. Ayrıca, olası sudo brute-force saldırılarını kontrol edin. Ayrıca, kullanıcılara verilen beklenmedik ayrıcalıklar için /etc/sudoers ve /etc/groups gibi dosyaları kontrol edin. Son olarak, şifresiz veya kolay tahmin edilebilen şifreleri olan hesapları arayın.
Kötü amaçlı yazılım olaylarını araştırırken, dosya sisteminin yapısı bilgi kaynağı olarak kritik öneme sahiptir; olayların sırasını ve kötü amaçlı yazılımın içeriğini ortaya çıkarır. Ancak, kötü amaçlı yazılım yazarları bu analizi engellemek için dosya zaman damgalarını değiştirmek veya veri depolamak için dosya sisteminden kaçınmak gibi teknikler geliştirmektedir.
Bu anti-forensic yöntemlere karşı koymak için:
Olay zaman çizelgelerini görselleştirmek için Autopsy gibi araçlar kullanarak kapsamlı bir zaman çizelgesi analizi yapın veya Sleuth Kit'in mactime
aracını kullanarak detaylı zaman çizelgesi verileri elde edin.
Sistem $PATH'inde beklenmedik betikleri araştırın; bu, saldırganlar tarafından kullanılan shell veya PHP betiklerini içerebilir.
Atypik dosyalar için /dev
'i inceleyin; bu genellikle özel dosyalar içerir, ancak kötü amaçlı yazılımla ilgili dosyalar da barındırabilir.
Kötü amaçlı içeriği gizleyebilecek ".. " (nokta nokta boşluk) veya "..^G" (nokta nokta kontrol-G) gibi isimlere sahip gizli dosyalar veya dizinler arayın.
Setuid root dosyalarını tanımlayın; komut: find / -user root -perm -04000 -print
Bu, saldırganlar tarafından kötüye kullanılabilecek yükseltilmiş izinlere sahip dosyaları bulur.
Kütük tablolarındaki silme zaman damgalarını gözden geçirin; bu, kök kitleri veya trojanların varlığını gösterebilecek kitlesel dosya silme işlemlerini tespit etmek için kullanılabilir.
Bir kötü amaçlı dosya tespit edildikten sonra yanındaki ardışık inode'ları inceleyin; çünkü bunlar birlikte yerleştirilmiş olabilir.
Son zamanlarda değiştirilmiş dosyalar için yaygın ikili dizinleri (/bin, /sbin) kontrol edin; çünkü bunlar kötü amaçlı yazılım tarafından değiştirilmiş olabilir.
Bir saldırganın dosyaları meşru göstermek için zamanı değiştirebileceğini, ancak inode'u değiştiremeyeceğini unutmayın. Eğer bir dosyanın, aynı klasördeki diğer dosyalarla aynı zamanda oluşturulup değiştirildiğini gösteriyorsa, ancak inode beklenmedik şekilde büyükse, o zaman o dosyanın zaman damgaları değiştirilmiştir.
Dosya sistemi sürümlerini karşılaştırmak ve değişiklikleri belirlemek için basitleştirilmiş git diff
komutlarını kullanıyoruz:
Yeni dosyaları bulmak için, iki dizini karşılaştırın:
Değiştirilmiş içerik için, belirli satırları göz ardı ederek değişiklikleri listeleyin:
Silinmiş dosyaları tespit etmek için:
Filtre seçenekleri (--diff-filter
), eklenen (A
), silinen (D
) veya değiştirilen (M
) dosyalar gibi belirli değişikliklere daraltmaya yardımcı olur.
A
: Eklenen dosyalar
C
: Kopyalanan dosyalar
D
: Silinen dosyalar
M
: Değiştirilen dosyalar
R
: Yeniden adlandırılan dosyalar
T
: Tür değişiklikleri (örneğin, dosya ile symlink arasında)
U
: Birleştirilmemiş dosyalar
X
: Bilinmeyen dosyalar
B
: Bozuk dosyalar
Kitap: Linux Sistemleri için Kötü Amaçlı Yazılım Adli Bilişim Alan Rehberi
Trickest kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin. Bugün Erişim Alın:
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
AWS Hacking öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)