İnternet Sitelerinde Güvenlik Sistemlerini Atlatma Yöntemleri

5 Nis 2022
156
46
Uzaydan
RTlpjt.webp

Firewall, WAF, Saldırı Engelleme Sistemi
RTlpjt.webp

Güvenlik cihazlarının ve saldırı engelleme araçlarınin keşfedilmesi. Güvenlik duvarı keşif çalışmasını 3 aşamada inceleyebiliriz.
RTlpjt.webp

1.Adim Normal bir TCP bağlantısında iletişime geçmek isteyen istemci taraf hedef sistemin ilgili portuna SYN paketi gönderir. Eğer servis çalışıyor ve hizmet veriyor ise karşlik olarak hedef sistem istemciye SYN+ACK paketi ile cevap döner. Bu şekilde servisin açık olduğu görülebilir.

RT3sxS.jpg

RTlpjt.webp

2.Adım Normal bir TCP bağlantısında iletişime geçmek isteyen istemci taraf hedef sistemin ilgili portuna SYN paketi gönderir. Eğer servis kapalı ve hizmet vermiyor ise karşılık olarak hedef sistem istemciye RST paketi ile cevap döner. Bu şekilde servisin kapalı olduğu görülebilir.

RT3GQQ.jpg


uygulamalarına karşı yapılan saldrlar büyük ölçüde engellenebilmektedir. Herhangi bir sama testinde atılması gereken başlıca adımlardan birisi, hedef sistem önünde aktif bir güvenlik cihazının olup olmadığınn kontrol edilmesidir. Sistemler genelde WAF ya da PS gibi sistemlerle korunur. Bu durumda test öncesinde bunların tespit edilmesi ve testlerin ona göre gerçekleştirilmesi gerekmektedir. Kali Linux üzerinde hazır olarak gelen wafwoof aracı ile hedef sistem önünde aktif olarak çalışan bir WAF cihazının olup olmadığını anlamak mümkündür. Kullanımı oldukça basit olan bu araç aşağıdaki gibi kullanabilir. Öncelikle h parametresi kullanarak aracın hangi özelliklere sahip olduğunu ve parametreleri görülebilir.
RT3dgU.jpg

Görüldüğü üzere parametre olarak sadece hedef sistemi vermek yeterli olmaktadır. Çok kısa bir sürede hedef sistemin WAF ile korunduğu bilgisini bize vermektedir.
RTlpjt.webp

DNS Tünelleme kullanarak Firewall/IPS/CF Atlatma
RTlpjt.webp

İstemci tabanlı alınan güvenlik önlemlerinin DNS tünel kullanılarak aşıması. Yerel ağdan internete giden tüm port ve protokoller Firewal tarafından engellenmiştir. Web erişimi için hizmet veren proxy ise yalnızca yetkili kullanıcılara internet erişimi sağlamaktadr. Bu sistemlere takimadan sınırsız ve kayıt altına alınamaz intemet trafiği nasi elde edilebilir? Uygulama: DNS Tunnel Bir protokol içerisinde başka bir protokole ait veri taşıma işlemine protokol tünelleme denir. DNS paketleri içersinden herhangi bir tcp/udp paketini (örneğin, http, ftp, ssh vb.) taşıma işlemi de DNS Tünnelleme olarak isimlendirilir.

RT8J5G.jpg


DNS sunucu kendisinden sorgulanan bir DNS isteğine önce önbelleğini kontrol ederek yant vermek ister eğer alan adı dns önbelleğinde yoksa, sorgulanan alan adndan sorumlu dns sunucuyu bulur ve ona sorar. Sorgulanan alan adından yetkili dns sunucu ilgili dns kaydı için yant verir ve DNS sunucu bu yanıtı istemciye iletir. Örnek Kullanici, tunnel.bga.com.tr alan adni sorgulamak istediğinde yerel ağındaki dns sunucu bu kayıt önbelleğinde yoksa bu isteğe doğrudan yanıt veremez. tunnel.bga.com.tr alan adından sorumlu dns sunucuyu bulur dns. İlgili Sitede ona tunnel A kaydını sorar aldığı yanıtı istemciye iletir.
RTlpjt.webp

