İlk 15 dakika
canlı sistem triyajı — Tüm çıktıları `exec > >(tee -a /cases/$(hostname)-triage-$(date +%Y%m%d_%H%M%S).log) 2>&1` ile kaydet; `uname -a; uptime; id; who; w; last -10 -F` ile sistem durumunu, `ss -tunap` ile aktif bağlantıları, `ps auxf` ile süreç ağacını belgele
Silinmiş ama çalışan ikili tespiti
`ls -la /proc/*/exe 2>/dev/null | grep "(deleted)"` ile fileless/rootkit belirtisini kontrol et; pozitif sonuç root-level kompromis sinyalidir ve eskalasyon gerektirir
Auth.log / secure triyajı
Ubuntu: `/var/log/auth.log`; RHEL: `/var/log/secure`; `grep "Accepted" /var/log/auth.log | awk '{print $1,$2,$3,$9,$11}' | sort | uniq -c | sort -rn` ile başarılı girişleri; `grep "Failed password\|Invalid user" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -20` ile brute force kaynaklarını çıkar
Auditd kalıcılık sorguları
`ausearch -k cron_modify --interpret 2>/dev/null | tail -30` ile cron değişikliği, `ausearch -k systemd_unit_modify --interpret 2>/dev/null | tail -30` ile systemd değişikliği, `ausearch -k ssh_key_modify --interpret 2>/dev/null | tail -20` ile SSH key değişikliği, `ausearch -k ldso_preload --interpret 2>/dev/null` ile LD_PRELOAD yazımını sorgula
Journald triyajı
`journalctl --since "24 hours ago" -p err..emerg --no-pager | tail -50` ile hata düzeyinde olayları; `journalctl _COMM=sudo --since "24 hours ago" --no-pager` ile sudo kullanımını; `journalctl --list-boots` ile önceki yeniden başlatmaları kontrol et
Cron kalıcılık triyajı
`for user in $(cut -f1 -d: /etc/passwd); do f="/var/spool/cron/crontabs/$user"; [ -f "$f" ] && echo "USER $user:" && cat "$f"; done` ile kullanıcı crontab'larını; `ls -la /etc/cron.d/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/` ile sistem cron dosyalarını; `find /etc/cron* /var/spool/cron -type f -newer /etc/passwd 2>/dev/null` ile son eklenen cron dosyalarını kontrol et — Ubuntu crontab yolu `/var/spool/cron/crontabs/<kullanıcı>`, RHEL `/var/spool/cron/<kullanıcı>`
Systemd kalıcılık triyajı
`systemctl list-unit-files --type=service --state=enabled` ile etkin servisleri listele; `find /etc/systemd /usr/lib/systemd ~/.config/systemd -name "*.service" -o -name "*.timer" 2>/dev/null | xargs -I{} stat --format="%n %y" {} 2>/dev/null | sort -k2` ile son değiştirilen unit dosyalarını belirle; `ExecStart` alanı `/tmp`, `/dev/shm` veya gizli dizini gösteriyorsa güçlü anomali
Kabuk başlatma dosyaları triyajı
`find /home /root -maxdepth 2 \( -name ".bashrc" -o -name ".bash_profile" -o -name ".profile" -o -name ".zshrc" -o -name ".zshenv" \) -newer /etc/passwd 2>/dev/null` ile son değişen başlatma dosyalarını bul; içerik analizi için `curl | bash`, `wget -O- | sh`, base64 decode zincirleri ve `LD_PRELOAD=` atamaları aradığında yüksek öncelikli anomali
SSH authorized_keys triyajı
`find /home /root -name "authorized_keys" 2>/dev/null | while read f; do echo "=== $f ==="; stat "$f"; cat "$f"; done` ile tüm authorized_keys dosyalarını; `find /home /root -name "authorized_keys" -newer /etc/passwd 2>/dev/null` ile son eklenen anahtar dosyalarını kontrol et; saldırganlar `~/.ssh/config` içine `ProxyCommand` da ekleyebilir
LD_PRELOAD triyajı
`cat /etc/ld.so.preload 2>/dev/null` ile dosya varlığı ve içeriğini kontrol et — dosya normalde boş veya mevcut olmamalıdır; `/etc/ld.so.preload` root yetkisi gerektirir ve tüm süreçleri (setuid dahil) etkiler; `LD_PRELOAD` ortam değişkeni setuid ikililerinde glibc tarafından yoksayılır ancak `/etc/ld.so.preload` bu kısıtlamaya tabi değildir
SUID / capability triyajı
`find / -type f \( -perm -4000 -o -perm -2000 \) -not -path "/proc/*" 2>/dev/null | sort` ile tüm SUID/SGID dosyaları; `find / -type f -perm -4000 -newer /etc/passwd 2>/dev/null` ile son eklenen SUID dosyaları; `getcap -r / 2>/dev/null | grep -v "^/proc"` ile tehlikeli capability setleri (`cap_setuid+ep`, `cap_sys_admin+ep`, `cap_dac_read_search+ep`) listele
Hesap ve yetki analizi
`grep -v "nologin\|false\|sync\|shutdown\|halt" /etc/passwd | awk -F: '{print $1, $3, $7}'` ile giriş shell'i olan kullanıcıları; `cat /etc/sudoers | grep -v "^#" | grep -v "^$"` ve `cat /etc/sudoers.d/*` ile NOPASSWD girişlerini; `stat /etc/passwd /etc/shadow /etc/sudoers 2>/dev/null | grep -E "File:|Modify:"` ile dosya değişim zamanlarını kontrol et
Bash_history ve editor geçmişleri
`find /home /root -name ".*history" 2>/dev/null | xargs ls -la 2>/dev/null` ile geçmiş dosyalarının boyutunu; `find /home /root \( -name ".viminfo" -o -name ".lesshst" -o -name ".mysql_history" -o -name ".python_history" \) 2>/dev/null` ile saldırganın gözden kaçırdığı ikincil iz kaynaklarını incele
Log bütünlüğü kontrolü
`find /var/log -type f -size 0 2>/dev/null | grep -v ".gz"` ile sıfırlanan log dosyalarını; `journalctl --verify 2>&1 | grep -i "error\|fail\|missing\|gap"` ile journald bütünlük boşluklarını; `ausearch -k log_tampering --interpret 2>/dev/null | tail -20` ile auditd log silme girişimlerini sorgula
Kompromis karar kapısı
Şu bulgulardan ikisi veya fazlası varsa Contain aşamasına geç: bilinmeyen authorized_keys girişi, yeni/değiştirilmiş cron/systemd unit, .bashrc/.profile'de şüpheli komut, bilinmeyen SUID veya yeni capability, /tmp / /dev/shm'de çalıştırılabilir dosya, log temizleme kanıtı, saldırı penceresinde şüpheli ağ bağlantısı