Tespit Problemi
Meşru Linux yazılımları da görev adını değiştirir, bağlantı açar, shell başlatır ve debug arayüzlerini kullanır. Tek bir olağandışı syscall’ı zararlı kararı saymak tespit değil gürültü üretir. ZayoSentry; zaman, PID bağlamı ve bağımsız davranış sinyalleri korelasyonu destekleyene kadar kernel olaylarını nötr tutar.
Bağlamsız tespit gürültüdür.
Mimari
Kernel katmanı gerçekleri raporlar. C/libbpf sensörü ring-buffer olaylarını okurken Python katmanı süreç bağlamını ekler, sinyalleri korele eder, uygun durumda ZayoELF’i çalıştırır ve olay raporunu yazar.
Kernel Telemetrisi
Sensör davranış primitive’lerini açığa çıkarır; kernel içinde bunları zararlı olarak etiketlemez. BPF ve C kullanıcı alanı kaynaklarından doğrulanan kapsam:
| TRACEPOINT / CALL | TELEMETRİ PRİMİTİFİ | BAĞLAM |
|---|---|---|
sched_process_exec | Süreç çalıştırma | Exec yaşam döngüsü ve çalıştırılabilir dosya yolu |
sched_process_exit | Süreç sonlanması | Çıkış kodu ve ölçülen çalışma süresi |
socket(AF_PACKET) | Paket socket’i | Ham paket görünürlüğü |
setsockopt(SO_ATTACH_FILTER) | Classic BPF filtresi | Socket filtresi bağlama |
prctl(PR_SET_NAME) | Süreç yeniden adlandırma | Görev adı değişikliği sinyali |
connect(AF_INET) | Dış bağlantı | IPv4 hedefi ve portu |
ptrace | Ptrace etkinliği | Debug veya injection bağlamı |
unlinkat | Kendini silme bağlamı | Silinmiş çalıştırılabilir dosya denetimi |
open / openat / openat2 | Kalıcılık yazımı | Yapılandırılmış başlangıç yollarına yazma erişimi |
Mevcut ağ hedefi telemetrisi yalnızca IPv4’tür. AF_PACKET kancası domain 17 socket oluşturmayı kaydeder; kullanıcı alanı çıktısı bunu raw-socket telemetrisi olarak tanımlar.
Bağlam Duyarlı Korelasyon
Kritik tespit için skorun ≥ 6 olması ve ya iki güçlü kategori ya da bir güçlü kategoriyle birlikte en az üç farklı puanlanan kategori gerekir. Her kategori PID bağlamına bir kez puan ekler; tekrarlanan zayıf olaylar sonucu şişiremez.
| KATEGORİ | SKOR | KALİTE |
|---|---|---|
persistence_write | +4 | strong |
raw_socket | +3 | strong |
writable_dir_execution | +3 | strong |
self_deletion | +3 | strong |
ptrace | +3 | strong |
bpf_socket_filter | +2 | medium |
suspicious_shell | +2 | medium |
abnormal_pid_file | +2 | medium |
process_renaming | +1 | weak |
outbound_connection | +1 | weak |
shell_execution | 0 | neutral |
memfd_execution | 0 | neutral |
readonly_temp_mount_execution | 0 | neutral |
Çalışma Modları
MODE 01
LIVE
Host eBPF sensörünü başlatır, sistem süreçlerindeki telemetriyi korele eder ve oturum bittiğinde Markdown olay raporu yazar.
MODE 02
SCAN
Tek hedef ELF’i izole container veya unshare fallback içinde çalıştırır, host sensörü çıktısını hedef süreç ağacına göre filtreler, ZayoELF çıktısını ekler ve karar raporu yazar.
+ ZAYOELF STATIC→CORRELATED REPORT
- Podman tercih edilir; Docker ve ardından unshare fallback’tir.
- Varsayılan ağ: none
- Salt okunur root filesystem ve salt okunur hedef bind mount
- 256 MB bellek, 100 PID, varsayılan 15 saniye timeout
- Container UID 10001 ile çalışır; bu kontroller maruziyeti azaltır ancak izolasyon garantisi değildir.
ZayoELF Entegrasyonu
ZayoELF bağımsız bir statik analiz projesi olarak kalır. ZayoSentry, Scan modunda dinamik çalıştırmadan önce hedef üzerinde host tarafında ZayoELF’i çalıştırır; korelasyonlu bir Live tespitinden sonra süreç backing file’ını da inceleyebilir. Sonuçlar ve SHA-256 metadata’sı olay kaydına eklenir.
ZAYOELF RAPORUNU OKU →Tespit Mantığı / ATT&CK Bağlamı
Kurallar raporlanan eylemlere ATT&CK bağlamı ekler. Bazı eşlemeler bilerek geniş veya birleşiktir; bunlar tam bir tekniğin gerçekleştiğinin kanıtı değil, raporlama bağlamıdır.
| KURAL BAĞLAMI | MITRE ATT&CK |
|---|---|
| Şüpheli shell çalıştırma | T1059 |
| Yazılabilir dizinden çalıştırma | T1204 / T1036 |
| Başlangıç betiği kalıcılığı | T1547.010 |
| Kendini silme | T1070.004 |
| Ptrace etkinliği | T1055 |
| AF_PACKET / BPF filtresi | T1040 |
| Süreç yeniden adlandırma | T1036.003 |
| Dış bağlantı | T1071 / T1090 |
Doğrulama
Kontrollü BPFDoor esinli fixture; yazılabilir dizinden çalıştırmanın ardından süreç yeniden adlandırma, AF_PACKET raw socket oluşturma, classic BPF filtresi bağlama ve IPv4 bağlantısını çalıştırır. Bu, ilgili davranış zincirinin doğrulamasıdır; tüm BPFDoor varyantlarının kapsandığı iddiası değildir.
readonly_temp_mount_execution+0process_renaming+1raw_socket+3bpf_socket_filter+2outbound_connection+1
Mühendislik Kararları
Salt okunur çalıştırma
Geçici yoldan çalıştırma, mount salt okunursa 0 puan alır; scan bind mount’u ve benzer bağlamlar bu kapsamdadır.
memfd
memfd tabanlı çalıştırılabilir dosya, masquerading olarak puanlanmak yerine nötr memfd execution’a normalize edilir.
Shell bağlamı
Shell çalıştırma 0 puanla başlar ve yalnızca aynı bağlam penceresinde güçlü kategori varsa +2 olur.
Kendini hariç tutma
Sensör, dashboard ve ZayoELF süreçleri geniş substring bastırması yerine PID ve tam ad eşleşmesiyle hariç tutulur.
Kısıtlar ve Gelecek Çalışmalar
- Metin/regex sensör arayüzünü yapılandırılmış NDJSON veya binary olay protokolüyle değiştirmek.
- Kurallar, garbage collection ve korelasyon davranışı için unit test ve CI eklemek.
- PID bağlamının yanında cgroup/container kimliği izlemek.
- Connect telemetrisini IPv6’ya genişletmek.
- Açık TID/TGID işleme ile thread kimliğini netleştirmek.
- Sensör overhead’ini ve olay throughput’unu ölçmek.
Proje Soy Ağacı
Proje önceki çalışmaların yerine geçmek yerine bir araştırma hattı üzerine kurulur: ATT&CK laboratuvarları tekrarlanabilir davranış çalışmalarını, ZayoELF ELF triyajını, Red Menshen/BPFDoor araştırması Linux tradecraft örneğini sağladı; ZayoSentry bu hatları telemetri ve tespit mühendisliğinde birleştirir.
Teknik Yığın / Kaynak
- KERNEL / SENSÖR
- eBPF · CO-RE · C · libbpf · ring buffer
- MOTOR
- Python · PyYAML · PID context · Markdown reports
- ANALİZ
- Podman / Docker / unshare · ZayoELF · pyelftools
- KAYNAK
- Sağlanan arşivde veya portföy verisinde doğrulanmış bir açık ZayoSentry kaynak URL’si bulunmadı.