Selam, bugün biraz farklı bir şey denedim. Normal LKM yazmak yerine direkt eBPF ile kernel seviyesinde gizli işler çevirmeye çalıştım. Amaç basit: process hiding + syscall hooking ama tracepoint'ler üzerinden, module olarak görünmeden.
Asıl kurnazlık şu: normalde bpf_probe_write_user ile user-space'e yazmak yasak ama map'ler üzerinden veri taşıyıp, tail call ile zincir kurunca işler değişiyor. Özellikle x86_64 syscall tablosunu doğrudan patch'lemek yerine, tracepoint/raw_syscalls ile filtre koyunca tespit etmesi baya zorlaşıyor.
Bu kod parçası ile belirli PID'leri execve sırasında direkt öldürebiliyorsun. Tabii production'da map'i user-space'ten populate etmek lazım. Ayrıca bpf_override_return ile bazı syscall'ları tamamen bypass etmek de mümkün ama kernel version 5.10+ şart.
Denemelerimde Falco ve Tracee ikisi de bunu yakalayamadı (default config ile). Sadece sys_enter_execve tracepoint'ini dinleyen custom bir eBPF programı ile tespit edilebiliyor.
Kısaca: eBPF ile yazılan şeyler artık sadece monitoring için değil, gerçekten stealth operasyonlarda da kullanılmaya başlandı. İlerleyen zamanda bu tarz "ebpf rootkit" örnekleri daha fazla göreceğiz gibi duruyor.
Asıl kurnazlık şu: normalde bpf_probe_write_user ile user-space'e yazmak yasak ama map'ler üzerinden veri taşıyıp, tail call ile zincir kurunca işler değişiyor. Özellikle x86_64 syscall tablosunu doğrudan patch'lemek yerine, tracepoint/raw_syscalls ile filtre koyunca tespit etmesi baya zorlaşıyor.
Hidden content - for more
Konuyu Görebilmeniz için "Beğenmeniz ve Yorum yapmaniz" Gerekir.
Denemelerimde Falco ve Tracee ikisi de bunu yakalayamadı (default config ile). Sadece sys_enter_execve tracepoint'ini dinleyen custom bir eBPF programı ile tespit edilebiliyor.
Kısaca: eBPF ile yazılan şeyler artık sadece monitoring için değil, gerçekten stealth operasyonlarda da kullanılmaya başlandı. İlerleyen zamanda bu tarz "ebpf rootkit" örnekleri daha fazla göreceğiz gibi duruyor.
Bu içeriği görmek için giriş yapın.
Son düzenleme: