Thread Starter
#0
Günümüz dijital dünyasında web siteleri, siber saldırıların sık hedefi haline gelmiştir. Özellikle PHP tabanlı sistemlerde "shell" adı verilen kötü amaçlı scriptler, sunucuya sızmak için sıklıkla kullanılır. Bu tür zararlı yazılımların tespiti ve anında silinmesi, sitenizin güvenliği açısından kritik öneme sahiptir.
Bu yazımızda, siteye shell yüklendiği anda bunu tespit edip otomatik olarak silen bir güvenlik yazılımı geliştirmenin teknik detaylarını anlatacağız.
Bu kodu bir shell_guard.php dosyasına kaydettikten sonra her 5 dakikada bir çalışacak şekilde crontab’a ekleyin:
Bu yazımızda, siteye shell yüklendiği anda bunu tespit edip otomatik olarak silen bir güvenlik yazılımı geliştirmenin teknik detaylarını anlatacağız.
Shell Nedir?
Shell, saldırganların sunucu üzerinde tam yetki almasını sağlayan zararlı bir komut dosyasıdır. Genellikle şu amaçlarla kullanılır:- Dosya yükleme/indirme
- Veritabanı erişimi
- Yetkisiz kod çalıştırma
- Sunucuya arka kapı bırakma
Shell Tespit ve Otomatik Silme Sisteminin Temel Mantığı
Shell'leri tespit etmek için temel olarak aşağıdaki yöntemler kullanılır:| Yöntem | Açıklama |
|---|---|
| Dosya imzası kontrolü | Yaygın shell kodlarının hash, içerik ve isim kontrolleri |
| Kod analizi | eval, base64_decode, exec, system gibi fonksiyonların tespiti |
| Zaman ve konum takibi | Kullanıcının aktif olmadığı zamanlarda yüklenen dosyalar |
| Dosya yükleme izleme | FTP, HTTP veya dosya yöneticisi üzerinden gelen yeni dosyaları anında analiz etme |
Örnek PHP Shell Tespit Scripti
Aşağıdaki örnek PHP script,public_html dizinine yeni bir dosya yüklendiğinde içerik taraması yapar ve tehlikeli ifadeler bulursa dosyayı anında siler:CODE
123456789101112131415161718192021222324252627<?php
$scanDir = '/home/kullaniciadi/public_html/';
$suspiciousFunctions = ['eval', 'base64_decode', 'shell_exec', 'system', 'passthru', 'exec'];
function isShell($code) {
global $suspiciousFunctions;
foreach ($suspiciousFunctions as $func) {
if (stripos($code, $func) !== false) {
return true;
}
}
return false;
}
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($scanDir));
foreach ($files as $file) {
if ($file->isFile() && pathinfo($file, PATHINFO_EXTENSION) === 'php') {
$contents = file_get_contents($file);
if (isShell($contents)) {
unlink($file); // dosyayı sil
error_log("Shell silindi: " . $file, 3, "/var/log/shell_guard.log");
}
}
}
?>
Cron ile Otomatikleştirme
Bu kodu bir shell_guard.php dosyasına kaydettikten sonra her 5 dakikada bir çalışacak şekilde crontab’a ekleyin:
BASH
1*/5 * * * * php /home/kullaniciadi/shell_guard.php
Gelişmiş Özellikler ile Güvenliği Artırın
- E-posta uyarısı: Shell silindiğinde yöneticilere bildirim gönderin.
- Dosya yedeği alma: Silinen dosyayı karantinaya alın veya loglayın.
- Upload klasörleri özel takibi: /uploads/, /temp/, /cache/ gibi dizinlerde ayrı önlemler alın.
- Realtime monitoring (gerçek zamanlı izleme): inotify veya auditd gibi sistem araçları ile olay tabanlı izleme yapın (Linux sistemlerde).
[IMG width="249px" size="1050x1050"]https://i.hizliresim.com/a6d55tm.png[/IMG]