Backdoor, Malware ve Zararlı Kod Tespiti
2 Ocak 2026 | 50 Kontrol Noktası | +20 Yeni
Bu rehber, web sitenize sızabilecek zararlı kodları (virüs, backdoor, shell) tespit etmenizi sağlar. Hacker'lar genellikle:
Aşağıdaki komutları düzenli olarak çalıştırarak sitenizi koruyabilirsiniz.
Bu taramalar sırasında bulunan şüpheli dosyaları hemen silmeyin! Önce içeriğini inceleyin, yedek alın ve emin olduktan sonra silin. Yanlışlıkla silinen sistem dosyaları siteyi çökertebilir.
Kategori 10-13: Variable function, Hex encoding, PHP Wrappers, Webshell patterns, Deserialization, Config manipulation, SEO spam, Advanced obfuscation
En yaygın backdoor pattern'i. Şifreli kod çalıştırır.
grep -r --include="*.php" -l "eval(base64_decode" /var/www/html --exclude-dir=vendor
Sistem komutları çalıştıran fonksiyonlar.
grep -r --include="*.php" -l "passthru\|shell_exec\|system\s*(" /var/www/html/public --exclude-dir=vendor
Kullanıcı girdisini doğrudan çalıştıran kod.
grep -r --include="*.php" -l '\$_\(REQUEST\|POST\|GET\).*eval\|eval.*\$_\(REQUEST\|POST\|GET\)' /var/www/html
PHP assert() fonksiyonu kod çalıştırabilir.
grep -r --include="*.php" "assert\s*(" /var/www/html/public --exclude-dir=vendor
Eski PHP exploit yöntemi.
grep -r --include="*.php" -l "create_function" /var/www/html --exclude-dir=vendor
Şifreli içeriği dosyaya yazan kod.
grep -r --include="*.php" -l "file_put_contents.*base64_decode" /var/www/html --exclude-dir=vendor
Dosya kopyalama/taşıma (hata gizleme ile).
grep -r --include="*.php" -l "@copy\|@rename\|@move" /var/www/html/public --exclude-dir=vendor
İzin değiştirme komutları.
grep -r --include="*.php" -l "chmod\|chown" /var/www/html/public --exclude-dir=vendor
Nokta ile başlayan gizli PHP dosyaları.
find /var/www/html -name ".*php" -o -name ".*.php" 2>/dev/null
453bbb9eb16f.php gibi rastgele isimler.
find /var/www/html/public -maxdepth 2 -type f -regextype posix-extended -regex '.*/[a-f0-9]{16,}\.[a-z]+$'
Public klasöründe olmaması gereken PHP'ler.
find /var/www/html/public -maxdepth 1 -name "*.php" ! -name "index.php" ! -name "robots.txt"
Marker/beacon dosyaları.
find /var/www/html/public -maxdepth 1 -name "*.txt" ! -name "robots.txt"
Upload klasöründe PHP dosyası OLMAMALI!
find /var/www/html/public/uploads -name "*.php" 2>/dev/null
phtml, phar, php5, php7 uzantıları.
find /var/www/html/public/uploads -type f \( -name "*.phtml" -o -name "*.phar" -o -name "*.php5" -o -name "*.php7" \)
JPG/PNG/GIF içine gizlenmiş PHP kodu.
find /var/www/html -type f \( -name "*.jpg" -o -name "*.png" -o -name "*.gif" \) -exec grep -l "<?php" {} \;
Sıkıştırılmış zararlı kod.
grep -r --include="*.php" -l "gzinflate\|gzuncompress\|str_rot13" /var/www/html/public
chr(98).chr(97)... formatı.
grep -r --include="*.php" -l "chr(98).chr(97).chr(115).chr(101)" /var/www/html
50+ karakter base64 encoded string.
grep -r --include="*.php" -l '\$[a-zA-Z_]*\s*=\s*["'"'"'][a-zA-Z0-9+/=]\{50,\}["'"'"']' /var/www/html/public
Eski PHP versiyonlarında kod çalıştırır.
grep -r --include="*.php" "preg_replace.*['\"]\/.*e['\"]" /var/www/html --exclude-dir=vendor
Uzak bağlantı açan kod.
grep -r --include="*.php" -l "fsockopen\|socket_create\|pfsockopen" /var/www/html --exclude-dir=vendor
Uzak sunucudan dosya include.
grep -r --include="*.php" -l "include.*http\|require.*http" /var/www/html/public
Process açma fonksiyonu.
grep -r --include="*.php" -l "proc_open" /var/www/html/public
Zamanlanmış görevlerde backdoor.
crontab -l | grep -v "^#"
Son 7 günde değişen htaccess.
find /var/www/html -name ".htaccess" -mtime -7 -exec ls -la {} \;
Herkesin yazabildiği dosyalar.
find /var/www/html/public -type f -perm -002 ! -path "*/storage/*"
Şüpheli sembolik linkler.
find /var/www/html/public -type l ! -path "*/storage/*" ! -path "*/readme/*"
Son 24 saatte oluşturulan PHP dosyaları.
find /var/www/html -name "*.php" -mtime -1 ! -path "*/vendor/*" ! -path "*/storage/framework/*"
Son 7 günde uploads'a eklenen PHP.
find /var/www/html/public/uploads -name "*.php" -mtime -7
Kripto madenci zararlıları.
grep -r --include="*.php" -l "coinhive\|cryptonight\|stratum\|xmrig" /var/www/html
Public'te mail fonksiyonu (spam için kullanılabilir).
grep -r --include="*.php" -l "mail\s*(" /var/www/html/public --exclude-dir=vendor
$func() şeklinde dinamik fonksiyon çağrısı. Backdoor'larda çok yaygın.
grep -r --include="*.php" -l '\$[a-zA-Z_][a-zA-Z0-9_]*\s*(' /var/www/html/public --exclude-dir=vendor | head -20
call_user_func ile dinamik kod çalıştırma.
grep -r --include="*.php" -l "call_user_func\|call_user_func_array" /var/www/html/public --exclude-dir=vendor
array_map, array_filter ile kod çalıştırma.
grep -r --include="*.php" "array_map\|array_filter\|array_walk\|usort" /var/www/html/public --exclude-dir=vendor | grep -i "eval\|assert\|base64"
Reflection API ile kod çalıştırma.
grep -r --include="*.php" -l "ReflectionFunction\|ReflectionMethod" /var/www/html/public --exclude-dir=vendor
\x62\x61\x73\x65 formatında gizli kod.
grep -r --include="*.php" '\\x[0-9a-fA-F]\{2\}\\x[0-9a-fA-F]\{2\}' /var/www/html/public --exclude-dir=vendor
\142\141\163\145 formatında octal encoding.
grep -r --include="*.php" '\\[0-7]\{3\}\\[0-7]\{3\}' /var/www/html/public --exclude-dir=vendor
Çift base64 encoding ile gizleme.
grep -r --include="*.php" "base64_decode.*base64_decode" /var/www/html --exclude-dir=vendor
Binary veri manipülasyonu ile kod gizleme.
grep -r --include="*.php" "pack\s*(\|unpack\s*(" /var/www/html/public --exclude-dir=vendor
Raw POST verisi ile kod çalıştırma.
grep -r --include="*.php" "php://input" /var/www/html/public --exclude-dir=vendor
Data URI ile kod injection.
grep -r --include="*.php" "data://" /var/www/html/public --exclude-dir=vendor
Filter wrapper ile dosya okuma/encoding.
grep -r --include="*.php" "php://filter" /var/www/html --exclude-dir=vendor
Sistem komutu çalıştırma wrapper'ı.
grep -r --include="*.php" "expect://" /var/www/html --exclude-dir=vendor
c99, r57, b374k gibi ünlü shell'ler.
grep -r --include="*.php" -l "c99shell\|r57shell\|b374k\|WSO\|FilesMan" /var/www/html
Dosya yöneticisi shell imzaları.
grep -r --include="*.php" "FilesMan\|filemanager\|File Manager" /var/www/html/public --exclude-dir=vendor
Cookie ile gizli erişim kontrolü.
grep -r --include="*.php" '\$_COOKIE.*==\|md5.*\$_COOKIE' /var/www/html/public --exclude-dir=vendor
unserialize ile RCE saldırısı.
grep -r --include="*.php" "unserialize\s*(\s*\$_" /var/www/html --exclude-dir=vendor
PHP ayarlarını override eden .user.ini dosyaları.
find /var/www/html -name ".user.ini" -exec cat {} \;
Her PHP çalışmadan önce otomatik include.
grep -r "auto_prepend_file\|auto_append_file" /var/www/html -l 2>/dev/null
SVG ve XML dosyalarına gizlenmiş PHP.
find /var/www/html -type f \( -name "*.svg" -o -name "*.xml" \) -exec grep -l "<?php\|<script" {} \;
.pht, .phps, .inc gibi az bilinen PHP uzantıları.
find /var/www/html -type f \( -name "*.pht" -o -name "*.phps" -o -name "*.inc" -o -name "*.php3" -o -name "*.php4" \)
Tüm 50 kontrolü tek seferde çalıştırmak için:
#!/bin/bash
# PHP Security Scanner v2.0 - 50 Kontrol
# Path'i kendi sunucunuza göre düzenleyin
WEBROOT="/var/www/html"
echo "=== PHP GÜVENLİK TARAMASI v2.0 ==="
echo "=== 50 Kontrol Noktası ==="
echo ""
# Kategori 1: Backdoor
echo "[1/50] Eval+Base64 kontrolü..."
grep -r --include="*.php" -l "eval(base64_decode" $WEBROOT --exclude-dir=vendor 2>/dev/null
echo "[2/50] Shell komutları kontrolü..."
grep -r --include="*.php" -l "passthru\|shell_exec" $WEBROOT/public 2>/dev/null
echo "[3/50] REQUEST+Eval kontrolü..."
grep -r --include="*.php" -l '\$_\(REQUEST\|POST\|GET\).*eval' $WEBROOT 2>/dev/null
# Kategori 3: Gizli Dosyalar
echo "[9/50] Gizli PHP dosyaları..."
find $WEBROOT -name ".*php" 2>/dev/null
echo "[10/50] Rastgele isimli dosyalar..."
find $WEBROOT/public -maxdepth 2 -regextype posix-extended -regex '.*/[a-f0-9]{16,}\.[a-z]+$' 2>/dev/null
# Kategori 4: Upload
echo "[13/50] Uploads'da PHP..."
find $WEBROOT/public/uploads -name "*.php" 2>/dev/null
echo "[15/50] Resim içinde PHP..."
find $WEBROOT -type f \( -name "*.jpg" -o -name "*.png" \) -exec grep -l "<?php" {} \; 2>/dev/null
# Yeni v2 kontrolleri
echo "[31/50] Variable function calls..."
grep -r --include="*.php" "call_user_func\|call_user_func_array" $WEBROOT/public --exclude-dir=vendor 2>/dev/null
echo "[35/50] Hex encoded strings..."
grep -r --include="*.php" '\\x[0-9a-fA-F]\{2\}\\x[0-9a-fA-F]\{2\}' $WEBROOT/public --exclude-dir=vendor 2>/dev/null
echo "[39/50] php://input exploit..."
grep -r --include="*.php" "php://input" $WEBROOT/public --exclude-dir=vendor 2>/dev/null
echo "[43/50] Webshell patterns..."
grep -r --include="*.php" -l "c99shell\|r57shell\|b374k\|WSO" $WEBROOT 2>/dev/null
echo "[46/50] Deserialization attack..."
grep -r --include="*.php" "unserialize\s*(\s*\$_" $WEBROOT --exclude-dir=vendor 2>/dev/null
echo "[47/50] .user.ini dosyaları..."
find $WEBROOT -name ".user.ini" -exec echo "FOUND: {}" \;
echo "[49/50] SVG/XML PHP injection..."
find $WEBROOT -type f \( -name "*.svg" -o -name "*.xml" \) -exec grep -l "<?php" {} \; 2>/dev/null
echo "[50/50] Alternatif PHP uzantıları..."
find $WEBROOT -type f \( -name "*.pht" -o -name "*.phps" -o -name "*.inc" \) 2>/dev/null
echo ""
echo "=== TARAMA TAMAMLANDI (v2.0 - 50 Kontrol) ==="
Yedek Al: Dosyayı silmeden önce içeriğini kaydet (analiz için)
İçeriği İncele: cat dosya.php ile içeriğe bak
Oluşturma Tarihini Kontrol Et: ls -la dosya.php
Sil: rm -f dosya.php
Git'e Kaydet: git add -A && git commit -m "Security: Zararlı dosya silindi"
uploads/.htaccess dosyasına php_flag engine off ekleyin
Dosyalar 644, klasörler 755 olmalı
PHP, Laravel ve paketleri güncel tutun
Haftada bir bu kontrolleri çalıştırın
Upload klasörlerinde .user.ini oluşturulmasını engelleyin
Sadece izin verilen dosya uzantılarını kabul edin