Network packet capturing for Windows operating system
Network packet capturing for Windows operating system
dc.contributor.advisor | Özdemir, Enver | tr_TR |
dc.contributor.author | Aydın, Yücel | tr_TR |
dc.contributor.authorID | 707141011 | tr_TR |
dc.contributor.department | Bilgi Güvenliği Mühendisliği ve Kriptografi | tr_TR |
dc.contributor.department | Cybersecurity Engineering and Cryptography | en_US |
dc.date | 2017 | tr_TR |
dc.date.accessioned | WinPcap | tr_TR |
dc.date.accessioned | Network packet capture systems | tr_TR |
dc.date.accessioned | Windows operating system | tr_TR |
dc.date.accessioned | 2018-05-21T08:45:10Z | |
dc.date.available | 2018-05-21T08:45:10Z | |
dc.date.issued | 2017 | tr_TR |
dc.description | Tez (Yüksek Lisans) -- İstanbul Teknik Üniversitesi, Bilişim Enstitüsü, 2017 | tr_TR |
dc.description | Thesis (M.Sc.) -- İstanbul Technical University, Institute of Informatics, 2017 | en_US |
dc.description.abstract | Günümüzde uygulama seviyesinde yapılmış birçok ağ güvenlik sistemi bulunmaktadır. Bunlar saldırganı tespit etmek, saldırı trafiğinin yoğunluğunu tespit etmek gibi birçok amaç için tasarlanmıştır. Yapılan her uygulamada ilk aşama bilgisayara veya ağa gelen trafiğin tespit edilmesidir. Bunun hayata geçirilmesi için ise trafiği oluşturan paketlerin elde edilmesi şarttır. Elde edilen paketlerin içeriği yorumlanarak gerekli önleme yöntemleri ortaya koyulmaktadır. Bu çalışma Windows işletim sistemlerindeki ağ trafiğini elde edebilecek bilgileri içermektedir. Çalışmanın ikinci bölümünde Windows sistemlerindeki ağ trafiğini anlayabilmek için sistemi oluşturan işletim sisteminin içerisindeki yapılar incelenmiştir. Üçüncü bölümde ise bugüne kadar farklı işletim sistemlerinde ağ trafiğinin elde edilmesi için yapılmış uygulamaların detayları verilmiş ve Windows sistemlerinde uygulanan ve birçok kullanıcı tarafından tercih edilen ağ analiz programları tarafından kullanılan WinPcap alt yapısı incelenmiştir. Dördüncü kısımda Ağ paketlerinin yakalanması simule edilerek hazırlanan analiz ve değerlendirmelere yer verilmiştir. Sonuç kısmında ise Windows sistemlerinde kullanılacak C++ programlama dili ile yazılmış uygulamanın detayları ve ileride kullanım şekilleri açıklanmıştır. Bir ağ içerisinde bilgisayarların birbirleriyle irtibat kurup iletişim sağlaması ağ paketleri sayesinde olmaktadır. Ağ paketi, kullanıcı veya işletim sistemi tarafından oluşturulmuş ham bilginin yada verinin iletişimin sağlanması için gerekli ek bilgilerin eklenmesiyle oluşmaktadır. Bilgisayara dış dünyadan gelen her türlü girdi bir donanım sayesinde bilgisayara giriş yapmaktadır. Paketler de aynı şekilde bir bilgisayara ağ kabloları vasıtasıyla gelmekte ve ağ kartından işletim sistemine giriş yapmaktadır. Ağ kartının kilobyte seviyesinde hafızası bulunması nedeniyle paketler ağ kartı tarafından ön tespit yapıldıktan sonra işletim sistemi hafızasına kaydedilmektedir. Ön tespit olarak ağ kartı sadece paketin içerisinde bulunan ethernet bilgilerini alıp gerekli hash algoritmasıyla işleyip elde ettiği bilgi ile ethernet bilgilerinin son hanesi olan frame kontrol bilgisiyle karşılaştırma yapmaktadır. Uygun olmayan paketleri ağ kartı işletim sistemine iletmeden elemektedir. Windows işletim sistemi diğer işletim sistemlerinin aksine kullanıcının yapabileceği işlemleri kısıtlamaktadır. Diğer işletim sistemlerinde kullanıcılar işletim sistemini oluşturan çekirdek ile doğrudan etkileşim sağlamaktadır. Bu özellik doğal olarak diğer işletim sistemlerinde ağ paketleri ağ kartından çekirdeğe geçtiğinde kullanıcılar tarafından direkt olarak elde edilip gerekli analizler yapılabilmektedir. Windows işletim sisteminde ise işlem bu kadar basit değildir. Windows işletim sistemi kullanıcı bölgesi ve çekirdek bölgesi olack şekilde iki ana yapıya ayrılmıştır. Normal kullanıcılar sadece kullanıcı bölgesinde yetki verilen işlemleri yapmaktayken çekirdek ile direk etkileşimleri bulunmamaktadır. Eğer kullanıcıların veya kullanıcı bölgesinde işleyen bir uygulamanın çekirdek ile etkileşim sağlaması gerekli ise çekirdek içerisinde bu etkileşimi sağlayacak bir sürücünün bulunması gereklidir. Sürücü çekirdek içerisinde gerekli işlemleri gerçekleştirirken kullanıcı bu sürücü ile yine bu etkileşim için programlanmış dinamik bağlantı kütüphaneleri (dbk) yardımıyla gerekli irtibatı sağlamaktadır. Her ağ kartı işletim sistemi içerisinde kendisine has olacak şekilde bir ağ sürücüsü ile birlikte bulunur. Bu sürücü vasıtasıyla ağ kartı işletim sistemine gerekli işlemleri yaptırır. Ağ kartı gelen paketleri sistem hafızasına kopyaladıktan sonra ağ sürücüsünü uyararak yeni bir paketin geldiğini haber verir. Ağ sürücüsü ise üst seviye sürücülerinden ağ paketlerini kullanacak tüm sürücülere paketin bulunduğu bilgisini verir ve üst sürücüler gerekli işlemleri yaparlar. Ağ paketlerinin yakalanıp analiz yapılması gerekliliğinde ise uygulama geliştiriciler işletim sistemi çekirdeğine bir adet paket yakalama sürücüsü yerleştirir ve ayrıca kullanıcı seviyesindeki uygulamaların bu sürücü ile irtibatını sağlamak için yeni kütüphaneler geliştirirler. Ağ paket yakalama sistemlerinin hızı ve doğruluğu aynı zamanda analiz yapacak uygulamaları doğrudan etkilerler. Çünkü; elde edilemeden geçen herhangi bir ağ paketi içerisinde sisteme zarar verecek içerik bulundurabilir ve bu paketten de analiz sisteminin haberi olmayabilir. Ağ paket yakalama sistemlerinin performansı sistem içerisinde kullanılan tamponlama ve filtremele sistemleriyle doğrudan ilgilidir. İyi bir tampon yada filtre kullanılmaz ise bir çok ağ paketi yakalanmadan doğrudan işletim sistemine iletilmiş olmaktadır. İlk zamanlarda tampon olarak iki adet sabit boyutlu tampon çekirdek içerisine yerleştirilmiştir. Ağ kartından gelen paketler önce bir tamponda depolanmıştır ve bu tampon dolduğu zaman tüm veriler diğer tampona aktarılmıştır. Kullancı seviyesindeki uygulamalar ise doğrudan bu tampon içerisindeki bilgilere ulaşmıştır. Ancak bu sistem günümüz ortamında pek uygulanabilir olmamıştır. Günümüzde kullanılan ağ trafiği çok hızlı ve yoğun bir şekilde işlemektedir. Bir saniye içerisinde milyonlarca paket sistem içersine gelmek de veya sistemden uzaklaşmaktadır. Eğer kullanıcı seviyesindeki uygulama gelen paket hızı kadar bir hızla paketleri tampon içerisinden alamazsa ilk tampon içerisine gelen yeni paketler yakalanamamaktadır. Bu dezavantajı gidermek için sirküler tampon sistemi geliştirilmiştir. Bu sistem de sadece bir adet tampon kullanılmış ve bu tamponun boyutu dinamik olarak değiştirilmiştir. Ağ kartından gelen paketler olduğu sürece tampon boyutu artarken kullanıcı seviyesindeki uygulamalar paketleri aldıkça boyut azalmıştır. Ağ paket yakalama sistemlerindeki diğer bir kritik unsur ise filtreleme sistemidir. Çoğu kullanıcı veya uygulama ağ paketlerini analiz ederken tüm paketleri yakalamak istemez. Sadece gerekli olan paketlerin yakalanması sistem için yeterlidir. Bu ayırt etme işlemi ise filtreleme sistemiyle mümkün olmaktadır. Yakalanacak paket sayısının azaltılması vasıtasıyla ayrıca tampon içerisinde yerleştirilecek paket sayısı azaltılmak da ve tamponlama sistemi de rahatlatılmaktadır. Filtreme sistemi kullanıcı uygulamasının hangi paketlerin yakalanması gerektiğini tanımlamasıyla başlar. Bu tanımlama gerekli kütüphaneler vasıtasıyla çekirdek içerisindeki sürücüye iletilir. Sürücü ise ağ paketleri daha ağ kartı içerisindeyken bu filtreleme işlemini yapar ve sadece kullanıcı uygulamasının istediği paketler tampon içersine kopyalanır. Açık kaynak işletim sistemlerinde geliştirilen birçok ağ paket yakalama sistemi bulunmaktadır. Ancak günümüzde birçok kullanıcı ve şirketin kullandığı normal ve server bilgisayarlarının çoğu Windows işletim sistemini içermektedir. Bu sebepten dolayı Windows işletim sistemi için de bir ağ paket yakalama sistemi gerekliliği doğmuştur. Yapılan çalışmalar sonucunda günümüzde de bir çok uygulamanın tercih ettiği WinPcap ağ paket yakalama kütüphanesi geliştirilmiştir. Wireshark, TCPDump vb. Birçok popüler uygulama da kendi sistemlerinde bu kütüphaneyi kullanmaktadır. WinPcap kütüphanesi Fulvio Rises ve Loris Degionani isimli iki italyan bilim insanı tarafından geliştirilmiştir ve daha sonraki yıllarda optimize çalışması yapılmıştır. WinPcap kütüphanesi üç ayrı ancak birbiriyle irtibatlı parçalardan oluşmaktadır. Bu parçalar Çekirdek Sürücüsü, Packet.dll ve Wpcap.dll parçalarıdır. Çekirdek sürücüsü kullanıcı tarafından tanımlanmış filtreye uygun olarak filtreleme yapıp kullanıcının istediği paketleri sirküler tampon içerisine kopyalamaktadır. Aynı zamanda işlem kolaylığı ve hız sağlamak maksadıyla sürücü içersinde bir istatiksel makine tutmaktadır. Bu makine gelen ve giden paketlerle ilgili istatiksel bilgileri kullanıcının istemesi durumunda derhal sağlamak maksadıyla hazır etmektedir. Diğer bir sürücü görevi ise gelen giden tüm paketlerinin içeriği ile ilgili tüm bilgileri kullanıcı seviyesine çıkmadan direkt olarak hardisk içerisine kaydetmektedir. Packet.dll unsuru ise Windows işletim sistemi içerisindeki kullanıcı bölgesi ile çekirdek bölgesi arasında irtibatı sağlamaktadır. Çekirdek içerisindeki sürücüye gerekli direktifleri göndererek kullanıcı uygulamasının istediği işlemleri gerçekleştirmektedir. Wpcap.dll unsuru üst seviye işlemler için geliştirilmiş bir kütüphanedir. Çekirdek tarafından kullanılacak filtrenin oluşturulması, kullanıcı uygulamaları ile irtibatların sağlanması vb. işlemler bu kütüphane tarafından sağlanmaktadır. Windows işletim sisteminin incelenmesinin yanında çalışmanın üçüncü bölümünde diğer işletim sistemlerindeki ağ paket yakalama sistemleriyle ilgili çalışmalar incelenmiştir. Günümüzde Windows işletim sisteminin yaygın olarak kullanılmasının yanında bireysel kullanım bazında mobil sistemlerin gelişmesiyle Android işletim sistemlerinin kullanılması da artmıştır. Anroid işletim sistemlerinde ağ paketinin yakalanması ile ilgili çalışmalar yağılmıştır. Bu çalışmalar Android işletim sisteminin linux tabanlı bir işletim sistemi olması sebebiyle açık kaynak işletim sistemleriyle ilgili geliştirilmiş sistemler kullanılmıştır. Linux işletim sisteminde ağ paketi yakalamak konusunda popüler olan libpcap kütüphanesinin Android işletim sistemine uyarlanması çalışmaları yapılmıştır. LibPcap kütüphanesinin C programlama dili ile yazılmış olması ve Android işletim sisteminde Java programlama dili kullanımı geliştiriciler için problemler çıkartmıştır. Bu problemin aşılması ise Android işletim sistemlerinde kullanılan programlama dilleri arasında dönüşüme imkan sağlayan Java Native Interface kullanılmıştır. Yapılan çalışma ile aynı zamanda gerekli test çalışmalarının yapılabilmesi için C++ programlama dili kullanılarak WinPcap kütüphanesi tabanlı bir uygulama geliştirilmiştir. Geliştirilen uygulama ile açık kaynak işletim sistemlerindeki ağ paket yakalama sistemleri karşılaştırılmış ve gerekli sonuçlar ilgili bölümlerde verilmiştir. Genel olarak bakıldığında Windows işletim sistemi için geliştirilen WinPcap kütüphanesi son optimize çalışmalarıyla birlikte açık kaynak sistemlerine göre üstünlük göstermekte ancak açık kaynak sistemlerinde sistem geliştirilmesi için birçok araştırma yapıldığı ve yapılacağı görülmektedir. Geliştirilen uygulama Windows işletim sisteminde simule edilmiş ve 10 Ghz kadar ağ trafiği altında çalışabilirliği ve kullandığı kaynak miktarı gözlenmiştir. | tr_TR |
dc.description.abstract | Today there are several network security systems used by the end users at the application layer. Network security systems are designed to detect the attacks or to measure the intensity of the network traffic. The first step for the network systems is to detect the malicious traffic coming to the network or going from the network. Detecting is possible with analyzing the packets whether they are malicious or normal network packets with the user level applications. Diagnosis tools can be created by inspecting of each packet in the network. In this study, I present the detailed methods to capture the network traffic in Windows Operating Systems. The second chapter is devoted to explain the parts of the Windows OS' kernel in charge of network. Network packet capturing process for different kind of operating systems and Winpcap used by the most popular network analysis tools are discussed in the third part of the study. The evaluations and analysis with a simulation of packet capturing are presented in the fourth chapter. A detail explanation of the network packet capturing application written in C++ programming language and future works are presented in the conclusion part. It is through network packets that computers can communicate with each other within a network. Any input from the outside world to the computer is input to the computer through a hardware device. The packages come in the same way via a computer network cable and enter the operating system from the network card. The Windows operating system restricts the operations that the user can do, unlike open source operating systems. In open source operating systems, users can interact directly with the kernel that makes up the operating system. When network packages need to be captured and analyzed, application developers place one packet capture driver in the operating system kernel and also develop new libraries to allow user-level applications to contact this driver. The speed and accuracy of network packet capture systems directly impact the applications that will analyze the network packets. Because; There may be content that will damage the system in any unreachable network package and the analysis system may not be aware of this package. The performance of network packet capture systems is directly related to the buffering and filtering systems used in the system. If a good buffer and filter are not used, many network packets are transmitted directly to the operating system without being caught. There are many network packet capture systems developed in open source operating systems. However, most of the normal and server computers used by many users and companies nowadays include the Windows operating system. Because of this, a network packet capture system was required for Windows operating system. As a result of the work done, WinPcap network packet capture library, which is preferred by many applications today, has been developed. | en_US |
dc.description.degree | Yüksek Lisans | tr_TR |
dc.description.degree | M.Sc. | en_US |
dc.identifier.uri | http://hdl.handle.net/11527/15715 | |
dc.publisher | Bilişim Enstitüsü | tr_TR |
dc.publisher | Institute of Informatics | en_US |
dc.rights | Kurumsal arşive yüklenen tüm eserler telif hakkı ile korunmaktadır. Bunlar, bu kaynak üzerinden herhangi bir amaçla görüntülenebilir, ancak yazılı izin alınmadan herhangi bir biçimde yeniden oluşturulması veya dağıtılması yasaklanmıştır. | tr_TR |
dc.rights | All works uploaded to the institutional repository are protected by copyright. They may be viewed from this source for any purpose, but reproduction or distribution in any format is prohibited without written permission. | en_US |
dc.subject | WinPcap kütüphanesi | en_US |
dc.subject | Ağ paket yakalama sistemleri | en_US |
dc.subject | Windows işletim sistemi | en_US |
dc.title | Network packet capturing for Windows operating system | tr_TR |
dc.title.alternative | Windows işletim sistemlerinde ağ paketi yakalama | en_US |
dc.type | Master Thesis |