# 3-DHCP Attack

### DHCP NEDİR ?

DHCP, ağda bulunan her bir bilgisayarın IP adresi, alt ağ maskesi, varsayılan ağ geçidi ve DNS sunucuları gibi ağ bağlantısı ayarlarının otomatik olarak atamasını sağlar.

<figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FVeGlgawCfSX9ZBYWdZjt%2Fimage.png?alt=media&#x26;token=9fc29253-cee7-47fa-808f-41c49cc73bb8" alt=""><figcaption></figcaption></figure>

DHCP paket alışverişi ve yapısı yukarı şekilde görülmektedir.

### DHCP mesajları <a href="#h3-1" id="h3-1"></a>

Bir istemcinin ve bir DHCP sunucusunun bir IP adresi ve diğer ağ parametrelerini alması için yalnızca dört mesaj gerekir. DHCP sunucularını keşfetmek için, bir IP adresi alacak şekilde yapılandırılmış bir istemci otomatik olarak `DHCPDISCOVER` ağa mesaj (255.255.255.255) ve veri bağlantısı (FF: FF: FF: FF: FF) yayın adresleri. IP üstbilgisi, istemci henüz bu parametreyi almadığından IP paketinin kaynak adres alanında 0.0.0.0 değerini belirtir. İstemcinin MAC adresi, veri bağlantı katmanındaki ileti kaynağı alanında belirtilir.\\

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2F6CEQv2CCcnGr46d3W7JX%2Fimage.png?alt=media&#x26;token=07fc6cbb-e422-4f72-86db-ed790d8305e6" alt=""><figcaption></figcaption></figure></div>

Aldıktan sonra `DHCPDISCOVER` potansiyel bir istemciden gelen mesaj olan DHCP sunucusu, kullanılabilir bir IP adresi sunar. Sunucu tarafından istemciye gönderilen bu mesaj çağrılır `DHCPOFFER`. Teklif süresi boyunca, bu adres DHCP sunucusu tarafından saklanır ve diğer istemcilere sunulamaz.

Müşterinin bir `DHCPOFFER` bir DHCP sunucusundan mesaj. Daha sonra bir `DHCPREQUEST` teklifi veren sunucunun IP adresini içeren yayın mesajı. Bu yayın mesajı, diğer DHCP sunucularına istemcinin sunuculardan birinden bir teklifi kabul ettiğini bildirir. Bu durumda, kalan DHCP sunucuları ayrılmış IP adreslerini serbest bırakır ve bu adresler daha sonra diğer istemcilere sunulabilir.

Sunucu bir `DHCPREQUEST` ileti, istemci tarafından seçilen IP adresini belirtir `DHCPACK` iletin ve istemciye geri gönderir.

Bu noktada, istemci gerekli tüm ağ parametrelerini almıştır ve etkileşim sürecinin tamamlandığı düşünülmektedir. Ancak bu dört temel mesaja ek olarak, birkaç önemli mesaj daha var:

* `DHCPNACK`bir IP adresi vermeyi reddettiğini bildirmek için sunucu tarafından istemciye gönderilen bir mesajdır; ve&#x20;
* `DHCPRELEASE`istemcinin artık geçerli IP adresini kullanmak istemediğini ve sunucunun bu adresi ‘ döndürebileceğini bildirmek için istemci tarafından sunucuya gönderilen bir mesajdır kullanılabilir IP adresleri havuzu.

Temel mesajlarla yapılır. Özetlemek gerekirse `DHCPOFFER`, `DHCPACK`, ve `DHCPNAK` gönderiliyor **sadece** sunucu tarafından istemciye.

### DHCP başlık yapısı

Şimdi UDP datagramlarında kapsüllenmiş DHCP başlığına kısa bir göz atalım. Bu arada, taşıma katmanından bahsetmeyi unuttum: DHCP'de, sunucu ve istemci sırasıyla UDP bağlantı noktalarını 67 ve 68 kullanıyor.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FfwDwDBDGKpwgNP5EFXJ4%2Fimage.png?alt=media&#x26;token=7f326434-6bfa-488d-88a1-d98890067399" alt=""><figcaption></figcaption></figure></div>

En önemli başlık alanlarından geçelim

