Merhabalar ben Anka Red Team'den Bunjo,
bu konuda "IP Spoofing" kavramını açıklayıp, basit bir IP Spoofing işlemi gerçekleştiren script kodlamayı anlatacağım.
IP Spoofing Kavramı
IP spoofing, ağ güvenliği ve iletişiminde kullanılan bir terimdir ve saldırganların gerçek IP adreslerini gizlemek veya başka bir kişi veya sistem gibi görünmek için sahte IP adresleri kullanmasını ifade eder. Bu teknik, ağ trafiğini yönlendirmek, bilgiyi ele geçirmek, kimlik avı (phishing) saldırıları gerçekleştirmek veya ağ üzerindeki diğer zararlı faaliyetleri gizlemek gibi amaçlarla kullanılabilir.
IP spoofing'in en yaygın kullanımı, paket başlıklarını manipüle ederek, kaynak IP adresi alanını sahte bir IP adresiyle değiştirerek gerçekleşir. Bu şekilde, saldırganlar, hedef ağlara veya sistemlere gerçek kimliklerini gizleyebilir ve izlenemez hale gelebilirler. Ancak, IP spoofing tekniği genellikle daha karmaşık saldırıların bir parçası olarak kullanılır ve yetkin ağ güvenlik önlemleriyle engellenebilir.
Birçok ağ güvenlik önlemi, IP spoofing'i tespit etmeye ve önlem almaya yöneliktir. Bu önlemler arasında paket filtreleme, ağ trafiği izleme ve doğrulama mekanizmaları gibi teknikler bulunur. Ayrıca, güvenlik duvarları (firewall'lar), ağdaki trafiği izleyen IDS/IPS (intrusion detection/prevention systems) sistemleri ve VPN (virtual private network) gibi teknolojiler de IP spoofing'e karşı koruma sağlarlar.
Kütüphane Kurulumları
Rich (BB code):
sudo apt-get install libpcap-dev
Rich (BB code):
gem install packetfu faker colorize
Ruby IP Spoofer
Ruby:
require 'faker'
require 'colorize'
require 'packetfu'
include PacketFu
$fake = Faker::Internet
def generate_fake_ip
$fake.ip_v4_address
end
def craft_and_send_packet(source_ip, destination_ip)
icmp_pkt = PacketFu::ICMPPacket.new
icmp_pkt.ip_saddr = source_ip
icmp_pkt.ip_daddr = destination_ip
icmp_pkt.payload = "Bunjo's Ruby"
icmp_pkt.recalc
icmp_pkt.to_w
end
if ARGV.length != 1
puts '[-] Error: ruby spoofer.rb <dst_ip>'.colorize(:red)
exit(1)
end
destination_ip = ARGV[0]
source_ip = generate_fake_ip
craft_and_send_packet(source_ip, destination_ip)
puts '{+} ICMP packet sent!'.colorize(:green)
İlk olarak, faker, colorize, ve packetfu adlı üç farklı Ruby kütüphanesini kullanırız. Bu kütüphaneler farklı amaçlara hizmet eder:
faker: Rastgele veriler oluşturmak için kullanılır. Örneğin, rastgele IP adresleri oluşturmak için kullanacağız.
colorize: Konsol çıktılarını renklendirmek için kullanılır. Bu sayede çıktılar daha görsel ve anlaşılır olabilir.
packetfu: Ağ paketlerini manipüle etmek için kullanılır. Bu kütüphane, ağ paketlerini oluşturmak, göndermek ve analiz etmek için kullanılan araçlar sağlar.
$fake adlı bir değişken oluşturulur ve bu değişkenin içine Faker::Internet modülü atanır. Bu modül, rastgele internet verileri oluşturmak için kullanılır.
generate_fake_ip adında bir fonksiyon tanımlanır. Bu fonksiyon, Faker::Internet modülünden bir rastgele IPv4 adresi oluşturur ve bu adresi döndürür.
craft_and_send_packet adında bir fonksiyon tanımlanır. Bu fonksiyon, kaynak ve hedef IP adreslerini parametre olarak alır ve bu bilgilerle bir ICMP paketi oluşturur ve gönderir.
Programın ana bölümünde, komut satırından bir hedef IP adresi alınır (ARGV ile alınan argümanlar incelenir).
generate_fake_ip fonksiyonu çağrılarak rastgele bir kaynak IP adresi oluşturulur.
craft_and_send_packet fonksiyonu çağrılarak ICMP paketi oluşturulur ve belirtilen hedef IP adresine gönderilir.
Son olarak, gönderilen ICMP paketinin başarıyla gönderildiğine dair bir çıktı verilir ve bu çıktı yeşil renkle renklendirilir.
faker: Rastgele veriler oluşturmak için kullanılır. Örneğin, rastgele IP adresleri oluşturmak için kullanacağız.
colorize: Konsol çıktılarını renklendirmek için kullanılır. Bu sayede çıktılar daha görsel ve anlaşılır olabilir.
packetfu: Ağ paketlerini manipüle etmek için kullanılır. Bu kütüphane, ağ paketlerini oluşturmak, göndermek ve analiz etmek için kullanılan araçlar sağlar.
$fake adlı bir değişken oluşturulur ve bu değişkenin içine Faker::Internet modülü atanır. Bu modül, rastgele internet verileri oluşturmak için kullanılır.
generate_fake_ip adında bir fonksiyon tanımlanır. Bu fonksiyon, Faker::Internet modülünden bir rastgele IPv4 adresi oluşturur ve bu adresi döndürür.
craft_and_send_packet adında bir fonksiyon tanımlanır. Bu fonksiyon, kaynak ve hedef IP adreslerini parametre olarak alır ve bu bilgilerle bir ICMP paketi oluşturur ve gönderir.
Programın ana bölümünde, komut satırından bir hedef IP adresi alınır (ARGV ile alınan argümanlar incelenir).
generate_fake_ip fonksiyonu çağrılarak rastgele bir kaynak IP adresi oluşturulur.
craft_and_send_packet fonksiyonu çağrılarak ICMP paketi oluşturulur ve belirtilen hedef IP adresine gönderilir.
Son olarak, gönderilen ICMP paketinin başarıyla gönderildiğine dair bir çıktı verilir ve bu çıktı yeşil renkle renklendirilir.
Kullanım & WireShark
Okuyan herkese teşekkür ederim, kendinize göre geliştirebilirsiniz.