Hoşgeldin Misafir

#PTHM-Protokoller ve Sunucular

CW-ommah

17 Ocak 2022
904 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Allah’ın Rahmeti Ve Bereketi Üzerinize Olsun
Selamun aleyküm dostlarım. Bu makalemizde HTTP, FTP, POP3, SMTP, IMAP Bu protokoller; web'de gezinme, dosya transferi yapma ve e-posta gönderip alma işlemlerinin temelini oluşturur. Bu protokollerin düşük seviyede nasıl çalıştığını anlamak, ister sızma testi (penetration testing), ister ağ savunması (network defense), ister güvenlik mühendisliği (security engineering) alanında kariyer hedefleyin, siber güvenlik profesyonelleri için oldukça önemlidir. Bizde bugün bu protokollere göz atacağız Allah’ın izniyle

Telnet
Telnet protokolü, başka bir bilgisayarın sanal terminaline bağlanmak için kullanılan uygulama katmanı (application layer) protokollerinden biridir. Telnet kullanılarak bir kullanıcı uzak bir makineye giriş yapabilir ve onun terminaline (konsoluna) erişerek program çalıştırabilir, toplu işlemler (batch processes) başlatabilir ve sistem yönetimi görevlerini uzaktan gerçekleştirebilir.
Telnet protokolü oldukça basit bir yapıya sahiptir. Bir kullanıcı bağlantı kurduğunda kendisinden kullanıcı adı ve parola istenir. Kimlik doğrulama başarılı olduğunda kullanıcı, uzak sistemin terminaline erişim hakkı kazanır.
Ancak Telnet'in en büyük dezavantajı, istemci (client) ile sunucu (server) arasındaki tüm iletişimin şifrelenmemiş olmasıdır. Gönderilen kullanıcı adı, parola ve diğer veriler ağ üzerinden düz metin (cleartext) olarak iletilir. Bu nedenle ağ trafiğini dinleyebilen saldırganlar bu bilgileri kolayca ele geçirebilir. Bu güvenlik açığı nedeniyle Telnet günümüzde büyük ölçüde yerini, iletişimi şifreleyen Secure Shell (SSH) protokolüne bırakmıştır.

Günümüzde Telnet