PENTEST ÇALIŞMALARI
RTlpjt.webp

Tcp-Over-Dns Çalışma Prensibi Tcp-Over-Dns client, DNS verisini encode ederek ISP'nin DNS sunucusuna iletir. ISP'nin DNS sunucuyu bu isteğe yanıt veremez ve DNS isteğini top-over-dns server'a iletir. Top-Over-Dns server gelen isteği decode eder ve ilgili isteğe yanıtı client'a geri gönderir. DNS isteklerinin, DNS sunucu tarafından önbelleğe alınma ihtimaline karşı her DNS sorgusunda rastgele bir subdomain kullandır. Ön Gereksinimler: 1. DNS isteklerinize yanıt alabildiğinizi doğrulamalısınız. Ömeğin; inslookup google.com.tr' komutu ile google P adreslerini öğrenebiliyorsanız DNS isteklerinize yant veriliyordur. 2. Internet dünyasnda sizin kontrolünüzde olan bir sunucu. Administrator veya root yetkilerine sahip olmalisinz. UDP 53 portu farklı bir uygulama tarafından kullanılmiyor olmalı ve erişim problemi yaşanmamalıdır. 3. Kullandığınız işletim sistemine göre Tcp-Over-Dns yazlımı. Mutlaka java kurulu olmalıdır. tcp-over-dns

Not: Tcp-Over-Dns server, gelen trafiği port 443 (ssh servisine)
Tcp-Over-Dns Client Yapılandırması Istemci bilgisayarda client-example.bat dosyası düzenlenerek DOMAIN değeri bu iş için oluşturulan alan adı ile değiştirilir.
cient-example.bat dosyası çalıştırıldığında tünel 127.0.0.1:8080 portu dinleme için alnacaktır.
Tcp-Over-Dns Client, yerel bilgisayarda 8080 portunu dinleme açtı ve bu porta yapılan bağlantlari tunnel.(ilgili site) makinasnin 443 (ssh) portuna iletecektir.
Test için, putty aracı ile 127.0.0.1:8080 portuna bağlantı isteği başlatıldığında 127.0.0.1 ıp adresli Sitenin 443 portuna erişim kurulacaktır.
SSH trafiği Firewall tarafından engellenmiş olsada, DNS paketleri ile ssh trafiği internete kaçınılmıştır. Bu yöntem ile birçok yerde bulunan Hotspot sistemleri de atlatabilmek mümkündür.

RTlpjt.webp

lodine ile Dns Tünelleme
RTlpjt.webp

Diğer bir tünelleme yazılımı olan iodine oldukça kullanışlı ve stabil bir araçtır. Sunucu istemci mantığı ile çalışmakta olup sunucu tarafında servisi çalıştrdiktan sonra istemciden bağlanması oldukça kolaydır. Kurulumu : lk olarak kaynak kod indirilip "make" diyerek sunucu tarafnda kurulum yapılır. Daha sonra sunucu tarafında aşağıdaki gibi bir komut çalıştırılır.
Buradaki IP karşılığı olmayan bir IP adresidir. Başarılı bir şekilde bağlanldığı zaman belirlenen o P aralığından bir IP alnacaktır. Pile parola belirlenir.
Bu komut çalıştırıldıktan sonra size parolayı soracaktır ve doğru girdikten sonra tünelleme gerçekleşecektir. Bağlantı başarılı ise ilk başta belirlenen IP aralığından dns arayüzüne otomatik olarak bir IP alınmış olacaktr.
Bu işlemden sonra sorunsuz bir şekilde direk olarak internete çıkmak için aynı sunucuya ssh tünelleme yapılırsa proxy kullanmadan direk internet erişimi sağlanacaktır.

RTlpjt.webp

