Site icon BGA Cyber Security – Siber Güvenlik Çözümleri

Ağ Trafiğinde Pasif İşletim Sistemi ve Uygulama Tespiti

İnternet teknolojisinin yaygınlaşmasının sonucunda teknoloji sürekli kendini yenilemekte ve yeni sistemler ortaya çıkmaktadır. Bu teknolojilerden en sık karşılaşılanları kuşkusuz web sunucular,güvenlik duvarları, web uygulama güvenlik duvarları, IPS cihazları ve Load balancer(yük dengeleyici) gibi cihazlardır. 
Birçok kurumda uygulama sunucularına direk erişim olmaz ve arada sizi başka bir cihaz karşılar. Sızma testlerinde bilgi toplama aşamasında veya  ele geçirilmiş bir linux ya da windows sistemin adli bilişim çalışmalarında bağlantı esnasındaki aktörlerin kimler olduğu önemlidir.
Aşağıda örnek olarak bahsedilen,
gibi senaryolarda analizi kolaylaştıracak ve basite indirgeyecek bir takım yöntemler kullanılmalıdır. Açık kaynak kodlu bir çok yazılımla bunları yapmak oldukça kolaydır. Bu makalede ise p0f adında bir araç ile  bu işlemlerin  nasıl gerçekleştirileceği basitçe anlatılacaktır.



p0f Nedir ?



p0f, TCP/IP bağlantı mekanizmasındaki bağlantı aktörlerini bağlantıya herhangi bir müdahalede bulunmadan, tamamen pasif fingerprint yöntemleri ile tespit etmeye çalışan bir araçtır. Uygulamanın bazı özellikleri aşağıdaki gibidir.



Nasıl Çalışır ?



P0f, IPv4 ve IPv6 başlıklardaki verileri, TCP başlıklarını, 3 yollu el  sıkışma esnasındaki bağlantıyı inceler. Bunun yanısıra  uygulama düzeyinde kendine ait bir takım payloadlar kullanarak trafiği analiz eder.   



Özellikleri ve Kullanımı



p0f aracının güncel versiyonunu adresinden indirebilirsiniz.
Uygulama indirildikten sonra ilk olarak tar dosyası açılır.
root@osmncht:~/Desktop# tar -zxvf p0f-3.08b.tgz
p0f-3.08b/
p0f-3.08b/languages.h
p0f-3.08b/alloc-inl.h
p0f-3.08b/tools/
p0f-3.08b/tools/p0f-sendsyn6.c
….



Sonrasında sıkıştırılmış dosyalar açıldığı zaman build.sh çalıştırılabilir dosyasının olduğu görülecektir. Uygulamayı kurmak için yapılması  gereken tek şey bu dosyayı çalıştırmaktır.
root@osmncht:~/Desktop/p0f-3.08b# ./build.sh
Welcome to the build script for p0f 3.08b!
Copyright (C) 2012 by Michal Zalewski <lcamtuf@coredump.cx>

[+] Configuring production build.
[*] Checking for a sane build environment… OK
[*] Checking for working GCC… OK
[*] Checking for *modern* GCC… OK
[*] Checking if memory alignment is required… nope
[*] Checking for working libpcap… OK
[*] Checking for working BPF… OK
[+] Okay, you seem to be good to go. Fingers crossed!
[*] Compiling p0f… OK

Well, that’s it. Be sure to review README. If you run into any problems, you
can reach the author at <lcamtuf@coredump.cx>.



Artık uygulama kullanıma hazırdır. Uygulamanın özelliklerine help menüsünden bakılabilir.
Sık kullanılacak olan bazı parametrelerin neleri ifade ettiği aşağıda belirtilmiştir.