Telnet, ağ teknolojilerinin ilk dönemlerinde uzaktan sistem yönetimi için yaygın olarak kullanılıyordu. Ancak günümüzde etkileşimli uzaktan erişim için büyük ölçüde Secure Shell (SSH - Secure Shell) tarafından değiştirilmiştir.
Modern ve doğru şekilde yapılandırılmış sistemlerde Telnet'in etkin olduğunu görmeniz pek olası değildir. Buna rağmen aşağıdaki ortamlarda hâlâ Telnet ile karşılaşabilirsiniz:

  • Eski (legacy) sistemler ve eski ağ ekipmanları (yönlendiriciler, anahtarlar/switch'ler, endüstriyel kontrol cihazları vb.)
  • Kaynakları sınırlı olan gömülü sistemler ve IoT cihazları
  • Güvenliğin hiçbir zaman önceliklendirilmediği kurum içi ağlar
  • Telnet'in etkinleştirildiği ancak daha sonra devre dışı bırakılmasının unutulduğu hatalı yapılandırılmış sistemler
Sızma testleri (penetration testing) sırasında açık bir Telnet portu (23) tespit etmek genellikle önemli bir bulgu olarak değerlendirilir. Çünkü bu durum çoğunlukla:
  1. Eski ve güncelliğini yitirmiş bir sistemin kullanıldığını,
  2. Ya da ciddi bir güvenlik yapılandırma hatasının bulunduğunu
gösterir.
Bunun nedeni, Telnet'in kullanıcı adları, parolalar ve diğer verileri ağ üzerinden şifrelenmemiş (cleartext) olarak iletmesidir. Bu nedenle ağ trafiğini dinleyebilen bir saldırgan, hassas bilgileri kolayca ele geçirebilir. Bu risk nedeniyle modern sistemlerde Telnet yerine SSH gibi şifreli iletişim sağlayan protokoller tercih edilmektedir.

Test Aracı Olarak Telnet İstemcisi

Günümüzde Telnet sunucularına nadiren rastlansa da, Telnet istemcisi (Telnet Client) herhangi bir TCP portuna bağlanmak ve metin tabanlı protokollerle manuel olarak etkileşim kurmak için hâlâ kullanışlı bir araçtır.
Kod:
telnet hedef_adresi 80

Test Aracı Olarak Telnet İstemcisi

Günümüzde Telnet sunucularına nadiren rastlansa da, Telnet istemcisi (Telnet Client) herhangi bir TCP portuna bağlanmak ve metin tabanlı protokollerle manuel olarak etkileşim kurmak için hâlâ kullanışlı bir araçtır.
Örneğin:
telnet hedef_adresi 80
komutunu kullanarak bir web sunucusunun 80 numaralı portuna bağlanabilir ve HTTP komutlarını manuel olarak yazabilirsiniz. Bu sayede istemci ile sunucu arasında gerçekleşen iletişimi doğrudan gözlemleme fırsatı elde edersiniz.

Bu yaklaşım, özellikle ağ protokollerinin nasıl çalıştığını anlamak ve güvenlik testleri sırasında servislerle düşük seviyede etkileşim kurmak açısından faydalıdır. Telnet burada uzaktan erişim aracı olarak değil, basit bir TCP istemcisi gibi davranır.

Telnet Nasıl Çalışır?

Bir Telnet sunucusu, 23 numaralı port üzerinde gelen bağlantıları dinler ve Telnet protokolünü kullanarak istemcilerle iletişim kurar.

Aşağıda anlatılan terminal çıktısı yalnızca örnek amaçlıdır ve farklı bir ortamdan alınmıştır. Bu odaya bağlı hedef sanal makinede (VM) Telnet portu açık olmadığı için bu bağlantıyı birebir tekrar edemezsiniz. Ancak örnek, kimlik doğrulama (authentication) sürecini açık bir şekilde göstermektedir.

İşleyiş şu şekildedir:

  1. Kullanıcıdan giriş adı (username) istenir. Bu örnekte kullanıcı Ali kullanıcı adını girer.
  2. Daha sonra kullanıcıdan parola (password) istenir. Örnekte parola D2xc9CgD olarak verilmiştir. Normal şartlarda parola ekranda görünmez; ancak eğitim amacıyla burada gösterilmiştir.
  3. Sistem, girilen kullanıcı adı ve parolayı doğrular. Bilgiler doğruysa kullanıcı bir karşılama mesajı ile karşılanır.
  4. Ardından uzak sunucu kullanıcıya bir komut satırı (shell) sağlar:
Kod:
Ali@saatci:~$

Buradaki:

  • Ali → oturum açan kullanıcıyı,
  • saatci → bağlanılan sistemi (hostname),
  • ~ → kullanıcının ev dizinini (home directory),
  • $ → normal kullanıcı yetkilerini
ifade eder.
Özellikle sonundaki $ işareti, kullanıcının root (yönetici) yetkilerine sahip olmadığını gösterir. Eğer kullanıcı root olarak oturum açmış olsaydı istem sonundaki karakter genellikle:
Kod:
#
şeklinde olurdu.

Güvenlik Açısından Önemli Nokta

Telnet'te kullanıcı adı ve parola da dahil olmak üzere tüm bilgiler ağ üzerinden şifrelenmeden gönderilir. Bu nedenle ağ trafiğini izleyebilen biri, yukarıdaki örnekteki Ali ve D2xc9CgD gibi giriş bilgilerini kolaylıkla ele geçirebilir. İşte bu nedenle Telnet, günümüzde büyük ölçüde Secure Shell (SSH) ile değiştirilmiştir. SSH aynı işlemleri yaparken tüm iletişimi şifreleyerek güvenliği sağlar.
Kod:
root@CW-ommah$ telnet 10.113.136.13
Trying 10.113.136.13...
Connected to 10.113.136.13.
Escape character is '^]'.
Ubuntu 20.04.3 LTS
bento login: Ali
Password: D2xc9CgD
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-84-generic x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
  System information as of Fri 01 Oct 2021 12:24:56 PM UTC
  System load:  0.05              Processes:              243
  Usage of /:   45.7% of 6.53GB   Users logged in:        1
  Memory usage: 15%               IPv4 address for ens33: 10.113.136.13
  Swap usage:   0%
 * Super-optimized for small spaces - read how we shrank the memory
   footprint of MicroK8s to make it the smallest full K8s around.
   https://ubuntu.com/blog/microk8s-memory-optimisation
0 updates can be applied immediately.
*** System restart required ***
Last login: Fri Oct  1 12:17:25 UTC 2021 from meiyo on pts/3
You have mail.
Ali@saatci:~$
Telnet, uzak sistemin terminaline hızlı bir şekilde erişim sağlasa da, tüm veriler düz metin (cleartext) olarak gönderildiği için uzaktan sistem yönetimi açısından güvenilir bir protokol değildir.
Aşağıdaki şekilde, Telnet tarafından oluşturulan ağ trafiği yakalanmıştır ve parolayı tespit etmek oldukça kolay olmuştur. Şekil, istemci ile uzak sistem arasında alışverişi yapılan ASCII verilerini göstermektedir. Kırmızı renkteki metinler istemcinin gönderdiği verileri, mavi renkteki metinler ise uzak sistemin geri gönderdiği yanıtları temsil etmektedir.
Kullanıcı adının terminalde görüntülenebilmesi için uzak sistem tarafından geri yansıtıldığına (echo edildiğine) dikkat edin. Ancak parola için aynı durum söz konusu değildir; parola karakterleri ekranda gösterilmez. Başka bir ifadeyle, birisi ekranı izliyor olsaydı parola karakterlerini göremezdi.
Fakat bu görsel koruma aslında anlamlı bir güvenlik sağlamaz. Çünkü parola her ne kadar ekranda görünmese de ağ üzerinden hâlâ şifrelenmemiş düz metin olarak iletilmektedir. Bu nedenle ağ trafiğini dinleyebilen herhangi bir kişi, parolayı kolaylıkla ele geçirebilir. Bu durum, Telnet'in en önemli güvenlik zafiyetlerinden biridir ve günümüzde yerini büyük ölçüde Secure Shell (SSH) gibi şifreli iletişim sağlayan protokollere bırakmasının temel nedenidir.

1780511282396.png

Telnet Neden Güvensizdir?

Telnet artık güvenli bir seçenek olarak kabul edilmemektedir. Ağ trafiğinizi ele geçirebilen veya izleyebilen herhangi bir kişi, kullanıcı adlarınızı ve parolalarınızı görebilir. Bu bilgiler saldırganların uzak sisteme erişim sağlamasına olanak tanıyabilir.
Bu riske neden olabilecek kişiler veya durumlar şunlardır:

  • Aynı ağ segmentinde bulunan saldırganlar
  • Veri iletim yolu üzerindeki bir yönlendirici (router) veya anahtarı (switch) ele geçirmiş kişiler
  • Ağ erişimine sahip kötü niyetli kurum içi çalışanlar (insider threats)
  • Başarılı bir Ortadaki Adam (Man-in-the-Middle / MitM) saldırısı gerçekleştiren saldırganlar
Telnet'in temel sorunu, kullanıcı adı, parola ve diğer tüm verileri ağ üzerinden şifrelenmemiş düz metin (cleartext) olarak göndermesidir. Bu nedenle ağ trafiğini izleyen biri, hassas bilgileri kolaylıkla okuyabilir.
Bu soruna karşı kullanılan güvenli alternatif Secure Shell (SSH - Secure Shell) protokolüdür. SSH, kimlik bilgileri de dâhil olmak üzere tüm iletişimi şifreler ve böylece verilerin üçüncü kişiler tarafından okunmasını engeller.
SSH, yirmi yılı aşkın süredir uzak sistemlere komut satırı üzerinden güvenli erişim sağlamak için kullanılan standart protokol konumundadır. Bu nedenle modern sistemlerde Telnet yerine neredeyse her zaman SSH tercih edilir.


Hypertext Transfer Protocol(HTTP)
Hypertext Transfer Protocol (HTTP), web sayfalarının aktarılmasını sağlayan protokoldür. Web tarayıcınız (browser), bir web sunucusuna bağlanır ve HTTP kullanarak HTML sayfaları, görseller ve diğer dosyaları talep eder. Ayrıca formları gönderir ve çeşitli dosyaları yükler.
Kısacası, World Wide Web (WWW) üzerinde gezindiğiniz her an HTTP protokolünü kullanıyorsunuzdur.
Aşağıdaki senaryoda HTTP'nin temel çalışma mantığı gösterilmektedir:

  1. İstemci (client), web sunucusundan index.html adlı HTML sayfasını talep eder.
  2. Web sunucusu, istenen index.html dosyasını istemciye gönderir.
  3. Tarayıcı, HTML dosyasını okurken sayfa içerisinde bulunan diğer kaynakları fark eder.
  4. Daha sonra istemci, logo.jpg adlı görsel dosyayı talep eder.
  5. Web sunucusu da bu görseli istemciye gönderir.
Bu süreç sayesinde bir web sayfası yalnızca tek bir dosya olarak değil, birçok farklı bileşenin bir araya gelmesiyle görüntülenir. Örneğin bir web sayfası:
  • Bir HTML dosyası
  • Birden fazla CSS dosyası
  • JavaScript dosyaları
  • Görseller
  • Videolar
  • Yazı tipleri (fonts)
içerebilir. Tarayıcı bu kaynakların her biri için ayrı HTTP istekleri gönderir ve aldığı yanıtları birleştirerek sayfayı kullanıcıya gösterir.

Örnek HTTP İsteği

Bir tarayıcı ana sayfayı isterken aşağıdakine benzer bir istek gönderir:
Kod:
GET /index.html HTTP/1.1
Host: example.com
Sunucu da buna benzer bir yanıt döndürür:
Kod:
HTTP/1.1 200 OK
Content-Type: text/html

<html>
...
</html>
Buradaki:

  • GET → Bir kaynağı istemek için kullanılan HTTP metodudur.
  • /index.html → Talep edilen dosyadır.
  • 200 OK → İsteğin başarılı olduğunu belirten HTTP durum kodudur.
  • Content-Type → Gönderilen içeriğin türünü belirtir.

Güvenlik Notu

HTTP'nin kendisi verileri şifrelemez. Bu nedenle kullanıcı adları, parolalar veya diğer hassas bilgiler düz metin olarak iletilebilir. Günümüzde web sitelerinin büyük çoğunluğu, HTTP'nin TLS ile şifrelenmiş sürümü olan HTTPS kullanmaktadır. HTTPS sayesinde istemci ile sunucu arasındaki iletişim güvenli hâle gelir ve ağ trafiğini dinleyen kişiler içerikleri okuyamaz.
1780511368841.png

HTTP ve HTTPS

HTTP, verileri düz metin (cleartext) olarak gönderir ve alır; yani veriler şifrelenmez. Bu da ağ trafiğine erişebilen herhangi bir kişinin, aktarılan içeriği okuyabilmesi anlamına gelir. Bu içerikler arasında oturum açma bilgileri (kullanıcı adı ve parola) ile kişisel veriler gibi hassas bilgiler de bulunabilir.
Günümüzde web sitelerinin büyük çoğunluğu, HTTP'nin TLS şifrelemesi ile korunmuş sürümü olan HTTPS (HTTP Secure) kullanmaktadır. Modern web tarayıcıları, yalnızca HTTP kullanan siteleri genellikle Güvenli Değil” (Not Secure) olarak işaretler. Hatta konum bilgisi (geolocation) veya kamera erişimi gibi bazı özellikler, HTTPS kullanmayan sitelerde tamamen engellenebilir.
Bununla birlikte, HTTP'nin nasıl çalıştığını anlamak hâlâ büyük önem taşımaktadır. Bunun birkaç nedeni vardır:

  • HTTP veya HTTPS kullanılsa da, HTTP komutları ve protokol yapısı aynıdır.
  • Kurum içi sızma testlerinde (internal penetration tests) ve eski sistemlerde HTTP ile karşılaşabilirsiniz.
  • Protokolü anlamak, web uygulamalarındaki güvenlik açıklarını tespit etmenize ve analiz etmenize yardımcı olur.
  • Burp Suite gibi araçlar, HTTPS trafiğini analiz edebilmek için şifreyi çözer ve size ham (raw) HTTP trafiğini gösterir.
Bu gösterimde, ağ üzerinden tam olarak hangi verilerin iletildiğini görebilmeniz için şifrelenmemiş HTTP kullanılmıştır. Bu sayede istemci ile sunucu arasında gerçekleşen iletişimi ve gönderilen komutları doğrudan inceleyebilirsiniz.

HTTP İsteklerini Manuel Olarak Gönderme
HTTP, şifrelenmemiş (cleartext) bir protokol olduğu için, Telnet veya Netcat gibi basit araçları kullanarak bir web sunucusu ile iletişim kurabilir ve kendinizi bir “web tarayıcısı” gibi davranacak şekilde konumlandırabilirsiniz. Buradaki temel fark, web tarayıcısının sizin yerinize otomatik olarak yaptığı HTTP komutlarını sizin manuel olarak girmeniz gerekmesidir.
Aşağıdaki örnekte, bir web sunucusundan bir sayfa nasıl istenir ve web sunucusunun sürümü nasıl öğrenilir gösterilmektedir. Telnet istemcisi kullanılmaktadır çünkü Telnet, iletişimde düz metin (cleartext) kullanan basit bir protokoldür. Adımlar şu şekildedir:

  • Port 80’e telnet ile bağlanın:
    telnet 10.113.136.13 80
  • Sayfayı almak için GET isteği gönderin:
    GET /index.html HTTP/1.1
    veya varsayılan sayfayı almak için:
    GET / HTTP/1.1
  • Host başlığı (header) için bir değer girin:
    Örneğin: host: telnet
    ve ardından Enter/Return tuşuna iki kez basın.
Aşağıdaki konsol çıktısında, istenen sayfa geri alınır ve normalde web tarayıcısında görünmeyen bazı ek bilgiler de görüntülenir. Eğer istenen sayfa bulunamazsa, sunucu 404 hata kodunu döndürür.
Kod:
root@CW-ommah# telnet 10.113.136.13 80
Trying 10.113.136.13...
Connected to 10.113.136.13.
Escape character is '^]'.
GET /index.html HTTP/1.1
host: telnet

HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Wed, 15 Sep 2021 08:56:20 GMT
Content-Type: text/html
Content-Length: 234
Last-Modified: Wed, 15 Sep 2021 08:53:59 GMT
Connection: keep-alive
ETag: "6141b4a7-ea"
Accept-Ranges: bytes

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Welcome to my Web Server</title>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
</head>
<body>
  <h1>Coming Soon</h1>
</body>
</html>
Kullanıcıdan gelen temel giriş iki satırdır: GET /index.html HTTP/1.1 ve ardından host: telnet.

HTTP Başlıklarında Açığa Çıkan Bilgiler

Yukarıdaki örnekte yanıt başlıklarına (response headers) dikkat edin. Server: nginx/1.18.0 (Ubuntu) başlığı, hem web sunucu yazılımını ve sürümünü hem de işletim sistemini ortaya çıkarır.
Bu tür bilgiler keşif (reconnaissance) aşamasında oldukça değerlidir çünkü:

  • Belirli sürümlerin bilinen güvenlik açıkları olabilir ve bunlar araştırılabilir.
  • İşletim sistemi bilgisi, sonraki saldırıların daha doğru şekilde hedeflenmesine yardımcı olur.
  • Web sunucusu yazılımını bilmek, potansiyel saldırı vektörlerini (attack vectors) daraltır.
Güvenlik konusunda bilinçli sistem yöneticileri, bu tür bilgilerin dışarıya sızmasını önlemek veya gizlemek için sunucularını yapılandırır. Bir sızma testi (penetration test) sırasında yanıt başlıklarında ayrıntılı sürüm bilgilerinin bulunması, raporlanması gereken önemli bir bulgudur.

Web Sunucuları ve İstemciler

HTTP protokolünü kullanmak için bir HTTP sunucusu (web server) ve bir HTTP istemcisi (web browser) gereklidir. Web sunucusu, kendisine istek gönderen web tarayıcısına belirli bir dosya kümesini “hizmet olarak sunar”.
Popüler HTTP sunucu seçenekleri şunlardır:

Nginx
Nginx, internet üzerindeki en yaygın kullanılan web sunucusu haline gelmiştir. Yüksek performansı ve çok sayıda eşzamanlı bağlantıyı verimli şekilde yönetebilmesiyle bilinir. Ücretsiz ve açık kaynaklıdır.

Apache HTTP Server
Apache, hâlâ son derece popülerdir ve birçok web sitesine güç sağlar. Modüler yapısı sayesinde oldukça esnek bir şekilde yapılandırılabilir. Ücretsiz ve açık kaynaklıdır.

Internet Information Services (IIS)
Microsoft’un web sunucusudur ve genellikle Windows tabanlı kurumsal ortamlarda kullanılır. Kullanımı için Windows Server lisansı gerektirir.

Diğer dikkat çeken web sunucuları arasında LiteSpeed, otomatik HTTPS desteği ile gelen Caddy ve JavaScript tabanlı uygulamalar için kullanılan Node.js bulunmaktadır.

En Popüler Web Tarayıcıları

Günümüzde en yaygın kullanılan web tarayıcıları şunlardır:
  • Google Chrome → Google tarafından geliştirilmiştir, pazar payı en yüksek tarayıcıdır.
  • Safari → Apple tarafından geliştirilmiştir, macOS ve iOS cihazlarında varsayılan tarayıcıdır.
  • Microsoft Edge → Chromium tabanlıdır ve Internet Explorer’ın yerini almıştır.
  • Mozilla Firefox → Açık kaynaklıdır ve gizlilik odaklı yapısıyla bilinir.
Web tarayıcıları genellikle ücretsizdir. Sızma testleri ve güvenlik araştırmaları için Mozilla Firefox sıklıkla tercih edilir çünkü gelişmiş geliştirici araçlarına ve geniş eklenti desteğine sahiptir.

HTTP Protokol Sürümleri

Yukarıdaki örnek HTTP/1.1 kullanmaktadır. HTTP/1.1, onlarca yıldır web’in temel çalışma protokolü olmuştur. Ancak daha yeni sürümler de bulunmaktadır.

HTTP/2

HTTP/2; çoklama (multiplexing) özelliğini getirerek tek bir bağlantı üzerinden birden fazla isteğin gönderilmesini mümkün kılmıştır. Ayrıca başlık sıkıştırma (header compression) ve sunucu itmesi (server push) gibi özellikler de sunar. Metin tabanlı değil, ikili (binary) bir yapıya sahiptir. Bu nedenle Telnet gibi araçlarla manuel olarak etkileşim kurmak daha zordur.

HTTP/3

HTTP/3, TCP yerine QUIC (UDP tabanlı) kullanır ve özellikle güvenilir olmayan ağlarda daha iyi performans sağlar. Günümüzde büyük web sitelerinde giderek daha yaygın hale gelmektedir.
Öğrenme ve manuel test amaçları için HTTP/1.1 hâlâ en erişilebilir sürümdür, çünkü insan tarafından okunabilir (human-readable) metin formatına sahiptir


Dosya Transfer Protokolü(File Transfer Protocol[FTP])
File Transfer Protocol (FTP), farklı sistemlere sahip bilgisayarlar arasında dosya aktarımını verimli hale getirmek için geliştirilmiştir. İnternet için tasarlanan en erken protokollerden biridir ve günümüzde hâlâ kullanılmaktadır; ancak çoğu kullanım alanında yerini büyük ölçüde daha güvenli alternatiflere bırakmıştır.

Modern FTP

FTP, kimlik bilgilerini ve verileri düz metin (cleartext) olarak gönderdiği için hassas bilgilerin aktarımı açısından güvenli değildir. Bu nedenle FTP, çoğu ortamda aşağıdaki daha güvenli alternatiflerle değiştirilmiştir:

SFTP (SSH File Transfer Protocol)
SSH üzerinden çalışır ve tüm trafiği şifreler. 22 numaralı portu kullanır. FTP’nin en yaygın modern alternatifidir.

FTPS (FTP Secure)
FTP protokolüne TLS şifrelemesi ekler. 990 numaralı port üzerinde (implicit TLS) çalışabilir veya 21 numaralı portta STARTTLS kullanabilir.

SCP (Secure Copy Protocol)
Yine SSH üzerinden çalışır, ancak SFTP lehine giderek kullanım dışı bırakılmaktadır (deprecated).
Buna rağmen düz FTP ile hâlâ karşılaşılabilir:

  • Güncellenmemiş eski (legacy) sistemler ve eski uygulamalar
  • Genel dosya dağıtımı için kullanılan anonim FTP sunucuları
  • Şifrelemenin hiç uygulanmadığı kurum içi ağlar
  • Sınırlı kapasiteye sahip gömülü cihazlar ve ağ ekipmanları
  • Güvenli alternatiflerin yapılandırılmadığı hatalı sunucular
Sızma testleri sırasında bir FTP sunucusu, özellikle anonim girişe izin veriyorsa, tespit edilmesi gereken yaygın ve önemli bir bulgudur.

FTP ile Manuel Etkileşim

FTP, verileri ve komutları düz metin (cleartext) olarak gönderip aldığı için, Telnet (veya Netcat) kullanarak bir FTP sunucusu ile iletişim kurabilir ve kendinizi bir FTP istemcisi gibi konumlandırabilirsiniz.
Aşağıdaki örnekte şu adımlar gerçekleştirilmiştir:

  • Bir FTP sunucusuna Telnet istemcisi kullanılarak bağlantı kurulmuştur. FTP sunucuları varsayılan olarak 21 numaralı portu dinlediği için, Telnet istemcisi varsayılan Telnet portu yerine 21 numaralı porta yönlendirilmiştir.
  • Kullanıcı adı USER Ali komutu ile gönderilmiştir.
  • Parola PASS D2xc9CgD komutu ile gönderilmiştir.
  • Doğru kullanıcı adı ve parola sağlandığı için oturum açma işlemi başarılı olmuştur.
STAT gibi bir komut ek bilgiler sağlayabilir. SYST komutu hedef sistemin türünü (System Type) gösterir (bu örnekte UNIX). PASV komutu ise modu pasif moda geçirir.
FTP’nin iki farklı çalışma modu olduğunu bilmek önemlidir:

Active (Aktif) Mod

Aktif modda veri, FTP sunucusunun 20 numaralı portundan başlayan ayrı bir kanal üzerinden gönderilir. Sunucu, veri bağlantısını istemciye doğru başlatır. Bu yöntem genellikle istemci bir güvenlik duvarı (firewall) veya NAT arkasındaysa başarısız olur.

Passive (Pasif) Mod

Pasif modda veri, FTP istemcisinin 1023’ün üzerindeki bir portundan başlayan ayrı bir kanal üzerinden gönderilir. Bu durumda her iki bağlantıyı da istemci başlatır. Bu yöntem güvenlik duvarlarıyla daha uyumludur ve modern FTP istemcilerinde varsayılan olarak kullanılır.
TYPE A komutu dosya transfer modunu ASCII’ye geçirir, TYPE I komutu ise ikili (binary) moda geçirir. Ancak Telnet gibi basit bir istemci kullanılarak dosya transferi tamamlanamaz; çünkü FTP, veri aktarımı için ayrı bir bağlantı oluşturur.
Kod:
root@CW-ommah# telnet 10.113.136.13 21
Trying 10.113.136.13...
Connected to 10.113.136.13.
Escape character is '^]'.
220 (vsFTPd 3.0.3)
USER Ali
331 Please specify the password.
PASS D2xc9CgD
230 Login successful.
SYST
215 UNIX Type: L8
PASV
227 Entering Passive Mode (10,10,0,148,78,223).
TYPE A
200 Switching to ASCII mode.
STAT
211-FTP server status:
     Connected to ::ffff:10.10.0.1
     Logged in as Ali
     TYPE: ASCII
     No session bandwidth limit
     Session timeout in seconds is 300
     Control connection is plain text
     Data connections will be plain text
     At session startup, client count was 1
     vsFTPd 3.0.3 - secure, fast, stable
211 End of status
QUIT
221 Goodbye.
Connection closed by foreign host.
STAT çıktısında sunucunun açıkça “Control connection is plain text” ve “Data connections will be plain text” ifadelerini belirttiğine dikkat edin. Bu, kimlik bilgileri de dahil olmak üzere her şeyin şifreleme olmadan iletildiğini doğrular

FTP Dosya Aktarımı Nasıl Çalışır?

Aşağıdaki görsel, FTP kullanılarak gerçek bir dosya aktarımının nasıl gerçekleştirildiğini göstermektedir. FTP istemcisi, varsayılan olarak 21 numaralı portu dinleyen FTP sunucusuna bir bağlantı başlatır.
Tüm komutlar kontrol kanalı (control channel) üzerinden gönderilir. İstemci bir dosya talep ettiğinde, veri aktarımı için istemci ile sunucu arasında ikinci bir TCP bağlantısı daha kurulur.
Bu çift bağlantı (dual-connection) mimarisi, FTP’nin güvenlik duvarları (firewall) ile çalışmasını zorlaştıran nedenlerden biridir.

1780511637168.png

FTP İstemcisi Kullanımı

Çift bağlantı (dual-connection) mimarisi nedeniyle dosya indirebilmek için gerçek bir FTP istemcisine ihtiyaç vardır. Başarılı bir şekilde giriş yaptıktan sonra, çeşitli FTP komutlarını çalıştırmak için ftp> istemi (prompt) karşınıza çıkar.
Aşağıdaki örnekte:

  • ls komutu dosyaları listeler
  • Hedef bir metin dosyası (binary olmayan) olduğu için ascii komutu ASCII moduna geçiş yapar
  • get FILENAME komutu, ayrı bir veri kanalı oluşturarak dosya aktarımını başlatır
Bu süreçte FTP, komutları kontrol kanalı üzerinden gönderirken dosya aktarımı için ayrı bir bağlantı kurar.
Kod:
root@CW-ommah# ftp 10.113.136.13
Connected to 10.113.136.13.
220 (vsFTPd 3.0.3)
Name: Ali
331 Please specify the password.
Password: D2xc9CgD
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,20,30,148,201,180).
150 Here comes the directory listing.
-rw-rw-r--    1 1001     1001         4006 Sep 15 10:27 README.txt
226 Directory send OK.
ftp> ascii
200 Switching to ASCII mode.
ftp> get README.txt
local: README.txt remote: README.txt
227 Entering Passive Mode (10,10,0,148,125,55).
150 Opening BINARY mode data connection for README.txt (4006 bytes).
WARNING! 9 bare linefeeds received in ASCII mode
File may not have transferred correctly.
226 Transfer complete.
4006 bytes received in 0.000269 secs (14892.19 Kbytes/sec)
ftp> exit
221 Goodbye.