Parçalanmış Paketlerle Uygulama Seviyesi Güvenlik Duvarı Atlatma
RTlpjt.webp

Güvenlik duvarlarnn bypass edilebilmesi için, paketlerin parçalanarak yollanmasi. Uygulama: Güvenlik duvarna bir paket geldiğinde onu başlık bilgilerine bakarak filtreleyebilir fakat paket parçalanmış bir paket ise sadece ik parça paketi filtreleyebilecektir, diğer parça paketler firewalldan süzülerek geçecektir. Güvenlik duvarları gelip giden paketleri kural tablosu ile karşlaştrabilmesi için paketlerin parçalı olmaması gerekir. Bu da güvenlik duvarlarnin paket birleştirme özelliğine sahip olmalarni zorunlu tutar. OpenBSD PF güvenlik duvarndaki scrub özelliği kullanarak parçalanmış paketlerin güvenlik duvarnda tekrar birleştirilmesi ve hedefe bu şekilde ulaştırılması sağlanabilir. OpenBSD PF ve parçalanmış paketler Scrub özelliği Fragment reassemble: Gelen parçalanmış paketleri hedefe iletmeden önce birleştirerek göndermek için kullanılır. Bu seçeneğin yararı güvenlik duvarları paket tamamlanmadan kuralları tam uygulamayacağı için fragment paketlerin güvenlik duvarı kurallarına gelmeden birleştirilmesi gerekir. Ek olarak fragment crop, fragment drop-ovl, no-dr seçenekleri de incelenebilir. Parçalanmış Paketler ve Saldırı Tespit Sistemleri Parçalanmış paketler konusunda en sikintill sistemler DS/IPS'lerdir. Bunun nedeni bu sistemlerin temel işinin ağ trafiği inceleme olmasıdır. Saldırı tespit sistemleri gelen bir paketin/paket grubunun saldırı içerikli olup olmadığını anlamak için çeşitli kontrollerden geçirir. Eğer bu kontrolleri geçirmeden önce paketleri birleştirmezse çok rahatlıkla kandırılabilir. Omeğin HTTP trafiği içerisinde "/bin/bash" stringi arayan bir saldırı imzası olsun. DS sistemi 80 porta gelen giden her trafiği inceleyerek içerisinde /bin/bash geçen paketleri arar ve bu tanıma uyan paketleri bloklar. Eğer IDS sistemi paket birleştirme işlemini uygun bir şekilde yapamıyorsa fragroute veya benzeri bir araç kullanarak /bin/sh stringini birden fazla paket olacak şekilde (1. Paket /bin, 2.paket /bash)gönderip IDS sistemini atlatmak mümkündür. ngrep aracni IDS olarak kullanarak fragroute ile atlatılabilir. lk olarak ngrep aracını kullanarak /etc/passwd string ifadesinin yakalanması test edilecektir.
Görüldüğü üzere telnet ile kurulan bağlantıda /etc/passwd ifadesi yakalanmış ve ekrana basılmıştır. Ama aynı istek fragroute aracı ile parçalanmış paketler halinde gönderilirse DS görevi gören ngrep aracı bu isteği yakalayamayacaktır. Bu durumda istek IDS'e takılmadan ve başarılı bir şekilde gerçekleşecektir.

RTlpjt.webp

SSH Tüneli Kullanarak Firewall/IPS/CF Atlatma Çalışması
RTlpjt.webp