Herhangi bir filtre kullanılmadan en temel kullanım şekliyle eth0 arayüzü dinlenildiği zaman uygulamanın çalışma mantığı kolayca anlaşılacaktır. Örnek bir çıktısı aşağıdaki gibidir. Burada uygulamayı test etmek için bir web uygulamasına browser üzerinden erişim denenmiştir. Aşağıdaki tabloda hedef siteye bağlantı kurabilmek için ilk olarak test makinesi ile hedef site arasında 3 yollu el sıkışmanın gerçekleştiği görülmektedir. Bunun yanısıra istemci makinenin hangi işletim sistemini kullandığı da çıktılar arasındadır.
root@osmncht:~/Desktop/p0f-3.08b# ./p0f -i eth0
— p0f 3.08b by Michal Zalewski <lcamtuf@coredump.cx> —

[+] Closed 1 file descriptor.
[+] Loaded 320 signatures from ‘p0f.fp’.
[+] Intercepting traffic on interface ‘eth0’.
[+] Default packet filtering configured [+VLAN].
[+] Entered main event loop.

.-[ 192.168.0.24/41902 -> 192.99.12.218/80 (syn) ]-
|
| client   = 192.168.0.24/41902
| os       = Linux 3.x
| dist     = 0
| params   = generic
| raw_sig  = 4:64+0:0:1460:mss*10,10:mss,sok,ts,nop,ws:df,id+:0
|
`—-

.-[ 192.168.0.24/41902 -> 192.99.12.218/80 (mtu) ]-
|
| client   = 192.168.0.24/41902
| link     = Ethernet or modem
| raw_mtu  = 1500
|
`—-

.-[ 192.168.0.24/41902 -> 192.99.12.218/80 (syn+ack) ]-
|
| server   = 192.99.12.218/80
| os       = Linux 3.x
| dist     = 16
| params   = none
| raw_sig  = 4:48+16:0:1460:mss*10,9:mss,sok,ts,nop,ws:df:0
|
`—-



Aynı uygulamanın devamına bakıldığı zaman, hedef siteye yapılan bir http isteğinin p0f formatında çıktısı aşağıdaki gibidir. Burada istemci makinenin ip adresi, bağlantı kurulan browser bilgileri ve http başlık bilgileri gösterilmiştir.
.-[ 192.168.0.24/41902 -> 192.99.12.218/80 (http request) ]-
|
| client   = 192.168.0.24/41902
| app      = Firefox 10.x or newer
| lang     = English
| params   = none
| raw_sig  = 1:Host,User-Agent,Accept=[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8],Accept-Language=[en-US,en;q=0.5],Accept-Encoding=[gzip, deflate],?Cookie,Connection=[keep-alive]:Accept-Charset,Keep-Alive:Mozilla/5.0 (X11; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0 Iceweasel/22.0
|
`—-



Kurulan bir tcp bağlantısında sadece istemci makineye ait bilgiler değil, hedef uygulamaya ait birtakım bilgileri de p0f aracı ile tespit etmek mümkündür. Örnek olarak bga.com.tr adresine yapılan bir bağlantı p0f aracı ile incelenirse hedef uygulamaya ait sunucu bilgileri aşağıdaki gibi görülebilir.
.-[ 192.168.0.27/45954 -> 50.22.202.163/80 (http response) ]-
|
| server   = 50.22.202.163/80
| app      = Apache 2.x
| lang     = none
| params   = none
| raw_sig  = 1:Date,Server,?Location,?Content-Length,Keep-Alive=[timeout=5, max=100],Connection=[Keep-Alive],Content-Type:Accept-Ranges:Apache



Uygulamayı online olarak test etmek isterseniz adresini ziyaret edebilirsiniz. Bağlantıya tıkladığınız zaman size bağlantı kurmaya çalıştığınız makine ile ilgili birtakım bilgileri gösterecektir.
Uygulamanın API erişimi, NAT tespiti gibi  diğer yeteneklerini de görmek için kendi sayfasını (http://lcamtuf.coredump.cx/p0f3/README ) ziyaret edebilisiniz.
Osman Cihat IŞIK  < cihat.isik@bga.com.tr >
Exit mobile version