Anonim FTP

Bazı FTP sunucuları anonim girişe (anonymous login) izin verir. Bu tür sistemlerde genellikle kullanıcı adı olarak anonymous veya ftp kullanılır ve parola olarak herhangi bir e-posta adresi girilebilir (ya da bazı durumlarda hiç parola gerekmeyebilir).
Anonim FTP, geçmişte özellikle yazılım indirme ve dokümantasyon gibi genel dosya dağıtımı amacıyla yaygın olarak kullanılmıştır.
Sızma testi (penetration testing) sırasında bir FTP sunucusu tespit edildiğinde, her zaman anonim giriş denemesi yapmak önemlidir:
Kod:
ftp> USER anonymous
331 Please specify the password.
ftp> PASS [email protected]
230 Login successful.
Anonim FTP sunucuları, yanlışlıkla açığa çıkarılmış hassas dosyalar, yapılandırma yedekleri veya eğer yazma (write) izni etkinse kötü amaçlı dosyaların yüklenmesine imkân tanıyabilecek bir yapı içerebilir.

FTP Sunucuları ve İstemcileri

Kullanılabilecek çeşitli FTP sunucu yazılımları bulunmaktadır:

vsftpd (Very Secure FTP Daemon)
Linux sistemlerinde en yaygın FTP sunucularından biridir.