Güvenlik araçlarının SSH tünel kullanılarak atlatılması, Uygulama: Sizma testi esnasında kurum ağından dışarıya yapılan kısıtlamalar en sik karşılaşılan durumlardan biridir. Böyle bir durumda belirli portlar haricindeki portlar erişime kapatılmıştır. Bunları aşmak için ise açk olan port üzerinden dışardaki bir sunucuya SSH tunnel kurulumu yapılabilir. Diğer bir durum ise sizma testleri yaplırken genellikle testi yaptran firma kendisine hangi P adresi, IP adreslerinden denemeler yapıdiğini bilmek ister. Bazı durumlarda Firewal IPS/WAF sistemlerden bu P adreslerine özel erişimler tanımlanması da gerekebilir. Eğer sızma test ekibi birden fazla kişiden oluşuyorsa tek bir IP adresinden çıkış yapabilmek için ofis çıkış P adresi ya da internet üzerinden alınacak VPS sunucular kullanabilir. VPS sunucunun Linux olması durumunda birden fazla kişi bu sunucuya bağlanarak sizma testlerini gerçekleştirebilir. Sunucu üzerinden iki farklı şekilde sızma testleri gerçekleştirilebilir. Bunlardan biri Linux sunucu üzerine VPN kurularak tüm sema test uzmanlar VPN'le bağlanıp sunucu üzerinden çkış yaparak test gerçekleştirir. VPN kurulumu ve yönetimi biraz daha zahmetli olduğu için diğer yöntem olan uzaktaki sunucuyu SOCKS Proxy olarak kullanma daha tercih edilebilir ya da SSH üzerinden kolay VPN kurulumu yapabilecek SSHuttle aracı kullanılabilir. Bu işlem çoğu zaman yasaklı sitelere girmek veya şirket networklerinden içerik filtreleme sistemlerini atlatma veya kablosuz ağlarda güvenli dolaşma için vs. kullanılır. Bunun için proxy sunucumuz üzerinde SSH Port adresi 443 olarak set edildikten sonra yerel sistemde aşağıdaki komut ile uzak sisteme SSH tünel kurulması ve yereldeki TCP/8080 portuna gelen isteklerin sunucu P adresiyle internete çıkartılması sağlanır.
Fakat burada localdeki 8080 portu socks proxy desteği olan araçlarda set edilip kullanabilir. Örneğin browserlarda(ie,firefox v.s) proxy ayarından socks proxy bölümü localhost:8080 yapılarak browser üzerinden hedefe proxy üzerinden gidebiliriz. Fakat bu işlem pentest işlemlerinde bize yetmeyebilir. Yani baz hazır otomatize araçlar zap,burb suite vs.) kullanmak istediğimizde karşımıza socks proxy desteğinin olmaması gibi sorunlar çıkabilir. Bu durumda pentest yapacağımız araçların da kurduğumuz SSH proxy bağlantımız üzerinden geçmesini isteyebiliriz. Yani localimizin tüm trafiğini bu uzak proxy sunucuya secure olarak göndermek isteyebiliriz. Bunun için SSHuttle aracı kulanılabilir. Bu araç ile proxy sunucusunun istenilen portuna SSH bağlantnzı kurabilir ve tüm internet trafiğinizin bu proxy üzerinden gitmesini sağlayabilirsiniz Böylece zap gibi güvenlik araçlarınn socks proxy desteginin olmamasndan dolayı yaşanabilecek zorluklar giderilebilir. Kurulum: SSHuttle indirmek için GitHub - apenwarr/sshuttle: Wrong project! You should head over to http://github.com/sshuttle/sshuttle adresini ziyaret edebilirsiniz. SSHuttle aracınn basit kullanmi aşağıdaki gibidir.
Sizden ilgili kullanıcıya ait parolayı isteyecek girdikten sonra tüm trafiğiniz artık proxy server üzerinden geçecektir. Bundan sonra pentest için kullanılan proxylik de yapan ZAP/Burb suite gibi uygulamalar rahatlıkla kullanılabilir. Ömeğin ZAP kullanmak için, browser üzerinde http proxy ayarı localhost:8080 olarak girildikten sonra ilgili siteler üzerinde gezinti yapılarak ZAP aracının üzerinden trafiğin geçmesi ve cache'lenmesi sağlanabilir.

RTlpjt.webp

Encoding Yöntemleri kullanarak IPS Atlatma
RTlpjt.webp

Blacklist temeli kontrolleri atlatmak için kullanılabilecek bir diğer yöntem ise saldırı isteklerini kısmen veya tamamen sunucu tarafından desteklenen encoding yöntemleri ile değiştirerek yollamaktır. Ömeğin günümüzde kullanan çoğu uygulamada web uygulama problemlerinin ortaya çıkmasına neden olan en büyük etken', ",<, >, /, 1, I, gibi karakterlerdir. Sunucu tarafındaki IPS'ler üzerinde oluşturulan blacklistler ile bu karakterler engellenmek istense de encoding yöntemleri ile bu kısıtları aşmak oldukça kolay olacaktır. Omeğin web uygulamalarında en çok can yakan 'tırnak) karakterinin farkli encoding yöntemleri ile gösterimi aşağıdaki gibidir.
Ömek olarak www.site.com/index.php?id=<script>alert('BGA')</script> isteği doğrudan url adresi ile istenirse aktif güvenlik cihazı bu isteği bloklayacaktır ve erişilemecektir. Ama aşağıdaki gibi encoding metotları ile bu kısıtı aşmak oldukça kolaydır.
En tehlikeli saldırılardan biri olan local file inclusion ya da directory traversal encoding yöntemleri ile rahatlıkla aşlabilir. IPS'ler genelde .ve ..ifadesini gözdükleri zaman bunu saldın olduğunu anlarlar ve ona göre davranırlar. Ama ./././././././etc/passwd gibi bir payload encoding yöntemleri kullanılarak gönderilirse, istenilen sayfa elde edilecektir.

RTlpjt.webp

SSL Üzerinden WAF/IPS Sistemlerini Atlatma
RTlpjt.webp

SSL protokolü üzerinden güvenlik önlemlerinin atlatılması, Uygulama: PS'ler yap landırılırken HTTP bağlantısı için yapılan konfigürasyonlar bazen HTTPs için yapılmayabiliyor. Böyle bir durumda HTTP bağlantısı için alınan güvenlik önlemleri https bağlantısı için devre dışı kalmış oluyor. Bu çalışmada her IPS'in direk olarak engellediği "cmd.exe" anahtar kelimesini kullanarak küçük bir uygulama yapılacaktır. İlgili site üzerinde bir IPS bulunmaktadr ve belli başlı istismar ataklara içeren kelimelere karşı önlem alınmış durumdadır. Temel olarak IPS'in olduğunu ve engelleme yaptığini görmek için hedef site üzerindeki search kisminda cmd.exe ifadesini aratmak yeterli olacaktr.
Görüldüğü üzere IPS tarafından kelime engellendiği için bağlantı direk olarak engellenmiş ve IPS tarafından istek reddedilmiştir. Şimdi ayni siteye HTTPS ile bağlanp "cmd.exe" ifadesi tekrar aratlacak olursa;
İlgili sitenin adresi üzerinde IPS yapılandırması olmadığı için yapılan isteklere IPS değil web sunucusu cevap dönmüştür. Yani site üzerinde aratılan "cmd.exe" kelimesi sitede olmadiği için web sunucu tarafndan "Aradığınız Kayıt Bulunamadi' ifadesi dönmüştür. Eğer PS aktif olsaydı direk olarak bağlantıya reset cevabı dönmüş olacaktı.

RTlpjt.webp

SQL Injection Saldırılarında Tamper Script Kullanarak IPS Atlatma
RTlpjt.webp

