Telnet Neden Kullanılmamalıdır?
Telnet Neden Kullanılmamalıdır?
Telnet protokolü ağ üzerindeki çok kullanıcılı bir makineye
(sunucu-server), başka bir makine ile bağlanmak ve o makine üzerinde bazı
komutları çalıştırmak için kullanılır. TCP/IP protokolünü kullanır. Protokolün
port numarası 23’tür. Önceleri oldukça yaygın olan bu protokol günümüzde
neredeyse kullanılmamaktadır. Kullanılan yerler ise genellikle iç
networklerdir.
Kullanım alanına örnek verecek olursak; iç networkteki bir sunucu ile başka bir sunucu arasındaki iletişimin varlığını telnet kullanarak test edebiliriz. Günümüzde kullanılmamasının sebebi ise güvenli iletişim protokolleri arasındaki yerini alamamasıdır. İletişimi açık metin halinde şifrelemeden iletmektedir. Bu da örneğin sistemimizi Man in The Middle ile dinleyen birine inanılmaz kolaylık sağlayıp tüm iletişimi görmesini sağlayabilir.
Neden Gerekliydi?
Telnet protokolü esas olarak bir kullanıcının bir bilgisayar
vasıtasıyla uzakta bulunan bir başka bilgisayara bağlanmasını sağlar.
Bilgisayarlar önceleri karakter tabanlı çalışmaktaydılar. Telnet karakter
tabanlı ekranlara login olup çalışma imkanı sağlamaktaydı. Fakat zaman geçtikçe
karakter tabanlı ve soğuk ekranlar yerlerini grafiğe dayalı görseli ön plana
çıkarılmış ekranlara bırakmıştır. Telnet’in amacı sadece karakter tabanlı
sunuculara erişmek değil aynı zamanda terminal emülasyonu yapabilen bir protokol
olduğu için önceleri tercih edilmekteydi. Terminal emülasyonu; uzaktaki
makineye giriş yapıp, sanki o makinenin başında çalışıyormuş gibi işlemler
yapılabilmesidir. Yalnızca terminal modunda grafiksiz erişime hizmet
etmektedir.
Bu kullanımların dışında genel olarak Telnet, Unix
makinelerinde oturum açmak için kullanılmıştır ve halen küçük oranda da olsa
kullanılmaktadır.
Neden Vazgeçildi?
Bu protokol ilk olarak 1969 geliştirilmiştir. Geliştirildiği
yıllarda, bilgisayar kullanıcılarının çoğunluğu akademik kurumların bilgisayar
hizmetlerinde veya devlet araştırma tesislerinde idi. Bu ortamlarda güvenlik
pek de endişe kaynağı değildi çünkü henüz internet ve bilgisayar kullanımı
yaygınlaşmamıştı. Daha sonra internetin yaygınlaşması, bant genişliğinin
patlamasının ardından endişe kaynağı olmaya başlamıştır. Güvenlik açısından
Telnet’in modern sistemler için önerilmemesinin 3 ana nedeni vardır;
Yıllar içinde keşfedilen birkaç güvenlik açığına ve yine de
var olabilecek güvenlik açığına sahiptir.
Varsayılan olarak, bağlantı üzerinden gönderilen verileri
şifrelemez. Yukarıda da bahsettiğimiz gibi açık iletişim kullanılır. Bu nedenle
iletişimlere müdahale edilmesine ve kaydedilmesine olanak sağlar.
Telnette istenen iki ana bilgisayar arasında iletişim kurulmasını ve bunlar arasında kesilmemesini sağlayan bir kimlik doğrulama şeması yoktur.
Peki Telnet’in Alternatifi Nedir?
SSH Nedir?
Telnet’in zayıf yönlerinin iyice sömürülmesinin ardından
kurtarıcımız olan SSH devreye girmiştir. SSH, Telnet ile aynı işlevi
yapmaktadır. Varsayılan olarak 22 port numarasını kullanmaktadır. İlk olarak
aslında Telnet in yedeği olarak karşımıza çıkmıştır. En önemli güvenlik
özelliklerinden birisi de iletişimin şifreli olarak iletilmesidir.
SSH iletişimi uçtan uca şifrelemektedir. Bunu yaparken
kriptografiden üç bileşen kullanmaktadır; simetrik şifreleme, asimetrik
şifreleme ve hashleme. Bu kavramları kısa kısa açıklayalım.
Simetrik Şifreleme: İsminden de anlaşıldığı üzere mesajın
hem şifrelenmesi hem de şifreli mesajın çözülmesi için aynı anahtar kullanılır.
SSH bütün iletişimi simetrik şifreleme ile şifreler. Diffie Hellman
algoritmasından yararlanılır.
Asimetrik Şifreleme: Simetrik şifrelemeden farklı olarak
public ve private key(anahtarlar) kullanılır. Bu anahtarlardan herhangi biri
kullanılarak diğeri elde edilemez.
Hashlemek: Hash almak aslında bir şeyin özetini almak
demektir. Hash ile şifre aynı şeyler değildir. Her iki tarafta elindeki verinin
hash’ini karşılaştırır ve mesajın değiştirilip değiştirilmediğini ya da doğru
mesaj olup olmadığını anlar.
Telnet ve SSH ile İletişim
Telnet ve SSH kavramları ile ilgili yeteri kadar bilgimizin
oluştuğunu düşünüyorum. Anlatılanların daha da kalıcı olması adına hem telnet
protokolü hem de ssh protokolü ile hedef makineyle iletişim sağlayıp bu
iletişimi sanki bir saldırganmış gibi wireshark üzerinden dinleyeceğim.
Buradaki hedef makinemiz zafiyetli bir makine olan metasploitable makinesidir.
Makine telnet testimize uygun olduğu için bu makineyi kullanmak istedim.
Kullanımı
Telnet ile iletişim sağlamak için 23 portunu kullanmamız
gerekmektedir. Bunun için ana makineden hedef makineye ulaşmak için terminal
ekranına ilerlemeliyiz. Terminal ekranında hedef makinenin hangi portlarının
açık olduğunu görebilmemiz için nmap sorgusu çalıştıralım. Ben her zaman
kullandığım “nmap -T4 -A hedefipadresi” sorgusunu terminal üzerinde
çalıştırdım.
Bağlantıyı yapabilmek için “telnet hedefip 23” yazıp
credential bilgilerini kullanarak hedef makinenin cli ekranına ulaşabiliriz.
Görüldüğü gibi başarılı bir şekilde hedef makineye login olduk. Artık burada
yaptığımız tüm iletişim açık bir şekilde iletilmektedir.
Wireshark aracı ile hedef ip adresi trafiğini dinlediğim
zaman, credential bilgilerini girdikten sonra TELNET paketlerinin trafikte
yayıldığını görebiliyoruz. Şimdi de telnet ile bağlantı gerçekleştirdiğimiz
makinede bir komut çalıştırıp wiresharkta nasıl göründüğünü inceleyelim.
Bizim için ve sistemler için aslında önemli olan kullanıcı
bilgilerinin tutulduğu yer olan /etc/passwd ‘ yi metasploitable da cat komutu
ile görüntüledim. Sağ taraftan wiresharktan baktığım zaman telnet paketlerinin
yağdığını görmektesiniz. Trafiği durdurup data paketinin içeriğine baktığımız
zaman sol tarafta aldığımız çıktının aynısını wireshark’ta da cleartext olarak
görmekteyiz. Bu protokolü kullanmamamız gerektiğini gösteren en büyük
nedenlerden birini yakaladık aslında. Sisteminizi mitm(man in the middle) ile
dinleyen birinin telnet protokolünü kullanarak iletişime geçiyorsanız
yapabileceklerini düşünebilirsiniz.
Bir de SSH tarafından olayları inceleyelim.
SSH Kullanımı
SSH, Telnetin daha güvenli versiyonudur. Telnet’in aksine
verileri şifrelemektedir. Şimdi bunun testini gerçekleştirelim.
SSH ile bağlantı sağlarken “ssh username@hedefip” syntax ını
kullanmalıyız. Hedef IP adresine ssh ile ulaştıktan sonra yine /etc/passwd
klasörünü “cat” komutu ile okutup wiresharkta hareketleri inceleyelim.
Paketlerden herhangi birine sağ tıklayıp “Follow > UDP
Stream” ile incelemeye aldığımızda görüldüğü gibi tüm verilerin hashli ve
anlamsız bir şekilde geldiği görüntülenmektedir. İki protokol arasındaki net
fark burada karşımıza çıkmaktadır.
Telnet ve SSH’ın arasındaki farkları uygulamalı bir şekilde
göstermiş olduk. Çoğu kuruluşlarda da telnet genelde olması gerektiği gibi
kapalı bulunmaktadır. Yukarıda da belirttiğim gibi iç networkte bazı yerler
hala kullanıyor olsa da bu durum oldukça tehlike arz etmektedir.