Lab’a erişmek için -> https://tryhackme.com/room/protocolsandservers2
Bir önceki oda olan protocols and server’da bir çok konuya değindik.
Telnet
HTTP
FTP
SMTP
POP3
IMAP
Bu protokolleri uygulayan sunucular farklı türde saldırılara maruz kalabilirler. Bunlardan bazıları:
- Sniffing Attack (Network Packet Capture)
- Man-in-the-Middle (MITM) Attack
- Password Attack (Authentication Attack)
- Vulnerabilities
Güvenlik açısından, her zaman neyi korumayı amaçladığımızı düşünmeliyiz; güvenlik üçlüsünü dikkate alalım: Gizlilik, Bütünlük ve Erişilebilirlik (CIA). Gizlilik, iletişimin içeriğinin sadece hedeflenen taraflar tarafından erişilebilir olmasını ifade eder. Bütünlük, gönderilen verinin hedefine ulaştığında doğru, tutarlı ve eksiksiz olmasını sağlamaktır. Son olarak, erişilebilirlik, hizmete ihtiyaç duyduğumuzda erişebilmemiz anlamına gelir. Farklı taraflar bu üç unsura farklı önem verirler. Örneğin, gizlilik bir istihbarat teşkilatı için en yüksek öncelik olacaktır. Online bankacılık, işlemlerin bütünlüğüne en fazla önemi verir. Reklamlarla para kazanan herhangi bir platform için ise erişilebilirlik en önemli unsurdur.
Gizlilik, Bütünlük ve Erişilebilirlik (CIA) unsurlarını korumamız gerektiğini bilerek, bir saldırının amacı Bilgi Açığı, Değişiklik ve Yok Etme (DAD) olarak hedeflenir. Aşağıdaki şekiller bunu yansıtmaktadır.
Bu saldırılar doğrudan sistemin güvenliğini etkiler. Örneğin, ağ paketlerini yakalama gizliliği ihlal eder ve bilginin açığa çıkmasına yol açar. Başarılı bir şifre saldırısı da bilgi açığa çıkmasına neden olabilir. Öte yandan, Ortadaki Adam (MITM) saldırısı, iletişilen verileri değiştirebileceği için sistemin bütünlüğünü bozar. Bu odada, bu üç saldırıya odaklanacağız çünkü bu saldırılar protokol tasarımı ve sunucu uygulaması için çok önemlidir.
Güvenlik açıkları daha geniş bir yelpazeye sahiptir ve istismar edilen güvenlik açıkları hedef sistemler üzerinde farklı etkiler yaratır. Örneğin, bir Hizmet Reddi (DoS) güvenlik açığını istismar etmek sistemin erişilebilirliğini etkileyebilirken, bir Uzaktan Kod Yürütme (RCE) güvenlik açığını istismar etmek daha ciddi zararlara yol açabilir. Bir güvenlik açığının kendisi bir risk oluşturur; zarar ancak güvenlik açığı istismar edildiğinde meydana gelebilir. Güvenlik açıklarını bu odada ele almıyoruz çünkü bunların kendi modülü olan Güvenlik Açığı Araştırması vardır.
Bu oda, bir protokolün, iletilen verilerin gizliliğini ve bütünlüğünü korumak için nasıl yükseltilebileceğini veya değiştirilebileceğini ele alacaktır. Diğer konuları kapsayan başka modüller önereceğiz.
Ayrıca, zayıf şifreleri bulmak için Hydra’yı tanıtıyoruz.
[Soru 1.1] Aşağıdaki görevleri yerine getirmeye devam ederken AttackBox’ı ve sanal makineyi başlatmanızı öneririz. Daha iyi pratik ve öğrenme deneyimi için Telnet veya Netcat üzerinden farklı hizmetlere bağlanabilirsiniz.
Cevap: Cevaba gerek yok.
Sniffing saldırısı, hedef hakkında bilgi toplamak için bir ağ paket yakalama aracının kullanılmasını ifade eder. Bir protokol açık metin olarak iletişim kurduğunda, değiş tokuş edilen veriler üçüncü bir taraf tarafından yakalanarak analiz edilebilir. Basit bir ağ paketi yakalama işlemi, veriler transit geçiş sırasında şifrelenmemişse, özel mesajların içeriği ve giriş kimlik bilgileri gibi bilgileri ortaya çıkarabilir.
Bir sniffing saldırısı, kullanıcı uygun izinlere sahipse (Linux’ta root izinleri ve MS Windows’ta yönetici ayrıcalıkları) bir Ethernet (802.3) ağ kartı kullanılarak gerçekleştirilebilir. Ağ paketlerini yakalamak için kullanılabilecek birçok program vardır. Şunları göz önünde bulunduruyoruz:
Tcpdump, birçok işletim sisteminde çalışacak şekilde taşınmış ücretsiz açık kaynaklı bir komut satırı arayüzü (CLI) programıdır.
Wireshark, Linux, macOS ve MS Windows dahil olmak üzere çeşitli işletim sistemleri için mevcut olan ücretsiz açık kaynaklı bir grafiksel kullanıcı arayüzü (GUI) programıdır.
Tshark, Wireshark’ın bir CLI alternatifidir.
Şifreleri ve hatta tam mesajları yakalamak için çeşitli özel araçlar vardır; ancak, bu yine de Tcpdump ve Wireshark ile biraz çaba sarf edilerek başarılabilir.
Bir kullanıcının POP3 kullanarak e-posta mesajlarını kontrol ettiğini düşünelim. İlk olarak, Tcpdump kullanarak kullanıcı adı ve şifreyi yakalamaya çalışacağız. Aşağıdaki terminal çıktısında, sudo tcpdump port 110 -A
komutunu kullandık. Bu komutu açıklamadan önce, bu saldırının ağ trafiğine erişim gerektirdiğini belirtmeliyiz, örneğin bir dinleme cihazı veya port yansıtması olan bir switch aracılığıyla. Alternatif olarak, başarılı bir Ortadaki Adam (MITM) saldırısı başlatırsak değiş tokuş edilen trafiğe erişebiliriz.
Paket yakalama işlemleri root ayrıcalıkları gerektirdiği için sudo komutunu kullanmamız gerekir. Yakalanan ve görüntülenen paketlerin sayısını POP3 sunucusuyla değiş tokuş edilenlerle sınırlamak istedik. POP3’ün port 110 kullandığını bildiğimiz için, port 110 kullanarak paketlerimizi filtreledik. Son olarak, yakalanan paketlerin içeriğini ASCII formatında görüntülemek istediğimiz için -A ekledik.
pentester@TryHackMe$ sudo tcpdump port 110 -A
[...]
09:05:15.132861 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [P.], seq 1:13, ack 19, win 502, options [nop,nop,TS val 423360697 ecr 3958275530], length 12
[email protected]@[email protected].
...
......n......"............
.;....}.USER frank
09:05:15.133465 IP 10.20.30.148.pop3 > 10.20.30.1.58386: Flags [.], ack 13, win 510, options [nop,nop,TS val 3958280553 ecr 423360697], length 0
E..4..@[email protected]~
...
....n....".........?P.....
...i.;..
09:05:15.133610 IP 10.20.30.148.pop3 > 10.20.30.1.58386: Flags [P.], seq 19:43, ack 13, win 510, options [nop,nop,TS val 3958280553 ecr 423360697], length 24
E..L..@[email protected]
...
....n....".........<-.....
...i.;..+OK Password required.
09:05:15.133660 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [.], ack 43, win 502, options [nop,nop,TS val 423360698 ecr 3958280553], length 0
E..4.W@[email protected].
...
......n......".....??.....
.;.....i
09:05:22.852695 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [P.], seq 13:28, ack 43, win 502, options [nop,nop,TS val 423368417 ecr 3958280553], length 15
E..C.X@[email protected].
...
......n......".....6......
.<.....iPASS D2xc9CgD
[...]
Yukarıdaki terminal çıktısında, önemli olmayan paketleri kaldırdık, böylece önemli olanlara daha iyi odaklanabilirsiniz. Özellikle, kullanıcı adı ve şifre kendi paketlerinde gönderildi. İlk paket açıkça “USER frank” ifadesini gösterirken, son paket şifreyi “PASS D2xc9CgD” olarak ortaya çıkarır.
Aynı sonuçları elde etmek için Wireshark’ı da kullanabiliriz. Aşağıdaki Wireshark penceresinde, filtre alanına pop yazdığımızı görebiliriz. Artık sadece ilgilendiğimiz trafiği filtrelediğimizde, yakalanan bir kullanıcı adı ve şifrenin olduğunu görebiliriz.
Kısaca, açık metin iletişimi kullanan herhangi bir protokol bu tür saldırılara karşı savunmasızdır. Bu saldırının başarılı olması için tek gereklilik, iletişim kuran iki sistem arasındaki bir sisteme erişim sağlamaktır. Bu saldırı dikkat gerektirir; önlemi, herhangi bir ağ protokolünün üzerine bir şifreleme katmanı eklemekte yatar. Özellikle, HTTP, FTP, SMTP, POP3, IMAP ve birçok diğer protokole Taşıma Katmanı Güvenliği (TLS) eklenmiştir. Uzaktan erişim için ise Telnet, güvenli alternatif Secure Shell (SSH) ile değiştirilmiştir.
Wireshark hakkında daha fazla bilgi edinmek isterseniz tryhackme wireshark 101 odasını tavsiye etmektedir. Benimde bu konu hakkındaki yazdığım yazıya ve bu odanın adım adım takibine buradan ulaşabilirsiniz.
[Soru 2.1] Yalnızca Telnet trafiğini yakalamak için sudo tcpdump komutuna ne eklemeniz gerekir?
Cevap: 23 numaralı bağlantı noktası
[Soru 2.2] Yalnızca IMAP trafiğini göstermek için Wireshark ile kullanabileceğiniz en basit görüntüleme filtresi nedir?
Cevap: imap
Ortadaki Adam (MITM) saldırısı, bir kurban (A) bir meşru hedefle (B) iletişim kurduğunu düşünürken, farkında olmadan bir saldırganla (E) iletişim kurduğunda meydana gelir. Aşağıdaki şekilde, A, M’ye $20 transferi talep eder; ancak E bu mesajı değiştirir ve orijinal değeri yeni bir değerle değiştirir. B, değiştirilen mesajı alır ve ona göre işlem yapar.
Eğer iki taraf her mesajın kimliğini ve bütünlüğünü doğrulamazsa, bu saldırıyı gerçekleştirmek nispeten basittir. Bazı durumlarda, seçilen protokol güvenli kimlik doğrulama veya bütünlük kontrolü sağlamaz; ayrıca, bazı protokoller bu tür saldırılara karşı savunmasız hale getiren doğuştan gelen güvensizliklere sahiptir.
Herhangi bir zamanda HTTP üzerinden gezinirken, bir MITM saldırısına maruz kalabilirsiniz ve korkutucu olan şey, bunu fark edememenizdir. Ettercap ve Bettercap gibi birçok araç bu tür bir saldırıyı gerçekleştirmenize yardımcı olabilir.
MITM ayrıca FTP, SMTP ve POP3 gibi diğer açık metin protokollerini de etkileyebilir. Bu saldırıya karşı önlem almak için kriptografi kullanılması gerekmektedir. Çözüm, değiş tokuş edilen mesajların uygun kimlik doğrulaması ile birlikte şifrelenmesi veya imzalanmasında yatar. Kamu Anahtarı Altyapısı (PKI) ve güvenilir kök sertifikaları ile Taşıma Katmanı Güvenliği (TLS), MITM saldırılarından korunmayı sağlar.
[Soru 3.1] Ettercap kaç farklı arayüz sunuyor?
Cevap: 3
[Soru 3.2] Bettercap’i kaç şekilde çağırabilirsiniz?
Cevap: 3
Bu taskda , exchange edilen paketlerin gizliliğini ve bütünlüğünü korumak için standart bir çözümü öğreniyoruz. Aşağıdaki yaklaşım, password sniffing ve MITM saldırılarına karşı koruma sağlayabilir.
SSL (Secure Socket Layer), dünya çapında ağ yeni uygulamalar görmeye başladığında, örneğin çevrimiçi alışveriş ve ödeme bilgileri gönderme gibi durumlarda başladı. Netscape, SSL’i 1994 yılında tanıttı ve SSL 3.0 1996 yılında piyasaya sürüldü. Ancak zamanla daha fazla güvenlik gerekti ve 1999 yılında TLS (Taşıma Katmanı Güvenliği) protokolü tanıtıldı. TLS ve SSL’in ne sağladığını açıklamadan önce, nasıl ağ modeline uyduklarını görelim.
Bu odada ele aldığımız yaygın protokoller verileri açık metin olarak gönderir; bu, ağa erişimi olan herhangi bir kişinin değiş tokuş edilen mesajları yakalayıp, kaydedip analiz edebilmesini mümkün kılar. Aşağıdaki resim ISO/OSI ağ katmanlarını göstermektedir. Bu odada ele aldığımız protokoller uygulama katmanındadır. ISO/OSI modelini dikkate alırsak, protokollerimize şifreleme ekleyebiliriz; bu, verilerin orijinal formu yerine şifreli formatta (ciphertext) sunulacağı anlamına gelir.
SSL ve TLS arasındaki yakın ilişki, her iki terimin de genellikle birbirinin yerine kullanılmasına neden olmuştur. Ancak, güvenlik açısından TLS, SSL’den çok daha ileri bir seviyededir ve modern güvenlik standartlarına uygundur. Aslında, SSL’in çeşitli güvenlik açıkları nedeniyle, TLS onun yerini almıştır. Bugün, tüm modern sunucuların ve uygulamaların TLS kullanmasını bekleyebiliriz.
Bununla birlikte, SSL terimi hala yaygın olarak kullanıldığı için, birçok kaynakta ve tartışmada SSL/TLS olarak geçer. Bu, özellikle daha eski sistemlerde veya belgelerde karşılaşıldığında kafa karışıklığını önlemeye yardımcı olur. Ancak, pratikte her zaman TLS kullanmamız gerektiğini akılda tutmak önemlidir.
Var olan bir açık metin protokolü, SSL/TLS kullanarak şifreleme eklenerek daha güvenli hale getirilebilir. Bu, temel olarak, protokolün verilerini şifreleyerek güvenli hale getirir ve böylece ağ üzerindeki kötü niyetli kişiler tarafından okunmasını veya değiştirilmesini önler. HTTP, FTP, SMTP, POP3 ve IMAP gibi yaygın kullanılan protokoller, SSL/TLS kullanılarak şifrelenebilir.
Aşağıdaki tablo, bu protokollerin şifreleme öncesi ve sonrası varsayılan portlarını göstermektedir. Bu, protokol yükseltmelerinin anlaşılmasını kolaylaştırır:
Protokol | Şifreleme Öncesi Varsayılan Port | SSL/TLS Üzerinden Şifreleme Sonrası Varsayılan Port |
---|---|---|
HTTP | 80 | 443 |
FTP | 21 | 990 |
SMTP | 25 | 465 |
POP3 | 110 | 995 |
IMAP | 143 | 993 |
Bu tabloda görüldüğü gibi, SSL/TLS kullanımı ile her protokolün varsayılan port numarası da değişmektedir. Örneğin, HTTP 80 numaralı port üzerinden çalışırken, HTTPS (TLS kullanarak şifrelenmiş HTTP) 443 numaralı port üzerinden çalışır. Bu, şifrelenmiş ve şifrelenmemiş trafiği ayırt etmeyi ve yönetmeyi kolaylaştırır.
Sonuç olarak, SSL/TLS kullanarak var olan protokollerimizi daha güvenli hale getirebiliriz. Bu, hem kullanıcılarımızın verilerini korumak hem de güvenli bir iletişim sağlamak için kritik bir adımdır. SSL’in yerini TLS almıştır ve modern güvenlik standartlarına uygun olarak, tüm sunucularımızın ve uygulamalarımızın TLS kullanmasını sağlamalıyız.
HTTP durumunu ele aldığımızda, bir web sayfasını HTTP üzerinden almak için web tarayıcısının en az iki adımı gerçekleştirmesi gerekir:
- Uzak web sunucusu ile bir TCP bağlantısı kurmak
- Web sunucusuna HTTP istekleri göndermek, örneğin GET ve POST istekleri.
HTTPS, trafiği şifrelemek için ek bir adım gerektirir. Bu yeni adım, bir TCP bağlantısı kurulduktan sonra ve HTTP isteklerini göndermeden önce gerçekleşir. Bu ekstra adım, daha önce sunulan ISO/OSI modelinden çıkarılabilir. Dolayısıyla, HTTPS en az aşağıdaki üç adımı gerektirir:
- TCP bağlantısı kurmak
- SSL/TLS bağlantısı kurmak
- Web sunucusuna HTTP istekleri göndermek
SSL/TLS bağlantısını kurmak için, istemcinin sunucu ile doğru el sıkışma (handshake) işlemini gerçekleştirmesi gerekir. RFC 6101’e göre, SSL bağlantısı kurulumu aşağıdaki şekilde olacaktır:
TCP bağlantısı kurulduktan sonra, istemci SSL/TLS bağlantısını kurar. Terimler karmaşık görünebilir, ancak dört adımı basitleştirebiliriz:
- İstemci, sunucuya desteklediği algoritmalar gibi yeteneklerini belirten bir ClientHello mesajı gönderir.
- Sunucu, seçilen bağlantı parametrelerini belirten bir ServerHello yanıtı gönderir. Sunucu, sunucu kimlik doğrulaması gerekliyse sertifikasını sağlar. Sertifika, genellikle üçüncü bir tarafça dijital olarak imzalanmış dijital bir dosyadır. Ayrıca, master anahtarın oluşturulması için gerekli ek bilgileri içeren ServerKeyExchange mesajını gönderebilir ve ardından müzakerelerin tamamlandığını belirten ServerHelloDone mesajını gönderir.
- İstemci, master anahtarın oluşturulması için gerekli ek bilgileri içeren bir ClientKeyExchange mesajı gönderir. Ayrıca, şifrelemeyi kullanmaya geçer ve bunu ChangeCipherSpec mesajı ile sunucuya bildirir.
- Sunucu da şifrelemeyi kullanmaya geçer ve bunu ChangeCipherSpec mesajı ile istemciye bildirir.
Bu hala karmaşık görünüyorsa endişelenmeyin; sadece ana hatlarıyla anlamanız yeterlidir. İstemci, bir genel sertifikaya sahip bir sunucu ile bir gizli anahtar üzerinde anlaşabilmiştir. Bu gizli anahtar, bir üçüncü tarafın kanal üzerindeki iletişimi izlemesi durumunda keşfedilemeyecek şekilde güvenli bir şekilde oluşturulmuştur. İstemci ve sunucu arasındaki sonraki iletişim, oluşturulan anahtar kullanılarak şifrelenir.
Sonuç olarak, bir SSL/TLS el sıkışması kurulduğunda, HTTP istekleri ve değiş tokuş edilen veriler iletişim kanalını izleyen herhangi bir kişi tarafından erişilemez hale gelir.
Son olarak, SSL/TLS’in etkili olabilmesi için, özellikle HTTPS üzerinden web taraması yaparken, sistemlerimiz tarafından güvenilir bir sertifika otoritesi tarafından imzalanmış genel sertifikalara güveniriz. Başka bir deyişle, HTTPS üzerinden TryHackMe’ye göz attığımızda, tarayıcımız TryHackMe web sunucusunun güvenilir bir sertifika otoritesi tarafından imzalanmış bir sertifika sunmasını bekler. Bu şekilde, tarayıcımız doğru sunucu ile iletişim kurduğunu garanti eder ve bir MITM saldırısı gerçekleşemez.
Yukarıdaki şekilde aşağıdaki bilgileri görebiliriz:
- Sertifika kime verilmiş? Yani bu sertifikayı kullanacak şirketin adı.
- Sertifikayı kim verdi? Bu, bu sertifikayı veren sertifika otoritesidir.
- Geçerlilik süresi. Örneğin, süresi dolmuş bir sertifikayı kullanmak istemezsiniz.
Neyse ki, her ziyaret ettiğimiz site için sertifikayı manuel olarak kontrol etmemize gerek yok; web tarayıcımız bunu bizim için yapacaktır. Web tarayıcımız, doğru sunucu ile iletişim kurduğumuzu ve iletişimimizin güvenli olduğunu, sunucunun sertifikası sayesinde garanti eder.
[Soru 4.1] DNS de TLS kullanılarak güvence altına alınabilir. TLS kullanan DNS protokolünün üç harfli kısaltması nedir?
Cevap: DoT
Secure Shell (SSH), uzak sistem yönetimi için güvenli bir yol sağlamak amacıyla oluşturulmuştur. Başka bir deyişle, SSH, ağ üzerinden başka bir sisteme güvenli bir şekilde bağlanmanızı ve uzaktaki sistemde komutlar çalıştırmanızı sağlar. Kısaca, SSH’deki “S” güvenliği ifade eder ve şu şekilde özetlenebilir:
- Uzak sunucunun kimliğini doğrulayabilirsiniz
- Alınan mesajlar şifrelenir ve sadece hedef alıcı tarafından çözülebilir
- Her iki taraf da mesajlardaki herhangi bir değişikliği tespit edebilir
Bu üç nokta kriptografi tarafından sağlanır. Daha teknik terimlerle, bunlar gizlilik ve bütünlük açısından, farklı şifreleme algoritmalarının doğru kullanımıyla mümkün kılınır.
SSH kullanmak için bir SSH sunucusuna ve bir SSH istemcisine ihtiyacınız vardır. SSH sunucusu varsayılan olarak 22 numaralı portu dinler. SSH istemcisi, aşağıdaki yöntemlerle kimlik doğrulaması yapabilir:
- Bir kullanıcı adı ve şifre
- Bir özel anahtar ve bir genel anahtar (SSH sunucusu, karşılık gelen genel anahtarı tanıyacak şekilde yapılandırıldıktan sonra)
Linux, macOS ve 2018’den sonraki MS Windows sürümlerinde, bir SSH sunucusuna şu komutla bağlanabilirsiniz: ssh [email protected]
. Bu komut, IP adresi 10.10.143.175 olan sunucuya username
ile bağlanmaya çalışır. Eğer varsayılan portta bir SSH sunucusu dinliyorsa, sizden username
için şifre girmenizi isteyecektir. Kimlik doğrulaması yapıldıktan sonra, kullanıcı hedef sunucunun terminaline erişim sağlar. Terminal çıktısı aşağıda, bir Debian Linux sunucusuna SSH ile erişim örneğidir.
user@TryHackMe$ ssh [email protected]
[email protected]'s password: XBtc49AB
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep 20 13:53:17 2021
mark@debian8:~$
Yukarıdaki örnekte, ssh [email protected]
komutunu verdik. Ardından, doğru şifreyi girdikten sonra uzak sistemin terminaline erişim sağladık. SSH, uzak yönetim için çok güvenilirdir çünkü kullanıcı adımız ve şifremiz şifreli olarak gönderilir; ayrıca, uzak sistemde yürüttüğümüz tüm komutlar şifreli bir kanal üzerinden iletilir.
Bu sistemle ilk kez bağlantı kuruyorsak, SSH sunucusunun genel anahtarının parmak izini onaylamamız gerekecektir; böylece man-in-the-middle (MITM) saldırılarına karşı korunmuş oluruz. Daha önce açıklandığı gibi, MITM, kötü niyetli bir tarafın, E, kendini A ve B’nin arasına yerleştirip, A ile B arasında doğrudan iletişim kuruyormuş gibi davranarak, A ile B’yi manipüle ettiği bir saldırıdır. SSH durumunda, genellikle genel anahtarın geçerliliğini kontrol etmek için üçüncü bir tarafımız olmaz, bu yüzden bunu manuel olarak yapmamız gerekir. Bu saldırı aşağıdaki şekilde gösterilmiştir.
SSH kullanarak dosya transferi yapabiliriz; bunun için SCP (Secure Copy Protocol) kullanılabilir. Bir örnek sözdizimi şu şekildedir: scp [email protected]:/home/mark/archive.tar.gz ~
. Bu komut, uzak sistemdeki /home/mark dizininde bulunan archive.tar.gz adlı dosyayı, yerel sistemdeki ~ yani şu anda giriş yapılmış kullanıcının ana dizinine kopyalar.
Bir diğer örnek sözdizimi ise scp backup.tar.bz2 [email protected]:/home/mark/
şeklindedir. Bu komut, yerel sistemdeki backup.tar.bz2 dosyasını uzak sistemdeki /home/mark/ dizinine kopyalar.
user@TryHackMe$ scp document.txt [email protected]:/home/mark [email protected]'s password: document.txt 100% 1997KB 70.4MB/s 00:00
Son bir not olarak, FTP, 990 numaralı bağlantı noktasını kullanan FTPS protokolü kullanılarak SSL/TLS ile güvence altına alınabilir. FTP’nin SFTP protokolü olan SSH protokolü kullanılarak da güvence altına alınabileceğini belirtmek gerekir. Varsayılan olarak bu hizmet tıpkı SSH gibi 22 numaralı bağlantı noktasını dinler.
[Soru 5.1] sistemine mark olarak XBtc49AB şifresiyle SSH ile bağlanın. uname -r komutunu kullanarak Kernel sürümünü öğrenin?
Cevap: 5.4.0-84-generic
[Soru 5.2] Uzak sistemden book.txt dosyasını indirmek için SSH kullanın. Scp indirme boyutu olarak kaç KB gösterdi?
Cevap: 415
Önce dosya neredeymiş diye bir bakalım aşağıda görüldüğü üzere mark altında.
scp [email protected]:/home/mark/book.txt .
bu komut ile scp çalıştırdığım dizinde yani /home/yahusa/Desktop/TryHackMe/ports-and-protocols2 dizini içerisine home/mark/book.txt’yi çekmesini söylüyorum
Ağ paket yakalamaları ve MITM saldırıları ile bu saldırıların TLS ve SSH kullanılarak nasıl önlenebileceğini tartıştık. Bu odada ele alacağımız üçüncü saldırı türü ise şifre saldırısıdır.
Birçok protokol kimlik doğrulamanızı gerektirir. Kimlik doğrulama, kendinizi iddia ettiğiniz kişi olarak kanıtlamaktır. POP3 gibi protokoller kullanırken, kimliğimizi doğrulamadan posta kutusuna erişim sağlanmamalıdır. Protocols and Servers odasındaki POP3 örneği aşağıda tekrar edilmiştir. Bu örnekte, kullanıcı olarak frank olarak tanımlandık ve doğru şifreyi sağladığımız için sunucu bizi doğruladı. Başka bir deyişle, şifre kimlik doğrulamanın bir yoludur.
pentester@TryHackMe$ telnet 10.10.143.175 110
Trying 10.10.143.175...
Connected to 10.10.143.175.
Escape character is '^]'.
+OK 10.10.143.175 Mail Server POP3 Wed, 15 Sep 2021 11:05:34 +0300
USER frank
+OK frank
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: Frank
subject: Sending email with Telnet
Hello Frank,
I am just writing to say hi!
.
QUIT
+OK 10.10.143.175 closing connection
Connection closed by foreign host.
Kimlik doğrulama veya kimliğinizi kanıtlama, aşağıdakilerden biri veya ikisinin kombinasyonu aracılığıyla sağlanabilir:
- Bildiğiniz bir şey, örneğin şifre veya PIN kodu.
- Sahip olduğunuz bir şey, örneğin SIM kart, RFID kartı veya USB dongle.
- Bir özelliğiniz, örneğin parmak izi veya iris.
Bu görev, şifre saldırılarına, yani hedefin bildiği bir şeye odaklanacaktır. Önceki sunucularla, Telnet, SSH, POP3 ve IMAP gibi protokoller kullanarak yapılan iletişimlerde her zaman bir şifreye ihtiyaç duyarız. 2013’te Adobe’ye yönelik bir sızıntıda 150 milyon kullanıcı adı ve şifrenin yer aldığı verilerden, en yaygın 10 şifre şunlardır:
- 123456
- 123456789
- password
- adobe123
- 12345678
- qwerty
- 1234567
- 111111
- photoshop
- 123123
Bu şifrelerden yalnızca ikisi Adobe ve ürünleri ile ilgiliyken, diğerleri genel kullanımdadır. Geçtiğimiz on yıl içinde bunun değiştiğini düşünebilirsiniz; ancak 123456, 1234567, 12345678 ve 123456789 hala birçok kullanıcı tarafından tercih edilen şifrelerdir. Diğerleri hala qwerty’nin gizli bir şifre olmadığını anlamamış durumda ve bu şifreyi birçok kişi kullanıyor.
Şifre saldırıları genellikle şu şekilde gerçekleştirilir:
- Şifre Tahmin Etme: Bir şifreyi tahmin etmek, hedef hakkında bazı bilgilere sahip olmayı gerektirir, örneğin evcil hayvanının adı veya doğum yılı.
- Sözlük Saldırısı: Bu yaklaşım, şifre tahmin etmeyi genişletir ve bir sözlükteki veya kelime listesinde bulunan tüm geçerli kelimeleri denemeye çalışır.
- Kaba Güç Saldırısı: Bu saldırı en kapsamlı ve zaman alıcı olanıdır. Bir saldırgan, tüm olası karakter kombinasyonlarını denemeye kadar gidebilir, bu da karakter sayısıyla hızlı bir şekilde büyüyen bir kombinasyon sayısına yol açar.
Sözlük saldırılarına odaklanalım. Zamanla, bilgisayar korsanları sızıntı verilerinden oluşan liste liste derlediler. Bir örnek, RockYou’nun sızdırılmış şifreler listesi olup, AttackBox’ta /usr/share/wordlists/rockyou.txt dosyasında bulunabilir. Kelime listesi seçimi hedef hakkında bilginize bağlı olmalıdır. Örneğin, Fransız bir kullanıcı İngilizce yerine Fransızca bir kelime kullanabilir. Dolayısıyla, Fransızca bir kelime listesi daha umut verici olabilir.
Ortak şifreleri veya kelime listesindeki girişleri denemek için otomatik bir yöntem istiyoruz; işte burada THC Hydra devreye giriyor. Hydra, FTP, POP3, IMAP, SMTP, SSH ve HTTP ile ilgili tüm yöntemleri de içeren birçok protokolü destekler. Genel komut satırı sözdizimi şudur: hydra -l kullanıcı_adı -P kelime_listesi.txt sunucu hizmet
burada şu seçenekleri belirtiyoruz:
- -l kullanıcı_adı: -l, hedefin giriş adını belirtir, yani hedefin giriş adı.
- -P kelime_listesi.txt: -P, denemek istediğiniz şifreleri içeren kelime_listesi.txt dosyasını belirtir.
- sunucu: Hedef sunucunun ana bilgisayar adı veya IP adresi.
- hizmet: Sözlük saldırısını başlatmaya çalıştığınız hizmet.
Aşağıdaki somut örnekleri göz önünde bulundurun:
hydra -l mark -P /usr/share/wordlists/rockyou.txt 10.10.143.175 ftp
komutu, mark kullanıcı adını kullanarak FTP sunucusu üzerinde verilen şifreleri iteratif olarak dener.hydra -l mark -P /usr/share/wordlists/rockyou.txt ftp://10.10.143.175
komutu, önceki örnekle aynıdır. 10.10.143.175 ftp, ftp://10.10.143.175 ile aynı anlama gelir.hydra -l frank -P /usr/share/wordlists/rockyou.txt 10.10.143.175 ssh
komutu, frank kullanıcı adını kullanarak SSH üzerinden çeşitli şifrelerle giriş yapmayı dener.
Ek olarak ekleyebileceğiniz bazı opsiyonel argümanlar:
- -s PORT: İlgili hizmet için varsayılan olmayan bir port belirtir.
- -V veya -vV: Verbose, Hydra’nın denenmeye çalışan kullanıcı adı ve şifre kombinasyonlarını göstermesini sağlar. Bu ayrıntı seviyesi, özellikle komut satırı sözdiziminden emin değilseniz ilerlemeyi görmek için çok kullanışlıdır.
- -t n: n, hedefe paralel bağlantı sayısını belirtir. -t 16, hedefe bağlanmak için 16 iş parçacığı oluşturur.
- -d: Debugging, olan biten hakkında daha ayrıntılı bilgi verir. Debugging çıktısı, örneğin Hydra’nın kapalı bir port ile bağlantı kurmaya çalıştığını ve zaman aşımına uğradığını hemen gösterebilir.
Şifre bulunduğunda, CTRL-C ile işlemi sonlandırabilirsiniz. TryHackMe görevlerinde herhangi bir saldırının beş dakika içinde tamamlanmasını bekleriz; ancak, gerçek hayatta saldırı genellikle daha uzun sürebilir. Verbosity veya debugging seçenekleri, Hydra’nın ilerlemesi hakkında bilgi vermesi açısından oldukça faydalı olabilir.
Özetle, giriş sistemlerine yönelik saldırılar, uygun bir kelime listesi ile THC Hydra gibi bir araç kullanılarak verimli bir şekilde gerçekleştirilebilir. Bu tür saldırılara karşı korunma, hedef sisteme bağlı olarak karmaşık olabilir. Bazı yaklaşımlar şunlardır:
- Şifre Politikası: Kullanıcı tarafından belirlenen şifrelerde minimum karmaşıklık kısıtlamalarını uygular.
- Hesap Kilitleme: Belirli bir sayıda başarısız denemeden sonra hesabı kilitler.
- Kimlik Doğrulama Denemelerini Sınırlama: Giriş denemesine yanıt verme süresini geciktirir. Birkaç saniyelik bir gecikme, şifreyi bilen biri için toleranslı olabilir, ancak otomatik araçları ciddi şekilde engelleyebilir.
- CAPTCHA Kullanma: Makinaların çözmesi zor bir soruyu çözmelerini gerektirir. Bu, GUI tabanlı giriş sayfalarında iyi çalışır. (Not: CAPTCHA, Bilgisayarları ve İnsanları Ayırt Etmek için Tamamen Otomatik Kamu Turing Testi anlamına gelir.)
- Kamu Sertifikası Kullanımını Gerektirme: Bu yaklaşım, örneğin SSH ile iyi çalışır.
- İki Faktörlü Kimlik Doğrulama: Kullanıcıdan e-posta, akıllı telefon uygulaması veya SMS gibi diğer yollarla elde edilebilen bir kod sağlamasını ister.
Bu yaklaşımlardan bir kombinasyonunu kullanmak, şifre saldırılarına karşı korunmak için mükemmel bir yaklaşımdır.
[Soru 6.1] E-posta hesaplarından birinin lazie olduğunu öğrendik. MACHINE_IP üzerinde IMAP hizmetine erişmek için kullanılan parola nedir?
Cevap: Butterfly
hydra -l lazie -P /usr/share/wordlists/rockyou.txt -f 10.10.143.175 imap -V
Bu oda, çeşitli protokoller, kullanım alanları ve nasıl çalıştıkları hakkında bilgi verdi. Üç yaygın saldırı türü şunlardır:
- Dinleme Saldırısı (Sniffing Attack)
- Ortadaki Adam Saldırısı (MITM Attack)
- Şifre Saldırısı (Password Attack)
Her biri için saldırı detaylarına ve azaltma adımlarına odaklandık.
Belirli sunucular ve protokoller karşısında gerçekleştirilebilecek birçok başka saldırı bulunmaktadır. İlgili bazı modüllerin listesi aşağıda verilmiştir:
- Güvenlik Açığı Araştırması (Vulnerability Research): Güvenlik açıkları ve istismarlar hakkında daha fazla bilgi sağlar.
- Metasploit: Metasploit’i kullanarak hedef sistemleri nasıl istismar edeceğinizi öğretir.
- Burp Suite: HTTP trafiğini yakalamak ve web ile ilgili saldırılar başlatmak için Burp Suite’i nasıl kullanacağınızı öğretir.
Yaygın protokoller için varsayılan port numaralarını hatırlamak faydalı olabilir. Kolaylık sağlamak adına, incelediğimiz hizmetlerin alfabetik sırayla listesi aşağıda verilmiştir.
Protokol | TCP Port | Uygulama(lar) | Veri Güvenliği |
---|---|---|---|
FTP | 21 | Dosya Transferi | Düz Metin |
FTPS | 990 | Dosya Transferi | Şifrelenmiş |
HTTP | 80 | Dünya Çapında Web | Düz Metin |
HTTPS | 443 | Dünya Çapında Web | Şifrelenmiş |
IMAP | 143 | E-posta (MDA) | Düz Metin |
IMAPS | 993 | E-posta (MDA) | Şifrelenmiş |
POP3 | 110 | E-posta (MDA) | Düz Metin |
POP3S | 995 | E-posta (MDA) | Şifrelenmiş |
SFTP | 22 | Dosya Transferi | Şifrelenmiş |
SSH | 22 | Uzaktan Erişim ve Dosya Transferi | Şifrelenmiş |
SMTP | 25 | E-posta (MTA) | Düz Metin |
SMTPS | 465 | E-posta (MTA) | Şifrelenmiş |
Telnet | 23 | Uzaktan Erişim | Düz Metin |
Hydra, farklı şifreleri denemek için terminalden başlatabileceğiniz çok etkili bir araçtır. Ana seçeneklerini aşağıdaki tabloda özetliyoruz.
Seçenek | Açıklama |
---|---|
-l kullanıcı_adı | Giriş adını sağlar |
-P WordList.txt | Kullanılacak şifre listesini belirtir |
server hizmet | Sunucu adresini ve saldırmak istediğiniz hizmeti ayarlar |
-s PORT | Varsayılan olmayan hizmet port numarası kullanır |
-V veya -vV | Denenen kullanıcı adı ve şifre kombinasyonlarını gösterir |
-d | Ayrıntılı hata ayıklama çıktısını gösterir |
Soruları yanıtladıktan sonra, Ağ Güvenliği modülünün sekizinci odasını tamamladınız. Lütfen bu modülün son odasına geçerek becerilerinizi test edin.