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ı

ParametreAçıklama
-sVServis sürüm tespiti yapar.
-sCVarsayılan NSE betiklerini çalıştırır.
-p22Sadece 22 numaralı portu tarar.

Örnek Çıktı

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5
Service 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> 22

Parametreler

ParametreAçıklama
-nDNS çözümlemesini kapatır.
-vAyrıntılı çıktı verir.

Örnek Çıktı

(UNKNOWN) [<HEDEF_IP>] 22 (ssh) open
SSH-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.2

searchsploit 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 -sV vb.) 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ı:

Plaintext
--------------------------------------------------------- ---------------------------------
 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 SERVICE
22/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-sha1
ssh-dss
3des-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ı

ParametreAçı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 -V

Parametreler

ParametreAçı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: laborer
password: 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 3

Burada:

-W 3

parametresi her deneme arasında 3 saniye beklenmesini sağlar.


Olası Sonraki Adımlar

SSH erişimi elde edildiğinde:

Yetkilerin Kontrolü

id
whoami
sudo -l

Sistem Bilgilerinin Toplanması

uname -a
hostname
cat /etc/os-release

Ağ Yapısının İncelenmesi

ip a
ss -tulnp
netstat -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

Bash
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)

Bash
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 -sV parametresinin yaptığı işin manuel ve daha sessiz bir alternatifidir.

Desteklenen Algoritmaların Listelenmesi

Bash
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.

Bash
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.

Bash
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:

  1. Parola Doğrulamasını Kapatın: SSH erişimlerinde en büyük risk zayıf parolalardır. /etc/ssh/sshd_config dosyası üzerinden PasswordAuthentication no ayarı yapılarak sadece SSH Anahtarları (Public Key) ile giriş zorunlu kılınmalıdır.

  2. 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.

  3. 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.

  4. Zayıf Algoritmaları Devre Dışı Bırakın: sshd_config dosyası düzenlenerek sadece güncel ve güvenli şifreleme algoritmalarının (örneğin chacha20-poly1305, aes256-gcm) kullanılmasına izin verilmelidir.

  5. 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

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu