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
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
Bilgi Güvenliği Akademisi tarafından hazırlanan TCP/IP protokolü üzerinden geçen paketler ve bu paketlerin diğer sistemlere(IPS,NIDS-NIPS vs.) etkilerinin nasıl olduğundan bahsediyor.
Kitabımızın ilk 3 bölümünü içermektedir.
BÖLÜM 1: NETWORK FORENSİC
• Port Tarama Trafik Paket Analizi
• Host Keşif Trafik Analizi
• Ağ Trafiğinde Dosya Türleri Tespiti
• HTTP Trafiğinde Filtreler
• HTTP Brute Force Saldırı Analizi
• MITM Saldırı Analizi
• MYSQL Brute Force Saldırı Analizi
• SQL Injection Saldırı Analizi
• Yerel Ağ Sızma Testi Analizi
• Zararlı Dosya Transfer Analizi
• Web Shell Tespiti
BÖLÜM 2: MALWARE KAYNAK KOD ANALİZ
• C Keylogger Kaynak Kod Analizi
• C Reverse Shell Kaynak Kod Analizi
• Python Keylogger Kaynak Kod Analizi
• Python Reverse Shell Kaynak Kod Analizi
BÖLÜM 3: MALWARE TEMEL STATİK ANALİZ
• C Keylogger Temel Statik Analiz
• C Reverse Shell Temel Statik Analiz
• Python Reverse Shell Temel Statik Analiz
• Temel Statik Malware Analiz Teknikleri
• PMA Lab 01-04 Temel Statik Analizi
• PMA Lab 01-02 Temel Statik Analizi
• PMA Lab 01-03 Temel D-Statik Analizi
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.
Bilgi Güvenliği Akademisi tarafından hazırlanan TCP/IP protokolü üzerinden geçen paketler ve bu paketlerin diğer sistemlere(IPS,NIDS-NIPS vs.) etkilerinin nasıl olduğundan bahsediyor.
Kitabımızın ilk 3 bölümünü içermektedir.
BÖLÜM 1: NETWORK FORENSİC
• Port Tarama Trafik Paket Analizi
• Host Keşif Trafik Analizi
• Ağ Trafiğinde Dosya Türleri Tespiti
• HTTP Trafiğinde Filtreler
• HTTP Brute Force Saldırı Analizi
• MITM Saldırı Analizi
• MYSQL Brute Force Saldırı Analizi
• SQL Injection Saldırı Analizi
• Yerel Ağ Sızma Testi Analizi
• Zararlı Dosya Transfer Analizi
• Web Shell Tespiti
BÖLÜM 2: MALWARE KAYNAK KOD ANALİZ
• C Keylogger Kaynak Kod Analizi
• C Reverse Shell Kaynak Kod Analizi
• Python Keylogger Kaynak Kod Analizi
• Python Reverse Shell Kaynak Kod Analizi
BÖLÜM 3: MALWARE TEMEL STATİK ANALİZ
• C Keylogger Temel Statik Analiz
• C Reverse Shell Temel Statik Analiz
• Python Reverse Shell Temel Statik Analiz
• Temel Statik Malware Analiz Teknikleri
• PMA Lab 01-04 Temel Statik Analizi
• PMA Lab 01-02 Temel Statik Analizi
• PMA Lab 01-03 Temel D-Statik Analizi
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.
DHCP SERVER Logları ve SNMP ile Kimlik TakibiErtugrul Akbas
Yasal sorumluklardan dolayı ve güvenlik analizleri için ağ yöneticilerine, belirli tarihte bir IP adresini kimin kullandığı sorusu sık sık sorulur. Eğer bütün kullanıcılar bir hotpot/Proxy/Captive Portal kullanılıyorsa bu soruya cevap vermek kolaydır. Ama kullanılmayan durumlarda diğer yöntemlerden faydalanmak gerekir. Burada 802.1x Ağ Kimlik Denetimi Protokolü ve MAC adresi temelli kimlik denetimi devreye girer. 802.1x kimlik denetimi protokolü OSI’ye göre ikinci katman protokolüdür ve oluşan logda sadece MAC bilgisi bulunur dolayısı ile başka bir networke taşınmaz ayrıca soru IP adresini kim kullandı şeklindedir. MAC adresi temelli kimlik denetimi ise pratikte uygulaması imkansızdır. Mesela MAC adresi değiştiren programlar vs.. . Bu durumda MAC ve IP arasındaki ilişkileri her durumda alıp otomatik korelasyona tabi tutan bir sistem gerekmektedir. Bunun da yolu DHCP Sunucu loğları ile gatewaylerdeki ARP tablosunu takip edip sonuçları korele etmektir.
1. Nmap İle Host/Port Keşif Çalışmaları
Tüm Nmap kullanım parametreleri nmap --help komutu ile görüntülenebilir. Bu bölümde en
çok tercih edilen parametrelerinden bahsedilecektir.
-n: Hedef sistemler için ters DNS sorgularının gerçekleştirilmemesini sağlayan
parametredir. Özellikle geniş ölçekli ağlar üzerinde gerçekleştirilen işlemlerde kullanılması
önerilmektedir. Aksi durumda her bir hedef ip adresi için tersine DNS sorguları
gerçekleştirilmeye çalışılacak ve oldukça fazla zaman kaybına sebep olacaktır.
1
# nmap -n -p80,443 localhost
-Pn: Nmap ön tanımlı olarak hedef sistem ip adres bilgileri için icmp echo request paketleri
göndererek hedef sistemin ayakta olup olmadığına karar vermekte ve taramaları bu
doğrultuda devam ettirmektedir. Bu şekilde sadece aktif olan sistemler için tarama işlemi
gerçekleştirilecek ve daha hızlı sonuç alınması sağlanacaktır. Ancak aktif cihazlarda icmp
echo request paketlerinin geçişine izin verilmediği veya hedef sistem üzerinde
bulunabilecek güvenlik duvarı veya antivirüs gibi yazılımlarında yine icmp echo request
paketlerine geçişi engellediği durumlarda hedef sistem tarama işlemine tabi tutulmayacaktır.
Emin olunmadıkça kullanılması önerilmeyen bir parametredir.
# nmap -Pn -p80,443 localhost
-p : Port belirtimi için kullanılan parametredir. Parametrenin kullanımına ilişkin örnek
seçenekler aşağıda gösterilmiştir. Burada hedef sistem olarak localhost ve 192.168.1.0/24
belirtilmiştir.
80 ve 443 tcp portlarını taramak için,
# nmap -p80,443 localhost
1 ile 100 arasındaki portları taramak için,
# nmap -p1-100 localhost
Tüm portları taramak için,
# nmap -p- localhost
veya
# nmap -p[1-65535] <target>
25/tcp ve 53/udp portlarını taramak için,
# nmap -pT:25,U:53 localhost
smtp servis portunu taramak için,
# nmap -p smtp localhost
smtp ile başlayan tüm servisleri taramak için,
2. 2
# nmap -p smtp* localhost
Nmap servisleri içerisinde kayıtlı tüm portları taramak için,
# nmap -p [1-65535] localhost
Nmap taramları sonucu karşılaşılabilecek olan port durumları ve açıklamaları ise aşağıda
belirtilmiştir.
• Open : Belirtilen hedef portun açık olduğunu belirtmektedir.
• Closed : Belirtilen hedef portun kapalı olduğunu belirtmektedir.
• Filtered : Belirtilen hedef portuna gönderilen paketlere cevap alınamaması
durumunu belirtmektedir. Gönderilen paketlerin aktif cihazlar tarafından düşürülmesi
durumunda gerçekleşebilmektedir.
• Unfiltered : Belirtilen hedef portun açık olduğunu belirtmektedir.
• Open/Filtered : Belirtilen hedef portun filtered veya açık olduğunu ancak Nmap’in
bağlantıyı sağlayamadığı durumu belirtmektedir.
• Closed/Filtered : Belirtilen hedef portun filtered veya kapalı olduğunu ancak
Nmap’in bağlantıyı sağlayamadığı durumu belirtmektedir.
-sS: Yarı açık tarama adı verilen bu yöntem ile hedef sisteme gönderilen SYN paketlerine
karşılık hedef sistemden SYN + ACK paketinin alınması beklenir. Bu durumda hedef portun
durumu açık olarak raporlanmaktadır. Kullanımına ilişkin örnek bir kullanım aşağıda
gösterildiği gibi olmaktadır.
# nmap -n -Pn -sS -p 80,443 localhost
-sT : Tam tarama adı verilen bu yöntemde 3 yollu el sıkışmanın (3 way
handshaking) tamamlanmış olması gerekmektedir. Bu durumda hedef portun durumu açık
olarak raporlanmaktadır. Yarı açık taramaya nispeten daha yavaş ancak daha güvenilir bir
tarama yöntemidir. Özellikle dış alan ağlarındaki taramalarda tercih edilmektedir.
Kullanımına ilişkin örnek bir kullanım aşağıda gösterildiği gibi olmaktadır.
# nmap -n -Pn -sS -p 80,443 localhost
-sU : UDP port taramaları için kullanılan parametredir. Kullanımına ilişkin örnek kullanımlar
aşağıda gösterildiği gibi olmaktadır.
53/udp portunu taramak için,
# nmap -p U:53 localhost
53/udp ve 161/udp portlarının taramak için,
# nmap -p U:53,161 localhost
3. -sV : Hedef port üzerinde çalışan servis ve servis sürüm bilgisi edinmek için kullanılan
parametredir. Nmap bu işlem için hedef sistem üzerinde keşfedilmek istenen port için bir
takım paketler gönderip ardından gelen cevap içerisindeki sürüm bilgisini nmap-service-probe
dosyasındaki imzalar ile karşılaştırarak karar verir. Bu dosya sürekli olarak
güncellenmektedir ve https://svn.nmap.org/nmap/nmap-service-probes adresinden erişim
sağlanabilmektedir. Dosya içerisindeki sürüm bilgisi düzenli ifadeleri destekleyen bir
biçimde yer almaktadır. Bu durumu simüle edebilmek için yerel makinede aşağıda belirtilen
komut seti ile yerel makinede 3737/tcp portunu dinleyen bir uygulama netcat yazılımı ile
gerçeklenmiştir.
3
# echo -ne "SSH-2.0-OpenSSH_2.5rn" | nc -l -p 3737
Bu komutun ardından netstat -nlput | grep 3737 komutu çalıştırıldığında, sonuç olarak
aşağıdaki durum görüntülenmektedir.
# netstat -nlput | grep 3737
tcp 0 0 0.0.0.0:3737 0.0.0.0:* LISTEN 18316/nc
Ardından nmap aşağıda gösterilen parametreler ile çalıştırıldığında sonuç olarak hedef port
numarası üzerinde çalışan servis bilgisi için görüldüğü gibi OpenSSH 2.5 (protocol 2.0)
olarak raporlamaktadır.
# nmap -n -Pn -sS -sV -p 3737 localhost
…
PORT STATE SERVICE VERSION
3737/tcp open ssh OpenSSH 2.5 (protocol 2.0)
--top-ports: Nmap kullanılarak dünya üzerindeki tüm ip adresleri için gerçekleştirilen
tarama sonucundaki keşfedilen port numaralarının taranmasını sağlayan opsiyondur.
Örneğin --top-ports 10 ile en çok açık olarak keşfedilen 10 port kullanılmaktadır. Özellikle
hızlı bir bakış açısı ile ağ üzerindeki keşif çalışmalarında tercih edilmektedir.
-F : Hızlı port tarama parametresidir. /etc/services dosyasındaki 100 port için tarama
gerçekleştirmektedir. /etc/services dosyası için belirlenen biçim servis ismi, port
numarası/protokol, açık olma frekansı ve açıklama sütünu şeklindedir. Aşağıda tcpmux
servisi için belirtilen satır gösterilmiştir.
tcpmux 1/udp 0.001236 # TCP Port Service Multiplexer
Örnek bir kullanım için:
# nmap -n -Pn -sS --top-ports 50 localhost
-O: İşletim sistemi belirlemek amaçlı kullanılan parametresidir. Nmap bu işlem için hedef
sisteme TCP ve UDP paketleri göndererek ardından aldığı cevapları nmap-os-db
dosyasındaki imzalar ile karşılaştırarak hedef sistemin işletim sistemi sürüm bilgisini
raporlayabilmektedir. Bu işlem için hedef sistem üzerinde en az 1 açık ve 1 kapalı port
4. belirtiminin gerçekleştirilmesi gerekmektedir. Bu dosyanın en güncel haline
https://svn.nmap.org/nmap/nmap-os-db adresinden erişim sağlanabilmektedir.
4
# nmap -O -v localhost
-T [1-5]: Birim zamanda gönderilecek paket hız seviyesini belirlemek için kullanılan
opsiyondur. 5 en yüksek 1 ise en düşün seviyeyi belirtmektedir. Özellikle dış ağ
taramalarında dikkat edilmesi gereken bir parametredir. IDS/IPS gibi sistemler tarafindan
belirlenmemek icin cok hizli paket gonderimi gerceklestirilmemelidir. Genellikle bu
parametre goz onune alinarak dis ag taramalarinin gerceklestirilmesi onerilmektedir.
# nmap -n -Pn -sS -p 22-25 --open -T4 localhost
--open: Sadece durumu open olarak belirlenen portların raporlanması için kullanılan
parametredir.
# nmap -n -Pn -sS -p 22-25 --open localhost
-oN, -oG, -oX, -oS, -oA: Normal, parse edilebilir, script kiddie ve xml biçimi olmak üzere 4
farklı türde rapor üretebilmektedir. Parametrelerin kullanımının ardından rapor çıktısı için
kullanılacak dosya ismi belirtilmektedir. Rapor dosyası için tam yol verilmediği durumlarda,
çalışma dizininde belirtilen dosya isminde rapor çıktısı üretilmektedir.
# nmap -n -Pn -sS --open -p 21,22,80,443,445 192.168.1.0/24 -oN nmap_rapor
-oN : Belirtilen rapor dosyası ile aynı isimde normal biçimde çıktı üretir. Örnek kullanım için,
# nmap -n -Pn -sS --open -p 21,22,80,443,445 192.168.1.0/24 -oN nmap_rapor
Tarama sonrası çalışma dizini içerisinde normal çıktı biçiminde nmap_rapor isimli dosya
oluşturulmuştur.
# ls -l
nmap_rapor
…
Oluşturulan rapor dosyası içeriği ise aşağıda gösterildiği şekilde olmaktadır.
# cat nmap_rapor
...
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
443/tcp open https
...
5. Normal rapor çıktısı ile NMAP çalıştırılması sonucu ekrana yansıtılan sonuçlar arasında
ufak farklılıklar bulunmaktadır.
-oG : Belirtilen rapor dosyası ile aynı isimde parse edilebilir (grepable) biçimde çıktı üretir.
Örnek kullanım için;
5
# nmap -n -Pn -sS --open -p 21,22,80,443,445 192.168.1.0/24 -oG nmap_rapor
Tarama sonrası çalışma dizini içerisinde normal çıktı biçiminde nmap_rapor isimli dosya
oluşturulmuştur.
# ls -l
nmap_rapor
...
Oluşturulan rapor dosyası içeriği ise aşağıda gösterildiği şekilde olmaktadır.
# cat nmap_rapor
Host: 192.168.1.1 () Status: Up
Host: 192.168.1.1 () Ports: 21/open/tcp//ftp//, 22/open/tcp//ssh//, 80/open/tcp//http//,
443/open/tcp//https// Ignored State: filtered (1)
Host: 192.168.1.23 () Status: Up
…
Görüldüğü gibi rapor dosyası parse edilmeye uygun bir biçimde içerik sağlamaktadır.
Özellikle geniş alan ağlarında ya da taramaların otomatize edilmek istenildiği durumlar için
oldukça uygun bir biçim sunulmaktadır.
-oX : Belirtilen rapor dosyası ile aynı isimde XML biçimde çıktı üretir. Örnek kullanım için;
# nmap -n -Pn -sS --open -p 21,22,80,443,445 192.168.1.0/24 -oX nmap_rapor
Tarama sonrası çalışma dizini içerisinde normal çıktı biçiminde nmap_rapor isimli dosya
oluşturulmuştur.
# ls -l
nmap_rapor
...
Oluşturulan rapor dosyası içeriği ise aşağıda gösterildiği şekilde olmaktadır.
# cat nmap_rapor
...
<verbose level="0"/>
<debugging level="0"/>
<host starttime="1382995249" endtime="1382995251"><status state="up"
reason="arp-response" reason_ttl="0"/>
<address addr="192.168.1.1" addrtype="ipv4"/>
<address addr="EC:23:3D:D4:85:51" addrtype="mac"/>
<hostnames>
</hostnames>
<ports><extraports state="filtered" count="1">
6. 6
<extrareasons reason="no-response" count="1"/>
…
-oS : Belirtilen rapor dosyası ile aynı isimde script kiddie biçimde çıktı üretir. Örnek kullanım
için;
# nmap -n -Pn -sS --open -p 21,22,80,443,445 192.168.1.0/24 -oS nmap_rapor
Tarama sonrası çalışma dizini içerisinde normal çıktı biçiminde nmap_rapor isimli dosya
oluşturulmuştur.
# ls -l
nmap_rapor
...
Oluşturulan rapor dosyası içeriği ise aşağıda gösterildiği şekilde olmaktadır.
# cat nmap_rapor
...
PORT $t4t3 $3rvICe
21/tcp opeN ftp
22/Tcp oP3n $sH
80/tcp 0p3N http
443/tcp 0p3n Httpz
...
-oA : Normal, parse edilebilir ve XML olmak üzere 3 biçimde rapor üretmek için kullanılan
parametredir.
# nmap -n -Pn -sS --open -p 21,22,80,443,445 192.168.1.0/24 -oN nmap_rapor
Tarama sonrası çalışma dizini içerisinde normal çıktı biçiminde nmap_rapor.gnmap,
nmap_rapor.nmap ve nmap_rapor.xml isimli 3 dosya oluşturulmaktadır.
# ls -l
nmap_rapor.gnmap
nmap_rapor.nmap
nmap_rapor.xml
...
Rapor dosyalarının içeriklerine ait ayrıntılar yukarıda ayrıntılı olarak açıklanmıştır.
-iL: Hedef ip adres bilgisinin dosyadan okunması için kullanılan parametredir. Örnek
kullanım gösterildiği gibi olmaktadır. /tmp/ip_liste.txt dosyasının içeriğinin aşağıdaki gibi
olduğu kabul edilmektedir.
# cat /tmp/ip_liste.txt
192.168.1.1
192.168.2.0/24
192.168.1.1-254
7. 7
# nmap -n -Pn -p 22-25 --open -iL /tmp/ip_liste.txt
--exclude: Hedef ip adresleri için istisna uygulanmasını sağlayan parametredir. Belirtilen ip
adresleri veya ağlar hariç tutularak tarama işlemi gerçekleştirilmektedir.
# nmap -n -Pn -sS --open -p 22-25 --exclude 192.168.1.1,192.168.1.2
192.168.1.0/24
Tarama sonrası oluşturulan rapor dosyasının içeriğinde 192.168.1.23 ip adresine ait bilgiler
bulunmamaktadır.
-iR : Hedef ip adreslerinden rastgele olarak seçilmesini sağlayan parametredir. Özellikle
IDS/IPS gibi sistemlerin tarama gerçekleştirildiğini tespit edememesi için kullanılabilen bir
parametredir. Bu şekilde hedef ip adreslerine sıralı bir biçimde paket gönderilmeyerek
taramaların tespit edilmesi zorlaştırılmaya çalışılmaktadır.
# nmap -n -Pn -sS -p 22-25 --open -iR -iL ip_adres.txt