Bilgisayarımızdan Geçen Paketleri Yakalayalım

Codx

Katılımcı Üye
30 Tem 2017
309
1


Merhabalar, iyi forumlar herkese.

Go dilinde ethernet kartımız üzerinden geçen trafiğin tcp ve 80 portlu isteklerini inceleyebileceğimiz bir script yazacağız.

Bunlar için gopacket ve gopacket/pcap library'lerini kullancağız.

Öncesinde bunları çekelim.

Kod:
go get github.com/google/gopacket
go get github.com/google/gopacket/pcap

Ardından ben alışkanlık olarak bir proje klasörü oluşturuyorum, içerisine src isimli bir klasör daha oluşturuyorum. Burada main.go dosyamı vim ile açıyorum.

Öncesinde yapacağım şeyden biraz bahsedelim.

Makinemizdeki bir ethernet kartını dinlemeye alıcaz (open edicez), sonrasında bir filtre belirteceğiz. Sonrasında yakalanan paketleri ekrana bastıracağız.

(Bu bir go dersi değil bu yüzden sadece ne yaptığımızdan bahsedeceğiz.)

Öncelikle import işlemlerimizi yapalım.



Ben vim üzerine tomnomnom'dan görüp keşfettiğim bir plugin kullanıyorum. Gayet güzel kullanışlı. Şuan import ettiğim kütüphanelerin kızarma sebebi import ettiğimiz fakat kullanmadığımız içindir. Plugin linki: https://github.com/fatih/vim-go

Devam edelim.

Bir device bilgisi istiyor bizden dinlemeye alabilmesi için ben linux kullanıyorum ifconfig yapıp ethernet kartımın adını yazdım bu yüzden.

pcap'ın OpenLive fonksiyonu için device yanında bir Snapshot Lenght ve bool değer son olarak da zaman aşımının ne zaman olacağına dair bir veriye ihtiyacı var bunları tek tek kullanmak üzere tanımlıyorum. Şimdiye kadar görüntümüz şu şekilde:



Şimdi işlemi yapmaya başlayabiliriz. Ne demiştik? Önce device'ı open etmeliyiz.



İlk satırda open ettik if bloğunda hata ile karşılaşırsa hatanın ne olduğunu dönmesini istedik. defer ile de program kapanırken device'ı close etmesini istedik.

Filtre belirleme konusuna gelecek olursak ben tcp ve 80 portunu almak istiyorum. Bunun için:



Yaptığımız işlemde ilk satırda filtre belirledik, varsa error döndürdük. Sonunda çıktı bastırdık.



En son packetleri for ile dönüp ekrana basıyoruz. Siz istediğiniz işlemi yapabilirsiniz. Go ile packet üzerinde oynamalar yapmak yada sahte paketler gönderebilmek mümkündür.

Not: Bir packet L3 katmanını geçtiğinde yani router'ı geçip internete çıktığı zamanda packet olur. Bu aşamaya gelmeden önceki adı frame'dir.

Sonuncu resimdeki görüntü scriptin tamamlanmış haldeki görüntüsü olup command modda go-vim eklentisi sayesinde build edip error var mı diye kontrol etme şansım oluyor.

(Alt kısımdaki SUCCESS yazısı ile belirtiyor.)


Scriptimizde bir hata olmadığına göre çalıştıralım.

Dosyanın olduğu dizine geliyorum ve "go build main.go" yazarak build ediyorum. Şimdi sudo ile çalıştıracağız.



golang pcap dökümanına ulaşmak isterseniz: https://godoc.org/github.com/google/gopacket/pcap
source kodlara ulaşmak isterseniz eğer: https://github.com/google/gopacket/blob/master/pcap/pcap.go

Okuduğunuz için teşekkür eder iyi forumlar dilerim.

 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.