ProFTPD
Oldukça esnek ve modüler bir yapı sunar, yüksek düzeyde özelleştirilebilir.

Pure-FTPd
Güvenlik ve basitliğe odaklanan bir FTP sunucusudur.
Windows tarafında ise Internet Information Services (IIS) FTP sunucu özelliklerini de içerir.
FTP istemcileri için ise Linux sistemlerinde bulunan komut satırı (console) FTP istemcisinin yanı sıra, grafik arayüzlü (GUI) bir istemci olan FileZilla kullanılabilir.
Son yıllarda büyük web tarayıcıları FTP desteğini kaldırmıştır; bu nedenle artık tarayıcı üzerinden FTP erişimi mümkün değildir.

Güvenlik Etkileri

FTP, giriş bilgilerini (login credentials), komutları ve dosyaları şifrelenmemiş (cleartext) olarak gönderdiği için FTP trafiği saldırganlar açısından kolay bir hedef haline gelir. Ağ trafiğini yakalayabilen herhangi biri şu bilgilere erişebilir:
  • Kullanıcı adları ve parolalar
  • Aktarılan dosyaların içeriği
  • Sunucu yapısını ortaya çıkaran dizin listeleri (directory listings)
  • Kullanıcıların hangi işlemleri yaptığını gösteren komutlar
