SSH Servisinin Keşfi ve Güvenlik Testi
Siber güvenlik denetimlerinde, dışa açık servislerin yapılandırma hatalarını ve zafiyetlerini tespit etmek hayati önem taşır. Özellikle Secure Shell (SSH) gibi sistem yönetimi için kritik olan servisler, hem bilgi toplama (reconnaissance) hem de zayıf kimlik doğrulama testlerinin (brute-force) birincil hedeflerindendir.
Önemli Uyarı: Bu makaledeki tüm işlemler yalnızca izinli laboratuvar ortamlarında, eğitim platformlarında (TryHackMe, Hack The Box vb.) veya size ait sistemlerde uygulanmalıdır. Yetkisiz sistemlerde gerçekleştirilecek testler hukuki sorumluluk doğurabilir.
Senaryo
Bir penetrasyon testi sırasında hedef sistemin IP adresi <HEDEF_IP> olarak belirlenmiştir. İlk aşamada sistem üzerinde çalışan SSH servisinin detaylarını incelemek ve güvenlik durumunu değerlendirmek amaçlanmaktadır.
Hedef IP:
<HEDEF_IP>
1. SSH Servisinin Tespiti
İlk olarak Nmap kullanılarak 22 numaralı port taranır.
nmap -sV -sC -p22 <HEDEF_IP>
Parametrelerin Açıklaması
| Parametre | Açıklama |
|---|---|
-sV | Servis sürüm tespiti yapar. |
-sC | Varsayılan NSE betiklerini çalıştırır. |
-p22 | Sadece 22 numaralı portu tarar. |
Örnek Çıktı
PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5Service Info: OS: Linux
Çıktının Yorumu
Bu çıktı bize:
SSH servisinin açık olduğunu,
Kullanılan yazılımın OpenSSH olduğunu,
Sürüm bilgisinin 8.2p1 olduğunu,
İşletim sisteminin Linux tabanlı olabileceğini göstermektedir.
2. Netcat ile Banner Bilgisi Alma
SSH servisi hakkında daha fazla bilgi almak için Netcat kullanılabilir.
nc -nv <HEDEF_IP> 22Parametreler
| Parametre | Açıklama |
|---|---|
-n | DNS çözümlemesini kapatır. |
-v | Ayrıntılı çıktı verir. |
Örnek Çıktı
(UNKNOWN) [<HEDEF_IP>] 22 (ssh) openSSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
Neden Banner Bilgisi Önemlidir?
Banner bilgisi sayesinde:
SSH yazılımı öğrenilebilir.
Sürüm zafiyet araştırması yapılabilir.
CVE sorgulamaları gerçekleştirilebilir.
Örneğin:
searchsploit openssh 8.2searchsploit openssh 8.2 komutu, siber güvenlik uzmanları, sızma testi uzmanları (penetration testers) ve sistem yöneticileri tarafından keşfedilen bir servisin bilinen güvenlik zafiyetlerini (vulnerability) bulmak için kullanılan standart bir arama komutudur.
1. searchsploit Nedir?
SearchSploit, dünyaca ünlü Exploit Database (Exploit-DB) platformunun çevrimdışı (offline) bir kopyasını terminal üzerinden aramanızı sağlayan komut satırı aracıdır. Özellikle internet erişiminin olmadığı kısıtlı laboratuvar ortamlarında veya hızlıca zafiyet taraması yapmak istendiğinde kullanılır. Kali Linux ve Parrot OS gibi güvenlik odaklı işletim sistemlerinde genellikle yüklü olarak gelir.
2. Komutun Bileşenleri
Komutu çalıştırdığınızda, araç yerel veritabanında şu kelimeleri arar:
searchsploit: Aracı çalıştıran temel komut.openssh: Aranacak olan hedef yazılımın (Secure Shell servisi) adıdır.8.2: Nmap gibi araçlarla (nmap -sVvb.) yapılan keşif (reconnaissance) aşamasında tespit edilen hedef yazılımın spesifik sürüm numarasıdır.
3. Bu Komut Ne Yapar?
Komutu çalıştırdığınızda SearchSploit aracı, başlığında veya içeriğinde hem "openssh" hem de "8.2" geçen tüm Exploit (sömürü kodu), PoC (Proof of Concept - Kavram Kanıtı) ve güvenlik makalelerini listeler.
Örnek (Temsili) Çıktı:
--------------------------------------------------------- ---------------------------------
Exploit Title | Path
--------------------------------------------------------- ---------------------------------
OpenSSH 8.2p1 - 'scp' Username Command Execution | linux/remote/48622.py
OpenSSH < 8.3p1 - Username Enumeration | linux/remote/45233.py
--------------------------------------------------------- ---------------------------------
Bu çıktıdaki "Path" kısmı, ilgili zafiyeti test etmek veya incelemek için kullanılabilecek betiklerin (genellikle Python, C veya Ruby dosyaları) sisteminizdeki dosya yolunu gösterir.
4. Neden Kullanılır?
Kırmızı Takım (Red Team) / Sızma Testi: Bir sisteme sızmadan önce, o sistemdeki yazılımların bilinen ve internete sızmış bir zafiyeti olup olmadığını kontrol etmek için kullanılır. Eğer uygun bir "exploit" bulunursa, hedef sisteme erişim sağlamak için bir sonraki adıma geçilir.
Mavi Takım (Blue Team) / Savunma: Sistem yöneticileri, kendi ağlarında çalışan servislerin sürümlerini (örneğin Ubuntu 20.04 üzerinde sıkça bulunan OpenSSH 8.2) bu araçla taratarak, sistemlerinin bilinen saldırılara karşı ne kadar risk altında olduğunu analiz ederler. Eğer kritik bir zafiyet çıkarsa, sistemin acilen yamanması (patch) veya üst sürüme (upgrade) geçirilmesi gerektiği anlaşılır.
3. SSH Algoritmalarının İncelenmesi
SSH servisinin kullandığı algoritmaları incelemek için Nmap NSE betiği kullanılabilir.
nmap --script ssh2-enum-algos -p22 <HEDEF_IP>
Dikkat: Komutta bulunan
—karakteri yerine standart çift tire--kullanılmalıdır.
Örnek Çıktı
PORT STATE SERVICE22/tcp open ssh| ssh2-enum-algos:| kex_algorithms:| curve25519-sha256| diffie-hellman-group14-sha1| server_host_key_algorithms:| rsa-sha2-512| ecdsa-sha2-nistp256| encryption_algorithms:| aes128-ctr| aes256-ctr| mac_algorithms:| hmac-sha2-256|_
Bu Bilgiler Neden Önemlidir?
Zayıf algoritmalar aşağıdaki riskleri oluşturabilir:
Eski şifreleme yöntemleri
Kırılabilir anahtar değişim mekanizmaları
Güvensiz MAC algoritmaları
Örneğin aşağıdaki algoritmalar artık zayıf kabul edilmektedir:
diffie-hellman-group1-sha1ssh-dss3des-cbc
4. SSH Kimlik Doğrulama Mekanizmasının İncelenmesi
Sunucunun hangi kimlik doğrulama yöntemlerini desteklediğini öğrenmek için:
ssh -v -o PreferredAuthentications=none labuser@<HEDEF_IP>Parametrelerin Açıklaması
| Parametre | Açıklama |
|---|---|
-v | Ayrıntılı hata ayıklama çıktısı verir. |
-o | SSH istemci seçeneklerini belirtir. |
PreferredAuthentications=none | Parola göndermeden sunucunun desteklediği yöntemleri öğrenir. |
Örnek Çıktı
debug1: Authentications that can continue:publickey,password
Bu durumda sunucu:
Public Key Authentication
Password Authentication
mekanizmalarını desteklemektedir.
Başka bir örnek:
debug1: Authentications that can continue:publickey,keyboard-interactive
5. SSH Parola Güvenliğinin Test Edilmesi
Yetkili güvenlik testlerinde parola politikasının zayıf olup olmadığını kontrol etmek için Hydra kullanılabilir.
hydra -l labuser -P password.txt ssh://<HEDEF_IP> -t 4 -VParametreler
| Parametre | Açıklama |
|---|---|
-l labuser | Test edilecek kullanıcı adı. |
-P password.txt | Parola listesi dosyası. |
ssh:// | SSH protokolünü belirtir. |
-t 4 | Aynı anda 4 bağlantı açar. |
-V | Ayrıntılı çıktı gösterir. |
Örnek Çıktı
[22][ssh] host: <HEDEF_IP>login: laborerpassword: summer2025
Hydra Saldırı Hızının Ayarlanması
Çok yüksek iş parçacığı (thread) kullanmak hedef sistemin:
Hesabı kilitlemesine,
IDS/IPS sistemlerini tetiklemesine,
SSH servisini geçici olarak engellemesine
neden olabilir.
Daha güvenli testler için:
hydra -l labuser -P password.txt ssh://<HEDEF_IP> -t 2 -W 3Burada:
-W 3
parametresi her deneme arasında 3 saniye beklenmesini sağlar.
Olası Sonraki Adımlar
SSH erişimi elde edildiğinde:
Yetkilerin Kontrolü
idwhoamisudo -l
Sistem Bilgilerinin Toplanması
uname -ahostnamecat /etc/os-release
Ağ Yapısının İncelenmesi
ip ass -tulnpnetstat -antp
Saldırı Akış Şeması
Nmap Taraması↓SSH Banner Analizi↓SSH Algoritma Analizi↓Kimlik Doğrulama Yöntemleri↓Parola Güvenlik Testi↓Yetkili Erişim↓Yerel Keşif
Sonuç
SSH servisleri Linux sistemlerde en yaygın uzaktan erişim mekanizmalarından biridir. Başarılı bir penetrasyon testinde yalnızca portun açık olduğunu tespit etmek yeterli değildir. Aynı zamanda:
Servis sürümü belirlenmeli,
Banner analizi yapılmalı,
Kullanılan algoritmalar incelenmeli,
Kimlik doğrulama yöntemleri öğrenilmeli,
Parola politikası güvenli biçimde test edilmelidir.
Bu adımlar, hedef sistemin saldırı yüzeyini daha iyi anlamaya ve olası güvenlik açıklarını tespit etmeye yardımcı olur.
1. Keşif ve Bilgi Toplama (Reconnaissance)
Bir servise yönelik güvenlik denetiminin ilk adımı, servisin versiyonunu, yapılandırmasını ve desteklediği protokolleri anlamaktır.
Aktif Tarama ve Versiyon Tespiti
nmap -sV -sC -p22 <HEDEF_IP>
Nmap (Network Mapper), ağ keşfi için endüstri standardıdır. Bu komut, hedef sistemdeki 22 numaralı porta (varsayılan SSH portu) yönelik kapsamlı bir tarama gerçekleştirir:
-p22: Yalnızca 22 numaralı portun taranmasını sağlar.-sV(Service Versioning): Açık olan portta çalışan SSH yazılımının tam sürümünü (örneğin, OpenSSH 8.4p1) tespit etmeye çalışır. Sürüm bilgisi, bilinen CVE zafiyetlerinin araştırılması için temel veridir.-sC(Default Scripts): Nmap'in varsayılan NSE (Nmap Scripting Engine) betiklerini çalıştırır. SSH için bu betikler genellikle sunucunun anahtar parmak izlerini (hostkeys) çeker ve ek yapılandırma detaylarını sunar.
Banner Grabbing (Bilgi Yakalama)
nc -nv <HEDEF_IP> 22
Netcat (nc) kullanılarak gerçekleştirilen bu işlem, sunucuya ham bir TCP bağlantısı açar.
-n: DNS çözümlemesi yapmaz (hızı artırır).-v: Ayrıntılı (verbose) çıktı verir. Bağlantı kurulduğunda, SSH sunucusu genellikle yazılım sürümünü ve işletim sistemini içeren bir "karşılama metni" (banner) gönderir. Bu, Nmap'in-sVparametresinin yaptığı işin manuel ve daha sessiz bir alternatifidir.
Desteklenen Algoritmaların Listelenmesi
nmap --script ssh2-enum-algos -p22 <HEDEF_IP>
Eski veya zayıf şifreleme algoritmalarının kullanılması, ortadaki adam (MitM) saldırılarına kapı aralayabilir. Bu özel Nmap betiği (ssh2-enum-algos), hedef sunucunun desteklediği anahtar değişim (kex), şifreleme (encryption) ve MAC (Message Authentication Code) algoritmalarını listeler. Güvenlik denetçileri bu listeyi inceleyerek sunucuda zayıf (örneğin 3DES veya arcfour) algoritmaların etkin olup olmadığını kontrol eder.
2. Kimlik Doğrulama Analizi
Sunucunun hangi kimlik doğrulama yöntemlerini kabul ettiğini anlamak, denetimin bir sonraki aşamasıdır.
ssh -v -o PreferredAuthentications=none labuser@<HEDEF_IP>
Bu komut, geçerli bir kimlik doğrulama yöntemi sunmadan sunucuya bağlanmaya çalışır:
-v(Verbose): SSH istemcisinin arka planda sunucuyla yaptığı görüşme detaylarını ekrana basar.-o PreferredAuthentications=none: İstemciye hiçbir kimlik doğrulama verisi (parola veya anahtar) göndermemesini söyler. Bunun sonucunda sunucu bağlantıyı reddedecek, ancak reddederken desteklediği kimlik doğrulama yöntemlerinin bir listesini (örneğin;publickey, password, keyboard-interactive) geri döndürecektir. Bu sayede denetçi, sistemin parolayla girişe izin verip vermediğini tespit eder.
3. Zayıf Parola Denetimi (Kavramsal Analiz)
Eğer sistem parolayla (password veya keyboard-interactive) girişlere izin veriyorsa, zayıf veya varsayılan parolaların tespit edilmesi için denetim araçları devreye girer.
hydra -l labuser -P password.txt ssh://<HEDEF_IP> -t 4 -V
Hydra, yaygın olarak kullanılan bir ağ giriş (network logon) kırma aracıdır. Yetkili laboratuvar ortamlarında sistemlerin tahmin edilebilir parolalara karşı direncini ölçmek için kullanılır:
-l labuser: Belirli bir kullanıcı adını (labuser) hedefler.-P password.txt: Denenecek parolaların bulunduğu bir sözlük (wordlist) dosyasını belirtir.-t 4: Eşzamanlı 4 bağlantı (thread) açarak işlemi hızlandırır.-V: Her denemeyi ekranda gösterir.
Not: Bu tür araçların izinsiz sistemlerde kullanılması yasa dışıdır. Yalnızca yasal izinleri alınmış sistemlerde ve eğitim laboratuvarlarında (Capture The Flag vb.) denetim amacıyla kullanılmalıdır.
4. Mavi Takım (Blue Team) Savunma ve Sıkılaştırma Stratejileri
Özellikle Linux (örneğin Pardus) tabanlı eğitim veya kurumsal sunucularda yukarıdaki keşif ve denetim adımlarında ortaya çıkabilecek riskleri mitigate (hafifletmek) etmek için aşağıdaki sıkılaştırma (hardening) adımları uygulanmalıdır:
Parola Doğrulamasını Kapatın: SSH erişimlerinde en büyük risk zayıf parolalardır.
/etc/ssh/sshd_configdosyası üzerindenPasswordAuthentication noayarı yapılarak sadece SSH Anahtarları (Public Key) ile giriş zorunlu kılınmalıdır.Varsayılan Portu Değiştirin: SSH'ı 22 numaralı porttan farklı bir porta taşımak (örneğin 2222), hedefli olmayan otomatik internet tarayıcılarının (botların) gürültüsünü ciddi oranda azaltır.
Hız Sınırlandırması (Rate Limiting) ve Banlama: Hydra gibi araçların kaba kuvvet denemelerini durdurmak için Fail2Ban veya DenyHosts gibi yazılımlar kurulmalıdır. Bu araçlar, belirli sayıda hatalı giriş yapan IP adreslerini geçici veya kalıcı olarak güvenlik duvarı (iptables/ufw) seviyesinde engeller.
Zayıf Algoritmaları Devre Dışı Bırakın:
sshd_configdosyası düzenlenerek sadece güncel ve güvenli şifreleme algoritmalarının (örneğin chacha20-poly1305, aes256-gcm) kullanılmasına izin verilmelidir.Ağ Filtreleme: SSH portu sadece belirli yönetim IP bloklarına veya VPN ağlarına açık olmalı, tüm internete (0.0.0.0/0) açık bırakılmamalıdır.
Yorumlar