* `op Code`– mesaj türünü belirtir. İstemci sunucuya istekte bulunursa, bu alan 0x01 olarak ayarlanır; aksi takdirde 0x02'ye;
* `htype`Veri bağlantı katmanında çalışan – adres türü. Ethernet için bu alan 0x01 olarak ayarlanmıştır;
* `hlen`– bağlantı katmanı adresinin uzunluğunu bayt cinsinden belirtir (Ethernet için 0x06);
* `xid`– istekleri ve yanıtları eşleştirmek için kullanılan işlem tanımlayıcısı;
* `sec`–, istemcinin IP adresini almaya veya güncellemeye başladığı andan bu yana geçen süreyi görüntüler (saniye cinsinden);
* `CIADDR`– İstemcinin IP adresi. Bu alan, istemciye önceden bir IP adresi atanmışsa kullanılır ve kiralaması yenilenmelidir;
* `YIADDR`– sunucu bu alanı istemciye sunulan IP adresiyle doldurur;
* `SIADDR`– DHCP sunucusunun yanıt mesajları gönderdiğinde IP adresi (ör. DHCPOFFER ve DHCPACK) istemciye;
* `GIADDR`İstemcinin ve DHCP sunucusunun bulunduğu ağları ayıran ağ geçidi aracısının (yönlendirici) IP adresi;
* `CHADDR`– istemcinin MAC adresini belirtir. Bu alan özel bir önem taşıyor, hatırlayın; ve&#x20;
* `Options`– ek parametreleri belirten değişken uzunluklu bir alan (örn. Alt ağ maskesi, DNS sunucularının adresleri, varsayılan ağ geçidi adresi, adres kiralama süresi vb.).

Umarım, şimdiye kadar her şey açıktır. Şimdi yukarıda belirtilenlere geri dönelim `CHADDR` alan. Kaynak MAC adresinin `CHADDR` DHCP üstbilgisinin alanı ve Ethernet üstbilgisindeki kaynak MAC adresi (istemci tarafından sunucuya gönderilen iletilerde) aynı olmalıdır.

<figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2F5Qd27vAxs5QpyiFveCS6%2Fimage.png?alt=media&#x26;token=1f39a009-c8c0-467f-98d1-fc47f7314b19" alt=""><figcaption></figcaption></figure>

Burada temel paket bilgisini aldık ve saldırı yapınca paket yapısına detayına inicez.

### DHCP ortak saldırıları <a href="#id-471c" id="id-471c"></a>

DHCP, aşağıda açıklanan birkaç yaygın saldırıdan muzdariptir:

* **HCP Starvation Attack:** Bu tür saldırı, bir saldırganın yeni IP adresleri için DHCP sunucusunun işleyebileceğinden daha fazla istek göndermesi durumunda ortaya çıkar. Sonuç olarak, kötü amaçlı isteklerin neden olduğu aşırı yükleme nedeniyle meşru istemcilere IP adresleri atanmayacaktır.
* **DHCP Flood Attack:** Bu tür bir saldırı meydana geldiğinde, sunucu o kadar çok istekle boğulur ki, meşru isteklere yanıt veremez veya zamanında yanıt veremez hale gelir (bu, uzun bekleme süreleri anlamına gelir). Bu tür saldırılar son derece yıkıcı olduğundan hizmet reddi saldırıları (DoS) olarak kabul edilir.

### Flood Attack <a href="#id-9843" id="id-9843"></a>

Sel saldırısı, sunucuya kaldırabileceğinden daha fazla istek göndererek onu bunaltmaya çalışan bir saldırıdır. Flood saldırısının amacı, bilgisayar kaynaklarını işgal etmek ve hedeflenen sistemin amaçlanan işlevini yerine getirememesi için bunları kullanmaktır. Taşma, ICMP paketleri, UDP paketleri ve TCP SYN taşmaları dahil olmak üzere birçok yöntem kullanılarak gerçekleştirilebilir.

### DHCP Starvation Attack <a href="#cbae" id="cbae"></a>

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2F1UnKULqR17lN2xZGLVYv%2Fimage.png?alt=media&#x26;token=61b283c1-614f-4b06-8366-fc9a7928448f" alt=""><figcaption></figcaption></figure></div>