Eğer FTP kullanmak zorundaysanız, bunu yalnızca izole edilmiş ağlarla sınırlandırmalı veya TLS şifrelemesi kullanan FTPS tercih edilmelidir. Çoğu kullanım senaryosu için ise Secure File Transfer Protocol en önerilen alternatiftir.

Basit Posta Aktarım Protokolü(SMTP)-Simple Mail Transfer Protocol(SMTP)
E-posta, İnternet üzerindeki en yaygın kullanılan hizmetlerden biridir. E-posta sunucuları için çeşitli yapılandırmalar bulunmaktadır; örneğin, yalnızca yerel kullanıcıların birbirleriyle e-posta alışverişi yapmasına izin veren ve İnternet erişimi olmayan bir e-posta sistemi kurulabilir.
Ancak bu konu, farklı e-posta sunucularının İnternet üzerinden birbirleriyle iletişim kurduğu daha genel yapılandırmayı ele almaktadır.

E-posta Teslim Bileşenleri

İnternet üzerinden e-posta iletimi, aşağıdaki bileşenleri gerektirir:

Mail User Agent (MUA):
E-posta istemcisidir (örneğin Thunderbird, Outlook veya web tabanlı e-posta arayüzleri).

Mail Submission Agent (MSA):
MUA’dan gelen e-postayı alır, hataları kontrol eder ve iletim için yönlendirir.

Mail Transfer Agent (MTA):
E-postayı sunucular arasında yönlendirir ve teslim eder.

Mail Delivery Agent (MDA):
E-postayı alıcının posta kutusuna yerleştirir ve daha sonra erişilmek üzere saklar.

1780511767937.png
Aşağıdaki şekil, bir e-postanın alıcının gelen kutusuna ulaşmak için geçmesi gereken beş adımı göstermektedir:
  1. MUA’nın gönderilmek üzere hazır bir e-posta mesajı vardır. Bu mesajı göndermek için MSA’ya bağlanır ve mesajı iletir.
  2. MSA mesajı alır, hataları kontrol eder ve genellikle aynı sunucuda bulunan MTA’ya aktarır.
  3. MTA, e-posta mesajını alıcının MTA’sına gönderir. MTA aynı zamanda MSA olarak da görev yapabilir.
  4. Tipik bir yapıda MTA sunucusu aynı zamanda MDA olarak da çalışır.
  5. Alıcı, e-postasını MDA’dan e-posta istemcisi (MUA) kullanarak alır.
Eğer yukarıdaki adımlar karmaşık görünüyorsa, şu benzetmeyi düşünebilirsiniz:
  1. Siz (MUA) bir mektup göndermek istiyorsunuz.
  2. Postane görevlisi (MSA), mektubu kabul etmeden önce kontrol eder.
  3. Yerel postane (MTA), mektubun varış adresini kontrol eder ve doğru ülkeye yönlendirir.
  4. Postane (MTA), mektubu alıcının posta kutusuna (MDA) teslim eder.
  5. Alıcı (MUA), düzenli olarak posta kutusunu kontrol eder. Yeni mektubu fark eder ve alır.

E-posta Protokolleri

Bir HTTP sunucusu ile iletişim kurarken belirli bir protokolü takip ettiğiniz gibi, bir MTA ve MDA ile iletişim kurmak için de e-posta protokollerine ihtiyaç duyarsınız. Bu protokoller şunlardır:
  • Simple Mail Transfer Protocol (SMTP): E-posta göndermek için kullanılır
  • Post Office Protocol version 3 (POP3) veya Internet Message Access Protocol (IMAP): E-posta almak için kullanılır

SMTP Portları ve Şifreleme

Simple Mail Transfer Protocol (SMTP), bir MTA sunucusu ile iletişim kurmak için kullanılır. Orijinal SMTP sürümü şifrelenmemiş (cleartext) çalışır; yani tüm komutlar şifreleme olmadan gönderilir. Ancak modern e-posta altyapıları, farklı güvenlik modellerine sahip birkaç farklı port kullanır:

Port 25, sunucular arası iletişim (MTA’dan MTA’ya) için kullanılan geleneksel SMTP portudur. İnternet servis sağlayıcıları (ISP’ler) tarafından ev kullanıcılarında spam’i önlemek amacıyla sıklıkla engellenir. Bu portta şifreleme isteğe bağlıdır ve STARTTLS ile müzakere edilir.

Port 587, e-posta istemcilerinin (MUA), mesajlarını e-posta sunucusuna (MSA) göndermesi için kullanılan gönderim (submission) portudur. E-posta göndermek için önerilen porttur ve genellikle kimlik doğrulama gerektirir. TLS şifrelemesi STARTTLS komutu ile başlatılır.

Port 465, başlangıçta SMTPS (implicit TLS üzerinden SMTP) için tanımlanmış, daha sonra kullanım dışı bırakılmış, ancak yeniden aktif hale getirilmiştir. Bu portta TLS şifrelemesi bağlantı kurulduğu anda otomatik olarak başlar.
Bu gösterimde, protokol komutlarını düz metin (cleartext) olarak görebilmeniz için port 25 üzerinde şifrelenmemiş SMTP kullanılmaktadır.

Telnet ile Manuel E-posta Gönderme

