
pyelftools ve rich kullanılarak geliştirilmiş, statik bir ELF analiz aracıdır. Amaç bir binary dosyasını çalıştırmadan statik olarak inceleyip header, section, segment, sembol ve dynamic tag bilgilerini okunabilir bir formatta terminale basmak veya JSON olarak dışa aktarmaktır. checksec ve readelf benzeri araçlarda bulunan bazı güvenlik kontrolleri (NX, PIE, RELRO, Stack Canary vb.) araca da eklenmiştir.
Amaç
Bu proje ELF dosya yapısını anlamak ve statik analiz süreçlerini detaylandırıp hızlandırmak amacıyla geliştirilmiştir.
Kullanılan Teknolojiler
- Python 3
- pyelftools
- rich
Kurulum
pip install -r requirements.txt
Kullanım
Standart terminal çıktısı
python3 zayoelf.py /bin/ls
Çıktıyı JSON formatında kaydetmek için:
python3 zayoelf.py /bin/ls --json rapor.json
Özellikler
- Dosya Bilgileri: MD5, SHA1, SHA256 özetleri, interpreter yolu, build-id ve ABI tag detayları.
- ELF Header: Class, endianness, type, entry point vb. temel başlık bilgileri.
- Güvenlik Mitigasyonları: PIE, NX, RELRO (Full/Partial/None), Stack Canary ve Stripped durumu.
- Dinamik Etiketler: RPATH, RUNPATH, SONAME ve DT_NEEDED (bağımlılık) bilgileri.
- Sembol İstatistikleri: Local/Global/Weak sayıları, İçe Aktarılan (Import) ve Dışa Aktarılan (Export) sembol ayrımı.
- Entropi Analizi: Section header’ların her biri için Shannon Entropy hesabı.
- Kritik Zafiyet Tespiti: Hem yazılabilir hem çalıştırılabilir olarak işaretlenmiş segmentler (RWX) ve section’lar (W+X) için özel uyarılar.
- String Çıkarımı: Binary içerisinde bulunan yazdırılabilir ASCII string’lerin çıkarımı.
- Şüpheli Import Taraması: Zararlı yazılımlarda sık kullanılan bazı libc fonksiyonlarının (system, ptrace, execve, socket vb.) sembol tablosunda bulunup bulunmadığının kontrolü.
Sınırlamalar
- Sadece statik analiz yapar, binary’yi ram üzerinde çalıştırmaz.
- Entropy hesabı section bazlı yapılmaktadır, tüm dosya için tek bir genel entropy değeri vermez.
- String çıkarımı basit bir regex ile yapılmaktadır;
GNU stringsaracının sunduğu tüm özellikleri sağlamaz. - Stripped (sembol tablosu silinmiş) binary’lerde sembol tabanlı bazı kontroller (örneğin stack canary tespiti) tam sonuç vermeyebilir.
Örnek
python3 zayoelf.py /bin/bash
Araç aşağıdaki bilgileri sırasıyla görüntüler:
- Dosya bilgisi ve Hash değerleri
- ELF Header
- Güvenlik Mitigasyonları (Checksec)
- Kritik Bulgular ve Uyarılar (Varsa)
- Sembol İstatistikleri
- Section ve Segment Tabloları
- Bağımlı Olunan Kütüphaneler
- Dikkat Çeken Import Fonksiyonları
- String Önizlemesi ve İstatistik Özeti