BLOG

Linux Sunucularda WebShell Tespit Etme Yöntemleri

Hepimizin başına gelebilicek olan ve genellikle “hacklendim, shell yedim” şeklinde ifade edilen PHP web sitelerinin korkulu rüyası WebShell’ lerin tespit yöntemlerine değineceğim.

Günümüzde Shell’ler aracılığı ile Link ekleme, farklı web sitelerine yönlendirme, uzaktan içerik çağırma vb. şekillerde saldırılar gerçekleştirilmektedir.

Ayrıca kullanılan yazılımlarda bulunan güvenlik açıkları, kullanılan uygulamaların güncel olmayışı, yanlış ya da gereksiz dosya ve klasör izinleri ile bu kötü niyetli yazılımlar sunuculara bulaşabilmekte.

Image for post

Dosya Değişikliklerinin Tespiti

Sunucu üzerinde son 15 güne ait php dosyalarında yapılan değişikliklerin tespiti için, (Not: Bu komut Shell yolunu bulmamızı sağlayabilir.)

$ find . -type f -name '*.php' -mtime -15
Image for post

Dosya İçerissinden Uzak Kaynak Kontrolü

Sitenizde bazı alanlar ufak değişikliklere uğramış olabilir. Bu değişiklikler genellikle yönlendirme kodları ya da dışarıdan getirilmiş içerikler olabilir.Bunu tespit etmek için,

$ find . -type f -name '*.php' | xargs egrep -i "preg_replace *\((['|\"])(.).*\2[a-z]*e[^\1]*\1 *," --color

Dosyaların Kontrolü

Drupal, Magento, WordPress vb. hazır sistemler kullanıyorsak diff komutu yardımı ile sunucu üzerindeki dosyaları kontrol edebiliriz.

$ diff -r wordpress/ /var/www/sites/ -x assets
  • -x den hemen sonra gelen klasör diff ile kontrol edilmeyecektir. Biz bu örneğimizde assets adlı klasöre bakılmaması gerektiğini söyledik.
  • -r ile dosya ve dosyanın içinde yer alan tüm klasörlerde değişiklik kontrolü için dahil edilmesini istedik.
Image for post

Yazma İznine Sahip Klasörlerin Tespiti

Dosya izinleri oldukça önemli ve dikkat edilmesi gereken bir konudur. Bu izinleri kontrol etmek için,

$ find . -type d -perm 0777

Görsel İçerik Görünümlü WebShell’lerin Tespiti

Her ne kadar şaşırtıcı gelicek olsada uploads klasörünü eklenmiş bir görsel içerik (jpeg, gif, png vb) bile sizin web sitenize etki eden bir shell olabilir. Bu yüzden mevcut görseller içerisinde tarama işlemi yapmak faydalı olucaktır.

$ find uploads -type f -iname '*.jpg' | xargs grep -i php

.htaccess Kontorlü

Saldırganlar web sitenizde bulunan dosyalara ekleme yaparak kancalama saldırıları yapabilir. Bu durumda mevcut dosyaların başına ya da sonuna kötü amaçlı yazılım kodları eklenebilir.

$ find . -type f -name '\.htaccess' | xargs grep -i auto_prepend_file$ find . -type f -name '\.htaccess' | xargs grep -i auto_append_file

Şüpheli Kod Tespiti

Dosyalar içinde php’de kullanımı şüpheli olan kodlar olabilir. Wordpress ya da durupal gibi hazır sistemler kullandığınızda sizi yanıltıcak sonuçlar çıkartabilir.

$ find . -type f -name '*.php' | xargs egrep -i "(fsockopen|pfsockopen|stream\_socket\_client|exec|system|passthru|eval|base64_decode) *\("
  • fsockopen: DDos için kullanılabilir, uzak soket açmaya yarar.
  • pfsockopen: uzak soket açar fsockopen ile aynıdır.
  • ecex, system ve passthru: sunucularda komut çalıştırmaya yarar.
  • stream_socket_client: Uzak bağlantı oluşturma.

Not: İhtiyaç duyulmadığı durumlarda yukarıda belirtilen fonksiyonların kullanımı kısıtlanmalıdır.

Aramaları tek tek yapmak istesek,

find . -type f -name '*.php' | xargs grep -l "eval *(" --color  
find . -type f -name '*.php' | xargs grep -l "base64_decode *(" --color
find . -type f -name '*.php' | xargs grep -l "gzinflate *(" --color
find . -type f -name '*.php' | xargs grep -l "eval *(str_rot13 *(base64_decode *(" --color
find . -type f -name '*.php' | xargs grep -l "stream_socket_client *(" --color
find . -type f -name '*.php' | xargs grep -l "pfsockopen *(" --color
find . -type f -name '*.php' | xargs grep -l "mail *(" --color

Açık Bağlantı Kontrolü

Sunucumuzda dikkat edilmesi gereken durumlardan bir diğeride açık portlar ve servisler,

$ netstat -na | grep -i LISTEN
Image for post

Not: Bu durumlar dışında kripto para kullanımı için bilgisayarınız kullanılabilir. Bu durumu kontrol etmek için belli aralıklarla CPU kullanımı kontrol edilmeli.

TAGS > ,

Post a comment