SMTP şifrelenmemiş (cleartext) çalışabildiği için, basit bir Telnet istemcisi kullanarak bir SMTP sunucusuna bağlanabilir ve bir e-posta istemcisi (MUA) gibi davranarak mesaj gönderebilirsiniz.
Bağlantı kurulduktan sonra helo hostname (veya genişletilmiş SMTP için ehlo hostname) komutu verilir ve ardından e-posta yazma sürecine başlanır.
Kod:
root@CW-ommah# telnet 10.113.136.13 25
Trying 10.113.136.13...
Connected to 10.113.136.13.
Escape character is '^]'.
220 bento.localdomain ESMTP Postfix (Ubuntu)
helo telnet
250 bento.localdomain
mail from:
250 2.1.0 Ok
rcpt to:
250 2.1.5 Ok
data
354 End data with .
subject: Sending email with Telnet
Hello Ali,
I am just writing to say hi!
.
250 2.0.0 Ok: queued as C3E7F45F06
quit
221 2.0.0 Bye
Connection closed by foreign host.
HELO komutundan sonra mail from: ve rcpt to: komutları, göndereni ve alıcıyı belirtir. E-posta mesajı hazır olduğunda data komutu mesaj gövdesini (body) başlatır. Mesaj, tek başına bir satırda yalnızca bir nokta (.) yazılıp Enter’a basılarak sonlandırılır. SMTP sunucusu daha sonra mesajı kuyruğa alır.
Bu SMTP komutlarını ezberlemenize gerek yoktur. Yukarıdaki konsol çıktısı, bir e-posta istemcisinin SMTP kullanırken arka planda nasıl çalıştığını göstermek amacıyla verilmiştir.

E-posta Sahteciliği (Email Spoofing) ve Neden Çalışır?

Yukarıdaki örnekte önemli bir noktaya dikkat edin: “from” (gönderen) adresi manuel olarak belirtilmiştir ve sunucu, gönderenin bu e-posta adresi üzerinde gerçekten yetkili olup olmadığını doğrulamadan bunu kabul etmiştir. E-posta sahteciliği (email spoofing) tam olarak bu şekilde çalışır.
SMTP, güvenilir ağların varsayıldığı bir dönemde tasarlanmıştır ve gönderici kimliğini doğrulamak için yerleşik bir mekanizmaya sahip değildir. Bu nedenle, protokol düzeyinde göndericinin gerçekten iddia ettiği kişi olup olmadığını kontrol eden bir sistem bulunmaz.
Bu durum, oltalama (phishing) e-postalarının neden meşru adreslerden geliyormuş gibi görünebildiğini açıklar. Protokolün kendisi, bir saldırganın istediği herhangi bir kişi gibi görünmesini engellemez.

Güvenlik Etkileri

SMTP’yi anlamak, güvenlik uzmanları için önemlidir çünkü:
  • E-posta, oltalama (phishing) saldırılarında hâlâ birincil saldırı vektörüdür.
  • Hatalı yapılandırılmış posta sunucuları, spam gönderimi için “open relay” olarak kullanılabilir.
  • Şifrelenmemiş (cleartext) SMTP, e-posta içeriğini ve kimlik bilgilerini ağ dinleme (sniffing) yoluyla açığa çıkarabilir.
  • SMTP bilgisi, olay müdahalesi (incident response) sırasında e-posta başlıklarının (email header) analizini anlamanıza yardımcı olur.
Sızma testleri sırasında şu kontroller yapılabilir:
  • Açık relay (open relay) yapılandırmalarının test edilmesi
  • Güvenlik farkındalığını değerlendirmek için e-posta sahteciliği (email spoofing) denemeleri
  • Şüpheli e-postaların kaynağını izlemek için e-posta başlıklarının analiz edilmesi
Modern e-posta kimlik doğrulama mekanizmaları (SPF, DKIM, DMARC), sahteciliğe karşı geliştirilmiştir.

Post Office Protocol 3 (POP3)
Post Office Protocol version 3 (POP3), aşağıdaki şekilde gösterildiği gibi, e-posta mesajlarını bir Mail Delivery Agent (MDA) sunucusundan indirmek için kullanılan bir protokoldür. E-posta istemcisi POP3 sunucusuna bağlanır, kimlik doğrulaması yapar, yeni e-posta mesajlarını indirir ve ardından (isteğe bağlı olarak) bunları sunucudan siler.

1780511849660.png

POP3 Portları ve Şifreleme

Bu derste ele alınan diğer protokoller gibi POP3 de başlangıçta şifreleme olmadan (encryption olmadan) tasarlanmıştır:
  • Port 110, varsayılan POP3 portudur ve şifrelenmemiş (cleartext) iletişim kullanır. Bazı sunucular, bağlantının TLS’e yükseltilmesini (upgrade) STLS komutu ile destekler (SMTP’deki STARTTLS’e benzer şekilde).
  • Port 995, POP3S (POP3 over implicit TLS) için kullanılır. Bu bağlantıda şifreleme baştan itibaren aktiftir.
Günümüzde çoğu e-posta sağlayıcısı, POP3 için port 995 üzerinde POP3S kullanımını zorunlu veya güçlü şekilde tavsiye etmektedir. Ancak yine de iç ağlarda, eski sistemlerde veya yanlış yapılandırılmış sunucularda şifrelenmemiş POP3 ile karşılaşmak mümkündür.

POP3 ile Manuel Etkileşim

Aşağıdaki örnek, bir POP3 oturumunun Telnet istemcisi aracılığıyla nasıl göründüğünü göstermektedir. İlk olarak kullanıcı, POP3 sunucusuna varsayılan port olan 110 üzerinden bağlanır. E-posta mesajlarına erişebilmek için kimlik doğrulama gereklidir; kullanıcı USER Ali komutu ile kullanıcı adını ve PASS D2xc9CgD komutu ile parolasını girerek kimlik doğrulaması yapar.
STAT komutu kullanıldığında +OK 1 179 yanıtı döndürülür. RFC 1939’a göre, STAT komutuna verilen pozitif yanıt +OK nn mm formatındadır; burada nn, gelen kutusundaki e-posta mesajı sayısını, mm ise gelen kutusunun boyutunu (octet/byte cinsinden) ifade eder.
LIST komutu sunucudaki yeni mesajların listesini verir ve RETR 1 komutu listedeki ilk mesajı indirir.
Kod:
root@CW-ommah# telnet 10.113.136.13 110
Trying 10.113.136.13...
Connected to 10.113.136.13.
Escape character is '^]'.
+OK 10.113.136.13 Mail Server POP3 Wed, 15 Sep 2021 11:05:34 +0300
USER Ali
+OK Ali
PASS D2xc9CgD
+OK 1 messages (179) octets
STAT
+OK 1 179
LIST
+OK 1 messages (179) octets
1 179
.
RETR 1
+OK
From: Mail Server
To: Ali
subject: Sending email with Telnet
Hello Ali,
I am just writing to say hi!
.
QUIT
+OK 10.113.136.13 closing connection
Connection closed by foreign host.
Bu komutları ezberlemeniz gerekmez; ancak bu örnek, protokolü daha iyi anlamanızı sağlamaya yardımcı olur. Komutlar düz metin (cleartext) olarak gönderilir ve Telnet kullanarak kimlik doğrulaması yapmak ve bir e-posta mesajını almak yeterli olmuştur. Kullanıcı adı ve parola da düz metin olarak iletildiği için, ağ trafiğini izleyen üçüncü bir taraf giriş bilgilerini kolayca ele geçirebilir.
Genel olarak, e-posta istemciniz (MUA), POP3 sunucusuna (MDA) bağlanır, kimlik doğrulaması yapar ve mesajları indirir. POP3 protokolü kullanılarak yapılan iletişim grafiksel bir arayüzün arkasında gizli olsa da, yukarıdaki Telnet oturumunda görüldüğü gibi benzer komutlar arka planda çalıştırılır.

