Wireshark Nedir sorusunun cevabını ve kullanımına ilişkin genel bilgileri daha önceli makalemizde vermiştik. Bu makale ile detaylı bir uygulama yapacağız.
SIP şu an Dünya’daki en güçlü ve kolay geliştirilebilen VoIP protokolüdür. Artık güncel pek çok IP iletişim sistemi SIP altyapısı kullanılarak geliştirilmektedir. Benim de ürün yönetimi tarafında çalıştığım Karel iletişim sistemleri ve diğer güncel IP iletişim sistemleri, esneklik ve uyum yeteneklerini bu protokol sayesinde geliştirebilmektedirler. Makalenin bu bölümünde size Wireshark ile nasıl SIP VoIP trafiğinin analizinin yapılabildiğini anlatacağım.
Burada anlattığım analizler sayesinde; sistemlerde yaşanan sorunların nedenlerinin saptanması ve çözülmesi, farklı sistemlerin mükemmel uyumla çalıştırılması, yeni yazılımların/özelliklerin geliştirilmesi ve bazen de gerekli sebeplerle görüşmelerin izlenmesi/dinlenmesi sağlanabilir. Burada ben sadece SIP trafiği ile ilgili bilgi paylaşıyorum fakat aslında çok benzer yöntemlerle farklı protokollerin de aynı uygulama ile izlenmesi/dinlenmesi mümkün ve gayet kolaydır.
Adım 1: İzlemek istediğimiz veriye ulaşmak için altyapıyı sağlama
Tümleşik İletişim Sistemi ve tüm IP iletişim sistemleri, network üzerinde çalıştıkları için network trafiğini izlemek için ya izleyeceğimiz sisteme erişimimiz olması gerekmektedir ya da ilgili sistemin bağlı olduğu switch’te dinleme yapabilmeniz gerekmektedir.
Bu dinleme işlemi için; akıllı switch üzerinde görüşmenin geçtiği bir portu bilgisayarınızın bağlı olduğu porta mirror etmeniz gerekmektedir. Ardından yukarıda Wireshark kullanımında gösterdiğim gibi Wireshark’ı başlatabilir ve dinlemeyi gerçekleştirebilirsiniz. Burada dikkat etmeniz gereken son önemli bir husus daha vardır. Eğer bu şekilde switch trafiğini mirror etmenize rağmen network trafiğini (“sniff edemiyorsanız” da sıklıkça kullanılır) dinleyemiyorsanız, Wireshark’ın Capture Options bölümünde Capture all in promiscous mode seçeneğinin seçili olup olmadığını kontrol edin. Bu parametre başka Ethernet kartlarının trafiğini görebilmek için mutlaka seçili olmalıdır.
Adım 2: Wireshark’ta bir telefon görüşmesi yakalama
Network tarafını ayarladıktan sonra artık Wireshark başlatılabilir. Bundan sonra görüşme yapıldığında eğer konfigürasyonda bir sorun yoksa çağrının loglarda görülebilmesi gerekmektedir. Ben işlemleri kolaylaştırmak için kendi bilgisayarım üzerinde yazılım tabanlı bir telefon uygulaması (Karel YT500) başlatıyorum ve uygulama SIP iletişim sistemine otomatik kaydoluyor. Yazılım tabanlı telefon uygulaması YT500 ile telefon görüşmesi, anlık mesajlaşma, video görüşme, video konferans, sesli konferans gibi işlemleri gerçekleştirmek mümkündür. Yapacağınız bir telefon görüşmesinin aslında teknik olarak herhangi bir IP telefon ile yapacağınız görüşmeden bir farkı olmadığı için bu uygulamayı kullanıyorum.
Aslında Wireshark, bu uygulamanın/IP telefonun kayıt aşamasındaki sorunlarını algılamak için de kullanılabilirdi, ama makalenin çok dışına çıkmamak için bu yazıda sadece bir çağrının(görüşmenin) incelenmesini göstereceğim.
Yazılım tabanlı telefon uygulamasının arayüzü yukarıdaki gibi. Diğer taraftan Wireshark’ı Ethernet trafiğini izlemek için başlatıyorum.
Telefon uygulamasından arayacağım numarayı tuşluyor ve çağrıyı başlatıyorum:
Çağrı sırasında akan bu mavi paketler RTP protokolü wireshark tarafından algılandığı ve mavi ile otomatik renklendirildiği için görülmektedir. RTP ses paketlerinin taşındığı protokoldür. Info bölümünde gördüğümüz G.711 PCMU ise ses paketlerinin taşındığı kodek bilgisini içerir. G.711 kodeği ses paketlerine herhangi bir sıkıştırma işlemi gerçekleştirmez. Bu nedenle hem CPU/DSP kullanımı çok düşüktür hem de dinlenmesi çok kolaydır (bu sebepten dolayı görüşmeyi bu kodekle gerçekleştirdim).
İletişim sırasında herhangi bir şifreleme de kullanmadığım için görüşmeleri kolaylıkla analiz edebileceğiz.
Görüşme tamamlanınca Wireshark’ı analize başlamak için durduruyoruz:
Görüşmenin sona erdiğini mavi paketlerin artık akmamasından da görebilirsiniz. Artık telefon görüşmesini yakalamış olduk.
Adım 3: SIP IP Telefon Görüşmesinin Analizi
Şimdi elimizde görüşme olduğuna göre analiz kısmına geçebiliriz. Öncelikle SIP trafiğini yakalayıp yakalamadığımızı görmek için Filter kısmına sip yazıyor ve Enter tuşuna basıyorum:
Yukarıda çeşitli SIP mesajlarının yakalandığını görebiliyoruz. Wireshark UDP SIP mesajlarını da Mavi renkle göstermektedir.
En üstteki INVITE sip:100ucap.karel.com.tr satırından 100 numarasına 192.168.76.133 IP adresinden bir çağrı başlatıldığını görebiliyoruz. Alt penceredeki Session Initiation Protocol bölümünü sağ tıklayıp Expand All yaparsak, bu mesajla ilgili her türlü ayrıntılı bilgiyi wireshark üzerinden görebiliriz. Genelde sorun çözümü için bu bölümlerin ayrıntılı incelenmesi gerekiyor.
Bu noktada öncelikle SIP ile ilgili bazı temel bilgileri sizinle paylaşmak istiyorum. Çağrı sorunlarını algılayabilmek için öncelikle SIP ile yapılmış sorunsuz bir çağrının nasıl işlediğini görmemiz gerekiyor.
Çağrının analizini yapmak için Wireshark üzerinde az önce yaptığımız SIP filtresini kaldıralım ve tekrar Enter tuşuna basalım. Ardından Telephony Sekmesinden VoIP Calls seçeneğine tıklayalım.
Bu menüde Wireshark bize yeteneklerini gösteriyor ve bize yakalanan paketlerdeki telefon görüşmelerini otomatik olarak algılayıp gözler önüne seriyor:
Bize kalan sadece hangi çağrıyı izleyeceğimizi seçmek ve gerçekleştirmek/yapmak istediğimiz seçeneğe tıklamak.
Yukarıda sadece bir çağrı bulundu, yakalanan paketlerde daha fazla çağrı olsaydı, tümünü alt alta görecektik. Çağrıda From kısmından kimin (Onur Erisgen’in 6143 numarasından) çağrıyı başlattığını görebiliyorum, To kısmından da aranan numarayı (yani 100’ün arandığını) görebiliyorum. Ben çağrıyı seçtikten sonra önce Flow seçeneğine tıklayarak çağrının işleyişini göstermek istiyorum:
Flow seçeneği bize çağrının akışını çok temiz bir şekilde gösteriyor. Çağrıyı bu şekilde temiz görebilmemiz için
INVITE: Mesajı çağrı başlatmak için kullanılan mesaj tipidir (Başka amaçlarla da kullanılır, bu konu dışı). Sağ taraftaki bölümden hangi numaradan hangi numaraya çağrı başlatılmak istendiği görülüyor. SDP çağrıyı gönderenin hangi ses kodeklerini desteklediğini, hangi IP adresinden/porttan ses (yani RTP) paketlerini göndereceğini belirttiği bölümdür.
100 Trying: Karşı tarafın Invite mesajını aldığını ve işlemi başlattığını belirten mesajdır.
407 Proxy Authentication Required: Karşı tarafın authentication yapılmadan çağrı kurulmasına izin vermediğini gösterir. Çağrıyı başlatanın bu mesajla gelen key ile SIP şifresini MD5’laması ve onu içeren bir Invite mesajı ile tekrar çağrı başlatması gerekir.
ACK: Çağrıyı başlatan bu isteği ACK mesajı ile onaylar.
INVITE: SIP şifresi içeren yeni bir çağrı aynı bilgilerle tekrar başlatılır.
100 Trying: Karşı taraf bu mesajı ile ilgili işlem başlattığını 100 Trying mesajı ile belirtir.
200 OK: Karşı tarafın çağrıyı cevapladığı bilgisi çağrıyı başlatılana belirtilir. Bu mesajın da içeriğinde SDP bölümü vardır. SDP çağrının hangi kodekle gerçekleştirildiğini (ilk gelen SDP’ye göre bu belirlenir ve ortak kodek seçilir) ve hangi IP adresinden/porttan görüşmenin gerçekleştirileceğini belirtir.
Not: Bizim aradığımız yer bir anons numarasıydı, karşı tarafta bir IP telefon olsaydı, 200 OK mesajından önce 180
Ringing mesajı gelirdi. Böylece arayan kişi çalıyor tonu duyardı.
RTP (g711U): g711u kodekli ses paketleri uzak taraftan (192.168.124.124’ten) çağrıyı başlatan tarafa gönderilmeye başlanır.
ACK: Karşı tarafın ACK mesajını göndermesi çağrıyı almaya hazır olduğunu gösteriyor. Bazı sistemler bu ACK mesajı gelmeden çağrıyı başlatmazlar. Bazıları ise ACK mesajı gelmezse bir süre sonra sorun olduğunu algılayıp çağrıyı sonlandırırlar.
RTP (g711U): 192.168.76.133 IP adresinden de ses paketleri g711U kodeği ile gönderilmeye başlanmış. Bazen hatalı kodek görülebiliyor veya ses paketlerinin farklı bir IP adresine gönderildiği görülebiliyor. Bu tarz sorunlar bu logla kolayca anlaşılıp sorunun çözümü bulunabiliyor.
BYE: 192.168.76.133 IP adresi görüşmeyi sonlandırıyor. Bazen çağrılar kendi kendine kesilebilir. Bu gibi durumlarda görüşmeyi hangi tarafın sonlandırdığını buradaki logda olduğu gibi bir log alarak kolayca çözebiliyoruz.
200 OK: Karşı taraf çağrının sonlandırılma işlemini algıladığını ve işlemi gerçekleştirdiğini belirtiyor.
Adım 4: Görüşmenin Dinlenmesi
SIP çağrının analizi ile genelde sorunlar çözülür. Fakat bazen ses kalitesi ile ilgili sorunlar da karşımıza çıkabiliyor. Bu gibi durumlarda görüşmeyi dinlemek için de Wireshark kullanılabilir.
Şimdi bu işlem için Flow penceresini kapatıyorum ve VoIP Calls penceresinden Player butonuna tıklıyorum.
Ardından çıkan pencerede Decode butonuna tıklıyorum ve aşağıdaki gibi Wireshark ses paketlerini çözüyor:
Burada her iki yönü de seçip Play butonuna tıkladığımızda görüşmeyi bilgisayarımız üzerinden dinleyebiliriz ve giden gelen seste bir problem olup olmadığını inceleyebiliriz.
Adım 5: Görüşmelerin dinlenmesini, çağrıların izlenmesini engelleme:
Bu makalede açıkladığım uygulamalar; çoğu zaman iyi niyetle sorunların tespit edilmesi, giderilmesi amacıyla gerçekleştirilirler.
Kurumunuzdaki iletişim sisteminde, bir sebeple, teknik olarak bu uygulamaların gerçekleştirilmesini engellemek istiyorsanız iletişim sisteminizin ve ilgili bileşenlerinin bunu destekleyebilmesi gerekmektedir.
Daha önceki makalemde kurulumunu anlattığım Karel UCAP tümleşik iletişim sistemi ve bileşenleri; SIP mesajlarının, yani çağrı bilgilerinin izlenmesini engelleyebilmek için SIP over TLS protokolünü desteklemektedir. Böylece sunucu tarafındaki ilgili sertifikaya sahip olmayan kişilerin SIP mesajlaşmalarını çözebilmesi mümkün olmamaktadır.
Ayrıca ses paketlerinin network üzerinde dinlenmesini engellemek için de SRTP desteği bulunmaktadır. SRTP sayesinde network trafiğinde taşınan ses paketleri şifrelenecek ve araya giren kişinin paketleri dinlemesi mümkün olmayacaktır.
Yine UCAP sisteminin bir başka özelliği de şudur; pek çok iletişim sisteminden farklı olarak bu sistemde iki IP telefon arasındaki veya bir dış hatla bir IP telefon arasındaki görüşmedeki ses paketleri sunucu üzerinden geçmemektedir. Böylece bir şekilde sunucuya sızan bir kişi bile ses paketlerini dinleyemeyecektir.
Son olarak bir not daha eklemek istiyorum:
SRTP kullanılmamış olsa bile sıkıştırılmış veya HD görüşmeleri yukarıda anlatılan şekilde direk dinleyemeyebilirsiniz. Bu tarz görüşmeleri dinlemek aslında yine de mümkündür. Tek gerekli olan şey; ilgili kodeğin wireshark veya başka bir uygulama üzerinden oynatılabilecek şekilde bilgisayara kurulmuş olmasıdır.
Onur ERİŞGEN
KAREL Tümleşik İletişim Çözümleri Ürün Yönetimi
<< Makaleler