DHCP açlık saldırısı, DHCP sunucusuna yapılan bir saldırıdır. Meşru DHCP istemcilerine hizmeti reddetmek için kullanılır. Saldırgan, DHCP sunucusu tarafından henüz tahsis edilmemiş IP adresleri havuzunda kendi IP adresinin tahsis edildiğini iddia ederek müşterinin isteğine verilen yanıtı taklit eder. Bu, meşru istemcinin hizmetin reddedilmesine ve ağ erişimi için geçerli bir rotaya sahip olmamasına neden olur. Saldırgan daha sonra sahte kaynak adreslerine sahip paketler gönderir, böylece bunlar meşru istemcilerden geliyormuş gibi görünür ve böylece zaten IP adresleri almış olan istemciler için hizmet reddine neden olur.

Bu tür saldırıları azaltmanın en iyi yolu, IP adresleri isteyen istemciler için bir tür kimlik doğrulaması yapmaktır; böylece yalnızca kimliği doğrulanmış kullanıcılar yeni kiralamalar için istek gönderebilir veya mevcut kiralamaları yenileyebilir.

### Sahte DHCP Sunucusu

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FS0jDllYamNXajMHrJhXF%2Fimage.png?alt=media&#x26;token=1876045b-38e5-4b46-91e2-b28db16882b9" alt=""><figcaption></figcaption></figure></div>

Sahte DHCP sunucusu, ağ yöneticisinin izni olmadan bir ağa kurulan kötü amaçlı bir DHCP sunucusudur. Bu, bir saldırganın ağdaki IP adreslerini kullanmaya yetkili olmayan ana bilgisayarlara IP adresleri atamasına olanak tanır ve aynı zamanda saldırganların DNS zehirlenmesi veya ortadaki adam saldırıları gibi diğer kötü niyetli eylemleri gerçekleştirmesine de olanak tanır.

Sahte DHCP sunucularına karşı önlem almak için atabileceğiniz birkaç adım vardır:

* Yetkisiz DHCP sunucuları için ağları izleyin.
* Yönlendiricileri erişim kontrol listeleriyle (ACL'ler) yapılandırın ve bunlar üzerinden yalnızca güvenilir trafiğe izin verin.
* Yöneticilerin yönlendiricinize doğrudan erişmesini istemiyorsanız **dhcpwatch** veya **DNShaper** gibi yazılımları kullanın

## DHCP SALDIRILARI

### DHCP AÇLIĞI <a href="#h2-3" id="h2-3"></a>

Bir DHCP Açlık saldırısı gerçekleştirmeden önce prensibini açıklamalıyım. Bildiğiniz gibi, DHCP sunucusu istemcilere atanan IP adreslerini ve MAC adreslerini içeren bir yazışma tablosu tutar; sonuç olarak, zaten bir istemciye atanmış bir IP adresi başka bir istemciye sunulamaz. DHCP Açlık saldırısı fikri, sahte göndererek DHCP sunucusunu ‘ egzoz ’ yapmaktır `DHCPDISCOVER` rastgele kaynak MAC adreslerine sahip paketler. Sunucu bu paketlere yanıt verecek ve havuzdan kullanılabilir IP adreslerini ayıracaktır; sonuç olarak, bir süre meşru kullanıcılara IP adresleri atayamaz (saldırı etkin aşamada olduğu sürece).

İlk olarak, bir router'da DHCP havuzu oluşturalım. Bu SERVER, switch üzerinde veya harici bir cihazda olabilir; mantık tamamen aynıdır.

{% code fullWidth="true" %}

```
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 4.4.4.1 255.255.255.0
R1(config-if)#no shutdown 
//Buraya kadar bacağına ip adresi verdik.
```

{% endcode %}

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FywVr09PhCEGi9au8D0wP%2Fimage.png?alt=media&#x26;token=b0f44d0e-c259-4df5-9cc1-ddc97a87e200" alt=""><figcaption></figcaption></figure></div>

Kali Linux ip adresi ataması ve doğrulası.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FkddIq33cQxTCviinvVrc%2Fimage.png?alt=media&#x26;token=cb003561-11f3-452d-8da5-e55a98b7c76f" alt=""><figcaption></figcaption></figure></div>

Kali Linux ile router arasında sorunsuz iletişim kurulmaktadır.\\

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FNNXMDAZnYtDQy7N4V7kV%2Fimage.png?alt=media&#x26;token=d98d3bda-e817-4188-a801-e226ea41c08b" alt=""><figcaption></figcaption></figure></div>

Router ile Kali Linux arasında herhangi bir iletişim sorunu bulunmamaktadır.

{% code fullWidth="true" %}

```
R1(config)#ip dhcp pool HAVUZ 
R1(dhcp-config)#network 4.4.4.0 255.255.255.0 
R1(dhcp-config)#default-router 4.4.4.1 
R1(dhcp-config)#domain-name 8.8.8.8
R1(dhcp-config)#lease 7
R1(config)#ip dhcp excluded-address 4.4.4.1 4.4.4.10   
//Detaya inmeden bunlar CCNA konusu olduğundan değinmicem yazılar içerisinde kişilerin CCNP seviyesinde Routing 
// ve Switching bilgini varsayımlanmıştır. 
```

{% endcode %}

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FniaBDzR74NG7eaKblNtq%2Fimage.png?alt=media&#x26;token=aaa76576-294e-49ff-9738-b61bf6f04f35" alt=""><figcaption></figcaption></figure></div>

Burada olşuturulan havuz hakkında bilgi almak için bakılabilir.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2Ftla8Xrjt535dl3zxymBf%2Fimage.png?alt=media&#x26;token=25d806c6-9468-45b6-a2e8-243545cb7b2b" alt=""><figcaption></figcaption></figure></div>

Burada ise bir istemcinin ip adresini otomatik almasını istedik ve aldı.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FfsCdkGTrGXJAQTN5be0L%2Fimage.png?alt=media&#x26;token=df536878-511d-4fa4-a4ee-feea82b3da86" alt=""><figcaption></figcaption></figure></div>

Görüldüğü gibi ipş olduk.

&#x20;adresini almış ve bunu doğrulamış olduk.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FVtzanUyEQGoYyXGIkKJg%2Fimage.png?alt=media&#x26;token=f4ada72d-5311-4ed1-87ae-11918cf38667" alt=""><figcaption></figcaption></figure></div>

Router'da ise alınan ip adreslerini görüntüledik.

## DETAYLI PAKET YAPISI

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FSK3tUDYurJVQczlqxRBj%2Fimage.png?alt=media&#x26;token=8a00e026-9ad9-4212-b626-8a9efe3290af" alt=""><figcaption></figcaption></figure></div>

Görüldüğü gibi, paket DORA olarak kodladığımız DHCP alışverişi yapıldı ve istemci IP adresini almış gibi görünüyor.\\

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FEpOKctk6eyb51PgIV9Im%2Fimage.png?alt=media&#x26;token=87cfffb1-5987-42b6-a13e-bd04b22f7cb1" alt=""><figcaption></figcaption></figure></div>

1 => İstemcinin yayınladığı mesaj türü: Broadcast mesajı.&#x20;

2 => İstemcinin MAC adresi.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FaEgpRuVKFz7AZzK5qHl2%2Fimage.png?alt=media&#x26;token=698df926-d524-4ac7-8bf4-975d0b2d82d5" alt=""><figcaption></figcaption></figure></div>

1 => DHCP adresinin kullandığı IPv4 türü ve protokol: IPv4 üzerinde çalışan UDP protokolü.&#x20;

2 => Yayın yapılırken hedef adresi belirten alan.&#x20;

3 => Broadcast yayın adresini temsil eder. Bu, ağdaki tüm cihazlara yönlendirilen bir yayındır.

Unutmayın ki diğer başlıklar CCIE seviyesinde olduğundan, daha spesifik bir açıklama veya detaylandırma gerekebilir.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2F8Jn0QMn9UKP7HtMvG9yw%2Fimage.png?alt=media&#x26;token=3903d64b-475e-47f5-86b5-900451136592" alt=""><figcaption></figcaption></figure></div>

1 => Yayın yaparken 68 numaralı portu kullandığını belirtiyor. 67 numaralı port ise hedefe giderken kullanılan portu temsil eder.&#x20;

2 => UDP mesaj paketinin içeriğinin boyutu.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FT2D7s97c7KyGPfpHJbj2%2Fimage.png?alt=media&#x26;token=0287bcba-8885-4be6-8f6b-6e108057dd4b" alt=""><figcaption></figcaption></figure></div>

**✓ Dynamic Host Configuration Protocol (Discover) Ana Başlık:** Bu bölüm, DHCP (Dynamic Host Configuration Protocol) Discover mesajını temsil eder.

**1. Message type: Boot Request (1)**

* Mesaj türü: Boot Request (1)
  * Bu alan, mesajın bir Boot Request (Önyükleme İsteği) olduğunu belirtir.

**2. Hardware type: Ethernet (0x01)**

* Donanım türü: Ethernet (0x01)
  * Bu alan, donanım türünün Ethernet olduğunu gösterir.

**3. Hardware address length: 6**

* Donanım adres uzunluğu: 6
  * Bu alan, donanım adresinin uzunluğunu belirtir (Ethernet adres uzunluğu).

**4. Hops: 0**

* Hops: 0
  * Bu alan, DHCP mesajının ağdaki hop sayısını belirtir.

**5. Transaction ID: 0x61d5a611**

* İşlem Kimliği: 0x61d5a611
  * Bu alan, DHCP işlem kimliğini gösterir.

**6. Seconds elapsed: 0**

* Geçen saniyeler: 0
  * Bu alan, DHCP isteğinin üzerinden geçen süreyi belirtir.

**7. ✓ Bootp flags: 0x0000 (Unicast)**

* Bootp bayrakları: 0x0000 (Unicast)
  * Bu alan, Bootp bayraklarını belirtir ve Broadcast flag'in Unicast olduğunu gösterir.

**8. Client IP address: 0.0.0.0**

* İstemci IP adresi: 0.0.0.0
  * Bu alan, istemcinin IP adresini belirtir.

**9. Your (client) IP address: 0.0.0.0**

* Senin (istemci) IP adresin: 0.0.0.0
  * Bu alan, istemcinin IP adresini belirtir.

**10. Next server IP address: 0.0.0.0**

* Bir sonraki sunucu IP adresi: 0.0.0.0
  * Bu alan, bir sonraki sunucu IP adresini belirtir.

**11. Relay agent IP address: 0.0.0.0**

* Bağlantı aracı IP adresi: 0.0.0.0
  * Bu alan, bağlantı aracı IP adresini belirtir.

**12. Client MAC address: 00:50:79:66:68:00 (00:50:79:66:68:00)**

* İstemci MAC adresi: 00:50:79:66:68:00 (00:50:79:66:68:00)
  * Bu alan, istemcinin MAC adresini belirtir.

**13. Client hardware address padding: 00000000000000000000**

* İstemci donanım adresi dolgusu: 00000000000000000000
  * Bu alan, istemci donanım adresinin dolgusunu içerir.

**14. Server host name not given**

* Sunucu ana bilgisayar adı verilmemiştir
  * Bu alan, sunucu ana bilgisayar adının verilmediğini belirtir.

**15. Boot file name not given**

* Önyükleme dosya adı verilmemiştir
  * Bu alan, önyükleme dosya adının verilmediğini belirtir.

**16. Magic cookie: DHCP**

* Sihirli çerez: DHCP
  * Bu alan, DHCP sihirli çerezini belirtir.

**17. ✓ Option: (53) DHCP Message Type (Discover)**

* Seçenek: (53) DHCP Mesaj Türü (Discover)
  * Bu alan, DHCP mesaj türünü belirtir ve bu örnekte Discover (Keşfet) olarak ayarlanmıştır.

**18. Length: 1**

* Uzunluk: 1
  * Bu alan, DHCP Mesaj Türü seçeneğinin uzunluğunu belirtir.

**19. DHCP: Discover (1)**

* DHCP: Discover (1)
  * Bu alan, DHCP mesajının Discover (Keşfet) türünde olduğunu belirtir.

**20. ✓ Option: (12) Host Name**

* Seçenek: (12) Ana Bilgisayar Adı
  * Bu alan, istemcinin ana bilgisayar adını belirtir.

**21. Length: 4**

* Uzunluk: 4
  * Bu alan, Ana Bilgisayar Adı seçeneğinin uzunluğunu belirtir.

**22. Host Name: PC11**

* Ana Bilgisayar Adı: PC11
  * Bu alan, istemcinin ana bilgisayar adını gösterir.

**23. ✓ Option: (61) Client identifier**

* Seçenek: (61) İstemci Kimliği
  * Bu alan, istemcinin kimliğini belirtir.

**24. Length: 7**

* Uzunluk: 7
  * Bu alan, İstemci Kimliği seçeneğinin uzunluğunu belirtir.

**25. Hardware type: Ethernet (0x01)**

* Donanım türü: Ethernet (0x01)
  * Bu alan, donanım türünün Ethernet olduğunu gösterir.

**26. Client MAC address: 00:50:79:66:68:00 (00:50:79:66:68:00)**

* İstemci MAC adresi: 00:50:79:66:68:00 (00:50:79:66:68:00)
  * Bu alan, istemcinin MAC adresini belirtir.

**27. ✓ Option: (255) End**

* Seçenek: (255) Son
  * Bu alan, seçeneklerin sona erdiğini belirtir.

**28. Option End: 255**

* Seçenek Sonu: 255
  * Bu alan, seçeneklerin sona erdiğini belirtir.

**29. Padding: ...**

* Dolgu: ...
  * Bu alan, mesajın sonunu belirlemek için kullanılan dolguyu temsil eder.

Bu açıklamalar, verilen DHCP Discover mesajının farklı alanlarını detaylı bir şekilde anlatmaktadır.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FFixF24C4XMTSy6VezUU7%2Fimage.png?alt=media&#x26;token=08151904-e44b-46ab-9994-e9e5c34f9412" alt=""><figcaption></figcaption></figure></div>

Offer paketinde, DHCP Sunucu bilgisini taşıdığı ve bu bilginin açıkça görülebildiği şekilde belirtiliyor. Bu bilgiler İstemci tarafına gitmektedir.

Diğer açıklamalarla benzer olduğu için bir sonraki paket yapısına geçelim.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FQwwWHWZdgg3UZAjyfd97%2Fimage.png?alt=media&#x26;token=17197b9c-f450-44c2-b161-fd7133719c04" alt=""><figcaption></figcaption></figure></div>

Request paket yapısında, istemci, DHCP sunucusuna belirli IP konfigürasyonunu kabul ettiğini bildirir ve bu onayı sunarak istediği konfigürasyonu talep eder.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FW9yhOw7tWwh72c7l1qsi%2Fimage.png?alt=media&#x26;token=786284ef-279f-4a3f-b5e4-4f6802af37d3" alt=""><figcaption></figcaption></figure></div>

Bu paket yapısında, DHCP SERVER onay verdiğinde, İstemci  tarafına kiralanacak IP adresi ve kira süresi gibi bilgiler de iletilmiştir.

### Saldırı Zamanı Dhcp Açlığı

<figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FevP0KgcaPnD6cIdiF5VG%2Fimage.png?alt=media&#x26;token=3c95087d-4895-42c2-a6a6-bdc0deb024a5" alt=""><figcaption></figcaption></figure>

Burada DHCP seçeneğini seçip 'Enter' tuşuna basıyoruz.\\

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FT4Zz7ckS5Q670LoXyqub%2Fimage.png?alt=media&#x26;token=da7aab42-b7c3-445d-82f7-b3acf9efc154" alt=""><figcaption></figcaption></figure></div>

Burda birazdan dolu paket atıp dolacak yer.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FCKP5lfltdJfT6uoaiEoq%2Fimage.png?alt=media&#x26;token=c646c15c-0be0-4f8e-9e16-430d47eee9ac" alt=""><figcaption></figcaption></figure></div>

Gönderilecek olan paket bilgileri verilmiş.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FQtw7sg1ehRduBZCg7eOs%2Fimage.png?alt=media&#x26;token=364fed20-e514-4ef2-8e63-732c57630fee" alt=""><figcaption></figcaption></figure></div>

Daha sonra "X" tuşuna tıklayarak bu menüye geliyoruz.&#x20;

"1" tuşuna basıp DOS saldırısını başlatıyoruz.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FB7hLNgIbJqq76PbZIQ1u%2Fimage.png?alt=media&#x26;token=95294c9e-2944-4c56-87dd-b38df6758b11" alt=""><figcaption></figcaption></figure></div>

Görüldüğü gibi, sağ tarafta saate dikkat edersek, saniyeler içinde ne kadar istek atıldığını görebiliriz.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FZNo9OJUE5yMYGFVdGVer%2Fimage.png?alt=media&#x26;token=ebc5974c-9c13-4234-9dbf-1f78b5035c3c" alt=""><figcaption></figcaption></figure></div>

Bu ise Wireshark çıktısı ve birçok paket görülmektedir.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FeeDnhf7fMPNw5Txn6xeV%2Fimage.png?alt=media&#x26;token=30fa0bb6-c1db-4867-b88c-0459242137d6" alt=""><figcaption></figcaption></figure></div>

Paket sayıda verilmiştir.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FTDf90lgdEAm74PLjJLKj%2Fimage.png?alt=media&#x26;token=1cfa686a-53fe-4b1a-b578-8555516292a7" alt=""><figcaption></figcaption></figure></div>

Router çıktısı, birçok istek gönderip DHCP sunucusunu meşgul etmiş durumda.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FkjEWITs7qvLNci89GNPk%2Fimage.png?alt=media&#x26;token=39064ceb-fd03-44d9-b9ff-afd5923e26af" alt=""><figcaption></figcaption></figure></div>

Istemci, IP almaya çalışıyor ancak başarılı olamıyor. Bu durumun sebebi, yaptığımız DOS saldırısı ile DHCP hizmetini meşgul etmemiz ve hafızasını doldurmamızdır.

<div data-full-width="true"><figure><img src="https://4228550144-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwwYBYnIX2DJXZOvLdNMK%2Fuploads%2FArn2jos70cfWxwX17ehw%2Fimage.png?alt=media&#x26;token=3e988f31-28d6-4968-90d7-4298b3d66680" alt=""><figcaption></figcaption></figure></div>

İşlemciyi meşgul etmemek için, \*\* olanlar ise doluluk oranını temsil eder.

{% code fullWidth="true" %}

```
R1#show ip dhcp server statistics  //Bu komut ise çıktıyı daha da detaylı inceleme imkanı sağlar.
Memory usage         78435
Address pools        1
Database agents      0
Automatic bindings   244
Manual bindings      0
Expired bindings     486
Malformed messages   0
Secure arp entries   0
Renew messages       0
Workspace timeouts   0
Static routes        0
Relay bindings       0
Relay bindings active        0
Relay bindings terminated    0
Relay bindings selecting     0

Message              Received
BOOTREQUEST          0
DHCPDISCOVER         2674621
DHCPREQUEST          1
DHCPDECLINE          0
DHCPRELEASE          0
DHCPINFORM           0
DHCPVENDOR           0
BOOTREPLY            0
DHCPOFFER            0
DHCPACK              0
DHCPNAK              0

Message              Sent
BOOTREPLY            0
DHCPOFFER            730
DHCPACK              1
DHCPNAK              0

Message              Forwarded
BOOTREQUEST          0
DHCPDISCOVER         0
DHCPREQUEST          0
DHCPDECLINE          0
DHCPRELEASE          0
DHCPINFORM           0
DHCPVENDOR           0
BOOTREPLY            0
DHCPOFFER            0
DHCPACK              0
DHCPNAK              0

DHCP-DPM Statistics
Offer notifications sent        0
Offer callbacks received        0
Classname requests sent         0
Classname callbacks received    0
```

{% endcode %}

{% code fullWidth="true" %}

```
Sonuç :
DHCPDISCOVER         2674621 // paketi gelmiş.
DHCPOFFER            730 // tane mesaj geri gitmiş
DHCPACK              1 // tane mesaj onay almış
DHCPREQUEST          1 //tane mesaj istek atmış
Address pools        1 // bir tane havuz adresi bulunmaktadır
```

{% endcode %}

### DHCP Spoofing

### İleri Seviyede Güvenlik

DHCP açlığı, ağda bulunan istemcilerin mevcut tüm IP adreslerini hızlı bir şekilde tüketmesi ve yeni istemcilerin IP adresi alamamasına neden olan bir saldırıdır. Bu tür saldırılara karşı Cisco cihazlarda alınabilecek önlemler şunlardır:

#### 1. **DHCP Snooping Kullanımı**

DHCP snooping, DHCP mesajlarını izler ve yalnızca güvenilir kaynaklardan gelen mesajlara izin verir.

* **Yapılandırma:**

  ```bash
  Router(config)# ip dhcp snooping
  Router(config)# ip dhcp snooping vlan <vlan-id>
  Router(config)# interface <interface-name>
  Router(config-if)# ip dhcp snooping trust
  Router(config-if)# exit
  ```

  Bu komutlar, belirli VLAN'larda DHCP snooping'i etkinleştirir ve güvenilir arayüzleri belirler.

#### 2. **Port Security Uygulaması**

Port security, bir arayüz üzerinden belirli sayıda cihazın bağlantı kurmasını sağlar ve bu sayıyı aşan cihazları engeller.

* **Yapılandırma:**

  ```bash
  Router(config)# interface <interface-name>
  Router(config-if)# switchport mode access
  Router(config-if)# switchport port-security
  Router(config-if)# switchport port-security maximum <max-count>
  Router(config-if)# switchport port-security violation restrict
  Router(config-if)# switchport port-security mac-address sticky
  Router(config-if)# exit
  ```

  Bu komutlar, belirli bir arayüze maksimum cihaz sayısı sınırı koyar ve bu sınırı aşan cihazları kısıtlar.

#### 3. **IP Source Guard Kullanımı**

IP Source Guard, belirli bir arayüzde sadece belirli IP adreslerinden gelen trafiğe izin verir.

* **Yapılandırma:**

  ```bash
  Router(config)# ip source guard
  Router(config)# interface <interface-name>
  Router(config-if)# ip verify source
  Router(config-if)# exit
  ```

  Bu komutlar, belirli arayüzlerde IP Source Guard'ı etkinleştirir.

#### 4. **Dynamic ARP Inspection (DAI) Kullanımı**

Dynamic ARP Inspection, ağdaki ARP mesajlarını doğrular ve yalnızca geçerli ARP trafiğine izin verir.

* **Yapılandırma:**

  ```bash
  Router(config)# ip arp inspection vlan <vlan-id>
  Router(config)# interface <interface-name>
  Router(config-if)# ip arp inspection trust
  Router(config-if)# exit
  ```

  Bu komutlar, belirli VLAN'larda DAI'yi etkinleştirir ve güvenilir arayüzleri belirler.

#### 5. **DHCP Rate Limiting**

DHCP rate limiting, belirli bir arayüzde DHCP isteklerinin sayısını sınırlar.

* **Yapılandırma:**

  ```bash
  Router(config)# interface <interface-name>
  Router(config-if)# ip dhcp snooping limit rate <rate>
  Router(config-if)# exit
  ```

  Bu komutlar, belirli bir arayüzde DHCP isteklerinin sayısını belirlenen bir oranla sınırlar.

#### 6. **DHCP Binding Database**

DHCP binding database, IP adresleri ve MAC adresleri arasındaki ilişkiyi korur ve doğrular. Bu, sahte DHCP isteklerini engellemeye yardımcı olabilir.

* **Yapılandırma:**

  ```bash
  Router(config)# ip dhcp snooping database flash:dhcp_binding.db
  Router(config)# ip dhcp snooping database write-delay 60
  ```

  Bu komutlar, DHCP binding database'in yerini ve yazma gecikmesini ayarlar.

#### 7. **DHCP Server Tanımlama ve Kısıtlama**

Güvenilir DHCP sunucularını belirleyerek, yalnızca bu sunucuların IP adresi dağıtmasına izin verebilirsiniz.

* **Yapılandırma:**

  ```bash
  Router(config)# ip dhcp snooping trust <dhcp-server-ip>
  ```

  Bu komut, güvenilir DHCP sunucusunu tanımlar.

Bu önlemler, DHCP açlığına karşı Cisco cihazlarınızda etkin bir koruma sağlamaya yardımcı olacaktır. Her bir yapılandırmanın ağınızın gereksinimlerine uygun olduğundan emin olun ve gerekli ayarlamaları yaparak güvenliği maksimize edin.