KomutAçıklama
USER usernameKullanıcıyı tanımlar
PASS passwordParola ile kimlik doğrulaması yapar
STATMesaj sayısını ve toplam boyutu döndürür
LISTTüm mesajları boyutlarıyla birlikte listeler
RETR nn numaralı mesajı alır
DELE nn numaralı mesajı silinmek üzere işaretler
RSETSilinmek üzere işaretlenmiş mesajları sıfırlar (işareti kaldırır)
QUITOturumu sonlandırır ve işaretlenmiş mesajları siler

POP3 Davranışı: İndir ve Sil

Varsayılan ayarlara göre, e-posta istemcisi mesajı indirdikten sonra siler. Bu “indir ve sil” modeli şu anlama gelir:
  • E-postalar sunucu üzerinde değil, yerel cihazınızda saklanır.
  • E-posta indirildikten sonra yalnızca o belirli cihazdan erişilebilir olur.
  • Cihazınız kaybolur veya zarar görürse, (yedekleme yoksa) e-postalar da kaybolur.
  • E-posta sunucusundaki depolama kullanımı minimuma indirilir.
Bu varsayılan davranış, e-posta istemcisi ayarlarından değiştirilerek mesajların sunucuda tutulması sağlanabilir. Ancak POP3 kullanarak aynı e-posta hesabına birden fazla istemciyle erişmek genellikle uygun değildir; çünkü her istemci kendi kopyasını indirir ve aralarında senkronizasyon olmaz. Bu durum, okunmuş ve okunmamış mesajların takibini zorlaştırır.

POP3 vs IMAP: Hangisi Ne Zaman Kullanılır?

POP3 hâlâ bazı özel senaryolarda kullanışlıdır:
  • İnternet bağlantısının sınırlı veya güvenilmez olduğu durumlarda e-postalara çevrimdışı erişim sağlamak istendiğinde
  • Sunucu tarafındaki depolama alanını minimumda tutmak gerektiğinde
  • E-postaya yalnızca tek bir cihazdan erişim yapılıyorsa
  • E-postaları yerel olarak arşivlemek istendiğinde
Ancak IMAP, senkronizasyon yetenekleri sayesinde çoğu kullanıcı için POP3’ün yerini büyük ölçüde almıştır.

Güvenlik Etkileri

Güvenlik açısından bakıldığında, bir sızma testi (penetration test) sırasında bir POP3 sunucusunun (özellikle 110 numaralı port üzerinde) tespit edilmesi çeşitli fırsatlar sunar. Şifrelenmemiş POP3 trafiği üzerinden gönderilen kimlik bilgileri, ağ dinleme (network sniffing) yoluyla yakalanabilir. POP3 kimlik doğrulamasına karşı parola saldırıları gerçekleştirilebilir ve bir posta kutusuna başarılı erişim, hassas bilgiler, diğer sistemlere ait kimlik bilgileri veya parola sıfırlama bağlantıları gibi kritik verilerin ortaya çıkmasına neden olabilir.

Eğer POP3 trafiği yakalanır ve USER ile PASS komutları görülürse, bu bilgiler başka sistemlerde de yeniden kullanılabilecek geçerli kimlik bilgileri elde edilmiş demektir.

İnternet Mesaj Erişin Protokolü(IMAP)-Internet Message Access Protocol(IMAP)
Internet Message Access Protocol (IMAP), POP3’ten daha gelişmiş bir protokoldür. IMAP, e-postaların birden fazla cihaz (ve e-posta istemcisi) arasında senkronize edilmesini mümkün kılar.
Örneğin, akıllı telefonunuzdan e-postalarınızı kontrol ederken bir mesajı “okundu” olarak işaretlerseniz, bu değişiklik IMAP sunucusunda (MDA) kaydedilir ve gelen kutunuzu dizüstü bilgisayarınızda senkronize ettiğinizde de aynı şekilde yansıtılır.

IMAP Neden Standart Hâline Geldi?

IMAP, günümüzde e-postalara erişim şekli nedeniyle çoğu kullanıcı için büyük ölçüde POP3'ün yerini almıştır. İnsanlar e-postalarını telefonlarından, dizüstü bilgisayarlarından, tabletlerinden ve web tarayıcılarından kontrol etmekte; hatta gün boyunca bu cihazlar arasında sürekli geçiş yapmaktadır. IMAP'in sunucu taraflı depolama modeli bunu sorunsuz bir şekilde mümkün kılar:
  • E-postalar sunucuda kalır ve herhangi bir cihazdan erişilebilir.
  • Okundu/okunmadı durumu, klasörler ve işaretler (flags) tüm istemciler arasında senkronize edilir.
  • Bir cihazda silinen e-posta her yerde silinir.
  • Tüm mesajları indirmeden, arama işlemleri sunucu tarafında gerçekleştirilebilir.
Bu yaklaşım, POP3'ün indir ve sil (download-and-delete) modelinden farklıdır. POP3'te her cihazın mesajların kendi ayrı kopyası bulunur ve cihazlar arasında senkronizasyon sağlanmaz.

IMAP Portları ve Şifreleme

Diğer e-posta protokolleri gibi IMAP de başlangıçta şifreleme olmadan tasarlanmıştır:
  • Port 143, varsayılan IMAP portudur ve şifrelenmemiş (cleartext) iletişim kullanır. Birçok sunucu, bağlantının STARTTLS komutu kullanılarak TLS ile güvenli hale getirilmesini destekler.
  • Port 993, IMAPS (IMAP over implicit TLS) için kullanılır. Bu portta bağlantı kurulduğu andan itibaren tüm iletişim şifrelenir.
Günümüzde çoğu e-posta sağlayıcısı, IMAP erişimi için 993 numaralı port üzerinden IMAPS kullanımını zorunlu kılmaktadır. Google tarafından sunulan Gmail, Microsoft tarafından sunulan Outlook ve Yahoo gibi büyük sağlayıcılar, şifrelenmemiş IMAP erişimini tamamen devre dışı bırakmıştır.
Bununla birlikte, kurum içi posta sunucularında veya eski (legacy) sistemlerde hâlâ şifrelenmemiş IMAP ile karşılaşabilirsiniz.

IMAP ile Manuel Etkileşim

Aşağıdaki konsol çıktısı örnek bir IMAP oturumunu göstermektedir. IMAP sunucusunun varsayılan portuna bağlanmak için Telnet kullanılır ve ardından LOGIN username password komutu ile kimlik doğrulaması gerçekleştirilir.
IMAP, gönderilen her komutun başına rastgele bir karakter dizisi (tag/etiket) eklenmesini gerektirir. Bu etiketler, sunucunun hangi yanıtın hangi komuta ait olduğunu takip edebilmesini sağlar. Bu nedenle örnekte c1, c2 ve benzeri etiketler kullanılmıştır.
Daha sonra, LIST "" "*" komutu ile e-posta klasörleri listelenir ve ardından EXAMINE INBOX komutu kullanılarak gelen kutusundaki yeni mesajlar kontrol edilir.
Kod:
root@CW-ommah# telnet 10.113.129.61 143
Trying 10.113.129.61...
Connected to 10.113.129.61.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS ENABLE UTF8=ACCEPT] Courier-IMAP ready. Copyright 1998-2018 Double Precision, Inc.  See COPYING for distribution information.
c1 LOGIN frank D2xc9CgD
* OK [ALERT] Filesystem notification initialization error -- contact your mail administrator (check for configuration errors with the FAM/Gamin library)
c1 OK LOGIN Ok.
c2 LIST "" "*"
* LIST (\HasNoChildren) "." "INBOX.Trash"
* LIST (\HasNoChildren) "." "INBOX.Drafts"
* LIST (\HasNoChildren) "." "INBOX.Templates"
* LIST (\HasNoChildren) "." "INBOX.Sent"
* LIST (\Unmarked \HasChildren) "." "INBOX"
c2 OK LIST completed
c3 EXAMINE INBOX
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS ()] No permanent flags permitted
* 0 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 631694851] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
c3 OK [READ-ONLY] Ok
c4 LOGOUT
* BYE Courier-IMAP server shutting down
c4 OK LOGOUT completed
Connection closed by foreign host.
Bu komutları ezberlemeniz gerekmez; ancak yukarıdaki örnek, bir e-posta istemcisinin IMAP sunucusu ile iletişim kurarken arka planda neler gerçekleştiğini net bir şekilde göstermektedir.

