2 Mart 2012 Cuma

Yerel Aglarda Snifferlarin Tespiti


Yerel aglarda sniffer amacli çalıştırılan hostları bulmak için çeşitli araçlar kullanılabilir hatta python, ruby gibi programlama dillerine hakimseniz bir kac satirda bu isi yapabilirsiniz(Python ve Scapy kullanarak tek satirda halledilebilir).

İşin biraz detayına inip Sniffer calistiran makinelerin nasil belirlenebilir sorusunu cevaplayalım.Agda sniffer olarak çalışan makinelerin bulunması demek ağda promiscious modda çalışan ethernet kartlarına sahip sistemlerin bulunması demektir.

Kısaca hatırlayacak olursak ethernet kartları üzerlerinde gömülü olarak gelen ve MAC adresi olarak adlandırılan 6 bytelik adrese sahiptir ve yerel ağlardaki tüm işlemler için bu adresler kullanılır. İki host arasında IP üzerinden haberleşmek istiyorlarsa öncelikle birbirlerinin MAC adreslerini bilmeleri/öğrenmeleri gerekir.

Ethernet kartlarının çalışmasında donanım seviyesinde aşağıda belirtilen 4 tip filtreleme etkindir.



Unicast-> Kendi adresine gelen paketler
Broadcast -> Broadcast adresine gelen paketler
Multicast-> uye olunan multicast gruba ait paketler.
Promiscious -> Gelen paketin ne olduğuna bakmadan kabul edildiği durum.

bizim burada test edeceğimiz mod Promiscious -yani gelen paketin kontrol edilmeden kabul edildiği durum-.
Promiscious modda çalışan(Snifferlar) sistemler nasıl belirlenir? Suphelenilen makineye kendisinin sorgulandığı bozuk broadcast paketleri gönderilir. Normalde host promiscious modda değilse bu paketleri önemsemeyecektir. Ama eğer promiscious modda ise paketin destination’i neresi kontrol etmeden paketi kabul edecektir ve paketin içerisinde de kendisinin sorgulandığını gördüğü için cevaplayacaktır. Böylece biz de o hostta sniffer çalışı çalışmadığını anlamış olacağız. Basit mantık ama etkili..

Örnek araç olarak scapy kullanalım.

>>> is_promisc(“100.100.100.100″, fake_bcast=’ff:ff:00:00:00:00′)
True

Bu arada ağdaki trafiği izlersek aşağıdaki çıktıyı alırız.

# tcpdump -i eth0 -e -tttnn 000000 00:11:25:44:e8:95 > ff:ff:00:00:00:00, ethertype ARP (0×0806),
length 42: arp

who-has 100.100.100.100 tell 100.100.100.101 003151 00:04:61:47:da:74 > 00:11:25:44:e8:95,

ethertype ARP (0×0806), length 60: arp reply 100.100.100.100 is-at 00:04:61:47:da:74

bu ne manaya geliyor?

iki paket var: ilki bizim bulunduğumuz host broadcastten bozma bir adrese 100.100.100.100 adresinin kim
olduğunu sorgulayan ARP paketi gönderiyor. Diğer pakette ağda promiscious modda çalışan ve 100.100.100.100 adresine sahip adres. Kefal gibi atlayıp bozuk adreslenmiş paketimize cevap vermeye çalışıyor ve yakalanıyor. tüm ağı teker teker değilde tek seferde sniffer için taramak istersek Scapy’nin
promiscping fonksiyonunu deneyebilirsiniz.

>>> a=promiscping(“100.100.100.0/24″, timeout=2, fake_bcast=’ff:ff:ff:ff:ff:fe’)

Begin emission:

*Finished to send 256 packets.

Received 1 packets, got 1 answers, remaining 255 packets 00:04:61:47:da:74 100.100.100.100

Hiç yorum yok:

Yorum Gönder