SQL enjeksiyonu zafiyeti barındıran ve güvenlik cihazları tarafından korunan sistemlerin sqimap tamper script kullanılarak istismar edilmesi. Uygulama: Veritabanı olarak olarak MS-SQL sunucu kullanan ve önünde WAF/PS cihazı bulunan bir web uygulamasındaki SQL injection açıklığı, sqlmap tamper script kullanarak ve güvenlik cihazları atlatılarak istismar edilebilir. Birçok WAF/IPS güvenlik cihazının çalışma mantığında belirli kelime öbeklerini girdide bulmak için boşluk karakteri referans alınır. Örneğin union ve select kelimelerini sevmeyen bir IPS cihaz bu kelimeleri girdide ararken bu kelimelerin başında ve sonunda boşluk karakteri arar veya boşluk karakterlerinin önünü ve sonunu okur bu kelimeler ile eşleşme olursa ilgili imza gereğini gerçekleştirir. Bu mantık ile çalışan bir IPS cihazı kullanıcıdan aldığı aşağıdaki gibi bir girdiyi bloklar;
Fakat boşluk karakteri yerine rastgele bir ifade(AA) yazarsak aşağıdaki gibi bu SQL sorgusu IPS cihazina takimayacaktır;
Not: AA test amaçlı verilmiştir. Backend dbms üzerinde çalışacak bir ifade degildir. AA yerine backend dbms uygulamasında boşluk için alternatif olacak bir değer girilmelidir.
Şimdi bu durumu veritabanı olarak Mssql server kullanan ve önünde IPS cihazı bulunan bir web uygulamasındaki SQL injection açıkliğini istismar etmede nasıl kullantabileceğine değinelim.
Mssql üzerinde boşluk karakterine alternatif olabilecek ifadeleri bir diziye atarak her seferinde bu diziden random bir değeri boşluk ifadelerinin olduğu yerlere yerleştiren ve sorguyu bu şekilde hedefe gönderen space2mssqlblank.py sqlmap tamper scriptini kullanacağız.
Bu değerler bir dizi içerisinde tutulup her SQL sorgusu içerisindeki boşluk değerlerine rastgele olarak atanip sorgular backend dbms sistemine gönderilir. Bu şekilde aradaki güvenlik cihazları kolaylıkla bypass edilebilmektedir.

Mssql serverdaki alternatif değerlerini rastgele kullanan tamper scripti sqlmap aracna verip sonucu görelim;

RT86Rt.jpg


Yukardaki gibi hedefe gönderilen payloadlarda, boşluk karakterinin Mssql sunucudaki alternatif değerleri rastgele olarak verilerek PS cihazı atlatılmıştır. Birçok WAF/PS imzalan bu mantıkla çalıştığı için belirtilen yöntemle kolaylıkla bypass edilebilirler.
RTlpjt.webp

Netcat Kullanarak Tersine Kanal Açma Yöntemleri
RTlpjt.webp

Netcat aracı kullanılarak arka kapı açılması Uygulama: Sema testi esnasında karşılaşılan en büyük problemlerden birisi de zafiyet barındran makineye olan erişim sikintisdr. Igili makine üzerinde yaplan port kısıtlamaları nedeniyle makineye erişmenin zor olduğu durumlarda kullanabilecek bazı alternatif yöntemler vardır. Ömek olarak bir uygulamanın shellshock zafiyeti barndrdığını fakat 80 portu haricindeki diğer portların kapalı olduğunu varsayalım. Böyle bir durumda makineye komut Satırından direk erişim sağlamak için ne yapılmalıdır?
Böyle bir durumda en pratik ve avantajlı yöntem netcat ile tersine kanal açma yöntemidir. Sizin makineye erişemediğiniz durumlarda makinenin size erişmesini sağlayacaktr. Önceikle zafiyet barındıran makinenin bağlanması için saldırgan tarafında netcat ile bir port açilir ve dinlemeye alınır.
Zafiyet barından uygulama tarafında yapılması gereken şey ise, User-Agent'a yazılacak payload ile saldırgan makinesine netcat bağlantısı kurmaktır. Bunun için yazılacak olan payload aşağıdaki gibi olacaktır.
Sonrasında saldırgan tarafından dinlemeye alman port üzerinde bağlantının gerçekleştiği görülecektir. Artk saldırgan yazacağı komutlari User-Agent bilgileri üzerinden değil kendi komut Satırından gönderecektir.


RTlpjt.webp

Okuduğunuz için Teşekkürler.


RTlpjt.webp
 
Üst

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