IMAP Yanıtını Anlamak

Sunucunun ilk yanıtında yer alan CAPABILITY ifadesine dikkat edin. Bu alan, sunucunun desteklediği özellikleri listeler. Keşif (reconnaissance) aşamasında bu bilgiler oldukça faydalıdır:
  • IMAP4rev1, sunucunun kullandığı IMAP sürümünü belirtir.
  • STARTTLS, sunucunun bağlantıyı şifreli bir bağlantıya yükseltmeyi desteklediğini gösterir.
  • IDLE, sunucunun yeni e-postalar geldiğinde istemciye bildirim gönderebilmesini sağlar.
  • ACL (Access Control List), erişim kontrol listesi desteğinin bulunduğunu gösterir.
LIST komutu ise klasör yapısını ortaya çıkarmıştır: INBOX, Trash, Drafts, Templates ve Sent. Bu bilgiler, posta kutusunun nasıl organize edildiğini gösterir ve aynı zamanda kimlik doğrulamanın başarıyla tamamlandığını doğrular.

Yaygın IMAP Komutları

KomutAçıklama
LOGIN username passwordKullanıcının kimliğini doğrular (oturum açar)
LIST "" "*"Tüm posta kutusu klasörlerini listeler
SELECT folderBir klasörü okuma/yazma erişimi için açar
EXAMINE folderBir klasörü salt okunur (read-only) erişim için açar
FETCH n BODY[]n numaralı mesajı getirir
SEARCH criteriaBelirtilen kriterlere uyan mesajları arar
STORE n +FLAGS (\Seen)n numaralı mesajı okunmuş olarak
Her IMAP komutunun önünde benzersiz bir etiket (tag) bulunmalıdır (örneğin c1, c2, c3).

IMAP ve Webmail Karşılaştırması

Günümüzde birçok kullanıcı, özel e-posta istemcileri yerine web tabanlı arayüzler (örneğin Gmail, Outlook.com vb.) üzerinden e-postalarına erişmektedir. Bu web arayüzleri, tarayıcı ile e-posta sağlayıcısının sunucuları arasındaki bağlantıyı güvence altına almak için HTTPS kullanır.
Ancak perde arkasında e-posta depolama sistemi hâlâ IMAP mantığına dayanır ve birçok kullanıcı, webmail erişiminin yanında geleneksel e-posta istemcilerini de yapılandırarak kullanır.
IMAP’i anlamak hâlâ önemlidir çünkü:

  • Kurumsal ortamlarda genellikle IMAP erişimi sunan özel posta sunucuları kullanılmaktadır.
  • Sızma testleri sırasında IMAP servisleriyle karşılaşılabilir.
  • Mobil cihazlar ve masaüstü e-posta istemcileri IMAP’i yaygın olarak kullanmaya devam etmektedir.
  • Bazı senaryolarda ele geçirilmiş IMAP kimlik bilgileri, webmail erişiminden daha kapsamlı erişim sağlayabilir.

Güvenlik Etkileri

IMAP, aşağıdaki örnekte görüldüğü gibi giriş bilgilerini düz metin (cleartext) olarak gönderebilir: LOGIN Ali D2xc9CgD. Ağ trafiğini izleyen herhangi bir kişi, Ali kullanıcı adını ve parolasını görebilir.
Kimlik bilgilerinin açığa çıkmasının ötesinde, ele geçirilmiş bir IMAP hesabı saldırganlar için özellikle değerlidir çünkü:

  • Kalıcı erişim: POP3’ün aksine, e-postalar sunucuda kalmaya devam eder. IMAP kimlik bilgilerini ele geçiren bir saldırgan, yeni gelen e-postaları süresiz olarak okuyabilir.
  • Geçmiş verilere erişim: Tüm posta kutusu geçmişine erişilebilir. Bu, yıllar boyunca birikmiş hassas yazışmaların ortaya çıkmasına neden olabilir.
  • Parola sıfırlama istismarı: Saldırganlar, diğer hesaplara erişim elde etmek için parola sıfırlama e-postalarını arayabilir ve kullanabilir.
  • Kurumsal e-posta ele geçirme (Business Email Compromise - BEC): Kurumsal e-posta erişimi; sahte fatura gönderimi, kimliğe bürünme (impersonation) ve veri hırsızlığı gibi saldırılara olanak sağlayabilir.
  • Yanal hareket (Lateral Movement): E-postalar genellikle kimlik bilgileri, kurum içi dokümanlar ve sonraki saldırılar için yararlı bilgiler içerir.
Bu nedenle, şifrelenmemiş IMAP kullanımı ciddi bir güvenlik riski oluşturur ve modern sistemlerde TLS ile korunan IMAPS (port 993) tercih edilmelidir.

Özet
Bu makale çeşitli protokoller, bunların kullanım amaçları ve arka planda nasıl çalıştıkları ele alındı. Saldırganların ilgisini çekebilecek başka birçok standart protokol de bulunmaktadır. Örneğin, Server Message Block (SMB) protokolü, ağlar arasında dosya ve yazıcı paylaşımı sağlar ve bu nedenle saldırganlar için cazip bir hedef olabilir. Amcak bu makalenin amacı yalnızca birkaç yaygın protokol hakkında sağlam bir temel anlayış kazandırmak ve bu protokollerin düşük seviyede nasıl çalıştığını göstermektir.

Önemli Çıkarımlar

Bu makalede ele alınan tüm protokoller, varsayılan olarak verileri düz metin (cleartext) şeklinde iletir; buna kimlik doğrulama bilgileri de dahildir. Bu, temel güvenlik dersidir: eğer trafik şifrelenmemişse, ağ erişimi olan herhangi biri kullanıcı adlarını, parolaları, e-posta içeriklerini ve dosya transferlerini yakalayabilir.

Telnet istemcisi, modern sistemlerde bir sunucu protokolü olarak kullanılmasa da, herhangi bir TCP portu üzerinde metin tabanlı protokollerle manuel olarak etkileşim kurmak için pratik bir test aracıdır. Bu teknik, bu makale boyunca HTTP, FTP, SMTP, POP3 ve IMAP protokollerinin düşük seviyede nasıl çalıştığını göstermek için kullanılmıştır. Her şifrelenmemiş protokol için güvenli bir alternatif bulunmaktadır. Modern sistemlerde, aktarım sırasında veriyi korumak için şifreli sürümler (HTTPS, SFTP, IMAPS, SSH) kullanılmalıdır.

ProtokolTCP PortuUygulama(lar)Veri GüvenliğiGüvenli AlternatifGüvenli Port
FTP21Dosya TransferiDüz metin (Cleartext)FTPS veya SFTP990 (FTPS), 22 (SFTP)
HTTP80Dünya Çapında Web (WWW)Düz metin (Cleartext)HTTPS443
IMAP143E-posta (MDA)Düz metin (Cleartext)IMAPS993
POP3110E-posta (MDA)Düz metin (Cleartext)POP3S995
SMTP25E-posta (MTA)Düz metin (Cleartext)SMTPS veya STARTTLS ile SMTP465 (SMTPS), 587 (Submission)
Telnet23Uzaktan ErişimDüz metin (Cleartext)SSH22
1780513472601.pngOkuduğunuz için teşekkür ederim



CW-Ommah
Bug Researchers Tim Sundu...

1780513500049.png