SİBER GÜVENLİK TEMELLERİ (NETWORK)
Arkadaşlar herkese selamlar bu makalede sizlerle serisini hazırladığım siber güvenlikçi olacağım network alanını inceliyeceğiz.
Neler Öğreneceğim.
# IP Adresleri nedir? ve nasıl atanırlar?
# TCP / IP ve UDPyi mantığını kavrama
# Wireshark Temel Filtreleme ve operatörler
# PCAps analiz etme (SMB, HTTP)
# Hedef sistemde yetki yükseltme
# Sunucu hackleme ve sunucu hakkında bilgi toplama ( exploit vb.)
IP Adresi nedir?
Ip adresi internet ağına bağlı olan tüm cihazlarda bulunmakta. Web siteleri, laptop, tablet, telefon vb. İnternet Protocol Adress yani Ip adresi internete bağlanan tüm cihazlara atanan sanal adrestir. İnternet ağı trafiğini sağlayan ip adresleri internetin çalışma kurallarını tanımlayan protokolün en önemli parçasıdır.
Bir mektup gönderirken, mektubun gideceği adresi belirtmelisiniz ve mektubun kaybolması durumunda (veya alıcıya nasıl yanıt vereceğini bildirmek istiyorsanız) iade adresi olarak adresinizi eklemek en iyi uygulamadır. Bir IP adresi aynı amaca hizmet eder, ancak bir ağa bağlı cihazlar için İnternete bağlı cihazlar bu adreslerden ikisine sahip olacaktır - bir genel ve bir özel adres. Joe Smith gibi bir işyerindeki alıcının adı olarak özel bir adresi düşünün ve genel adresi bu işletmenin konumu olarak düşünün, yani 160 Kemp Road, Londra.
Diyelim ki bilgisayarınız üzerinden internete giriyorsunuz. Bilgisayarınız iki ağın parçası olacak ve sırayla hem genel hem de özel IP adresini kullanacaktır;
# Evinizin ağındaki diğer cihazlar (akıllı telefonlar, TV‘ler ve diğer bilgisayarlar gibi) arasında kendisini tanımlamak için özel bir IP adresi. Aşağıdaki ekran görüntüsünde, iki cihaz aşağıdaki özel IP adresine sahiptir;
İnternet Servis Sağlayıcınız (ISP) tarafından internetteki evinizi tanımlayan genel bir IP adresi verilmiştir (İnternet sadece çok sayıda, birbirine bağlı birçok ağdır). Yukarıdaki örneğimizi kullanarak, iki cihaz kendilerini İnternette tanımlamak için genel bir IP adresini görmekteyiz;
Protokoller
Günlük yaşamda protokolleri kullanıyorsunuz. Biriyle konuşurken, ikiniz de aynı protokol setini kullanmaktasınız, aksi takdirde kimse birbirini anlamayacaktır. En azından sohbet etmek isteyen tüm taraflar aynı protokolü kullanmak zorundadırlar. Diğer protokoller ayrıca konuşmanın bağlamını veya konusunu da içerebilir. Herhangi biri bu protokollerden saparsa anlaşılmama riski taşımaktadır. Bu, ağa bağlı cihazlar için aynıdır.
TCP/IPnin günümüzün en yaygın olması nedeniyle, bunu daha fazla tartışacağız. TCP/IP, gönderilen tüm verilerin aynı sırada işlenmesini sağlayan bir protokoldür. Posta sistemimize geri dönersek, mektubunuz birçok yere gidecek, hatta yurtiçinde gönderilecek. Bilgisayar trafiğiniz, yönlendirme adı verilen bir işlemde aygıttan aygıta giderek aynı şeyi yapar. Bir cihaz, verileri daha hızlı (ve sonucu farklı bir sırayla) iletebilir, ardından bir diğeri aşağıdaki gibi doğruluğun önemli olduğu durumlarda çeşitli sıkıntılara yol açabilir.
# Dosyaları indirme
# Tarayıcınızda bir web sitesini ziyaret etme
# e-posta gönderme
Bu, tüm paketlere sahip olmanın o kadar önemli olmadığı UDP protokolünden farklıdır (protokolün TCP/IP‘den çok daha hızlı olmasını sağlar), bu nedenle video akışı gibi uygulamalar UDP‘yi (yani Skype) kullanır. Hala resmin çoğunu görebildiğimiz için birkaç paketin kaybolması umurumuzda değil.
TCP/IP Nasıl Veri Gönderir?
Gönderilen herhangi bir veriye rastgele bir sayı dizisi verilir ve bu sayı dizisi kullanılarak ve 1er artırılarak yeniden oluşturulur. Verilerin doğru sırada gönderilebilmesi için her iki bilgisayar da aynı sayı dizisi üzerinde anlaşmalıdır. Bu olay, üç aşamada oluşmakta.
Aşağıdaki şemada, İstemci, Sunucu nun 5000 olduğu 0 ilk sıra numarasına (ISN) sahiptir. İstemci[/FONT] den gönderilen ve [MAGENTA]Sunucu[/FONT] ya alınan tüm veriler ilk sıra + 1 olacaktır. Bu, İstemci den gelen ilk paketse, 0 + 1 olacaktır. Bunu göstermeye yardımcı olmak için aşağıdaki tabloda Müşteriden gönderilen üç paketi gösterdim;
1-) SYN - İstemci: İşte (0) ile SYN ile senkronize edilecek ilk numara dizim (ISN)
2-) SYN / ACK - Sunucu: İşte benim ilk Numara Sırası ile (ISN) SYN ile chronise (5.000) ve ACK başlangıçtaki sayı dizisi nowledge (0)
3-) ACK - Müşteri: Ben ACK senin Başlangıç Numarası Sırasına (ISN) (5000) nowledge burada +1 benim ISN bazı veridir.
Veri alındığında, alıcı tarafından yeniden birleştirilir. Yeniden birleştirmenin gerekli olduğu koşulları gösterelim;
TCP yeniden birleştirme verilerine örnekler
Yeniden montaj gerekmez
Sunucu alınan veriyi veya verileri İstemci den gönderildiği sırayla alacaksa;
# 1. Gönderildi - 1. Alındı
# 2. Gönderildi - 2. Alındı
# 3. Gönderildi - 3. Alındı
Daha sonra veriler tam olarak gönderildiği sırayla alındığından yeniden birleştirmeye gerek yoktur.
Yeniden montaj gerekli
Örneğin, Sunucu tüm verileri ancak gönderilenden farklı bir sırada alacaksa, yeniden birleştirme gerekir;
# 1. Gönderildi - 1. Alındı
# 2. Gönderildi - 3. Alındı
# 3. Gönderildi - 2. Alındı
Tüm veriler farklı bir sırayla alındığından, üç yönlü el sıkışma sırasında değiş tokuş edilecek olan kararlaştırılan sıra numaraları kullanılarak yeniden birleştirilebilir.
Bağlantı kesildi
İstemci üç paket gönderecekse , ancak Sunucu üç paketten yalnızca ikisini alıyorsa, gönderilen veriler bozuk olduğu için birbirleriyle bağlantıları kesilir;
#[/FONT] 1. Gönderildi - 1. Alındı
[MAGENTA]#[/FONT] 2. Gönderildi - Alınmadı
[ORANGE]#[/FONT] 3. Gönderildi - 2. Alındı
İstemci tarafından 2. gönderilen paket hiçbir zaman Sunucu tarafından alınmadığı için veriler Sunucu tarafından işlenmez, bu da yol boyunca veri kaybı olduğu anlamına gelir.
Ağ Trafiğini İzlemede Hızlandırılmış Kurs
Bir ağda neyin dolaştığını tam olarak yakalayabilmek ve bunu anlamak bilgi teknolojisinde önemli bir beceridir. Tanılamadan kimlik bilgilerini yakalamaya kadar, sistem yöneticilerinden dijital adli bilişim uzmanlarına kadar BTdeki pozisyonların tümü ağ trafiğini kendi yöntemleriyle kullanır. Örneğin, HTTP veya FTP yoluyla gönderilen veriler şifrelenmemiş olduğundan, bir pentester bir web sitesine girilen kullanıcı adlarını ve şifreleri yakalayabilir.
Wireshark Tanıtımı
Wireshark, bir bilgisayarın ağ bağdaştırıcısına gönderilen ve alınan tüm paketlerin günlüğünü kaydetme yeteneğine sahiptir. Örneğin, bir bilgisayarın (kırmızıyla vurgulanmış) HTTP üzerinden bir web sunucusu çalıştıran bir bilgisayara (siyahla vurgulanmış) nasıl bağlandığını görebiliriz, bu durumda bu web sayfasıydı: web_server/download.HTML. kendimiz için dışa aktarabilir ve görüntüleyebilir;
Ancak ağlar oldukça gürültülüdür...Wireshark, makinemde bir dakika sonra 2.648 paket yakaladı. Bu, analizi çok zorlaştırıyor. Neyse ki sonuçları daraltmak için filtreler kullanabiliriz. Birçok şeye göre filtreleme yapabiliriz, ancak aşağıdaki tabloda yalnızca birkaç önemli olanı ele alacağız. Aşağıdaki tüm örneklerin ==[/FONT] filtrenin verdiğimiz değerle tam olarak eşleşip eşleşmediğini görmek için operatörü kullandığını unutmayın .
Filtre ve Açıklamalar
ip.src: Belirtilen IP adresinden kaynaklanan tüm paketleri gösterir. Örneğin;
ip.src == 192.168.1.1
ip.dst: Belirtilen IP adresine giden tüm paketleri gösterir. Örneğin;
ip.dst == 192.168.1.1
tcp/udp.port: Belirtilen protokol ve bağlantı noktası aracılığıyla gönderilen tüm paketleri gösterir. Örneğin;
tcp.port == 22 / udp.port == 67
protokol.request.method:[/FONT] Verilen protokolün belirli bir yöntemini kullanan tüm paketleri gösterir. Örneğin, HTTP hem a izin verir e POSTalmak ve buna göre veriyi göndermek için kullanılır. Örneğin;
http.request.method == GET / POST
Aşağıdaki ekran görüntüsünde, ip.src: belirli bir adresten açıkça gönderilen tüm paketleri listelemek için filtreyi kullandım, == operatörü kullanarak hangi ana bilgisayarı aramak istediğimi tanımladım ( 145.254.160.237). Bir sonraki bölümde bu operatörlerin kullanımını hızlı bir şekilde keşfedeceğiz.
Filtreleri Operatörlerle Birleştirme
==: Bu operatörü, filtrenin tüm paketlerde verilen değerle tam olarak eşleşip eşleşmediğini kontrol etmek için kullanırsınız.Örneğin; ip.addr == 192.168.1.1 IP adresine sahip tüm paketleri gösterecektir 192.168.1.1(bu kaynak veya hedef olabilir)
!=: Bu operatör, filtrenin tüm paketlerde verilen değerle eşleşmediğini kontrol eder. Örneğin; [MAGENTA]ip.addr != 192.168.1.10[/FONT] IP adresini içermeyen tüm paketleri gösterecektir 192.168.1.10(bu kaynak veya hedef olabilir)
: Birden çok filtreyi birleştirmek için bu operatörü kullanın. Örneğin; ip.addr == 192.168.1.1 ip.addr == 192.168.1.10[/FONT] yalnızca kaynak veya hedef IP adresleri 192.168.1.1 veya 192.168.1.10 gösterir yani birden fazla işlem için kullanılmakta.
Wireshark veri dışa aktarma
File gt;Export Objects seçeneğine gidip mevcut protokolü seçerek HTTP gibi protokollerden veri aktarabilir. Aşağıdaki ekran görüntülerinde, dosya paylaşımlı SMB protokolünden dışa aktarılabilecek nesneleri listeliyoruz.
test.txt dosyasını cihazımıza aktaracağız.
Aşağıda vurgulandığı gibi dosyayı çekmiş bulunmaktayız;
Nmap Giriş
Açık kaynaklı, genişletilebilir ve önemli ölçüde ücretsiz bir araç olan Nmap, herkesin araç setinde olması gereken endüstri standartlarından biridir. Nmap, Penetrasyon Testi Yürütme Standardı (PTES) gibi bir sızma testi metodolojisinin Bilgi Toplama aşamalarında gerekli olan birkaç şeyi yapabilir;
# Ana bilgisayar keşfi
# Güvenlik açığı keşfi
# Hizmet/Uygulama keşfi
TCP Tarama
Nmapte kullanacağınız iki yaygın TCP tarama türü vardır. Aynı şeyi yapıyor gibi görünüyorlar, ancak çok farklılar. Bunu parçalamadan önce, TCP/IPnin üç yönlü tokalaşmasını tekrar gösterelim ve normal üç yönlü tokalaşmanın üç aşamasını özetleyelim;
# SYN
# ACK
# SYN/ACK
Taramayı Bağla ( nmap -sT ip )
SYN Taraması ( nmap -sS ip )
SYN Taraması
En uygun tarama türü olan Nmap -sS, tarama hem yönetici ayrıcalıklarıyla çalıştırılıyorsa hem de farklı bir tür sağlanmıyorsa TCP SYN taramasını ( ) kullanır . Bir bağlantı taramasından farklı olarak, bu tarama türü, normalde gerçekleşecek olan "üç yönlü el sıkışmayı" yerine getirmez. Bunun yerine, uzak ana bilgisayardan "SYN/ACK" alındıktan sonra, tarama yaptığımız ana bilgisayar tarafından bir "RST" paketi gönderilir (bağlantıyı asla tamamlamaz).
Nmap, taranmakta olan IP adresi tarafından verilen yanıta dayalı olarak bağlantı noktası durumunu belirlemek için el sıkışma boyunca toplanan tüm bilgileri kullanabildiğinden, bu tarama türü en uygun yöntemdir;
# SYN/ACK açık
# RST kapalı
# Multiple attempts filtreli
Sadece bu değil, aynı zamanda bir ağ üzerinden daha az paket gönderildiğinden, tespit edilme olasılığı daha düşüktür.
Bir SYN taramasından farklı olarak, bu taramanın çalışması için yönetici ayrıcalıkları gerekli değildir. Bu, Nmapin, web uygulamaları gibi hizmetlerin bir işletim sistemi ile nasıl iletişim kurduğunun standart yöntemi olarak hızla oluşan Berkeley Sockets APIsini kullanmasının bir sonucudur . Nmap tarafından gönderilen daha fazla paketin bir sonucu olarak, bu taramanın algılanması daha kolaydır ve tamamlanması daha uzun zaman alır. Üstelik "üç yönlü el sıkışma" normal bir bağlantıymış gibi tamamlandığından çok daha rahat bir şekilde kaydedilebilir.
Nmap Zamanlama Şablonları
Nmap, kullanıcının Nmapin performansını belirlemesini sağlar. Saldırganlıkla ölçülen bir kullanıcı, Nmapin tarama hızını değiştirmek için altı profilden [0 ila 5] birini kullanabilir. En -T0gizli olan bu profil, her 5 dakikada bir bir bağlantı noktasını tararken, -T5hem en agresif hem de yanlış olma potansiyeli olarak kabul edilir. Bunun nedeni, -T5uzaktaki cihazın bir el sıkışmaya yanıt vermesi için yalnızca 0,3 saniye beklemesidir. Aşağıda listelenenler gibi faktörler, bu taramaların ne kadar doğru olduğunu belirler;
# Uzak bir sunucunun altında olduğu kaynak kullanımı. Kullanım ne kadar yüksek olursa, Nmap‘e yanıt göndermek o kadar yavaş olur.
# Bağlantının kalitesi. Yavaş veya kararsız bir bağlantınız varsa, aynı anda çok sayıda paket gönderiyorsanız yanıtları kaçırmanız olasıdır.
Genel olarak konuşursak, gerçek dünya senaryoları için düşük agresif profiller kullanmak isteyeceksiniz, ancak gürültünün önemli olmadığı bir laboratuvar ortamında - yüksek agresif profillerin en hızlı olduğu kanıtlanıyor. Perspektif için Nmap, -T3profil sağlanmazsa kullanır . Bir sızma durumunda, laboratuvar ortamında olduğu gibi daha düşük bir değer kullanmaya meyilli olursunuz -T4, gizlilik o kadar kritik olmadığı için daha yüksek bir değer yeterli olacaktır.
Nmap Komut Dosyası Motoruna Giriş
Nmap Scripting Engine kısacası NSE nmape aşağıdakiler gibi çeşitli eylemleri otomatikleştirmek için komut dosyalarının kullanılabileceği bir eklenti özelliği sunar;
# Exploitation
# Fuzzing
# Bruteforcing
Ek Tarama Türleri
-A: nmap -O ip şeklinde kullanılır. Görevi ise İşletim sistemi algılamasıyla Nmapin veritabanıyla eşleştirerek çalışan hizmetleri belirlemek için ana bilgisayarı tarayın.
-O: nmap -O ip şeklinde kullanılır. Görevi ise İşletim sistemi algılamasını almak ve gerçekleştirmek için ana bilgisayarı tarama yapar.
-P: nmap -P 22 ip şeklinde kullanılır. Görevi ise Ana bilgisayarda belirli bir bağlantı noktası numarasını tarayın. Aralığın ilk ve son değeri aşağıdaki gibi kullanılarak bir dizi bağlantı noktası da sağlanabilir (örn. 10-100):nmap -p 10-100 ip
-p-: nmap -p- ip şeklinde kullanılır. Ana bilgisayardaki tüm bağlantı noktalarını (0-65535) tamak için kullanılır.
-sV: nmap -sV ip şeklinde kullanılır. Görevi ise sunucunun versiyonunu belirlemektir.
[ORANGE]FTP Nedir ve Nerelerde Kullanılır?[/FONT]
Dosya Aktarım Protokolü (FTP), mevcut alternatif protokollere kıyasla bir dosya paylaşımı yöntemi sunar. Bu protokol şifrelenmemiş olsa da, çeşitli yollarla erişilebilir; FileZilla, komut satırı veya web tarayıcıları gibi özel yazılımlardan gelen FTP Sunucuları, uyumluluğu nedeniyle uzun süredir İnternet üzerinden cihazlar arasında dosya paylaşmak için kullanılmaktadır.
FTP, aşağıda gösterildiği gibi veri aktarırken iki bağlantı kullanır;
Bu iki bağlantının standardı iki bağlantı noktasıdır;
# Port 20 (veri)
# Port 21 (komutlar)
Komutlar, dizinleri listeleme veya gezinme, dosyalara yazma gibi eylemleri içerir. Oysa veri portu, dosyaların indirilmesi/yüklenmesi gibi gerçek verilerin aktarıldığı yerdir.
Terminal Üzerinden FTP Kullanımı
Bağlanmak için terminalimize ftp ip yazarak bağlantı kurabiliriz. Kullanıcı adı yazan kısma anonymous yazıp giriş başarılı bağlantısı modunun etkin olduğunu onayladık. Başarılı anonim giriş şuna benzer;
FTP Komutları ve Açıklamaları
ls: Bulunduğun dizindeki dosyaları gösterir.
pwd: Bulunduğun dizini gösterir.
get: Bulunduğun dizinden dosya indirmek için kullanılır.
put: Bulunduğun dizine dosya yüklemek amaçlı kullanılır.
cd: İstenilen dizine gitmek için kullanılır.
Samba Nedir ve Nerelerde Kullanılır?
En yaygın protokollerden birini öğrenirken, kuruluş/şirket ağlarında en çok kullanılan dosya paylaşımı için alternatif bir teknolojiyi ele alacağız. Standart olarak şifreleme sunan bu teknoloji iki protokolden oluşmaktadır;
# SMB (Sunucu İleti Bloğu) - Linux tarafından değil, Windows tarafından yerel olarak desteklenir.
# NFS (Ağ Dosya Sistemi) - Windows tarafından değil, Linux tarafından yerel olarak desteklenir.
SMB gibi protokoller, birbirleriyle iletişim kurarken aşağıda gösterildiği gibi istekler ve yanıtlar gönderir;
Sambayı bu kadar popüler ve kullanışlı yapan şey, bu iki protokol arasındaki farkları ortadan kaldırmasıdır, yani iki işletim sistemi artık dosyalar dahil kaynakları kendi aralarında paylaşabilir. Basitçe, Samba bir paylaşıma bağlanır(bunu sanal bir klasör olarak düşünün) ve dosyaları silme, taşıma veya karşıya yükleme gibi günlük aktiviteleri gerçekleştirebilir.
Samba, hem sizin hem de benim için veya binlerce çalışanı olan işletmeler için faydalı olabileceği açısından esnektir. Örneğin, her çalışanın kendi kopyasını saklaması yerine, çalışanlar belgelere merkezi bir bilgisayardan erişebilir. Daha önce belirtildiği gibi, bu teknoloji, kimlik doğrulama sürecinde (ve verilerin kendisinin) kullanılan kullanıcı adı ve parolalar gibi hassas verilerin istemci/sunucu arasında güvenli bir şekilde iletilmesini sağlayan şifrelenmiştir.
FTP den farklı olarak, ağ yazıcıları gibi diğer BT cihazları da istemci/sunucu arasında paylaşılabilir.
SMB ile Bağlantı Kurma
Senaryomuzda bir smb protokolünün açık olduğunu düşünelim ve burdan sızma işlemi yapacağız. İlk önce terminalimizi açarak smbmap -H ip yazarak smb bağlantımıza ait dizinleri görüyoruz.
Görüldüğü üzere smbmap komutu ile smb dizinleri taratıryoruz. Daha sonrasında işimizi yaracağını düşündüğüm dizini alıp smbclient \\\\ip\\dizin şeklinde sistemde erişim hakkı kazanmış oluyoruz. (Şifre isteyecek enterleyip geçiniz)
Ayrıcalık Yükseltme Nedir?
Ayrıcalık yükseltmenin her gün yaptığınız bir şey olduğunu öğrenmek sizi şaşırtabilir. Bilgi işlem sistemlerinde, birinin bir bilgisayar sistemi ve içindeki kaynaklarla nasıl etkileşime gireceğini belirleyen genel bir kural vardır. Bir kişinin bir bilgisayar sistemine sahip olabileceği iki temel izin düzeyi vardır;
# kullanıcı
# yönetici
Genel olarak konuşursak, yalnızca Yöneticiler sistem ayarlarını değiştirebilir veya dosya ve klasörler gibi diğer kullanıcı kaynaklarının izinlerini değiştirebilir.
Kullanıcılar ayrıca bir şirket içinde olduğu gibi rollere ayrılabilir. İK personeli yalnızca İK belgelerine erişebilirken, muhasebe personeli yalnızca muhasebe kaynaklarına erişebilir.
İmtiyaz artırma olduğunu basitçe üstümüzde izinlerine sahip olduğumuz mevcut ayrıcalıkları artan süreci. Aşağıdaki ekran görüntüsünde, Windows 10‘da Komut istemini çalıştırmak için ayrıcalıklarımızı Yönetici‘ye yükseltiyoruz;
Bir pentester olarak, bir sisteme tam erişime sahip olmak için genellikle ayrıcalıklarımızı başka bir kullanıcının veya yöneticininkine yükseltmek isteriz. Başka türlü mümkün olmaması gereken durumlarda, bu ayrıcalıkları yükseltmek için bir sistem içindeki yanlış yapılandırmaları veya hataları keşfedebilir ve kötüye kullanabiliriz.
Ayrıcalık Yükseltme Yönergeleri
Ayrıcalıkları yükseltme süreci, çoğu durumda doğrudan kullanıcıdan yöneticiye geçmek kadar net değildir. Bunun yerine, diğer kullanıcıların etkileşimde bulunabileceği kaynaklar ve işlevler arasında yavaş yavaş ilerliyoruz.
Yatay Ayrıcalık Yükseltme
Yatay ayrıcalık yükseltme saldırısı, bir kullanıcının amaçlanan izinlerinin, sizinkine benzer izinlere sahip başka bir kullanıcının kaynaklarına erişmek için bir güvenlik açığını kötüye kullanmasını içerir. Örneğin, İK belgelerini almak için bir İK hesabına erişmek için muhasebe belgelerine erişimi olan bir hesabı kullanmak. Hem Muhasebe hem de İK hesaplarının izinlerindeki fark, erişebilecekleri veriler olduğundan, ayrıcalıklarınızı yukarı taşımıyorsunuz.
Dikey Ayrıcalık Yükseltme
Biraz daha geleneksel, dikey bir ayrıcalık yükseltme saldırısı, komutlar gibi eylemler gerçekleştirmenize veya yönetici gibi daha yüksek ayrıcalıklı bir hesap gibi davranan verilere erişmenize izin veren bir güvenlik açığından yararlanmayı içerir.
İhlali Güçlendirmek
Saldırgan pentestte karşılaşacağınız yaygın bir sorun istikrarsızlıktır. Bazı istismarların doğası, çalışmak için çok fazla şansa ve sabra dayanır. Örneğin, Windows işletim sisteminin belleği nasıl ayırdığı ve yönettiği konusunda bir dizi güvenlik açığı yürüten Eternalblue istismarını ele alalım. İstismar belleğe uygun olmayan bir şekilde yazarken, bilgisayarın çökme olasılığı vardır. Aşağıdaki bölümde bağlantımızı stabilize etmenin bir yolunu göstereceğim.
Bir DVWAnın (Damn Vulnerable Web App) yerel bir kopyasından yararlanalım ve cihazımıza ters bir bağlantı oluşturmak için komut enjeksiyonu (OS COMMAND INJECTION) adı verilen bir güvenlik açığı kullanalım. Kırmızıyla vurgulanan sistem, saldıran makinemize tekrar bağlanmak için Netcati kullanmaya yönelik sistem komutudur;
Revershellimizi yükledikten sonrasında netcat ekranımıza bağlantı düşüyor.
Ekranda görmüş olduğunuz whoami komutu sistemde kim olduğumuzu gösteren bir komuttur.
Yukarda görmüş olduğunuz komut ise terminalde bize yetki verir (herşey değil).
İlk erişim sağlandıktan sonra, makinenin iç kısımlarının bir resmini oluşturmaya başlamak çok önemlidir. Çalışan diğer hizmetler, parolalar dahil hassas veriler, kötüye kullanılacak ikili dosyaların çalıştırılabilir komut dosyaları ve daha fazlası gibi çok sayıda bilgiyi arayabiliriz.
Örneğin, makinede olduğundan şüphelenebileceğimiz ortak klasörleri veya dosyaları aramak için find komutunu kullanabiliriz;
# yedekler
# parola
# admin
# yapılandırma
Resimdeki gibi aramak istediğimiz herşeyi arayabiliriz. Bu komutu parçalara ayırarak inceleyelim.
Biz kullandığınız find kökü (belirterek, hacim arama / adlı dosyaları aramak için id_rsa adını yazıyoruz. Eşleşmeleri görmek için ise 2büyüktür işareti /dev/null kullanıyoruz.
Priv Esc Kontrol Listesi
Pentesting yolculuğunuz boyunca ilerlerken, bir katılımın belirli aşamalarına nasıl yaklaştığınıza dair belirli bir iş akışı almaya başlayacaksınız. Bu iş akışı gerçekten size ait olsa da, ayrıcalık yükseltme için güvenlik açıklarını aramaya yönelik bazı temel adımlar etrafında dönecektir.
# Makinenin çekirdeğinin belirlenmesi (Dirtyc0w gibi çekirdek kullanımı)
# Kötüye kullanılabilir olabilecek çalışan diğer hizmetleri veya yüklü uygulamaları bulma (SUID ve güncel olmayan yazılım)
# Yedek komut dosyaları gibi otomatik komut dosyaları aramak (crontabları kullanmak)
# Kimlik bilgileri (kullanıcı hesapları, uygulama yapılandırma dosyaları vb)
# Yanlış yapılandırılmış dosya ve dizin izinleri
Güvenlik Açığı: SUID 101
SUID tam olarak nedir? Peki, izinlerin Linuxta tam olarak nasıl çalıştığını detaylandırarak aynı sayfaya geçelim. Linux‘un bir yararı, dosya izinlerindeki ayrıntı düzeyidir ancak, yaklaşmak oldukça korkutucu. ls -l Geçerli dizinimizin izinlerini listelemek gibi komutları gerçekleştirir;
SUID Kötüye Kullanma
Artık bu SUID iznine sahip yürütülebilir dosyaların neden bu kadar çekici olduğunu anladığımıza göre, bunları nasıl bulacağımızı öğrenmeye ve bu yürütülebilir dosyalardan bazılarıyla yapabileceğimiz yetenekleri anlamaya başlayalım. Yüzeyde, SUID doğası gereği güvensiz değildir. Yalnızca izinlerin yanlış yapılandırılmasını hesaba kattığınızda (ve Linuxtaki karmaşıklık göz önüne alındığında - yapılması çok kolaydır); Yöneticiler, sorun giderme sırasında en az ayrıcalık kuralına uymazlar.
Dosya okuma/yazma veya kabuk oluşturma gibi işletim sistemi ile etkileşime girebilen yürütülebilir dosyalar bizim için altın madenleridir. Nesyeki GTFOBİNS bizim için bu tür işlemleri yapan uygulamaların çoğunu listeleyen bir web sitesidir.
Sistemde yetki artırmak için terminalimizde sudo -l komutu ile sistemde root olacağımız dizini GTFOBİNS aratıp bulabiliriz. Fakat herzaman bu komut işimizi görmez cat /etc/passwd yazarak kullanıcıları listeleyip hangi kullanıcı hangi dizinde çalışıyorsa ona göre web sitemizde aratıp sistemde yetkili oluruz.
Güvenlik Açığı Keşfetme
Bir uygulamanın yaşam döngüsü devam ettikçe sürüm numaralandırması da devam eder. Uygulamalar, sürüm numaralandırma gibi görünüşte masum bilgi işaretleri içerir. Bilgi ifşası olarak bilinen bu bilgi parçacıkları, sunucu tarafından aşağıdaki ekran görüntüsü, HTTP üstbilgileri ve hatta web sitesinin kendisinde olduğu gibi hata mesajları yoluyla bize iletilir.
Saldırgan , o uygulamanın sürüm numarasıyla ilişkili güvenlik açıklarını aramak için Rapid7 , AttackerKB , MITRE veya Exploit-DB gibi web sitelerini kullanabilir . Güvenlik açıkları bir CVE numarası ile ilişkilendirilir.
Nitty Gritty
CGI doğru amaçlara ve kullanım durumlarına sahip olsa da, bu teknoloji bizim gibi insanlar tarafından hızla kötüye kullanılabilir. CGI betiklerinin saklanması genel olarak bir web sunucusundaki /cgi-bin/ klasöründedir. Örneğin, web sunucusunun çalıştığı tarihi, saati ve kullanıcıyı görüntüleyen bu systeminfo.sh dosyasını alalım.
Tarayıcımızı kullanarak bu betiğin konumuna giderken, betik web sunucusunda yürütülür, bunun sonucunda ortaya çıkan çıktı bize gösterilir.
Yürütülecek olan bu komut dosyasına göre belki kendi komutlarımızı ayrıştırabiliriz. Bunun bir Ubuntu makinesi olduğunu bildiğimiz için, çalışma dizininin içeriğini listelemek gibi bazı Linux komutlarını deneyebiliriz; ls
Veya bir Windows makinesinde systeminfo bize faydalı şeyler gösterir.
Bu yaptığımız işlemi metaploit aracımızdan da yapabiliriz.